@expo/cli 1.0.0-canary-20250320-7a205d3 → 1.0.0-canary-20250402-161f57b

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 (719) hide show
  1. package/build/bin/cli +93 -91
  2. package/build/bin/cli.map +1 -1
  3. package/build/metro-require/require.js +53 -52
  4. package/build/src/api/endpoint.js +6 -2
  5. package/build/src/api/endpoint.js.map +1 -1
  6. package/build/src/api/getExpoGoIntermediateCertificate.js +5 -3
  7. package/build/src/api/getExpoGoIntermediateCertificate.js.map +1 -1
  8. package/build/src/api/getExpoSchema.js +16 -12
  9. package/build/src/api/getExpoSchema.js.map +1 -1
  10. package/build/src/api/getNativeModuleVersions.js +6 -4
  11. package/build/src/api/getNativeModuleVersions.js.map +1 -1
  12. package/build/src/api/getProjectDevelopmentCertificate.js +5 -3
  13. package/build/src/api/getProjectDevelopmentCertificate.js.map +1 -1
  14. package/build/src/api/getVersions.js +7 -5
  15. package/build/src/api/getVersions.js.map +1 -1
  16. package/build/src/api/graphql/client.js +32 -26
  17. package/build/src/api/graphql/client.js.map +1 -1
  18. package/build/src/api/graphql/queries/AppQuery.js +6 -4
  19. package/build/src/api/graphql/queries/AppQuery.js.map +1 -1
  20. package/build/src/api/graphql/queries/UserQuery.js +5 -3
  21. package/build/src/api/graphql/queries/UserQuery.js.map +1 -1
  22. package/build/src/api/graphql/types/App.js +3 -1
  23. package/build/src/api/graphql/types/App.js.map +1 -1
  24. package/build/src/api/rest/cache/FileSystemResponseCache.js +36 -32
  25. package/build/src/api/rest/cache/FileSystemResponseCache.js.map +1 -1
  26. package/build/src/api/rest/cache/ResponseCache.js +20 -12
  27. package/build/src/api/rest/cache/ResponseCache.js.map +1 -1
  28. package/build/src/api/rest/cache/wrapFetchWithCache.js +13 -11
  29. package/build/src/api/rest/cache/wrapFetchWithCache.js.map +1 -1
  30. package/build/src/api/rest/client.js +55 -37
  31. package/build/src/api/rest/client.js.map +1 -1
  32. package/build/src/api/rest/client.types.js.map +1 -1
  33. package/build/src/api/rest/wrapFetchWithBaseUrl.js +5 -3
  34. package/build/src/api/rest/wrapFetchWithBaseUrl.js.map +1 -1
  35. package/build/src/api/rest/wrapFetchWithOffline.js +5 -3
  36. package/build/src/api/rest/wrapFetchWithOffline.js.map +1 -1
  37. package/build/src/api/rest/wrapFetchWithProgress.js +11 -7
  38. package/build/src/api/rest/wrapFetchWithProgress.js.map +1 -1
  39. package/build/src/api/rest/wrapFetchWithProxy.js +5 -3
  40. package/build/src/api/rest/wrapFetchWithProxy.js.map +1 -1
  41. package/build/src/api/rest/wrapFetchWithUserAgent.js +8 -6
  42. package/build/src/api/rest/wrapFetchWithUserAgent.js.map +1 -1
  43. package/build/src/api/settings.js +7 -5
  44. package/build/src/api/settings.js.map +1 -1
  45. package/build/src/api/updateDevelopmentSession.js +23 -17
  46. package/build/src/api/updateDevelopmentSession.js.map +1 -1
  47. package/build/src/api/user/UserSettings.js +53 -31
  48. package/build/src/api/user/UserSettings.js.map +1 -1
  49. package/build/src/api/user/actions.js +27 -21
  50. package/build/src/api/user/actions.js.map +1 -1
  51. package/build/src/api/user/expoSsoLauncher.js +30 -26
  52. package/build/src/api/user/expoSsoLauncher.js.map +1 -1
  53. package/build/src/api/user/otp.js +35 -29
  54. package/build/src/api/user/otp.js.map +1 -1
  55. package/build/src/api/user/user.js +44 -30
  56. package/build/src/api/user/user.js.map +1 -1
  57. package/build/src/config/configAsync.js +29 -23
  58. package/build/src/config/configAsync.js.map +1 -1
  59. package/build/src/config/index.js +25 -21
  60. package/build/src/config/index.js.map +1 -1
  61. package/build/src/customize/customizeAsync.js +8 -6
  62. package/build/src/customize/customizeAsync.js.map +1 -1
  63. package/build/src/customize/generate.js +20 -16
  64. package/build/src/customize/generate.js.map +1 -1
  65. package/build/src/customize/index.js +14 -12
  66. package/build/src/customize/index.js.map +1 -1
  67. package/build/src/customize/resolveOptions.js +4 -2
  68. package/build/src/customize/resolveOptions.js.map +1 -1
  69. package/build/src/customize/templates.js +58 -54
  70. package/build/src/customize/templates.js.map +1 -1
  71. package/build/src/customize/typescript.js +11 -7
  72. package/build/src/customize/typescript.js.map +1 -1
  73. package/build/src/export/createMetadataJson.js +11 -9
  74. package/build/src/export/createMetadataJson.js.map +1 -1
  75. package/build/src/export/embed/exportEager.js +8 -6
  76. package/build/src/export/embed/exportEager.js.map +1 -1
  77. package/build/src/export/embed/exportEmbedAsync.js +72 -62
  78. package/build/src/export/embed/exportEmbedAsync.js.map +1 -1
  79. package/build/src/export/embed/exportServer.js +57 -55
  80. package/build/src/export/embed/exportServer.js.map +1 -1
  81. package/build/src/export/embed/index.js +44 -40
  82. package/build/src/export/embed/index.js.map +1 -1
  83. package/build/src/export/embed/resolveOptions.js +44 -36
  84. package/build/src/export/embed/resolveOptions.js.map +1 -1
  85. package/build/src/export/embed/xcodeCompilerLogger.js +39 -27
  86. package/build/src/export/embed/xcodeCompilerLogger.js.map +1 -1
  87. package/build/src/export/exportApp.js +68 -64
  88. package/build/src/export/exportApp.js.map +1 -1
  89. package/build/src/export/exportAssets.js +34 -26
  90. package/build/src/export/exportAssets.js.map +1 -1
  91. package/build/src/export/exportAsync.js +13 -9
  92. package/build/src/export/exportAsync.js.map +1 -1
  93. package/build/src/export/exportDomComponents.js +53 -45
  94. package/build/src/export/exportDomComponents.js.map +1 -1
  95. package/build/src/export/exportHermes.js +75 -53
  96. package/build/src/export/exportHermes.js.map +1 -1
  97. package/build/src/export/exportStaticAsync.js +73 -62
  98. package/build/src/export/exportStaticAsync.js.map +1 -1
  99. package/build/src/export/favicon.js +33 -27
  100. package/build/src/export/favicon.js.map +1 -1
  101. package/build/src/export/getPublicExpoManifest.js +7 -5
  102. package/build/src/export/getPublicExpoManifest.js.map +1 -1
  103. package/build/src/export/getResolvedLocales.js +11 -9
  104. package/build/src/export/getResolvedLocales.js.map +1 -1
  105. package/build/src/export/html.js +10 -6
  106. package/build/src/export/html.js.map +1 -1
  107. package/build/src/export/index.js +32 -28
  108. package/build/src/export/index.js.map +1 -1
  109. package/build/src/export/metroAssetLocalPath.js +36 -30
  110. package/build/src/export/metroAssetLocalPath.js.map +1 -1
  111. package/build/src/export/persistMetroAssets.js +64 -34
  112. package/build/src/export/persistMetroAssets.js.map +1 -1
  113. package/build/src/export/publicFolder.js +10 -6
  114. package/build/src/export/publicFolder.js.map +1 -1
  115. package/build/src/export/resolveOptions.js +28 -24
  116. package/build/src/export/resolveOptions.js.map +1 -1
  117. package/build/src/export/saveAssets.js +50 -46
  118. package/build/src/export/saveAssets.js.map +1 -1
  119. package/build/src/export/web/exportWebAsync.js +13 -11
  120. package/build/src/export/web/exportWebAsync.js.map +1 -1
  121. package/build/src/export/web/index.js +19 -15
  122. package/build/src/export/web/index.js.map +1 -1
  123. package/build/src/export/web/resolveOptions.js +5 -3
  124. package/build/src/export/web/resolveOptions.js.map +1 -1
  125. package/build/src/export/writeContents.js +4 -2
  126. package/build/src/export/writeContents.js.map +1 -1
  127. package/build/src/graphql/generated.js +705 -479
  128. package/build/src/graphql/generated.js.map +1 -1
  129. package/build/src/install/applyPlugins.js +11 -7
  130. package/build/src/install/applyPlugins.js.map +1 -1
  131. package/build/src/install/checkPackages.js +26 -22
  132. package/build/src/install/checkPackages.js.map +1 -1
  133. package/build/src/install/fixPackages.js +16 -12
  134. package/build/src/install/fixPackages.js.map +1 -1
  135. package/build/src/install/index.js +18 -16
  136. package/build/src/install/index.js.map +1 -1
  137. package/build/src/install/installAsync.js +32 -26
  138. package/build/src/install/installAsync.js.map +1 -1
  139. package/build/src/install/installExpoPackage.js +22 -18
  140. package/build/src/install/installExpoPackage.js.map +1 -1
  141. package/build/src/install/resolveOptions.js +21 -19
  142. package/build/src/install/resolveOptions.js.map +1 -1
  143. package/build/src/install/utils/autoAddConfigPlugins.js +18 -14
  144. package/build/src/install/utils/autoAddConfigPlugins.js.map +1 -1
  145. package/build/src/install/utils/checkPackagesCompatibility.js +14 -12
  146. package/build/src/install/utils/checkPackagesCompatibility.js.map +1 -1
  147. package/build/src/lint/ESlintPrerequisite.js +50 -44
  148. package/build/src/lint/ESlintPrerequisite.js.map +1 -1
  149. package/build/src/lint/index.js +12 -8
  150. package/build/src/lint/index.js.map +1 -1
  151. package/build/src/lint/lintAsync.js +10 -8
  152. package/build/src/lint/lintAsync.js.map +1 -1
  153. package/build/src/log.js +36 -16
  154. package/build/src/log.js.map +1 -1
  155. package/build/src/login/index.js +24 -20
  156. package/build/src/login/index.js.map +1 -1
  157. package/build/src/logout/index.js +11 -7
  158. package/build/src/logout/index.js.map +1 -1
  159. package/build/src/prebuild/clearNativeFolder.js +38 -26
  160. package/build/src/prebuild/clearNativeFolder.js.map +1 -1
  161. package/build/src/prebuild/configureProjectAsync.js +18 -14
  162. package/build/src/prebuild/configureProjectAsync.js.map +1 -1
  163. package/build/src/prebuild/copyTemplateFiles.js +17 -13
  164. package/build/src/prebuild/copyTemplateFiles.js.map +1 -1
  165. package/build/src/prebuild/ensureConfigAsync.js +6 -4
  166. package/build/src/prebuild/ensureConfigAsync.js.map +1 -1
  167. package/build/src/prebuild/index.js +36 -32
  168. package/build/src/prebuild/index.js.map +1 -1
  169. package/build/src/prebuild/prebuildAsync.js +29 -25
  170. package/build/src/prebuild/prebuildAsync.js.map +1 -1
  171. package/build/src/prebuild/renameTemplateAppName.js +43 -37
  172. package/build/src/prebuild/renameTemplateAppName.js.map +1 -1
  173. package/build/src/prebuild/resolveOptions.js +70 -53
  174. package/build/src/prebuild/resolveOptions.js.map +1 -1
  175. package/build/src/prebuild/resolveTemplate.js +36 -32
  176. package/build/src/prebuild/resolveTemplate.js.map +1 -1
  177. package/build/src/prebuild/updateFromTemplate.js +19 -13
  178. package/build/src/prebuild/updateFromTemplate.js.map +1 -1
  179. package/build/src/prebuild/updatePackageJson.js +53 -39
  180. package/build/src/prebuild/updatePackageJson.js.map +1 -1
  181. package/build/src/prebuild/validateTemplatePlatforms.js +12 -8
  182. package/build/src/prebuild/validateTemplatePlatforms.js.map +1 -1
  183. package/build/src/register/index.js +11 -7
  184. package/build/src/register/index.js.map +1 -1
  185. package/build/src/register/registerAsync.js +5 -3
  186. package/build/src/register/registerAsync.js.map +1 -1
  187. package/build/src/run/android/index.js +36 -32
  188. package/build/src/run/android/index.js.map +1 -1
  189. package/build/src/run/android/resolveDevice.js +10 -8
  190. package/build/src/run/android/resolveDevice.js.map +1 -1
  191. package/build/src/run/android/resolveGradlePropsAsync.js +18 -16
  192. package/build/src/run/android/resolveGradlePropsAsync.js.map +1 -1
  193. package/build/src/run/android/resolveInstallApkName.js +17 -15
  194. package/build/src/run/android/resolveInstallApkName.js.map +1 -1
  195. package/build/src/run/android/resolveLaunchProps.js +12 -10
  196. package/build/src/run/android/resolveLaunchProps.js.map +1 -1
  197. package/build/src/run/android/resolveOptions.js +4 -2
  198. package/build/src/run/android/resolveOptions.js.map +1 -1
  199. package/build/src/run/android/runAndroidAsync.js +23 -21
  200. package/build/src/run/android/runAndroidAsync.js.map +1 -1
  201. package/build/src/run/ensureNativeProject.js +7 -5
  202. package/build/src/run/ensureNativeProject.js.map +1 -1
  203. package/build/src/run/hints.js +13 -7
  204. package/build/src/run/hints.js.map +1 -1
  205. package/build/src/run/index.js +27 -23
  206. package/build/src/run/index.js.map +1 -1
  207. package/build/src/run/ios/XcodeBuild.js +80 -60
  208. package/build/src/run/ios/XcodeBuild.js.map +1 -1
  209. package/build/src/run/ios/XcodeBuild.types.js.map +1 -1
  210. package/build/src/run/ios/appleDevice/AppleDevice.js +69 -63
  211. package/build/src/run/ios/appleDevice/AppleDevice.js.map +1 -1
  212. package/build/src/run/ios/appleDevice/ClientManager.js +29 -26
  213. package/build/src/run/ios/appleDevice/ClientManager.js.map +1 -1
  214. package/build/src/run/ios/appleDevice/client/AFCClient.js +28 -25
  215. package/build/src/run/ios/appleDevice/client/AFCClient.js.map +1 -1
  216. package/build/src/run/ios/appleDevice/client/DebugserverClient.js +29 -26
  217. package/build/src/run/ios/appleDevice/client/DebugserverClient.js.map +1 -1
  218. package/build/src/run/ios/appleDevice/client/InstallationProxyClient.js +22 -21
  219. package/build/src/run/ios/appleDevice/client/InstallationProxyClient.js.map +1 -1
  220. package/build/src/run/ios/appleDevice/client/LockdowndClient.js +32 -29
  221. package/build/src/run/ios/appleDevice/client/LockdowndClient.js.map +1 -1
  222. package/build/src/run/ios/appleDevice/client/MobileImageMounterClient.js +28 -24
  223. package/build/src/run/ios/appleDevice/client/MobileImageMounterClient.js.map +1 -1
  224. package/build/src/run/ios/appleDevice/client/ServiceClient.js +7 -4
  225. package/build/src/run/ios/appleDevice/client/ServiceClient.js.map +1 -1
  226. package/build/src/run/ios/appleDevice/client/UsbmuxdClient.js +28 -27
  227. package/build/src/run/ios/appleDevice/client/UsbmuxdClient.js.map +1 -1
  228. package/build/src/run/ios/appleDevice/installOnDeviceAsync.js +23 -17
  229. package/build/src/run/ios/appleDevice/installOnDeviceAsync.js.map +1 -1
  230. package/build/src/run/ios/appleDevice/protocol/AFCProtocol.js +146 -132
  231. package/build/src/run/ios/appleDevice/protocol/AFCProtocol.js.map +1 -1
  232. package/build/src/run/ios/appleDevice/protocol/AbstractProtocol.js +29 -21
  233. package/build/src/run/ios/appleDevice/protocol/AbstractProtocol.js.map +1 -1
  234. package/build/src/run/ios/appleDevice/protocol/GDBProtocol.js +29 -21
  235. package/build/src/run/ios/appleDevice/protocol/GDBProtocol.js.map +1 -1
  236. package/build/src/run/ios/appleDevice/protocol/LockdownProtocol.js +34 -22
  237. package/build/src/run/ios/appleDevice/protocol/LockdownProtocol.js.map +1 -1
  238. package/build/src/run/ios/appleDevice/protocol/UsbmuxProtocol.js +27 -17
  239. package/build/src/run/ios/appleDevice/protocol/UsbmuxProtocol.js.map +1 -1
  240. package/build/src/run/ios/codeSigning/Security.js +53 -39
  241. package/build/src/run/ios/codeSigning/Security.js.map +1 -1
  242. package/build/src/run/ios/codeSigning/configureCodeSigning.js +13 -9
  243. package/build/src/run/ios/codeSigning/configureCodeSigning.js.map +1 -1
  244. package/build/src/run/ios/codeSigning/resolveCertificateSigningIdentity.js +27 -19
  245. package/build/src/run/ios/codeSigning/resolveCertificateSigningIdentity.js.map +1 -1
  246. package/build/src/run/ios/codeSigning/settings.js +9 -5
  247. package/build/src/run/ios/codeSigning/settings.js.map +1 -1
  248. package/build/src/run/ios/codeSigning/simulatorCodeSigning.js +14 -12
  249. package/build/src/run/ios/codeSigning/simulatorCodeSigning.js.map +1 -1
  250. package/build/src/run/ios/codeSigning/xcodeCodeSigning.js +27 -21
  251. package/build/src/run/ios/codeSigning/xcodeCodeSigning.js.map +1 -1
  252. package/build/src/run/ios/index.js +40 -36
  253. package/build/src/run/ios/index.js.map +1 -1
  254. package/build/src/run/ios/launchApp.js +23 -17
  255. package/build/src/run/ios/launchApp.js.map +1 -1
  256. package/build/src/run/ios/options/appleDestinations.js +38 -36
  257. package/build/src/run/ios/options/appleDestinations.js.map +1 -1
  258. package/build/src/run/ios/options/promptDevice.js +20 -16
  259. package/build/src/run/ios/options/promptDevice.js.map +1 -1
  260. package/build/src/run/ios/options/resolveDevice.js +30 -24
  261. package/build/src/run/ios/options/resolveDevice.js.map +1 -1
  262. package/build/src/run/ios/options/resolveNativeScheme.js +31 -23
  263. package/build/src/run/ios/options/resolveNativeScheme.js.map +1 -1
  264. package/build/src/run/ios/options/resolveOptions.js +7 -5
  265. package/build/src/run/ios/options/resolveOptions.js.map +1 -1
  266. package/build/src/run/ios/options/resolveXcodeProject.js +7 -5
  267. package/build/src/run/ios/options/resolveXcodeProject.js.map +1 -1
  268. package/build/src/run/ios/runIosAsync.js +48 -44
  269. package/build/src/run/ios/runIosAsync.js.map +1 -1
  270. package/build/src/run/ios/validateExternalBinary.js +24 -22
  271. package/build/src/run/ios/validateExternalBinary.js.map +1 -1
  272. package/build/src/run/resolveBundlerProps.js +4 -2
  273. package/build/src/run/resolveBundlerProps.js.map +1 -1
  274. package/build/src/run/startBundler.js +16 -12
  275. package/build/src/run/startBundler.js.map +1 -1
  276. package/build/src/serve/index.js +20 -16
  277. package/build/src/serve/index.js.map +1 -1
  278. package/build/src/serve/serveAsync.js +36 -32
  279. package/build/src/serve/serveAsync.js.map +1 -1
  280. package/build/src/start/detectDevClient.js +13 -9
  281. package/build/src/start/detectDevClient.js.map +1 -1
  282. package/build/src/start/doctor/Prerequisite.js +12 -7
  283. package/build/src/start/doctor/Prerequisite.js.map +1 -1
  284. package/build/src/start/doctor/SecurityBinPrerequisite.js +13 -11
  285. package/build/src/start/doctor/SecurityBinPrerequisite.js.map +1 -1
  286. package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js +23 -19
  287. package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js.map +1 -1
  288. package/build/src/start/doctor/apple/XcodeDeveloperDiskImagePrerequisite.js +23 -19
  289. package/build/src/start/doctor/apple/XcodeDeveloperDiskImagePrerequisite.js.map +1 -1
  290. package/build/src/start/doctor/apple/XcodePrerequisite.js +51 -45
  291. package/build/src/start/doctor/apple/XcodePrerequisite.js.map +1 -1
  292. package/build/src/start/doctor/apple/XcrunPrerequisite.js +18 -16
  293. package/build/src/start/doctor/apple/XcrunPrerequisite.js.map +1 -1
  294. package/build/src/start/doctor/dependencies/bundledNativeModules.js +23 -19
  295. package/build/src/start/doctor/dependencies/bundledNativeModules.js.map +1 -1
  296. package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js +31 -25
  297. package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js.map +1 -1
  298. package/build/src/start/doctor/dependencies/getMissingPackages.js +25 -17
  299. package/build/src/start/doctor/dependencies/getMissingPackages.js.map +1 -1
  300. package/build/src/start/doctor/dependencies/getVersionedPackages.js +40 -32
  301. package/build/src/start/doctor/dependencies/getVersionedPackages.js.map +1 -1
  302. package/build/src/start/doctor/dependencies/resolvePackages.js +32 -26
  303. package/build/src/start/doctor/dependencies/resolvePackages.js.map +1 -1
  304. package/build/src/start/doctor/dependencies/validateDependenciesVersions.js +41 -31
  305. package/build/src/start/doctor/dependencies/validateDependenciesVersions.js.map +1 -1
  306. package/build/src/start/doctor/ngrok/ExternalModule.js +34 -29
  307. package/build/src/start/doctor/ngrok/ExternalModule.js.map +1 -1
  308. package/build/src/start/doctor/ngrok/NgrokResolver.js +12 -8
  309. package/build/src/start/doctor/ngrok/NgrokResolver.js.map +1 -1
  310. package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js +32 -28
  311. package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js.map +1 -1
  312. package/build/src/start/doctor/typescript/updateTSConfig.js +23 -17
  313. package/build/src/start/doctor/typescript/updateTSConfig.js.map +1 -1
  314. package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js +33 -27
  315. package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js.map +1 -1
  316. package/build/src/start/index.js +46 -42
  317. package/build/src/start/index.js.map +1 -1
  318. package/build/src/start/interface/KeyPressHandler.js +18 -14
  319. package/build/src/start/interface/KeyPressHandler.js.map +1 -1
  320. package/build/src/start/interface/commandsTable.js +94 -80
  321. package/build/src/start/interface/commandsTable.js.map +1 -1
  322. package/build/src/start/interface/interactiveActions.js +44 -40
  323. package/build/src/start/interface/interactiveActions.js.map +1 -1
  324. package/build/src/start/interface/startInterface.js +65 -61
  325. package/build/src/start/interface/startInterface.js.map +1 -1
  326. package/build/src/start/platforms/AppIdResolver.js +6 -4
  327. package/build/src/start/platforms/AppIdResolver.js.map +1 -1
  328. package/build/src/start/platforms/DeviceManager.js +10 -6
  329. package/build/src/start/platforms/DeviceManager.js.map +1 -1
  330. package/build/src/start/platforms/ExpoGoInstaller.js +25 -20
  331. package/build/src/start/platforms/ExpoGoInstaller.js.map +1 -1
  332. package/build/src/start/platforms/PlatformManager.js +17 -15
  333. package/build/src/start/platforms/PlatformManager.js.map +1 -1
  334. package/build/src/start/platforms/android/ADBServer.js +39 -35
  335. package/build/src/start/platforms/android/ADBServer.js.map +1 -1
  336. package/build/src/start/platforms/android/AndroidAppIdResolver.js +18 -16
  337. package/build/src/start/platforms/android/AndroidAppIdResolver.js.map +1 -1
  338. package/build/src/start/platforms/android/AndroidDeviceManager.js +24 -20
  339. package/build/src/start/platforms/android/AndroidDeviceManager.js.map +1 -1
  340. package/build/src/start/platforms/android/AndroidPlatformManager.js +17 -17
  341. package/build/src/start/platforms/android/AndroidPlatformManager.js.map +1 -1
  342. package/build/src/start/platforms/android/AndroidSdk.js +11 -9
  343. package/build/src/start/platforms/android/AndroidSdk.js.map +1 -1
  344. package/build/src/start/platforms/android/activateWindow.js +26 -22
  345. package/build/src/start/platforms/android/activateWindow.js.map +1 -1
  346. package/build/src/start/platforms/android/adb.js +121 -83
  347. package/build/src/start/platforms/android/adb.js.map +1 -1
  348. package/build/src/start/platforms/android/adbReverse.js +20 -12
  349. package/build/src/start/platforms/android/adbReverse.js.map +1 -1
  350. package/build/src/start/platforms/android/emulator.js +36 -26
  351. package/build/src/start/platforms/android/emulator.js.map +1 -1
  352. package/build/src/start/platforms/android/getDevices.js +7 -5
  353. package/build/src/start/platforms/android/getDevices.js.map +1 -1
  354. package/build/src/start/platforms/android/gradle.js +36 -28
  355. package/build/src/start/platforms/android/gradle.js.map +1 -1
  356. package/build/src/start/platforms/android/promptAndroidDevice.js +19 -15
  357. package/build/src/start/platforms/android/promptAndroidDevice.js.map +1 -1
  358. package/build/src/start/platforms/ios/AppleAppIdResolver.js +21 -19
  359. package/build/src/start/platforms/ios/AppleAppIdResolver.js.map +1 -1
  360. package/build/src/start/platforms/ios/AppleDeviceManager.js +37 -31
  361. package/build/src/start/platforms/ios/AppleDeviceManager.js.map +1 -1
  362. package/build/src/start/platforms/ios/ApplePlatformManager.js +12 -12
  363. package/build/src/start/platforms/ios/ApplePlatformManager.js.map +1 -1
  364. package/build/src/start/platforms/ios/assertSystemRequirements.js +9 -7
  365. package/build/src/start/platforms/ios/assertSystemRequirements.js.map +1 -1
  366. package/build/src/start/platforms/ios/devicectl.js +88 -74
  367. package/build/src/start/platforms/ios/devicectl.js.map +1 -1
  368. package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js +22 -18
  369. package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js.map +1 -1
  370. package/build/src/start/platforms/ios/getBestSimulator.js +29 -19
  371. package/build/src/start/platforms/ios/getBestSimulator.js.map +1 -1
  372. package/build/src/start/platforms/ios/promptAppleDevice.js +14 -10
  373. package/build/src/start/platforms/ios/promptAppleDevice.js.map +1 -1
  374. package/build/src/start/platforms/ios/simctl.js +102 -74
  375. package/build/src/start/platforms/ios/simctl.js.map +1 -1
  376. package/build/src/start/platforms/ios/simctlLogging.js +57 -52
  377. package/build/src/start/platforms/ios/simctlLogging.js.map +1 -1
  378. package/build/src/start/platforms/ios/xcrun.js +22 -18
  379. package/build/src/start/platforms/ios/xcrun.js.map +1 -1
  380. package/build/src/start/project/devices.js +19 -9
  381. package/build/src/start/project/devices.js.map +1 -1
  382. package/build/src/start/project/dotExpo.js +15 -11
  383. package/build/src/start/project/dotExpo.js.map +1 -1
  384. package/build/src/start/project/settings.js +4 -2
  385. package/build/src/start/project/settings.js.map +1 -1
  386. package/build/src/start/resolveOptions.js +48 -40
  387. package/build/src/start/resolveOptions.js.map +1 -1
  388. package/build/src/start/server/AsyncNgrok.js +55 -51
  389. package/build/src/start/server/AsyncNgrok.js.map +1 -1
  390. package/build/src/start/server/AsyncWsTunnel.js +37 -33
  391. package/build/src/start/server/AsyncWsTunnel.js.map +1 -1
  392. package/build/src/start/server/BundlerDevServer.js +81 -79
  393. package/build/src/start/server/BundlerDevServer.js.map +1 -1
  394. package/build/src/start/server/DevServerManager.js +42 -38
  395. package/build/src/start/server/DevServerManager.js.map +1 -1
  396. package/build/src/start/server/DevToolsPluginManager.js +18 -14
  397. package/build/src/start/server/DevToolsPluginManager.js.map +1 -1
  398. package/build/src/start/server/DevelopmentSession.js +18 -14
  399. package/build/src/start/server/DevelopmentSession.js.map +1 -1
  400. package/build/src/start/server/ReactDevToolsProxy.js +16 -10
  401. package/build/src/start/server/ReactDevToolsProxy.js.map +1 -1
  402. package/build/src/start/server/UrlCreator.js +36 -33
  403. package/build/src/start/server/UrlCreator.js.map +1 -1
  404. package/build/src/start/server/getStaticRenderFunctions.js +30 -22
  405. package/build/src/start/server/getStaticRenderFunctions.js.map +1 -1
  406. package/build/src/start/server/metro/DevToolsPluginWebsocketEndpoint.js +9 -5
  407. package/build/src/start/server/metro/DevToolsPluginWebsocketEndpoint.js.map +1 -1
  408. package/build/src/start/server/metro/MetroBundlerDevServer.js +293 -280
  409. package/build/src/start/server/metro/MetroBundlerDevServer.js.map +1 -1
  410. package/build/src/start/server/metro/MetroTerminalReporter.js +63 -56
  411. package/build/src/start/server/metro/MetroTerminalReporter.js.map +1 -1
  412. package/build/src/start/server/metro/TerminalReporter.js +39 -33
  413. package/build/src/start/server/metro/TerminalReporter.js.map +1 -1
  414. package/build/src/start/server/metro/TerminalReporter.types.js.map +1 -1
  415. package/build/src/start/server/metro/createExpoFallbackResolver.js +13 -11
  416. package/build/src/start/server/metro/createExpoFallbackResolver.js.map +1 -1
  417. package/build/src/start/server/metro/createExpoMetroResolver.js +47 -41
  418. package/build/src/start/server/metro/createExpoMetroResolver.js.map +1 -1
  419. package/build/src/start/server/metro/createJResolver.js +31 -27
  420. package/build/src/start/server/metro/createJResolver.js.map +1 -1
  421. package/build/src/start/server/metro/createServerComponentsMiddleware.js +110 -98
  422. package/build/src/start/server/metro/createServerComponentsMiddleware.js.map +1 -1
  423. package/build/src/start/server/metro/createServerRouteMiddleware.js +34 -30
  424. package/build/src/start/server/metro/createServerRouteMiddleware.js.map +1 -1
  425. package/build/src/start/server/metro/debugging/AtlasPrerequisite.js +13 -11
  426. package/build/src/start/server/metro/debugging/AtlasPrerequisite.js.map +1 -1
  427. package/build/src/start/server/metro/debugging/MessageHandler.js +3 -1
  428. package/build/src/start/server/metro/debugging/MessageHandler.js.map +1 -1
  429. package/build/src/start/server/metro/debugging/attachAtlas.js +26 -22
  430. package/build/src/start/server/metro/debugging/attachAtlas.js.map +1 -1
  431. package/build/src/start/server/metro/debugging/createDebugMiddleware.js +19 -17
  432. package/build/src/start/server/metro/debugging/createDebugMiddleware.js.map +1 -1
  433. package/build/src/start/server/metro/debugging/createHandlersFactory.js +25 -31
  434. package/build/src/start/server/metro/debugging/createHandlersFactory.js.map +1 -1
  435. package/build/src/start/server/metro/debugging/getDebuggerType.js +6 -4
  436. package/build/src/start/server/metro/debugging/getDebuggerType.js.map +1 -1
  437. package/build/src/start/server/metro/debugging/messageHandlers/NetworkResponse.js +14 -8
  438. package/build/src/start/server/metro/debugging/messageHandlers/NetworkResponse.js.map +1 -1
  439. package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerGetPossibleBreakpoints.js +7 -5
  440. package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerGetPossibleBreakpoints.js.map +1 -1
  441. package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerSetBreakpointByUrl.js +8 -6
  442. package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerSetBreakpointByUrl.js.map +1 -1
  443. package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeCallFunctionOn.js +7 -5
  444. package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeCallFunctionOn.js.map +1 -1
  445. package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeEvaluate.js +14 -12
  446. package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeEvaluate.js.map +1 -1
  447. package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeGetProperties.js +14 -10
  448. package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeGetProperties.js.map +1 -1
  449. package/build/src/start/server/metro/debugging/pageIsSupported.js +6 -4
  450. package/build/src/start/server/metro/debugging/pageIsSupported.js.map +1 -1
  451. package/build/src/start/server/metro/debugging/types.js.map +1 -1
  452. package/build/src/start/server/metro/dev-server/createEventSocket.js +18 -16
  453. package/build/src/start/server/metro/dev-server/createEventSocket.js.map +1 -1
  454. package/build/src/start/server/metro/dev-server/createMessageSocket.js +23 -21
  455. package/build/src/start/server/metro/dev-server/createMessageSocket.js.map +1 -1
  456. package/build/src/start/server/metro/dev-server/createMetroMiddleware.js +23 -21
  457. package/build/src/start/server/metro/dev-server/createMetroMiddleware.js.map +1 -1
  458. package/build/src/start/server/metro/dev-server/utils/createSocketBroadcaster.js +4 -2
  459. package/build/src/start/server/metro/dev-server/utils/createSocketBroadcaster.js.map +1 -1
  460. package/build/src/start/server/metro/dev-server/utils/createSocketMap.js +4 -2
  461. package/build/src/start/server/metro/dev-server/utils/createSocketMap.js.map +1 -1
  462. package/build/src/start/server/metro/dev-server/utils/socketMessages.js +8 -4
  463. package/build/src/start/server/metro/dev-server/utils/socketMessages.js.map +1 -1
  464. package/build/src/start/server/metro/externals.js +33 -25
  465. package/build/src/start/server/metro/externals.js.map +1 -1
  466. package/build/src/start/server/metro/fetchRouterManifest.js +28 -12
  467. package/build/src/start/server/metro/fetchRouterManifest.js.map +1 -1
  468. package/build/src/start/server/metro/formatFileCandidates.js +11 -9
  469. package/build/src/start/server/metro/formatFileCandidates.js.map +1 -1
  470. package/build/src/start/server/metro/getCssModulesFromBundler.js +24 -20
  471. package/build/src/start/server/metro/getCssModulesFromBundler.js.map +1 -1
  472. package/build/src/start/server/metro/instantiateMetro.js +87 -81
  473. package/build/src/start/server/metro/instantiateMetro.js.map +1 -1
  474. package/build/src/start/server/metro/log-box/LogBoxLog.js +40 -36
  475. package/build/src/start/server/metro/log-box/LogBoxLog.js.map +1 -1
  476. package/build/src/start/server/metro/log-box/LogBoxSymbolication.js +20 -14
  477. package/build/src/start/server/metro/log-box/LogBoxSymbolication.js.map +1 -1
  478. package/build/src/start/server/metro/log-box/formatProjectFilePath.js +10 -6
  479. package/build/src/start/server/metro/log-box/formatProjectFilePath.js.map +1 -1
  480. package/build/src/start/server/metro/metroErrorInterface.js +88 -78
  481. package/build/src/start/server/metro/metroErrorInterface.js.map +1 -1
  482. package/build/src/start/server/metro/metroErrors.js +8 -4
  483. package/build/src/start/server/metro/metroErrors.js.map +1 -1
  484. package/build/src/start/server/metro/metroPrivateServer.js +9 -7
  485. package/build/src/start/server/metro/metroPrivateServer.js.map +1 -1
  486. package/build/src/start/server/metro/metroVirtualModules.js +10 -8
  487. package/build/src/start/server/metro/metroVirtualModules.js.map +1 -1
  488. package/build/src/start/server/metro/metroWatchTypeScriptFiles.js +24 -22
  489. package/build/src/start/server/metro/metroWatchTypeScriptFiles.js.map +1 -1
  490. package/build/src/start/server/metro/router.js +48 -32
  491. package/build/src/start/server/metro/router.js.map +1 -1
  492. package/build/src/start/server/metro/runServer-fork.js +24 -22
  493. package/build/src/start/server/metro/runServer-fork.js.map +1 -1
  494. package/build/src/start/server/metro/serializeHtml.js +24 -22
  495. package/build/src/start/server/metro/serializeHtml.js.map +1 -1
  496. package/build/src/start/server/metro/symbolicate.js.map +1 -1
  497. package/build/src/start/server/metro/waitForMetroToObserveTypeScriptFile.js +35 -29
  498. package/build/src/start/server/metro/waitForMetroToObserveTypeScriptFile.js.map +1 -1
  499. package/build/src/start/server/metro/withMetroMultiPlatform.js +150 -140
  500. package/build/src/start/server/metro/withMetroMultiPlatform.js.map +1 -1
  501. package/build/src/start/server/metro/withMetroResolvers.js +49 -39
  502. package/build/src/start/server/metro/withMetroResolvers.js.map +1 -1
  503. package/build/src/start/server/middleware/ContextModuleSourceMapsMiddleware.js +8 -6
  504. package/build/src/start/server/middleware/ContextModuleSourceMapsMiddleware.js.map +1 -1
  505. package/build/src/start/server/middleware/CorsMiddleware.js +17 -15
  506. package/build/src/start/server/middleware/CorsMiddleware.js.map +1 -1
  507. package/build/src/start/server/middleware/CreateFileMiddleware.js +32 -31
  508. package/build/src/start/server/middleware/CreateFileMiddleware.js.map +1 -1
  509. package/build/src/start/server/middleware/DevToolsPluginMiddleware.js +22 -19
  510. package/build/src/start/server/middleware/DevToolsPluginMiddleware.js.map +1 -1
  511. package/build/src/start/server/middleware/DomComponentsMiddleware.js +33 -27
  512. package/build/src/start/server/middleware/DomComponentsMiddleware.js.map +1 -1
  513. package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js +61 -57
  514. package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js.map +1 -1
  515. package/build/src/start/server/middleware/ExpoMiddleware.js +15 -9
  516. package/build/src/start/server/middleware/ExpoMiddleware.js.map +1 -1
  517. package/build/src/start/server/middleware/FaviconMiddleware.js +16 -15
  518. package/build/src/start/server/middleware/FaviconMiddleware.js.map +1 -1
  519. package/build/src/start/server/middleware/HistoryFallbackMiddleware.js +4 -2
  520. package/build/src/start/server/middleware/HistoryFallbackMiddleware.js.map +1 -1
  521. package/build/src/start/server/middleware/InterstitialPageMiddleware.js +34 -31
  522. package/build/src/start/server/middleware/InterstitialPageMiddleware.js.map +1 -1
  523. package/build/src/start/server/middleware/ManifestMiddleware.js +64 -56
  524. package/build/src/start/server/middleware/ManifestMiddleware.js.map +1 -1
  525. package/build/src/start/server/middleware/ReactDevToolsPageMiddleware.js +23 -19
  526. package/build/src/start/server/middleware/ReactDevToolsPageMiddleware.js.map +1 -1
  527. package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js +20 -19
  528. package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js.map +1 -1
  529. package/build/src/start/server/middleware/ServeStaticMiddleware.js +11 -9
  530. package/build/src/start/server/middleware/ServeStaticMiddleware.js.map +1 -1
  531. package/build/src/start/server/middleware/createBuiltinAPIRequestHandler.js +17 -11
  532. package/build/src/start/server/middleware/createBuiltinAPIRequestHandler.js.map +1 -1
  533. package/build/src/start/server/middleware/inspector/CdpClient.js +12 -10
  534. package/build/src/start/server/middleware/inspector/CdpClient.js.map +1 -1
  535. package/build/src/start/server/middleware/inspector/JsInspector.js +35 -27
  536. package/build/src/start/server/middleware/inspector/JsInspector.js.map +1 -1
  537. package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js +21 -19
  538. package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js.map +1 -1
  539. package/build/src/start/server/middleware/inspector/middlwareMutations.js +6 -2
  540. package/build/src/start/server/middleware/inspector/middlwareMutations.js.map +1 -1
  541. package/build/src/start/server/middleware/metroOptions.js +120 -96
  542. package/build/src/start/server/middleware/metroOptions.js.map +1 -1
  543. package/build/src/start/server/middleware/mutations.js +7 -3
  544. package/build/src/start/server/middleware/mutations.js.map +1 -1
  545. package/build/src/start/server/middleware/resolveAssets.js +26 -18
  546. package/build/src/start/server/middleware/resolveAssets.js.map +1 -1
  547. package/build/src/start/server/middleware/resolvePlatform.js +23 -15
  548. package/build/src/start/server/middleware/resolvePlatform.js.map +1 -1
  549. package/build/src/start/server/middleware/resolveRuntimeVersionWithExpoUpdatesAsync.js +11 -9
  550. package/build/src/start/server/middleware/resolveRuntimeVersionWithExpoUpdatesAsync.js.map +1 -1
  551. package/build/src/start/server/middleware/server.types.js.map +1 -1
  552. package/build/src/start/server/openPlatforms.js +10 -8
  553. package/build/src/start/server/openPlatforms.js.map +1 -1
  554. package/build/src/start/server/platformBundlers.js +13 -11
  555. package/build/src/start/server/platformBundlers.js.map +1 -1
  556. package/build/src/start/server/serverLogLikeMetro.js +58 -50
  557. package/build/src/start/server/serverLogLikeMetro.js.map +1 -1
  558. package/build/src/start/server/type-generation/expo-env.js +11 -7
  559. package/build/src/start/server/type-generation/expo-env.js.map +1 -1
  560. package/build/src/start/server/type-generation/routes.js +72 -50
  561. package/build/src/start/server/type-generation/routes.js.map +1 -1
  562. package/build/src/start/server/type-generation/startTypescriptTypeGeneration.js +21 -19
  563. package/build/src/start/server/type-generation/startTypescriptTypeGeneration.js.map +1 -1
  564. package/build/src/start/server/type-generation/tsconfig.js +36 -28
  565. package/build/src/start/server/type-generation/tsconfig.js.map +1 -1
  566. package/build/src/start/server/webTemplate.js +28 -24
  567. package/build/src/start/server/webTemplate.js.map +1 -1
  568. package/build/src/start/server/webpack/WebpackBundlerDevServer.js +52 -46
  569. package/build/src/start/server/webpack/WebpackBundlerDevServer.js.map +1 -1
  570. package/build/src/start/server/webpack/compile.js +15 -11
  571. package/build/src/start/server/webpack/compile.js.map +1 -1
  572. package/build/src/start/server/webpack/formatWebpackMessages.js +28 -26
  573. package/build/src/start/server/webpack/formatWebpackMessages.js.map +1 -1
  574. package/build/src/start/server/webpack/resolveFromProject.js +18 -12
  575. package/build/src/start/server/webpack/resolveFromProject.js.map +1 -1
  576. package/build/src/start/server/webpack/tls.js +18 -12
  577. package/build/src/start/server/webpack/tls.js.map +1 -1
  578. package/build/src/start/startAsync.js +31 -27
  579. package/build/src/start/startAsync.js.map +1 -1
  580. package/build/src/utils/FileNotifier.js +20 -17
  581. package/build/src/utils/FileNotifier.js.map +1 -1
  582. package/build/src/utils/ansi.js +7 -5
  583. package/build/src/utils/ansi.js.map +1 -1
  584. package/build/src/utils/args.js +24 -14
  585. package/build/src/utils/args.js.map +1 -1
  586. package/build/src/utils/array.js +18 -6
  587. package/build/src/utils/array.js.map +1 -1
  588. package/build/src/utils/cocoapods.js +54 -46
  589. package/build/src/utils/cocoapods.js.map +1 -1
  590. package/build/src/utils/codesigning.js +79 -69
  591. package/build/src/utils/codesigning.js.map +1 -1
  592. package/build/src/utils/createFileTransform.js +16 -12
  593. package/build/src/utils/createFileTransform.js.map +1 -1
  594. package/build/src/utils/createTempPath.js +12 -8
  595. package/build/src/utils/createTempPath.js.map +1 -1
  596. package/build/src/utils/delay.js +12 -6
  597. package/build/src/utils/delay.js.map +1 -1
  598. package/build/src/utils/dir.js +40 -22
  599. package/build/src/utils/dir.js.map +1 -1
  600. package/build/src/utils/downloadAppAsync.js +10 -8
  601. package/build/src/utils/downloadAppAsync.js.map +1 -1
  602. package/build/src/utils/downloadExpoGoAsync.js +27 -23
  603. package/build/src/utils/downloadExpoGoAsync.js.map +1 -1
  604. package/build/src/utils/editor.js +41 -35
  605. package/build/src/utils/editor.js.map +1 -1
  606. package/build/src/utils/env.js +63 -59
  607. package/build/src/utils/env.js.map +1 -1
  608. package/build/src/utils/errors.js +37 -30
  609. package/build/src/utils/errors.js.map +1 -1
  610. package/build/src/utils/exit.js +35 -31
  611. package/build/src/utils/exit.js.map +1 -1
  612. package/build/src/utils/expoUpdatesCli.js +32 -22
  613. package/build/src/utils/expoUpdatesCli.js.map +1 -1
  614. package/build/src/utils/fetch.js +8 -4
  615. package/build/src/utils/fetch.js.map +1 -1
  616. package/build/src/utils/filePath.js +10 -6
  617. package/build/src/utils/filePath.js.map +1 -1
  618. package/build/src/utils/findUp.js +13 -9
  619. package/build/src/utils/findUp.js.map +1 -1
  620. package/build/src/utils/fn.js +6 -2
  621. package/build/src/utils/fn.js.map +1 -1
  622. package/build/src/utils/getOrPromptApplicationId.js +41 -35
  623. package/build/src/utils/getOrPromptApplicationId.js.map +1 -1
  624. package/build/src/utils/getRunningProcess.js +29 -21
  625. package/build/src/utils/getRunningProcess.js.map +1 -1
  626. package/build/src/utils/git.js +26 -20
  627. package/build/src/utils/git.js.map +1 -1
  628. package/build/src/utils/glob.js +8 -4
  629. package/build/src/utils/glob.js.map +1 -1
  630. package/build/src/utils/interactive.js +3 -1
  631. package/build/src/utils/interactive.js.map +1 -1
  632. package/build/src/utils/ip.js +21 -19
  633. package/build/src/utils/ip.js.map +1 -1
  634. package/build/src/utils/isModuleSymlinked.js +11 -9
  635. package/build/src/utils/isModuleSymlinked.js.map +1 -1
  636. package/build/src/utils/jsonSchemaDeref.js +20 -18
  637. package/build/src/utils/jsonSchemaDeref.js.map +1 -1
  638. package/build/src/utils/link.js +17 -13
  639. package/build/src/utils/link.js.map +1 -1
  640. package/build/src/utils/mergeGitIgnorePaths.js +46 -28
  641. package/build/src/utils/mergeGitIgnorePaths.js.map +1 -1
  642. package/build/src/utils/modifyConfigAsync.js +16 -10
  643. package/build/src/utils/modifyConfigAsync.js.map +1 -1
  644. package/build/src/utils/modifyConfigPlugins.js +10 -6
  645. package/build/src/utils/modifyConfigPlugins.js.map +1 -1
  646. package/build/src/utils/multipartMixed.js +13 -11
  647. package/build/src/utils/multipartMixed.js.map +1 -1
  648. package/build/src/utils/nodeEnv.js +12 -6
  649. package/build/src/utils/nodeEnv.js.map +1 -1
  650. package/build/src/utils/nodeModules.js +10 -8
  651. package/build/src/utils/nodeModules.js.map +1 -1
  652. package/build/src/utils/npm.js +49 -35
  653. package/build/src/utils/npm.js.map +1 -1
  654. package/build/src/utils/obj.js +11 -5
  655. package/build/src/utils/obj.js.map +1 -1
  656. package/build/src/utils/open.js +10 -8
  657. package/build/src/utils/open.js.map +1 -1
  658. package/build/src/utils/ora.js +13 -7
  659. package/build/src/utils/ora.js.map +1 -1
  660. package/build/src/utils/plist.js +21 -15
  661. package/build/src/utils/plist.js.map +1 -1
  662. package/build/src/utils/port.js +43 -33
  663. package/build/src/utils/port.js.map +1 -1
  664. package/build/src/utils/profile.js +11 -7
  665. package/build/src/utils/profile.js.map +1 -1
  666. package/build/src/utils/progress.js +11 -5
  667. package/build/src/utils/progress.js.map +1 -1
  668. package/build/src/utils/prompts.js +47 -29
  669. package/build/src/utils/prompts.js.map +1 -1
  670. package/build/src/utils/resolveArgs.js +36 -24
  671. package/build/src/utils/resolveArgs.js.map +1 -1
  672. package/build/src/utils/scheme.js +40 -32
  673. package/build/src/utils/scheme.js.map +1 -1
  674. package/build/src/utils/stream.js +5 -3
  675. package/build/src/utils/stream.js.map +1 -1
  676. package/build/src/utils/strings.js +6 -4
  677. package/build/src/utils/strings.js.map +1 -1
  678. package/build/src/utils/tar.js +18 -14
  679. package/build/src/utils/tar.js.map +1 -1
  680. package/build/src/utils/telemetry/Telemetry.js +29 -27
  681. package/build/src/utils/telemetry/Telemetry.js.map +1 -1
  682. package/build/src/utils/telemetry/clients/FetchClient.js +15 -13
  683. package/build/src/utils/telemetry/clients/FetchClient.js.map +1 -1
  684. package/build/src/utils/telemetry/clients/FetchDetachedClient.js +26 -22
  685. package/build/src/utils/telemetry/clients/FetchDetachedClient.js.map +1 -1
  686. package/build/src/utils/telemetry/clients/flushFetchDetached.js +10 -10
  687. package/build/src/utils/telemetry/clients/flushFetchDetached.js.map +1 -1
  688. package/build/src/utils/telemetry/events.js +4 -2
  689. package/build/src/utils/telemetry/events.js.map +1 -1
  690. package/build/src/utils/telemetry/index.js +25 -29
  691. package/build/src/utils/telemetry/index.js.map +1 -1
  692. package/build/src/utils/telemetry/types.js.map +1 -1
  693. package/build/src/utils/telemetry/utils/constants.js +8 -4
  694. package/build/src/utils/telemetry/utils/constants.js.map +1 -1
  695. package/build/src/utils/telemetry/utils/context.js +18 -14
  696. package/build/src/utils/telemetry/utils/context.js.map +1 -1
  697. package/build/src/utils/template.js +6 -4
  698. package/build/src/utils/template.js.map +1 -1
  699. package/build/src/utils/terminal.js +4 -2
  700. package/build/src/utils/terminal.js.map +1 -1
  701. package/build/src/utils/tsconfig/evaluateTsConfig.js +21 -17
  702. package/build/src/utils/tsconfig/evaluateTsConfig.js.map +1 -1
  703. package/build/src/utils/tsconfig/loadTsConfigPaths.js +18 -14
  704. package/build/src/utils/tsconfig/loadTsConfigPaths.js.map +1 -1
  705. package/build/src/utils/tsconfig/matchTsConfigPathAlias.js +7 -5
  706. package/build/src/utils/tsconfig/matchTsConfigPathAlias.js.map +1 -1
  707. package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js +14 -12
  708. package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js.map +1 -1
  709. package/build/src/utils/url.js +23 -13
  710. package/build/src/utils/url.js.map +1 -1
  711. package/build/src/utils/validateApplicationId.js +108 -86
  712. package/build/src/utils/validateApplicationId.js.map +1 -1
  713. package/build/src/utils/variadic.js +22 -16
  714. package/build/src/utils/variadic.js.map +1 -1
  715. package/build/src/whoami/index.js +11 -7
  716. package/build/src/whoami/index.js.map +1 -1
  717. package/build/src/whoami/whoamiAsync.js +11 -7
  718. package/build/src/whoami/whoamiAsync.js.map +1 -1
  719. package/package.json +17 -16
@@ -4,24 +4,26 @@ Object.defineProperty(exports, "__esModule", {
4
4
  });
5
5
  Object.defineProperty(exports, "ExpoGoInstaller", {
6
6
  enumerable: true,
7
- get: ()=>ExpoGoInstaller
7
+ get: function() {
8
+ return ExpoGoInstaller;
9
+ }
8
10
  });
9
11
  function _semver() {
10
- const data = /*#__PURE__*/ _interopRequireDefault(require("semver"));
12
+ const data = /*#__PURE__*/ _interop_require_default(require("semver"));
11
13
  _semver = function() {
12
14
  return data;
13
15
  };
14
16
  return data;
15
17
  }
16
18
  const _getVersions = require("../../api/getVersions");
17
- const _log = /*#__PURE__*/ _interopRequireWildcard(require("../../log"));
19
+ const _log = /*#__PURE__*/ _interop_require_wildcard(require("../../log"));
18
20
  const _downloadExpoGoAsync = require("../../utils/downloadExpoGoAsync");
19
21
  const _env = require("../../utils/env");
20
22
  const _errors = require("../../utils/errors");
21
23
  const _link = require("../../utils/link");
22
24
  const _ora = require("../../utils/ora");
23
25
  const _prompts = require("../../utils/prompts");
24
- function _interopRequireDefault(obj) {
26
+ function _interop_require_default(obj) {
25
27
  return obj && obj.__esModule ? obj : {
26
28
  default: obj
27
29
  };
@@ -34,7 +36,7 @@ function _getRequireWildcardCache(nodeInterop) {
34
36
  return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
35
37
  })(nodeInterop);
36
38
  }
37
- function _interopRequireWildcard(obj, nodeInterop) {
39
+ function _interop_require_wildcard(obj, nodeInterop) {
38
40
  if (!nodeInterop && obj && obj.__esModule) {
39
41
  return obj;
40
42
  }
@@ -47,7 +49,9 @@ function _interopRequireWildcard(obj, nodeInterop) {
47
49
  if (cache && cache.has(obj)) {
48
50
  return cache.get(obj);
49
51
  }
50
- var newObj = {};
52
+ var newObj = {
53
+ __proto__: null
54
+ };
51
55
  var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
52
56
  for(var key in obj){
53
57
  if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
@@ -65,12 +69,13 @@ function _interopRequireWildcard(obj, nodeInterop) {
65
69
  }
66
70
  return newObj;
67
71
  }
68
- const debug = require("debug")("expo:utils:ExpoGoInstaller");
72
+ const debug = require('debug')('expo:utils:ExpoGoInstaller');
69
73
  class ExpoGoInstaller {
70
- // Keep a list of [platform-deviceId] so we can prevent asking multiple times if a user wants to upgrade.
74
+ static #_ = // Keep a list of [platform-deviceId] so we can prevent asking multiple times if a user wants to upgrade.
71
75
  // This can prevent annoying interactions when they don't want to upgrade for whatever reason.
72
- static cache = {};
73
- constructor(platform, appId, sdkVersion){
76
+ this.cache = {};
77
+ constructor(platform, // Ultimately this should be inlined since we know the platform.
78
+ appId, sdkVersion){
74
79
  this.platform = platform;
75
80
  this.appId = appId;
76
81
  this.sdkVersion = sdkVersion;
@@ -83,17 +88,17 @@ class ExpoGoInstaller {
83
88
  return expectedExpoGoVersion ? !_semver().default.eq(installedVersion, expectedExpoGoVersion) : true;
84
89
  }
85
90
  /** Returns the expected version of Expo Go given the project SDK Version. Exposed for testing. */ async getExpectedExpoGoClientVersionAsync() {
86
- var ref, ref1;
91
+ var _versions_sdkVersions_this_sdkVersion, _versions_sdkVersions;
87
92
  const versions = await (0, _getVersions.getVersionsAsync)();
88
93
  // Like `sdkVersions['44.0.0']['androidClientVersion'] = '1.0.0'`
89
- const specificVersion = versions == null ? void 0 : (ref = versions.sdkVersions) == null ? void 0 : (ref1 = ref[this.sdkVersion]) == null ? void 0 : ref1[`${this.platform}ClientVersion`];
94
+ const specificVersion = versions == null ? void 0 : (_versions_sdkVersions = versions.sdkVersions) == null ? void 0 : (_versions_sdkVersions_this_sdkVersion = _versions_sdkVersions[this.sdkVersion]) == null ? void 0 : _versions_sdkVersions_this_sdkVersion[`${this.platform}ClientVersion`];
90
95
  const latestVersion = versions[`${this.platform}Version`];
91
96
  return specificVersion ?? latestVersion ?? null;
92
97
  }
93
- /** Returns a boolean indicating if Expo Go should be installed. Returns `true` if the app was uninstalled. */ async promptForUninstallExpoGoIfInstalledClientVersionMismatchedAndReturnShouldInstallAsync(deviceManager, { containerPath } = {}) {
98
+ /** Returns a boolean indicating if Expo Go should be installed. Returns `true` if the app was uninstalled. */ async promptForUninstallExpoGoIfInstalledClientVersionMismatchedAndReturnShouldInstallAsync(deviceManager, { containerPath } = {}) {
94
99
  const cacheId = `${this.platform}-${deviceManager.identifier}`;
95
100
  if (ExpoGoInstaller.cache[cacheId]) {
96
- debug("skipping subsequent upgrade check");
101
+ debug('skipping subsequent upgrade check');
97
102
  return false;
98
103
  }
99
104
  ExpoGoInstaller.cache[cacheId] = true;
@@ -101,10 +106,10 @@ class ExpoGoInstaller {
101
106
  deviceManager.getAppVersionAsync(this.appId, {
102
107
  containerPath
103
108
  }),
104
- this.getExpectedExpoGoClientVersionAsync(),
109
+ this.getExpectedExpoGoClientVersionAsync()
105
110
  ]);
106
111
  if (this.isInstalledClientVersionMismatched(installedExpoGoVersion, expectedExpoGoVersion)) {
107
- if (this.sdkVersion === "UNVERSIONED") {
112
+ if (this.sdkVersion === 'UNVERSIONED') {
108
113
  // This should only happen in the expo/expo repo, e.g. `apps/test-suite`
109
114
  _log.log(`Skipping Expo Go upgrade check for UNVERSIONED project. Manually ensure the Expo Go app is built from source.`);
110
115
  return false;
@@ -112,11 +117,11 @@ class ExpoGoInstaller {
112
117
  // Only prompt once per device, per run.
113
118
  const confirm = await (0, _prompts.confirmAsync)({
114
119
  initial: true,
115
- message: `Expo Go ${expectedExpoGoVersion} is recommended for SDK ${this.sdkVersion} (${deviceManager.name} is using ${installedExpoGoVersion}). ${(0, _link.learnMore)("https://docs.expo.dev/get-started/expo-go/#sdk-versions")}. Install the recommended Expo Go version?`
120
+ message: `Expo Go ${expectedExpoGoVersion} is recommended for SDK ${this.sdkVersion} (${deviceManager.name} is using ${installedExpoGoVersion}). ${(0, _link.learnMore)('https://docs.expo.dev/get-started/expo-go/#sdk-versions')}. Install the recommended Expo Go version?`
116
121
  });
117
122
  if (confirm) {
118
123
  // Don't need to uninstall to update on iOS.
119
- if (this.platform !== "ios") {
124
+ if (this.platform !== 'ios') {
120
125
  _log.log(`Uninstalling Expo Go from ${this.platform} device ${deviceManager.name}.`);
121
126
  await deviceManager.uninstallAppAsync(this.appId);
122
127
  }
@@ -133,12 +138,12 @@ class ExpoGoInstaller {
133
138
  _log.warn(`Skipping Expo Go version validation in offline mode`);
134
139
  return false;
135
140
  }
136
- 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).`);
141
+ 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).`);
137
142
  }
138
143
  if (isExpoGoInstalledAndIfSoContainerPathForIOS) {
139
144
  shouldInstall = await this.promptForUninstallExpoGoIfInstalledClientVersionMismatchedAndReturnShouldInstallAsync(deviceManager, {
140
145
  // iOS optimization to prevent duplicate calls to `getContainerPathAsync`.
141
- containerPath: typeof isExpoGoInstalledAndIfSoContainerPathForIOS === "string" ? isExpoGoInstalledAndIfSoContainerPathForIOS : undefined
146
+ containerPath: typeof isExpoGoInstalledAndIfSoContainerPathForIOS === 'string' ? isExpoGoInstalledAndIfSoContainerPathForIOS : undefined
142
147
  });
143
148
  }
144
149
  if (shouldInstall) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/start/platforms/ExpoGoInstaller.ts"],"sourcesContent":["import semver from 'semver';\n\nimport type { DeviceManager } from './DeviceManager';\nimport { getVersionsAsync } from '../../api/getVersions';\nimport * as Log from '../../log';\nimport { downloadExpoGoAsync } from '../../utils/downloadExpoGoAsync';\nimport { env } from '../../utils/env';\nimport { CommandError } from '../../utils/errors';\nimport { learnMore } from '../../utils/link';\nimport { logNewSection } from '../../utils/ora';\nimport { confirmAsync } from '../../utils/prompts';\n\nconst debug = require('debug')('expo:utils:ExpoGoInstaller') as typeof console.log;\n\n/** Given a platform, appId, and sdkVersion, this module will ensure that Expo Go is up-to-date on the provided device. */\nexport class ExpoGoInstaller<IDevice> {\n // Keep a list of [platform-deviceId] so we can prevent asking multiple times if a user wants to upgrade.\n // This can prevent annoying interactions when they don't want to upgrade for whatever reason.\n static cache: Record<string, boolean> = {};\n\n constructor(\n private platform: 'ios' | 'android',\n // Ultimately this should be inlined since we know the platform.\n private appId: string,\n private sdkVersion: string\n ) {}\n\n /** Returns true if the installed app matching the previously provided `appId` is outdated. */\n isInstalledClientVersionMismatched(\n installedVersion: string | null,\n expectedExpoGoVersion: string | null\n ): boolean {\n if (!installedVersion) {\n return true;\n }\n\n debug(\n `Expected Expo Go version: ${expectedExpoGoVersion}, installed version: ${installedVersion}`\n );\n return expectedExpoGoVersion ? !semver.eq(installedVersion, expectedExpoGoVersion) : true;\n }\n\n /** Returns the expected version of Expo Go given the project SDK Version. Exposed for testing. */\n async getExpectedExpoGoClientVersionAsync(): Promise<string | null> {\n const versions = await getVersionsAsync();\n // Like `sdkVersions['44.0.0']['androidClientVersion'] = '1.0.0'`\n const specificVersion =\n versions?.sdkVersions?.[this.sdkVersion]?.[`${this.platform}ClientVersion`];\n const latestVersion = versions[`${this.platform}Version`];\n return specificVersion ?? latestVersion ?? null;\n }\n\n /** Returns a boolean indicating if Expo Go should be installed. Returns `true` if the app was uninstalled. */\n async promptForUninstallExpoGoIfInstalledClientVersionMismatchedAndReturnShouldInstallAsync(\n deviceManager: DeviceManager<IDevice>,\n { containerPath }: { containerPath?: string } = {}\n ): Promise<boolean> {\n const cacheId = `${this.platform}-${deviceManager.identifier}`;\n\n if (ExpoGoInstaller.cache[cacheId]) {\n debug('skipping subsequent upgrade check');\n return false;\n }\n ExpoGoInstaller.cache[cacheId] = true;\n\n const [installedExpoGoVersion, expectedExpoGoVersion] = await Promise.all([\n deviceManager.getAppVersionAsync(this.appId, {\n containerPath,\n }),\n this.getExpectedExpoGoClientVersionAsync(),\n ]);\n\n if (this.isInstalledClientVersionMismatched(installedExpoGoVersion, expectedExpoGoVersion)) {\n if (this.sdkVersion === 'UNVERSIONED') {\n // This should only happen in the expo/expo repo, e.g. `apps/test-suite`\n Log.log(\n `Skipping Expo Go upgrade check for UNVERSIONED project. Manually ensure the Expo Go app is built from source.`\n );\n return false;\n }\n\n // Only prompt once per device, per run.\n const confirm = await confirmAsync({\n initial: true,\n message: `Expo Go ${expectedExpoGoVersion} is recommended for SDK ${this.sdkVersion} (${\n deviceManager.name\n } is using ${installedExpoGoVersion}). ${learnMore(\n 'https://docs.expo.dev/get-started/expo-go/#sdk-versions'\n )}. Install the recommended Expo Go version?`,\n });\n\n if (confirm) {\n // Don't need to uninstall to update on iOS.\n if (this.platform !== 'ios') {\n Log.log(`Uninstalling Expo Go from ${this.platform} device ${deviceManager.name}.`);\n await deviceManager.uninstallAppAsync(this.appId);\n }\n return true;\n }\n }\n return false;\n }\n\n /** Check if a given device has Expo Go installed, if not then download and install it. */\n async ensureAsync(deviceManager: DeviceManager<IDevice>): Promise<boolean> {\n const isExpoGoInstalledAndIfSoContainerPathForIOS =\n await deviceManager.isAppInstalledAndIfSoReturnContainerPathForIOSAsync(this.appId);\n let shouldInstall = !isExpoGoInstalledAndIfSoContainerPathForIOS;\n if (env.EXPO_OFFLINE) {\n if (isExpoGoInstalledAndIfSoContainerPathForIOS) {\n Log.warn(`Skipping Expo Go version validation in offline mode`);\n return false;\n }\n throw new CommandError(\n 'NO_EXPO_GO',\n `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).`\n );\n }\n\n if (isExpoGoInstalledAndIfSoContainerPathForIOS) {\n shouldInstall =\n await this.promptForUninstallExpoGoIfInstalledClientVersionMismatchedAndReturnShouldInstallAsync(\n deviceManager,\n {\n // iOS optimization to prevent duplicate calls to `getContainerPathAsync`.\n containerPath:\n typeof isExpoGoInstalledAndIfSoContainerPathForIOS === 'string'\n ? isExpoGoInstalledAndIfSoContainerPathForIOS\n : undefined,\n }\n );\n }\n\n if (shouldInstall) {\n // Download the Expo Go app from the Expo servers.\n const binaryPath = await downloadExpoGoAsync(this.platform, { sdkVersion: this.sdkVersion });\n // Install the app on the device.\n const ora = logNewSection(`Installing Expo Go on ${deviceManager.name}`);\n try {\n await deviceManager.installAppAsync(binaryPath);\n } finally {\n ora.stop();\n }\n return true;\n }\n return false;\n }\n}\n"],"names":["ExpoGoInstaller","debug","require","cache","constructor","platform","appId","sdkVersion","isInstalledClientVersionMismatched","installedVersion","expectedExpoGoVersion","semver","eq","getExpectedExpoGoClientVersionAsync","versions","getVersionsAsync","specificVersion","sdkVersions","latestVersion","promptForUninstallExpoGoIfInstalledClientVersionMismatchedAndReturnShouldInstallAsync","deviceManager","containerPath","cacheId","identifier","installedExpoGoVersion","Promise","all","getAppVersionAsync","Log","log","confirm","confirmAsync","initial","message","name","learnMore","uninstallAppAsync","ensureAsync","isExpoGoInstalledAndIfSoContainerPathForIOS","isAppInstalledAndIfSoReturnContainerPathForIOSAsync","shouldInstall","env","EXPO_OFFLINE","warn","CommandError","undefined","binaryPath","downloadExpoGoAsync","ora","logNewSection","installAppAsync","stop"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/start/platforms/ExpoGoInstaller.ts"],"sourcesContent":["import semver from 'semver';\n\nimport type { DeviceManager } from './DeviceManager';\nimport { getVersionsAsync } from '../../api/getVersions';\nimport * as Log from '../../log';\nimport { downloadExpoGoAsync } from '../../utils/downloadExpoGoAsync';\nimport { env } from '../../utils/env';\nimport { CommandError } from '../../utils/errors';\nimport { learnMore } from '../../utils/link';\nimport { logNewSection } from '../../utils/ora';\nimport { confirmAsync } from '../../utils/prompts';\n\nconst debug = require('debug')('expo:utils:ExpoGoInstaller') as typeof console.log;\n\n/** Given a platform, appId, and sdkVersion, this module will ensure that Expo Go is up-to-date on the provided device. */\nexport class ExpoGoInstaller<IDevice> {\n // Keep a list of [platform-deviceId] so we can prevent asking multiple times if a user wants to upgrade.\n // This can prevent annoying interactions when they don't want to upgrade for whatever reason.\n static cache: Record<string, boolean> = {};\n\n constructor(\n private platform: 'ios' | 'android',\n // Ultimately this should be inlined since we know the platform.\n private appId: string,\n private sdkVersion: string\n ) {}\n\n /** Returns true if the installed app matching the previously provided `appId` is outdated. */\n isInstalledClientVersionMismatched(\n installedVersion: string | null,\n expectedExpoGoVersion: string | null\n ): boolean {\n if (!installedVersion) {\n return true;\n }\n\n debug(\n `Expected Expo Go version: ${expectedExpoGoVersion}, installed version: ${installedVersion}`\n );\n return expectedExpoGoVersion ? !semver.eq(installedVersion, expectedExpoGoVersion) : true;\n }\n\n /** Returns the expected version of Expo Go given the project SDK Version. Exposed for testing. */\n async getExpectedExpoGoClientVersionAsync(): Promise<string | null> {\n const versions = await getVersionsAsync();\n // Like `sdkVersions['44.0.0']['androidClientVersion'] = '1.0.0'`\n const specificVersion =\n versions?.sdkVersions?.[this.sdkVersion]?.[`${this.platform}ClientVersion`];\n const latestVersion = versions[`${this.platform}Version`];\n return specificVersion ?? latestVersion ?? null;\n }\n\n /** Returns a boolean indicating if Expo Go should be installed. Returns `true` if the app was uninstalled. */\n async promptForUninstallExpoGoIfInstalledClientVersionMismatchedAndReturnShouldInstallAsync(\n deviceManager: DeviceManager<IDevice>,\n { containerPath }: { containerPath?: string } = {}\n ): Promise<boolean> {\n const cacheId = `${this.platform}-${deviceManager.identifier}`;\n\n if (ExpoGoInstaller.cache[cacheId]) {\n debug('skipping subsequent upgrade check');\n return false;\n }\n ExpoGoInstaller.cache[cacheId] = true;\n\n const [installedExpoGoVersion, expectedExpoGoVersion] = await Promise.all([\n deviceManager.getAppVersionAsync(this.appId, {\n containerPath,\n }),\n this.getExpectedExpoGoClientVersionAsync(),\n ]);\n\n if (this.isInstalledClientVersionMismatched(installedExpoGoVersion, expectedExpoGoVersion)) {\n if (this.sdkVersion === 'UNVERSIONED') {\n // This should only happen in the expo/expo repo, e.g. `apps/test-suite`\n Log.log(\n `Skipping Expo Go upgrade check for UNVERSIONED project. Manually ensure the Expo Go app is built from source.`\n );\n return false;\n }\n\n // Only prompt once per device, per run.\n const confirm = await confirmAsync({\n initial: true,\n message: `Expo Go ${expectedExpoGoVersion} is recommended for SDK ${this.sdkVersion} (${\n deviceManager.name\n } is using ${installedExpoGoVersion}). ${learnMore(\n 'https://docs.expo.dev/get-started/expo-go/#sdk-versions'\n )}. Install the recommended Expo Go version?`,\n });\n\n if (confirm) {\n // Don't need to uninstall to update on iOS.\n if (this.platform !== 'ios') {\n Log.log(`Uninstalling Expo Go from ${this.platform} device ${deviceManager.name}.`);\n await deviceManager.uninstallAppAsync(this.appId);\n }\n return true;\n }\n }\n return false;\n }\n\n /** Check if a given device has Expo Go installed, if not then download and install it. */\n async ensureAsync(deviceManager: DeviceManager<IDevice>): Promise<boolean> {\n const isExpoGoInstalledAndIfSoContainerPathForIOS =\n await deviceManager.isAppInstalledAndIfSoReturnContainerPathForIOSAsync(this.appId);\n let shouldInstall = !isExpoGoInstalledAndIfSoContainerPathForIOS;\n if (env.EXPO_OFFLINE) {\n if (isExpoGoInstalledAndIfSoContainerPathForIOS) {\n Log.warn(`Skipping Expo Go version validation in offline mode`);\n return false;\n }\n throw new CommandError(\n 'NO_EXPO_GO',\n `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).`\n );\n }\n\n if (isExpoGoInstalledAndIfSoContainerPathForIOS) {\n shouldInstall =\n await this.promptForUninstallExpoGoIfInstalledClientVersionMismatchedAndReturnShouldInstallAsync(\n deviceManager,\n {\n // iOS optimization to prevent duplicate calls to `getContainerPathAsync`.\n containerPath:\n typeof isExpoGoInstalledAndIfSoContainerPathForIOS === 'string'\n ? isExpoGoInstalledAndIfSoContainerPathForIOS\n : undefined,\n }\n );\n }\n\n if (shouldInstall) {\n // Download the Expo Go app from the Expo servers.\n const binaryPath = await downloadExpoGoAsync(this.platform, { sdkVersion: this.sdkVersion });\n // Install the app on the device.\n const ora = logNewSection(`Installing Expo Go on ${deviceManager.name}`);\n try {\n await deviceManager.installAppAsync(binaryPath);\n } finally {\n ora.stop();\n }\n return true;\n }\n return false;\n }\n}\n"],"names":["ExpoGoInstaller","debug","require","cache","constructor","platform","appId","sdkVersion","isInstalledClientVersionMismatched","installedVersion","expectedExpoGoVersion","semver","eq","getExpectedExpoGoClientVersionAsync","versions","getVersionsAsync","specificVersion","sdkVersions","latestVersion","promptForUninstallExpoGoIfInstalledClientVersionMismatchedAndReturnShouldInstallAsync","deviceManager","containerPath","cacheId","identifier","installedExpoGoVersion","Promise","all","getAppVersionAsync","Log","log","confirm","confirmAsync","initial","message","name","learnMore","uninstallAppAsync","ensureAsync","isExpoGoInstalledAndIfSoContainerPathForIOS","isAppInstalledAndIfSoReturnContainerPathForIOSAsync","shouldInstall","env","EXPO_OFFLINE","warn","CommandError","undefined","binaryPath","downloadExpoGoAsync","ora","logNewSection","installAppAsync","stop"],"mappings":"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"}
@@ -4,7 +4,9 @@ Object.defineProperty(exports, "__esModule", {
4
4
  });
5
5
  Object.defineProperty(exports, "PlatformManager", {
6
6
  enumerable: true,
7
- get: ()=>PlatformManager
7
+ get: function() {
8
+ return PlatformManager;
9
+ }
8
10
  });
9
11
  function _config() {
10
12
  const data = require("@expo/config");
@@ -14,14 +16,14 @@ function _config() {
14
16
  return data;
15
17
  }
16
18
  function _assert() {
17
- const data = /*#__PURE__*/ _interopRequireDefault(require("assert"));
19
+ const data = /*#__PURE__*/ _interop_require_default(require("assert"));
18
20
  _assert = function() {
19
21
  return data;
20
22
  };
21
23
  return data;
22
24
  }
23
25
  function _chalk() {
24
- const data = /*#__PURE__*/ _interopRequireDefault(require("chalk"));
26
+ const data = /*#__PURE__*/ _interop_require_default(require("chalk"));
25
27
  _chalk = function() {
26
28
  return data;
27
29
  };
@@ -30,12 +32,12 @@ function _chalk() {
30
32
  const _log = require("../../log");
31
33
  const _errors = require("../../utils/errors");
32
34
  const _link = require("../../utils/link");
33
- function _interopRequireDefault(obj) {
35
+ function _interop_require_default(obj) {
34
36
  return obj && obj.__esModule ? obj : {
35
37
  default: obj
36
38
  };
37
39
  }
38
- const debug = require("debug")("expo:start:platforms:platformManager");
40
+ const debug = require('debug')('expo:start:platforms:platformManager');
39
41
  class PlatformManager {
40
42
  constructor(projectRoot, props){
41
43
  this.projectRoot = projectRoot;
@@ -57,7 +59,7 @@ class PlatformManager {
57
59
  try {
58
60
  applicationId = await this._getAppIdResolver().getAppIdAsync();
59
61
  } catch {
60
- _log.Log.warn((0, _chalk().default)`\u203A Launching in Expo Go. If you want to use a ` + `development build, you need to create and install one first, or, if you already ` + (0, _chalk().default)`have a build, add {bold ios.bundleIdentifier} and {bold android.package} to ` + `this project's app config.\n${(0, _link.learnMore)("https://docs.expo.dev/development/build/")}`);
62
+ _log.Log.warn((0, _chalk().default)`\u203A Launching in Expo Go. If you want to use a ` + `development build, you need to create and install one first, or, if you already ` + (0, _chalk().default)`have a build, add {bold ios.bundleIdentifier} and {bold android.package} to ` + `this project's app config.\n${(0, _link.learnMore)('https://docs.expo.dev/development/build/')}`);
61
63
  }
62
64
  if (applicationId) {
63
65
  debug(`Resolving launch URL: (appId: ${applicationId}, redirect URL: ${redirectUrl})`);
@@ -68,7 +70,7 @@ class PlatformManager {
68
70
  } else {
69
71
  // Log a warning if no development build is available on the device, but the
70
72
  // interstitial page would otherwise be opened.
71
- _log.Log.warn((0, _chalk().default)`\u203A The {bold expo-dev-client} package is installed, but a development build is not ` + (0, _chalk().default)`installed on {bold ${deviceManager.name}}.\nLaunching in Expo Go. If you want to use a ` + `development build, you need to create and install one first.\n${(0, _link.learnMore)("https://docs.expo.dev/development/build/")}`);
73
+ _log.Log.warn((0, _chalk().default)`\u203A The {bold expo-dev-client} package is installed, but a development build is not ` + (0, _chalk().default)`installed on {bold ${deviceManager.name}}.\nLaunching in Expo Go. If you want to use a ` + `development build, you need to create and install one first.\n${(0, _link.learnMore)('https://docs.expo.dev/development/build/')}`);
72
74
  }
73
75
  }
74
76
  }
@@ -79,9 +81,9 @@ class PlatformManager {
79
81
  const url = await this.getExpoGoOrCustomRuntimeUrlAsync(deviceManager);
80
82
  deviceManager.logOpeningUrl(url);
81
83
  // TODO: Expensive, we should only do this once.
82
- const { exp } = (0, _config().getConfig)(this.projectRoot);
84
+ const { exp } = (0, _config().getConfig)(this.projectRoot);
83
85
  const sdkVersion = exp.sdkVersion;
84
- (0, _assert().default)(sdkVersion, "sdkVersion should be resolved by getConfig");
86
+ (0, _assert().default)(sdkVersion, 'sdkVersion should be resolved by getConfig');
85
87
  await deviceManager.ensureExpoGoAsync(sdkVersion);
86
88
  deviceManager.activateWindowAsync();
87
89
  await deviceManager.openUrlAsync(url, {
@@ -92,7 +94,7 @@ class PlatformManager {
92
94
  };
93
95
  }
94
96
  async openProjectInCustomRuntimeAsync(resolveSettings = {}, props = {}) {
95
- debug(`open custom (${Object.entries(props).map(([k, v])=>`${k}: ${v}`).join(", ")})`);
97
+ debug(`open custom (${Object.entries(props).map(([k, v])=>`${k}: ${v}`).join(', ')})`);
96
98
  let url = this.props.getCustomRuntimeUrl({
97
99
  scheme: props.scheme
98
100
  });
@@ -102,7 +104,7 @@ class PlatformManager {
102
104
  const applicationId = props.applicationId ?? await this._getAppIdResolver().getAppIdAsync();
103
105
  const deviceManager = await this.props.resolveDeviceAsync(resolveSettings);
104
106
  if (!await deviceManager.isAppInstalledAndIfSoReturnContainerPathForIOSAsync(applicationId)) {
105
- throw new _errors.CommandError(`No development build (${applicationId}) for this project is installed. ` + `Please make and install a development build on the device first.\n${(0, _link.learnMore)("https://docs.expo.dev/development/build/")}`);
107
+ throw new _errors.CommandError(`No development build (${applicationId}) for this project is installed. ` + `Please make and install a development build on the device first.\n${(0, _link.learnMore)('https://docs.expo.dev/development/build/')}`);
106
108
  }
107
109
  if (!url) {
108
110
  url = this._resolveAlternativeLaunchUrl(applicationId, props);
@@ -118,11 +120,11 @@ class PlatformManager {
118
120
  }
119
121
  /** Launch the project on a device given the input runtime. */ async openAsync(options, resolveSettings = {}) {
120
122
  debug(`open (runtime: ${options.runtime}, platform: ${this.props.platform}, device: %O, shouldPrompt: ${resolveSettings.shouldPrompt})`, resolveSettings.device);
121
- if (options.runtime === "expo") {
123
+ if (options.runtime === 'expo') {
122
124
  return this.openProjectInExpoGoAsync(resolveSettings);
123
- } else if (options.runtime === "web") {
125
+ } else if (options.runtime === 'web') {
124
126
  return this.openWebProjectAsync(resolveSettings);
125
- } else if (options.runtime === "custom") {
127
+ } else if (options.runtime === 'custom') {
126
128
  return this.openProjectInCustomRuntimeAsync(resolveSettings, options.props);
127
129
  } else {
128
130
  throw new _errors.CommandError(`Invalid runtime target: ${options.runtime}`);
@@ -130,7 +132,7 @@ class PlatformManager {
130
132
  }
131
133
  /** Open the current web project (Webpack) in a device . */ async openWebProjectAsync(resolveSettings = {}) {
132
134
  const url = this.props.getDevServerUrl();
133
- (0, _assert().default)(url, "Dev server is not running.");
135
+ (0, _assert().default)(url, 'Dev server is not running.');
134
136
  const deviceManager = await this.props.resolveDeviceAsync(resolveSettings);
135
137
  deviceManager.logOpeningUrl(url);
136
138
  await deviceManager.activateWindowAsync();
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/start/platforms/PlatformManager.ts"],"sourcesContent":["import { getConfig } from '@expo/config';\nimport assert from 'assert';\nimport chalk from 'chalk';\n\nimport { AppIdResolver } from './AppIdResolver';\nimport { DeviceManager } from './DeviceManager';\nimport { Log } from '../../log';\nimport { CommandError, UnimplementedError } from '../../utils/errors';\nimport { learnMore } from '../../utils/link';\n\nconst debug = require('debug')('expo:start:platforms:platformManager') as typeof console.log;\n\nexport interface BaseOpenInCustomProps {\n scheme?: string;\n applicationId?: string | null;\n}\n\nexport interface BaseResolveDeviceProps<IDevice> {\n /** Should prompt the user to select a device. */\n shouldPrompt?: boolean;\n /** The target device to use. */\n device?: IDevice;\n}\n\n/** An abstract class for launching a URL on a device. */\nexport class PlatformManager<\n IDevice,\n IOpenInCustomProps extends BaseOpenInCustomProps = BaseOpenInCustomProps,\n IResolveDeviceProps extends BaseResolveDeviceProps<IDevice> = BaseResolveDeviceProps<IDevice>,\n> {\n constructor(\n protected projectRoot: string,\n protected props: {\n platform: 'ios' | 'android';\n /** Get the base URL for the dev server hosting this platform manager. */\n getDevServerUrl: () => string | null;\n /** Expo Go URL. */\n getExpoGoUrl: () => string;\n /**\n * Get redirect URL for native disambiguation.\n * @returns a URL like `http://localhost:8081/_expo/loading`\n */\n getRedirectUrl: () => string | null;\n /** Dev Client */\n getCustomRuntimeUrl: (props?: { scheme?: string }) => string | null;\n /** Resolve a device, this function should automatically handle opening the device and asserting any system validations. */\n resolveDeviceAsync: (\n resolver?: Partial<IResolveDeviceProps>\n ) => Promise<DeviceManager<IDevice>>;\n }\n ) {}\n\n /** Returns the project application identifier or asserts that one is not defined. Exposed for testing. */\n _getAppIdResolver(): AppIdResolver {\n throw new UnimplementedError();\n }\n\n /**\n * Get the URL for users intending to launch the project in Expo Go.\n * The CLI will check if the project has a custom dev client and if the redirect page feature is enabled.\n * If both are true, the CLI will return the redirect page URL.\n */\n protected async getExpoGoOrCustomRuntimeUrlAsync(\n deviceManager: DeviceManager<IDevice>\n ): Promise<string> {\n // Determine if the redirect page feature is enabled first since it's the cheapest to check.\n const redirectUrl = this.props.getRedirectUrl();\n if (redirectUrl) {\n // If the redirect page feature is enabled, check if the project has a resolvable native identifier.\n let applicationId;\n try {\n applicationId = await this._getAppIdResolver().getAppIdAsync();\n } catch {\n Log.warn(\n chalk`\\u203A Launching in Expo Go. If you want to use a ` +\n `development build, you need to create and install one first, or, if you already ` +\n chalk`have a build, add {bold ios.bundleIdentifier} and {bold android.package} to ` +\n `this project's app config.\\n${learnMore('https://docs.expo.dev/development/build/')}`\n );\n }\n if (applicationId) {\n debug(`Resolving launch URL: (appId: ${applicationId}, redirect URL: ${redirectUrl})`);\n // NOTE(EvanBacon): This adds considerable amount of time to the command, we should consider removing or memoizing it.\n // Finally determine if the target device has a custom dev client installed.\n if (\n await deviceManager.isAppInstalledAndIfSoReturnContainerPathForIOSAsync(applicationId)\n ) {\n return redirectUrl;\n } else {\n // Log a warning if no development build is available on the device, but the\n // interstitial page would otherwise be opened.\n Log.warn(\n chalk`\\u203A The {bold expo-dev-client} package is installed, but a development build is not ` +\n chalk`installed on {bold ${deviceManager.name}}.\\nLaunching in Expo Go. If you want to use a ` +\n `development build, you need to create and install one first.\\n${learnMore(\n 'https://docs.expo.dev/development/build/'\n )}`\n );\n }\n }\n }\n\n return this.props.getExpoGoUrl();\n }\n\n protected async openProjectInExpoGoAsync(\n resolveSettings: Partial<IResolveDeviceProps> = {}\n ): Promise<{ url: string }> {\n const deviceManager = await this.props.resolveDeviceAsync(resolveSettings);\n const url = await this.getExpoGoOrCustomRuntimeUrlAsync(deviceManager);\n\n deviceManager.logOpeningUrl(url);\n\n // TODO: Expensive, we should only do this once.\n const { exp } = getConfig(this.projectRoot);\n const sdkVersion = exp.sdkVersion;\n assert(sdkVersion, 'sdkVersion should be resolved by getConfig');\n await deviceManager.ensureExpoGoAsync(sdkVersion);\n\n deviceManager.activateWindowAsync();\n await deviceManager.openUrlAsync(url, { appId: deviceManager.getExpoGoAppId() });\n\n return { url };\n }\n\n protected async openProjectInCustomRuntimeAsync(\n resolveSettings: Partial<IResolveDeviceProps> = {},\n props: Partial<IOpenInCustomProps> = {}\n ): Promise<{ url: string }> {\n debug(\n `open custom (${Object.entries(props)\n .map(([k, v]) => `${k}: ${v}`)\n .join(', ')})`\n );\n\n let url = this.props.getCustomRuntimeUrl({ scheme: props.scheme });\n debug(`Opening project in custom runtime: ${url} -- %O`, props);\n // TODO: It's unclear why we do application id validation when opening with a URL\n // NOTE: But having it enables us to allow the deep link to directly open on iOS simulators without the modal.\n const applicationId = props.applicationId ?? (await this._getAppIdResolver().getAppIdAsync());\n\n const deviceManager = await this.props.resolveDeviceAsync(resolveSettings);\n\n if (!(await deviceManager.isAppInstalledAndIfSoReturnContainerPathForIOSAsync(applicationId))) {\n throw new CommandError(\n `No development build (${applicationId}) for this project is installed. ` +\n `Please make and install a development build on the device first.\\n${learnMore(\n 'https://docs.expo.dev/development/build/'\n )}`\n );\n }\n\n if (!url) {\n url = this._resolveAlternativeLaunchUrl(applicationId, props);\n }\n\n deviceManager.logOpeningUrl(url);\n await deviceManager.activateWindowAsync();\n\n await deviceManager.openUrlAsync(url, {\n appId: applicationId,\n });\n\n return {\n url,\n };\n }\n\n /** Launch the project on a device given the input runtime. */\n async openAsync(\n options:\n | {\n runtime: 'expo' | 'web';\n }\n | {\n runtime: 'custom';\n props?: Partial<IOpenInCustomProps>;\n },\n resolveSettings: Partial<IResolveDeviceProps> = {}\n ): Promise<{ url: string }> {\n debug(\n `open (runtime: ${options.runtime}, platform: ${this.props.platform}, device: %O, shouldPrompt: ${resolveSettings.shouldPrompt})`,\n resolveSettings.device\n );\n if (options.runtime === 'expo') {\n return this.openProjectInExpoGoAsync(resolveSettings);\n } else if (options.runtime === 'web') {\n return this.openWebProjectAsync(resolveSettings);\n } else if (options.runtime === 'custom') {\n return this.openProjectInCustomRuntimeAsync(resolveSettings, options.props);\n } else {\n throw new CommandError(`Invalid runtime target: ${options.runtime}`);\n }\n }\n\n /** Open the current web project (Webpack) in a device . */\n private async openWebProjectAsync(resolveSettings: Partial<IResolveDeviceProps> = {}): Promise<{\n url: string;\n }> {\n const url = this.props.getDevServerUrl();\n assert(url, 'Dev server is not running.');\n\n const deviceManager = await this.props.resolveDeviceAsync(resolveSettings);\n deviceManager.logOpeningUrl(url);\n await deviceManager.activateWindowAsync();\n await deviceManager.openUrlAsync(url);\n\n return { url };\n }\n\n /** If the launch URL cannot be determined (`custom` runtimes) then an alternative string can be provided to open the device. Often a device ID or activity to launch. Exposed for testing. */\n _resolveAlternativeLaunchUrl(\n applicationId: string,\n props: Partial<IOpenInCustomProps> = {}\n ): string {\n throw new UnimplementedError();\n }\n}\n"],"names":["PlatformManager","debug","require","constructor","projectRoot","props","_getAppIdResolver","UnimplementedError","getExpoGoOrCustomRuntimeUrlAsync","deviceManager","redirectUrl","getRedirectUrl","applicationId","getAppIdAsync","Log","warn","chalk","learnMore","isAppInstalledAndIfSoReturnContainerPathForIOSAsync","name","getExpoGoUrl","openProjectInExpoGoAsync","resolveSettings","resolveDeviceAsync","url","logOpeningUrl","exp","getConfig","sdkVersion","assert","ensureExpoGoAsync","activateWindowAsync","openUrlAsync","appId","getExpoGoAppId","openProjectInCustomRuntimeAsync","Object","entries","map","k","v","join","getCustomRuntimeUrl","scheme","CommandError","_resolveAlternativeLaunchUrl","openAsync","options","runtime","platform","shouldPrompt","device","openWebProjectAsync","getDevServerUrl"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/start/platforms/PlatformManager.ts"],"sourcesContent":["import { getConfig } from '@expo/config';\nimport assert from 'assert';\nimport chalk from 'chalk';\n\nimport { AppIdResolver } from './AppIdResolver';\nimport { DeviceManager } from './DeviceManager';\nimport { Log } from '../../log';\nimport { CommandError, UnimplementedError } from '../../utils/errors';\nimport { learnMore } from '../../utils/link';\n\nconst debug = require('debug')('expo:start:platforms:platformManager') as typeof console.log;\n\nexport interface BaseOpenInCustomProps {\n scheme?: string;\n applicationId?: string | null;\n}\n\nexport interface BaseResolveDeviceProps<IDevice> {\n /** Should prompt the user to select a device. */\n shouldPrompt?: boolean;\n /** The target device to use. */\n device?: IDevice;\n}\n\n/** An abstract class for launching a URL on a device. */\nexport class PlatformManager<\n IDevice,\n IOpenInCustomProps extends BaseOpenInCustomProps = BaseOpenInCustomProps,\n IResolveDeviceProps extends BaseResolveDeviceProps<IDevice> = BaseResolveDeviceProps<IDevice>,\n> {\n constructor(\n protected projectRoot: string,\n protected props: {\n platform: 'ios' | 'android';\n /** Get the base URL for the dev server hosting this platform manager. */\n getDevServerUrl: () => string | null;\n /** Expo Go URL. */\n getExpoGoUrl: () => string;\n /**\n * Get redirect URL for native disambiguation.\n * @returns a URL like `http://localhost:8081/_expo/loading`\n */\n getRedirectUrl: () => string | null;\n /** Dev Client */\n getCustomRuntimeUrl: (props?: { scheme?: string }) => string | null;\n /** Resolve a device, this function should automatically handle opening the device and asserting any system validations. */\n resolveDeviceAsync: (\n resolver?: Partial<IResolveDeviceProps>\n ) => Promise<DeviceManager<IDevice>>;\n }\n ) {}\n\n /** Returns the project application identifier or asserts that one is not defined. Exposed for testing. */\n _getAppIdResolver(): AppIdResolver {\n throw new UnimplementedError();\n }\n\n /**\n * Get the URL for users intending to launch the project in Expo Go.\n * The CLI will check if the project has a custom dev client and if the redirect page feature is enabled.\n * If both are true, the CLI will return the redirect page URL.\n */\n protected async getExpoGoOrCustomRuntimeUrlAsync(\n deviceManager: DeviceManager<IDevice>\n ): Promise<string> {\n // Determine if the redirect page feature is enabled first since it's the cheapest to check.\n const redirectUrl = this.props.getRedirectUrl();\n if (redirectUrl) {\n // If the redirect page feature is enabled, check if the project has a resolvable native identifier.\n let applicationId;\n try {\n applicationId = await this._getAppIdResolver().getAppIdAsync();\n } catch {\n Log.warn(\n chalk`\\u203A Launching in Expo Go. If you want to use a ` +\n `development build, you need to create and install one first, or, if you already ` +\n chalk`have a build, add {bold ios.bundleIdentifier} and {bold android.package} to ` +\n `this project's app config.\\n${learnMore('https://docs.expo.dev/development/build/')}`\n );\n }\n if (applicationId) {\n debug(`Resolving launch URL: (appId: ${applicationId}, redirect URL: ${redirectUrl})`);\n // NOTE(EvanBacon): This adds considerable amount of time to the command, we should consider removing or memoizing it.\n // Finally determine if the target device has a custom dev client installed.\n if (\n await deviceManager.isAppInstalledAndIfSoReturnContainerPathForIOSAsync(applicationId)\n ) {\n return redirectUrl;\n } else {\n // Log a warning if no development build is available on the device, but the\n // interstitial page would otherwise be opened.\n Log.warn(\n chalk`\\u203A The {bold expo-dev-client} package is installed, but a development build is not ` +\n chalk`installed on {bold ${deviceManager.name}}.\\nLaunching in Expo Go. If you want to use a ` +\n `development build, you need to create and install one first.\\n${learnMore(\n 'https://docs.expo.dev/development/build/'\n )}`\n );\n }\n }\n }\n\n return this.props.getExpoGoUrl();\n }\n\n protected async openProjectInExpoGoAsync(\n resolveSettings: Partial<IResolveDeviceProps> = {}\n ): Promise<{ url: string }> {\n const deviceManager = await this.props.resolveDeviceAsync(resolveSettings);\n const url = await this.getExpoGoOrCustomRuntimeUrlAsync(deviceManager);\n\n deviceManager.logOpeningUrl(url);\n\n // TODO: Expensive, we should only do this once.\n const { exp } = getConfig(this.projectRoot);\n const sdkVersion = exp.sdkVersion;\n assert(sdkVersion, 'sdkVersion should be resolved by getConfig');\n await deviceManager.ensureExpoGoAsync(sdkVersion);\n\n deviceManager.activateWindowAsync();\n await deviceManager.openUrlAsync(url, { appId: deviceManager.getExpoGoAppId() });\n\n return { url };\n }\n\n protected async openProjectInCustomRuntimeAsync(\n resolveSettings: Partial<IResolveDeviceProps> = {},\n props: Partial<IOpenInCustomProps> = {}\n ): Promise<{ url: string }> {\n debug(\n `open custom (${Object.entries(props)\n .map(([k, v]) => `${k}: ${v}`)\n .join(', ')})`\n );\n\n let url = this.props.getCustomRuntimeUrl({ scheme: props.scheme });\n debug(`Opening project in custom runtime: ${url} -- %O`, props);\n // TODO: It's unclear why we do application id validation when opening with a URL\n // NOTE: But having it enables us to allow the deep link to directly open on iOS simulators without the modal.\n const applicationId = props.applicationId ?? (await this._getAppIdResolver().getAppIdAsync());\n\n const deviceManager = await this.props.resolveDeviceAsync(resolveSettings);\n\n if (!(await deviceManager.isAppInstalledAndIfSoReturnContainerPathForIOSAsync(applicationId))) {\n throw new CommandError(\n `No development build (${applicationId}) for this project is installed. ` +\n `Please make and install a development build on the device first.\\n${learnMore(\n 'https://docs.expo.dev/development/build/'\n )}`\n );\n }\n\n if (!url) {\n url = this._resolveAlternativeLaunchUrl(applicationId, props);\n }\n\n deviceManager.logOpeningUrl(url);\n await deviceManager.activateWindowAsync();\n\n await deviceManager.openUrlAsync(url, {\n appId: applicationId,\n });\n\n return {\n url,\n };\n }\n\n /** Launch the project on a device given the input runtime. */\n async openAsync(\n options:\n | {\n runtime: 'expo' | 'web';\n }\n | {\n runtime: 'custom';\n props?: Partial<IOpenInCustomProps>;\n },\n resolveSettings: Partial<IResolveDeviceProps> = {}\n ): Promise<{ url: string }> {\n debug(\n `open (runtime: ${options.runtime}, platform: ${this.props.platform}, device: %O, shouldPrompt: ${resolveSettings.shouldPrompt})`,\n resolveSettings.device\n );\n if (options.runtime === 'expo') {\n return this.openProjectInExpoGoAsync(resolveSettings);\n } else if (options.runtime === 'web') {\n return this.openWebProjectAsync(resolveSettings);\n } else if (options.runtime === 'custom') {\n return this.openProjectInCustomRuntimeAsync(resolveSettings, options.props);\n } else {\n throw new CommandError(`Invalid runtime target: ${options.runtime}`);\n }\n }\n\n /** Open the current web project (Webpack) in a device . */\n private async openWebProjectAsync(resolveSettings: Partial<IResolveDeviceProps> = {}): Promise<{\n url: string;\n }> {\n const url = this.props.getDevServerUrl();\n assert(url, 'Dev server is not running.');\n\n const deviceManager = await this.props.resolveDeviceAsync(resolveSettings);\n deviceManager.logOpeningUrl(url);\n await deviceManager.activateWindowAsync();\n await deviceManager.openUrlAsync(url);\n\n return { url };\n }\n\n /** If the launch URL cannot be determined (`custom` runtimes) then an alternative string can be provided to open the device. Often a device ID or activity to launch. Exposed for testing. */\n _resolveAlternativeLaunchUrl(\n applicationId: string,\n props: Partial<IOpenInCustomProps> = {}\n ): string {\n throw new UnimplementedError();\n }\n}\n"],"names":["PlatformManager","debug","require","constructor","projectRoot","props","_getAppIdResolver","UnimplementedError","getExpoGoOrCustomRuntimeUrlAsync","deviceManager","redirectUrl","getRedirectUrl","applicationId","getAppIdAsync","Log","warn","chalk","learnMore","isAppInstalledAndIfSoReturnContainerPathForIOSAsync","name","getExpoGoUrl","openProjectInExpoGoAsync","resolveSettings","resolveDeviceAsync","url","logOpeningUrl","exp","getConfig","sdkVersion","assert","ensureExpoGoAsync","activateWindowAsync","openUrlAsync","appId","getExpoGoAppId","openProjectInCustomRuntimeAsync","Object","entries","map","k","v","join","getCustomRuntimeUrl","scheme","CommandError","_resolveAlternativeLaunchUrl","openAsync","options","runtime","platform","shouldPrompt","device","openWebProjectAsync","getDevServerUrl"],"mappings":"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"}
@@ -4,48 +4,48 @@ Object.defineProperty(exports, "__esModule", {
4
4
  });
5
5
  Object.defineProperty(exports, "ADBServer", {
6
6
  enumerable: true,
7
- get: ()=>ADBServer
7
+ get: function() {
8
+ return ADBServer;
9
+ }
8
10
  });
9
- function _spawnAsync() {
10
- const data = /*#__PURE__*/ _interopRequireDefault(require("@expo/spawn-async"));
11
- _spawnAsync = function() {
11
+ function _spawnasync() {
12
+ const data = /*#__PURE__*/ _interop_require_default(require("@expo/spawn-async"));
13
+ _spawnasync = function() {
12
14
  return data;
13
15
  };
14
16
  return data;
15
17
  }
16
- function _childProcess() {
18
+ function _child_process() {
17
19
  const data = require("child_process");
18
- _childProcess = function() {
20
+ _child_process = function() {
19
21
  return data;
20
22
  };
21
23
  return data;
22
24
  }
23
- const _androidSdk = require("./AndroidSdk");
25
+ const _AndroidSdk = require("./AndroidSdk");
24
26
  const _log = require("../../../log");
25
27
  const _env = require("../../../utils/env");
26
28
  const _errors = require("../../../utils/errors");
27
29
  const _exit = require("../../../utils/exit");
28
- function _interopRequireDefault(obj) {
30
+ function _interop_require_default(obj) {
29
31
  return obj && obj.__esModule ? obj : {
30
32
  default: obj
31
33
  };
32
34
  }
33
- const debug = require("debug")("expo:start:platforms:android:adbServer");
34
- const BEGINNING_OF_ADB_ERROR_MESSAGE = "error: ";
35
+ const debug = require('debug')('expo:start:platforms:android:adbServer');
36
+ const BEGINNING_OF_ADB_ERROR_MESSAGE = 'error: ';
35
37
  class ADBServer {
36
- isRunning = false;
37
- removeExitHook = ()=>{};
38
38
  /** Returns the command line reference to ADB. */ getAdbExecutablePath() {
39
39
  try {
40
- const sdkRoot = (0, _androidSdk.assertSdkRoot)();
40
+ const sdkRoot = (0, _AndroidSdk.assertSdkRoot)();
41
41
  if (sdkRoot) {
42
42
  return `${sdkRoot}/platform-tools/adb`;
43
43
  }
44
44
  } catch (error) {
45
45
  _log.Log.warn(error.message);
46
46
  }
47
- _log.Log.debug("Failed to resolve the Android SDK path, falling back to global adb executable");
48
- return "adb";
47
+ _log.Log.debug('Failed to resolve the Android SDK path, falling back to global adb executable');
48
+ return 'adb';
49
49
  }
50
50
  /** Start the ADB server. */ async startAsync() {
51
51
  if (this.isRunning) {
@@ -58,31 +58,31 @@ class ADBServer {
58
58
  }
59
59
  });
60
60
  const adb = this.getAdbExecutablePath();
61
- const result = await this.resolveAdbPromise((0, _spawnAsync().default)(adb, [
62
- "start-server"
61
+ const result = await this.resolveAdbPromise((0, _spawnasync().default)(adb, [
62
+ 'start-server'
63
63
  ]));
64
64
  const lines = result.stderr.trim().split(/\r?\n/);
65
- const isStarted = lines.includes("* daemon started successfully");
65
+ const isStarted = lines.includes('* daemon started successfully');
66
66
  this.isRunning = isStarted;
67
67
  return isStarted;
68
68
  }
69
69
  /** Kill the ADB server. */ async stopAsync() {
70
- debug("Stopping ADB server");
70
+ debug('Stopping ADB server');
71
71
  if (!this.isRunning) {
72
- debug("ADB server is not running");
72
+ debug('ADB server is not running');
73
73
  return false;
74
74
  }
75
75
  this.removeExitHook();
76
76
  try {
77
77
  await this.runAsync([
78
- "kill-server"
78
+ 'kill-server'
79
79
  ]);
80
80
  return true;
81
81
  } catch (error) {
82
- _log.Log.error("Failed to stop ADB server: " + error.message);
82
+ _log.Log.error('Failed to stop ADB server: ' + error.message);
83
83
  return false;
84
84
  } finally{
85
- debug("Stopped ADB server");
85
+ debug('Stopped ADB server');
86
86
  this.isRunning = false;
87
87
  }
88
88
  }
@@ -93,19 +93,19 @@ class ADBServer {
93
93
  debug([
94
94
  adb,
95
95
  ...args
96
- ].join(" "));
97
- const result = await this.resolveAdbPromise((0, _spawnAsync().default)(adb, args));
98
- return result.output.join("\n");
96
+ ].join(' '));
97
+ const result = await this.resolveAdbPromise((0, _spawnasync().default)(adb, args));
98
+ return result.output.join('\n');
99
99
  }
100
100
  /** Get ADB file output. Useful for reading device state/settings. */ async getFileOutputAsync(args) {
101
101
  // TODO: Add a global package that installs adb to the path.
102
102
  const adb = this.getAdbExecutablePath();
103
103
  await this.startAsync();
104
- const results = await this.resolveAdbPromise((0, _childProcess().execFileSync)(adb, args, {
105
- encoding: "latin1",
106
- stdio: "pipe"
104
+ const results = await this.resolveAdbPromise((0, _child_process().execFileSync)(adb, args, {
105
+ encoding: 'latin1',
106
+ stdio: 'pipe'
107
107
  }));
108
- debug("[ADB] File output:\n", results);
108
+ debug('[ADB] File output:\n', results);
109
109
  return results;
110
110
  }
111
111
  /** Formats error info. */ async resolveAdbPromise(promise) {
@@ -113,13 +113,13 @@ class ADBServer {
113
113
  return await promise;
114
114
  } catch (error) {
115
115
  // User pressed ctrl+c to cancel the process...
116
- if (error.signal === "SIGINT") {
116
+ if (error.signal === 'SIGINT') {
117
117
  throw new _errors.AbortCommandError();
118
118
  }
119
- if (error.status === 255 && error.stdout.includes("Bad user number")) {
120
- var ref;
121
- const userNumber = ((ref = error.stdout.match(/Bad user number: (.+)/)) == null ? void 0 : ref[1]) ?? _env.env.EXPO_ADB_USER;
122
- throw new _errors.CommandError("EXPO_ADB_USER", `Invalid ADB user number "${userNumber}" set with environment variable EXPO_ADB_USER. Run "adb shell pm list users" to see valid user numbers.`);
119
+ if (error.status === 255 && error.stdout.includes('Bad user number')) {
120
+ var _error_stdout_match;
121
+ const userNumber = ((_error_stdout_match = error.stdout.match(/Bad user number: (.+)/)) == null ? void 0 : _error_stdout_match[1]) ?? _env.env.EXPO_ADB_USER;
122
+ throw new _errors.CommandError('EXPO_ADB_USER', `Invalid ADB user number "${userNumber}" set with environment variable EXPO_ADB_USER. Run "adb shell pm list users" to see valid user numbers.`);
123
123
  }
124
124
  // TODO: Support heap corruption for adb 29 (process exits with code -1073740940) (windows and linux)
125
125
  let errorMessage = (error.stderr || error.stdout || error.message).trim();
@@ -130,6 +130,10 @@ class ADBServer {
130
130
  throw error;
131
131
  }
132
132
  }
133
+ constructor(){
134
+ this.isRunning = false;
135
+ this.removeExitHook = ()=>{};
136
+ }
133
137
  }
134
138
 
135
139
  //# sourceMappingURL=ADBServer.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/start/platforms/android/ADBServer.ts"],"sourcesContent":["import spawnAsync from '@expo/spawn-async';\nimport { execFileSync } from 'child_process';\n\nimport { assertSdkRoot } from './AndroidSdk';\nimport { Log } from '../../../log';\nimport { env } from '../../../utils/env';\nimport { AbortCommandError, CommandError } from '../../../utils/errors';\nimport { installExitHooks } from '../../../utils/exit';\n\nconst debug = require('debug')('expo:start:platforms:android:adbServer') as typeof console.log;\n\nconst BEGINNING_OF_ADB_ERROR_MESSAGE = 'error: ';\n\n// This is a tricky class since it controls a system state (side-effects).\n// A more ideal solution would be to implement ADB in JS.\n// The main reason this is a class is to control the flow of testing.\n\nexport class ADBServer {\n isRunning: boolean = false;\n removeExitHook: () => void = () => {};\n\n /** Returns the command line reference to ADB. */\n getAdbExecutablePath(): string {\n try {\n const sdkRoot = assertSdkRoot();\n if (sdkRoot) {\n return `${sdkRoot}/platform-tools/adb`;\n }\n } catch (error: any) {\n Log.warn(error.message);\n }\n\n Log.debug('Failed to resolve the Android SDK path, falling back to global adb executable');\n return 'adb';\n }\n\n /** Start the ADB server. */\n async startAsync(): Promise<boolean> {\n if (this.isRunning) {\n return false;\n }\n // clean up\n this.removeExitHook = installExitHooks(() => {\n if (this.isRunning) {\n this.stopAsync();\n }\n });\n const adb = this.getAdbExecutablePath();\n const result = await this.resolveAdbPromise(spawnAsync(adb, ['start-server']));\n const lines = result.stderr.trim().split(/\\r?\\n/);\n const isStarted = lines.includes('* daemon started successfully');\n this.isRunning = isStarted;\n return isStarted;\n }\n\n /** Kill the ADB server. */\n async stopAsync(): Promise<boolean> {\n debug('Stopping ADB server');\n\n if (!this.isRunning) {\n debug('ADB server is not running');\n return false;\n }\n this.removeExitHook();\n try {\n await this.runAsync(['kill-server']);\n return true;\n } catch (error: any) {\n Log.error('Failed to stop ADB server: ' + error.message);\n return false;\n } finally {\n debug('Stopped ADB server');\n this.isRunning = false;\n }\n }\n\n /** Execute an ADB command with given args. */\n async runAsync(args: string[]): Promise<string> {\n // TODO: Add a global package that installs adb to the path.\n const adb = this.getAdbExecutablePath();\n\n await this.startAsync();\n\n debug([adb, ...args].join(' '));\n const result = await this.resolveAdbPromise(spawnAsync(adb, args));\n return result.output.join('\\n');\n }\n\n /** Get ADB file output. Useful for reading device state/settings. */\n async getFileOutputAsync(args: string[]): Promise<string> {\n // TODO: Add a global package that installs adb to the path.\n const adb = this.getAdbExecutablePath();\n\n await this.startAsync();\n\n const results = await this.resolveAdbPromise(\n execFileSync(adb, args, {\n encoding: 'latin1',\n stdio: 'pipe',\n })\n );\n debug('[ADB] File output:\\n', results);\n return results;\n }\n\n /** Formats error info. */\n async resolveAdbPromise<T>(promise: T | Promise<T>): Promise<T> {\n try {\n return await promise;\n } catch (error: any) {\n // User pressed ctrl+c to cancel the process...\n if (error.signal === 'SIGINT') {\n throw new AbortCommandError();\n }\n if (error.status === 255 && error.stdout.includes('Bad user number')) {\n const userNumber = error.stdout.match(/Bad user number: (.+)/)?.[1] ?? env.EXPO_ADB_USER;\n throw new CommandError(\n 'EXPO_ADB_USER',\n `Invalid ADB user number \"${userNumber}\" set with environment variable EXPO_ADB_USER. Run \"adb shell pm list users\" to see valid user numbers.`\n );\n }\n // TODO: Support heap corruption for adb 29 (process exits with code -1073740940) (windows and linux)\n let errorMessage = (error.stderr || error.stdout || error.message).trim();\n if (errorMessage.startsWith(BEGINNING_OF_ADB_ERROR_MESSAGE)) {\n errorMessage = errorMessage.substring(BEGINNING_OF_ADB_ERROR_MESSAGE.length);\n }\n\n error.message = errorMessage;\n throw error;\n }\n }\n}\n"],"names":["ADBServer","debug","require","BEGINNING_OF_ADB_ERROR_MESSAGE","isRunning","removeExitHook","getAdbExecutablePath","sdkRoot","assertSdkRoot","error","Log","warn","message","startAsync","installExitHooks","stopAsync","adb","result","resolveAdbPromise","spawnAsync","lines","stderr","trim","split","isStarted","includes","runAsync","args","join","output","getFileOutputAsync","results","execFileSync","encoding","stdio","promise","signal","AbortCommandError","status","stdout","userNumber","match","env","EXPO_ADB_USER","CommandError","errorMessage","startsWith","substring","length"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../src/start/platforms/android/ADBServer.ts"],"sourcesContent":["import spawnAsync from '@expo/spawn-async';\nimport { execFileSync } from 'child_process';\n\nimport { assertSdkRoot } from './AndroidSdk';\nimport { Log } from '../../../log';\nimport { env } from '../../../utils/env';\nimport { AbortCommandError, CommandError } from '../../../utils/errors';\nimport { installExitHooks } from '../../../utils/exit';\n\nconst debug = require('debug')('expo:start:platforms:android:adbServer') as typeof console.log;\n\nconst BEGINNING_OF_ADB_ERROR_MESSAGE = 'error: ';\n\n// This is a tricky class since it controls a system state (side-effects).\n// A more ideal solution would be to implement ADB in JS.\n// The main reason this is a class is to control the flow of testing.\n\nexport class ADBServer {\n isRunning: boolean = false;\n removeExitHook: () => void = () => {};\n\n /** Returns the command line reference to ADB. */\n getAdbExecutablePath(): string {\n try {\n const sdkRoot = assertSdkRoot();\n if (sdkRoot) {\n return `${sdkRoot}/platform-tools/adb`;\n }\n } catch (error: any) {\n Log.warn(error.message);\n }\n\n Log.debug('Failed to resolve the Android SDK path, falling back to global adb executable');\n return 'adb';\n }\n\n /** Start the ADB server. */\n async startAsync(): Promise<boolean> {\n if (this.isRunning) {\n return false;\n }\n // clean up\n this.removeExitHook = installExitHooks(() => {\n if (this.isRunning) {\n this.stopAsync();\n }\n });\n const adb = this.getAdbExecutablePath();\n const result = await this.resolveAdbPromise(spawnAsync(adb, ['start-server']));\n const lines = result.stderr.trim().split(/\\r?\\n/);\n const isStarted = lines.includes('* daemon started successfully');\n this.isRunning = isStarted;\n return isStarted;\n }\n\n /** Kill the ADB server. */\n async stopAsync(): Promise<boolean> {\n debug('Stopping ADB server');\n\n if (!this.isRunning) {\n debug('ADB server is not running');\n return false;\n }\n this.removeExitHook();\n try {\n await this.runAsync(['kill-server']);\n return true;\n } catch (error: any) {\n Log.error('Failed to stop ADB server: ' + error.message);\n return false;\n } finally {\n debug('Stopped ADB server');\n this.isRunning = false;\n }\n }\n\n /** Execute an ADB command with given args. */\n async runAsync(args: string[]): Promise<string> {\n // TODO: Add a global package that installs adb to the path.\n const adb = this.getAdbExecutablePath();\n\n await this.startAsync();\n\n debug([adb, ...args].join(' '));\n const result = await this.resolveAdbPromise(spawnAsync(adb, args));\n return result.output.join('\\n');\n }\n\n /** Get ADB file output. Useful for reading device state/settings. */\n async getFileOutputAsync(args: string[]): Promise<string> {\n // TODO: Add a global package that installs adb to the path.\n const adb = this.getAdbExecutablePath();\n\n await this.startAsync();\n\n const results = await this.resolveAdbPromise(\n execFileSync(adb, args, {\n encoding: 'latin1',\n stdio: 'pipe',\n })\n );\n debug('[ADB] File output:\\n', results);\n return results;\n }\n\n /** Formats error info. */\n async resolveAdbPromise<T>(promise: T | Promise<T>): Promise<T> {\n try {\n return await promise;\n } catch (error: any) {\n // User pressed ctrl+c to cancel the process...\n if (error.signal === 'SIGINT') {\n throw new AbortCommandError();\n }\n if (error.status === 255 && error.stdout.includes('Bad user number')) {\n const userNumber = error.stdout.match(/Bad user number: (.+)/)?.[1] ?? env.EXPO_ADB_USER;\n throw new CommandError(\n 'EXPO_ADB_USER',\n `Invalid ADB user number \"${userNumber}\" set with environment variable EXPO_ADB_USER. Run \"adb shell pm list users\" to see valid user numbers.`\n );\n }\n // TODO: Support heap corruption for adb 29 (process exits with code -1073740940) (windows and linux)\n let errorMessage = (error.stderr || error.stdout || error.message).trim();\n if (errorMessage.startsWith(BEGINNING_OF_ADB_ERROR_MESSAGE)) {\n errorMessage = errorMessage.substring(BEGINNING_OF_ADB_ERROR_MESSAGE.length);\n }\n\n error.message = errorMessage;\n throw error;\n }\n }\n}\n"],"names":["ADBServer","debug","require","BEGINNING_OF_ADB_ERROR_MESSAGE","getAdbExecutablePath","sdkRoot","assertSdkRoot","error","Log","warn","message","startAsync","isRunning","removeExitHook","installExitHooks","stopAsync","adb","result","resolveAdbPromise","spawnAsync","lines","stderr","trim","split","isStarted","includes","runAsync","args","join","output","getFileOutputAsync","results","execFileSync","encoding","stdio","promise","signal","AbortCommandError","status","stdout","userNumber","match","env","EXPO_ADB_USER","CommandError","errorMessage","startsWith","substring","length"],"mappings":"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"}