@expo/cli 0.22.25 → 0.22.26

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 (722) hide show
  1. package/build/bin/cli +91 -93
  2. package/build/bin/cli.map +1 -1
  3. package/build/metro-require/require.js +52 -53
  4. package/build/src/api/endpoint.js +2 -6
  5. package/build/src/api/endpoint.js.map +1 -1
  6. package/build/src/api/getExpoGoIntermediateCertificate.js +3 -5
  7. package/build/src/api/getExpoGoIntermediateCertificate.js.map +1 -1
  8. package/build/src/api/getExpoSchema.js +12 -16
  9. package/build/src/api/getExpoSchema.js.map +1 -1
  10. package/build/src/api/getNativeModuleVersions.js +4 -6
  11. package/build/src/api/getNativeModuleVersions.js.map +1 -1
  12. package/build/src/api/getProjectDevelopmentCertificate.js +3 -5
  13. package/build/src/api/getProjectDevelopmentCertificate.js.map +1 -1
  14. package/build/src/api/getVersions.js +5 -7
  15. package/build/src/api/getVersions.js.map +1 -1
  16. package/build/src/api/graphql/client.js +26 -32
  17. package/build/src/api/graphql/client.js.map +1 -1
  18. package/build/src/api/graphql/queries/AppQuery.js +4 -6
  19. package/build/src/api/graphql/queries/AppQuery.js.map +1 -1
  20. package/build/src/api/graphql/queries/UserQuery.js +3 -5
  21. package/build/src/api/graphql/queries/UserQuery.js.map +1 -1
  22. package/build/src/api/graphql/types/App.js +1 -3
  23. package/build/src/api/graphql/types/App.js.map +1 -1
  24. package/build/src/api/rest/cache/FileSystemResponseCache.js +8 -10
  25. package/build/src/api/rest/cache/FileSystemResponseCache.js.map +1 -1
  26. package/build/src/api/rest/cache/ResponseCache.js +12 -20
  27. package/build/src/api/rest/cache/ResponseCache.js.map +1 -1
  28. package/build/src/api/rest/cache/wrapFetchWithCache.js +11 -13
  29. package/build/src/api/rest/cache/wrapFetchWithCache.js.map +1 -1
  30. package/build/src/api/rest/client.js +35 -53
  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 +3 -5
  34. package/build/src/api/rest/wrapFetchWithBaseUrl.js.map +1 -1
  35. package/build/src/api/rest/wrapFetchWithOffline.js +3 -5
  36. package/build/src/api/rest/wrapFetchWithOffline.js.map +1 -1
  37. package/build/src/api/rest/wrapFetchWithProgress.js +7 -11
  38. package/build/src/api/rest/wrapFetchWithProgress.js.map +1 -1
  39. package/build/src/api/rest/wrapFetchWithProxy.js +3 -5
  40. package/build/src/api/rest/wrapFetchWithProxy.js.map +1 -1
  41. package/build/src/api/rest/wrapFetchWithUserAgent.js +6 -8
  42. package/build/src/api/rest/wrapFetchWithUserAgent.js.map +1 -1
  43. package/build/src/api/settings.js +5 -7
  44. package/build/src/api/settings.js.map +1 -1
  45. package/build/src/api/updateDevelopmentSession.js +17 -23
  46. package/build/src/api/updateDevelopmentSession.js.map +1 -1
  47. package/build/src/api/user/UserSettings.js +21 -39
  48. package/build/src/api/user/UserSettings.js.map +1 -1
  49. package/build/src/api/user/actions.js +21 -27
  50. package/build/src/api/user/actions.js.map +1 -1
  51. package/build/src/api/user/expoSsoLauncher.js +26 -30
  52. package/build/src/api/user/expoSsoLauncher.js.map +1 -1
  53. package/build/src/api/user/otp.js +29 -35
  54. package/build/src/api/user/otp.js.map +1 -1
  55. package/build/src/api/user/user.js +30 -44
  56. package/build/src/api/user/user.js.map +1 -1
  57. package/build/src/config/configAsync.js +23 -29
  58. package/build/src/config/configAsync.js.map +1 -1
  59. package/build/src/config/index.js +21 -25
  60. package/build/src/config/index.js.map +1 -1
  61. package/build/src/customize/customizeAsync.js +6 -8
  62. package/build/src/customize/customizeAsync.js.map +1 -1
  63. package/build/src/customize/generate.js +16 -20
  64. package/build/src/customize/generate.js.map +1 -1
  65. package/build/src/customize/index.js +12 -14
  66. package/build/src/customize/index.js.map +1 -1
  67. package/build/src/customize/resolveOptions.js +2 -4
  68. package/build/src/customize/resolveOptions.js.map +1 -1
  69. package/build/src/customize/templates.js +54 -58
  70. package/build/src/customize/templates.js.map +1 -1
  71. package/build/src/customize/typescript.js +7 -11
  72. package/build/src/customize/typescript.js.map +1 -1
  73. package/build/src/export/createMetadataJson.js +9 -11
  74. package/build/src/export/createMetadataJson.js.map +1 -1
  75. package/build/src/export/embed/exportEager.js +6 -8
  76. package/build/src/export/embed/exportEager.js.map +1 -1
  77. package/build/src/export/embed/exportEmbedAsync.js +61 -71
  78. package/build/src/export/embed/exportEmbedAsync.js.map +1 -1
  79. package/build/src/export/embed/exportServer.js +55 -57
  80. package/build/src/export/embed/exportServer.js.map +1 -1
  81. package/build/src/export/embed/index.js +40 -44
  82. package/build/src/export/embed/index.js.map +1 -1
  83. package/build/src/export/embed/resolveOptions.js +36 -44
  84. package/build/src/export/embed/resolveOptions.js.map +1 -1
  85. package/build/src/export/embed/xcodeCompilerLogger.js +27 -39
  86. package/build/src/export/embed/xcodeCompilerLogger.js.map +1 -1
  87. package/build/src/export/exportApp.js +63 -67
  88. package/build/src/export/exportApp.js.map +1 -1
  89. package/build/src/export/exportAssets.js +27 -35
  90. package/build/src/export/exportAssets.js.map +1 -1
  91. package/build/src/export/exportAsync.js +9 -13
  92. package/build/src/export/exportAsync.js.map +1 -1
  93. package/build/src/export/exportDomComponents.js +45 -53
  94. package/build/src/export/exportDomComponents.js.map +1 -1
  95. package/build/src/export/exportHermes.js +63 -85
  96. package/build/src/export/exportHermes.js.map +1 -1
  97. package/build/src/export/exportStaticAsync.js +62 -72
  98. package/build/src/export/exportStaticAsync.js.map +1 -1
  99. package/build/src/export/favicon.js +27 -33
  100. package/build/src/export/favicon.js.map +1 -1
  101. package/build/src/export/getPublicExpoManifest.js +5 -7
  102. package/build/src/export/getPublicExpoManifest.js.map +1 -1
  103. package/build/src/export/getResolvedLocales.js +9 -11
  104. package/build/src/export/getResolvedLocales.js.map +1 -1
  105. package/build/src/export/html.js +6 -10
  106. package/build/src/export/html.js.map +1 -1
  107. package/build/src/export/index.js +28 -32
  108. package/build/src/export/index.js.map +1 -1
  109. package/build/src/export/metroAssetLocalPath.js +30 -36
  110. package/build/src/export/metroAssetLocalPath.js.map +1 -1
  111. package/build/src/export/persistMetroAssets.js +34 -42
  112. package/build/src/export/persistMetroAssets.js.map +1 -1
  113. package/build/src/export/publicFolder.js +6 -10
  114. package/build/src/export/publicFolder.js.map +1 -1
  115. package/build/src/export/resolveOptions.js +24 -28
  116. package/build/src/export/resolveOptions.js.map +1 -1
  117. package/build/src/export/saveAssets.js +46 -50
  118. package/build/src/export/saveAssets.js.map +1 -1
  119. package/build/src/export/web/exportWebAsync.js +11 -13
  120. package/build/src/export/web/exportWebAsync.js.map +1 -1
  121. package/build/src/export/web/index.js +15 -19
  122. package/build/src/export/web/index.js.map +1 -1
  123. package/build/src/export/web/resolveOptions.js +3 -5
  124. package/build/src/export/web/resolveOptions.js.map +1 -1
  125. package/build/src/export/writeContents.js +2 -4
  126. package/build/src/export/writeContents.js.map +1 -1
  127. package/build/src/graphql/generated.js +274 -400
  128. package/build/src/graphql/generated.js.map +1 -1
  129. package/build/src/install/applyPlugins.js +7 -11
  130. package/build/src/install/applyPlugins.js.map +1 -1
  131. package/build/src/install/checkPackages.js +22 -26
  132. package/build/src/install/checkPackages.js.map +1 -1
  133. package/build/src/install/fixPackages.js +12 -16
  134. package/build/src/install/fixPackages.js.map +1 -1
  135. package/build/src/install/index.js +16 -18
  136. package/build/src/install/index.js.map +1 -1
  137. package/build/src/install/installAsync.js +26 -32
  138. package/build/src/install/installAsync.js.map +1 -1
  139. package/build/src/install/installExpoPackage.js +18 -22
  140. package/build/src/install/installExpoPackage.js.map +1 -1
  141. package/build/src/install/resolveOptions.js +19 -21
  142. package/build/src/install/resolveOptions.js.map +1 -1
  143. package/build/src/install/utils/autoAddConfigPlugins.js +14 -18
  144. package/build/src/install/utils/autoAddConfigPlugins.js.map +1 -1
  145. package/build/src/install/utils/checkPackagesCompatibility.js +11 -13
  146. package/build/src/install/utils/checkPackagesCompatibility.js.map +1 -1
  147. package/build/src/lint/ESlintPrerequisite.js +44 -50
  148. package/build/src/lint/ESlintPrerequisite.js.map +1 -1
  149. package/build/src/lint/index.js +8 -12
  150. package/build/src/lint/index.js.map +1 -1
  151. package/build/src/lint/lintAsync.js +8 -10
  152. package/build/src/lint/lintAsync.js.map +1 -1
  153. package/build/src/log.js +16 -36
  154. package/build/src/log.js.map +1 -1
  155. package/build/src/login/index.js +20 -24
  156. package/build/src/login/index.js.map +1 -1
  157. package/build/src/logout/index.js +7 -11
  158. package/build/src/logout/index.js.map +1 -1
  159. package/build/src/prebuild/clearNativeFolder.js +26 -38
  160. package/build/src/prebuild/clearNativeFolder.js.map +1 -1
  161. package/build/src/prebuild/configureProjectAsync.js +14 -18
  162. package/build/src/prebuild/configureProjectAsync.js.map +1 -1
  163. package/build/src/prebuild/copyTemplateFiles.js +13 -17
  164. package/build/src/prebuild/copyTemplateFiles.js.map +1 -1
  165. package/build/src/prebuild/ensureConfigAsync.js +4 -6
  166. package/build/src/prebuild/ensureConfigAsync.js.map +1 -1
  167. package/build/src/prebuild/index.js +32 -36
  168. package/build/src/prebuild/index.js.map +1 -1
  169. package/build/src/prebuild/prebuildAsync.js +25 -29
  170. package/build/src/prebuild/prebuildAsync.js.map +1 -1
  171. package/build/src/prebuild/renameTemplateAppName.js +40 -46
  172. package/build/src/prebuild/renameTemplateAppName.js.map +1 -1
  173. package/build/src/prebuild/resolveOptions.js +52 -66
  174. package/build/src/prebuild/resolveOptions.js.map +1 -1
  175. package/build/src/prebuild/resolveTemplate.js +32 -36
  176. package/build/src/prebuild/resolveTemplate.js.map +1 -1
  177. package/build/src/prebuild/updateFromTemplate.js +13 -19
  178. package/build/src/prebuild/updateFromTemplate.js.map +1 -1
  179. package/build/src/prebuild/updatePackageJson.js +39 -53
  180. package/build/src/prebuild/updatePackageJson.js.map +1 -1
  181. package/build/src/prebuild/validateTemplatePlatforms.js +8 -12
  182. package/build/src/prebuild/validateTemplatePlatforms.js.map +1 -1
  183. package/build/src/register/index.js +7 -11
  184. package/build/src/register/index.js.map +1 -1
  185. package/build/src/register/registerAsync.js +3 -5
  186. package/build/src/register/registerAsync.js.map +1 -1
  187. package/build/src/run/android/index.js +32 -36
  188. package/build/src/run/android/index.js.map +1 -1
  189. package/build/src/run/android/resolveDevice.js +8 -10
  190. package/build/src/run/android/resolveDevice.js.map +1 -1
  191. package/build/src/run/android/resolveGradlePropsAsync.js +16 -18
  192. package/build/src/run/android/resolveGradlePropsAsync.js.map +1 -1
  193. package/build/src/run/android/resolveInstallApkName.js +15 -17
  194. package/build/src/run/android/resolveInstallApkName.js.map +1 -1
  195. package/build/src/run/android/resolveLaunchProps.js +10 -12
  196. package/build/src/run/android/resolveLaunchProps.js.map +1 -1
  197. package/build/src/run/android/resolveOptions.js +2 -4
  198. package/build/src/run/android/resolveOptions.js.map +1 -1
  199. package/build/src/run/android/runAndroidAsync.js +21 -23
  200. package/build/src/run/android/runAndroidAsync.js.map +1 -1
  201. package/build/src/run/ensureNativeProject.js +5 -7
  202. package/build/src/run/ensureNativeProject.js.map +1 -1
  203. package/build/src/run/hints.js +7 -13
  204. package/build/src/run/hints.js.map +1 -1
  205. package/build/src/run/index.js +23 -27
  206. package/build/src/run/index.js.map +1 -1
  207. package/build/src/run/ios/XcodeBuild.js +56 -74
  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 +63 -69
  211. package/build/src/run/ios/appleDevice/AppleDevice.js.map +1 -1
  212. package/build/src/run/ios/appleDevice/ClientManager.js +26 -29
  213. package/build/src/run/ios/appleDevice/ClientManager.js.map +1 -1
  214. package/build/src/run/ios/appleDevice/client/AFCClient.js +25 -28
  215. package/build/src/run/ios/appleDevice/client/AFCClient.js.map +1 -1
  216. package/build/src/run/ios/appleDevice/client/DebugserverClient.js +26 -29
  217. package/build/src/run/ios/appleDevice/client/DebugserverClient.js.map +1 -1
  218. package/build/src/run/ios/appleDevice/client/InstallationProxyClient.js +21 -22
  219. package/build/src/run/ios/appleDevice/client/InstallationProxyClient.js.map +1 -1
  220. package/build/src/run/ios/appleDevice/client/LockdowndClient.js +29 -32
  221. package/build/src/run/ios/appleDevice/client/LockdowndClient.js.map +1 -1
  222. package/build/src/run/ios/appleDevice/client/MobileImageMounterClient.js +24 -28
  223. package/build/src/run/ios/appleDevice/client/MobileImageMounterClient.js.map +1 -1
  224. package/build/src/run/ios/appleDevice/client/ServiceClient.js +4 -7
  225. package/build/src/run/ios/appleDevice/client/ServiceClient.js.map +1 -1
  226. package/build/src/run/ios/appleDevice/client/UsbmuxdClient.js +27 -28
  227. package/build/src/run/ios/appleDevice/client/UsbmuxdClient.js.map +1 -1
  228. package/build/src/run/ios/appleDevice/installOnDeviceAsync.js +17 -23
  229. package/build/src/run/ios/appleDevice/installOnDeviceAsync.js.map +1 -1
  230. package/build/src/run/ios/appleDevice/protocol/AFCProtocol.js +132 -146
  231. package/build/src/run/ios/appleDevice/protocol/AFCProtocol.js.map +1 -1
  232. package/build/src/run/ios/appleDevice/protocol/AbstractProtocol.js +21 -29
  233. package/build/src/run/ios/appleDevice/protocol/AbstractProtocol.js.map +1 -1
  234. package/build/src/run/ios/appleDevice/protocol/GDBProtocol.js +21 -29
  235. package/build/src/run/ios/appleDevice/protocol/GDBProtocol.js.map +1 -1
  236. package/build/src/run/ios/appleDevice/protocol/LockdownProtocol.js +22 -34
  237. package/build/src/run/ios/appleDevice/protocol/LockdownProtocol.js.map +1 -1
  238. package/build/src/run/ios/appleDevice/protocol/UsbmuxProtocol.js +17 -27
  239. package/build/src/run/ios/appleDevice/protocol/UsbmuxProtocol.js.map +1 -1
  240. package/build/src/run/ios/codeSigning/Security.js +39 -53
  241. package/build/src/run/ios/codeSigning/Security.js.map +1 -1
  242. package/build/src/run/ios/codeSigning/configureCodeSigning.js +9 -13
  243. package/build/src/run/ios/codeSigning/configureCodeSigning.js.map +1 -1
  244. package/build/src/run/ios/codeSigning/resolveCertificateSigningIdentity.js +19 -27
  245. package/build/src/run/ios/codeSigning/resolveCertificateSigningIdentity.js.map +1 -1
  246. package/build/src/run/ios/codeSigning/settings.js +5 -9
  247. package/build/src/run/ios/codeSigning/settings.js.map +1 -1
  248. package/build/src/run/ios/codeSigning/simulatorCodeSigning.js +12 -14
  249. package/build/src/run/ios/codeSigning/simulatorCodeSigning.js.map +1 -1
  250. package/build/src/run/ios/codeSigning/xcodeCodeSigning.js +21 -27
  251. package/build/src/run/ios/codeSigning/xcodeCodeSigning.js.map +1 -1
  252. package/build/src/run/ios/index.js +36 -40
  253. package/build/src/run/ios/index.js.map +1 -1
  254. package/build/src/run/ios/launchApp.js +17 -23
  255. package/build/src/run/ios/launchApp.js.map +1 -1
  256. package/build/src/run/ios/options/appleDestinations.js +36 -38
  257. package/build/src/run/ios/options/appleDestinations.js.map +1 -1
  258. package/build/src/run/ios/options/promptDevice.js +16 -20
  259. package/build/src/run/ios/options/promptDevice.js.map +1 -1
  260. package/build/src/run/ios/options/resolveDevice.js +24 -30
  261. package/build/src/run/ios/options/resolveDevice.js.map +1 -1
  262. package/build/src/run/ios/options/resolveNativeScheme.js +23 -31
  263. package/build/src/run/ios/options/resolveNativeScheme.js.map +1 -1
  264. package/build/src/run/ios/options/resolveOptions.js +5 -7
  265. package/build/src/run/ios/options/resolveOptions.js.map +1 -1
  266. package/build/src/run/ios/options/resolveXcodeProject.js +5 -7
  267. package/build/src/run/ios/options/resolveXcodeProject.js.map +1 -1
  268. package/build/src/run/ios/runIosAsync.js +44 -48
  269. package/build/src/run/ios/runIosAsync.js.map +1 -1
  270. package/build/src/run/ios/validateExternalBinary.js +22 -24
  271. package/build/src/run/ios/validateExternalBinary.js.map +1 -1
  272. package/build/src/run/resolveBundlerProps.js +2 -4
  273. package/build/src/run/resolveBundlerProps.js.map +1 -1
  274. package/build/src/run/startBundler.js +12 -16
  275. package/build/src/run/startBundler.js.map +1 -1
  276. package/build/src/serve/index.js +16 -20
  277. package/build/src/serve/index.js.map +1 -1
  278. package/build/src/serve/serveAsync.js +32 -36
  279. package/build/src/serve/serveAsync.js.map +1 -1
  280. package/build/src/start/detectDevClient.js +9 -13
  281. package/build/src/start/detectDevClient.js.map +1 -1
  282. package/build/src/start/doctor/Prerequisite.js +7 -12
  283. package/build/src/start/doctor/Prerequisite.js.map +1 -1
  284. package/build/src/start/doctor/SecurityBinPrerequisite.js +11 -13
  285. package/build/src/start/doctor/SecurityBinPrerequisite.js.map +1 -1
  286. package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js +19 -23
  287. package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js.map +1 -1
  288. package/build/src/start/doctor/apple/XcodeDeveloperDiskImagePrerequisite.js +19 -23
  289. package/build/src/start/doctor/apple/XcodeDeveloperDiskImagePrerequisite.js.map +1 -1
  290. package/build/src/start/doctor/apple/XcodePrerequisite.js +45 -51
  291. package/build/src/start/doctor/apple/XcodePrerequisite.js.map +1 -1
  292. package/build/src/start/doctor/apple/XcrunPrerequisite.js +16 -18
  293. package/build/src/start/doctor/apple/XcrunPrerequisite.js.map +1 -1
  294. package/build/src/start/doctor/dependencies/bundledNativeModules.js +19 -23
  295. package/build/src/start/doctor/dependencies/bundledNativeModules.js.map +1 -1
  296. package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js +25 -31
  297. package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js.map +1 -1
  298. package/build/src/start/doctor/dependencies/getMissingPackages.js +17 -25
  299. package/build/src/start/doctor/dependencies/getMissingPackages.js.map +1 -1
  300. package/build/src/start/doctor/dependencies/getVersionedPackages.js +32 -40
  301. package/build/src/start/doctor/dependencies/getVersionedPackages.js.map +1 -1
  302. package/build/src/start/doctor/dependencies/resolvePackages.js +26 -32
  303. package/build/src/start/doctor/dependencies/resolvePackages.js.map +1 -1
  304. package/build/src/start/doctor/dependencies/validateDependenciesVersions.js +31 -41
  305. package/build/src/start/doctor/dependencies/validateDependenciesVersions.js.map +1 -1
  306. package/build/src/start/doctor/ngrok/ExternalModule.js +29 -34
  307. package/build/src/start/doctor/ngrok/ExternalModule.js.map +1 -1
  308. package/build/src/start/doctor/ngrok/NgrokResolver.js +8 -12
  309. package/build/src/start/doctor/ngrok/NgrokResolver.js.map +1 -1
  310. package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js +28 -32
  311. package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js.map +1 -1
  312. package/build/src/start/doctor/typescript/updateTSConfig.js +17 -23
  313. package/build/src/start/doctor/typescript/updateTSConfig.js.map +1 -1
  314. package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js +27 -33
  315. package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js.map +1 -1
  316. package/build/src/start/index.js +42 -46
  317. package/build/src/start/index.js.map +1 -1
  318. package/build/src/start/interface/KeyPressHandler.js +14 -18
  319. package/build/src/start/interface/KeyPressHandler.js.map +1 -1
  320. package/build/src/start/interface/commandsTable.js +80 -94
  321. package/build/src/start/interface/commandsTable.js.map +1 -1
  322. package/build/src/start/interface/interactiveActions.js +40 -44
  323. package/build/src/start/interface/interactiveActions.js.map +1 -1
  324. package/build/src/start/interface/startInterface.js +61 -65
  325. package/build/src/start/interface/startInterface.js.map +1 -1
  326. package/build/src/start/platforms/AppIdResolver.js +4 -6
  327. package/build/src/start/platforms/AppIdResolver.js.map +1 -1
  328. package/build/src/start/platforms/DeviceManager.js +6 -10
  329. package/build/src/start/platforms/DeviceManager.js.map +1 -1
  330. package/build/src/start/platforms/ExpoGoInstaller.js +20 -25
  331. package/build/src/start/platforms/ExpoGoInstaller.js.map +1 -1
  332. package/build/src/start/platforms/PlatformManager.js +15 -17
  333. package/build/src/start/platforms/PlatformManager.js.map +1 -1
  334. package/build/src/start/platforms/android/ADBServer.js +35 -39
  335. package/build/src/start/platforms/android/ADBServer.js.map +1 -1
  336. package/build/src/start/platforms/android/AndroidAppIdResolver.js +16 -18
  337. package/build/src/start/platforms/android/AndroidAppIdResolver.js.map +1 -1
  338. package/build/src/start/platforms/android/AndroidDeviceManager.js +20 -24
  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 +9 -11
  343. package/build/src/start/platforms/android/AndroidSdk.js.map +1 -1
  344. package/build/src/start/platforms/android/activateWindow.js +22 -26
  345. package/build/src/start/platforms/android/activateWindow.js.map +1 -1
  346. package/build/src/start/platforms/android/adb.js +83 -121
  347. package/build/src/start/platforms/android/adb.js.map +1 -1
  348. package/build/src/start/platforms/android/adbReverse.js +12 -20
  349. package/build/src/start/platforms/android/adbReverse.js.map +1 -1
  350. package/build/src/start/platforms/android/emulator.js +26 -36
  351. package/build/src/start/platforms/android/emulator.js.map +1 -1
  352. package/build/src/start/platforms/android/getDevices.js +5 -7
  353. package/build/src/start/platforms/android/getDevices.js.map +1 -1
  354. package/build/src/start/platforms/android/gradle.js +28 -36
  355. package/build/src/start/platforms/android/gradle.js.map +1 -1
  356. package/build/src/start/platforms/android/promptAndroidDevice.js +15 -19
  357. package/build/src/start/platforms/android/promptAndroidDevice.js.map +1 -1
  358. package/build/src/start/platforms/ios/AppleAppIdResolver.js +19 -21
  359. package/build/src/start/platforms/ios/AppleAppIdResolver.js.map +1 -1
  360. package/build/src/start/platforms/ios/AppleDeviceManager.js +31 -37
  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 +7 -9
  365. package/build/src/start/platforms/ios/assertSystemRequirements.js.map +1 -1
  366. package/build/src/start/platforms/ios/devicectl.js +73 -87
  367. package/build/src/start/platforms/ios/devicectl.js.map +1 -1
  368. package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js +18 -22
  369. package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js.map +1 -1
  370. package/build/src/start/platforms/ios/getBestSimulator.js +19 -29
  371. package/build/src/start/platforms/ios/getBestSimulator.js.map +1 -1
  372. package/build/src/start/platforms/ios/promptAppleDevice.js +10 -14
  373. package/build/src/start/platforms/ios/promptAppleDevice.js.map +1 -1
  374. package/build/src/start/platforms/ios/simctl.js +74 -102
  375. package/build/src/start/platforms/ios/simctl.js.map +1 -1
  376. package/build/src/start/platforms/ios/simctlLogging.js +52 -57
  377. package/build/src/start/platforms/ios/simctlLogging.js.map +1 -1
  378. package/build/src/start/platforms/ios/xcrun.js +18 -22
  379. package/build/src/start/platforms/ios/xcrun.js.map +1 -1
  380. package/build/src/start/project/devices.js +9 -19
  381. package/build/src/start/project/devices.js.map +1 -1
  382. package/build/src/start/project/dotExpo.js +11 -15
  383. package/build/src/start/project/dotExpo.js.map +1 -1
  384. package/build/src/start/project/settings.js +2 -4
  385. package/build/src/start/project/settings.js.map +1 -1
  386. package/build/src/start/resolveOptions.js +40 -48
  387. package/build/src/start/resolveOptions.js.map +1 -1
  388. package/build/src/start/server/AsyncNgrok.js +51 -55
  389. package/build/src/start/server/AsyncNgrok.js.map +1 -1
  390. package/build/src/start/server/AsyncWsTunnel.js +36 -40
  391. package/build/src/start/server/AsyncWsTunnel.js.map +1 -1
  392. package/build/src/start/server/BundlerDevServer.js +79 -81
  393. package/build/src/start/server/BundlerDevServer.js.map +1 -1
  394. package/build/src/start/server/DevServerManager.js +38 -42
  395. package/build/src/start/server/DevServerManager.js.map +1 -1
  396. package/build/src/start/server/DevToolsPluginManager.js +14 -18
  397. package/build/src/start/server/DevToolsPluginManager.js.map +1 -1
  398. package/build/src/start/server/DevelopmentSession.js +14 -18
  399. package/build/src/start/server/DevelopmentSession.js.map +1 -1
  400. package/build/src/start/server/ReactDevToolsProxy.js +10 -16
  401. package/build/src/start/server/ReactDevToolsProxy.js.map +1 -1
  402. package/build/src/start/server/UrlCreator.js +33 -36
  403. package/build/src/start/server/UrlCreator.js.map +1 -1
  404. package/build/src/start/server/getStaticRenderFunctions.js +21 -29
  405. package/build/src/start/server/getStaticRenderFunctions.js.map +1 -1
  406. package/build/src/start/server/metro/DevToolsPluginWebsocketEndpoint.js +4 -6
  407. package/build/src/start/server/metro/DevToolsPluginWebsocketEndpoint.js.map +1 -1
  408. package/build/src/start/server/metro/MetroBundlerDevServer.js +271 -269
  409. package/build/src/start/server/metro/MetroBundlerDevServer.js.map +1 -1
  410. package/build/src/start/server/metro/MetroTerminalReporter.js +56 -63
  411. package/build/src/start/server/metro/MetroTerminalReporter.js.map +1 -1
  412. package/build/src/start/server/metro/TerminalReporter.js +33 -39
  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/createExpoMetroResolver.js +40 -46
  416. package/build/src/start/server/metro/createExpoMetroResolver.js.map +1 -1
  417. package/build/src/start/server/metro/createJResolver.js +28 -32
  418. package/build/src/start/server/metro/createJResolver.js.map +1 -1
  419. package/build/src/start/server/metro/createServerComponentsMiddleware.js +92 -96
  420. package/build/src/start/server/metro/createServerComponentsMiddleware.js.map +1 -1
  421. package/build/src/start/server/metro/createServerRouteMiddleware.js +30 -32
  422. package/build/src/start/server/metro/createServerRouteMiddleware.js.map +1 -1
  423. package/build/src/start/server/metro/debugging/AtlasPrerequisite.js +11 -13
  424. package/build/src/start/server/metro/debugging/AtlasPrerequisite.js.map +1 -1
  425. package/build/src/start/server/metro/debugging/MessageHandler.js +1 -3
  426. package/build/src/start/server/metro/debugging/MessageHandler.js.map +1 -1
  427. package/build/src/start/server/metro/debugging/attachAtlas.js +22 -26
  428. package/build/src/start/server/metro/debugging/attachAtlas.js.map +1 -1
  429. package/build/src/start/server/metro/debugging/createDebugMiddleware.js +17 -19
  430. package/build/src/start/server/metro/debugging/createDebugMiddleware.js.map +1 -1
  431. package/build/src/start/server/metro/debugging/createHandlersFactory.js +31 -25
  432. package/build/src/start/server/metro/debugging/createHandlersFactory.js.map +1 -1
  433. package/build/src/start/server/metro/debugging/getDebuggerType.js +4 -6
  434. package/build/src/start/server/metro/debugging/getDebuggerType.js.map +1 -1
  435. package/build/src/start/server/metro/debugging/messageHandlers/NetworkResponse.js +8 -14
  436. package/build/src/start/server/metro/debugging/messageHandlers/NetworkResponse.js.map +1 -1
  437. package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerGetPossibleBreakpoints.js +5 -7
  438. package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerGetPossibleBreakpoints.js.map +1 -1
  439. package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerSetBreakpointByUrl.js +6 -8
  440. package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerSetBreakpointByUrl.js.map +1 -1
  441. package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeCallFunctionOn.js +5 -7
  442. package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeCallFunctionOn.js.map +1 -1
  443. package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeEvaluate.js +12 -14
  444. package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeEvaluate.js.map +1 -1
  445. package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeGetProperties.js +10 -14
  446. package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeGetProperties.js.map +1 -1
  447. package/build/src/start/server/metro/debugging/pageIsSupported.js +4 -6
  448. package/build/src/start/server/metro/debugging/pageIsSupported.js.map +1 -1
  449. package/build/src/start/server/metro/debugging/types.js.map +1 -1
  450. package/build/src/start/server/metro/dev-server/createEventSocket.js +16 -18
  451. package/build/src/start/server/metro/dev-server/createEventSocket.js.map +1 -1
  452. package/build/src/start/server/metro/dev-server/createMessageSocket.js +21 -23
  453. package/build/src/start/server/metro/dev-server/createMessageSocket.js.map +1 -1
  454. package/build/src/start/server/metro/dev-server/createMetroMiddleware.js +21 -23
  455. package/build/src/start/server/metro/dev-server/createMetroMiddleware.js.map +1 -1
  456. package/build/src/start/server/metro/dev-server/utils/createSocketBroadcaster.js +2 -4
  457. package/build/src/start/server/metro/dev-server/utils/createSocketBroadcaster.js.map +1 -1
  458. package/build/src/start/server/metro/dev-server/utils/createSocketMap.js +2 -4
  459. package/build/src/start/server/metro/dev-server/utils/createSocketMap.js.map +1 -1
  460. package/build/src/start/server/metro/dev-server/utils/socketMessages.js +4 -8
  461. package/build/src/start/server/metro/dev-server/utils/socketMessages.js.map +1 -1
  462. package/build/src/start/server/metro/externals.js +25 -33
  463. package/build/src/start/server/metro/externals.js.map +1 -1
  464. package/build/src/start/server/metro/fetchRouterManifest.js +12 -16
  465. package/build/src/start/server/metro/fetchRouterManifest.js.map +1 -1
  466. package/build/src/start/server/metro/formatFileCandidates.js +9 -11
  467. package/build/src/start/server/metro/formatFileCandidates.js.map +1 -1
  468. package/build/src/start/server/metro/getCssModulesFromBundler.js +18 -22
  469. package/build/src/start/server/metro/getCssModulesFromBundler.js.map +1 -1
  470. package/build/src/start/server/metro/instantiateMetro.js +79 -85
  471. package/build/src/start/server/metro/instantiateMetro.js.map +1 -1
  472. package/build/src/start/server/metro/log-box/LogBoxLog.js +36 -40
  473. package/build/src/start/server/metro/log-box/LogBoxLog.js.map +1 -1
  474. package/build/src/start/server/metro/log-box/LogBoxSymbolication.js +14 -20
  475. package/build/src/start/server/metro/log-box/LogBoxSymbolication.js.map +1 -1
  476. package/build/src/start/server/metro/log-box/formatProjectFilePath.js +6 -10
  477. package/build/src/start/server/metro/log-box/formatProjectFilePath.js.map +1 -1
  478. package/build/src/start/server/metro/metroErrorInterface.js +78 -88
  479. package/build/src/start/server/metro/metroErrorInterface.js.map +1 -1
  480. package/build/src/start/server/metro/metroErrors.js +4 -8
  481. package/build/src/start/server/metro/metroErrors.js.map +1 -1
  482. package/build/src/start/server/metro/metroPrivateServer.js +7 -9
  483. package/build/src/start/server/metro/metroPrivateServer.js.map +1 -1
  484. package/build/src/start/server/metro/metroVirtualModules.js +8 -10
  485. package/build/src/start/server/metro/metroVirtualModules.js.map +1 -1
  486. package/build/src/start/server/metro/metroWatchTypeScriptFiles.js +22 -24
  487. package/build/src/start/server/metro/metroWatchTypeScriptFiles.js.map +1 -1
  488. package/build/src/start/server/metro/router.js +32 -48
  489. package/build/src/start/server/metro/router.js.map +1 -1
  490. package/build/src/start/server/metro/runServer-fork.js +22 -24
  491. package/build/src/start/server/metro/runServer-fork.js.map +1 -1
  492. package/build/src/start/server/metro/serializeHtml.js +22 -24
  493. package/build/src/start/server/metro/serializeHtml.js.map +1 -1
  494. package/build/src/start/server/metro/symbolicate.js.map +1 -1
  495. package/build/src/start/server/metro/waitForMetroToObserveTypeScriptFile.js +29 -35
  496. package/build/src/start/server/metro/waitForMetroToObserveTypeScriptFile.js.map +1 -1
  497. package/build/src/start/server/metro/withMetroMultiPlatform.js +139 -149
  498. package/build/src/start/server/metro/withMetroMultiPlatform.js.map +1 -1
  499. package/build/src/start/server/metro/withMetroResolvers.js +39 -49
  500. package/build/src/start/server/metro/withMetroResolvers.js.map +1 -1
  501. package/build/src/start/server/middleware/ContextModuleSourceMapsMiddleware.js +6 -8
  502. package/build/src/start/server/middleware/ContextModuleSourceMapsMiddleware.js.map +1 -1
  503. package/build/src/start/server/middleware/CorsMiddleware.js +15 -17
  504. package/build/src/start/server/middleware/CorsMiddleware.js.map +1 -1
  505. package/build/src/start/server/middleware/CreateFileMiddleware.js +31 -32
  506. package/build/src/start/server/middleware/CreateFileMiddleware.js.map +1 -1
  507. package/build/src/start/server/middleware/DevToolsPluginMiddleware.js +19 -22
  508. package/build/src/start/server/middleware/DevToolsPluginMiddleware.js.map +1 -1
  509. package/build/src/start/server/middleware/DomComponentsMiddleware.js +27 -33
  510. package/build/src/start/server/middleware/DomComponentsMiddleware.js.map +1 -1
  511. package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js +60 -64
  512. package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js.map +1 -1
  513. package/build/src/start/server/middleware/ExpoMiddleware.js +9 -15
  514. package/build/src/start/server/middleware/ExpoMiddleware.js.map +1 -1
  515. package/build/src/start/server/middleware/FaviconMiddleware.js +14 -15
  516. package/build/src/start/server/middleware/FaviconMiddleware.js.map +1 -1
  517. package/build/src/start/server/middleware/HistoryFallbackMiddleware.js +2 -4
  518. package/build/src/start/server/middleware/HistoryFallbackMiddleware.js.map +1 -1
  519. package/build/src/start/server/middleware/InterstitialPageMiddleware.js +31 -34
  520. package/build/src/start/server/middleware/InterstitialPageMiddleware.js.map +1 -1
  521. package/build/src/start/server/middleware/ManifestMiddleware.js +56 -64
  522. package/build/src/start/server/middleware/ManifestMiddleware.js.map +1 -1
  523. package/build/src/start/server/middleware/ReactDevToolsPageMiddleware.js +19 -23
  524. package/build/src/start/server/middleware/ReactDevToolsPageMiddleware.js.map +1 -1
  525. package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js +19 -20
  526. package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js.map +1 -1
  527. package/build/src/start/server/middleware/ServeStaticMiddleware.js +9 -11
  528. package/build/src/start/server/middleware/ServeStaticMiddleware.js.map +1 -1
  529. package/build/src/start/server/middleware/createBuiltinAPIRequestHandler.js +11 -17
  530. package/build/src/start/server/middleware/createBuiltinAPIRequestHandler.js.map +1 -1
  531. package/build/src/start/server/middleware/inspector/CdpClient.js +10 -12
  532. package/build/src/start/server/middleware/inspector/CdpClient.js.map +1 -1
  533. package/build/src/start/server/middleware/inspector/JsInspector.js +27 -35
  534. package/build/src/start/server/middleware/inspector/JsInspector.js.map +1 -1
  535. package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js +19 -21
  536. package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js.map +1 -1
  537. package/build/src/start/server/middleware/inspector/middlwareMutations.js +2 -6
  538. package/build/src/start/server/middleware/inspector/middlwareMutations.js.map +1 -1
  539. package/build/src/start/server/middleware/metroOptions.js +96 -120
  540. package/build/src/start/server/middleware/metroOptions.js.map +1 -1
  541. package/build/src/start/server/middleware/mutations.js +3 -7
  542. package/build/src/start/server/middleware/mutations.js.map +1 -1
  543. package/build/src/start/server/middleware/resolveAssets.js +18 -26
  544. package/build/src/start/server/middleware/resolveAssets.js.map +1 -1
  545. package/build/src/start/server/middleware/resolvePlatform.js +15 -23
  546. package/build/src/start/server/middleware/resolvePlatform.js.map +1 -1
  547. package/build/src/start/server/middleware/resolveRuntimeVersionWithExpoUpdatesAsync.js +9 -11
  548. package/build/src/start/server/middleware/resolveRuntimeVersionWithExpoUpdatesAsync.js.map +1 -1
  549. package/build/src/start/server/middleware/server.types.js.map +1 -1
  550. package/build/src/start/server/openPlatforms.js +8 -10
  551. package/build/src/start/server/openPlatforms.js.map +1 -1
  552. package/build/src/start/server/platformBundlers.js +11 -13
  553. package/build/src/start/server/platformBundlers.js.map +1 -1
  554. package/build/src/start/server/serverLogLikeMetro.js +50 -58
  555. package/build/src/start/server/serverLogLikeMetro.js.map +1 -1
  556. package/build/src/start/server/type-generation/expo-env.js +7 -11
  557. package/build/src/start/server/type-generation/expo-env.js.map +1 -1
  558. package/build/src/start/server/type-generation/routes.js +54 -76
  559. package/build/src/start/server/type-generation/routes.js.map +1 -1
  560. package/build/src/start/server/type-generation/startTypescriptTypeGeneration.js +19 -21
  561. package/build/src/start/server/type-generation/startTypescriptTypeGeneration.js.map +1 -1
  562. package/build/src/start/server/type-generation/tsconfig.js +28 -36
  563. package/build/src/start/server/type-generation/tsconfig.js.map +1 -1
  564. package/build/src/start/server/webTemplate.js +24 -28
  565. package/build/src/start/server/webTemplate.js.map +1 -1
  566. package/build/src/start/server/webpack/WebpackBundlerDevServer.js +46 -52
  567. package/build/src/start/server/webpack/WebpackBundlerDevServer.js.map +1 -1
  568. package/build/src/start/server/webpack/compile.js +11 -15
  569. package/build/src/start/server/webpack/compile.js.map +1 -1
  570. package/build/src/start/server/webpack/formatWebpackMessages.js +26 -28
  571. package/build/src/start/server/webpack/formatWebpackMessages.js.map +1 -1
  572. package/build/src/start/server/webpack/resolveFromProject.js +12 -18
  573. package/build/src/start/server/webpack/resolveFromProject.js.map +1 -1
  574. package/build/src/start/server/webpack/tls.js +12 -18
  575. package/build/src/start/server/webpack/tls.js.map +1 -1
  576. package/build/src/start/startAsync.js +27 -31
  577. package/build/src/start/startAsync.js.map +1 -1
  578. package/build/src/utils/FileNotifier.js +17 -20
  579. package/build/src/utils/FileNotifier.js.map +1 -1
  580. package/build/src/utils/ansi.js +5 -7
  581. package/build/src/utils/ansi.js.map +1 -1
  582. package/build/src/utils/args.js +14 -24
  583. package/build/src/utils/args.js.map +1 -1
  584. package/build/src/utils/array.js +6 -18
  585. package/build/src/utils/array.js.map +1 -1
  586. package/build/src/utils/cocoapods.js +46 -54
  587. package/build/src/utils/cocoapods.js.map +1 -1
  588. package/build/src/utils/codesigning.js +68 -78
  589. package/build/src/utils/codesigning.js.map +1 -1
  590. package/build/src/utils/createFileTransform.js +12 -16
  591. package/build/src/utils/createFileTransform.js.map +1 -1
  592. package/build/src/utils/createTempPath.js +13 -17
  593. package/build/src/utils/createTempPath.js.map +1 -1
  594. package/build/src/utils/delay.js +6 -12
  595. package/build/src/utils/delay.js.map +1 -1
  596. package/build/src/utils/dir.js +28 -46
  597. package/build/src/utils/dir.js.map +1 -1
  598. package/build/src/utils/downloadAppAsync.js +8 -10
  599. package/build/src/utils/downloadAppAsync.js.map +1 -1
  600. package/build/src/utils/downloadExpoGoAsync.js +21 -25
  601. package/build/src/utils/downloadExpoGoAsync.js.map +1 -1
  602. package/build/src/utils/editor.js +35 -41
  603. package/build/src/utils/editor.js.map +1 -1
  604. package/build/src/utils/env.js +59 -63
  605. package/build/src/utils/env.js.map +1 -1
  606. package/build/src/utils/errors.js +30 -37
  607. package/build/src/utils/errors.js.map +1 -1
  608. package/build/src/utils/exit.js +31 -35
  609. package/build/src/utils/exit.js.map +1 -1
  610. package/build/src/utils/expoUpdatesCli.js +22 -32
  611. package/build/src/utils/expoUpdatesCli.js.map +1 -1
  612. package/build/src/utils/fetch.js +4 -8
  613. package/build/src/utils/fetch.js.map +1 -1
  614. package/build/src/utils/filePath.js +6 -10
  615. package/build/src/utils/filePath.js.map +1 -1
  616. package/build/src/utils/findUp.js +9 -13
  617. package/build/src/utils/findUp.js.map +1 -1
  618. package/build/src/utils/fn.js +2 -6
  619. package/build/src/utils/fn.js.map +1 -1
  620. package/build/src/utils/getOrPromptApplicationId.js +26 -32
  621. package/build/src/utils/getOrPromptApplicationId.js.map +1 -1
  622. package/build/src/utils/getRunningProcess.js +21 -29
  623. package/build/src/utils/getRunningProcess.js.map +1 -1
  624. package/build/src/utils/git.js +20 -26
  625. package/build/src/utils/git.js.map +1 -1
  626. package/build/src/utils/glob.js +4 -8
  627. package/build/src/utils/glob.js.map +1 -1
  628. package/build/src/utils/interactive.js +1 -3
  629. package/build/src/utils/interactive.js.map +1 -1
  630. package/build/src/utils/ip.js +19 -21
  631. package/build/src/utils/ip.js.map +1 -1
  632. package/build/src/utils/isModuleSymlinked.js +9 -11
  633. package/build/src/utils/isModuleSymlinked.js.map +1 -1
  634. package/build/src/utils/jsonSchemaDeref.js +18 -20
  635. package/build/src/utils/jsonSchemaDeref.js.map +1 -1
  636. package/build/src/utils/link.js +13 -17
  637. package/build/src/utils/link.js.map +1 -1
  638. package/build/src/utils/mergeGitIgnorePaths.js +28 -46
  639. package/build/src/utils/mergeGitIgnorePaths.js.map +1 -1
  640. package/build/src/utils/modifyConfigAsync.js +10 -16
  641. package/build/src/utils/modifyConfigAsync.js.map +1 -1
  642. package/build/src/utils/modifyConfigPlugins.js +6 -10
  643. package/build/src/utils/modifyConfigPlugins.js.map +1 -1
  644. package/build/src/utils/nodeEnv.js +6 -12
  645. package/build/src/utils/nodeEnv.js.map +1 -1
  646. package/build/src/utils/nodeModules.js +8 -10
  647. package/build/src/utils/nodeModules.js.map +1 -1
  648. package/build/src/utils/npm.js +36 -50
  649. package/build/src/utils/npm.js.map +1 -1
  650. package/build/src/utils/obj.js +5 -11
  651. package/build/src/utils/obj.js.map +1 -1
  652. package/build/src/utils/open.js +8 -10
  653. package/build/src/utils/open.js.map +1 -1
  654. package/build/src/utils/ora.js +7 -13
  655. package/build/src/utils/ora.js.map +1 -1
  656. package/build/src/utils/plist.js +15 -21
  657. package/build/src/utils/plist.js.map +1 -1
  658. package/build/src/utils/port.js +33 -43
  659. package/build/src/utils/port.js.map +1 -1
  660. package/build/src/utils/profile.js +7 -11
  661. package/build/src/utils/profile.js.map +1 -1
  662. package/build/src/utils/progress.js +5 -11
  663. package/build/src/utils/progress.js.map +1 -1
  664. package/build/src/utils/prompts.js +29 -47
  665. package/build/src/utils/prompts.js.map +1 -1
  666. package/build/src/utils/resolveArgs.js +24 -36
  667. package/build/src/utils/resolveArgs.js.map +1 -1
  668. package/build/src/utils/scheme.js +32 -40
  669. package/build/src/utils/scheme.js.map +1 -1
  670. package/build/src/utils/stream.js +3 -5
  671. package/build/src/utils/stream.js.map +1 -1
  672. package/build/src/utils/strings.js +4 -6
  673. package/build/src/utils/strings.js.map +1 -1
  674. package/build/src/utils/tar.js +15 -19
  675. package/build/src/utils/tar.js.map +1 -1
  676. package/build/src/utils/telemetry/Telemetry.js +27 -29
  677. package/build/src/utils/telemetry/Telemetry.js.map +1 -1
  678. package/build/src/utils/telemetry/clients/FetchClient.js +13 -15
  679. package/build/src/utils/telemetry/clients/FetchClient.js.map +1 -1
  680. package/build/src/utils/telemetry/clients/FetchDetachedClient.js +22 -26
  681. package/build/src/utils/telemetry/clients/FetchDetachedClient.js.map +1 -1
  682. package/build/src/utils/telemetry/clients/RudderClient.js +8 -10
  683. package/build/src/utils/telemetry/clients/RudderClient.js.map +1 -1
  684. package/build/src/utils/telemetry/clients/RudderDetachedClient.js +22 -26
  685. package/build/src/utils/telemetry/clients/RudderDetachedClient.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/clients/flushRudderDetached.js +10 -10
  689. package/build/src/utils/telemetry/clients/flushRudderDetached.js.map +1 -1
  690. package/build/src/utils/telemetry/events.js +2 -4
  691. package/build/src/utils/telemetry/events.js.map +1 -1
  692. package/build/src/utils/telemetry/flushDetached.js.map +1 -1
  693. package/build/src/utils/telemetry/index.js +29 -25
  694. package/build/src/utils/telemetry/index.js.map +1 -1
  695. package/build/src/utils/telemetry/types.js.map +1 -1
  696. package/build/src/utils/telemetry/utils/constants.js +4 -8
  697. package/build/src/utils/telemetry/utils/constants.js.map +1 -1
  698. package/build/src/utils/telemetry/utils/context.js +14 -18
  699. package/build/src/utils/telemetry/utils/context.js.map +1 -1
  700. package/build/src/utils/template.js +4 -6
  701. package/build/src/utils/template.js.map +1 -1
  702. package/build/src/utils/terminal.js +2 -4
  703. package/build/src/utils/terminal.js.map +1 -1
  704. package/build/src/utils/tsconfig/evaluateTsConfig.js +17 -21
  705. package/build/src/utils/tsconfig/evaluateTsConfig.js.map +1 -1
  706. package/build/src/utils/tsconfig/loadTsConfigPaths.js +14 -18
  707. package/build/src/utils/tsconfig/loadTsConfigPaths.js.map +1 -1
  708. package/build/src/utils/tsconfig/matchTsConfigPathAlias.js +5 -7
  709. package/build/src/utils/tsconfig/matchTsConfigPathAlias.js.map +1 -1
  710. package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js +12 -14
  711. package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js.map +1 -1
  712. package/build/src/utils/url.js +13 -23
  713. package/build/src/utils/url.js.map +1 -1
  714. package/build/src/utils/validateApplicationId.js +86 -108
  715. package/build/src/utils/validateApplicationId.js.map +1 -1
  716. package/build/src/utils/variadic.js +16 -22
  717. package/build/src/utils/variadic.js.map +1 -1
  718. package/build/src/whoami/index.js +7 -11
  719. package/build/src/whoami/index.js.map +1 -1
  720. package/build/src/whoami/whoamiAsync.js +7 -11
  721. package/build/src/whoami/whoamiAsync.js.map +1 -1
  722. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/start/platforms/ios/simctl.ts"],"sourcesContent":["import spawnAsync, { SpawnOptions, SpawnResult } from '@expo/spawn-async';\nimport bplistCreator from 'bplist-creator';\nimport fs from 'fs';\nimport os from 'os';\nimport path from 'path';\n\nimport { isSpawnResultError, xcrunAsync } from './xcrun';\nimport * as Log from '../../../log';\nimport { CommandError } from '../../../utils/errors';\nimport { memoize } from '../../../utils/fn';\nimport { parsePlistAsync } from '../../../utils/plist';\nimport { profile } from '../../../utils/profile';\n\nconst debug = require('debug')('expo:simctl') as typeof console.log;\n\ntype DeviceState = 'Shutdown' | 'Booted';\n\nexport type OSType = 'iOS' | 'tvOS' | 'watchOS' | 'macOS' | 'xrOS';\n\nexport type Device = {\n availabilityError?: 'runtime profile not found';\n /** '/Users/name/Library/Developer/CoreSimulator/Devices/00E55DC0-0364-49DF-9EC6-77BE587137D4/data' */\n dataPath: string;\n /** @example `2811236352` */\n dataPathSize?: number;\n /** '/Users/name/Library/Logs/CoreSimulator/00E55DC0-0364-49DF-9EC6-77BE587137D4' */\n logPath: string;\n /** @example `479232` */\n logPathSize?: number;\n /** '00E55DC0-0364-49DF-9EC6-77BE587137D4' */\n udid: string;\n /** 'com.apple.CoreSimulator.SimRuntime.iOS-15-1' */\n runtime: string;\n /** If the device is \"available\" which generally means that the OS files haven't been deleted (this can happen when Xcode updates). */\n isAvailable: boolean;\n /** 'com.apple.CoreSimulator.SimDeviceType.iPhone-13-Pro' */\n deviceTypeIdentifier: string;\n state: DeviceState;\n /** 'iPhone 13 Pro' */\n name: string;\n /** Type of OS the device uses. */\n osType: OSType;\n /** '15.1' */\n osVersion: string;\n /** 'iPhone 13 Pro (15.1)' */\n windowName: string;\n};\n\ntype SimulatorDeviceList = {\n devices: {\n [runtime: string]: Device[];\n };\n};\n\ntype DeviceContext = Pick<Device, 'udid'>;\n\n/** Returns true if the given value is an `OSType`, if we don't recognize the value we continue anyways but warn. */\nexport function isOSType(value: any): value is OSType {\n if (!value || typeof value !== 'string') return false;\n\n const knownTypes = ['iOS', 'tvOS', 'watchOS', 'macOS'];\n if (!knownTypes.includes(value)) {\n Log.warn(`Unknown OS type: ${value}. Expected one of: ${knownTypes.join(', ')}`);\n }\n return true;\n}\n\n/**\n * Returns the local path for the installed tar.app. Returns null when the app isn't installed.\n *\n * @param device context for selecting a device.\n * @param props.appId bundle identifier for app.\n * @returns local file path to installed app binary, e.g. '/Users/evanbacon/Library/Developer/CoreSimulator/Devices/EFEEA6EF-E3F5-4EDE-9B72-29EAFA7514AE/data/Containers/Bundle/Application/FA43A0C6-C2AD-442D-B8B1-EAF3E88CF3BF/Exponent-2.21.3.tar.app'\n */\nexport async function getContainerPathAsync(\n device: Partial<DeviceContext>,\n {\n appId,\n }: {\n appId: string;\n }\n): Promise<string | null> {\n try {\n const { stdout } = await simctlAsync(['get_app_container', resolveId(device), appId]);\n return stdout.trim();\n } catch (error: any) {\n if (error.stderr?.match(/No such file or directory/)) {\n return null;\n }\n throw error;\n }\n}\n\n/** Return a value from an installed app's Info.plist. */\nexport async function getInfoPlistValueAsync(\n device: Partial<DeviceContext>,\n {\n appId,\n key,\n containerPath,\n }: {\n appId: string;\n key: string;\n containerPath?: string;\n }\n): Promise<string | null> {\n const ensuredContainerPath = containerPath ?? (await getContainerPathAsync(device, { appId }));\n if (ensuredContainerPath) {\n try {\n const { output } = await spawnAsync(\n 'defaults',\n ['read', `${ensuredContainerPath}/Info`, key],\n {\n stdio: 'pipe',\n }\n );\n return output.join('\\n').trim();\n } catch {\n return null;\n }\n }\n return null;\n}\n\n/** Rewrite the simulator permissions to allow opening deep links without needing to prompt the user first. */\nasync function updateSimulatorLinkingPermissionsAsync(\n device: Partial<DeviceContext>,\n { url, appId }: { url: string; appId?: string }\n) {\n if (!device.udid || !appId) {\n debug('Skipping deep link permissions as missing properties could not be found:', {\n url,\n appId,\n udid: device.udid,\n });\n return;\n }\n debug('Rewriting simulator permissions to support deep linking:', {\n url,\n appId,\n udid: device.udid,\n });\n let scheme: string;\n try {\n // Attempt to extract the scheme from the URL.\n scheme = new URL(url).protocol.slice(0, -1);\n } catch (error: any) {\n debug(`Could not parse the URL scheme: ${error.message}`);\n return;\n }\n\n // Get the hard-coded path to the simulator's scheme approval plist file.\n const plistPath = path.join(\n os.homedir(),\n `Library/Developer/CoreSimulator/Devices`,\n device.udid,\n `data/Library/Preferences/com.apple.launchservices.schemeapproval.plist`\n );\n\n const plistData = fs.existsSync(plistPath)\n ? // If the file exists, then read it in the bplist format.\n await parsePlistAsync(plistPath)\n : // The file doesn't exist when we first launch the simulator, but an empty object can be used to create it (June 2024 x Xcode 15.3).\n // Can be tested by launching a new simulator or by deleting the file and relaunching the simulator.\n {};\n\n debug('Allowed links:', plistData);\n const key = `com.apple.CoreSimulator.CoreSimulatorBridge-->${scheme}`;\n // Replace any existing value for the scheme with the new appId.\n plistData[key] = appId;\n debug('Allowing deep link:', { key, appId });\n\n try {\n const data = bplistCreator(plistData);\n // Write the updated plist back to disk\n await fs.promises.writeFile(plistPath, data);\n } catch (error: any) {\n Log.warn(`Could not update simulator linking permissions: ${error.message}`);\n }\n}\n\nconst updateSimulatorLinkingPermissionsAsyncMemo = memoize(updateSimulatorLinkingPermissionsAsync);\n\n/** Open a URL on a device. The url can have any protocol. */\nexport async function openUrlAsync(\n device: Partial<DeviceContext>,\n options: { url: string; appId?: string }\n): Promise<void> {\n if (options.appId) {\n await profile(\n updateSimulatorLinkingPermissionsAsyncMemo,\n 'updateSimulatorLinkingPermissionsAsync'\n )({ udid: device.udid }, options);\n }\n\n try {\n // Skip logging since this is likely to fail.\n await simctlAsync(['openurl', resolveId(device), options.url]);\n } catch (error: any) {\n if (!error.stderr?.match(/Unable to lookup in current state: Shut/)) {\n throw error;\n }\n\n // If the device was in a weird in-between state (\"Shutting Down\" or \"Shutdown\"), then attempt to reboot it and try again.\n // This can happen when quitting the Simulator app, and immediately pressing `i` to reopen the project.\n\n // First boot the simulator\n await bootDeviceAsync({ udid: resolveId(device) });\n\n // Finally, try again...\n return await openUrlAsync(device, options);\n }\n}\n\n/** Open a simulator using a bundle identifier. If no app with a matching bundle identifier is installed then an error will be thrown. */\nexport async function openAppIdAsync(\n device: Partial<DeviceContext>,\n options: {\n appId: string;\n }\n): Promise<SpawnResult> {\n const results = await openAppIdInternalAsync(device, options);\n // Similar to 194, this is a conformance issue which indicates that the given device has no app that can handle our launch request.\n if (results.status === 4) {\n throw new CommandError('APP_NOT_INSTALLED', results.stderr);\n }\n return results;\n}\nasync function openAppIdInternalAsync(\n device: Partial<DeviceContext>,\n options: {\n appId: string;\n }\n): Promise<SpawnResult> {\n try {\n return await simctlAsync(['launch', resolveId(device), options.appId]);\n } catch (error: any) {\n if ('status' in error) {\n return error;\n }\n throw error;\n }\n}\n\n// This will only boot in headless mode if the Simulator app is not running.\nexport async function bootAsync(device: DeviceContext): Promise<Device | null> {\n await bootDeviceAsync(device);\n return isDeviceBootedAsync(device);\n}\n\n/** Returns a list of devices whose current state is 'Booted' as an array. */\nexport async function getBootedSimulatorsAsync(): Promise<Device[]> {\n const simulatorDeviceInfo = await getRuntimesAsync('devices');\n return Object.values(simulatorDeviceInfo.devices).flatMap((runtime) =>\n runtime.filter((device) => device.state === 'Booted')\n );\n}\n\n/** Returns the current device if its state is 'Booted'. */\nexport async function isDeviceBootedAsync(device: Partial<DeviceContext>): Promise<Device | null> {\n // Simulators can be booted even if the app isn't running :(\n const devices = await getBootedSimulatorsAsync();\n if (device.udid) {\n return devices.find((bootedDevice) => bootedDevice.udid === device.udid) ?? null;\n }\n\n return devices[0] ?? null;\n}\n\n/** Boot a device. */\nexport async function bootDeviceAsync(device: DeviceContext): Promise<void> {\n try {\n // Skip logging since this is likely to fail.\n await simctlAsync(['boot', device.udid]);\n } catch (error: any) {\n if (!error.stderr?.match(/Unable to boot device in current state: Booted/)) {\n throw error;\n }\n }\n}\n\n/** Install a binary file on the device. */\nexport async function installAsync(\n device: Partial<DeviceContext>,\n options: {\n /** Local absolute file path to an app binary that is built and provisioned for iOS simulators. */\n filePath: string;\n }\n): Promise<any> {\n return simctlAsync(['install', resolveId(device), options.filePath]);\n}\n\n/** Uninstall an app from the provided device. */\nexport async function uninstallAsync(\n device: Partial<DeviceContext>,\n options: {\n /** Bundle identifier */\n appId: string;\n }\n): Promise<any> {\n return simctlAsync(['uninstall', resolveId(device), options.appId]);\n}\n\nfunction parseSimControlJSONResults(input: string): any {\n try {\n return JSON.parse(input);\n } catch (error: any) {\n // Nov 15, 2020: Observed this can happen when opening the simulator and the simulator prompts the user to update the xcode command line tools.\n // Unexpected token I in JSON at position 0\n if (error.message.includes('Unexpected token')) {\n Log.error(`Apple's simctl returned malformed JSON:\\n${input}`);\n }\n throw error;\n }\n}\n\n/** Get all runtime devices given a certain type. */\nasync function getRuntimesAsync(\n type: 'devices' | 'devicetypes' | 'runtimes' | 'pairs',\n query?: string | 'available'\n): Promise<SimulatorDeviceList> {\n const result = await simctlAsync(['list', type, '--json', query]);\n const info = parseSimControlJSONResults(result.stdout) as SimulatorDeviceList;\n\n for (const runtime of Object.keys(info.devices)) {\n // Given a string like 'com.apple.CoreSimulator.SimRuntime.tvOS-13-4'\n const runtimeSuffix = runtime.split('com.apple.CoreSimulator.SimRuntime.').pop()!;\n // Create an array [tvOS, 13, 4]\n const [osType, ...osVersionComponents] = runtimeSuffix.split('-');\n // Join the end components [13, 4] -> '13.4'\n const osVersion = osVersionComponents.join('.');\n const sims = info.devices[runtime];\n for (const device of sims) {\n device.runtime = runtime;\n device.osVersion = osVersion;\n device.windowName = `${device.name} (${osVersion})`;\n device.osType = osType as OSType;\n }\n }\n return info;\n}\n\n/** Return a list of iOS simulators. */\nexport async function getDevicesAsync(): Promise<Device[]> {\n const simulatorDeviceInfo = await getRuntimesAsync('devices');\n return Object.values(simulatorDeviceInfo.devices).flat();\n}\n\n/** Run a `simctl` command. */\nexport async function simctlAsync(\n args: (string | undefined)[],\n options?: SpawnOptions\n): Promise<SpawnResult> {\n try {\n return await xcrunAsync(['simctl', ...args], options);\n } catch (error) {\n if (isSpawnResultError(error)) {\n // TODO: Add more tips.\n // if (error.status === 115) {\n // }\n }\n throw error;\n }\n}\n\nfunction resolveId(device: Partial<DeviceContext>): string {\n return device.udid ?? 'booted';\n}\n"],"names":["bootAsync","bootDeviceAsync","getBootedSimulatorsAsync","getContainerPathAsync","getDevicesAsync","getInfoPlistValueAsync","installAsync","isDeviceBootedAsync","isOSType","openAppIdAsync","openUrlAsync","simctlAsync","uninstallAsync","debug","require","value","knownTypes","includes","Log","warn","join","device","appId","stdout","resolveId","trim","error","stderr","match","key","containerPath","ensuredContainerPath","output","spawnAsync","stdio","updateSimulatorLinkingPermissionsAsync","url","udid","scheme","URL","protocol","slice","message","plistPath","path","os","homedir","plistData","fs","existsSync","parsePlistAsync","data","bplistCreator","promises","writeFile","updateSimulatorLinkingPermissionsAsyncMemo","memoize","options","profile","results","openAppIdInternalAsync","status","CommandError","simulatorDeviceInfo","getRuntimesAsync","Object","values","devices","flatMap","runtime","filter","state","find","bootedDevice","filePath","parseSimControlJSONResults","input","JSON","parse","type","query","result","info","keys","runtimeSuffix","split","pop","osType","osVersionComponents","osVersion","sims","windowName","name","flat","args","xcrunAsync","isSpawnResultError"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../src/start/platforms/ios/simctl.ts"],"sourcesContent":["import spawnAsync, { SpawnOptions, SpawnResult } from '@expo/spawn-async';\nimport bplistCreator from 'bplist-creator';\nimport fs from 'fs';\nimport os from 'os';\nimport path from 'path';\n\nimport { isSpawnResultError, xcrunAsync } from './xcrun';\nimport * as Log from '../../../log';\nimport { CommandError } from '../../../utils/errors';\nimport { memoize } from '../../../utils/fn';\nimport { parsePlistAsync } from '../../../utils/plist';\nimport { profile } from '../../../utils/profile';\n\nconst debug = require('debug')('expo:simctl') as typeof console.log;\n\ntype DeviceState = 'Shutdown' | 'Booted';\n\nexport type OSType = 'iOS' | 'tvOS' | 'watchOS' | 'macOS' | 'xrOS';\n\nexport type Device = {\n availabilityError?: 'runtime profile not found';\n /** '/Users/name/Library/Developer/CoreSimulator/Devices/00E55DC0-0364-49DF-9EC6-77BE587137D4/data' */\n dataPath: string;\n /** @example `2811236352` */\n dataPathSize?: number;\n /** '/Users/name/Library/Logs/CoreSimulator/00E55DC0-0364-49DF-9EC6-77BE587137D4' */\n logPath: string;\n /** @example `479232` */\n logPathSize?: number;\n /** '00E55DC0-0364-49DF-9EC6-77BE587137D4' */\n udid: string;\n /** 'com.apple.CoreSimulator.SimRuntime.iOS-15-1' */\n runtime: string;\n /** If the device is \"available\" which generally means that the OS files haven't been deleted (this can happen when Xcode updates). */\n isAvailable: boolean;\n /** 'com.apple.CoreSimulator.SimDeviceType.iPhone-13-Pro' */\n deviceTypeIdentifier: string;\n state: DeviceState;\n /** 'iPhone 13 Pro' */\n name: string;\n /** Type of OS the device uses. */\n osType: OSType;\n /** '15.1' */\n osVersion: string;\n /** 'iPhone 13 Pro (15.1)' */\n windowName: string;\n};\n\ntype SimulatorDeviceList = {\n devices: {\n [runtime: string]: Device[];\n };\n};\n\ntype DeviceContext = Pick<Device, 'udid'>;\n\n/** Returns true if the given value is an `OSType`, if we don't recognize the value we continue anyways but warn. */\nexport function isOSType(value: any): value is OSType {\n if (!value || typeof value !== 'string') return false;\n\n const knownTypes = ['iOS', 'tvOS', 'watchOS', 'macOS'];\n if (!knownTypes.includes(value)) {\n Log.warn(`Unknown OS type: ${value}. Expected one of: ${knownTypes.join(', ')}`);\n }\n return true;\n}\n\n/**\n * Returns the local path for the installed tar.app. Returns null when the app isn't installed.\n *\n * @param device context for selecting a device.\n * @param props.appId bundle identifier for app.\n * @returns local file path to installed app binary, e.g. '/Users/evanbacon/Library/Developer/CoreSimulator/Devices/EFEEA6EF-E3F5-4EDE-9B72-29EAFA7514AE/data/Containers/Bundle/Application/FA43A0C6-C2AD-442D-B8B1-EAF3E88CF3BF/Exponent-2.21.3.tar.app'\n */\nexport async function getContainerPathAsync(\n device: Partial<DeviceContext>,\n {\n appId,\n }: {\n appId: string;\n }\n): Promise<string | null> {\n try {\n const { stdout } = await simctlAsync(['get_app_container', resolveId(device), appId]);\n return stdout.trim();\n } catch (error: any) {\n if (error.stderr?.match(/No such file or directory/)) {\n return null;\n }\n throw error;\n }\n}\n\n/** Return a value from an installed app's Info.plist. */\nexport async function getInfoPlistValueAsync(\n device: Partial<DeviceContext>,\n {\n appId,\n key,\n containerPath,\n }: {\n appId: string;\n key: string;\n containerPath?: string;\n }\n): Promise<string | null> {\n const ensuredContainerPath = containerPath ?? (await getContainerPathAsync(device, { appId }));\n if (ensuredContainerPath) {\n try {\n const { output } = await spawnAsync(\n 'defaults',\n ['read', `${ensuredContainerPath}/Info`, key],\n {\n stdio: 'pipe',\n }\n );\n return output.join('\\n').trim();\n } catch {\n return null;\n }\n }\n return null;\n}\n\n/** Rewrite the simulator permissions to allow opening deep links without needing to prompt the user first. */\nasync function updateSimulatorLinkingPermissionsAsync(\n device: Partial<DeviceContext>,\n { url, appId }: { url: string; appId?: string }\n) {\n if (!device.udid || !appId) {\n debug('Skipping deep link permissions as missing properties could not be found:', {\n url,\n appId,\n udid: device.udid,\n });\n return;\n }\n debug('Rewriting simulator permissions to support deep linking:', {\n url,\n appId,\n udid: device.udid,\n });\n let scheme: string;\n try {\n // Attempt to extract the scheme from the URL.\n scheme = new URL(url).protocol.slice(0, -1);\n } catch (error: any) {\n debug(`Could not parse the URL scheme: ${error.message}`);\n return;\n }\n\n // Get the hard-coded path to the simulator's scheme approval plist file.\n const plistPath = path.join(\n os.homedir(),\n `Library/Developer/CoreSimulator/Devices`,\n device.udid,\n `data/Library/Preferences/com.apple.launchservices.schemeapproval.plist`\n );\n\n const plistData = fs.existsSync(plistPath)\n ? // If the file exists, then read it in the bplist format.\n await parsePlistAsync(plistPath)\n : // The file doesn't exist when we first launch the simulator, but an empty object can be used to create it (June 2024 x Xcode 15.3).\n // Can be tested by launching a new simulator or by deleting the file and relaunching the simulator.\n {};\n\n debug('Allowed links:', plistData);\n const key = `com.apple.CoreSimulator.CoreSimulatorBridge-->${scheme}`;\n // Replace any existing value for the scheme with the new appId.\n plistData[key] = appId;\n debug('Allowing deep link:', { key, appId });\n\n try {\n const data = bplistCreator(plistData);\n // Write the updated plist back to disk\n await fs.promises.writeFile(plistPath, data);\n } catch (error: any) {\n Log.warn(`Could not update simulator linking permissions: ${error.message}`);\n }\n}\n\nconst updateSimulatorLinkingPermissionsAsyncMemo = memoize(updateSimulatorLinkingPermissionsAsync);\n\n/** Open a URL on a device. The url can have any protocol. */\nexport async function openUrlAsync(\n device: Partial<DeviceContext>,\n options: { url: string; appId?: string }\n): Promise<void> {\n if (options.appId) {\n await profile(\n updateSimulatorLinkingPermissionsAsyncMemo,\n 'updateSimulatorLinkingPermissionsAsync'\n )({ udid: device.udid }, options);\n }\n\n try {\n // Skip logging since this is likely to fail.\n await simctlAsync(['openurl', resolveId(device), options.url]);\n } catch (error: any) {\n if (!error.stderr?.match(/Unable to lookup in current state: Shut/)) {\n throw error;\n }\n\n // If the device was in a weird in-between state (\"Shutting Down\" or \"Shutdown\"), then attempt to reboot it and try again.\n // This can happen when quitting the Simulator app, and immediately pressing `i` to reopen the project.\n\n // First boot the simulator\n await bootDeviceAsync({ udid: resolveId(device) });\n\n // Finally, try again...\n return await openUrlAsync(device, options);\n }\n}\n\n/** Open a simulator using a bundle identifier. If no app with a matching bundle identifier is installed then an error will be thrown. */\nexport async function openAppIdAsync(\n device: Partial<DeviceContext>,\n options: {\n appId: string;\n }\n): Promise<SpawnResult> {\n const results = await openAppIdInternalAsync(device, options);\n // Similar to 194, this is a conformance issue which indicates that the given device has no app that can handle our launch request.\n if (results.status === 4) {\n throw new CommandError('APP_NOT_INSTALLED', results.stderr);\n }\n return results;\n}\nasync function openAppIdInternalAsync(\n device: Partial<DeviceContext>,\n options: {\n appId: string;\n }\n): Promise<SpawnResult> {\n try {\n return await simctlAsync(['launch', resolveId(device), options.appId]);\n } catch (error: any) {\n if ('status' in error) {\n return error;\n }\n throw error;\n }\n}\n\n// This will only boot in headless mode if the Simulator app is not running.\nexport async function bootAsync(device: DeviceContext): Promise<Device | null> {\n await bootDeviceAsync(device);\n return isDeviceBootedAsync(device);\n}\n\n/** Returns a list of devices whose current state is 'Booted' as an array. */\nexport async function getBootedSimulatorsAsync(): Promise<Device[]> {\n const simulatorDeviceInfo = await getRuntimesAsync('devices');\n return Object.values(simulatorDeviceInfo.devices).flatMap((runtime) =>\n runtime.filter((device) => device.state === 'Booted')\n );\n}\n\n/** Returns the current device if its state is 'Booted'. */\nexport async function isDeviceBootedAsync(device: Partial<DeviceContext>): Promise<Device | null> {\n // Simulators can be booted even if the app isn't running :(\n const devices = await getBootedSimulatorsAsync();\n if (device.udid) {\n return devices.find((bootedDevice) => bootedDevice.udid === device.udid) ?? null;\n }\n\n return devices[0] ?? null;\n}\n\n/** Boot a device. */\nexport async function bootDeviceAsync(device: DeviceContext): Promise<void> {\n try {\n // Skip logging since this is likely to fail.\n await simctlAsync(['boot', device.udid]);\n } catch (error: any) {\n if (!error.stderr?.match(/Unable to boot device in current state: Booted/)) {\n throw error;\n }\n }\n}\n\n/** Install a binary file on the device. */\nexport async function installAsync(\n device: Partial<DeviceContext>,\n options: {\n /** Local absolute file path to an app binary that is built and provisioned for iOS simulators. */\n filePath: string;\n }\n): Promise<any> {\n return simctlAsync(['install', resolveId(device), options.filePath]);\n}\n\n/** Uninstall an app from the provided device. */\nexport async function uninstallAsync(\n device: Partial<DeviceContext>,\n options: {\n /** Bundle identifier */\n appId: string;\n }\n): Promise<any> {\n return simctlAsync(['uninstall', resolveId(device), options.appId]);\n}\n\nfunction parseSimControlJSONResults(input: string): any {\n try {\n return JSON.parse(input);\n } catch (error: any) {\n // Nov 15, 2020: Observed this can happen when opening the simulator and the simulator prompts the user to update the xcode command line tools.\n // Unexpected token I in JSON at position 0\n if (error.message.includes('Unexpected token')) {\n Log.error(`Apple's simctl returned malformed JSON:\\n${input}`);\n }\n throw error;\n }\n}\n\n/** Get all runtime devices given a certain type. */\nasync function getRuntimesAsync(\n type: 'devices' | 'devicetypes' | 'runtimes' | 'pairs',\n query?: string | 'available'\n): Promise<SimulatorDeviceList> {\n const result = await simctlAsync(['list', type, '--json', query]);\n const info = parseSimControlJSONResults(result.stdout) as SimulatorDeviceList;\n\n for (const runtime of Object.keys(info.devices)) {\n // Given a string like 'com.apple.CoreSimulator.SimRuntime.tvOS-13-4'\n const runtimeSuffix = runtime.split('com.apple.CoreSimulator.SimRuntime.').pop()!;\n // Create an array [tvOS, 13, 4]\n const [osType, ...osVersionComponents] = runtimeSuffix.split('-');\n // Join the end components [13, 4] -> '13.4'\n const osVersion = osVersionComponents.join('.');\n const sims = info.devices[runtime];\n for (const device of sims) {\n device.runtime = runtime;\n device.osVersion = osVersion;\n device.windowName = `${device.name} (${osVersion})`;\n device.osType = osType as OSType;\n }\n }\n return info;\n}\n\n/** Return a list of iOS simulators. */\nexport async function getDevicesAsync(): Promise<Device[]> {\n const simulatorDeviceInfo = await getRuntimesAsync('devices');\n return Object.values(simulatorDeviceInfo.devices).flat();\n}\n\n/** Run a `simctl` command. */\nexport async function simctlAsync(\n args: (string | undefined)[],\n options?: SpawnOptions\n): Promise<SpawnResult> {\n try {\n return await xcrunAsync(['simctl', ...args], options);\n } catch (error) {\n if (isSpawnResultError(error)) {\n // TODO: Add more tips.\n // if (error.status === 115) {\n // }\n }\n throw error;\n }\n}\n\nfunction resolveId(device: Partial<DeviceContext>): string {\n return device.udid ?? 'booted';\n}\n"],"names":["isOSType","getContainerPathAsync","getInfoPlistValueAsync","openUrlAsync","openAppIdAsync","bootAsync","getBootedSimulatorsAsync","isDeviceBootedAsync","bootDeviceAsync","installAsync","uninstallAsync","getDevicesAsync","simctlAsync","debug","require","value","knownTypes","includes","Log","warn","join","device","appId","stdout","resolveId","trim","error","stderr","match","key","containerPath","ensuredContainerPath","output","spawnAsync","stdio","updateSimulatorLinkingPermissionsAsync","url","udid","scheme","URL","protocol","slice","message","plistPath","path","os","homedir","plistData","fs","existsSync","parsePlistAsync","data","bplistCreator","promises","writeFile","updateSimulatorLinkingPermissionsAsyncMemo","memoize","options","profile","results","openAppIdInternalAsync","status","CommandError","simulatorDeviceInfo","getRuntimesAsync","Object","values","devices","flatMap","runtime","filter","state","find","bootedDevice","filePath","parseSimControlJSONResults","input","JSON","parse","type","query","result","info","keys","runtimeSuffix","split","pop","osType","osVersionComponents","osVersion","sims","windowName","name","flat","args","xcrunAsync","isSpawnResultError"],"mappings":"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"}
@@ -9,23 +9,19 @@ function _export(target, all) {
9
9
  });
10
10
  }
11
11
  _export(exports, {
12
- SimulatorLogStreamer: function() {
13
- return SimulatorLogStreamer;
14
- },
15
- onMessage: function() {
16
- return onMessage;
17
- }
12
+ SimulatorLogStreamer: ()=>SimulatorLogStreamer,
13
+ onMessage: ()=>onMessage
18
14
  });
19
15
  function _chalk() {
20
- const data = /*#__PURE__*/ _interop_require_default(require("chalk"));
16
+ const data = /*#__PURE__*/ _interopRequireDefault(require("chalk"));
21
17
  _chalk = function() {
22
18
  return data;
23
19
  };
24
20
  return data;
25
21
  }
26
- function _child_process() {
22
+ function _childProcess() {
27
23
  const data = require("child_process");
28
- _child_process = function() {
24
+ _childProcess = function() {
29
25
  return data;
30
26
  };
31
27
  return data;
@@ -38,24 +34,24 @@ function _os() {
38
34
  return data;
39
35
  }
40
36
  function _path() {
41
- const data = /*#__PURE__*/ _interop_require_default(require("path"));
37
+ const data = /*#__PURE__*/ _interopRequireDefault(require("path"));
42
38
  _path = function() {
43
39
  return data;
44
40
  };
45
41
  return data;
46
42
  }
47
- function _wrapansi() {
48
- const data = /*#__PURE__*/ _interop_require_default(require("wrap-ansi"));
49
- _wrapansi = function() {
43
+ function _wrapAnsi() {
44
+ const data = /*#__PURE__*/ _interopRequireDefault(require("wrap-ansi"));
45
+ _wrapAnsi = function() {
50
46
  return data;
51
47
  };
52
48
  return data;
53
49
  }
54
50
  const _simctl = require("./simctl");
55
- const _log = /*#__PURE__*/ _interop_require_wildcard(require("../../../log"));
51
+ const _log = /*#__PURE__*/ _interopRequireWildcard(require("../../../log"));
56
52
  const _errors = require("../../../utils/errors");
57
53
  const _exit = require("../../../utils/exit");
58
- function _interop_require_default(obj) {
54
+ function _interopRequireDefault(obj) {
59
55
  return obj && obj.__esModule ? obj : {
60
56
  default: obj
61
57
  };
@@ -68,7 +64,7 @@ function _getRequireWildcardCache(nodeInterop) {
68
64
  return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
69
65
  })(nodeInterop);
70
66
  }
71
- function _interop_require_wildcard(obj, nodeInterop) {
67
+ function _interopRequireWildcard(obj, nodeInterop) {
72
68
  if (!nodeInterop && obj && obj.__esModule) {
73
69
  return obj;
74
70
  }
@@ -81,9 +77,7 @@ function _interop_require_wildcard(obj, nodeInterop) {
81
77
  if (cache && cache.has(obj)) {
82
78
  return cache.get(obj);
83
79
  }
84
- var newObj = {
85
- __proto__: null
86
- };
80
+ var newObj = {};
87
81
  var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
88
82
  for(var key in obj){
89
83
  if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
@@ -102,8 +96,8 @@ function _interop_require_wildcard(obj, nodeInterop) {
102
96
  return newObj;
103
97
  }
104
98
  class SimulatorLogStreamer {
105
- static #_ = this.cache = [];
106
- static #_2 = this.getStreamer = (device, resolver)=>{
99
+ static cache = [];
100
+ static getStreamer = (device, resolver)=>{
107
101
  return SimulatorLogStreamer.cache.find((streamer)=>streamer.device.udid === device.udid) ?? new SimulatorLogStreamer(device, resolver);
108
102
  };
109
103
  constructor(device, resolver){
@@ -116,7 +110,7 @@ class SimulatorLogStreamer {
116
110
  return !!this.childProcess;
117
111
  }
118
112
  async resolvePidAsync() {
119
- if ('pid' in this.resolver) {
113
+ if ("pid" in this.resolver) {
120
114
  return this.resolver.pid;
121
115
  }
122
116
  return getImageNameFromBundleIdentifierAsync(this.device.udid, this.resolver.appId);
@@ -128,33 +122,33 @@ class SimulatorLogStreamer {
128
122
  throw new _errors.CommandError(`Could not find pid for ${this.device.udid}`);
129
123
  }
130
124
  // xcrun simctl spawn booted log stream --process --style json
131
- this.childProcess = (0, _child_process().spawn)('xcrun', [
132
- 'simctl',
133
- 'spawn',
125
+ this.childProcess = (0, _childProcess().spawn)("xcrun", [
126
+ "simctl",
127
+ "spawn",
134
128
  this.device.udid,
135
- 'log',
136
- 'stream',
137
- '--process',
129
+ "log",
130
+ "stream",
131
+ "--process",
138
132
  pid,
139
133
  // ndjson provides a better format than json.
140
- '--style',
141
- 'ndjson',
134
+ "--style",
135
+ "ndjson",
142
136
  // Provide the source so we can filter logs better
143
- '--source',
137
+ "--source",
144
138
  // log, activity, trace -- activity was related to layouts, trace didn't work, so that leaves log.
145
139
  // Passing nothing combines all three, but we don't use activity.
146
- '--type',
147
- 'log',
140
+ "--type",
141
+ "log",
148
142
  // backtrace doesn't seem very useful in basic cases.
149
143
  // TODO: Maybe we can format as a stack trace for native errors.
150
- '--no-backtrace'
144
+ "--no-backtrace",
151
145
  ]);
152
- this.childProcess.stdout.on('data', (data)=>{
146
+ this.childProcess.stdout.on("data", (data)=>{
153
147
  // Sometimes more than one chunk comes at a time, here we split by system newline,
154
148
  // then trim and filter.
155
149
  const strings = data.toString().split(_os().EOL).map((value)=>value.trim())// This filters out the first log which says something like:
156
150
  // Filtering the log data using "process BEGINSWITH[cd] "my-app" AND type == 1024"
157
- .filter((value)=>value.startsWith('{'));
151
+ .filter((value)=>value.startsWith("{"));
158
152
  strings.forEach((str)=>{
159
153
  const simLog = parseMessageJson(str);
160
154
  if (!simLog) {
@@ -163,21 +157,22 @@ class SimulatorLogStreamer {
163
157
  onMessage(simLog);
164
158
  });
165
159
  });
166
- this.childProcess.on('error', ({ message })=>{
167
- _log.debug('[simctl error]:', message);
160
+ this.childProcess.on("error", ({ message })=>{
161
+ _log.debug("[simctl error]:", message);
168
162
  });
169
163
  this.off = (0, _exit.installExitHooks)(()=>{
170
164
  this.detachAsync.bind(this);
171
165
  });
172
166
  }
173
167
  detachAsync() {
174
- this.off == null ? void 0 : this.off.call(this);
168
+ var _obj, ref;
169
+ (ref = (_obj = this).off) == null ? void 0 : ref.call(_obj);
175
170
  this.off = null;
176
171
  if (this.childProcess) {
177
172
  return new Promise((resolve)=>{
178
- var _this_childProcess, _this_childProcess1;
179
- (_this_childProcess = this.childProcess) == null ? void 0 : _this_childProcess.on('close', resolve);
180
- (_this_childProcess1 = this.childProcess) == null ? void 0 : _this_childProcess1.kill();
173
+ var ref, ref1;
174
+ (ref = this.childProcess) == null ? void 0 : ref.on("close", resolve);
175
+ (ref1 = this.childProcess) == null ? void 0 : ref1.kill();
181
176
  this.childProcess = null;
182
177
  });
183
178
  }
@@ -189,18 +184,18 @@ function parseMessageJson(data) {
189
184
  try {
190
185
  return JSON.parse(stringData);
191
186
  } catch {
192
- _log.debug('Failed to parse simctl JSON message:\n' + stringData);
187
+ _log.debug("Failed to parse simctl JSON message:\n" + stringData);
193
188
  }
194
189
  return null;
195
190
  }
196
191
  // There are a lot of networking logs in RN that aren't relevant to the user.
197
192
  function isNetworkLog(simLog) {
198
- var _simLog_source;
199
- return simLog.subsystem === 'com.apple.network' || simLog.category === 'connection' || ((_simLog_source = simLog.source) == null ? void 0 : _simLog_source.image) === 'CFNetwork';
193
+ var ref;
194
+ return simLog.subsystem === "com.apple.network" || simLog.category === "connection" || ((ref = simLog.source) == null ? void 0 : ref.image) === "CFNetwork";
200
195
  }
201
196
  function isReactLog(simLog) {
202
- var _simLog_source;
203
- return simLog.subsystem === 'com.facebook.react.log' && ((_simLog_source = simLog.source) == null ? void 0 : _simLog_source.file) === 'RCTLog.mm';
197
+ var ref;
198
+ return simLog.subsystem === "com.facebook.react.log" && ((ref = simLog.source) == null ? void 0 : ref.file) === "RCTLog.mm";
204
199
  }
205
200
  // It's not clear what these are but they aren't very useful.
206
201
  // (The connection to service on pid 0 named com.apple.commcenter.coretelephony.xpc was invalidated)
@@ -208,30 +203,30 @@ function isReactLog(simLog) {
208
203
  function isCoreTelephonyLog(simLog) {
209
204
  // [CoreTelephony] Updating selectors failed with: Error Domain=NSCocoaErrorDomain Code=4099
210
205
  // "The connection to service on pid 0 named com.apple.commcenter.coretelephony.xpc was invalidated." UserInfo={NSDebugDescription=The connection to service on pid 0 named com.apple.commcenter.coretelephony.xpc was invalidated.}
211
- return simLog.subsystem === 'com.apple.CoreTelephony';
206
+ return simLog.subsystem === "com.apple.CoreTelephony";
212
207
  }
213
208
  // https://stackoverflow.com/a/65313219/4047926
214
209
  function isWebKitLog(simLog) {
215
210
  // [WebKit] 0x1143ca500 - ProcessAssertion: Failed to acquire RBS Background assertion 'WebProcess Background Assertion' for process with PID 27084, error: Error Domain=RBSAssertionErrorDomain Code=3 "Target is not running or required target
216
211
  // entitlement is missing" UserInfo={RBSAssertionAttribute=<RBSDomainAttribute| domain:"com.apple.webkit" name:"Background" sourceEnvironment:"(null)">, NSLocalizedFailureReason=Target is not running or required target entitlement is missing}
217
- return simLog.subsystem === 'com.apple.WebKit';
212
+ return simLog.subsystem === "com.apple.WebKit";
218
213
  }
219
214
  // Similar to WebKit logs
220
215
  function isRunningBoardServicesLog(simLog) {
221
216
  // [RunningBoardServices] Error acquiring assertion: <Error Domain=RBSAssertionErrorDomain Code=3 "Target is not running or required target entitlement is missing" UserInfo={RBSAssertionAttribute=<RBSDomainAttribute| domain:"com.apple.webkit"
222
217
  // name:"Background" sourceEnvironment:"(null)">, NSLocalizedFailureReason=Target is not running or required target entitlement is missing}>
223
- return simLog.subsystem === 'com.apple.runningboard';
218
+ return simLog.subsystem === "com.apple.runningboard";
224
219
  }
225
220
  function formatMessage(simLog) {
226
- var _simLog_source;
221
+ var ref;
227
222
  // TODO: Maybe change "TCC" to "Consent" or "System".
228
- const category = _chalk().default.gray(`[${((_simLog_source = simLog.source) == null ? void 0 : _simLog_source.image) ?? simLog.subsystem}]`);
223
+ const category = _chalk().default.gray(`[${((ref = simLog.source) == null ? void 0 : ref.image) ?? simLog.subsystem}]`);
229
224
  const message = simLog.eventMessage;
230
- return (0, _wrapansi().default)(category + ' ' + message, process.stdout.columns || 80);
225
+ return (0, _wrapAnsi().default)(category + " " + message, process.stdout.columns || 80);
231
226
  }
232
227
  function onMessage(simLog) {
233
228
  let hasLogged = false;
234
- if (simLog.messageType === 'Error') {
229
+ if (simLog.messageType === "Error") {
235
230
  if (// Hide all networking errors which are mostly useless.
236
231
  !isNetworkLog(simLog) && // Showing React errors will result in duplicate messages.
237
232
  !isReactLog(simLog) && !isCoreTelephonyLog(simLog) && !isWebKitLog(simLog) && !isRunningBoardServicesLog(simLog)) {
@@ -240,9 +235,9 @@ function onMessage(simLog) {
240
235
  _log.error(formatMessage(simLog));
241
236
  }
242
237
  } else if (simLog.eventMessage) {
243
- var _simLog_source;
238
+ var ref;
244
239
  // If the source has a file (i.e. not a system log).
245
- if (((_simLog_source = simLog.source) == null ? void 0 : _simLog_source.file) || simLog.eventMessage.includes('Terminating app due to uncaught exception')) {
240
+ if (((ref = simLog.source) == null ? void 0 : ref.file) || simLog.eventMessage.includes("Terminating app due to uncaught exception")) {
246
241
  hasLogged = true;
247
242
  _log.log(formatMessage(simLog));
248
243
  }
@@ -270,7 +265,7 @@ function onMessage(simLog) {
270
265
  return null;
271
266
  }
272
267
  function getImageNameFromContainerPath(binaryPath) {
273
- return _path().default.basename(binaryPath).split('.')[0];
268
+ return _path().default.basename(binaryPath).split(".")[0];
274
269
  }
275
270
 
276
271
  //# sourceMappingURL=simctlLogging.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/start/platforms/ios/simctlLogging.ts"],"sourcesContent":["import chalk from 'chalk';\nimport { ChildProcessWithoutNullStreams, spawn } from 'child_process';\nimport { EOL } from 'os';\nimport path from 'path';\nimport wrapAnsi from 'wrap-ansi';\n\nimport { Device, getContainerPathAsync } from './simctl';\nimport * as Log from '../../../log';\nimport { CommandError } from '../../../utils/errors';\nimport { installExitHooks } from '../../../utils/exit';\n\nexport type SimControlLog = {\n /**\n * 258753568922927108\n */\n traceID: number;\n /**\n *\n * \"Connection 1: done\",\n */\n eventMessage: string;\n /**\n * \"logEvent\" | \"activityCreateEvent\",\n */\n eventType: 'logEvent' | 'activityCreateEvent';\n source: null | {\n /**\n * 'RCTDefaultLogFunction_block_invoke' | '__TCC_CRASHING_DUE_TO_PRIVACY_VIOLATION__'\n */\n symbol: string;\n line: number;\n /**\n * 'TCC' | 'Security' | 'CFNetwork' | 'libnetwork.dylib' | 'myapp'\n *\n * TCC is apple sys, it means \"Transparency, Consent, and Control\"\n */\n image: string;\n /**\n * 'RCTLog.mm' | ''\n */\n file: string;\n };\n /**\n * \"Connection %llu: done\"\n */\n formatString: string;\n /**\n * 0\n */\n activityIdentifier: number;\n subsystem:\n | ''\n | 'com.apple.network'\n | 'com.facebook.react.log'\n | 'com.apple.TCC'\n | 'com.apple.CoreTelephony'\n | 'com.apple.WebKit'\n | 'com.apple.runningboard'\n | string;\n category: '' | 'access' | 'connection' | 'plugin';\n /**\n * \"2021-03-15 15:36:28.004331-0700\"\n */\n timestamp: string;\n /**\n * 706567072091713\n */\n machTimestamp: number;\n /**\n * \"Default\"\n */\n messageType: 'Default' | 'Error';\n /**\n * 15192\n */\n processID: number;\n};\n\ntype ProcessResolver =\n | {\n pid: string;\n }\n | {\n appId: string;\n };\n\nexport class SimulatorLogStreamer {\n private childProcess: ChildProcessWithoutNullStreams | null = null;\n\n static cache: SimulatorLogStreamer[] = [];\n\n static getStreamer = (device: Pick<Device, 'udid'>, resolver: ProcessResolver) => {\n return (\n SimulatorLogStreamer.cache.find((streamer) => streamer.device.udid === device.udid) ??\n new SimulatorLogStreamer(device, resolver)\n );\n };\n\n constructor(\n public device: Pick<Device, 'udid'>,\n public resolver: ProcessResolver\n ) {}\n\n isAttached() {\n return !!this.childProcess;\n }\n\n async resolvePidAsync() {\n if ('pid' in this.resolver) {\n return this.resolver.pid;\n }\n return getImageNameFromBundleIdentifierAsync(this.device.udid, this.resolver.appId);\n }\n\n async attachAsync() {\n await this.detachAsync();\n\n const pid = await this.resolvePidAsync();\n\n if (!pid) {\n throw new CommandError(`Could not find pid for ${this.device.udid}`);\n }\n\n // xcrun simctl spawn booted log stream --process --style json\n this.childProcess = spawn('xcrun', [\n 'simctl',\n 'spawn',\n this.device.udid,\n 'log',\n 'stream',\n '--process',\n pid,\n // ndjson provides a better format than json.\n '--style',\n 'ndjson',\n // Provide the source so we can filter logs better\n '--source',\n // log, activity, trace -- activity was related to layouts, trace didn't work, so that leaves log.\n // Passing nothing combines all three, but we don't use activity.\n '--type',\n 'log',\n // backtrace doesn't seem very useful in basic cases.\n // TODO: Maybe we can format as a stack trace for native errors.\n '--no-backtrace',\n ]);\n\n this.childProcess.stdout.on('data', (data: Buffer) => {\n // Sometimes more than one chunk comes at a time, here we split by system newline,\n // then trim and filter.\n const strings = data\n .toString()\n .split(EOL)\n .map((value) => value.trim())\n // This filters out the first log which says something like:\n // Filtering the log data using \"process BEGINSWITH[cd] \"my-app\" AND type == 1024\"\n .filter((value) => value.startsWith('{'));\n\n strings.forEach((str) => {\n const simLog = parseMessageJson(str);\n if (!simLog) {\n return;\n }\n onMessage(simLog);\n });\n });\n\n this.childProcess.on('error', ({ message }) => {\n Log.debug('[simctl error]:', message);\n });\n\n this.off = installExitHooks(() => {\n this.detachAsync.bind(this);\n });\n }\n\n private off: (() => void) | null = null;\n\n detachAsync() {\n this.off?.();\n this.off = null;\n if (this.childProcess) {\n return new Promise<void>((resolve) => {\n this.childProcess?.on('close', resolve);\n this.childProcess?.kill();\n this.childProcess = null;\n });\n }\n return Promise.resolve();\n }\n}\n\nfunction parseMessageJson(data: string) {\n const stringData = data.toString();\n try {\n return JSON.parse(stringData) as SimControlLog;\n } catch {\n Log.debug('Failed to parse simctl JSON message:\\n' + stringData);\n }\n return null;\n}\n\n// There are a lot of networking logs in RN that aren't relevant to the user.\nfunction isNetworkLog(simLog: SimControlLog): boolean {\n return (\n simLog.subsystem === 'com.apple.network' ||\n simLog.category === 'connection' ||\n simLog.source?.image === 'CFNetwork'\n );\n}\n\nfunction isReactLog(simLog: SimControlLog): boolean {\n return simLog.subsystem === 'com.facebook.react.log' && simLog.source?.file === 'RCTLog.mm';\n}\n\n// It's not clear what these are but they aren't very useful.\n// (The connection to service on pid 0 named com.apple.commcenter.coretelephony.xpc was invalidated)\n// We can add them later if need.\nfunction isCoreTelephonyLog(simLog: SimControlLog): boolean {\n // [CoreTelephony] Updating selectors failed with: Error Domain=NSCocoaErrorDomain Code=4099\n // \"The connection to service on pid 0 named com.apple.commcenter.coretelephony.xpc was invalidated.\" UserInfo={NSDebugDescription=The connection to service on pid 0 named com.apple.commcenter.coretelephony.xpc was invalidated.}\n return simLog.subsystem === 'com.apple.CoreTelephony';\n}\n\n// https://stackoverflow.com/a/65313219/4047926\nfunction isWebKitLog(simLog: SimControlLog): boolean {\n // [WebKit] 0x1143ca500 - ProcessAssertion: Failed to acquire RBS Background assertion 'WebProcess Background Assertion' for process with PID 27084, error: Error Domain=RBSAssertionErrorDomain Code=3 \"Target is not running or required target\n // entitlement is missing\" UserInfo={RBSAssertionAttribute=<RBSDomainAttribute| domain:\"com.apple.webkit\" name:\"Background\" sourceEnvironment:\"(null)\">, NSLocalizedFailureReason=Target is not running or required target entitlement is missing}\n return simLog.subsystem === 'com.apple.WebKit';\n}\n\n// Similar to WebKit logs\nfunction isRunningBoardServicesLog(simLog: SimControlLog): boolean {\n // [RunningBoardServices] Error acquiring assertion: <Error Domain=RBSAssertionErrorDomain Code=3 \"Target is not running or required target entitlement is missing\" UserInfo={RBSAssertionAttribute=<RBSDomainAttribute| domain:\"com.apple.webkit\"\n // name:\"Background\" sourceEnvironment:\"(null)\">, NSLocalizedFailureReason=Target is not running or required target entitlement is missing}>\n return simLog.subsystem === 'com.apple.runningboard';\n}\n\nfunction formatMessage(simLog: SimControlLog): string {\n // TODO: Maybe change \"TCC\" to \"Consent\" or \"System\".\n const category = chalk.gray(`[${simLog.source?.image ?? simLog.subsystem}]`);\n const message = simLog.eventMessage;\n return wrapAnsi(category + ' ' + message, process.stdout.columns || 80);\n}\n\nexport function onMessage(simLog: SimControlLog) {\n let hasLogged = false;\n\n if (simLog.messageType === 'Error') {\n if (\n // Hide all networking errors which are mostly useless.\n !isNetworkLog(simLog) &&\n // Showing React errors will result in duplicate messages.\n !isReactLog(simLog) &&\n !isCoreTelephonyLog(simLog) &&\n !isWebKitLog(simLog) &&\n !isRunningBoardServicesLog(simLog)\n ) {\n hasLogged = true;\n // Sim: This app has crashed because it attempted to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSCameraUsageDescription key with a string value explaining to the user how the app uses this data.\n Log.error(formatMessage(simLog));\n }\n } else if (simLog.eventMessage) {\n // If the source has a file (i.e. not a system log).\n if (\n simLog.source?.file ||\n simLog.eventMessage.includes('Terminating app due to uncaught exception')\n ) {\n hasLogged = true;\n Log.log(formatMessage(simLog));\n }\n }\n\n if (!hasLogged) {\n Log.debug(formatMessage(simLog));\n } else {\n // console.log('DATA:', JSON.stringify(simLog));\n }\n}\n\n/**\n *\n * @param udid\n * @param bundleIdentifier\n * @returns Image name like `Exponent` and `null` when the app is not installed on the provided simulator.\n */\nasync function getImageNameFromBundleIdentifierAsync(\n udid: string,\n bundleIdentifier: string\n): Promise<string | null> {\n const containerPath = await getContainerPathAsync({ udid }, { appId: bundleIdentifier });\n\n if (containerPath) {\n return getImageNameFromContainerPath(containerPath);\n }\n return null;\n}\n\nfunction getImageNameFromContainerPath(binaryPath: string): string {\n return path.basename(binaryPath).split('.')[0];\n}\n"],"names":["SimulatorLogStreamer","onMessage","cache","getStreamer","device","resolver","find","streamer","udid","constructor","childProcess","off","isAttached","resolvePidAsync","pid","getImageNameFromBundleIdentifierAsync","appId","attachAsync","detachAsync","CommandError","spawn","stdout","on","data","strings","toString","split","EOL","map","value","trim","filter","startsWith","forEach","str","simLog","parseMessageJson","message","Log","debug","installExitHooks","bind","Promise","resolve","kill","stringData","JSON","parse","isNetworkLog","subsystem","category","source","image","isReactLog","file","isCoreTelephonyLog","isWebKitLog","isRunningBoardServicesLog","formatMessage","chalk","gray","eventMessage","wrapAnsi","process","columns","hasLogged","messageType","error","includes","log","bundleIdentifier","containerPath","getContainerPathAsync","getImageNameFromContainerPath","binaryPath","path","basename"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../src/start/platforms/ios/simctlLogging.ts"],"sourcesContent":["import chalk from 'chalk';\nimport { ChildProcessWithoutNullStreams, spawn } from 'child_process';\nimport { EOL } from 'os';\nimport path from 'path';\nimport wrapAnsi from 'wrap-ansi';\n\nimport { Device, getContainerPathAsync } from './simctl';\nimport * as Log from '../../../log';\nimport { CommandError } from '../../../utils/errors';\nimport { installExitHooks } from '../../../utils/exit';\n\nexport type SimControlLog = {\n /**\n * 258753568922927108\n */\n traceID: number;\n /**\n *\n * \"Connection 1: done\",\n */\n eventMessage: string;\n /**\n * \"logEvent\" | \"activityCreateEvent\",\n */\n eventType: 'logEvent' | 'activityCreateEvent';\n source: null | {\n /**\n * 'RCTDefaultLogFunction_block_invoke' | '__TCC_CRASHING_DUE_TO_PRIVACY_VIOLATION__'\n */\n symbol: string;\n line: number;\n /**\n * 'TCC' | 'Security' | 'CFNetwork' | 'libnetwork.dylib' | 'myapp'\n *\n * TCC is apple sys, it means \"Transparency, Consent, and Control\"\n */\n image: string;\n /**\n * 'RCTLog.mm' | ''\n */\n file: string;\n };\n /**\n * \"Connection %llu: done\"\n */\n formatString: string;\n /**\n * 0\n */\n activityIdentifier: number;\n subsystem:\n | ''\n | 'com.apple.network'\n | 'com.facebook.react.log'\n | 'com.apple.TCC'\n | 'com.apple.CoreTelephony'\n | 'com.apple.WebKit'\n | 'com.apple.runningboard'\n | string;\n category: '' | 'access' | 'connection' | 'plugin';\n /**\n * \"2021-03-15 15:36:28.004331-0700\"\n */\n timestamp: string;\n /**\n * 706567072091713\n */\n machTimestamp: number;\n /**\n * \"Default\"\n */\n messageType: 'Default' | 'Error';\n /**\n * 15192\n */\n processID: number;\n};\n\ntype ProcessResolver =\n | {\n pid: string;\n }\n | {\n appId: string;\n };\n\nexport class SimulatorLogStreamer {\n private childProcess: ChildProcessWithoutNullStreams | null = null;\n\n static cache: SimulatorLogStreamer[] = [];\n\n static getStreamer = (device: Pick<Device, 'udid'>, resolver: ProcessResolver) => {\n return (\n SimulatorLogStreamer.cache.find((streamer) => streamer.device.udid === device.udid) ??\n new SimulatorLogStreamer(device, resolver)\n );\n };\n\n constructor(\n public device: Pick<Device, 'udid'>,\n public resolver: ProcessResolver\n ) {}\n\n isAttached() {\n return !!this.childProcess;\n }\n\n async resolvePidAsync() {\n if ('pid' in this.resolver) {\n return this.resolver.pid;\n }\n return getImageNameFromBundleIdentifierAsync(this.device.udid, this.resolver.appId);\n }\n\n async attachAsync() {\n await this.detachAsync();\n\n const pid = await this.resolvePidAsync();\n\n if (!pid) {\n throw new CommandError(`Could not find pid for ${this.device.udid}`);\n }\n\n // xcrun simctl spawn booted log stream --process --style json\n this.childProcess = spawn('xcrun', [\n 'simctl',\n 'spawn',\n this.device.udid,\n 'log',\n 'stream',\n '--process',\n pid,\n // ndjson provides a better format than json.\n '--style',\n 'ndjson',\n // Provide the source so we can filter logs better\n '--source',\n // log, activity, trace -- activity was related to layouts, trace didn't work, so that leaves log.\n // Passing nothing combines all three, but we don't use activity.\n '--type',\n 'log',\n // backtrace doesn't seem very useful in basic cases.\n // TODO: Maybe we can format as a stack trace for native errors.\n '--no-backtrace',\n ]);\n\n this.childProcess.stdout.on('data', (data: Buffer) => {\n // Sometimes more than one chunk comes at a time, here we split by system newline,\n // then trim and filter.\n const strings = data\n .toString()\n .split(EOL)\n .map((value) => value.trim())\n // This filters out the first log which says something like:\n // Filtering the log data using \"process BEGINSWITH[cd] \"my-app\" AND type == 1024\"\n .filter((value) => value.startsWith('{'));\n\n strings.forEach((str) => {\n const simLog = parseMessageJson(str);\n if (!simLog) {\n return;\n }\n onMessage(simLog);\n });\n });\n\n this.childProcess.on('error', ({ message }) => {\n Log.debug('[simctl error]:', message);\n });\n\n this.off = installExitHooks(() => {\n this.detachAsync.bind(this);\n });\n }\n\n private off: (() => void) | null = null;\n\n detachAsync() {\n this.off?.();\n this.off = null;\n if (this.childProcess) {\n return new Promise<void>((resolve) => {\n this.childProcess?.on('close', resolve);\n this.childProcess?.kill();\n this.childProcess = null;\n });\n }\n return Promise.resolve();\n }\n}\n\nfunction parseMessageJson(data: string) {\n const stringData = data.toString();\n try {\n return JSON.parse(stringData) as SimControlLog;\n } catch {\n Log.debug('Failed to parse simctl JSON message:\\n' + stringData);\n }\n return null;\n}\n\n// There are a lot of networking logs in RN that aren't relevant to the user.\nfunction isNetworkLog(simLog: SimControlLog): boolean {\n return (\n simLog.subsystem === 'com.apple.network' ||\n simLog.category === 'connection' ||\n simLog.source?.image === 'CFNetwork'\n );\n}\n\nfunction isReactLog(simLog: SimControlLog): boolean {\n return simLog.subsystem === 'com.facebook.react.log' && simLog.source?.file === 'RCTLog.mm';\n}\n\n// It's not clear what these are but they aren't very useful.\n// (The connection to service on pid 0 named com.apple.commcenter.coretelephony.xpc was invalidated)\n// We can add them later if need.\nfunction isCoreTelephonyLog(simLog: SimControlLog): boolean {\n // [CoreTelephony] Updating selectors failed with: Error Domain=NSCocoaErrorDomain Code=4099\n // \"The connection to service on pid 0 named com.apple.commcenter.coretelephony.xpc was invalidated.\" UserInfo={NSDebugDescription=The connection to service on pid 0 named com.apple.commcenter.coretelephony.xpc was invalidated.}\n return simLog.subsystem === 'com.apple.CoreTelephony';\n}\n\n// https://stackoverflow.com/a/65313219/4047926\nfunction isWebKitLog(simLog: SimControlLog): boolean {\n // [WebKit] 0x1143ca500 - ProcessAssertion: Failed to acquire RBS Background assertion 'WebProcess Background Assertion' for process with PID 27084, error: Error Domain=RBSAssertionErrorDomain Code=3 \"Target is not running or required target\n // entitlement is missing\" UserInfo={RBSAssertionAttribute=<RBSDomainAttribute| domain:\"com.apple.webkit\" name:\"Background\" sourceEnvironment:\"(null)\">, NSLocalizedFailureReason=Target is not running or required target entitlement is missing}\n return simLog.subsystem === 'com.apple.WebKit';\n}\n\n// Similar to WebKit logs\nfunction isRunningBoardServicesLog(simLog: SimControlLog): boolean {\n // [RunningBoardServices] Error acquiring assertion: <Error Domain=RBSAssertionErrorDomain Code=3 \"Target is not running or required target entitlement is missing\" UserInfo={RBSAssertionAttribute=<RBSDomainAttribute| domain:\"com.apple.webkit\"\n // name:\"Background\" sourceEnvironment:\"(null)\">, NSLocalizedFailureReason=Target is not running or required target entitlement is missing}>\n return simLog.subsystem === 'com.apple.runningboard';\n}\n\nfunction formatMessage(simLog: SimControlLog): string {\n // TODO: Maybe change \"TCC\" to \"Consent\" or \"System\".\n const category = chalk.gray(`[${simLog.source?.image ?? simLog.subsystem}]`);\n const message = simLog.eventMessage;\n return wrapAnsi(category + ' ' + message, process.stdout.columns || 80);\n}\n\nexport function onMessage(simLog: SimControlLog) {\n let hasLogged = false;\n\n if (simLog.messageType === 'Error') {\n if (\n // Hide all networking errors which are mostly useless.\n !isNetworkLog(simLog) &&\n // Showing React errors will result in duplicate messages.\n !isReactLog(simLog) &&\n !isCoreTelephonyLog(simLog) &&\n !isWebKitLog(simLog) &&\n !isRunningBoardServicesLog(simLog)\n ) {\n hasLogged = true;\n // Sim: This app has crashed because it attempted to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSCameraUsageDescription key with a string value explaining to the user how the app uses this data.\n Log.error(formatMessage(simLog));\n }\n } else if (simLog.eventMessage) {\n // If the source has a file (i.e. not a system log).\n if (\n simLog.source?.file ||\n simLog.eventMessage.includes('Terminating app due to uncaught exception')\n ) {\n hasLogged = true;\n Log.log(formatMessage(simLog));\n }\n }\n\n if (!hasLogged) {\n Log.debug(formatMessage(simLog));\n } else {\n // console.log('DATA:', JSON.stringify(simLog));\n }\n}\n\n/**\n *\n * @param udid\n * @param bundleIdentifier\n * @returns Image name like `Exponent` and `null` when the app is not installed on the provided simulator.\n */\nasync function getImageNameFromBundleIdentifierAsync(\n udid: string,\n bundleIdentifier: string\n): Promise<string | null> {\n const containerPath = await getContainerPathAsync({ udid }, { appId: bundleIdentifier });\n\n if (containerPath) {\n return getImageNameFromContainerPath(containerPath);\n }\n return null;\n}\n\nfunction getImageNameFromContainerPath(binaryPath: string): string {\n return path.basename(binaryPath).split('.')[0];\n}\n"],"names":["SimulatorLogStreamer","onMessage","cache","getStreamer","device","resolver","find","streamer","udid","constructor","childProcess","off","isAttached","resolvePidAsync","pid","getImageNameFromBundleIdentifierAsync","appId","attachAsync","detachAsync","CommandError","spawn","stdout","on","data","strings","toString","split","EOL","map","value","trim","filter","startsWith","forEach","str","simLog","parseMessageJson","message","Log","debug","installExitHooks","bind","Promise","resolve","kill","stringData","JSON","parse","isNetworkLog","subsystem","category","source","image","isReactLog","file","isCoreTelephonyLog","isWebKitLog","isRunningBoardServicesLog","formatMessage","chalk","gray","eventMessage","wrapAnsi","process","columns","hasLogged","messageType","error","includes","log","bundleIdentifier","containerPath","getContainerPathAsync","getImageNameFromContainerPath","binaryPath","path","basename"],"mappings":"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"}
@@ -9,57 +9,53 @@ function _export(target, all) {
9
9
  });
10
10
  }
11
11
  _export(exports, {
12
- isSpawnResultError: function() {
13
- return isSpawnResultError;
14
- },
15
- xcrunAsync: function() {
16
- return xcrunAsync;
17
- }
12
+ isSpawnResultError: ()=>isSpawnResultError,
13
+ xcrunAsync: ()=>xcrunAsync
18
14
  });
19
- function _spawnasync() {
20
- const data = /*#__PURE__*/ _interop_require_default(require("@expo/spawn-async"));
21
- _spawnasync = function() {
15
+ function _spawnAsync() {
16
+ const data = /*#__PURE__*/ _interopRequireDefault(require("@expo/spawn-async"));
17
+ _spawnAsync = function() {
22
18
  return data;
23
19
  };
24
20
  return data;
25
21
  }
26
22
  function _chalk() {
27
- const data = /*#__PURE__*/ _interop_require_default(require("chalk"));
23
+ const data = /*#__PURE__*/ _interopRequireDefault(require("chalk"));
28
24
  _chalk = function() {
29
25
  return data;
30
26
  };
31
27
  return data;
32
28
  }
33
29
  const _errors = require("../../../utils/errors");
34
- function _interop_require_default(obj) {
30
+ function _interopRequireDefault(obj) {
35
31
  return obj && obj.__esModule ? obj : {
36
32
  default: obj
37
33
  };
38
34
  }
39
- const debug = require('debug')('expo:start:platforms:ios:xcrun');
35
+ const debug = require("debug")("expo:start:platforms:ios:xcrun");
40
36
  function isSpawnResultError(obj) {
41
- return obj && 'message' in obj && obj.status !== undefined && obj.stdout !== undefined && obj.stderr !== undefined;
37
+ return obj && "message" in obj && obj.status !== undefined && obj.stdout !== undefined && obj.stderr !== undefined;
42
38
  }
43
39
  async function xcrunAsync(args, options) {
44
- debug('Running: xcrun ' + args.join(' '));
40
+ debug("Running: xcrun " + args.join(" "));
45
41
  try {
46
- return await (0, _spawnasync().default)('xcrun', args.filter(Boolean), options);
42
+ return await (0, _spawnAsync().default)("xcrun", args.filter(Boolean), options);
47
43
  } catch (e) {
48
44
  throwXcrunError(e);
49
45
  }
50
46
  }
51
47
  function throwXcrunError(e) {
52
- var _e_stderr;
48
+ var ref;
53
49
  if (isLicenseOutOfDate(e.stdout) || isLicenseOutOfDate(e.stderr)) {
54
- throw new _errors.CommandError('XCODE_LICENSE_NOT_ACCEPTED', 'Xcode license is not accepted. Please run `sudo xcodebuild -license`.');
55
- } else if ((_e_stderr = e.stderr) == null ? void 0 : _e_stderr.includes('not a developer tool or in PATH')) {
56
- throw new _errors.CommandError('SIMCTL_NOT_AVAILABLE', `You may need to run ${_chalk().default.bold('sudo xcode-select -s /Applications/Xcode.app')} and try again.`);
50
+ throw new _errors.CommandError("XCODE_LICENSE_NOT_ACCEPTED", "Xcode license is not accepted. Please run `sudo xcodebuild -license`.");
51
+ } else if ((ref = e.stderr) == null ? void 0 : ref.includes("not a developer tool or in PATH")) {
52
+ throw new _errors.CommandError("SIMCTL_NOT_AVAILABLE", `You may need to run ${_chalk().default.bold("sudo xcode-select -s /Applications/Xcode.app")} and try again.`);
57
53
  }
58
54
  // Attempt to craft a better error message...
59
55
  if (Array.isArray(e.output)) {
60
- e.message += '\n' + e.output.join('\n').trim();
56
+ e.message += "\n" + e.output.join("\n").trim();
61
57
  } else if (e.stderr) {
62
- e.message += '\n' + e.stderr;
58
+ e.message += "\n" + e.stderr;
63
59
  }
64
60
  throw e;
65
61
  }
@@ -68,7 +64,7 @@ function isLicenseOutOfDate(text) {
68
64
  return false;
69
65
  }
70
66
  const lower = text.toLowerCase();
71
- return lower.includes('xcode') && lower.includes('license');
67
+ return lower.includes("xcode") && lower.includes("license");
72
68
  }
73
69
 
74
70
  //# sourceMappingURL=xcrun.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/start/platforms/ios/xcrun.ts"],"sourcesContent":["import spawnAsync, { SpawnOptions, SpawnResult } from '@expo/spawn-async';\nimport chalk from 'chalk';\n\nimport { CommandError } from '../../../utils/errors';\n\nconst debug = require('debug')('expo:start:platforms:ios:xcrun') as typeof console.log;\n\nexport function isSpawnResultError(obj: any): obj is Error & SpawnResult {\n return (\n obj &&\n 'message' in obj &&\n obj.status !== undefined &&\n obj.stdout !== undefined &&\n obj.stderr !== undefined\n );\n}\n\nexport async function xcrunAsync(args: (string | undefined)[], options?: SpawnOptions) {\n debug('Running: xcrun ' + args.join(' '));\n try {\n return await spawnAsync('xcrun', args.filter(Boolean) as string[], options);\n } catch (e) {\n throwXcrunError(e);\n }\n}\n\nfunction throwXcrunError(e: any): never {\n if (isLicenseOutOfDate(e.stdout) || isLicenseOutOfDate(e.stderr)) {\n throw new CommandError(\n 'XCODE_LICENSE_NOT_ACCEPTED',\n 'Xcode license is not accepted. Please run `sudo xcodebuild -license`.'\n );\n } else if (e.stderr?.includes('not a developer tool or in PATH')) {\n throw new CommandError(\n 'SIMCTL_NOT_AVAILABLE',\n `You may need to run ${chalk.bold(\n 'sudo xcode-select -s /Applications/Xcode.app'\n )} and try again.`\n );\n }\n // Attempt to craft a better error message...\n if (Array.isArray(e.output)) {\n e.message += '\\n' + e.output.join('\\n').trim();\n } else if (e.stderr) {\n e.message += '\\n' + e.stderr;\n }\n throw e;\n}\n\nfunction isLicenseOutOfDate(text: string) {\n if (!text) {\n return false;\n }\n\n const lower = text.toLowerCase();\n return lower.includes('xcode') && lower.includes('license');\n}\n"],"names":["isSpawnResultError","xcrunAsync","debug","require","obj","status","undefined","stdout","stderr","args","options","join","spawnAsync","filter","Boolean","e","throwXcrunError","isLicenseOutOfDate","CommandError","includes","chalk","bold","Array","isArray","output","message","trim","text","lower","toLowerCase"],"mappings":";;;;;;;;;;;IAOgBA,kBAAkB;eAAlBA;;IAUMC,UAAU;eAAVA;;;;gEAjBgC;;;;;;;gEACpC;;;;;;wBAEW;;;;;;AAE7B,MAAMC,QAAQC,QAAQ,SAAS;AAExB,SAASH,mBAAmBI,GAAQ;IACzC,OACEA,OACA,aAAaA,OACbA,IAAIC,MAAM,KAAKC,aACfF,IAAIG,MAAM,KAAKD,aACfF,IAAII,MAAM,KAAKF;AAEnB;AAEO,eAAeL,WAAWQ,IAA4B,EAAEC,OAAsB;IACnFR,MAAM,oBAAoBO,KAAKE,IAAI,CAAC;IACpC,IAAI;QACF,OAAO,MAAMC,IAAAA,qBAAU,EAAC,SAASH,KAAKI,MAAM,CAACC,UAAsBJ;IACrE,EAAE,OAAOK,GAAG;QACVC,gBAAgBD;IAClB;AACF;AAEA,SAASC,gBAAgBD,CAAM;QAMlBA;IALX,IAAIE,mBAAmBF,EAAER,MAAM,KAAKU,mBAAmBF,EAAEP,MAAM,GAAG;QAChE,MAAM,IAAIU,oBAAY,CACpB,8BACA;IAEJ,OAAO,KAAIH,YAAAA,EAAEP,MAAM,qBAARO,UAAUI,QAAQ,CAAC,oCAAoC;QAChE,MAAM,IAAID,oBAAY,CACpB,wBACA,CAAC,oBAAoB,EAAEE,gBAAK,CAACC,IAAI,CAC/B,gDACA,eAAe,CAAC;IAEtB;IACA,6CAA6C;IAC7C,IAAIC,MAAMC,OAAO,CAACR,EAAES,MAAM,GAAG;QAC3BT,EAAEU,OAAO,IAAI,OAAOV,EAAES,MAAM,CAACb,IAAI,CAAC,MAAMe,IAAI;IAC9C,OAAO,IAAIX,EAAEP,MAAM,EAAE;QACnBO,EAAEU,OAAO,IAAI,OAAOV,EAAEP,MAAM;IAC9B;IACA,MAAMO;AACR;AAEA,SAASE,mBAAmBU,IAAY;IACtC,IAAI,CAACA,MAAM;QACT,OAAO;IACT;IAEA,MAAMC,QAAQD,KAAKE,WAAW;IAC9B,OAAOD,MAAMT,QAAQ,CAAC,YAAYS,MAAMT,QAAQ,CAAC;AACnD"}
1
+ {"version":3,"sources":["../../../../../src/start/platforms/ios/xcrun.ts"],"sourcesContent":["import spawnAsync, { SpawnOptions, SpawnResult } from '@expo/spawn-async';\nimport chalk from 'chalk';\n\nimport { CommandError } from '../../../utils/errors';\n\nconst debug = require('debug')('expo:start:platforms:ios:xcrun') as typeof console.log;\n\nexport function isSpawnResultError(obj: any): obj is Error & SpawnResult {\n return (\n obj &&\n 'message' in obj &&\n obj.status !== undefined &&\n obj.stdout !== undefined &&\n obj.stderr !== undefined\n );\n}\n\nexport async function xcrunAsync(args: (string | undefined)[], options?: SpawnOptions) {\n debug('Running: xcrun ' + args.join(' '));\n try {\n return await spawnAsync('xcrun', args.filter(Boolean) as string[], options);\n } catch (e) {\n throwXcrunError(e);\n }\n}\n\nfunction throwXcrunError(e: any): never {\n if (isLicenseOutOfDate(e.stdout) || isLicenseOutOfDate(e.stderr)) {\n throw new CommandError(\n 'XCODE_LICENSE_NOT_ACCEPTED',\n 'Xcode license is not accepted. Please run `sudo xcodebuild -license`.'\n );\n } else if (e.stderr?.includes('not a developer tool or in PATH')) {\n throw new CommandError(\n 'SIMCTL_NOT_AVAILABLE',\n `You may need to run ${chalk.bold(\n 'sudo xcode-select -s /Applications/Xcode.app'\n )} and try again.`\n );\n }\n // Attempt to craft a better error message...\n if (Array.isArray(e.output)) {\n e.message += '\\n' + e.output.join('\\n').trim();\n } else if (e.stderr) {\n e.message += '\\n' + e.stderr;\n }\n throw e;\n}\n\nfunction isLicenseOutOfDate(text: string) {\n if (!text) {\n return false;\n }\n\n const lower = text.toLowerCase();\n return lower.includes('xcode') && lower.includes('license');\n}\n"],"names":["isSpawnResultError","xcrunAsync","debug","require","obj","status","undefined","stdout","stderr","args","options","join","spawnAsync","filter","Boolean","e","throwXcrunError","isLicenseOutOfDate","CommandError","includes","chalk","bold","Array","isArray","output","message","trim","text","lower","toLowerCase"],"mappings":"AAAA;;;;;;;;;;;IAOgBA,kBAAkB,MAAlBA,kBAAkB;IAUZC,UAAU,MAAVA,UAAU;;;8DAjBsB,mBAAmB;;;;;;;8DACvD,OAAO;;;;;;wBAEI,uBAAuB;;;;;;AAEpD,MAAMC,KAAK,GAAGC,OAAO,CAAC,OAAO,CAAC,CAAC,gCAAgC,CAAC,AAAsB,AAAC;AAEhF,SAASH,kBAAkB,CAACI,GAAQ,EAA8B;IACvE,OACEA,GAAG,IACH,SAAS,IAAIA,GAAG,IAChBA,GAAG,CAACC,MAAM,KAAKC,SAAS,IACxBF,GAAG,CAACG,MAAM,KAAKD,SAAS,IACxBF,GAAG,CAACI,MAAM,KAAKF,SAAS,CACxB;AACJ,CAAC;AAEM,eAAeL,UAAU,CAACQ,IAA4B,EAAEC,OAAsB,EAAE;IACrFR,KAAK,CAAC,iBAAiB,GAAGO,IAAI,CAACE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1C,IAAI;QACF,OAAO,MAAMC,IAAAA,WAAU,EAAA,QAAA,EAAC,OAAO,EAAEH,IAAI,CAACI,MAAM,CAACC,OAAO,CAAC,EAAcJ,OAAO,CAAC,CAAC;IAC9E,EAAE,OAAOK,CAAC,EAAE;QACVC,eAAe,CAACD,CAAC,CAAC,CAAC;IACrB,CAAC;AACH,CAAC;AAED,SAASC,eAAe,CAACD,CAAM,EAAS;QAM3BA,GAAQ;IALnB,IAAIE,kBAAkB,CAACF,CAAC,CAACR,MAAM,CAAC,IAAIU,kBAAkB,CAACF,CAAC,CAACP,MAAM,CAAC,EAAE;QAChE,MAAM,IAAIU,OAAY,aAAA,CACpB,4BAA4B,EAC5B,uEAAuE,CACxE,CAAC;IACJ,OAAO,IAAIH,CAAAA,GAAQ,GAARA,CAAC,CAACP,MAAM,SAAU,GAAlBO,KAAAA,CAAkB,GAAlBA,GAAQ,CAAEI,QAAQ,CAAC,iCAAiC,CAAC,EAAE;QAChE,MAAM,IAAID,OAAY,aAAA,CACpB,sBAAsB,EACtB,CAAC,oBAAoB,EAAEE,MAAK,EAAA,QAAA,CAACC,IAAI,CAC/B,8CAA8C,CAC/C,CAAC,eAAe,CAAC,CACnB,CAAC;IACJ,CAAC;IACD,6CAA6C;IAC7C,IAAIC,KAAK,CAACC,OAAO,CAACR,CAAC,CAACS,MAAM,CAAC,EAAE;QAC3BT,CAAC,CAACU,OAAO,IAAI,IAAI,GAAGV,CAAC,CAACS,MAAM,CAACb,IAAI,CAAC,IAAI,CAAC,CAACe,IAAI,EAAE,CAAC;IACjD,OAAO,IAAIX,CAAC,CAACP,MAAM,EAAE;QACnBO,CAAC,CAACU,OAAO,IAAI,IAAI,GAAGV,CAAC,CAACP,MAAM,CAAC;IAC/B,CAAC;IACD,MAAMO,CAAC,CAAC;AACV,CAAC;AAED,SAASE,kBAAkB,CAACU,IAAY,EAAE;IACxC,IAAI,CAACA,IAAI,EAAE;QACT,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAMC,KAAK,GAAGD,IAAI,CAACE,WAAW,EAAE,AAAC;IACjC,OAAOD,KAAK,CAACT,QAAQ,CAAC,OAAO,CAAC,IAAIS,KAAK,CAACT,QAAQ,CAAC,SAAS,CAAC,CAAC;AAC9D,CAAC"}
@@ -9,25 +9,15 @@ function _export(target, all) {
9
9
  });
10
10
  }
11
11
  _export(exports, {
12
- DevicesFile: function() {
13
- return DevicesFile;
14
- },
15
- getDevicesInfoAsync: function() {
16
- return getDevicesInfoAsync;
17
- },
18
- readDevicesInfoAsync: function() {
19
- return readDevicesInfoAsync;
20
- },
21
- saveDevicesAsync: function() {
22
- return saveDevicesAsync;
23
- },
24
- setDevicesInfoAsync: function() {
25
- return setDevicesInfoAsync;
26
- }
12
+ DevicesFile: ()=>DevicesFile,
13
+ getDevicesInfoAsync: ()=>getDevicesInfoAsync,
14
+ readDevicesInfoAsync: ()=>readDevicesInfoAsync,
15
+ setDevicesInfoAsync: ()=>setDevicesInfoAsync,
16
+ saveDevicesAsync: ()=>saveDevicesAsync
27
17
  });
28
18
  const _dotExpo = require("./dotExpo");
29
- const debug = require('debug')('expo:start:project:devices');
30
- const DEVICES_FILE_NAME = 'devices.json';
19
+ const debug = require("debug")("expo:start:project:devices");
20
+ const DEVICES_FILE_NAME = "devices.json";
31
21
  const MILLISECONDS_IN_30_DAYS = 30 * 24 * 60 * 60 * 1000;
32
22
  const DevicesFile = (0, _dotExpo.createTemporaryProjectFile)(DEVICES_FILE_NAME, {
33
23
  devices: []
@@ -69,11 +59,11 @@ async function setDevicesInfoAsync(projectRoot, json) {
69
59
  }
70
60
  async function saveDevicesAsync(projectRoot, deviceIds) {
71
61
  const currentTime = Date.now();
72
- const newDeviceIds = typeof deviceIds === 'string' ? [
62
+ const newDeviceIds = typeof deviceIds === "string" ? [
73
63
  deviceIds
74
64
  ] : deviceIds;
75
65
  debug(`Saving devices: ${newDeviceIds}`);
76
- const { devices } = await getDevicesInfoAsync(projectRoot);
66
+ const { devices } = await getDevicesInfoAsync(projectRoot);
77
67
  const newDevicesJson = devices.filter((device)=>!newDeviceIds.includes(device.installationId)).concat(newDeviceIds.map((deviceId)=>({
78
68
  installationId: deviceId,
79
69
  lastUsed: currentTime