@expo/cli 0.17.9 → 0.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (570) hide show
  1. package/build/bin/cli +11 -7
  2. package/build/bin/cli.map +1 -1
  3. package/build/src/api/getExpoSchema.js +23 -5
  4. package/build/src/api/getExpoSchema.js.map +1 -1
  5. package/build/src/api/graphql/client.js +28 -10
  6. package/build/src/api/graphql/client.js.map +1 -1
  7. package/build/src/api/graphql/queries/AppQuery.js +16 -4
  8. package/build/src/api/graphql/queries/AppQuery.js.map +1 -1
  9. package/build/src/api/graphql/queries/UserQuery.js +8 -2
  10. package/build/src/api/graphql/queries/UserQuery.js.map +1 -1
  11. package/build/src/api/graphql/types/App.js +8 -2
  12. package/build/src/api/graphql/types/App.js.map +1 -1
  13. package/build/src/api/rest/cache/FileSystemCache.js +21 -9
  14. package/build/src/api/rest/cache/FileSystemCache.js.map +1 -1
  15. package/build/src/api/rest/cache/response.js +9 -3
  16. package/build/src/api/rest/cache/response.js.map +1 -1
  17. package/build/src/api/rest/cache/wrapFetchWithCache.js +32 -8
  18. package/build/src/api/rest/cache/wrapFetchWithCache.js.map +1 -1
  19. package/build/src/api/rest/client.js +23 -5
  20. package/build/src/api/rest/client.js.map +1 -1
  21. package/build/src/api/rest/wrapFetchWithBaseUrl.js +9 -4
  22. package/build/src/api/rest/wrapFetchWithBaseUrl.js.map +1 -1
  23. package/build/src/api/rest/wrapFetchWithProxy.js +8 -2
  24. package/build/src/api/rest/wrapFetchWithProxy.js.map +1 -1
  25. package/build/src/api/settings.js +8 -2
  26. package/build/src/api/settings.js.map +1 -1
  27. package/build/src/api/updateDevelopmentSession.js +18 -6
  28. package/build/src/api/updateDevelopmentSession.js.map +1 -1
  29. package/build/src/api/user/UserSettings.js +26 -8
  30. package/build/src/api/user/UserSettings.js.map +1 -1
  31. package/build/src/api/user/actions.js +17 -5
  32. package/build/src/api/user/actions.js.map +1 -1
  33. package/build/src/api/user/expoSsoLauncher.js +32 -8
  34. package/build/src/api/user/expoSsoLauncher.js.map +1 -1
  35. package/build/src/api/user/otp.js +17 -5
  36. package/build/src/api/user/otp.js.map +1 -1
  37. package/build/src/api/user/user.js +19 -12
  38. package/build/src/api/user/user.js.map +1 -1
  39. package/build/src/config/configAsync.js +25 -7
  40. package/build/src/config/configAsync.js.map +1 -1
  41. package/build/src/config/index.js +9 -3
  42. package/build/src/config/index.js.map +1 -1
  43. package/build/src/customize/customizeAsync.js +8 -2
  44. package/build/src/customize/customizeAsync.js.map +1 -1
  45. package/build/src/customize/generate.js +16 -4
  46. package/build/src/customize/generate.js.map +1 -1
  47. package/build/src/customize/index.js +10 -4
  48. package/build/src/customize/index.js.map +1 -1
  49. package/build/src/customize/templates.js +33 -9
  50. package/build/src/customize/templates.js.map +1 -1
  51. package/build/src/customize/typescript.js +8 -2
  52. package/build/src/customize/typescript.js.map +1 -1
  53. package/build/src/export/createMetadataJson.js +8 -2
  54. package/build/src/export/createMetadataJson.js.map +1 -1
  55. package/build/src/export/embed/exportEmbedAsync.js +58 -18
  56. package/build/src/export/embed/exportEmbedAsync.js.map +1 -1
  57. package/build/src/export/embed/index.js +17 -5
  58. package/build/src/export/embed/index.js.map +1 -1
  59. package/build/src/export/embed/resolveOptions.js +8 -2
  60. package/build/src/export/embed/resolveOptions.js.map +1 -1
  61. package/build/src/export/embed/xcodeCompilerLogger.js +16 -4
  62. package/build/src/export/embed/xcodeCompilerLogger.js.map +1 -1
  63. package/build/src/export/exportApp.js +32 -12
  64. package/build/src/export/exportApp.js.map +1 -1
  65. package/build/src/export/exportAssets.js +27 -9
  66. package/build/src/export/exportAssets.js.map +1 -1
  67. package/build/src/export/exportAsync.js +10 -2
  68. package/build/src/export/exportAsync.js.map +1 -1
  69. package/build/src/export/exportHermes.js +29 -17
  70. package/build/src/export/exportHermes.js.map +1 -1
  71. package/build/src/export/exportStaticAsync.js +69 -37
  72. package/build/src/export/exportStaticAsync.js.map +1 -1
  73. package/build/src/export/favicon.js +33 -9
  74. package/build/src/export/favicon.js.map +1 -1
  75. package/build/src/export/fork-bundleAsync.js +61 -16
  76. package/build/src/export/fork-bundleAsync.js.map +1 -1
  77. package/build/src/export/getPublicExpoManifest.js +8 -2
  78. package/build/src/export/getPublicExpoManifest.js.map +1 -1
  79. package/build/src/export/getResolvedLocales.js +15 -3
  80. package/build/src/export/getResolvedLocales.js.map +1 -1
  81. package/build/src/export/index.js +11 -5
  82. package/build/src/export/index.js.map +1 -1
  83. package/build/src/export/metroAssetLocalPath.js +9 -3
  84. package/build/src/export/metroAssetLocalPath.js.map +1 -1
  85. package/build/src/export/persistMetroAssets.js +27 -15
  86. package/build/src/export/persistMetroAssets.js.map +1 -1
  87. package/build/src/export/publicFolder.js +18 -6
  88. package/build/src/export/publicFolder.js.map +1 -1
  89. package/build/src/export/resolveOptions.js +8 -2
  90. package/build/src/export/resolveOptions.js.map +1 -1
  91. package/build/src/export/saveAssets.js +43 -19
  92. package/build/src/export/saveAssets.js.map +1 -1
  93. package/build/src/export/web/exportWebAsync.js +16 -4
  94. package/build/src/export/web/exportWebAsync.js.map +1 -1
  95. package/build/src/export/web/index.js +9 -3
  96. package/build/src/export/web/index.js.map +1 -1
  97. package/build/src/install/applyPlugins.js +8 -2
  98. package/build/src/install/applyPlugins.js.map +1 -1
  99. package/build/src/install/checkPackages.js +18 -6
  100. package/build/src/install/checkPackages.js.map +1 -1
  101. package/build/src/install/fixPackages.js +8 -2
  102. package/build/src/install/fixPackages.js.map +1 -1
  103. package/build/src/install/index.js +14 -8
  104. package/build/src/install/index.js.map +1 -1
  105. package/build/src/install/installAsync.js +27 -9
  106. package/build/src/install/installAsync.js.map +1 -1
  107. package/build/src/install/installExpoPackage.js +17 -5
  108. package/build/src/install/installExpoPackage.js.map +1 -1
  109. package/build/src/install/utils/autoAddConfigPlugins.js +17 -5
  110. package/build/src/install/utils/autoAddConfigPlugins.js.map +1 -1
  111. package/build/src/log.js +9 -3
  112. package/build/src/log.js.map +1 -1
  113. package/build/src/prebuild/clearNativeFolder.js +37 -13
  114. package/build/src/prebuild/clearNativeFolder.js.map +1 -1
  115. package/build/src/prebuild/configureProjectAsync.js +16 -4
  116. package/build/src/prebuild/configureProjectAsync.js.map +1 -1
  117. package/build/src/prebuild/copyTemplateFiles.js +29 -11
  118. package/build/src/prebuild/copyTemplateFiles.js.map +1 -1
  119. package/build/src/prebuild/ensureConfigAsync.js +24 -6
  120. package/build/src/prebuild/ensureConfigAsync.js.map +1 -1
  121. package/build/src/prebuild/index.js +14 -8
  122. package/build/src/prebuild/index.js.map +1 -1
  123. package/build/src/prebuild/prebuildAsync.js +9 -3
  124. package/build/src/prebuild/prebuildAsync.js.map +1 -1
  125. package/build/src/prebuild/renameTemplateAppName.js +119 -0
  126. package/build/src/prebuild/renameTemplateAppName.js.map +1 -0
  127. package/build/src/prebuild/resolveOptions.js +32 -8
  128. package/build/src/prebuild/resolveOptions.js.map +1 -1
  129. package/build/src/prebuild/resolveTemplate.js +44 -14
  130. package/build/src/prebuild/resolveTemplate.js.map +1 -1
  131. package/build/src/prebuild/updateFromTemplate.js +18 -2
  132. package/build/src/prebuild/updateFromTemplate.js.map +1 -1
  133. package/build/src/prebuild/updatePackageJson.js +49 -13
  134. package/build/src/prebuild/updatePackageJson.js.map +1 -1
  135. package/build/src/prebuild/validateTemplatePlatforms.js +16 -4
  136. package/build/src/prebuild/validateTemplatePlatforms.js.map +1 -1
  137. package/build/src/run/android/index.js +20 -4
  138. package/build/src/run/android/index.js.map +1 -1
  139. package/build/src/run/android/resolveGradlePropsAsync.js +55 -0
  140. package/build/src/run/android/resolveGradlePropsAsync.js.map +1 -0
  141. package/build/src/run/android/resolveInstallApkName.js +18 -6
  142. package/build/src/run/android/resolveInstallApkName.js.map +1 -1
  143. package/build/src/run/android/resolveLaunchProps.js +10 -4
  144. package/build/src/run/android/resolveLaunchProps.js.map +1 -1
  145. package/build/src/run/android/resolveOptions.js +5 -3
  146. package/build/src/run/android/resolveOptions.js.map +1 -1
  147. package/build/src/run/android/runAndroidAsync.js +13 -4
  148. package/build/src/run/android/runAndroidAsync.js.map +1 -1
  149. package/build/src/run/ensureNativeProject.js +15 -3
  150. package/build/src/run/ensureNativeProject.js.map +1 -1
  151. package/build/src/run/hints.js +10 -4
  152. package/build/src/run/hints.js.map +1 -1
  153. package/build/src/run/index.js +8 -2
  154. package/build/src/run/index.js.map +1 -1
  155. package/build/src/run/ios/XcodeBuild.js +57 -21
  156. package/build/src/run/ios/XcodeBuild.js.map +1 -1
  157. package/build/src/run/ios/appleDevice/AppleDevice.js +25 -7
  158. package/build/src/run/ios/appleDevice/AppleDevice.js.map +1 -1
  159. package/build/src/run/ios/appleDevice/ClientManager.js +10 -4
  160. package/build/src/run/ios/appleDevice/ClientManager.js.map +1 -1
  161. package/build/src/run/ios/appleDevice/client/AFCClient.js +34 -10
  162. package/build/src/run/ios/appleDevice/client/AFCClient.js.map +1 -1
  163. package/build/src/run/ios/appleDevice/client/DebugserverClient.js +16 -4
  164. package/build/src/run/ios/appleDevice/client/DebugserverClient.js.map +1 -1
  165. package/build/src/run/ios/appleDevice/client/InstallationProxyClient.js +8 -2
  166. package/build/src/run/ios/appleDevice/client/InstallationProxyClient.js.map +1 -1
  167. package/build/src/run/ios/appleDevice/client/LockdowndClient.js +17 -5
  168. package/build/src/run/ios/appleDevice/client/LockdowndClient.js.map +1 -1
  169. package/build/src/run/ios/appleDevice/client/MobileImageMounterClient.js +17 -5
  170. package/build/src/run/ios/appleDevice/client/MobileImageMounterClient.js.map +1 -1
  171. package/build/src/run/ios/appleDevice/client/UsbmuxdClient.js +25 -7
  172. package/build/src/run/ios/appleDevice/client/UsbmuxdClient.js.map +1 -1
  173. package/build/src/run/ios/appleDevice/installOnDeviceAsync.js +24 -6
  174. package/build/src/run/ios/appleDevice/installOnDeviceAsync.js.map +1 -1
  175. package/build/src/run/ios/appleDevice/protocol/AFCProtocol.js +8 -2
  176. package/build/src/run/ios/appleDevice/protocol/AFCProtocol.js.map +1 -1
  177. package/build/src/run/ios/appleDevice/protocol/AbstractProtocol.js +16 -4
  178. package/build/src/run/ios/appleDevice/protocol/AbstractProtocol.js.map +1 -1
  179. package/build/src/run/ios/appleDevice/protocol/GDBProtocol.js +8 -2
  180. package/build/src/run/ios/appleDevice/protocol/GDBProtocol.js.map +1 -1
  181. package/build/src/run/ios/appleDevice/protocol/LockdownProtocol.js +16 -4
  182. package/build/src/run/ios/appleDevice/protocol/LockdownProtocol.js.map +1 -1
  183. package/build/src/run/ios/appleDevice/protocol/UsbmuxProtocol.js +16 -4
  184. package/build/src/run/ios/appleDevice/protocol/UsbmuxProtocol.js.map +1 -1
  185. package/build/src/run/ios/codeSigning/Security.js +17 -5
  186. package/build/src/run/ios/codeSigning/Security.js.map +1 -1
  187. package/build/src/run/ios/codeSigning/configureCodeSigning.js +8 -2
  188. package/build/src/run/ios/codeSigning/configureCodeSigning.js.map +1 -1
  189. package/build/src/run/ios/codeSigning/resolveCertificateSigningIdentity.js +9 -3
  190. package/build/src/run/ios/codeSigning/resolveCertificateSigningIdentity.js.map +1 -1
  191. package/build/src/run/ios/codeSigning/simulatorCodeSigning.js +25 -7
  192. package/build/src/run/ios/codeSigning/simulatorCodeSigning.js.map +1 -1
  193. package/build/src/run/ios/codeSigning/xcodeCodeSigning.js +22 -10
  194. package/build/src/run/ios/codeSigning/xcodeCodeSigning.js.map +1 -1
  195. package/build/src/run/ios/index.js +19 -7
  196. package/build/src/run/ios/index.js.map +1 -1
  197. package/build/src/run/ios/launchApp.js +17 -5
  198. package/build/src/run/ios/launchApp.js.map +1 -1
  199. package/build/src/run/ios/options/promptDevice.js +9 -3
  200. package/build/src/run/ios/options/promptDevice.js.map +1 -1
  201. package/build/src/run/ios/options/resolveDevice.js +1 -2
  202. package/build/src/run/ios/options/resolveDevice.js.map +1 -1
  203. package/build/src/run/ios/options/resolveNativeScheme.js +27 -9
  204. package/build/src/run/ios/options/resolveNativeScheme.js.map +1 -1
  205. package/build/src/run/ios/options/resolveXcodeProject.js +8 -2
  206. package/build/src/run/ios/options/resolveXcodeProject.js.map +1 -1
  207. package/build/src/run/ios/runIosAsync.js +10 -2
  208. package/build/src/run/ios/runIosAsync.js.map +1 -1
  209. package/build/src/run/startBundler.js +16 -4
  210. package/build/src/run/startBundler.js.map +1 -1
  211. package/build/src/start/detectDevClient.js +29 -0
  212. package/build/src/start/detectDevClient.js.map +1 -0
  213. package/build/src/start/doctor/SecurityBinPrerequisite.js +8 -2
  214. package/build/src/start/doctor/SecurityBinPrerequisite.js.map +1 -1
  215. package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js +16 -4
  216. package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js.map +1 -1
  217. package/build/src/start/doctor/apple/XcodeDeveloperDiskImagePrerequisite.js +16 -4
  218. package/build/src/start/doctor/apple/XcodeDeveloperDiskImagePrerequisite.js.map +1 -1
  219. package/build/src/start/doctor/apple/XcodePrerequisite.js +79 -29
  220. package/build/src/start/doctor/apple/XcodePrerequisite.js.map +1 -1
  221. package/build/src/start/doctor/apple/XcrunPrerequisite.js +24 -6
  222. package/build/src/start/doctor/apple/XcrunPrerequisite.js.map +1 -1
  223. package/build/src/start/doctor/dependencies/bundledNativeModules.js +25 -7
  224. package/build/src/start/doctor/dependencies/bundledNativeModules.js.map +1 -1
  225. package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js +27 -9
  226. package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js.map +1 -1
  227. package/build/src/start/doctor/dependencies/getMissingPackages.js +24 -6
  228. package/build/src/start/doctor/dependencies/getMissingPackages.js.map +1 -1
  229. package/build/src/start/doctor/dependencies/getVersionedPackages.js +8 -2
  230. package/build/src/start/doctor/dependencies/getVersionedPackages.js.map +1 -1
  231. package/build/src/start/doctor/dependencies/resolvePackages.js +25 -7
  232. package/build/src/start/doctor/dependencies/resolvePackages.js.map +1 -1
  233. package/build/src/start/doctor/dependencies/validateDependenciesVersions.js +32 -21
  234. package/build/src/start/doctor/dependencies/validateDependenciesVersions.js.map +1 -1
  235. package/build/src/start/doctor/ngrok/ExternalModule.js +33 -9
  236. package/build/src/start/doctor/ngrok/ExternalModule.js.map +1 -1
  237. package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js +18 -6
  238. package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js.map +1 -1
  239. package/build/src/start/doctor/typescript/updateTSConfig.js +29 -11
  240. package/build/src/start/doctor/typescript/updateTSConfig.js.map +1 -1
  241. package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js +18 -6
  242. package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js.map +1 -1
  243. package/build/src/start/index.js +17 -11
  244. package/build/src/start/index.js.map +1 -1
  245. package/build/src/start/interface/commandsTable.js +27 -9
  246. package/build/src/start/interface/commandsTable.js.map +1 -1
  247. package/build/src/start/interface/interactiveActions.js +17 -11
  248. package/build/src/start/interface/interactiveActions.js.map +1 -1
  249. package/build/src/start/interface/startInterface.js +8 -2
  250. package/build/src/start/interface/startInterface.js.map +1 -1
  251. package/build/src/start/platforms/AppIdResolver.js +9 -3
  252. package/build/src/start/platforms/AppIdResolver.js.map +1 -1
  253. package/build/src/start/platforms/DeviceManager.js +8 -2
  254. package/build/src/start/platforms/DeviceManager.js.map +1 -1
  255. package/build/src/start/platforms/ExpoGoInstaller.js +30 -14
  256. package/build/src/start/platforms/ExpoGoInstaller.js.map +1 -1
  257. package/build/src/start/platforms/PlatformManager.js +33 -13
  258. package/build/src/start/platforms/PlatformManager.js.map +1 -1
  259. package/build/src/start/platforms/android/ADBServer.js +17 -5
  260. package/build/src/start/platforms/android/ADBServer.js.map +1 -1
  261. package/build/src/start/platforms/android/AndroidAppIdResolver.js +13 -7
  262. package/build/src/start/platforms/android/AndroidAppIdResolver.js.map +1 -1
  263. package/build/src/start/platforms/android/AndroidDeviceManager.js +19 -7
  264. package/build/src/start/platforms/android/AndroidDeviceManager.js.map +1 -1
  265. package/build/src/start/platforms/android/AndroidSdk.js +34 -10
  266. package/build/src/start/platforms/android/AndroidSdk.js.map +1 -1
  267. package/build/src/start/platforms/android/activateWindow.js +16 -4
  268. package/build/src/start/platforms/android/activateWindow.js.map +1 -1
  269. package/build/src/start/platforms/android/adb.js +21 -4
  270. package/build/src/start/platforms/android/adb.js.map +1 -1
  271. package/build/src/start/platforms/android/emulator.js +32 -8
  272. package/build/src/start/platforms/android/emulator.js.map +1 -1
  273. package/build/src/start/platforms/android/gradle.js +23 -6
  274. package/build/src/start/platforms/android/gradle.js.map +1 -1
  275. package/build/src/start/platforms/android/promptAndroidDevice.js +10 -4
  276. package/build/src/start/platforms/android/promptAndroidDevice.js.map +1 -1
  277. package/build/src/start/platforms/ios/AppleAppIdResolver.js +26 -8
  278. package/build/src/start/platforms/ios/AppleAppIdResolver.js.map +1 -1
  279. package/build/src/start/platforms/ios/AppleDeviceManager.js +50 -18
  280. package/build/src/start/platforms/ios/AppleDeviceManager.js.map +1 -1
  281. package/build/src/start/platforms/ios/assertSystemRequirements.js +4 -3
  282. package/build/src/start/platforms/ios/assertSystemRequirements.js.map +1 -1
  283. package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js +16 -4
  284. package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js.map +1 -1
  285. package/build/src/start/platforms/ios/getBestSimulator.js +8 -2
  286. package/build/src/start/platforms/ios/getBestSimulator.js.map +1 -1
  287. package/build/src/start/platforms/ios/promptAppleDevice.js +9 -3
  288. package/build/src/start/platforms/ios/promptAppleDevice.js.map +1 -1
  289. package/build/src/start/platforms/ios/simctl.js +12 -6
  290. package/build/src/start/platforms/ios/simctl.js.map +1 -1
  291. package/build/src/start/platforms/ios/simctlLogging.js +40 -10
  292. package/build/src/start/platforms/ios/simctlLogging.js.map +1 -1
  293. package/build/src/start/platforms/ios/xcrun.js +16 -4
  294. package/build/src/start/platforms/ios/xcrun.js.map +1 -1
  295. package/build/src/start/project/dotExpo.js +27 -9
  296. package/build/src/start/project/dotExpo.js.map +1 -1
  297. package/build/src/start/resolveOptions.js +33 -15
  298. package/build/src/start/resolveOptions.js.map +1 -1
  299. package/build/src/start/server/AsyncNgrok.js +34 -10
  300. package/build/src/start/server/AsyncNgrok.js.map +1 -1
  301. package/build/src/start/server/BundlerDevServer.js +16 -4
  302. package/build/src/start/server/BundlerDevServer.js.map +1 -1
  303. package/build/src/start/server/DevServerManager.js +28 -10
  304. package/build/src/start/server/DevServerManager.js.map +1 -1
  305. package/build/src/start/server/DevToolsPluginManager.js +16 -4
  306. package/build/src/start/server/DevToolsPluginManager.js.map +1 -1
  307. package/build/src/start/server/DevelopmentSession.js +9 -3
  308. package/build/src/start/server/DevelopmentSession.js.map +1 -1
  309. package/build/src/start/server/ReactDevToolsProxy.js +26 -8
  310. package/build/src/start/server/ReactDevToolsProxy.js.map +1 -1
  311. package/build/src/start/server/UrlCreator.js +19 -6
  312. package/build/src/start/server/UrlCreator.js.map +1 -1
  313. package/build/src/start/server/getStaticRenderFunctions.js +91 -55
  314. package/build/src/start/server/getStaticRenderFunctions.js.map +1 -1
  315. package/build/src/start/server/metro/MetroBundlerDevServer.js +231 -83
  316. package/build/src/start/server/metro/MetroBundlerDevServer.js.map +1 -1
  317. package/build/src/start/server/metro/MetroTerminalReporter.js +30 -15
  318. package/build/src/start/server/metro/MetroTerminalReporter.js.map +1 -1
  319. package/build/src/start/server/metro/TerminalReporter.js +26 -8
  320. package/build/src/start/server/metro/TerminalReporter.js.map +1 -1
  321. package/build/src/start/server/metro/TerminalReporter.types.js.map +1 -1
  322. package/build/src/start/server/metro/createExpoMetroResolver.js +56 -20
  323. package/build/src/start/server/metro/createExpoMetroResolver.js.map +1 -1
  324. package/build/src/start/server/metro/createJResolver.js +90 -45
  325. package/build/src/start/server/metro/createJResolver.js.map +1 -1
  326. package/build/src/start/server/metro/createServerRouteMiddleware.js +29 -28
  327. package/build/src/start/server/metro/createServerRouteMiddleware.js.map +1 -1
  328. package/build/src/start/server/metro/debugging/MessageHandler.js +27 -0
  329. package/build/src/start/server/metro/debugging/MessageHandler.js.map +1 -0
  330. package/build/src/start/server/metro/debugging/createDebugMiddleware.js +11 -8
  331. package/build/src/start/server/metro/debugging/createDebugMiddleware.js.map +1 -1
  332. package/build/src/start/server/metro/debugging/createHandlersFactory.js +63 -0
  333. package/build/src/start/server/metro/debugging/createHandlersFactory.js.map +1 -0
  334. package/build/src/start/server/metro/debugging/{inspectorHandlers/utils.js → getDebuggerType.js} +1 -6
  335. package/build/src/start/server/metro/debugging/getDebuggerType.js.map +1 -0
  336. package/build/src/start/server/metro/debugging/{inspectorHandlers → messageHandlers}/NetworkResponse.js +8 -5
  337. package/build/src/start/server/metro/debugging/messageHandlers/NetworkResponse.js.map +1 -0
  338. package/build/src/start/server/metro/debugging/{inspectorHandlers → messageHandlers}/PageReload.js +7 -6
  339. package/build/src/start/server/metro/debugging/messageHandlers/PageReload.js.map +1 -0
  340. package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerGetPossibleBreakpoints.js +25 -0
  341. package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerGetPossibleBreakpoints.js.map +1 -0
  342. package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerSetBreakpointByUrl.js +22 -0
  343. package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerSetBreakpointByUrl.js.map +1 -0
  344. package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeCallFunctionOn.js +28 -0
  345. package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeCallFunctionOn.js.map +1 -0
  346. package/build/src/start/server/metro/debugging/{inspectorHandlers → messageHandlers}/VscodeRuntimeGetProperties.js +10 -6
  347. package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeGetProperties.js.map +1 -0
  348. package/build/src/start/server/metro/debugging/pageIsSupported.js +14 -0
  349. package/build/src/start/server/metro/debugging/pageIsSupported.js.map +1 -0
  350. package/build/src/start/server/metro/debugging/types.js.map +1 -0
  351. package/build/src/start/server/metro/externals.js +51 -64
  352. package/build/src/start/server/metro/externals.js.map +1 -1
  353. package/build/src/start/server/metro/fetchRouterManifest.js +8 -2
  354. package/build/src/start/server/metro/fetchRouterManifest.js.map +1 -1
  355. package/build/src/start/server/metro/formatFileCandidates.js +8 -2
  356. package/build/src/start/server/metro/formatFileCandidates.js.map +1 -1
  357. package/build/src/start/server/metro/getCssModulesFromBundler.js +34 -10
  358. package/build/src/start/server/metro/getCssModulesFromBundler.js.map +1 -1
  359. package/build/src/start/server/metro/instantiateMetro.js +96 -30
  360. package/build/src/start/server/metro/instantiateMetro.js.map +1 -1
  361. package/build/src/start/server/metro/metroErrorInterface.js +40 -21
  362. package/build/src/start/server/metro/metroErrorInterface.js.map +1 -1
  363. package/build/src/start/server/metro/metroVirtualModules.js +82 -0
  364. package/build/src/start/server/metro/metroVirtualModules.js.map +1 -0
  365. package/build/src/start/server/metro/metroWatchTypeScriptFiles.js +8 -2
  366. package/build/src/start/server/metro/metroWatchTypeScriptFiles.js.map +1 -1
  367. package/build/src/start/server/metro/router.js +44 -17
  368. package/build/src/start/server/metro/router.js.map +1 -1
  369. package/build/src/start/server/metro/runServer-fork.js +56 -14
  370. package/build/src/start/server/metro/runServer-fork.js.map +1 -1
  371. package/build/src/start/server/metro/serializeHtml.js +25 -12
  372. package/build/src/start/server/metro/serializeHtml.js.map +1 -1
  373. package/build/src/start/server/metro/waitForMetroToObserveTypeScriptFile.js +8 -2
  374. package/build/src/start/server/metro/waitForMetroToObserveTypeScriptFile.js.map +1 -1
  375. package/build/src/start/server/metro/withMetroMultiPlatform.js +148 -46
  376. package/build/src/start/server/metro/withMetroMultiPlatform.js.map +1 -1
  377. package/build/src/start/server/metro/withMetroResolvers.js +31 -13
  378. package/build/src/start/server/metro/withMetroResolvers.js.map +1 -1
  379. package/build/src/start/server/middleware/CreateFileMiddleware.js +22 -10
  380. package/build/src/start/server/middleware/CreateFileMiddleware.js.map +1 -1
  381. package/build/src/start/server/middleware/DevToolsPluginMiddleware.js +16 -4
  382. package/build/src/start/server/middleware/DevToolsPluginMiddleware.js.map +1 -1
  383. package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js +42 -12
  384. package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js.map +1 -1
  385. package/build/src/start/server/middleware/ExpoMiddleware.js +8 -2
  386. package/build/src/start/server/middleware/ExpoMiddleware.js.map +1 -1
  387. package/build/src/start/server/middleware/InterstitialPageMiddleware.js +41 -11
  388. package/build/src/start/server/middleware/InterstitialPageMiddleware.js.map +1 -1
  389. package/build/src/start/server/middleware/ManifestMiddleware.js +40 -10
  390. package/build/src/start/server/middleware/ManifestMiddleware.js.map +1 -1
  391. package/build/src/start/server/middleware/ReactDevToolsPageMiddleware.js +24 -6
  392. package/build/src/start/server/middleware/ReactDevToolsPageMiddleware.js.map +1 -1
  393. package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js +8 -2
  394. package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js.map +1 -1
  395. package/build/src/start/server/middleware/ServeStaticMiddleware.js +24 -6
  396. package/build/src/start/server/middleware/ServeStaticMiddleware.js.map +1 -1
  397. package/build/src/start/server/middleware/inspector/JsInspector.js +25 -8
  398. package/build/src/start/server/middleware/inspector/JsInspector.js.map +1 -1
  399. package/build/src/start/server/middleware/inspector/LaunchBrowser.js +10 -4
  400. package/build/src/start/server/middleware/inspector/LaunchBrowser.js.map +1 -1
  401. package/build/src/start/server/middleware/inspector/LaunchBrowserImplLinux.js +24 -6
  402. package/build/src/start/server/middleware/inspector/LaunchBrowserImplLinux.js.map +1 -1
  403. package/build/src/start/server/middleware/inspector/LaunchBrowserImplMacOS.js +33 -9
  404. package/build/src/start/server/middleware/inspector/LaunchBrowserImplMacOS.js.map +1 -1
  405. package/build/src/start/server/middleware/inspector/LaunchBrowserImplWindows.js +27 -11
  406. package/build/src/start/server/middleware/inspector/LaunchBrowserImplWindows.js.map +1 -1
  407. package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js +33 -9
  408. package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js.map +1 -1
  409. package/build/src/start/server/middleware/metroOptions.js +12 -2
  410. package/build/src/start/server/middleware/metroOptions.js.map +1 -1
  411. package/build/src/start/server/middleware/resolveAssets.js +17 -5
  412. package/build/src/start/server/middleware/resolveAssets.js.map +1 -1
  413. package/build/src/start/server/middleware/resolvePlatform.js +8 -2
  414. package/build/src/start/server/middleware/resolvePlatform.js.map +1 -1
  415. package/build/src/start/server/platformBundlers.js +8 -2
  416. package/build/src/start/server/platformBundlers.js.map +1 -1
  417. package/build/src/start/server/serverLogLikeMetro.js +37 -13
  418. package/build/src/start/server/serverLogLikeMetro.js.map +1 -1
  419. package/build/src/start/server/type-generation/expo-env.js +16 -4
  420. package/build/src/start/server/type-generation/expo-env.js.map +1 -1
  421. package/build/src/start/server/type-generation/routes.js +91 -37
  422. package/build/src/start/server/type-generation/routes.js.map +1 -1
  423. package/build/src/start/server/type-generation/startTypescriptTypeGeneration.js +27 -9
  424. package/build/src/start/server/type-generation/startTypescriptTypeGeneration.js.map +1 -1
  425. package/build/src/start/server/type-generation/tsconfig.js +27 -9
  426. package/build/src/start/server/type-generation/tsconfig.js.map +1 -1
  427. package/build/src/start/server/webTemplate.js +26 -8
  428. package/build/src/start/server/webTemplate.js.map +1 -1
  429. package/build/src/start/server/webpack/WebpackBundlerDevServer.js +36 -12
  430. package/build/src/start/server/webpack/WebpackBundlerDevServer.js.map +1 -1
  431. package/build/src/start/server/webpack/compile.js +17 -5
  432. package/build/src/start/server/webpack/compile.js.map +1 -1
  433. package/build/src/start/server/webpack/resolveFromProject.js +8 -2
  434. package/build/src/start/server/webpack/resolveFromProject.js.map +1 -1
  435. package/build/src/start/server/webpack/tls.js +35 -11
  436. package/build/src/start/server/webpack/tls.js.map +1 -1
  437. package/build/src/start/startAsync.js +36 -11
  438. package/build/src/start/startAsync.js.map +1 -1
  439. package/build/src/utils/FileNotifier.js +32 -8
  440. package/build/src/utils/FileNotifier.js.map +1 -1
  441. package/build/src/utils/analytics/getDevClientProperties.js +26 -8
  442. package/build/src/utils/analytics/getDevClientProperties.js.map +1 -1
  443. package/build/src/utils/analytics/metroDebuggerMiddleware.js +2 -2
  444. package/build/src/utils/analytics/metroDebuggerMiddleware.js.map +1 -1
  445. package/build/src/utils/args.js +32 -8
  446. package/build/src/utils/args.js.map +1 -1
  447. package/build/src/utils/cocoapods.js +64 -28
  448. package/build/src/utils/cocoapods.js.map +1 -1
  449. package/build/src/utils/codesigning.js +79 -29
  450. package/build/src/utils/codesigning.js.map +1 -1
  451. package/build/src/utils/createFileTransform.js +24 -69
  452. package/build/src/utils/createFileTransform.js.map +1 -1
  453. package/build/src/utils/dir.js +33 -26
  454. package/build/src/utils/dir.js.map +1 -1
  455. package/build/src/utils/downloadAppAsync.js +40 -10
  456. package/build/src/utils/downloadAppAsync.js.map +1 -1
  457. package/build/src/utils/downloadExpoGoAsync.js +26 -11
  458. package/build/src/utils/downloadExpoGoAsync.js.map +1 -1
  459. package/build/src/utils/editor.js +18 -6
  460. package/build/src/utils/editor.js.map +1 -1
  461. package/build/src/utils/env.js +40 -31
  462. package/build/src/utils/env.js.map +1 -1
  463. package/build/src/utils/errors.js +20 -5
  464. package/build/src/utils/errors.js.map +1 -1
  465. package/build/src/utils/findUp.js +18 -6
  466. package/build/src/utils/findUp.js.map +1 -1
  467. package/build/src/utils/getOrPromptApplicationId.js +19 -7
  468. package/build/src/utils/getOrPromptApplicationId.js.map +1 -1
  469. package/build/src/utils/getRunningProcess.js +18 -6
  470. package/build/src/utils/getRunningProcess.js.map +1 -1
  471. package/build/src/utils/git.js +18 -6
  472. package/build/src/utils/git.js.map +1 -1
  473. package/build/src/utils/glob.js +9 -3
  474. package/build/src/utils/glob.js.map +1 -1
  475. package/build/src/utils/ip.js +8 -2
  476. package/build/src/utils/ip.js.map +1 -1
  477. package/build/src/utils/isModuleSymlinked.js +16 -4
  478. package/build/src/utils/isModuleSymlinked.js.map +1 -1
  479. package/build/src/utils/link.js +18 -6
  480. package/build/src/utils/link.js.map +1 -1
  481. package/build/src/utils/mergeGitIgnorePaths.js +25 -13
  482. package/build/src/utils/mergeGitIgnorePaths.js.map +1 -1
  483. package/build/src/utils/modifyConfigAsync.js +18 -6
  484. package/build/src/utils/modifyConfigAsync.js.map +1 -1
  485. package/build/src/utils/modifyConfigPlugins.js +8 -2
  486. package/build/src/utils/modifyConfigPlugins.js.map +1 -1
  487. package/build/src/utils/nodeEnv.js +2 -0
  488. package/build/src/utils/nodeEnv.js.map +1 -1
  489. package/build/src/utils/nodeModules.js +23 -5
  490. package/build/src/utils/nodeModules.js.map +1 -1
  491. package/build/src/utils/npm.js +64 -17
  492. package/build/src/utils/npm.js.map +1 -1
  493. package/build/src/utils/open.js +9 -3
  494. package/build/src/utils/open.js.map +1 -1
  495. package/build/src/utils/ora.js +16 -4
  496. package/build/src/utils/ora.js.map +1 -1
  497. package/build/src/utils/plist.js +24 -6
  498. package/build/src/utils/plist.js.map +1 -1
  499. package/build/src/utils/port.js +22 -10
  500. package/build/src/utils/port.js.map +1 -1
  501. package/build/src/utils/profile.js +8 -2
  502. package/build/src/utils/profile.js.map +1 -1
  503. package/build/src/utils/progress.js +8 -2
  504. package/build/src/utils/progress.js.map +1 -1
  505. package/build/src/utils/prompts.js +16 -4
  506. package/build/src/utils/prompts.js.map +1 -1
  507. package/build/src/utils/scheme.js +75 -23
  508. package/build/src/utils/scheme.js.map +1 -1
  509. package/build/src/utils/tar.js +16 -4
  510. package/build/src/utils/tar.js.map +1 -1
  511. package/build/src/utils/telemetry/DetachedClient.js +87 -0
  512. package/build/src/utils/telemetry/DetachedClient.js.map +1 -0
  513. package/build/src/utils/telemetry/RudderClient.js +98 -0
  514. package/build/src/utils/telemetry/RudderClient.js.map +1 -0
  515. package/build/src/utils/telemetry/flushDetached.js +43 -0
  516. package/build/src/utils/telemetry/flushDetached.js.map +1 -0
  517. package/build/src/utils/telemetry/getContext.js +92 -0
  518. package/build/src/utils/telemetry/getContext.js.map +1 -0
  519. package/build/src/utils/telemetry/index.js +32 -0
  520. package/build/src/utils/telemetry/index.js.map +1 -0
  521. package/build/src/utils/telemetry/types.js +6 -0
  522. package/build/src/utils/telemetry/types.js.map +1 -0
  523. package/build/src/utils/tsconfig/evaluateTsConfig.js +16 -4
  524. package/build/src/utils/tsconfig/evaluateTsConfig.js.map +1 -1
  525. package/build/src/utils/tsconfig/loadTsConfigPaths.js +18 -6
  526. package/build/src/utils/tsconfig/loadTsConfigPaths.js.map +1 -1
  527. package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js +10 -4
  528. package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js.map +1 -1
  529. package/build/src/utils/url.js +19 -10
  530. package/build/src/utils/url.js.map +1 -1
  531. package/build/src/utils/validateApplicationId.js +18 -6
  532. package/build/src/utils/validateApplicationId.js.map +1 -1
  533. package/build/src/whoami/whoamiAsync.js +8 -2
  534. package/build/src/whoami/whoamiAsync.js.map +1 -1
  535. package/package.json +15 -16
  536. package/static/canary/react-native/Libraries/Renderer/implementations/ReactFabric-dev.js +27907 -0
  537. package/static/canary/react-native/Libraries/Renderer/implementations/ReactFabric-prod.js +9494 -0
  538. package/static/canary/react-native/Libraries/Renderer/implementations/ReactFabric-profiling.js +10015 -0
  539. package/static/canary/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +28375 -0
  540. package/static/canary/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +9714 -0
  541. package/build/src/run/android/resolveGradleProps.js +0 -37
  542. package/build/src/run/android/resolveGradleProps.js.map +0 -1
  543. package/build/src/start/server/metro/bundleApiRoutes.js +0 -52
  544. package/build/src/start/server/metro/bundleApiRoutes.js.map +0 -1
  545. package/build/src/start/server/metro/debugging/InspectorDevice.js +0 -80
  546. package/build/src/start/server/metro/debugging/InspectorDevice.js.map +0 -1
  547. package/build/src/start/server/metro/debugging/InspectorProxy.js +0 -116
  548. package/build/src/start/server/metro/debugging/InspectorProxy.js.map +0 -1
  549. package/build/src/start/server/metro/debugging/inspectorHandlers/NetworkResponse.js.map +0 -1
  550. package/build/src/start/server/metro/debugging/inspectorHandlers/PageReload.js.map +0 -1
  551. package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeDebuggerGetPossibleBreakpoints.js +0 -21
  552. package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeDebuggerGetPossibleBreakpoints.js.map +0 -1
  553. package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeDebuggerScriptParsed.js +0 -56
  554. package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeDebuggerScriptParsed.js.map +0 -1
  555. package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeDebuggerSetBreakpointByUrl.js +0 -18
  556. package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeDebuggerSetBreakpointByUrl.js.map +0 -1
  557. package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeRuntimeCallFunctionOn.js +0 -24
  558. package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeRuntimeCallFunctionOn.js.map +0 -1
  559. package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeRuntimeGetProperties.js.map +0 -1
  560. package/build/src/start/server/metro/debugging/inspectorHandlers/types.js.map +0 -1
  561. package/build/src/start/server/metro/debugging/inspectorHandlers/utils.js.map +0 -1
  562. package/build/src/start/server/type-generation/__typetests__/fixtures/basic.js +0 -38
  563. package/build/src/start/server/type-generation/__typetests__/fixtures/basic.js.map +0 -1
  564. package/build/src/start/server/type-generation/__typetests__/generateFixtures.js +0 -38
  565. package/build/src/start/server/type-generation/__typetests__/generateFixtures.js.map +0 -1
  566. package/build/src/start/server/type-generation/__typetests__/route.test.js +0 -184
  567. package/build/src/start/server/type-generation/__typetests__/route.test.js.map +0 -1
  568. package/build/src/utils/analytics/rudderstackClient.js +0 -147
  569. package/build/src/utils/analytics/rudderstackClient.js.map +0 -1
  570. /package/build/src/start/server/metro/debugging/{inspectorHandlers/types.js → types.js} +0 -0
@@ -5,9 +5,27 @@ Object.defineProperty(exports, "__esModule", {
5
5
  exports.printQRCode = printQRCode;
6
6
  exports.printUsage = printUsage;
7
7
  exports.printItem = exports.getTerminalColumns = exports.printHelp = exports.BLT = void 0;
8
- var _chalk = _interopRequireDefault(require("chalk"));
9
- var _qrcodeTerminal = _interopRequireDefault(require("qrcode-terminal"));
10
- var _wrapAnsi = _interopRequireDefault(require("wrap-ansi"));
8
+ function _chalk() {
9
+ const data = _interopRequireDefault(require("chalk"));
10
+ _chalk = function() {
11
+ return data;
12
+ };
13
+ return data;
14
+ }
15
+ function _qrcodeTerminal() {
16
+ const data = _interopRequireDefault(require("qrcode-terminal"));
17
+ _qrcodeTerminal = function() {
18
+ return data;
19
+ };
20
+ return data;
21
+ }
22
+ function _wrapAnsi() {
23
+ const data = _interopRequireDefault(require("wrap-ansi"));
24
+ _wrapAnsi = function() {
25
+ return data;
26
+ };
27
+ return data;
28
+ }
11
29
  var Log = _interopRequireWildcard(require("../../log"));
12
30
  function _interopRequireDefault(obj) {
13
31
  return obj && obj.__esModule ? obj : {
@@ -47,7 +65,7 @@ const printHelp = ()=>{
47
65
  };
48
66
  exports.printHelp = printHelp;
49
67
  function printQRCode(url) {
50
- _qrcodeTerminal.default.generate(url, {
68
+ _qrcodeTerminal().default.generate(url, {
51
69
  small: true
52
70
  }, (code)=>Log.log(code)
53
71
  );
@@ -55,7 +73,7 @@ function printQRCode(url) {
55
73
  const getTerminalColumns = ()=>process.stdout.columns || 80
56
74
  ;
57
75
  exports.getTerminalColumns = getTerminalColumns;
58
- const printItem = (text)=>`${BLT} ` + (0, _wrapAnsi).default(text, getTerminalColumns()).trimStart()
76
+ const printItem = (text)=>`${BLT} ` + _wrapAnsi().default(text, getTerminalColumns()).trimStart()
59
77
  ;
60
78
  exports.printItem = printItem;
61
79
  function printUsage(options, { verbose }) {
@@ -71,7 +89,7 @@ function printUsage(options, { verbose }) {
71
89
  const switchMsg = `switch to ${options.devClient === false ? "development build" : "Expo Go"}`;
72
90
  const target = options.devClient === false ? `Expo Go` : "development build";
73
91
  Log.log();
74
- Log.log(printItem(_chalk.default`Using {cyan ${target}}`));
92
+ Log.log(printItem(_chalk().default`Using {cyan ${target}}`));
75
93
  if (verbose) {
76
94
  logCommandsTable([
77
95
  {
@@ -180,13 +198,13 @@ function logCommandsTable(ui) {
180
198
  if (!key) return "";
181
199
  let view = `${BLT} `;
182
200
  if (key.length === 1) view += "Press ";
183
- view += _chalk.default`{bold ${key}} {dim │} `;
201
+ view += _chalk().default`{bold ${key}} {dim │} `;
184
202
  view += msg;
185
203
  if (status) {
186
- view += ` ${_chalk.default.dim(`(${_chalk.default.italic(status)})`)}`;
204
+ view += ` ${_chalk().default.dim(`(${_chalk().default.italic(status)})`)}`;
187
205
  }
188
206
  if (disabled) {
189
- view = _chalk.default.dim(view);
207
+ view = _chalk().default.dim(view);
190
208
  }
191
209
  return view;
192
210
  }).join("\n"));
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/start/interface/commandsTable.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config';\nimport chalk from 'chalk';\nimport qrcode from 'qrcode-terminal';\nimport wrapAnsi from 'wrap-ansi';\n\nimport * as Log from '../../log';\n\nexport const BLT = '\\u203A';\n\nexport type StartOptions = {\n isWebSocketsEnabled?: boolean;\n devClient?: boolean;\n reset?: boolean;\n nonPersistent?: boolean;\n maxWorkers?: number;\n platforms?: ExpoConfig['platforms'];\n};\n\nexport const printHelp = (): void => {\n logCommandsTable([{ key: '?', msg: 'show all commands' }]);\n};\n\n/** Print the world famous 'Expo QR Code'. */\nexport function printQRCode(url: string) {\n qrcode.generate(url, { small: true }, (code) => Log.log(code));\n}\n\nexport const getTerminalColumns = () => process.stdout.columns || 80;\nexport const printItem = (text: string): string =>\n `${BLT} ` + wrapAnsi(text, getTerminalColumns()).trimStart();\n\nexport function printUsage(\n options: Pick<StartOptions, 'devClient' | 'isWebSocketsEnabled' | 'platforms'>,\n { verbose }: { verbose: boolean }\n) {\n const isMac = process.platform === 'darwin';\n\n const { platforms = ['ios', 'android', 'web'] } = options;\n\n const isAndroidDisabled = !platforms.includes('android');\n const isIosDisabled = !platforms.includes('ios');\n const isWebDisable = !platforms.includes('web');\n\n const switchMsg = `switch to ${options.devClient === false ? 'development build' : 'Expo Go'}`;\n const target = options.devClient === false ? `Expo Go` : 'development build';\n\n Log.log();\n Log.log(printItem(chalk`Using {cyan ${target}}`));\n\n if (verbose) {\n logCommandsTable([\n { key: 's', msg: switchMsg },\n {},\n { key: 'a', msg: 'open Android', disabled: isAndroidDisabled },\n { key: 'shift+a', msg: 'select a device or emulator', disabled: isAndroidDisabled },\n isMac && { key: 'i', msg: 'open iOS simulator', disabled: isIosDisabled },\n isMac && { key: 'shift+i', msg: 'select a simulator', disabled: isIosDisabled },\n { key: 'w', msg: 'open web', disabled: isWebDisable },\n {},\n { key: 'r', msg: 'reload app' },\n !!options.isWebSocketsEnabled && { key: 'j', msg: 'open debugger' },\n !!options.isWebSocketsEnabled && { key: 'm', msg: 'toggle menu' },\n !!options.isWebSocketsEnabled && { key: 'shift+m', msg: 'more tools' },\n { key: 'o', msg: 'open project code in your editor' },\n { key: 'c', msg: 'show project QR' },\n {},\n ]);\n } else {\n logCommandsTable([\n { key: 's', msg: switchMsg },\n {},\n { key: 'a', msg: 'open Android', disabled: isAndroidDisabled },\n isMac && { key: 'i', msg: 'open iOS simulator', disabled: isIosDisabled },\n { key: 'w', msg: 'open web', disabled: isWebDisable },\n {},\n { key: 'j', msg: 'open debugger' },\n { key: 'r', msg: 'reload app' },\n !!options.isWebSocketsEnabled && { key: 'm', msg: 'toggle menu' },\n { key: 'o', msg: 'open project code in your editor' },\n {},\n ]);\n }\n}\n\nfunction logCommandsTable(\n ui: (false | { key?: string; msg?: string; status?: string; disabled?: boolean })[]\n) {\n Log.log(\n ui\n .filter(Boolean)\n // @ts-ignore: filter doesn't work\n .map(({ key, msg, status, disabled }) => {\n if (!key) return '';\n let view = `${BLT} `;\n if (key.length === 1) view += 'Press ';\n view += chalk`{bold ${key}} {dim │} `;\n view += msg;\n if (status) {\n view += ` ${chalk.dim(`(${chalk.italic(status)})`)}`;\n }\n if (disabled) {\n view = chalk.dim(view);\n }\n return view;\n })\n .join('\\n')\n );\n}\n"],"names":["printQRCode","printUsage","Log","BLT","printHelp","logCommandsTable","key","msg","url","qrcode","generate","small","code","log","getTerminalColumns","process","stdout","columns","printItem","text","wrapAnsi","trimStart","options","verbose","isMac","platform","platforms","isAndroidDisabled","includes","isIosDisabled","isWebDisable","switchMsg","devClient","target","chalk","disabled","isWebSocketsEnabled","ui","filter","Boolean","map","status","view","length","dim","italic","join"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/start/interface/commandsTable.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config';\nimport chalk from 'chalk';\nimport qrcode from 'qrcode-terminal';\nimport wrapAnsi from 'wrap-ansi';\n\nimport * as Log from '../../log';\n\nexport const BLT = '\\u203A';\n\nexport type StartOptions = {\n isWebSocketsEnabled?: boolean;\n devClient?: boolean;\n reset?: boolean;\n nonPersistent?: boolean;\n maxWorkers?: number;\n platforms?: ExpoConfig['platforms'];\n};\n\nexport const printHelp = (): void => {\n logCommandsTable([{ key: '?', msg: 'show all commands' }]);\n};\n\n/** Print the world famous 'Expo QR Code'. */\nexport function printQRCode(url: string) {\n qrcode.generate(url, { small: true }, (code) => Log.log(code));\n}\n\nexport const getTerminalColumns = () => process.stdout.columns || 80;\nexport const printItem = (text: string): string =>\n `${BLT} ` + wrapAnsi(text, getTerminalColumns()).trimStart();\n\nexport function printUsage(\n options: Pick<StartOptions, 'devClient' | 'isWebSocketsEnabled' | 'platforms'>,\n { verbose }: { verbose: boolean }\n) {\n const isMac = process.platform === 'darwin';\n\n const { platforms = ['ios', 'android', 'web'] } = options;\n\n const isAndroidDisabled = !platforms.includes('android');\n const isIosDisabled = !platforms.includes('ios');\n const isWebDisable = !platforms.includes('web');\n\n const switchMsg = `switch to ${options.devClient === false ? 'development build' : 'Expo Go'}`;\n const target = options.devClient === false ? `Expo Go` : 'development build';\n\n Log.log();\n Log.log(printItem(chalk`Using {cyan ${target}}`));\n\n if (verbose) {\n logCommandsTable([\n { key: 's', msg: switchMsg },\n {},\n { key: 'a', msg: 'open Android', disabled: isAndroidDisabled },\n { key: 'shift+a', msg: 'select a device or emulator', disabled: isAndroidDisabled },\n isMac && { key: 'i', msg: 'open iOS simulator', disabled: isIosDisabled },\n isMac && { key: 'shift+i', msg: 'select a simulator', disabled: isIosDisabled },\n { key: 'w', msg: 'open web', disabled: isWebDisable },\n {},\n { key: 'r', msg: 'reload app' },\n !!options.isWebSocketsEnabled && { key: 'j', msg: 'open debugger' },\n !!options.isWebSocketsEnabled && { key: 'm', msg: 'toggle menu' },\n !!options.isWebSocketsEnabled && { key: 'shift+m', msg: 'more tools' },\n { key: 'o', msg: 'open project code in your editor' },\n { key: 'c', msg: 'show project QR' },\n {},\n ]);\n } else {\n logCommandsTable([\n { key: 's', msg: switchMsg },\n {},\n { key: 'a', msg: 'open Android', disabled: isAndroidDisabled },\n isMac && { key: 'i', msg: 'open iOS simulator', disabled: isIosDisabled },\n { key: 'w', msg: 'open web', disabled: isWebDisable },\n {},\n { key: 'j', msg: 'open debugger' },\n { key: 'r', msg: 'reload app' },\n !!options.isWebSocketsEnabled && { key: 'm', msg: 'toggle menu' },\n { key: 'o', msg: 'open project code in your editor' },\n {},\n ]);\n }\n}\n\nfunction logCommandsTable(\n ui: (false | { key?: string; msg?: string; status?: string; disabled?: boolean })[]\n) {\n Log.log(\n ui\n .filter(Boolean)\n // @ts-ignore: filter doesn't work\n .map(({ key, msg, status, disabled }) => {\n if (!key) return '';\n let view = `${BLT} `;\n if (key.length === 1) view += 'Press ';\n view += chalk`{bold ${key}} {dim │} `;\n view += msg;\n if (status) {\n view += ` ${chalk.dim(`(${chalk.italic(status)})`)}`;\n }\n if (disabled) {\n view = chalk.dim(view);\n }\n return view;\n })\n .join('\\n')\n );\n}\n"],"names":["printQRCode","printUsage","Log","BLT","printHelp","logCommandsTable","key","msg","url","qrcode","generate","small","code","log","getTerminalColumns","process","stdout","columns","printItem","text","wrapAnsi","trimStart","options","verbose","isMac","platform","platforms","isAndroidDisabled","includes","isIosDisabled","isWebDisable","switchMsg","devClient","target","chalk","disabled","isWebSocketsEnabled","ui","filter","Boolean","map","status","view","length","dim","italic","join"],"mappings":"AAAA;;;;QAuBgBA,WAAW,GAAXA,WAAW;QAQXC,UAAU,GAAVA,UAAU;;SA9BR,MAAO;gDAAP,OAAO;IAAP,MAAO;;;;;SACN,eAAiB;gDAAjB,iBAAiB;IAAjB,eAAiB;;;;;SACf,SAAW;gDAAX,WAAW;IAAX,SAAW;;;;;AAEpBC,IAAAA,GAAG,mCAAM,WAAW,EAAjB;;;;;;;;;;;;;;;;;;;;;;;;;;;AAER,MAAMC,GAAG,GAAG,QAAQ,AAAC;QAAfA,GAAG,GAAHA,GAAG;AAWT,MAAMC,SAAS,GAAG,IAAY;IACnCC,gBAAgB,CAAC;QAAC;YAAEC,GAAG,EAAE,GAAG;YAAEC,GAAG,EAAE,mBAAmB;SAAE;KAAC,CAAC,CAAC;CAC5D,AAAC;QAFWH,SAAS,GAATA,SAAS;AAKf,SAASJ,WAAW,CAACQ,GAAW,EAAE;IACvCC,eAAM,UAAA,CAACC,QAAQ,CAACF,GAAG,EAAE;QAAEG,KAAK,EAAE,IAAI;KAAE,EAAE,CAACC,IAAI,GAAKV,GAAG,CAACW,GAAG,CAACD,IAAI,CAAC;IAAA,CAAC,CAAC;CAChE;AAEM,MAAME,kBAAkB,GAAG,IAAMC,OAAO,CAACC,MAAM,CAACC,OAAO,IAAI,EAAE;AAAC;QAAxDH,kBAAkB,GAAlBA,kBAAkB;AACxB,MAAMI,SAAS,GAAG,CAACC,IAAY,GACpC,CAAC,EAAEhB,GAAG,CAAC,CAAC,CAAC,GAAGiB,SAAQ,UAAA,CAACD,IAAI,EAAEL,kBAAkB,EAAE,CAAC,CAACO,SAAS,EAAE;AAAC;QADlDH,SAAS,GAATA,SAAS;AAGf,SAASjB,UAAU,CACxBqB,OAA8E,EAC9E,EAAEC,OAAO,CAAA,EAAwB,EACjC;IACA,MAAMC,KAAK,GAAGT,OAAO,CAACU,QAAQ,KAAK,QAAQ,AAAC;IAE5C,MAAM,EAAEC,SAAS,EAAG;QAAC,KAAK;QAAE,SAAS;QAAE,KAAK;KAAC,CAAA,EAAE,GAAGJ,OAAO,AAAC;IAE1D,MAAMK,iBAAiB,GAAG,CAACD,SAAS,CAACE,QAAQ,CAAC,SAAS,CAAC,AAAC;IACzD,MAAMC,aAAa,GAAG,CAACH,SAAS,CAACE,QAAQ,CAAC,KAAK,CAAC,AAAC;IACjD,MAAME,YAAY,GAAG,CAACJ,SAAS,CAACE,QAAQ,CAAC,KAAK,CAAC,AAAC;IAEhD,MAAMG,SAAS,GAAG,CAAC,UAAU,EAAET,OAAO,CAACU,SAAS,KAAK,KAAK,GAAG,mBAAmB,GAAG,SAAS,CAAC,CAAC,AAAC;IAC/F,MAAMC,MAAM,GAAGX,OAAO,CAACU,SAAS,KAAK,KAAK,GAAG,CAAC,OAAO,CAAC,GAAG,mBAAmB,AAAC;IAE7E9B,GAAG,CAACW,GAAG,EAAE,CAAC;IACVX,GAAG,CAACW,GAAG,CAACK,SAAS,CAACgB,MAAK,UAAA,CAAC,YAAY,EAAED,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAElD,IAAIV,OAAO,EAAE;QACXlB,gBAAgB,CAAC;YACf;gBAAEC,GAAG,EAAE,GAAG;gBAAEC,GAAG,EAAEwB,SAAS;aAAE;YAC5B,EAAE;YACF;gBAAEzB,GAAG,EAAE,GAAG;gBAAEC,GAAG,EAAE,cAAc;gBAAE4B,QAAQ,EAAER,iBAAiB;aAAE;YAC9D;gBAAErB,GAAG,EAAE,SAAS;gBAAEC,GAAG,EAAE,6BAA6B;gBAAE4B,QAAQ,EAAER,iBAAiB;aAAE;YACnFH,KAAK,IAAI;gBAAElB,GAAG,EAAE,GAAG;gBAAEC,GAAG,EAAE,oBAAoB;gBAAE4B,QAAQ,EAAEN,aAAa;aAAE;YACzEL,KAAK,IAAI;gBAAElB,GAAG,EAAE,SAAS;gBAAEC,GAAG,EAAE,oBAAoB;gBAAE4B,QAAQ,EAAEN,aAAa;aAAE;YAC/E;gBAAEvB,GAAG,EAAE,GAAG;gBAAEC,GAAG,EAAE,UAAU;gBAAE4B,QAAQ,EAAEL,YAAY;aAAE;YACrD,EAAE;YACF;gBAAExB,GAAG,EAAE,GAAG;gBAAEC,GAAG,EAAE,YAAY;aAAE;YAC/B,CAAC,CAACe,OAAO,CAACc,mBAAmB,IAAI;gBAAE9B,GAAG,EAAE,GAAG;gBAAEC,GAAG,EAAE,eAAe;aAAE;YACnE,CAAC,CAACe,OAAO,CAACc,mBAAmB,IAAI;gBAAE9B,GAAG,EAAE,GAAG;gBAAEC,GAAG,EAAE,aAAa;aAAE;YACjE,CAAC,CAACe,OAAO,CAACc,mBAAmB,IAAI;gBAAE9B,GAAG,EAAE,SAAS;gBAAEC,GAAG,EAAE,YAAY;aAAE;YACtE;gBAAED,GAAG,EAAE,GAAG;gBAAEC,GAAG,EAAE,kCAAkC;aAAE;YACrD;gBAAED,GAAG,EAAE,GAAG;gBAAEC,GAAG,EAAE,iBAAiB;aAAE;YACpC,EAAE;SACH,CAAC,CAAC;KACJ,MAAM;QACLF,gBAAgB,CAAC;YACf;gBAAEC,GAAG,EAAE,GAAG;gBAAEC,GAAG,EAAEwB,SAAS;aAAE;YAC5B,EAAE;YACF;gBAAEzB,GAAG,EAAE,GAAG;gBAAEC,GAAG,EAAE,cAAc;gBAAE4B,QAAQ,EAAER,iBAAiB;aAAE;YAC9DH,KAAK,IAAI;gBAAElB,GAAG,EAAE,GAAG;gBAAEC,GAAG,EAAE,oBAAoB;gBAAE4B,QAAQ,EAAEN,aAAa;aAAE;YACzE;gBAAEvB,GAAG,EAAE,GAAG;gBAAEC,GAAG,EAAE,UAAU;gBAAE4B,QAAQ,EAAEL,YAAY;aAAE;YACrD,EAAE;YACF;gBAAExB,GAAG,EAAE,GAAG;gBAAEC,GAAG,EAAE,eAAe;aAAE;YAClC;gBAAED,GAAG,EAAE,GAAG;gBAAEC,GAAG,EAAE,YAAY;aAAE;YAC/B,CAAC,CAACe,OAAO,CAACc,mBAAmB,IAAI;gBAAE9B,GAAG,EAAE,GAAG;gBAAEC,GAAG,EAAE,aAAa;aAAE;YACjE;gBAAED,GAAG,EAAE,GAAG;gBAAEC,GAAG,EAAE,kCAAkC;aAAE;YACrD,EAAE;SACH,CAAC,CAAC;KACJ;CACF;AAED,SAASF,gBAAgB,CACvBgC,EAAmF,EACnF;IACAnC,GAAG,CAACW,GAAG,CACLwB,EAAE,CACCC,MAAM,CAACC,OAAO,CAAC,AAChB,kCAAkC;KACjCC,GAAG,CAAC,CAAC,EAAElC,GAAG,CAAA,EAAEC,GAAG,CAAA,EAAEkC,MAAM,CAAA,EAAEN,QAAQ,CAAA,EAAE,GAAK;QACvC,IAAI,CAAC7B,GAAG,EAAE,OAAO,EAAE,CAAC;QACpB,IAAIoC,IAAI,GAAG,CAAC,EAAEvC,GAAG,CAAC,CAAC,CAAC,AAAC;QACrB,IAAIG,GAAG,CAACqC,MAAM,KAAK,CAAC,EAAED,IAAI,IAAI,QAAQ,CAAC;QACvCA,IAAI,IAAIR,MAAK,UAAA,CAAC,MAAM,EAAE5B,GAAG,CAAC,YAAU,CAAC,CAAC;QACtCoC,IAAI,IAAInC,GAAG,CAAC;QACZ,IAAIkC,MAAM,EAAE;YACVC,IAAI,IAAI,CAAC,CAAC,EAAER,MAAK,UAAA,CAACU,GAAG,CAAC,CAAC,CAAC,EAAEV,MAAK,UAAA,CAACW,MAAM,CAACJ,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACtD;QACD,IAAIN,QAAQ,EAAE;YACZO,IAAI,GAAGR,MAAK,UAAA,CAACU,GAAG,CAACF,IAAI,CAAC,CAAC;SACxB;QACD,OAAOA,IAAI,CAAC;KACb,CAAC,CACDI,IAAI,CAAC,IAAI,CAAC,CACd,CAAC;CACH"}
@@ -2,7 +2,13 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
- var _chalk = _interopRequireDefault(require("chalk"));
5
+ function _chalk() {
6
+ const data = _interopRequireDefault(require("chalk"));
7
+ _chalk = function() {
8
+ return data;
9
+ };
10
+ return data;
11
+ }
6
12
  var _commandsTable = require("./commandsTable");
7
13
  var Log = _interopRequireWildcard(require("../../log"));
8
14
  var _delay = require("../../utils/delay");
@@ -53,9 +59,9 @@ class DevServerManagerActions {
53
59
  const interstitialPageUrl = devServer.getRedirectUrl();
54
60
  (0, _commandsTable).printQRCode(interstitialPageUrl != null ? interstitialPageUrl : nativeRuntimeUrl);
55
61
  if (interstitialPageUrl) {
56
- Log.log((0, _commandsTable).printItem(_chalk.default`Choose an app to open your project at {underline ${interstitialPageUrl}}`));
62
+ Log.log((0, _commandsTable).printItem(_chalk().default`Choose an app to open your project at {underline ${interstitialPageUrl}}`));
57
63
  }
58
- Log.log((0, _commandsTable).printItem(_chalk.default`Metro waiting on {underline ${nativeRuntimeUrl}}`));
64
+ Log.log((0, _commandsTable).printItem(_chalk().default`Metro waiting on {underline ${nativeRuntimeUrl}}`));
59
65
  if (options.devClient === false) {
60
66
  // TODO: if development build, change this message!
61
67
  Log.log((0, _commandsTable).printItem("Scan the QR code above with Expo Go (Android) or the Camera app (iOS)"));
@@ -69,7 +75,7 @@ class DevServerManagerActions {
69
75
  throw error;
70
76
  } else {
71
77
  const serverUrl = devServer.getDevServerUrl();
72
- Log.log((0, _commandsTable).printItem(_chalk.default`Metro waiting on {underline ${serverUrl}}`));
78
+ Log.log((0, _commandsTable).printItem(_chalk().default`Metro waiting on {underline ${serverUrl}}`));
73
79
  Log.log((0, _commandsTable).printItem(`Linking is disabled because the client scheme cannot be resolved.`));
74
80
  }
75
81
  }
@@ -81,7 +87,7 @@ class DevServerManagerActions {
81
87
  });
82
88
  if (webUrl) {
83
89
  Log.log();
84
- Log.log((0, _commandsTable).printItem(_chalk.default`Web is waiting on {underline ${webUrl}}`));
90
+ Log.log((0, _commandsTable).printItem(_chalk().default`Web is waiting on {underline ${webUrl}}`));
85
91
  }
86
92
  }
87
93
  (0, _commandsTable).printUsage(options, {
@@ -95,7 +101,7 @@ class DevServerManagerActions {
95
101
  const apps = await (0, _jsInspector).queryAllInspectorAppsAsync(metroServerOrigin);
96
102
  let app1 = null;
97
103
  if (!apps.length) {
98
- return Log.warn(_chalk.default`{bold Debug:} No compatible apps connected. JavaScript Debugging can only be used with the Hermes engine. ${(0, _link).learnMore("https://docs.expo.dev/guides/using-hermes/")}`);
104
+ return Log.warn(_chalk().default`{bold Debug:} No compatible apps connected. JavaScript Debugging can only be used with the Hermes engine. ${(0, _link).learnMore("https://docs.expo.dev/guides/using-hermes/")}`);
99
105
  }
100
106
  if (apps.length === 1) {
101
107
  app1 = apps[0];
@@ -107,16 +113,16 @@ class DevServerManagerActions {
107
113
  app
108
114
  })
109
115
  );
110
- const value = await (0, _prompts).selectAsync(_chalk.default`Debug target {dim (Hermes only)}`, choices);
116
+ const value = await (0, _prompts).selectAsync(_chalk().default`Debug target {dim (Hermes only)}`, choices);
111
117
  const menuItem = choices.find((item)=>item.value === value
112
118
  );
113
119
  if (!menuItem) {
114
- return Log.error(_chalk.default`{bold Debug:} No device available for "${value}"`);
120
+ return Log.error(_chalk().default`{bold Debug:} No device available for "${value}"`);
115
121
  }
116
122
  app1 = menuItem.app;
117
123
  }
118
124
  if (!app1) {
119
- return Log.error(_chalk.default`{bold Debug:} No device selected`);
125
+ return Log.error(_chalk().default`{bold Debug:} No device selected`);
120
126
  }
121
127
  try {
122
128
  await (0, _jsInspector).openJsInspector(metroServerOrigin, app1);
@@ -157,7 +163,7 @@ class DevServerManagerActions {
157
163
  }
158
164
  ];
159
165
  const pluginMenuItems = (await this.devServerManager.devtoolsPluginManager.queryPluginsAsync()).map((plugin)=>({
160
- title: _chalk.default`Open devtools plugin - {bold ${plugin.packageName}}`,
166
+ title: _chalk().default`Open {bold ${plugin.packageName}}`,
161
167
  value: `devtoolsPlugin:${plugin.packageName}`,
162
168
  action: async ()=>{
163
169
  const url = new URL(plugin.webpageEndpoint, this.devServerManager.getDefaultDevServer().getUrlCreator().constructUrl({
@@ -171,7 +177,7 @@ class DevServerManagerActions {
171
177
  ...defaultMenuItems,
172
178
  ...pluginMenuItems
173
179
  ];
174
- const value = await (0, _prompts).selectAsync(_chalk.default`Dev tools {dim (native only)}`, menuItems);
180
+ const value = await (0, _prompts).selectAsync(_chalk().default`Dev tools {dim (native only)}`, menuItems);
175
181
  const menuItem = menuItems.find((item)=>item.value === value
176
182
  );
177
183
  if (menuItem == null ? void 0 : menuItem.action) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/start/interface/interactiveActions.ts"],"sourcesContent":["import chalk from 'chalk';\n\nimport { BLT, printHelp, printItem, printQRCode, printUsage, StartOptions } from './commandsTable';\nimport * as Log from '../../log';\nimport { delayAsync } from '../../utils/delay';\nimport { learnMore } from '../../utils/link';\nimport { openBrowserAsync } from '../../utils/open';\nimport { ExpoChoice, selectAsync } from '../../utils/prompts';\nimport { DevServerManager } from '../server/DevServerManager';\nimport {\n addReactDevToolsReloadListener,\n startReactDevToolsProxyAsync,\n} from '../server/ReactDevToolsProxy';\nimport {\n MetroInspectorProxyApp,\n openJsInspector,\n queryAllInspectorAppsAsync,\n} from '../server/middleware/inspector/JsInspector';\n\nconst debug = require('debug')('expo:start:interface:interactiveActions') as typeof console.log;\n\ninterface MoreToolMenuItem extends ExpoChoice<string> {\n action?: () => unknown;\n}\n\n/** Wraps the DevServerManager and adds an interface for user actions. */\nexport class DevServerManagerActions {\n constructor(\n private devServerManager: DevServerManager,\n private options: Pick<StartOptions, 'devClient' | 'platforms'>\n ) {}\n\n printDevServerInfo(\n options: Pick<StartOptions, 'devClient' | 'isWebSocketsEnabled' | 'platforms'>\n ) {\n // If native dev server is running, print its URL.\n if (this.devServerManager.getNativeDevServerPort()) {\n const devServer = this.devServerManager.getDefaultDevServer();\n try {\n const nativeRuntimeUrl = devServer.getNativeRuntimeUrl()!;\n const interstitialPageUrl = devServer.getRedirectUrl();\n\n printQRCode(interstitialPageUrl ?? nativeRuntimeUrl);\n\n if (interstitialPageUrl) {\n Log.log(\n printItem(\n chalk`Choose an app to open your project at {underline ${interstitialPageUrl}}`\n )\n );\n }\n Log.log(printItem(chalk`Metro waiting on {underline ${nativeRuntimeUrl}}`));\n if (options.devClient === false) {\n // TODO: if development build, change this message!\n Log.log(\n printItem('Scan the QR code above with Expo Go (Android) or the Camera app (iOS)')\n );\n } else {\n Log.log(\n printItem(\n 'Scan the QR code above to open the project in a development build. ' +\n learnMore('https://expo.fyi/start')\n )\n );\n }\n } catch (error) {\n console.log('err', error);\n // @ts-ignore: If there is no development build scheme, then skip the QR code.\n if (error.code !== 'NO_DEV_CLIENT_SCHEME') {\n throw error;\n } else {\n const serverUrl = devServer.getDevServerUrl();\n Log.log(printItem(chalk`Metro waiting on {underline ${serverUrl}}`));\n Log.log(printItem(`Linking is disabled because the client scheme cannot be resolved.`));\n }\n }\n }\n\n if (this.options.platforms?.includes('web')) {\n const webDevServer = this.devServerManager.getWebDevServer();\n const webUrl = webDevServer?.getDevServerUrl({ hostType: 'localhost' });\n if (webUrl) {\n Log.log();\n Log.log(printItem(chalk`Web is waiting on {underline ${webUrl}}`));\n }\n }\n\n printUsage(options, { verbose: false });\n printHelp();\n Log.log();\n }\n\n async openJsInspectorAsync() {\n const metroServerOrigin = this.devServerManager.getDefaultDevServer().getJsInspectorBaseUrl();\n const apps = await queryAllInspectorAppsAsync(metroServerOrigin);\n let app: MetroInspectorProxyApp | null = null;\n\n if (!apps.length) {\n return Log.warn(\n chalk`{bold Debug:} No compatible apps connected. JavaScript Debugging can only be used with the Hermes engine. ${learnMore(\n 'https://docs.expo.dev/guides/using-hermes/'\n )}`\n );\n }\n\n if (apps.length === 1) {\n app = apps[0];\n } else {\n const choices = apps.map((app) => ({\n title: app.deviceName ?? 'Unknown device',\n value: app.id,\n app,\n }));\n\n const value = await selectAsync(chalk`Debug target {dim (Hermes only)}`, choices);\n const menuItem = choices.find((item) => item.value === value);\n if (!menuItem) {\n return Log.error(chalk`{bold Debug:} No device available for \"${value}\"`);\n }\n\n app = menuItem.app;\n }\n\n if (!app) {\n return Log.error(chalk`{bold Debug:} No device selected`);\n }\n\n try {\n await openJsInspector(metroServerOrigin, app);\n } catch (error: any) {\n Log.error('Failed to open JavaScript inspector. This is often an issue with Google Chrome.');\n Log.exception(error);\n }\n }\n\n reloadApp() {\n Log.log(`${BLT} Reloading apps`);\n // Send reload requests over the dev servers\n this.devServerManager.broadcastMessage('reload');\n }\n\n async openMoreToolsAsync() {\n // Options match: Chrome > View > Developer\n try {\n const defaultMenuItems: MoreToolMenuItem[] = [\n { title: 'Inspect elements', value: 'toggleElementInspector' },\n { title: 'Toggle performance monitor', value: 'togglePerformanceMonitor' },\n { title: 'Toggle developer menu', value: 'toggleDevMenu' },\n { title: 'Reload app', value: 'reload' },\n {\n title: 'Open React devtools',\n value: 'openReactDevTools',\n action: this.openReactDevToolsAsync.bind(this),\n },\n // TODO: Maybe a \"View Source\" option to open code.\n ];\n const pluginMenuItems = (\n await this.devServerManager.devtoolsPluginManager.queryPluginsAsync()\n ).map((plugin) => ({\n title: chalk`Open devtools plugin - {bold ${plugin.packageName}}`,\n value: `devtoolsPlugin:${plugin.packageName}`,\n action: async () => {\n const url = new URL(\n plugin.webpageEndpoint,\n this.devServerManager\n .getDefaultDevServer()\n .getUrlCreator()\n .constructUrl({ scheme: 'http' })\n );\n await openBrowserAsync(url.toString());\n },\n }));\n const menuItems = [...defaultMenuItems, ...pluginMenuItems];\n const value = await selectAsync(chalk`Dev tools {dim (native only)}`, menuItems);\n const menuItem = menuItems.find((item) => item.value === value);\n if (menuItem?.action) {\n menuItem.action();\n } else if (menuItem?.value) {\n this.devServerManager.broadcastMessage('sendDevCommand', { name: menuItem.value });\n }\n } catch (error: any) {\n debug(error);\n // do nothing\n } finally {\n printHelp();\n }\n }\n\n async openReactDevToolsAsync() {\n await startReactDevToolsProxyAsync();\n const url = this.devServerManager.getDefaultDevServer().getReactDevToolsUrl();\n await openBrowserAsync(url);\n addReactDevToolsReloadListener(() => {\n this.reconnectReactDevTools();\n });\n this.reconnectReactDevTools();\n }\n\n async reconnectReactDevTools() {\n // Wait a little time for react-devtools to be initialized in browser\n await delayAsync(3000);\n this.devServerManager.broadcastMessage('sendDevCommand', { name: 'reconnectReactDevTools' });\n }\n\n toggleDevMenu() {\n Log.log(`${BLT} Toggling dev menu`);\n this.devServerManager.broadcastMessage('devMenu');\n }\n}\n"],"names":["Log","debug","require","DevServerManagerActions","constructor","devServerManager","options","printDevServerInfo","getNativeDevServerPort","devServer","getDefaultDevServer","nativeRuntimeUrl","getNativeRuntimeUrl","interstitialPageUrl","getRedirectUrl","printQRCode","log","printItem","chalk","devClient","learnMore","error","console","code","serverUrl","getDevServerUrl","platforms","includes","webDevServer","getWebDevServer","webUrl","hostType","printUsage","verbose","printHelp","openJsInspectorAsync","metroServerOrigin","getJsInspectorBaseUrl","apps","queryAllInspectorAppsAsync","app","length","warn","choices","map","title","deviceName","value","id","selectAsync","menuItem","find","item","openJsInspector","exception","reloadApp","BLT","broadcastMessage","openMoreToolsAsync","defaultMenuItems","action","openReactDevToolsAsync","bind","pluginMenuItems","devtoolsPluginManager","queryPluginsAsync","plugin","packageName","url","URL","webpageEndpoint","getUrlCreator","constructUrl","scheme","openBrowserAsync","toString","menuItems","name","startReactDevToolsProxyAsync","getReactDevToolsUrl","addReactDevToolsReloadListener","reconnectReactDevTools","delayAsync","toggleDevMenu"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/start/interface/interactiveActions.ts"],"sourcesContent":["import chalk from 'chalk';\n\nimport { BLT, printHelp, printItem, printQRCode, printUsage, StartOptions } from './commandsTable';\nimport * as Log from '../../log';\nimport { delayAsync } from '../../utils/delay';\nimport { learnMore } from '../../utils/link';\nimport { openBrowserAsync } from '../../utils/open';\nimport { ExpoChoice, selectAsync } from '../../utils/prompts';\nimport { DevServerManager } from '../server/DevServerManager';\nimport {\n addReactDevToolsReloadListener,\n startReactDevToolsProxyAsync,\n} from '../server/ReactDevToolsProxy';\nimport {\n MetroInspectorProxyApp,\n openJsInspector,\n queryAllInspectorAppsAsync,\n} from '../server/middleware/inspector/JsInspector';\n\nconst debug = require('debug')('expo:start:interface:interactiveActions') as typeof console.log;\n\ninterface MoreToolMenuItem extends ExpoChoice<string> {\n action?: () => unknown;\n}\n\n/** Wraps the DevServerManager and adds an interface for user actions. */\nexport class DevServerManagerActions {\n constructor(\n private devServerManager: DevServerManager,\n private options: Pick<StartOptions, 'devClient' | 'platforms'>\n ) {}\n\n printDevServerInfo(\n options: Pick<StartOptions, 'devClient' | 'isWebSocketsEnabled' | 'platforms'>\n ) {\n // If native dev server is running, print its URL.\n if (this.devServerManager.getNativeDevServerPort()) {\n const devServer = this.devServerManager.getDefaultDevServer();\n try {\n const nativeRuntimeUrl = devServer.getNativeRuntimeUrl()!;\n const interstitialPageUrl = devServer.getRedirectUrl();\n\n printQRCode(interstitialPageUrl ?? nativeRuntimeUrl);\n\n if (interstitialPageUrl) {\n Log.log(\n printItem(\n chalk`Choose an app to open your project at {underline ${interstitialPageUrl}}`\n )\n );\n }\n Log.log(printItem(chalk`Metro waiting on {underline ${nativeRuntimeUrl}}`));\n if (options.devClient === false) {\n // TODO: if development build, change this message!\n Log.log(\n printItem('Scan the QR code above with Expo Go (Android) or the Camera app (iOS)')\n );\n } else {\n Log.log(\n printItem(\n 'Scan the QR code above to open the project in a development build. ' +\n learnMore('https://expo.fyi/start')\n )\n );\n }\n } catch (error) {\n console.log('err', error);\n // @ts-ignore: If there is no development build scheme, then skip the QR code.\n if (error.code !== 'NO_DEV_CLIENT_SCHEME') {\n throw error;\n } else {\n const serverUrl = devServer.getDevServerUrl();\n Log.log(printItem(chalk`Metro waiting on {underline ${serverUrl}}`));\n Log.log(printItem(`Linking is disabled because the client scheme cannot be resolved.`));\n }\n }\n }\n\n if (this.options.platforms?.includes('web')) {\n const webDevServer = this.devServerManager.getWebDevServer();\n const webUrl = webDevServer?.getDevServerUrl({ hostType: 'localhost' });\n if (webUrl) {\n Log.log();\n Log.log(printItem(chalk`Web is waiting on {underline ${webUrl}}`));\n }\n }\n\n printUsage(options, { verbose: false });\n printHelp();\n Log.log();\n }\n\n async openJsInspectorAsync() {\n const metroServerOrigin = this.devServerManager.getDefaultDevServer().getJsInspectorBaseUrl();\n const apps = await queryAllInspectorAppsAsync(metroServerOrigin);\n let app: MetroInspectorProxyApp | null = null;\n\n if (!apps.length) {\n return Log.warn(\n chalk`{bold Debug:} No compatible apps connected. JavaScript Debugging can only be used with the Hermes engine. ${learnMore(\n 'https://docs.expo.dev/guides/using-hermes/'\n )}`\n );\n }\n\n if (apps.length === 1) {\n app = apps[0];\n } else {\n const choices = apps.map((app) => ({\n title: app.deviceName ?? 'Unknown device',\n value: app.id,\n app,\n }));\n\n const value = await selectAsync(chalk`Debug target {dim (Hermes only)}`, choices);\n const menuItem = choices.find((item) => item.value === value);\n if (!menuItem) {\n return Log.error(chalk`{bold Debug:} No device available for \"${value}\"`);\n }\n\n app = menuItem.app;\n }\n\n if (!app) {\n return Log.error(chalk`{bold Debug:} No device selected`);\n }\n\n try {\n await openJsInspector(metroServerOrigin, app);\n } catch (error: any) {\n Log.error('Failed to open JavaScript inspector. This is often an issue with Google Chrome.');\n Log.exception(error);\n }\n }\n\n reloadApp() {\n Log.log(`${BLT} Reloading apps`);\n // Send reload requests over the dev servers\n this.devServerManager.broadcastMessage('reload');\n }\n\n async openMoreToolsAsync() {\n // Options match: Chrome > View > Developer\n try {\n const defaultMenuItems: MoreToolMenuItem[] = [\n { title: 'Inspect elements', value: 'toggleElementInspector' },\n { title: 'Toggle performance monitor', value: 'togglePerformanceMonitor' },\n { title: 'Toggle developer menu', value: 'toggleDevMenu' },\n { title: 'Reload app', value: 'reload' },\n {\n title: 'Open React devtools',\n value: 'openReactDevTools',\n action: this.openReactDevToolsAsync.bind(this),\n },\n // TODO: Maybe a \"View Source\" option to open code.\n ];\n const pluginMenuItems = (\n await this.devServerManager.devtoolsPluginManager.queryPluginsAsync()\n ).map((plugin) => ({\n title: chalk`Open {bold ${plugin.packageName}}`,\n value: `devtoolsPlugin:${plugin.packageName}`,\n action: async () => {\n const url = new URL(\n plugin.webpageEndpoint,\n this.devServerManager\n .getDefaultDevServer()\n .getUrlCreator()\n .constructUrl({ scheme: 'http' })\n );\n await openBrowserAsync(url.toString());\n },\n }));\n const menuItems = [...defaultMenuItems, ...pluginMenuItems];\n const value = await selectAsync(chalk`Dev tools {dim (native only)}`, menuItems);\n const menuItem = menuItems.find((item) => item.value === value);\n if (menuItem?.action) {\n menuItem.action();\n } else if (menuItem?.value) {\n this.devServerManager.broadcastMessage('sendDevCommand', { name: menuItem.value });\n }\n } catch (error: any) {\n debug(error);\n // do nothing\n } finally {\n printHelp();\n }\n }\n\n async openReactDevToolsAsync() {\n await startReactDevToolsProxyAsync();\n const url = this.devServerManager.getDefaultDevServer().getReactDevToolsUrl();\n await openBrowserAsync(url);\n addReactDevToolsReloadListener(() => {\n this.reconnectReactDevTools();\n });\n this.reconnectReactDevTools();\n }\n\n async reconnectReactDevTools() {\n // Wait a little time for react-devtools to be initialized in browser\n await delayAsync(3000);\n this.devServerManager.broadcastMessage('sendDevCommand', { name: 'reconnectReactDevTools' });\n }\n\n toggleDevMenu() {\n Log.log(`${BLT} Toggling dev menu`);\n this.devServerManager.broadcastMessage('devMenu');\n }\n}\n"],"names":["Log","debug","require","DevServerManagerActions","constructor","devServerManager","options","printDevServerInfo","getNativeDevServerPort","devServer","getDefaultDevServer","nativeRuntimeUrl","getNativeRuntimeUrl","interstitialPageUrl","getRedirectUrl","printQRCode","log","printItem","chalk","devClient","learnMore","error","console","code","serverUrl","getDevServerUrl","platforms","includes","webDevServer","getWebDevServer","webUrl","hostType","printUsage","verbose","printHelp","openJsInspectorAsync","metroServerOrigin","getJsInspectorBaseUrl","apps","queryAllInspectorAppsAsync","app","length","warn","choices","map","title","deviceName","value","id","selectAsync","menuItem","find","item","openJsInspector","exception","reloadApp","BLT","broadcastMessage","openMoreToolsAsync","defaultMenuItems","action","openReactDevToolsAsync","bind","pluginMenuItems","devtoolsPluginManager","queryPluginsAsync","plugin","packageName","url","URL","webpageEndpoint","getUrlCreator","constructUrl","scheme","openBrowserAsync","toString","menuItems","name","startReactDevToolsProxyAsync","getReactDevToolsUrl","addReactDevToolsReloadListener","reconnectReactDevTools","delayAsync","toggleDevMenu"],"mappings":"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"}
@@ -3,7 +3,13 @@ Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
5
  exports.startInterfaceAsync = startInterfaceAsync;
6
- var _chalk = _interopRequireDefault(require("chalk"));
6
+ function _chalk() {
7
+ const data = _interopRequireDefault(require("chalk"));
8
+ _chalk = function() {
9
+ return data;
10
+ };
11
+ return data;
12
+ }
7
13
  var _keyPressHandler = require("./KeyPressHandler");
8
14
  var _commandsTable = require("./commandsTable");
9
15
  var _interactiveActions = require("./interactiveActions");
@@ -142,7 +148,7 @@ async function startInterfaceAsync(devServerManager, options) {
142
148
  const settings = PLATFORM_SETTINGS[platform];
143
149
  Log.log(`${_commandsTable.BLT} Opening on ${settings.name}...`);
144
150
  if (server.isTargetingNative() && !platforms.includes(settings.key)) {
145
- Log.warn(_chalk.default`${settings.name} is disabled, enable it by adding {bold ${settings.key}} to the platforms array in your app.json or app.config.js`);
151
+ Log.warn(_chalk().default`${settings.name} is disabled, enable it by adding {bold ${settings.key}} to the platforms array in your app.json or app.config.js`);
146
152
  } else {
147
153
  try {
148
154
  await server.openPlatformAsync(settings.launchTarget, {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/start/interface/startInterface.ts"],"sourcesContent":["import chalk from 'chalk';\n\nimport { KeyPressHandler } from './KeyPressHandler';\nimport { BLT, printHelp, printUsage, StartOptions } from './commandsTable';\nimport { DevServerManagerActions } from './interactiveActions';\nimport * as Log from '../../log';\nimport { openInEditorAsync } from '../../utils/editor';\nimport { AbortCommandError } from '../../utils/errors';\nimport { getAllSpinners, ora } from '../../utils/ora';\nimport { getProgressBar, setProgressBar } from '../../utils/progress';\nimport { addInteractionListener, pauseInteractions } from '../../utils/prompts';\nimport { WebSupportProjectPrerequisite } from '../doctor/web/WebSupportProjectPrerequisite';\nimport { DevServerManager } from '../server/DevServerManager';\n\nconst debug = require('debug')('expo:start:interface:startInterface') as typeof console.log;\n\nconst CTRL_C = '\\u0003';\nconst CTRL_D = '\\u0004';\nconst CTRL_L = '\\u000C';\n\nconst PLATFORM_SETTINGS: Record<\n string,\n { name: string; key: 'android' | 'ios'; launchTarget: 'emulator' | 'simulator' }\n> = {\n android: {\n name: 'Android',\n key: 'android',\n launchTarget: 'emulator',\n },\n ios: {\n name: 'iOS',\n key: 'ios',\n launchTarget: 'simulator',\n },\n};\n\nexport async function startInterfaceAsync(\n devServerManager: DevServerManager,\n options: Pick<StartOptions, 'devClient' | 'platforms'>\n) {\n const actions = new DevServerManagerActions(devServerManager, options);\n\n const isWebSocketsEnabled = devServerManager.getDefaultDevServer()?.isTargetingNative();\n\n const usageOptions = {\n isWebSocketsEnabled,\n devClient: devServerManager.options.devClient,\n ...options,\n };\n\n actions.printDevServerInfo(usageOptions);\n\n const onPressAsync = async (key: string) => {\n // Auxillary commands all escape.\n switch (key) {\n case CTRL_C:\n case CTRL_D: {\n // Prevent terminal UI from accepting commands while the process is closing.\n // Without this, fast typers will close the server then start typing their\n // next command and have a bunch of unrelated things pop up.\n pauseInteractions();\n\n const spinners = getAllSpinners();\n spinners.forEach((spinner) => {\n spinner.fail();\n });\n\n const currentProgress = getProgressBar();\n if (currentProgress) {\n currentProgress.terminate();\n setProgressBar(null);\n }\n const spinner = ora({ text: 'Stopping server', color: 'white' }).start();\n try {\n await devServerManager.stopAsync();\n spinner.stopAndPersist({ text: 'Stopped server', symbol: `\\u203A` });\n // @ts-ignore: Argument of type '\"SIGINT\"' is not assignable to parameter of type '\"disconnect\"'.\n process.emit('SIGINT');\n\n // TODO: Is this the right place to do this?\n process.exit();\n } catch (error) {\n spinner.fail('Failed to stop server');\n throw error;\n }\n break;\n }\n case CTRL_L:\n return Log.clear();\n case '?':\n return printUsage(usageOptions, { verbose: true });\n }\n\n // Optionally enabled\n\n if (isWebSocketsEnabled) {\n switch (key) {\n case 'm':\n return actions.toggleDevMenu();\n case 'M':\n return actions.openMoreToolsAsync();\n }\n }\n\n const { platforms = ['ios', 'android', 'web'] } = options;\n\n if (['i', 'a'].includes(key.toLowerCase())) {\n const platform = key.toLowerCase() === 'i' ? 'ios' : 'android';\n\n const shouldPrompt = ['I', 'A'].includes(key);\n if (shouldPrompt) {\n Log.clear();\n }\n\n const server = devServerManager.getDefaultDevServer();\n const settings = PLATFORM_SETTINGS[platform];\n\n Log.log(`${BLT} Opening on ${settings.name}...`);\n\n if (server.isTargetingNative() && !platforms.includes(settings.key)) {\n Log.warn(\n chalk`${settings.name} is disabled, enable it by adding {bold ${settings.key}} to the platforms array in your app.json or app.config.js`\n );\n } else {\n try {\n await server.openPlatformAsync(settings.launchTarget, { shouldPrompt });\n printHelp();\n } catch (error: any) {\n if (!(error instanceof AbortCommandError)) {\n Log.exception(error);\n }\n }\n }\n // Break out early.\n return;\n }\n\n switch (key) {\n case 's': {\n Log.clear();\n if (await devServerManager.toggleRuntimeMode()) {\n usageOptions.devClient = devServerManager.options.devClient;\n return actions.printDevServerInfo(usageOptions);\n }\n break;\n }\n case 'w': {\n try {\n await devServerManager.ensureProjectPrerequisiteAsync(WebSupportProjectPrerequisite);\n if (!platforms.includes('web')) {\n platforms.push('web');\n options.platforms?.push('web');\n }\n } catch (e: any) {\n Log.warn(e.message);\n break;\n }\n\n const isDisabled = !platforms.includes('web');\n if (isDisabled) {\n debug('Web is disabled');\n // Use warnings from the web support setup.\n break;\n }\n\n // Ensure the Webpack dev server is running first\n if (!devServerManager.getWebDevServer()) {\n debug('Starting up webpack dev server');\n await devServerManager.ensureWebDevServerRunningAsync();\n // When this is the first time webpack is started, reprint the connection info.\n actions.printDevServerInfo(usageOptions);\n }\n\n Log.log(`${BLT} Open in the web browser...`);\n try {\n await devServerManager.getWebDevServer()?.openPlatformAsync('desktop');\n printHelp();\n } catch (error: any) {\n if (!(error instanceof AbortCommandError)) {\n Log.exception(error);\n }\n }\n break;\n }\n case 'c':\n Log.clear();\n return actions.printDevServerInfo(usageOptions);\n case 'j':\n return actions.openJsInspectorAsync();\n case 'r':\n return actions.reloadApp();\n case 'o':\n Log.log(`${BLT} Opening the editor...`);\n return openInEditorAsync(devServerManager.projectRoot);\n }\n };\n\n const keyPressHandler = new KeyPressHandler(onPressAsync);\n\n const listener = keyPressHandler.createInteractionListener();\n\n addInteractionListener(listener);\n\n // Start observing...\n keyPressHandler.startInterceptingKeyStrokes();\n}\n"],"names":["startInterfaceAsync","Log","debug","require","CTRL_C","CTRL_D","CTRL_L","PLATFORM_SETTINGS","android","name","key","launchTarget","ios","devServerManager","options","actions","DevServerManagerActions","isWebSocketsEnabled","getDefaultDevServer","isTargetingNative","usageOptions","devClient","printDevServerInfo","onPressAsync","pauseInteractions","spinners","getAllSpinners","forEach","spinner","fail","currentProgress","getProgressBar","terminate","setProgressBar","ora","text","color","start","stopAsync","stopAndPersist","symbol","process","emit","exit","error","clear","printUsage","verbose","toggleDevMenu","openMoreToolsAsync","platforms","includes","toLowerCase","platform","shouldPrompt","server","settings","log","BLT","warn","chalk","openPlatformAsync","printHelp","AbortCommandError","exception","toggleRuntimeMode","ensureProjectPrerequisiteAsync","WebSupportProjectPrerequisite","push","e","message","isDisabled","getWebDevServer","ensureWebDevServerRunningAsync","openJsInspectorAsync","reloadApp","openInEditorAsync","projectRoot","keyPressHandler","KeyPressHandler","listener","createInteractionListener","addInteractionListener","startInterceptingKeyStrokes"],"mappings":"AAAA;;;;QAoCsBA,mBAAmB,GAAnBA,mBAAmB;AApCvB,IAAA,MAAO,kCAAP,OAAO,EAAA;AAEO,IAAA,gBAAmB,WAAnB,mBAAmB,CAAA;AACM,IAAA,cAAiB,WAAjB,iBAAiB,CAAA;AAClC,IAAA,mBAAsB,WAAtB,sBAAsB,CAAA;AAClDC,IAAAA,GAAG,mCAAM,WAAW,EAAjB;AACmB,IAAA,OAAoB,WAApB,oBAAoB,CAAA;AACpB,IAAA,OAAoB,WAApB,oBAAoB,CAAA;AAClB,IAAA,IAAiB,WAAjB,iBAAiB,CAAA;AACN,IAAA,SAAsB,WAAtB,sBAAsB,CAAA;AACX,IAAA,QAAqB,WAArB,qBAAqB,CAAA;AACjC,IAAA,8BAA6C,WAA7C,6CAA6C,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAG3F,MAAMC,KAAK,GAAGC,OAAO,CAAC,OAAO,CAAC,CAAC,qCAAqC,CAAC,AAAsB,AAAC;AAE5F,MAAMC,MAAM,GAAG,MAAQ,AAAC;AACxB,MAAMC,MAAM,GAAG,MAAQ,AAAC;AACxB,MAAMC,MAAM,GAAG,IAAQ,AAAC;AAExB,MAAMC,iBAAiB,GAGnB;IACFC,OAAO,EAAE;QACPC,IAAI,EAAE,SAAS;QACfC,GAAG,EAAE,SAAS;QACdC,YAAY,EAAE,UAAU;KACzB;IACDC,GAAG,EAAE;QACHH,IAAI,EAAE,KAAK;QACXC,GAAG,EAAE,KAAK;QACVC,YAAY,EAAE,WAAW;KAC1B;CACF,AAAC;AAEK,eAAeX,mBAAmB,CACvCa,gBAAkC,EAClCC,OAAsD,EACtD;QAG4BD,IAAsC;IAFlE,MAAME,OAAO,GAAG,IAAIC,mBAAuB,wBAAA,CAACH,gBAAgB,EAAEC,OAAO,CAAC,AAAC;IAEvE,MAAMG,mBAAmB,GAAGJ,CAAAA,IAAsC,GAAtCA,gBAAgB,CAACK,mBAAmB,EAAE,SAAmB,GAAzDL,KAAAA,CAAyD,GAAzDA,IAAsC,CAAEM,iBAAiB,EAAE,AAAC;IAExF,MAAMC,YAAY,GAAG;QACnBH,mBAAmB;QACnBI,SAAS,EAAER,gBAAgB,CAACC,OAAO,CAACO,SAAS;QAC7C,GAAGP,OAAO;KACX,AAAC;IAEFC,OAAO,CAACO,kBAAkB,CAACF,YAAY,CAAC,CAAC;IAEzC,MAAMG,YAAY,GAAG,OAAOb,GAAW,GAAK;QAC1C,iCAAiC;QACjC,OAAQA,GAAG;YACT,KAAKN,MAAM,CAAC;YACZ,KAAKC,MAAM;gBAAE;oBACX,4EAA4E;oBAC5E,0EAA0E;oBAC1E,4DAA4D;oBAC5DmB,CAAAA,GAAAA,QAAiB,AAAE,CAAA,kBAAF,EAAE,CAAC;oBAEpB,MAAMC,QAAQ,GAAGC,CAAAA,GAAAA,IAAc,AAAE,CAAA,eAAF,EAAE,AAAC;oBAClCD,QAAQ,CAACE,OAAO,CAAC,CAACC,OAAO,GAAK;wBAC5BA,OAAO,CAACC,IAAI,EAAE,CAAC;qBAChB,CAAC,CAAC;oBAEH,MAAMC,eAAe,GAAGC,CAAAA,GAAAA,SAAc,AAAE,CAAA,eAAF,EAAE,AAAC;oBACzC,IAAID,eAAe,EAAE;wBACnBA,eAAe,CAACE,SAAS,EAAE,CAAC;wBAC5BC,CAAAA,GAAAA,SAAc,AAAM,CAAA,eAAN,CAAC,IAAI,CAAC,CAAC;qBACtB;oBACD,MAAML,QAAO,GAAGM,CAAAA,GAAAA,IAAG,AAA6C,CAAA,IAA7C,CAAC;wBAAEC,IAAI,EAAE,iBAAiB;wBAAEC,KAAK,EAAE,OAAO;qBAAE,CAAC,CAACC,KAAK,EAAE,AAAC;oBACzE,IAAI;wBACF,MAAMxB,gBAAgB,CAACyB,SAAS,EAAE,CAAC;wBACnCV,QAAO,CAACW,cAAc,CAAC;4BAAEJ,IAAI,EAAE,gBAAgB;4BAAEK,MAAM,EAAE,CAAC,MAAM,CAAC;yBAAE,CAAC,CAAC;wBACrE,iGAAiG;wBACjGC,OAAO,CAACC,IAAI,CAAC,QAAQ,CAAC,CAAC;wBAEvB,4CAA4C;wBAC5CD,OAAO,CAACE,IAAI,EAAE,CAAC;qBAChB,CAAC,OAAOC,KAAK,EAAE;wBACdhB,QAAO,CAACC,IAAI,CAAC,uBAAuB,CAAC,CAAC;wBACtC,MAAMe,KAAK,CAAC;qBACb;oBACD,MAAM;iBACP;YACD,KAAKtC,MAAM;gBACT,OAAOL,GAAG,CAAC4C,KAAK,EAAE,CAAC;YACrB,KAAK,GAAG;gBACN,OAAOC,CAAAA,GAAAA,cAAU,AAAiC,CAAA,WAAjC,CAAC1B,YAAY,EAAE;oBAAE2B,OAAO,EAAE,IAAI;iBAAE,CAAC,CAAC;SACtD;QAED,qBAAqB;QAErB,IAAI9B,mBAAmB,EAAE;YACvB,OAAQP,GAAG;gBACT,KAAK,GAAG;oBACN,OAAOK,OAAO,CAACiC,aAAa,EAAE,CAAC;gBACjC,KAAK,GAAG;oBACN,OAAOjC,OAAO,CAACkC,kBAAkB,EAAE,CAAC;aACvC;SACF;QAED,MAAM,EAAEC,SAAS,EAAG;YAAC,KAAK;YAAE,SAAS;YAAE,KAAK;SAAC,CAAA,EAAE,GAAGpC,OAAO,AAAC;QAE1D,IAAI;YAAC,GAAG;YAAE,GAAG;SAAC,CAACqC,QAAQ,CAACzC,GAAG,CAAC0C,WAAW,EAAE,CAAC,EAAE;YAC1C,MAAMC,QAAQ,GAAG3C,GAAG,CAAC0C,WAAW,EAAE,KAAK,GAAG,GAAG,KAAK,GAAG,SAAS,AAAC;YAE/D,MAAME,YAAY,GAAG;gBAAC,GAAG;gBAAE,GAAG;aAAC,CAACH,QAAQ,CAACzC,GAAG,CAAC,AAAC;YAC9C,IAAI4C,YAAY,EAAE;gBAChBrD,GAAG,CAAC4C,KAAK,EAAE,CAAC;aACb;YAED,MAAMU,MAAM,GAAG1C,gBAAgB,CAACK,mBAAmB,EAAE,AAAC;YACtD,MAAMsC,QAAQ,GAAGjD,iBAAiB,CAAC8C,QAAQ,CAAC,AAAC;YAE7CpD,GAAG,CAACwD,GAAG,CAAC,CAAC,EAAEC,cAAG,IAAA,CAAC,YAAY,EAAEF,QAAQ,CAAC/C,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAEjD,IAAI8C,MAAM,CAACpC,iBAAiB,EAAE,IAAI,CAAC+B,SAAS,CAACC,QAAQ,CAACK,QAAQ,CAAC9C,GAAG,CAAC,EAAE;gBACnET,GAAG,CAAC0D,IAAI,CACNC,MAAK,QAAA,CAAC,EAAEJ,QAAQ,CAAC/C,IAAI,CAAC,wCAAwC,EAAE+C,QAAQ,CAAC9C,GAAG,CAAC,0DAA0D,CAAC,CACzI,CAAC;aACH,MAAM;gBACL,IAAI;oBACF,MAAM6C,MAAM,CAACM,iBAAiB,CAACL,QAAQ,CAAC7C,YAAY,EAAE;wBAAE2C,YAAY;qBAAE,CAAC,CAAC;oBACxEQ,CAAAA,GAAAA,cAAS,AAAE,CAAA,UAAF,EAAE,CAAC;iBACb,CAAC,OAAOlB,KAAK,EAAO;oBACnB,IAAI,CAAC,CAACA,KAAK,YAAYmB,OAAiB,kBAAA,CAAC,EAAE;wBACzC9D,GAAG,CAAC+D,SAAS,CAACpB,KAAK,CAAC,CAAC;qBACtB;iBACF;aACF;YACD,mBAAmB;YACnB,OAAO;SACR;QAED,OAAQlC,GAAG;YACT,KAAK,GAAG;gBAAE;oBACRT,GAAG,CAAC4C,KAAK,EAAE,CAAC;oBACZ,IAAI,MAAMhC,gBAAgB,CAACoD,iBAAiB,EAAE,EAAE;wBAC9C7C,YAAY,CAACC,SAAS,GAAGR,gBAAgB,CAACC,OAAO,CAACO,SAAS,CAAC;wBAC5D,OAAON,OAAO,CAACO,kBAAkB,CAACF,YAAY,CAAC,CAAC;qBACjD;oBACD,MAAM;iBACP;YACD,KAAK,GAAG;gBAAE;oBACR,IAAI;wBACF,MAAMP,gBAAgB,CAACqD,8BAA8B,CAACC,8BAA6B,8BAAA,CAAC,CAAC;wBACrF,IAAI,CAACjB,SAAS,CAACC,QAAQ,CAAC,KAAK,CAAC,EAAE;gCAE9BrC,GAAiB;4BADjBoC,SAAS,CAACkB,IAAI,CAAC,KAAK,CAAC,CAAC;4BACtBtD,CAAAA,GAAiB,GAAjBA,OAAO,CAACoC,SAAS,SAAM,GAAvBpC,KAAAA,CAAuB,GAAvBA,GAAiB,CAAEsD,IAAI,CAAC,KAAK,CAAC,AAvJ1C,CAuJ2C;yBAChC;qBACF,CAAC,OAAOC,CAAC,EAAO;wBACfpE,GAAG,CAAC0D,IAAI,CAACU,CAAC,CAACC,OAAO,CAAC,CAAC;wBACpB,MAAM;qBACP;oBAED,MAAMC,UAAU,GAAG,CAACrB,SAAS,CAACC,QAAQ,CAAC,KAAK,CAAC,AAAC;oBAC9C,IAAIoB,UAAU,EAAE;wBACdrE,KAAK,CAAC,iBAAiB,CAAC,CAAC;wBAEzB,MAAM;qBACP;oBAED,iDAAiD;oBACjD,IAAI,CAACW,gBAAgB,CAAC2D,eAAe,EAAE,EAAE;wBACvCtE,KAAK,CAAC,gCAAgC,CAAC,CAAC;wBACxC,MAAMW,gBAAgB,CAAC4D,8BAA8B,EAAE,CAAC;wBACxD,+EAA+E;wBAC/E1D,OAAO,CAACO,kBAAkB,CAACF,YAAY,CAAC,CAAC;qBAC1C;oBAEDnB,GAAG,CAACwD,GAAG,CAAC,CAAC,EAAEC,cAAG,IAAA,CAAC,2BAA2B,CAAC,CAAC,CAAC;oBAC7C,IAAI;4BACI7C,IAAkC;wBAAxC,OAAMA,CAAAA,IAAkC,GAAlCA,gBAAgB,CAAC2D,eAAe,EAAE,SAAmB,GAArD3D,KAAAA,CAAqD,GAArDA,IAAkC,CAAEgD,iBAAiB,CAAC,SAAS,CAAC,CAAA,CAAC;wBACvEC,CAAAA,GAAAA,cAAS,AAAE,CAAA,UAAF,EAAE,CAAC;qBACb,CAAC,OAAOlB,KAAK,EAAO;wBACnB,IAAI,CAAC,CAACA,KAAK,YAAYmB,OAAiB,kBAAA,CAAC,EAAE;4BACzC9D,GAAG,CAAC+D,SAAS,CAACpB,KAAK,CAAC,CAAC;yBACtB;qBACF;oBACD,MAAM;iBACP;YACD,KAAK,GAAG;gBACN3C,GAAG,CAAC4C,KAAK,EAAE,CAAC;gBACZ,OAAO9B,OAAO,CAACO,kBAAkB,CAACF,YAAY,CAAC,CAAC;YAClD,KAAK,GAAG;gBACN,OAAOL,OAAO,CAAC2D,oBAAoB,EAAE,CAAC;YACxC,KAAK,GAAG;gBACN,OAAO3D,OAAO,CAAC4D,SAAS,EAAE,CAAC;YAC7B,KAAK,GAAG;gBACN1E,GAAG,CAACwD,GAAG,CAAC,CAAC,EAAEC,cAAG,IAAA,CAAC,sBAAsB,CAAC,CAAC,CAAC;gBACxC,OAAOkB,CAAAA,GAAAA,OAAiB,AAA8B,CAAA,kBAA9B,CAAC/D,gBAAgB,CAACgE,WAAW,CAAC,CAAC;SAC1D;KACF,AAAC;IAEF,MAAMC,eAAe,GAAG,IAAIC,gBAAe,gBAAA,CAACxD,YAAY,CAAC,AAAC;IAE1D,MAAMyD,QAAQ,GAAGF,eAAe,CAACG,yBAAyB,EAAE,AAAC;IAE7DC,CAAAA,GAAAA,QAAsB,AAAU,CAAA,uBAAV,CAACF,QAAQ,CAAC,CAAC;IAEjC,qBAAqB;IACrBF,eAAe,CAACK,2BAA2B,EAAE,CAAC;CAC/C"}
1
+ {"version":3,"sources":["../../../../src/start/interface/startInterface.ts"],"sourcesContent":["import chalk from 'chalk';\n\nimport { KeyPressHandler } from './KeyPressHandler';\nimport { BLT, printHelp, printUsage, StartOptions } from './commandsTable';\nimport { DevServerManagerActions } from './interactiveActions';\nimport * as Log from '../../log';\nimport { openInEditorAsync } from '../../utils/editor';\nimport { AbortCommandError } from '../../utils/errors';\nimport { getAllSpinners, ora } from '../../utils/ora';\nimport { getProgressBar, setProgressBar } from '../../utils/progress';\nimport { addInteractionListener, pauseInteractions } from '../../utils/prompts';\nimport { WebSupportProjectPrerequisite } from '../doctor/web/WebSupportProjectPrerequisite';\nimport { DevServerManager } from '../server/DevServerManager';\n\nconst debug = require('debug')('expo:start:interface:startInterface') as typeof console.log;\n\nconst CTRL_C = '\\u0003';\nconst CTRL_D = '\\u0004';\nconst CTRL_L = '\\u000C';\n\nconst PLATFORM_SETTINGS: Record<\n string,\n { name: string; key: 'android' | 'ios'; launchTarget: 'emulator' | 'simulator' }\n> = {\n android: {\n name: 'Android',\n key: 'android',\n launchTarget: 'emulator',\n },\n ios: {\n name: 'iOS',\n key: 'ios',\n launchTarget: 'simulator',\n },\n};\n\nexport async function startInterfaceAsync(\n devServerManager: DevServerManager,\n options: Pick<StartOptions, 'devClient' | 'platforms'>\n) {\n const actions = new DevServerManagerActions(devServerManager, options);\n\n const isWebSocketsEnabled = devServerManager.getDefaultDevServer()?.isTargetingNative();\n\n const usageOptions = {\n isWebSocketsEnabled,\n devClient: devServerManager.options.devClient,\n ...options,\n };\n\n actions.printDevServerInfo(usageOptions);\n\n const onPressAsync = async (key: string) => {\n // Auxillary commands all escape.\n switch (key) {\n case CTRL_C:\n case CTRL_D: {\n // Prevent terminal UI from accepting commands while the process is closing.\n // Without this, fast typers will close the server then start typing their\n // next command and have a bunch of unrelated things pop up.\n pauseInteractions();\n\n const spinners = getAllSpinners();\n spinners.forEach((spinner) => {\n spinner.fail();\n });\n\n const currentProgress = getProgressBar();\n if (currentProgress) {\n currentProgress.terminate();\n setProgressBar(null);\n }\n const spinner = ora({ text: 'Stopping server', color: 'white' }).start();\n try {\n await devServerManager.stopAsync();\n spinner.stopAndPersist({ text: 'Stopped server', symbol: `\\u203A` });\n // @ts-ignore: Argument of type '\"SIGINT\"' is not assignable to parameter of type '\"disconnect\"'.\n process.emit('SIGINT');\n\n // TODO: Is this the right place to do this?\n process.exit();\n } catch (error) {\n spinner.fail('Failed to stop server');\n throw error;\n }\n break;\n }\n case CTRL_L:\n return Log.clear();\n case '?':\n return printUsage(usageOptions, { verbose: true });\n }\n\n // Optionally enabled\n\n if (isWebSocketsEnabled) {\n switch (key) {\n case 'm':\n return actions.toggleDevMenu();\n case 'M':\n return actions.openMoreToolsAsync();\n }\n }\n\n const { platforms = ['ios', 'android', 'web'] } = options;\n\n if (['i', 'a'].includes(key.toLowerCase())) {\n const platform = key.toLowerCase() === 'i' ? 'ios' : 'android';\n\n const shouldPrompt = ['I', 'A'].includes(key);\n if (shouldPrompt) {\n Log.clear();\n }\n\n const server = devServerManager.getDefaultDevServer();\n const settings = PLATFORM_SETTINGS[platform];\n\n Log.log(`${BLT} Opening on ${settings.name}...`);\n\n if (server.isTargetingNative() && !platforms.includes(settings.key)) {\n Log.warn(\n chalk`${settings.name} is disabled, enable it by adding {bold ${settings.key}} to the platforms array in your app.json or app.config.js`\n );\n } else {\n try {\n await server.openPlatformAsync(settings.launchTarget, { shouldPrompt });\n printHelp();\n } catch (error: any) {\n if (!(error instanceof AbortCommandError)) {\n Log.exception(error);\n }\n }\n }\n // Break out early.\n return;\n }\n\n switch (key) {\n case 's': {\n Log.clear();\n if (await devServerManager.toggleRuntimeMode()) {\n usageOptions.devClient = devServerManager.options.devClient;\n return actions.printDevServerInfo(usageOptions);\n }\n break;\n }\n case 'w': {\n try {\n await devServerManager.ensureProjectPrerequisiteAsync(WebSupportProjectPrerequisite);\n if (!platforms.includes('web')) {\n platforms.push('web');\n options.platforms?.push('web');\n }\n } catch (e: any) {\n Log.warn(e.message);\n break;\n }\n\n const isDisabled = !platforms.includes('web');\n if (isDisabled) {\n debug('Web is disabled');\n // Use warnings from the web support setup.\n break;\n }\n\n // Ensure the Webpack dev server is running first\n if (!devServerManager.getWebDevServer()) {\n debug('Starting up webpack dev server');\n await devServerManager.ensureWebDevServerRunningAsync();\n // When this is the first time webpack is started, reprint the connection info.\n actions.printDevServerInfo(usageOptions);\n }\n\n Log.log(`${BLT} Open in the web browser...`);\n try {\n await devServerManager.getWebDevServer()?.openPlatformAsync('desktop');\n printHelp();\n } catch (error: any) {\n if (!(error instanceof AbortCommandError)) {\n Log.exception(error);\n }\n }\n break;\n }\n case 'c':\n Log.clear();\n return actions.printDevServerInfo(usageOptions);\n case 'j':\n return actions.openJsInspectorAsync();\n case 'r':\n return actions.reloadApp();\n case 'o':\n Log.log(`${BLT} Opening the editor...`);\n return openInEditorAsync(devServerManager.projectRoot);\n }\n };\n\n const keyPressHandler = new KeyPressHandler(onPressAsync);\n\n const listener = keyPressHandler.createInteractionListener();\n\n addInteractionListener(listener);\n\n // Start observing...\n keyPressHandler.startInterceptingKeyStrokes();\n}\n"],"names":["startInterfaceAsync","Log","debug","require","CTRL_C","CTRL_D","CTRL_L","PLATFORM_SETTINGS","android","name","key","launchTarget","ios","devServerManager","options","actions","DevServerManagerActions","isWebSocketsEnabled","getDefaultDevServer","isTargetingNative","usageOptions","devClient","printDevServerInfo","onPressAsync","pauseInteractions","spinners","getAllSpinners","forEach","spinner","fail","currentProgress","getProgressBar","terminate","setProgressBar","ora","text","color","start","stopAsync","stopAndPersist","symbol","process","emit","exit","error","clear","printUsage","verbose","toggleDevMenu","openMoreToolsAsync","platforms","includes","toLowerCase","platform","shouldPrompt","server","settings","log","BLT","warn","chalk","openPlatformAsync","printHelp","AbortCommandError","exception","toggleRuntimeMode","ensureProjectPrerequisiteAsync","WebSupportProjectPrerequisite","push","e","message","isDisabled","getWebDevServer","ensureWebDevServerRunningAsync","openJsInspectorAsync","reloadApp","openInEditorAsync","projectRoot","keyPressHandler","KeyPressHandler","listener","createInteractionListener","addInteractionListener","startInterceptingKeyStrokes"],"mappings":"AAAA;;;;QAoCsBA,mBAAmB,GAAnBA,mBAAmB;SApCvB,MAAO;gDAAP,OAAO;IAAP,MAAO;;;;;AAEO,IAAA,gBAAmB,WAAnB,mBAAmB,CAAA;AACM,IAAA,cAAiB,WAAjB,iBAAiB,CAAA;AAClC,IAAA,mBAAsB,WAAtB,sBAAsB,CAAA;AAClDC,IAAAA,GAAG,mCAAM,WAAW,EAAjB;AACmB,IAAA,OAAoB,WAApB,oBAAoB,CAAA;AACpB,IAAA,OAAoB,WAApB,oBAAoB,CAAA;AAClB,IAAA,IAAiB,WAAjB,iBAAiB,CAAA;AACN,IAAA,SAAsB,WAAtB,sBAAsB,CAAA;AACX,IAAA,QAAqB,WAArB,qBAAqB,CAAA;AACjC,IAAA,8BAA6C,WAA7C,6CAA6C,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAG3F,MAAMC,KAAK,GAAGC,OAAO,CAAC,OAAO,CAAC,CAAC,qCAAqC,CAAC,AAAsB,AAAC;AAE5F,MAAMC,MAAM,GAAG,MAAQ,AAAC;AACxB,MAAMC,MAAM,GAAG,MAAQ,AAAC;AACxB,MAAMC,MAAM,GAAG,IAAQ,AAAC;AAExB,MAAMC,iBAAiB,GAGnB;IACFC,OAAO,EAAE;QACPC,IAAI,EAAE,SAAS;QACfC,GAAG,EAAE,SAAS;QACdC,YAAY,EAAE,UAAU;KACzB;IACDC,GAAG,EAAE;QACHH,IAAI,EAAE,KAAK;QACXC,GAAG,EAAE,KAAK;QACVC,YAAY,EAAE,WAAW;KAC1B;CACF,AAAC;AAEK,eAAeX,mBAAmB,CACvCa,gBAAkC,EAClCC,OAAsD,EACtD;QAG4BD,IAAsC;IAFlE,MAAME,OAAO,GAAG,IAAIC,mBAAuB,wBAAA,CAACH,gBAAgB,EAAEC,OAAO,CAAC,AAAC;IAEvE,MAAMG,mBAAmB,GAAGJ,CAAAA,IAAsC,GAAtCA,gBAAgB,CAACK,mBAAmB,EAAE,SAAmB,GAAzDL,KAAAA,CAAyD,GAAzDA,IAAsC,CAAEM,iBAAiB,EAAE,AAAC;IAExF,MAAMC,YAAY,GAAG;QACnBH,mBAAmB;QACnBI,SAAS,EAAER,gBAAgB,CAACC,OAAO,CAACO,SAAS;QAC7C,GAAGP,OAAO;KACX,AAAC;IAEFC,OAAO,CAACO,kBAAkB,CAACF,YAAY,CAAC,CAAC;IAEzC,MAAMG,YAAY,GAAG,OAAOb,GAAW,GAAK;QAC1C,iCAAiC;QACjC,OAAQA,GAAG;YACT,KAAKN,MAAM,CAAC;YACZ,KAAKC,MAAM;gBAAE;oBACX,4EAA4E;oBAC5E,0EAA0E;oBAC1E,4DAA4D;oBAC5DmB,CAAAA,GAAAA,QAAiB,AAAE,CAAA,kBAAF,EAAE,CAAC;oBAEpB,MAAMC,QAAQ,GAAGC,CAAAA,GAAAA,IAAc,AAAE,CAAA,eAAF,EAAE,AAAC;oBAClCD,QAAQ,CAACE,OAAO,CAAC,CAACC,OAAO,GAAK;wBAC5BA,OAAO,CAACC,IAAI,EAAE,CAAC;qBAChB,CAAC,CAAC;oBAEH,MAAMC,eAAe,GAAGC,CAAAA,GAAAA,SAAc,AAAE,CAAA,eAAF,EAAE,AAAC;oBACzC,IAAID,eAAe,EAAE;wBACnBA,eAAe,CAACE,SAAS,EAAE,CAAC;wBAC5BC,CAAAA,GAAAA,SAAc,AAAM,CAAA,eAAN,CAAC,IAAI,CAAC,CAAC;qBACtB;oBACD,MAAML,QAAO,GAAGM,CAAAA,GAAAA,IAAG,AAA6C,CAAA,IAA7C,CAAC;wBAAEC,IAAI,EAAE,iBAAiB;wBAAEC,KAAK,EAAE,OAAO;qBAAE,CAAC,CAACC,KAAK,EAAE,AAAC;oBACzE,IAAI;wBACF,MAAMxB,gBAAgB,CAACyB,SAAS,EAAE,CAAC;wBACnCV,QAAO,CAACW,cAAc,CAAC;4BAAEJ,IAAI,EAAE,gBAAgB;4BAAEK,MAAM,EAAE,CAAC,MAAM,CAAC;yBAAE,CAAC,CAAC;wBACrE,iGAAiG;wBACjGC,OAAO,CAACC,IAAI,CAAC,QAAQ,CAAC,CAAC;wBAEvB,4CAA4C;wBAC5CD,OAAO,CAACE,IAAI,EAAE,CAAC;qBAChB,CAAC,OAAOC,KAAK,EAAE;wBACdhB,QAAO,CAACC,IAAI,CAAC,uBAAuB,CAAC,CAAC;wBACtC,MAAMe,KAAK,CAAC;qBACb;oBACD,MAAM;iBACP;YACD,KAAKtC,MAAM;gBACT,OAAOL,GAAG,CAAC4C,KAAK,EAAE,CAAC;YACrB,KAAK,GAAG;gBACN,OAAOC,CAAAA,GAAAA,cAAU,AAAiC,CAAA,WAAjC,CAAC1B,YAAY,EAAE;oBAAE2B,OAAO,EAAE,IAAI;iBAAE,CAAC,CAAC;SACtD;QAED,qBAAqB;QAErB,IAAI9B,mBAAmB,EAAE;YACvB,OAAQP,GAAG;gBACT,KAAK,GAAG;oBACN,OAAOK,OAAO,CAACiC,aAAa,EAAE,CAAC;gBACjC,KAAK,GAAG;oBACN,OAAOjC,OAAO,CAACkC,kBAAkB,EAAE,CAAC;aACvC;SACF;QAED,MAAM,EAAEC,SAAS,EAAG;YAAC,KAAK;YAAE,SAAS;YAAE,KAAK;SAAC,CAAA,EAAE,GAAGpC,OAAO,AAAC;QAE1D,IAAI;YAAC,GAAG;YAAE,GAAG;SAAC,CAACqC,QAAQ,CAACzC,GAAG,CAAC0C,WAAW,EAAE,CAAC,EAAE;YAC1C,MAAMC,QAAQ,GAAG3C,GAAG,CAAC0C,WAAW,EAAE,KAAK,GAAG,GAAG,KAAK,GAAG,SAAS,AAAC;YAE/D,MAAME,YAAY,GAAG;gBAAC,GAAG;gBAAE,GAAG;aAAC,CAACH,QAAQ,CAACzC,GAAG,CAAC,AAAC;YAC9C,IAAI4C,YAAY,EAAE;gBAChBrD,GAAG,CAAC4C,KAAK,EAAE,CAAC;aACb;YAED,MAAMU,MAAM,GAAG1C,gBAAgB,CAACK,mBAAmB,EAAE,AAAC;YACtD,MAAMsC,QAAQ,GAAGjD,iBAAiB,CAAC8C,QAAQ,CAAC,AAAC;YAE7CpD,GAAG,CAACwD,GAAG,CAAC,CAAC,EAAEC,cAAG,IAAA,CAAC,YAAY,EAAEF,QAAQ,CAAC/C,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAEjD,IAAI8C,MAAM,CAACpC,iBAAiB,EAAE,IAAI,CAAC+B,SAAS,CAACC,QAAQ,CAACK,QAAQ,CAAC9C,GAAG,CAAC,EAAE;gBACnET,GAAG,CAAC0D,IAAI,CACNC,MAAK,UAAA,CAAC,EAAEJ,QAAQ,CAAC/C,IAAI,CAAC,wCAAwC,EAAE+C,QAAQ,CAAC9C,GAAG,CAAC,0DAA0D,CAAC,CACzI,CAAC;aACH,MAAM;gBACL,IAAI;oBACF,MAAM6C,MAAM,CAACM,iBAAiB,CAACL,QAAQ,CAAC7C,YAAY,EAAE;wBAAE2C,YAAY;qBAAE,CAAC,CAAC;oBACxEQ,CAAAA,GAAAA,cAAS,AAAE,CAAA,UAAF,EAAE,CAAC;iBACb,CAAC,OAAOlB,KAAK,EAAO;oBACnB,IAAI,CAAC,CAACA,KAAK,YAAYmB,OAAiB,kBAAA,CAAC,EAAE;wBACzC9D,GAAG,CAAC+D,SAAS,CAACpB,KAAK,CAAC,CAAC;qBACtB;iBACF;aACF;YACD,mBAAmB;YACnB,OAAO;SACR;QAED,OAAQlC,GAAG;YACT,KAAK,GAAG;gBAAE;oBACRT,GAAG,CAAC4C,KAAK,EAAE,CAAC;oBACZ,IAAI,MAAMhC,gBAAgB,CAACoD,iBAAiB,EAAE,EAAE;wBAC9C7C,YAAY,CAACC,SAAS,GAAGR,gBAAgB,CAACC,OAAO,CAACO,SAAS,CAAC;wBAC5D,OAAON,OAAO,CAACO,kBAAkB,CAACF,YAAY,CAAC,CAAC;qBACjD;oBACD,MAAM;iBACP;YACD,KAAK,GAAG;gBAAE;oBACR,IAAI;wBACF,MAAMP,gBAAgB,CAACqD,8BAA8B,CAACC,8BAA6B,8BAAA,CAAC,CAAC;wBACrF,IAAI,CAACjB,SAAS,CAACC,QAAQ,CAAC,KAAK,CAAC,EAAE;gCAE9BrC,GAAiB;4BADjBoC,SAAS,CAACkB,IAAI,CAAC,KAAK,CAAC,CAAC;4BACtBtD,CAAAA,GAAiB,GAAjBA,OAAO,CAACoC,SAAS,SAAM,GAAvBpC,KAAAA,CAAuB,GAAvBA,GAAiB,CAAEsD,IAAI,CAAC,KAAK,CAAC,AAvJ1C,CAuJ2C;yBAChC;qBACF,CAAC,OAAOC,CAAC,EAAO;wBACfpE,GAAG,CAAC0D,IAAI,CAACU,CAAC,CAACC,OAAO,CAAC,CAAC;wBACpB,MAAM;qBACP;oBAED,MAAMC,UAAU,GAAG,CAACrB,SAAS,CAACC,QAAQ,CAAC,KAAK,CAAC,AAAC;oBAC9C,IAAIoB,UAAU,EAAE;wBACdrE,KAAK,CAAC,iBAAiB,CAAC,CAAC;wBAEzB,MAAM;qBACP;oBAED,iDAAiD;oBACjD,IAAI,CAACW,gBAAgB,CAAC2D,eAAe,EAAE,EAAE;wBACvCtE,KAAK,CAAC,gCAAgC,CAAC,CAAC;wBACxC,MAAMW,gBAAgB,CAAC4D,8BAA8B,EAAE,CAAC;wBACxD,+EAA+E;wBAC/E1D,OAAO,CAACO,kBAAkB,CAACF,YAAY,CAAC,CAAC;qBAC1C;oBAEDnB,GAAG,CAACwD,GAAG,CAAC,CAAC,EAAEC,cAAG,IAAA,CAAC,2BAA2B,CAAC,CAAC,CAAC;oBAC7C,IAAI;4BACI7C,IAAkC;wBAAxC,OAAMA,CAAAA,IAAkC,GAAlCA,gBAAgB,CAAC2D,eAAe,EAAE,SAAmB,GAArD3D,KAAAA,CAAqD,GAArDA,IAAkC,CAAEgD,iBAAiB,CAAC,SAAS,CAAC,CAAA,CAAC;wBACvEC,CAAAA,GAAAA,cAAS,AAAE,CAAA,UAAF,EAAE,CAAC;qBACb,CAAC,OAAOlB,KAAK,EAAO;wBACnB,IAAI,CAAC,CAACA,KAAK,YAAYmB,OAAiB,kBAAA,CAAC,EAAE;4BACzC9D,GAAG,CAAC+D,SAAS,CAACpB,KAAK,CAAC,CAAC;yBACtB;qBACF;oBACD,MAAM;iBACP;YACD,KAAK,GAAG;gBACN3C,GAAG,CAAC4C,KAAK,EAAE,CAAC;gBACZ,OAAO9B,OAAO,CAACO,kBAAkB,CAACF,YAAY,CAAC,CAAC;YAClD,KAAK,GAAG;gBACN,OAAOL,OAAO,CAAC2D,oBAAoB,EAAE,CAAC;YACxC,KAAK,GAAG;gBACN,OAAO3D,OAAO,CAAC4D,SAAS,EAAE,CAAC;YAC7B,KAAK,GAAG;gBACN1E,GAAG,CAACwD,GAAG,CAAC,CAAC,EAAEC,cAAG,IAAA,CAAC,sBAAsB,CAAC,CAAC,CAAC;gBACxC,OAAOkB,CAAAA,GAAAA,OAAiB,AAA8B,CAAA,kBAA9B,CAAC/D,gBAAgB,CAACgE,WAAW,CAAC,CAAC;SAC1D;KACF,AAAC;IAEF,MAAMC,eAAe,GAAG,IAAIC,gBAAe,gBAAA,CAACxD,YAAY,CAAC,AAAC;IAE1D,MAAMyD,QAAQ,GAAGF,eAAe,CAACG,yBAAyB,EAAE,AAAC;IAE7DC,CAAAA,GAAAA,QAAsB,AAAU,CAAA,uBAAV,CAACF,QAAQ,CAAC,CAAC;IAEjC,qBAAqB;IACrBF,eAAe,CAACK,2BAA2B,EAAE,CAAC;CAC/C"}
@@ -2,7 +2,13 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
- var _config = require("@expo/config");
5
+ function _config() {
6
+ const data = require("@expo/config");
7
+ _config = function() {
8
+ return data;
9
+ };
10
+ return data;
11
+ }
6
12
  var _errors = require("../../utils/errors");
7
13
  var _obj = require("../../utils/obj");
8
14
  class AppIdResolver {
@@ -21,10 +27,10 @@ class AppIdResolver {
21
27
  throw new _errors.UnimplementedError();
22
28
  }
23
29
  /** Return the app ID from the Expo config or assert. */ async getAppIdFromConfigAsync() {
24
- const config = (0, _config).getConfig(this.projectRoot);
30
+ const config = _config().getConfig(this.projectRoot);
25
31
  const appId = (0, _obj).get(config.exp, this.configProperty);
26
32
  if (!appId) {
27
- throw new _errors.CommandError("NO_APP_ID", `Required property '${this.configProperty}' is not found in the project ${(0, _config).getProjectConfigDescriptionWithPaths(this.projectRoot, config)}. This is required to open the app.`);
33
+ throw new _errors.CommandError("NO_APP_ID", `Required property '${this.configProperty}' is not found in the project ${_config().getProjectConfigDescriptionWithPaths(this.projectRoot, config)}. This is required to open the app.`);
28
34
  }
29
35
  return appId;
30
36
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/start/platforms/AppIdResolver.ts"],"sourcesContent":["import { getConfig, getProjectConfigDescriptionWithPaths } from '@expo/config';\n\nimport { CommandError, UnimplementedError } from '../../utils/errors';\nimport { get } from '../../utils/obj';\n\n/** Resolves a native app identifier (bundle identifier, package name) from the project files. */\nexport class AppIdResolver {\n constructor(\n protected projectRoot: string,\n /** Platform to use. */\n protected platform: string,\n /** Nested key in the Expo config like `android.package` or `ios.bundleIdentifier`. */\n protected configProperty: string\n ) {}\n\n /** Resolve the application ID for the project. */\n async getAppIdAsync(): Promise<string> {\n if (await this.hasNativeProjectAsync()) {\n return this.getAppIdFromNativeAsync();\n }\n return this.getAppIdFromConfigAsync();\n }\n\n /** Returns `true` if the project has native project code. */\n async hasNativeProjectAsync(): Promise<boolean> {\n throw new UnimplementedError();\n }\n\n /** Return the app ID from the Expo config or assert. */\n async getAppIdFromConfigAsync(): Promise<string> {\n const config = getConfig(this.projectRoot);\n\n const appId = get(config.exp, this.configProperty);\n if (!appId) {\n throw new CommandError(\n 'NO_APP_ID',\n `Required property '${\n this.configProperty\n }' is not found in the project ${getProjectConfigDescriptionWithPaths(\n this.projectRoot,\n config\n )}. This is required to open the app.`\n );\n }\n return appId;\n }\n\n /** Return the app ID from the native project files or null if the app ID cannot be found. */\n async resolveAppIdFromNativeAsync(): Promise<string | null> {\n throw new UnimplementedError();\n }\n\n /** Return the app ID from the native project files or assert. */\n async getAppIdFromNativeAsync(): Promise<string> {\n const appId = await this.resolveAppIdFromNativeAsync();\n if (!appId) {\n throw new CommandError(\n 'NO_APP_ID',\n `Failed to locate the ${this.platform} application identifier in the \"${this.platform}/\" folder. This is required to open the app.`\n );\n }\n return appId;\n }\n}\n"],"names":["AppIdResolver","constructor","projectRoot","platform","configProperty","getAppIdAsync","hasNativeProjectAsync","getAppIdFromNativeAsync","getAppIdFromConfigAsync","UnimplementedError","config","getConfig","appId","get","exp","CommandError","getProjectConfigDescriptionWithPaths","resolveAppIdFromNativeAsync"],"mappings":"AAAA;;;;AAAgE,IAAA,OAAc,WAAd,cAAc,CAAA;AAE7B,IAAA,OAAoB,WAApB,oBAAoB,CAAA;AACjD,IAAA,IAAiB,WAAjB,iBAAiB,CAAA;AAG9B,MAAMA,aAAa;IACxBC,YACYC,WAAmB,EAEnBC,QAAgB,EAEhBC,cAAsB,CAChC;aALUF,WAAmB,GAAnBA,WAAmB;aAEnBC,QAAgB,GAAhBA,QAAgB;aAEhBC,cAAsB,GAAtBA,cAAsB;KAC9B;IAEJ,kDAAkD,CAClD,MAAMC,aAAa,GAAoB;QACrC,IAAI,MAAM,IAAI,CAACC,qBAAqB,EAAE,EAAE;YACtC,OAAO,IAAI,CAACC,uBAAuB,EAAE,CAAC;SACvC;QACD,OAAO,IAAI,CAACC,uBAAuB,EAAE,CAAC;KACvC;IAED,6DAA6D,CAC7D,MAAMF,qBAAqB,GAAqB;QAC9C,MAAM,IAAIG,OAAkB,mBAAA,EAAE,CAAC;KAChC;IAED,wDAAwD,CACxD,MAAMD,uBAAuB,GAAoB;QAC/C,MAAME,MAAM,GAAGC,CAAAA,GAAAA,OAAS,AAAkB,CAAA,UAAlB,CAAC,IAAI,CAACT,WAAW,CAAC,AAAC;QAE3C,MAAMU,KAAK,GAAGC,CAAAA,GAAAA,IAAG,AAAiC,CAAA,IAAjC,CAACH,MAAM,CAACI,GAAG,EAAE,IAAI,CAACV,cAAc,CAAC,AAAC;QACnD,IAAI,CAACQ,KAAK,EAAE;YACV,MAAM,IAAIG,OAAY,aAAA,CACpB,WAAW,EACX,CAAC,mBAAmB,EAClB,IAAI,CAACX,cAAc,CACpB,8BAA8B,EAAEY,CAAAA,GAAAA,OAAoC,AAGpE,CAAA,qCAHoE,CACnE,IAAI,CAACd,WAAW,EAChBQ,MAAM,CACP,CAAC,mCAAmC,CAAC,CACvC,CAAC;SACH;QACD,OAAOE,KAAK,CAAC;KACd;IAED,6FAA6F,CAC7F,MAAMK,2BAA2B,GAA2B;QAC1D,MAAM,IAAIR,OAAkB,mBAAA,EAAE,CAAC;KAChC;IAED,iEAAiE,CACjE,MAAMF,uBAAuB,GAAoB;QAC/C,MAAMK,KAAK,GAAG,MAAM,IAAI,CAACK,2BAA2B,EAAE,AAAC;QACvD,IAAI,CAACL,KAAK,EAAE;YACV,MAAM,IAAIG,OAAY,aAAA,CACpB,WAAW,EACX,CAAC,qBAAqB,EAAE,IAAI,CAACZ,QAAQ,CAAC,gCAAgC,EAAE,IAAI,CAACA,QAAQ,CAAC,4CAA4C,CAAC,CACpI,CAAC;SACH;QACD,OAAOS,KAAK,CAAC;KACd;CACF;QAzDYZ,aAAa,GAAbA,aAAa"}
1
+ {"version":3,"sources":["../../../../src/start/platforms/AppIdResolver.ts"],"sourcesContent":["import { getConfig, getProjectConfigDescriptionWithPaths } from '@expo/config';\n\nimport { CommandError, UnimplementedError } from '../../utils/errors';\nimport { get } from '../../utils/obj';\n\n/** Resolves a native app identifier (bundle identifier, package name) from the project files. */\nexport class AppIdResolver {\n constructor(\n protected projectRoot: string,\n /** Platform to use. */\n protected platform: string,\n /** Nested key in the Expo config like `android.package` or `ios.bundleIdentifier`. */\n protected configProperty: string\n ) {}\n\n /** Resolve the application ID for the project. */\n async getAppIdAsync(): Promise<string> {\n if (await this.hasNativeProjectAsync()) {\n return this.getAppIdFromNativeAsync();\n }\n return this.getAppIdFromConfigAsync();\n }\n\n /** Returns `true` if the project has native project code. */\n async hasNativeProjectAsync(): Promise<boolean> {\n throw new UnimplementedError();\n }\n\n /** Return the app ID from the Expo config or assert. */\n async getAppIdFromConfigAsync(): Promise<string> {\n const config = getConfig(this.projectRoot);\n\n const appId = get(config.exp, this.configProperty);\n if (!appId) {\n throw new CommandError(\n 'NO_APP_ID',\n `Required property '${\n this.configProperty\n }' is not found in the project ${getProjectConfigDescriptionWithPaths(\n this.projectRoot,\n config\n )}. This is required to open the app.`\n );\n }\n return appId;\n }\n\n /** Return the app ID from the native project files or null if the app ID cannot be found. */\n async resolveAppIdFromNativeAsync(): Promise<string | null> {\n throw new UnimplementedError();\n }\n\n /** Return the app ID from the native project files or assert. */\n async getAppIdFromNativeAsync(): Promise<string> {\n const appId = await this.resolveAppIdFromNativeAsync();\n if (!appId) {\n throw new CommandError(\n 'NO_APP_ID',\n `Failed to locate the ${this.platform} application identifier in the \"${this.platform}/\" folder. This is required to open the app.`\n );\n }\n return appId;\n }\n}\n"],"names":["AppIdResolver","constructor","projectRoot","platform","configProperty","getAppIdAsync","hasNativeProjectAsync","getAppIdFromNativeAsync","getAppIdFromConfigAsync","UnimplementedError","config","getConfig","appId","get","exp","CommandError","getProjectConfigDescriptionWithPaths","resolveAppIdFromNativeAsync"],"mappings":"AAAA;;;;SAAgE,OAAc;yBAAd,cAAc;IAAd,OAAc;;;;;AAE7B,IAAA,OAAoB,WAApB,oBAAoB,CAAA;AACjD,IAAA,IAAiB,WAAjB,iBAAiB,CAAA;AAG9B,MAAMA,aAAa;IACxBC,YACYC,WAAmB,EAEnBC,QAAgB,EAEhBC,cAAsB,CAChC;aALUF,WAAmB,GAAnBA,WAAmB;aAEnBC,QAAgB,GAAhBA,QAAgB;aAEhBC,cAAsB,GAAtBA,cAAsB;KAC9B;IAEJ,kDAAkD,CAClD,MAAMC,aAAa,GAAoB;QACrC,IAAI,MAAM,IAAI,CAACC,qBAAqB,EAAE,EAAE;YACtC,OAAO,IAAI,CAACC,uBAAuB,EAAE,CAAC;SACvC;QACD,OAAO,IAAI,CAACC,uBAAuB,EAAE,CAAC;KACvC;IAED,6DAA6D,CAC7D,MAAMF,qBAAqB,GAAqB;QAC9C,MAAM,IAAIG,OAAkB,mBAAA,EAAE,CAAC;KAChC;IAED,wDAAwD,CACxD,MAAMD,uBAAuB,GAAoB;QAC/C,MAAME,MAAM,GAAGC,OAAS,YAAA,CAAC,IAAI,CAACT,WAAW,CAAC,AAAC;QAE3C,MAAMU,KAAK,GAAGC,CAAAA,GAAAA,IAAG,AAAiC,CAAA,IAAjC,CAACH,MAAM,CAACI,GAAG,EAAE,IAAI,CAACV,cAAc,CAAC,AAAC;QACnD,IAAI,CAACQ,KAAK,EAAE;YACV,MAAM,IAAIG,OAAY,aAAA,CACpB,WAAW,EACX,CAAC,mBAAmB,EAClB,IAAI,CAACX,cAAc,CACpB,8BAA8B,EAAEY,OAAoC,uCAAA,CACnE,IAAI,CAACd,WAAW,EAChBQ,MAAM,CACP,CAAC,mCAAmC,CAAC,CACvC,CAAC;SACH;QACD,OAAOE,KAAK,CAAC;KACd;IAED,6FAA6F,CAC7F,MAAMK,2BAA2B,GAA2B;QAC1D,MAAM,IAAIR,OAAkB,mBAAA,EAAE,CAAC;KAChC;IAED,iEAAiE,CACjE,MAAMF,uBAAuB,GAAoB;QAC/C,MAAMK,KAAK,GAAG,MAAM,IAAI,CAACK,2BAA2B,EAAE,AAAC;QACvD,IAAI,CAACL,KAAK,EAAE;YACV,MAAM,IAAIG,OAAY,aAAA,CACpB,WAAW,EACX,CAAC,qBAAqB,EAAE,IAAI,CAACZ,QAAQ,CAAC,gCAAgC,EAAE,IAAI,CAACA,QAAQ,CAAC,4CAA4C,CAAC,CACpI,CAAC;SACH;QACD,OAAOS,KAAK,CAAC;KACd;CACF;QAzDYZ,aAAa,GAAbA,aAAa"}
@@ -2,7 +2,13 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
- var _chalk = _interopRequireDefault(require("chalk"));
5
+ function _chalk() {
6
+ const data = _interopRequireDefault(require("chalk"));
7
+ _chalk = function() {
8
+ return data;
9
+ };
10
+ return data;
11
+ }
6
12
  var Log = _interopRequireWildcard(require("../../log"));
7
13
  function _interopRequireDefault(obj) {
8
14
  return obj && obj.__esModule ? obj : {
@@ -35,7 +41,7 @@ class DeviceManager {
35
41
  this.device = device;
36
42
  }
37
43
  logOpeningUrl(url) {
38
- Log.log(_chalk.default`\u203A Opening {underline ${url}} on {bold ${this.name}}`);
44
+ Log.log(_chalk().default`\u203A Opening {underline ${url}} on {bold ${this.name}}`);
39
45
  }
40
46
  }
41
47
  exports.DeviceManager = DeviceManager;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/start/platforms/DeviceManager.ts"],"sourcesContent":["import chalk from 'chalk';\n\nimport * as Log from '../../log';\n\n/** An abstract class for interacting with a native device. */\nexport abstract class DeviceManager<IDevice> {\n constructor(public device: IDevice) {}\n\n abstract get name(): string;\n\n abstract get identifier(): string;\n\n logOpeningUrl(url: string) {\n Log.log(chalk`\\u203A Opening {underline ${url}} on {bold ${this.name}}`);\n }\n\n abstract startAsync(): Promise<IDevice>;\n\n abstract getAppVersionAsync(applicationId: string): Promise<string | null>;\n\n abstract installAppAsync(binaryPath: string): Promise<void>;\n\n abstract uninstallAppAsync(applicationId: string): Promise<void>;\n\n abstract isAppInstalledAsync(applicationId: string): Promise<boolean>;\n\n abstract openUrlAsync(url: string): Promise<void>;\n\n abstract activateWindowAsync(): Promise<void>;\n\n abstract ensureExpoGoAsync(sdkVersion?: string): Promise<boolean>;\n}\n"],"names":["Log","DeviceManager","constructor","device","logOpeningUrl","url","log","chalk","name"],"mappings":"AAAA;;;;AAAkB,IAAA,MAAO,kCAAP,OAAO,EAAA;AAEbA,IAAAA,GAAG,mCAAM,WAAW,EAAjB;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGR,MAAeC,aAAa;IACjCC,YAAmBC,MAAe,CAAE;aAAjBA,MAAe,GAAfA,MAAe;KAAI;IAMtCC,aAAa,CAACC,GAAW,EAAE;QACzBL,GAAG,CAACM,GAAG,CAACC,MAAK,QAAA,CAAC,0BAA0B,EAAEF,GAAG,CAAC,WAAW,EAAE,IAAI,CAACG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;KAC1E;CAiBF;QA1BqBP,aAAa,GAAbA,aAAa"}
1
+ {"version":3,"sources":["../../../../src/start/platforms/DeviceManager.ts"],"sourcesContent":["import chalk from 'chalk';\n\nimport * as Log from '../../log';\n\n/** An abstract class for interacting with a native device. */\nexport abstract class DeviceManager<IDevice> {\n constructor(public device: IDevice) {}\n\n abstract get name(): string;\n\n abstract get identifier(): string;\n\n logOpeningUrl(url: string) {\n Log.log(chalk`\\u203A Opening {underline ${url}} on {bold ${this.name}}`);\n }\n\n abstract startAsync(): Promise<IDevice>;\n\n abstract getAppVersionAsync(\n applicationId: string,\n options?: { containerPath?: string }\n ): Promise<string | null>;\n\n abstract installAppAsync(binaryPath: string): Promise<void>;\n\n abstract uninstallAppAsync(applicationId: string): Promise<void>;\n\n abstract isAppInstalledAndIfSoReturnContainerPathForIOSAsync(\n applicationId: string\n ): Promise<boolean | string>;\n\n abstract openUrlAsync(url: string): Promise<void>;\n\n abstract activateWindowAsync(): Promise<void>;\n\n abstract ensureExpoGoAsync(sdkVersion: string): Promise<boolean>;\n}\n"],"names":["Log","DeviceManager","constructor","device","logOpeningUrl","url","log","chalk","name"],"mappings":"AAAA;;;;SAAkB,MAAO;gDAAP,OAAO;IAAP,MAAO;;;;;AAEbA,IAAAA,GAAG,mCAAM,WAAW,EAAjB;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGR,MAAeC,aAAa;IACjCC,YAAmBC,MAAe,CAAE;aAAjBA,MAAe,GAAfA,MAAe;KAAI;IAMtCC,aAAa,CAACC,GAAW,EAAE;QACzBL,GAAG,CAACM,GAAG,CAACC,MAAK,UAAA,CAAC,0BAA0B,EAAEF,GAAG,CAAC,WAAW,EAAE,IAAI,CAACG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;KAC1E;CAsBF;QA/BqBP,aAAa,GAAbA,aAAa"}
@@ -2,12 +2,19 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
- var _semver = _interopRequireDefault(require("semver"));
5
+ function _semver() {
6
+ const data = _interopRequireDefault(require("semver"));
7
+ _semver = function() {
8
+ return data;
9
+ };
10
+ return data;
11
+ }
6
12
  var _getVersions = require("../../api/getVersions");
7
13
  var Log = _interopRequireWildcard(require("../../log"));
8
14
  var _downloadExpoGoAsync = require("../../utils/downloadExpoGoAsync");
9
15
  var _env = require("../../utils/env");
10
16
  var _errors = require("../../utils/errors");
17
+ var _link = require("../../utils/link");
11
18
  var _ora = require("../../utils/ora");
12
19
  var _prompts = require("../../utils/prompts");
13
20
  function _interopRequireDefault(obj) {
@@ -46,16 +53,14 @@ class ExpoGoInstaller {
46
53
  this.appId = appId;
47
54
  this.sdkVersion = sdkVersion;
48
55
  }
49
- /** Returns true if the installed app matching the previously provided `appId` is outdated. */ async isClientOutdatedAsync(device) {
50
- const installedVersion = await device.getAppVersionAsync(this.appId);
56
+ /** Returns true if the installed app matching the previously provided `appId` is outdated. */ isInstalledClientVersionMismatched(installedVersion, expectedExpoGoVersion) {
51
57
  if (!installedVersion) {
52
58
  return true;
53
59
  }
54
- const version = await this._getExpectedClientVersionAsync();
55
- debug(`Expected Expo Go version: ${version}, installed version: ${installedVersion}`);
56
- return version ? !_semver.default.eq(installedVersion, version) : true;
60
+ debug(`Expected Expo Go version: ${expectedExpoGoVersion}, installed version: ${installedVersion}`);
61
+ return expectedExpoGoVersion ? !_semver().default.eq(installedVersion, expectedExpoGoVersion) : true;
57
62
  }
58
- /** Returns the expected version of Expo Go given the project SDK Version. Exposed for testing. */ async _getExpectedClientVersionAsync() {
63
+ /** Returns the expected version of Expo Go given the project SDK Version. Exposed for testing. */ async getExpectedExpoGoClientVersionAsync() {
59
64
  var ref, ref1;
60
65
  const versions = await (0, _getVersions).getVersionsAsync();
61
66
  // Like `sdkVersions['44.0.0']['androidClientVersion'] = '1.0.0'`
@@ -64,14 +69,20 @@ class ExpoGoInstaller {
64
69
  var ref2;
65
70
  return (ref2 = specificVersion != null ? specificVersion : latestVersion) != null ? ref2 : null;
66
71
  }
67
- /** Returns a boolean indicating if Expo Go should be installed. Returns `true` if the app was uninstalled. */ async uninstallExpoGoIfOutdatedAsync(deviceManager) {
72
+ /** Returns a boolean indicating if Expo Go should be installed. Returns `true` if the app was uninstalled. */ async promptForUninstallExpoGoIfInstalledClientVersionMismatchedAndReturnShouldInstallAsync(deviceManager, { containerPath } = {}) {
68
73
  const cacheId = `${this.platform}-${deviceManager.identifier}`;
69
74
  if (ExpoGoInstaller.cache[cacheId]) {
70
75
  debug("skipping subsequent upgrade check");
71
76
  return false;
72
77
  }
73
78
  ExpoGoInstaller.cache[cacheId] = true;
74
- if (await this.isClientOutdatedAsync(deviceManager)) {
79
+ const [installedExpoGoVersion, expectedExpoGoVersion] = await Promise.all([
80
+ deviceManager.getAppVersionAsync(this.appId, {
81
+ containerPath
82
+ }),
83
+ this.getExpectedExpoGoClientVersionAsync(),
84
+ ]);
85
+ if (this.isInstalledClientVersionMismatched(installedExpoGoVersion, expectedExpoGoVersion)) {
75
86
  if (this.sdkVersion === "UNVERSIONED") {
76
87
  // This should only happen in the expo/expo repo, e.g. `apps/test-suite`
77
88
  Log.log(`Skipping Expo Go upgrade check for UNVERSIONED project. Manually ensure the Expo Go app is built from source.`);
@@ -80,7 +91,8 @@ class ExpoGoInstaller {
80
91
  // Only prompt once per device, per run.
81
92
  const confirm = await (0, _prompts).confirmAsync({
82
93
  initial: true,
83
- message: `Expo Go on ${deviceManager.name} is outdated, would you like to upgrade?`
94
+ message: `Expo Go ${expectedExpoGoVersion} is recommended for SDK ${this.sdkVersion} (${deviceManager.name}
95
+ is using ${installedExpoGoVersion}). ${(0, _link).learnMore("https://docs.expo.dev/get-started/expo-go/#sdk-versions")}. Install the recommended Expo Go version?`
84
96
  });
85
97
  if (confirm) {
86
98
  // Don't need to uninstall to update on iOS.
@@ -94,16 +106,20 @@ class ExpoGoInstaller {
94
106
  return false;
95
107
  }
96
108
  /** Check if a given device has Expo Go installed, if not then download and install it. */ async ensureAsync(deviceManager) {
97
- let shouldInstall = !await deviceManager.isAppInstalledAsync(this.appId);
109
+ const isExpoGoInstalledAndIfSoContainerPathForIOS = await deviceManager.isAppInstalledAndIfSoReturnContainerPathForIOSAsync(this.appId);
110
+ let shouldInstall = !isExpoGoInstalledAndIfSoContainerPathForIOS;
98
111
  if (_env.env.EXPO_OFFLINE) {
99
- if (!shouldInstall) {
112
+ if (isExpoGoInstalledAndIfSoContainerPathForIOS) {
100
113
  Log.warn(`Skipping Expo Go version validation in offline mode`);
101
114
  return false;
102
115
  }
103
116
  throw new _errors.CommandError("NO_EXPO_GO", `Expo Go is not installed on device "${deviceManager.name}", while running in offline mode. Manually install Expo Go or run without --offline flag (or EXPO_OFFLINE environment variable).`);
104
117
  }
105
- if (!shouldInstall) {
106
- shouldInstall = await this.uninstallExpoGoIfOutdatedAsync(deviceManager);
118
+ if (isExpoGoInstalledAndIfSoContainerPathForIOS) {
119
+ shouldInstall = await this.promptForUninstallExpoGoIfInstalledClientVersionMismatchedAndReturnShouldInstallAsync(deviceManager, {
120
+ // iOS optimization to prevent duplicate calls to `getContainerPathAsync`.
121
+ containerPath: typeof isExpoGoInstalledAndIfSoContainerPathForIOS === "string" ? isExpoGoInstalledAndIfSoContainerPathForIOS : undefined
122
+ });
107
123
  }
108
124
  if (shouldInstall) {
109
125
  // Download the Expo Go app from the Expo servers.