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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (719) hide show
  1. package/build/bin/cli +93 -91
  2. package/build/bin/cli.map +1 -1
  3. package/build/metro-require/require.js +53 -52
  4. package/build/src/api/endpoint.js +6 -2
  5. package/build/src/api/endpoint.js.map +1 -1
  6. package/build/src/api/getExpoGoIntermediateCertificate.js +5 -3
  7. package/build/src/api/getExpoGoIntermediateCertificate.js.map +1 -1
  8. package/build/src/api/getExpoSchema.js +16 -12
  9. package/build/src/api/getExpoSchema.js.map +1 -1
  10. package/build/src/api/getNativeModuleVersions.js +6 -4
  11. package/build/src/api/getNativeModuleVersions.js.map +1 -1
  12. package/build/src/api/getProjectDevelopmentCertificate.js +5 -3
  13. package/build/src/api/getProjectDevelopmentCertificate.js.map +1 -1
  14. package/build/src/api/getVersions.js +7 -5
  15. package/build/src/api/getVersions.js.map +1 -1
  16. package/build/src/api/graphql/client.js +32 -26
  17. package/build/src/api/graphql/client.js.map +1 -1
  18. package/build/src/api/graphql/queries/AppQuery.js +6 -4
  19. package/build/src/api/graphql/queries/AppQuery.js.map +1 -1
  20. package/build/src/api/graphql/queries/UserQuery.js +5 -3
  21. package/build/src/api/graphql/queries/UserQuery.js.map +1 -1
  22. package/build/src/api/graphql/types/App.js +3 -1
  23. package/build/src/api/graphql/types/App.js.map +1 -1
  24. package/build/src/api/rest/cache/FileSystemResponseCache.js +36 -32
  25. package/build/src/api/rest/cache/FileSystemResponseCache.js.map +1 -1
  26. package/build/src/api/rest/cache/ResponseCache.js +20 -12
  27. package/build/src/api/rest/cache/ResponseCache.js.map +1 -1
  28. package/build/src/api/rest/cache/wrapFetchWithCache.js +13 -11
  29. package/build/src/api/rest/cache/wrapFetchWithCache.js.map +1 -1
  30. package/build/src/api/rest/client.js +55 -37
  31. package/build/src/api/rest/client.js.map +1 -1
  32. package/build/src/api/rest/client.types.js.map +1 -1
  33. package/build/src/api/rest/wrapFetchWithBaseUrl.js +5 -3
  34. package/build/src/api/rest/wrapFetchWithBaseUrl.js.map +1 -1
  35. package/build/src/api/rest/wrapFetchWithOffline.js +5 -3
  36. package/build/src/api/rest/wrapFetchWithOffline.js.map +1 -1
  37. package/build/src/api/rest/wrapFetchWithProgress.js +11 -7
  38. package/build/src/api/rest/wrapFetchWithProgress.js.map +1 -1
  39. package/build/src/api/rest/wrapFetchWithProxy.js +5 -3
  40. package/build/src/api/rest/wrapFetchWithProxy.js.map +1 -1
  41. package/build/src/api/rest/wrapFetchWithUserAgent.js +8 -6
  42. package/build/src/api/rest/wrapFetchWithUserAgent.js.map +1 -1
  43. package/build/src/api/settings.js +7 -5
  44. package/build/src/api/settings.js.map +1 -1
  45. package/build/src/api/updateDevelopmentSession.js +23 -17
  46. package/build/src/api/updateDevelopmentSession.js.map +1 -1
  47. package/build/src/api/user/UserSettings.js +53 -31
  48. package/build/src/api/user/UserSettings.js.map +1 -1
  49. package/build/src/api/user/actions.js +27 -21
  50. package/build/src/api/user/actions.js.map +1 -1
  51. package/build/src/api/user/expoSsoLauncher.js +30 -26
  52. package/build/src/api/user/expoSsoLauncher.js.map +1 -1
  53. package/build/src/api/user/otp.js +35 -29
  54. package/build/src/api/user/otp.js.map +1 -1
  55. package/build/src/api/user/user.js +44 -30
  56. package/build/src/api/user/user.js.map +1 -1
  57. package/build/src/config/configAsync.js +29 -23
  58. package/build/src/config/configAsync.js.map +1 -1
  59. package/build/src/config/index.js +25 -21
  60. package/build/src/config/index.js.map +1 -1
  61. package/build/src/customize/customizeAsync.js +8 -6
  62. package/build/src/customize/customizeAsync.js.map +1 -1
  63. package/build/src/customize/generate.js +20 -16
  64. package/build/src/customize/generate.js.map +1 -1
  65. package/build/src/customize/index.js +14 -12
  66. package/build/src/customize/index.js.map +1 -1
  67. package/build/src/customize/resolveOptions.js +4 -2
  68. package/build/src/customize/resolveOptions.js.map +1 -1
  69. package/build/src/customize/templates.js +58 -54
  70. package/build/src/customize/templates.js.map +1 -1
  71. package/build/src/customize/typescript.js +11 -7
  72. package/build/src/customize/typescript.js.map +1 -1
  73. package/build/src/export/createMetadataJson.js +11 -9
  74. package/build/src/export/createMetadataJson.js.map +1 -1
  75. package/build/src/export/embed/exportEager.js +8 -6
  76. package/build/src/export/embed/exportEager.js.map +1 -1
  77. package/build/src/export/embed/exportEmbedAsync.js +72 -62
  78. package/build/src/export/embed/exportEmbedAsync.js.map +1 -1
  79. package/build/src/export/embed/exportServer.js +57 -55
  80. package/build/src/export/embed/exportServer.js.map +1 -1
  81. package/build/src/export/embed/index.js +44 -40
  82. package/build/src/export/embed/index.js.map +1 -1
  83. package/build/src/export/embed/resolveOptions.js +44 -36
  84. package/build/src/export/embed/resolveOptions.js.map +1 -1
  85. package/build/src/export/embed/xcodeCompilerLogger.js +39 -27
  86. package/build/src/export/embed/xcodeCompilerLogger.js.map +1 -1
  87. package/build/src/export/exportApp.js +68 -64
  88. package/build/src/export/exportApp.js.map +1 -1
  89. package/build/src/export/exportAssets.js +34 -26
  90. package/build/src/export/exportAssets.js.map +1 -1
  91. package/build/src/export/exportAsync.js +13 -9
  92. package/build/src/export/exportAsync.js.map +1 -1
  93. package/build/src/export/exportDomComponents.js +53 -45
  94. package/build/src/export/exportDomComponents.js.map +1 -1
  95. package/build/src/export/exportHermes.js +75 -53
  96. package/build/src/export/exportHermes.js.map +1 -1
  97. package/build/src/export/exportStaticAsync.js +73 -62
  98. package/build/src/export/exportStaticAsync.js.map +1 -1
  99. package/build/src/export/favicon.js +33 -27
  100. package/build/src/export/favicon.js.map +1 -1
  101. package/build/src/export/getPublicExpoManifest.js +7 -5
  102. package/build/src/export/getPublicExpoManifest.js.map +1 -1
  103. package/build/src/export/getResolvedLocales.js +11 -9
  104. package/build/src/export/getResolvedLocales.js.map +1 -1
  105. package/build/src/export/html.js +10 -6
  106. package/build/src/export/html.js.map +1 -1
  107. package/build/src/export/index.js +32 -28
  108. package/build/src/export/index.js.map +1 -1
  109. package/build/src/export/metroAssetLocalPath.js +36 -30
  110. package/build/src/export/metroAssetLocalPath.js.map +1 -1
  111. package/build/src/export/persistMetroAssets.js +64 -34
  112. package/build/src/export/persistMetroAssets.js.map +1 -1
  113. package/build/src/export/publicFolder.js +10 -6
  114. package/build/src/export/publicFolder.js.map +1 -1
  115. package/build/src/export/resolveOptions.js +28 -24
  116. package/build/src/export/resolveOptions.js.map +1 -1
  117. package/build/src/export/saveAssets.js +50 -46
  118. package/build/src/export/saveAssets.js.map +1 -1
  119. package/build/src/export/web/exportWebAsync.js +13 -11
  120. package/build/src/export/web/exportWebAsync.js.map +1 -1
  121. package/build/src/export/web/index.js +19 -15
  122. package/build/src/export/web/index.js.map +1 -1
  123. package/build/src/export/web/resolveOptions.js +5 -3
  124. package/build/src/export/web/resolveOptions.js.map +1 -1
  125. package/build/src/export/writeContents.js +4 -2
  126. package/build/src/export/writeContents.js.map +1 -1
  127. package/build/src/graphql/generated.js +705 -479
  128. package/build/src/graphql/generated.js.map +1 -1
  129. package/build/src/install/applyPlugins.js +11 -7
  130. package/build/src/install/applyPlugins.js.map +1 -1
  131. package/build/src/install/checkPackages.js +26 -22
  132. package/build/src/install/checkPackages.js.map +1 -1
  133. package/build/src/install/fixPackages.js +16 -12
  134. package/build/src/install/fixPackages.js.map +1 -1
  135. package/build/src/install/index.js +18 -16
  136. package/build/src/install/index.js.map +1 -1
  137. package/build/src/install/installAsync.js +32 -26
  138. package/build/src/install/installAsync.js.map +1 -1
  139. package/build/src/install/installExpoPackage.js +22 -18
  140. package/build/src/install/installExpoPackage.js.map +1 -1
  141. package/build/src/install/resolveOptions.js +21 -19
  142. package/build/src/install/resolveOptions.js.map +1 -1
  143. package/build/src/install/utils/autoAddConfigPlugins.js +18 -14
  144. package/build/src/install/utils/autoAddConfigPlugins.js.map +1 -1
  145. package/build/src/install/utils/checkPackagesCompatibility.js +14 -12
  146. package/build/src/install/utils/checkPackagesCompatibility.js.map +1 -1
  147. package/build/src/lint/ESlintPrerequisite.js +50 -44
  148. package/build/src/lint/ESlintPrerequisite.js.map +1 -1
  149. package/build/src/lint/index.js +12 -8
  150. package/build/src/lint/index.js.map +1 -1
  151. package/build/src/lint/lintAsync.js +10 -8
  152. package/build/src/lint/lintAsync.js.map +1 -1
  153. package/build/src/log.js +36 -16
  154. package/build/src/log.js.map +1 -1
  155. package/build/src/login/index.js +24 -20
  156. package/build/src/login/index.js.map +1 -1
  157. package/build/src/logout/index.js +11 -7
  158. package/build/src/logout/index.js.map +1 -1
  159. package/build/src/prebuild/clearNativeFolder.js +38 -26
  160. package/build/src/prebuild/clearNativeFolder.js.map +1 -1
  161. package/build/src/prebuild/configureProjectAsync.js +18 -14
  162. package/build/src/prebuild/configureProjectAsync.js.map +1 -1
  163. package/build/src/prebuild/copyTemplateFiles.js +17 -13
  164. package/build/src/prebuild/copyTemplateFiles.js.map +1 -1
  165. package/build/src/prebuild/ensureConfigAsync.js +6 -4
  166. package/build/src/prebuild/ensureConfigAsync.js.map +1 -1
  167. package/build/src/prebuild/index.js +36 -32
  168. package/build/src/prebuild/index.js.map +1 -1
  169. package/build/src/prebuild/prebuildAsync.js +29 -25
  170. package/build/src/prebuild/prebuildAsync.js.map +1 -1
  171. package/build/src/prebuild/renameTemplateAppName.js +43 -37
  172. package/build/src/prebuild/renameTemplateAppName.js.map +1 -1
  173. package/build/src/prebuild/resolveOptions.js +70 -53
  174. package/build/src/prebuild/resolveOptions.js.map +1 -1
  175. package/build/src/prebuild/resolveTemplate.js +36 -32
  176. package/build/src/prebuild/resolveTemplate.js.map +1 -1
  177. package/build/src/prebuild/updateFromTemplate.js +19 -13
  178. package/build/src/prebuild/updateFromTemplate.js.map +1 -1
  179. package/build/src/prebuild/updatePackageJson.js +53 -39
  180. package/build/src/prebuild/updatePackageJson.js.map +1 -1
  181. package/build/src/prebuild/validateTemplatePlatforms.js +12 -8
  182. package/build/src/prebuild/validateTemplatePlatforms.js.map +1 -1
  183. package/build/src/register/index.js +11 -7
  184. package/build/src/register/index.js.map +1 -1
  185. package/build/src/register/registerAsync.js +5 -3
  186. package/build/src/register/registerAsync.js.map +1 -1
  187. package/build/src/run/android/index.js +36 -32
  188. package/build/src/run/android/index.js.map +1 -1
  189. package/build/src/run/android/resolveDevice.js +10 -8
  190. package/build/src/run/android/resolveDevice.js.map +1 -1
  191. package/build/src/run/android/resolveGradlePropsAsync.js +18 -16
  192. package/build/src/run/android/resolveGradlePropsAsync.js.map +1 -1
  193. package/build/src/run/android/resolveInstallApkName.js +17 -15
  194. package/build/src/run/android/resolveInstallApkName.js.map +1 -1
  195. package/build/src/run/android/resolveLaunchProps.js +12 -10
  196. package/build/src/run/android/resolveLaunchProps.js.map +1 -1
  197. package/build/src/run/android/resolveOptions.js +4 -2
  198. package/build/src/run/android/resolveOptions.js.map +1 -1
  199. package/build/src/run/android/runAndroidAsync.js +23 -21
  200. package/build/src/run/android/runAndroidAsync.js.map +1 -1
  201. package/build/src/run/ensureNativeProject.js +7 -5
  202. package/build/src/run/ensureNativeProject.js.map +1 -1
  203. package/build/src/run/hints.js +13 -7
  204. package/build/src/run/hints.js.map +1 -1
  205. package/build/src/run/index.js +27 -23
  206. package/build/src/run/index.js.map +1 -1
  207. package/build/src/run/ios/XcodeBuild.js +80 -60
  208. package/build/src/run/ios/XcodeBuild.js.map +1 -1
  209. package/build/src/run/ios/XcodeBuild.types.js.map +1 -1
  210. package/build/src/run/ios/appleDevice/AppleDevice.js +69 -63
  211. package/build/src/run/ios/appleDevice/AppleDevice.js.map +1 -1
  212. package/build/src/run/ios/appleDevice/ClientManager.js +29 -26
  213. package/build/src/run/ios/appleDevice/ClientManager.js.map +1 -1
  214. package/build/src/run/ios/appleDevice/client/AFCClient.js +28 -25
  215. package/build/src/run/ios/appleDevice/client/AFCClient.js.map +1 -1
  216. package/build/src/run/ios/appleDevice/client/DebugserverClient.js +29 -26
  217. package/build/src/run/ios/appleDevice/client/DebugserverClient.js.map +1 -1
  218. package/build/src/run/ios/appleDevice/client/InstallationProxyClient.js +22 -21
  219. package/build/src/run/ios/appleDevice/client/InstallationProxyClient.js.map +1 -1
  220. package/build/src/run/ios/appleDevice/client/LockdowndClient.js +32 -29
  221. package/build/src/run/ios/appleDevice/client/LockdowndClient.js.map +1 -1
  222. package/build/src/run/ios/appleDevice/client/MobileImageMounterClient.js +28 -24
  223. package/build/src/run/ios/appleDevice/client/MobileImageMounterClient.js.map +1 -1
  224. package/build/src/run/ios/appleDevice/client/ServiceClient.js +7 -4
  225. package/build/src/run/ios/appleDevice/client/ServiceClient.js.map +1 -1
  226. package/build/src/run/ios/appleDevice/client/UsbmuxdClient.js +28 -27
  227. package/build/src/run/ios/appleDevice/client/UsbmuxdClient.js.map +1 -1
  228. package/build/src/run/ios/appleDevice/installOnDeviceAsync.js +23 -17
  229. package/build/src/run/ios/appleDevice/installOnDeviceAsync.js.map +1 -1
  230. package/build/src/run/ios/appleDevice/protocol/AFCProtocol.js +146 -132
  231. package/build/src/run/ios/appleDevice/protocol/AFCProtocol.js.map +1 -1
  232. package/build/src/run/ios/appleDevice/protocol/AbstractProtocol.js +29 -21
  233. package/build/src/run/ios/appleDevice/protocol/AbstractProtocol.js.map +1 -1
  234. package/build/src/run/ios/appleDevice/protocol/GDBProtocol.js +29 -21
  235. package/build/src/run/ios/appleDevice/protocol/GDBProtocol.js.map +1 -1
  236. package/build/src/run/ios/appleDevice/protocol/LockdownProtocol.js +34 -22
  237. package/build/src/run/ios/appleDevice/protocol/LockdownProtocol.js.map +1 -1
  238. package/build/src/run/ios/appleDevice/protocol/UsbmuxProtocol.js +27 -17
  239. package/build/src/run/ios/appleDevice/protocol/UsbmuxProtocol.js.map +1 -1
  240. package/build/src/run/ios/codeSigning/Security.js +53 -39
  241. package/build/src/run/ios/codeSigning/Security.js.map +1 -1
  242. package/build/src/run/ios/codeSigning/configureCodeSigning.js +13 -9
  243. package/build/src/run/ios/codeSigning/configureCodeSigning.js.map +1 -1
  244. package/build/src/run/ios/codeSigning/resolveCertificateSigningIdentity.js +27 -19
  245. package/build/src/run/ios/codeSigning/resolveCertificateSigningIdentity.js.map +1 -1
  246. package/build/src/run/ios/codeSigning/settings.js +9 -5
  247. package/build/src/run/ios/codeSigning/settings.js.map +1 -1
  248. package/build/src/run/ios/codeSigning/simulatorCodeSigning.js +14 -12
  249. package/build/src/run/ios/codeSigning/simulatorCodeSigning.js.map +1 -1
  250. package/build/src/run/ios/codeSigning/xcodeCodeSigning.js +27 -21
  251. package/build/src/run/ios/codeSigning/xcodeCodeSigning.js.map +1 -1
  252. package/build/src/run/ios/index.js +40 -36
  253. package/build/src/run/ios/index.js.map +1 -1
  254. package/build/src/run/ios/launchApp.js +23 -17
  255. package/build/src/run/ios/launchApp.js.map +1 -1
  256. package/build/src/run/ios/options/appleDestinations.js +38 -36
  257. package/build/src/run/ios/options/appleDestinations.js.map +1 -1
  258. package/build/src/run/ios/options/promptDevice.js +20 -16
  259. package/build/src/run/ios/options/promptDevice.js.map +1 -1
  260. package/build/src/run/ios/options/resolveDevice.js +30 -24
  261. package/build/src/run/ios/options/resolveDevice.js.map +1 -1
  262. package/build/src/run/ios/options/resolveNativeScheme.js +31 -23
  263. package/build/src/run/ios/options/resolveNativeScheme.js.map +1 -1
  264. package/build/src/run/ios/options/resolveOptions.js +7 -5
  265. package/build/src/run/ios/options/resolveOptions.js.map +1 -1
  266. package/build/src/run/ios/options/resolveXcodeProject.js +7 -5
  267. package/build/src/run/ios/options/resolveXcodeProject.js.map +1 -1
  268. package/build/src/run/ios/runIosAsync.js +48 -44
  269. package/build/src/run/ios/runIosAsync.js.map +1 -1
  270. package/build/src/run/ios/validateExternalBinary.js +24 -22
  271. package/build/src/run/ios/validateExternalBinary.js.map +1 -1
  272. package/build/src/run/resolveBundlerProps.js +4 -2
  273. package/build/src/run/resolveBundlerProps.js.map +1 -1
  274. package/build/src/run/startBundler.js +16 -12
  275. package/build/src/run/startBundler.js.map +1 -1
  276. package/build/src/serve/index.js +20 -16
  277. package/build/src/serve/index.js.map +1 -1
  278. package/build/src/serve/serveAsync.js +36 -32
  279. package/build/src/serve/serveAsync.js.map +1 -1
  280. package/build/src/start/detectDevClient.js +13 -9
  281. package/build/src/start/detectDevClient.js.map +1 -1
  282. package/build/src/start/doctor/Prerequisite.js +12 -7
  283. package/build/src/start/doctor/Prerequisite.js.map +1 -1
  284. package/build/src/start/doctor/SecurityBinPrerequisite.js +13 -11
  285. package/build/src/start/doctor/SecurityBinPrerequisite.js.map +1 -1
  286. package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js +23 -19
  287. package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js.map +1 -1
  288. package/build/src/start/doctor/apple/XcodeDeveloperDiskImagePrerequisite.js +23 -19
  289. package/build/src/start/doctor/apple/XcodeDeveloperDiskImagePrerequisite.js.map +1 -1
  290. package/build/src/start/doctor/apple/XcodePrerequisite.js +51 -45
  291. package/build/src/start/doctor/apple/XcodePrerequisite.js.map +1 -1
  292. package/build/src/start/doctor/apple/XcrunPrerequisite.js +18 -16
  293. package/build/src/start/doctor/apple/XcrunPrerequisite.js.map +1 -1
  294. package/build/src/start/doctor/dependencies/bundledNativeModules.js +23 -19
  295. package/build/src/start/doctor/dependencies/bundledNativeModules.js.map +1 -1
  296. package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js +31 -25
  297. package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js.map +1 -1
  298. package/build/src/start/doctor/dependencies/getMissingPackages.js +25 -17
  299. package/build/src/start/doctor/dependencies/getMissingPackages.js.map +1 -1
  300. package/build/src/start/doctor/dependencies/getVersionedPackages.js +40 -32
  301. package/build/src/start/doctor/dependencies/getVersionedPackages.js.map +1 -1
  302. package/build/src/start/doctor/dependencies/resolvePackages.js +32 -26
  303. package/build/src/start/doctor/dependencies/resolvePackages.js.map +1 -1
  304. package/build/src/start/doctor/dependencies/validateDependenciesVersions.js +41 -31
  305. package/build/src/start/doctor/dependencies/validateDependenciesVersions.js.map +1 -1
  306. package/build/src/start/doctor/ngrok/ExternalModule.js +34 -29
  307. package/build/src/start/doctor/ngrok/ExternalModule.js.map +1 -1
  308. package/build/src/start/doctor/ngrok/NgrokResolver.js +12 -8
  309. package/build/src/start/doctor/ngrok/NgrokResolver.js.map +1 -1
  310. package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js +32 -28
  311. package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js.map +1 -1
  312. package/build/src/start/doctor/typescript/updateTSConfig.js +23 -17
  313. package/build/src/start/doctor/typescript/updateTSConfig.js.map +1 -1
  314. package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js +33 -27
  315. package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js.map +1 -1
  316. package/build/src/start/index.js +46 -42
  317. package/build/src/start/index.js.map +1 -1
  318. package/build/src/start/interface/KeyPressHandler.js +18 -14
  319. package/build/src/start/interface/KeyPressHandler.js.map +1 -1
  320. package/build/src/start/interface/commandsTable.js +94 -80
  321. package/build/src/start/interface/commandsTable.js.map +1 -1
  322. package/build/src/start/interface/interactiveActions.js +44 -40
  323. package/build/src/start/interface/interactiveActions.js.map +1 -1
  324. package/build/src/start/interface/startInterface.js +65 -61
  325. package/build/src/start/interface/startInterface.js.map +1 -1
  326. package/build/src/start/platforms/AppIdResolver.js +6 -4
  327. package/build/src/start/platforms/AppIdResolver.js.map +1 -1
  328. package/build/src/start/platforms/DeviceManager.js +10 -6
  329. package/build/src/start/platforms/DeviceManager.js.map +1 -1
  330. package/build/src/start/platforms/ExpoGoInstaller.js +25 -20
  331. package/build/src/start/platforms/ExpoGoInstaller.js.map +1 -1
  332. package/build/src/start/platforms/PlatformManager.js +17 -15
  333. package/build/src/start/platforms/PlatformManager.js.map +1 -1
  334. package/build/src/start/platforms/android/ADBServer.js +39 -35
  335. package/build/src/start/platforms/android/ADBServer.js.map +1 -1
  336. package/build/src/start/platforms/android/AndroidAppIdResolver.js +18 -16
  337. package/build/src/start/platforms/android/AndroidAppIdResolver.js.map +1 -1
  338. package/build/src/start/platforms/android/AndroidDeviceManager.js +24 -20
  339. package/build/src/start/platforms/android/AndroidDeviceManager.js.map +1 -1
  340. package/build/src/start/platforms/android/AndroidPlatformManager.js +17 -17
  341. package/build/src/start/platforms/android/AndroidPlatformManager.js.map +1 -1
  342. package/build/src/start/platforms/android/AndroidSdk.js +11 -9
  343. package/build/src/start/platforms/android/AndroidSdk.js.map +1 -1
  344. package/build/src/start/platforms/android/activateWindow.js +26 -22
  345. package/build/src/start/platforms/android/activateWindow.js.map +1 -1
  346. package/build/src/start/platforms/android/adb.js +121 -83
  347. package/build/src/start/platforms/android/adb.js.map +1 -1
  348. package/build/src/start/platforms/android/adbReverse.js +20 -12
  349. package/build/src/start/platforms/android/adbReverse.js.map +1 -1
  350. package/build/src/start/platforms/android/emulator.js +36 -26
  351. package/build/src/start/platforms/android/emulator.js.map +1 -1
  352. package/build/src/start/platforms/android/getDevices.js +7 -5
  353. package/build/src/start/platforms/android/getDevices.js.map +1 -1
  354. package/build/src/start/platforms/android/gradle.js +36 -28
  355. package/build/src/start/platforms/android/gradle.js.map +1 -1
  356. package/build/src/start/platforms/android/promptAndroidDevice.js +19 -15
  357. package/build/src/start/platforms/android/promptAndroidDevice.js.map +1 -1
  358. package/build/src/start/platforms/ios/AppleAppIdResolver.js +21 -19
  359. package/build/src/start/platforms/ios/AppleAppIdResolver.js.map +1 -1
  360. package/build/src/start/platforms/ios/AppleDeviceManager.js +37 -31
  361. package/build/src/start/platforms/ios/AppleDeviceManager.js.map +1 -1
  362. package/build/src/start/platforms/ios/ApplePlatformManager.js +12 -12
  363. package/build/src/start/platforms/ios/ApplePlatformManager.js.map +1 -1
  364. package/build/src/start/platforms/ios/assertSystemRequirements.js +9 -7
  365. package/build/src/start/platforms/ios/assertSystemRequirements.js.map +1 -1
  366. package/build/src/start/platforms/ios/devicectl.js +88 -74
  367. package/build/src/start/platforms/ios/devicectl.js.map +1 -1
  368. package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js +22 -18
  369. package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js.map +1 -1
  370. package/build/src/start/platforms/ios/getBestSimulator.js +29 -19
  371. package/build/src/start/platforms/ios/getBestSimulator.js.map +1 -1
  372. package/build/src/start/platforms/ios/promptAppleDevice.js +14 -10
  373. package/build/src/start/platforms/ios/promptAppleDevice.js.map +1 -1
  374. package/build/src/start/platforms/ios/simctl.js +102 -74
  375. package/build/src/start/platforms/ios/simctl.js.map +1 -1
  376. package/build/src/start/platforms/ios/simctlLogging.js +57 -52
  377. package/build/src/start/platforms/ios/simctlLogging.js.map +1 -1
  378. package/build/src/start/platforms/ios/xcrun.js +22 -18
  379. package/build/src/start/platforms/ios/xcrun.js.map +1 -1
  380. package/build/src/start/project/devices.js +19 -9
  381. package/build/src/start/project/devices.js.map +1 -1
  382. package/build/src/start/project/dotExpo.js +15 -11
  383. package/build/src/start/project/dotExpo.js.map +1 -1
  384. package/build/src/start/project/settings.js +4 -2
  385. package/build/src/start/project/settings.js.map +1 -1
  386. package/build/src/start/resolveOptions.js +48 -40
  387. package/build/src/start/resolveOptions.js.map +1 -1
  388. package/build/src/start/server/AsyncNgrok.js +55 -51
  389. package/build/src/start/server/AsyncNgrok.js.map +1 -1
  390. package/build/src/start/server/AsyncWsTunnel.js +37 -33
  391. package/build/src/start/server/AsyncWsTunnel.js.map +1 -1
  392. package/build/src/start/server/BundlerDevServer.js +81 -79
  393. package/build/src/start/server/BundlerDevServer.js.map +1 -1
  394. package/build/src/start/server/DevServerManager.js +42 -38
  395. package/build/src/start/server/DevServerManager.js.map +1 -1
  396. package/build/src/start/server/DevToolsPluginManager.js +18 -14
  397. package/build/src/start/server/DevToolsPluginManager.js.map +1 -1
  398. package/build/src/start/server/DevelopmentSession.js +18 -14
  399. package/build/src/start/server/DevelopmentSession.js.map +1 -1
  400. package/build/src/start/server/ReactDevToolsProxy.js +16 -10
  401. package/build/src/start/server/ReactDevToolsProxy.js.map +1 -1
  402. package/build/src/start/server/UrlCreator.js +36 -33
  403. package/build/src/start/server/UrlCreator.js.map +1 -1
  404. package/build/src/start/server/getStaticRenderFunctions.js +30 -22
  405. package/build/src/start/server/getStaticRenderFunctions.js.map +1 -1
  406. package/build/src/start/server/metro/DevToolsPluginWebsocketEndpoint.js +9 -5
  407. package/build/src/start/server/metro/DevToolsPluginWebsocketEndpoint.js.map +1 -1
  408. package/build/src/start/server/metro/MetroBundlerDevServer.js +293 -280
  409. package/build/src/start/server/metro/MetroBundlerDevServer.js.map +1 -1
  410. package/build/src/start/server/metro/MetroTerminalReporter.js +63 -56
  411. package/build/src/start/server/metro/MetroTerminalReporter.js.map +1 -1
  412. package/build/src/start/server/metro/TerminalReporter.js +39 -33
  413. package/build/src/start/server/metro/TerminalReporter.js.map +1 -1
  414. package/build/src/start/server/metro/TerminalReporter.types.js.map +1 -1
  415. package/build/src/start/server/metro/createExpoFallbackResolver.js +13 -11
  416. package/build/src/start/server/metro/createExpoFallbackResolver.js.map +1 -1
  417. package/build/src/start/server/metro/createExpoMetroResolver.js +47 -41
  418. package/build/src/start/server/metro/createExpoMetroResolver.js.map +1 -1
  419. package/build/src/start/server/metro/createJResolver.js +31 -27
  420. package/build/src/start/server/metro/createJResolver.js.map +1 -1
  421. package/build/src/start/server/metro/createServerComponentsMiddleware.js +110 -98
  422. package/build/src/start/server/metro/createServerComponentsMiddleware.js.map +1 -1
  423. package/build/src/start/server/metro/createServerRouteMiddleware.js +34 -30
  424. package/build/src/start/server/metro/createServerRouteMiddleware.js.map +1 -1
  425. package/build/src/start/server/metro/debugging/AtlasPrerequisite.js +13 -11
  426. package/build/src/start/server/metro/debugging/AtlasPrerequisite.js.map +1 -1
  427. package/build/src/start/server/metro/debugging/MessageHandler.js +3 -1
  428. package/build/src/start/server/metro/debugging/MessageHandler.js.map +1 -1
  429. package/build/src/start/server/metro/debugging/attachAtlas.js +26 -22
  430. package/build/src/start/server/metro/debugging/attachAtlas.js.map +1 -1
  431. package/build/src/start/server/metro/debugging/createDebugMiddleware.js +19 -17
  432. package/build/src/start/server/metro/debugging/createDebugMiddleware.js.map +1 -1
  433. package/build/src/start/server/metro/debugging/createHandlersFactory.js +25 -31
  434. package/build/src/start/server/metro/debugging/createHandlersFactory.js.map +1 -1
  435. package/build/src/start/server/metro/debugging/getDebuggerType.js +6 -4
  436. package/build/src/start/server/metro/debugging/getDebuggerType.js.map +1 -1
  437. package/build/src/start/server/metro/debugging/messageHandlers/NetworkResponse.js +14 -8
  438. package/build/src/start/server/metro/debugging/messageHandlers/NetworkResponse.js.map +1 -1
  439. package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerGetPossibleBreakpoints.js +7 -5
  440. package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerGetPossibleBreakpoints.js.map +1 -1
  441. package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerSetBreakpointByUrl.js +8 -6
  442. package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerSetBreakpointByUrl.js.map +1 -1
  443. package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeCallFunctionOn.js +7 -5
  444. package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeCallFunctionOn.js.map +1 -1
  445. package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeEvaluate.js +14 -12
  446. package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeEvaluate.js.map +1 -1
  447. package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeGetProperties.js +14 -10
  448. package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeGetProperties.js.map +1 -1
  449. package/build/src/start/server/metro/debugging/pageIsSupported.js +6 -4
  450. package/build/src/start/server/metro/debugging/pageIsSupported.js.map +1 -1
  451. package/build/src/start/server/metro/debugging/types.js.map +1 -1
  452. package/build/src/start/server/metro/dev-server/createEventSocket.js +18 -16
  453. package/build/src/start/server/metro/dev-server/createEventSocket.js.map +1 -1
  454. package/build/src/start/server/metro/dev-server/createMessageSocket.js +23 -21
  455. package/build/src/start/server/metro/dev-server/createMessageSocket.js.map +1 -1
  456. package/build/src/start/server/metro/dev-server/createMetroMiddleware.js +23 -21
  457. package/build/src/start/server/metro/dev-server/createMetroMiddleware.js.map +1 -1
  458. package/build/src/start/server/metro/dev-server/utils/createSocketBroadcaster.js +4 -2
  459. package/build/src/start/server/metro/dev-server/utils/createSocketBroadcaster.js.map +1 -1
  460. package/build/src/start/server/metro/dev-server/utils/createSocketMap.js +4 -2
  461. package/build/src/start/server/metro/dev-server/utils/createSocketMap.js.map +1 -1
  462. package/build/src/start/server/metro/dev-server/utils/socketMessages.js +8 -4
  463. package/build/src/start/server/metro/dev-server/utils/socketMessages.js.map +1 -1
  464. package/build/src/start/server/metro/externals.js +33 -25
  465. package/build/src/start/server/metro/externals.js.map +1 -1
  466. package/build/src/start/server/metro/fetchRouterManifest.js +28 -12
  467. package/build/src/start/server/metro/fetchRouterManifest.js.map +1 -1
  468. package/build/src/start/server/metro/formatFileCandidates.js +11 -9
  469. package/build/src/start/server/metro/formatFileCandidates.js.map +1 -1
  470. package/build/src/start/server/metro/getCssModulesFromBundler.js +24 -20
  471. package/build/src/start/server/metro/getCssModulesFromBundler.js.map +1 -1
  472. package/build/src/start/server/metro/instantiateMetro.js +87 -81
  473. package/build/src/start/server/metro/instantiateMetro.js.map +1 -1
  474. package/build/src/start/server/metro/log-box/LogBoxLog.js +40 -36
  475. package/build/src/start/server/metro/log-box/LogBoxLog.js.map +1 -1
  476. package/build/src/start/server/metro/log-box/LogBoxSymbolication.js +20 -14
  477. package/build/src/start/server/metro/log-box/LogBoxSymbolication.js.map +1 -1
  478. package/build/src/start/server/metro/log-box/formatProjectFilePath.js +10 -6
  479. package/build/src/start/server/metro/log-box/formatProjectFilePath.js.map +1 -1
  480. package/build/src/start/server/metro/metroErrorInterface.js +88 -78
  481. package/build/src/start/server/metro/metroErrorInterface.js.map +1 -1
  482. package/build/src/start/server/metro/metroErrors.js +8 -4
  483. package/build/src/start/server/metro/metroErrors.js.map +1 -1
  484. package/build/src/start/server/metro/metroPrivateServer.js +9 -7
  485. package/build/src/start/server/metro/metroPrivateServer.js.map +1 -1
  486. package/build/src/start/server/metro/metroVirtualModules.js +10 -8
  487. package/build/src/start/server/metro/metroVirtualModules.js.map +1 -1
  488. package/build/src/start/server/metro/metroWatchTypeScriptFiles.js +24 -22
  489. package/build/src/start/server/metro/metroWatchTypeScriptFiles.js.map +1 -1
  490. package/build/src/start/server/metro/router.js +48 -32
  491. package/build/src/start/server/metro/router.js.map +1 -1
  492. package/build/src/start/server/metro/runServer-fork.js +24 -22
  493. package/build/src/start/server/metro/runServer-fork.js.map +1 -1
  494. package/build/src/start/server/metro/serializeHtml.js +24 -22
  495. package/build/src/start/server/metro/serializeHtml.js.map +1 -1
  496. package/build/src/start/server/metro/symbolicate.js.map +1 -1
  497. package/build/src/start/server/metro/waitForMetroToObserveTypeScriptFile.js +35 -29
  498. package/build/src/start/server/metro/waitForMetroToObserveTypeScriptFile.js.map +1 -1
  499. package/build/src/start/server/metro/withMetroMultiPlatform.js +150 -140
  500. package/build/src/start/server/metro/withMetroMultiPlatform.js.map +1 -1
  501. package/build/src/start/server/metro/withMetroResolvers.js +49 -39
  502. package/build/src/start/server/metro/withMetroResolvers.js.map +1 -1
  503. package/build/src/start/server/middleware/ContextModuleSourceMapsMiddleware.js +8 -6
  504. package/build/src/start/server/middleware/ContextModuleSourceMapsMiddleware.js.map +1 -1
  505. package/build/src/start/server/middleware/CorsMiddleware.js +17 -15
  506. package/build/src/start/server/middleware/CorsMiddleware.js.map +1 -1
  507. package/build/src/start/server/middleware/CreateFileMiddleware.js +32 -31
  508. package/build/src/start/server/middleware/CreateFileMiddleware.js.map +1 -1
  509. package/build/src/start/server/middleware/DevToolsPluginMiddleware.js +22 -19
  510. package/build/src/start/server/middleware/DevToolsPluginMiddleware.js.map +1 -1
  511. package/build/src/start/server/middleware/DomComponentsMiddleware.js +33 -27
  512. package/build/src/start/server/middleware/DomComponentsMiddleware.js.map +1 -1
  513. package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js +61 -57
  514. package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js.map +1 -1
  515. package/build/src/start/server/middleware/ExpoMiddleware.js +15 -9
  516. package/build/src/start/server/middleware/ExpoMiddleware.js.map +1 -1
  517. package/build/src/start/server/middleware/FaviconMiddleware.js +16 -15
  518. package/build/src/start/server/middleware/FaviconMiddleware.js.map +1 -1
  519. package/build/src/start/server/middleware/HistoryFallbackMiddleware.js +4 -2
  520. package/build/src/start/server/middleware/HistoryFallbackMiddleware.js.map +1 -1
  521. package/build/src/start/server/middleware/InterstitialPageMiddleware.js +34 -31
  522. package/build/src/start/server/middleware/InterstitialPageMiddleware.js.map +1 -1
  523. package/build/src/start/server/middleware/ManifestMiddleware.js +64 -56
  524. package/build/src/start/server/middleware/ManifestMiddleware.js.map +1 -1
  525. package/build/src/start/server/middleware/ReactDevToolsPageMiddleware.js +23 -19
  526. package/build/src/start/server/middleware/ReactDevToolsPageMiddleware.js.map +1 -1
  527. package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js +20 -19
  528. package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js.map +1 -1
  529. package/build/src/start/server/middleware/ServeStaticMiddleware.js +11 -9
  530. package/build/src/start/server/middleware/ServeStaticMiddleware.js.map +1 -1
  531. package/build/src/start/server/middleware/createBuiltinAPIRequestHandler.js +17 -11
  532. package/build/src/start/server/middleware/createBuiltinAPIRequestHandler.js.map +1 -1
  533. package/build/src/start/server/middleware/inspector/CdpClient.js +12 -10
  534. package/build/src/start/server/middleware/inspector/CdpClient.js.map +1 -1
  535. package/build/src/start/server/middleware/inspector/JsInspector.js +35 -27
  536. package/build/src/start/server/middleware/inspector/JsInspector.js.map +1 -1
  537. package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js +21 -19
  538. package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js.map +1 -1
  539. package/build/src/start/server/middleware/inspector/middlwareMutations.js +6 -2
  540. package/build/src/start/server/middleware/inspector/middlwareMutations.js.map +1 -1
  541. package/build/src/start/server/middleware/metroOptions.js +120 -96
  542. package/build/src/start/server/middleware/metroOptions.js.map +1 -1
  543. package/build/src/start/server/middleware/mutations.js +7 -3
  544. package/build/src/start/server/middleware/mutations.js.map +1 -1
  545. package/build/src/start/server/middleware/resolveAssets.js +26 -18
  546. package/build/src/start/server/middleware/resolveAssets.js.map +1 -1
  547. package/build/src/start/server/middleware/resolvePlatform.js +23 -15
  548. package/build/src/start/server/middleware/resolvePlatform.js.map +1 -1
  549. package/build/src/start/server/middleware/resolveRuntimeVersionWithExpoUpdatesAsync.js +11 -9
  550. package/build/src/start/server/middleware/resolveRuntimeVersionWithExpoUpdatesAsync.js.map +1 -1
  551. package/build/src/start/server/middleware/server.types.js.map +1 -1
  552. package/build/src/start/server/openPlatforms.js +10 -8
  553. package/build/src/start/server/openPlatforms.js.map +1 -1
  554. package/build/src/start/server/platformBundlers.js +13 -11
  555. package/build/src/start/server/platformBundlers.js.map +1 -1
  556. package/build/src/start/server/serverLogLikeMetro.js +58 -50
  557. package/build/src/start/server/serverLogLikeMetro.js.map +1 -1
  558. package/build/src/start/server/type-generation/expo-env.js +11 -7
  559. package/build/src/start/server/type-generation/expo-env.js.map +1 -1
  560. package/build/src/start/server/type-generation/routes.js +72 -50
  561. package/build/src/start/server/type-generation/routes.js.map +1 -1
  562. package/build/src/start/server/type-generation/startTypescriptTypeGeneration.js +21 -19
  563. package/build/src/start/server/type-generation/startTypescriptTypeGeneration.js.map +1 -1
  564. package/build/src/start/server/type-generation/tsconfig.js +36 -28
  565. package/build/src/start/server/type-generation/tsconfig.js.map +1 -1
  566. package/build/src/start/server/webTemplate.js +28 -24
  567. package/build/src/start/server/webTemplate.js.map +1 -1
  568. package/build/src/start/server/webpack/WebpackBundlerDevServer.js +52 -46
  569. package/build/src/start/server/webpack/WebpackBundlerDevServer.js.map +1 -1
  570. package/build/src/start/server/webpack/compile.js +15 -11
  571. package/build/src/start/server/webpack/compile.js.map +1 -1
  572. package/build/src/start/server/webpack/formatWebpackMessages.js +28 -26
  573. package/build/src/start/server/webpack/formatWebpackMessages.js.map +1 -1
  574. package/build/src/start/server/webpack/resolveFromProject.js +18 -12
  575. package/build/src/start/server/webpack/resolveFromProject.js.map +1 -1
  576. package/build/src/start/server/webpack/tls.js +18 -12
  577. package/build/src/start/server/webpack/tls.js.map +1 -1
  578. package/build/src/start/startAsync.js +31 -27
  579. package/build/src/start/startAsync.js.map +1 -1
  580. package/build/src/utils/FileNotifier.js +20 -17
  581. package/build/src/utils/FileNotifier.js.map +1 -1
  582. package/build/src/utils/ansi.js +7 -5
  583. package/build/src/utils/ansi.js.map +1 -1
  584. package/build/src/utils/args.js +24 -14
  585. package/build/src/utils/args.js.map +1 -1
  586. package/build/src/utils/array.js +18 -6
  587. package/build/src/utils/array.js.map +1 -1
  588. package/build/src/utils/cocoapods.js +54 -46
  589. package/build/src/utils/cocoapods.js.map +1 -1
  590. package/build/src/utils/codesigning.js +79 -69
  591. package/build/src/utils/codesigning.js.map +1 -1
  592. package/build/src/utils/createFileTransform.js +16 -12
  593. package/build/src/utils/createFileTransform.js.map +1 -1
  594. package/build/src/utils/createTempPath.js +12 -8
  595. package/build/src/utils/createTempPath.js.map +1 -1
  596. package/build/src/utils/delay.js +12 -6
  597. package/build/src/utils/delay.js.map +1 -1
  598. package/build/src/utils/dir.js +40 -22
  599. package/build/src/utils/dir.js.map +1 -1
  600. package/build/src/utils/downloadAppAsync.js +10 -8
  601. package/build/src/utils/downloadAppAsync.js.map +1 -1
  602. package/build/src/utils/downloadExpoGoAsync.js +27 -23
  603. package/build/src/utils/downloadExpoGoAsync.js.map +1 -1
  604. package/build/src/utils/editor.js +41 -35
  605. package/build/src/utils/editor.js.map +1 -1
  606. package/build/src/utils/env.js +63 -59
  607. package/build/src/utils/env.js.map +1 -1
  608. package/build/src/utils/errors.js +37 -30
  609. package/build/src/utils/errors.js.map +1 -1
  610. package/build/src/utils/exit.js +35 -31
  611. package/build/src/utils/exit.js.map +1 -1
  612. package/build/src/utils/expoUpdatesCli.js +32 -22
  613. package/build/src/utils/expoUpdatesCli.js.map +1 -1
  614. package/build/src/utils/fetch.js +8 -4
  615. package/build/src/utils/fetch.js.map +1 -1
  616. package/build/src/utils/filePath.js +10 -6
  617. package/build/src/utils/filePath.js.map +1 -1
  618. package/build/src/utils/findUp.js +13 -9
  619. package/build/src/utils/findUp.js.map +1 -1
  620. package/build/src/utils/fn.js +6 -2
  621. package/build/src/utils/fn.js.map +1 -1
  622. package/build/src/utils/getOrPromptApplicationId.js +41 -35
  623. package/build/src/utils/getOrPromptApplicationId.js.map +1 -1
  624. package/build/src/utils/getRunningProcess.js +29 -21
  625. package/build/src/utils/getRunningProcess.js.map +1 -1
  626. package/build/src/utils/git.js +26 -20
  627. package/build/src/utils/git.js.map +1 -1
  628. package/build/src/utils/glob.js +8 -4
  629. package/build/src/utils/glob.js.map +1 -1
  630. package/build/src/utils/interactive.js +3 -1
  631. package/build/src/utils/interactive.js.map +1 -1
  632. package/build/src/utils/ip.js +21 -19
  633. package/build/src/utils/ip.js.map +1 -1
  634. package/build/src/utils/isModuleSymlinked.js +11 -9
  635. package/build/src/utils/isModuleSymlinked.js.map +1 -1
  636. package/build/src/utils/jsonSchemaDeref.js +20 -18
  637. package/build/src/utils/jsonSchemaDeref.js.map +1 -1
  638. package/build/src/utils/link.js +17 -13
  639. package/build/src/utils/link.js.map +1 -1
  640. package/build/src/utils/mergeGitIgnorePaths.js +46 -28
  641. package/build/src/utils/mergeGitIgnorePaths.js.map +1 -1
  642. package/build/src/utils/modifyConfigAsync.js +16 -10
  643. package/build/src/utils/modifyConfigAsync.js.map +1 -1
  644. package/build/src/utils/modifyConfigPlugins.js +10 -6
  645. package/build/src/utils/modifyConfigPlugins.js.map +1 -1
  646. package/build/src/utils/multipartMixed.js +13 -11
  647. package/build/src/utils/multipartMixed.js.map +1 -1
  648. package/build/src/utils/nodeEnv.js +12 -6
  649. package/build/src/utils/nodeEnv.js.map +1 -1
  650. package/build/src/utils/nodeModules.js +10 -8
  651. package/build/src/utils/nodeModules.js.map +1 -1
  652. package/build/src/utils/npm.js +49 -35
  653. package/build/src/utils/npm.js.map +1 -1
  654. package/build/src/utils/obj.js +11 -5
  655. package/build/src/utils/obj.js.map +1 -1
  656. package/build/src/utils/open.js +10 -8
  657. package/build/src/utils/open.js.map +1 -1
  658. package/build/src/utils/ora.js +13 -7
  659. package/build/src/utils/ora.js.map +1 -1
  660. package/build/src/utils/plist.js +21 -15
  661. package/build/src/utils/plist.js.map +1 -1
  662. package/build/src/utils/port.js +43 -33
  663. package/build/src/utils/port.js.map +1 -1
  664. package/build/src/utils/profile.js +11 -7
  665. package/build/src/utils/profile.js.map +1 -1
  666. package/build/src/utils/progress.js +11 -5
  667. package/build/src/utils/progress.js.map +1 -1
  668. package/build/src/utils/prompts.js +47 -29
  669. package/build/src/utils/prompts.js.map +1 -1
  670. package/build/src/utils/resolveArgs.js +36 -24
  671. package/build/src/utils/resolveArgs.js.map +1 -1
  672. package/build/src/utils/scheme.js +40 -32
  673. package/build/src/utils/scheme.js.map +1 -1
  674. package/build/src/utils/stream.js +5 -3
  675. package/build/src/utils/stream.js.map +1 -1
  676. package/build/src/utils/strings.js +6 -4
  677. package/build/src/utils/strings.js.map +1 -1
  678. package/build/src/utils/tar.js +18 -14
  679. package/build/src/utils/tar.js.map +1 -1
  680. package/build/src/utils/telemetry/Telemetry.js +29 -27
  681. package/build/src/utils/telemetry/Telemetry.js.map +1 -1
  682. package/build/src/utils/telemetry/clients/FetchClient.js +15 -13
  683. package/build/src/utils/telemetry/clients/FetchClient.js.map +1 -1
  684. package/build/src/utils/telemetry/clients/FetchDetachedClient.js +26 -22
  685. package/build/src/utils/telemetry/clients/FetchDetachedClient.js.map +1 -1
  686. package/build/src/utils/telemetry/clients/flushFetchDetached.js +10 -10
  687. package/build/src/utils/telemetry/clients/flushFetchDetached.js.map +1 -1
  688. package/build/src/utils/telemetry/events.js +4 -2
  689. package/build/src/utils/telemetry/events.js.map +1 -1
  690. package/build/src/utils/telemetry/index.js +25 -29
  691. package/build/src/utils/telemetry/index.js.map +1 -1
  692. package/build/src/utils/telemetry/types.js.map +1 -1
  693. package/build/src/utils/telemetry/utils/constants.js +8 -4
  694. package/build/src/utils/telemetry/utils/constants.js.map +1 -1
  695. package/build/src/utils/telemetry/utils/context.js +18 -14
  696. package/build/src/utils/telemetry/utils/context.js.map +1 -1
  697. package/build/src/utils/template.js +6 -4
  698. package/build/src/utils/template.js.map +1 -1
  699. package/build/src/utils/terminal.js +4 -2
  700. package/build/src/utils/terminal.js.map +1 -1
  701. package/build/src/utils/tsconfig/evaluateTsConfig.js +21 -17
  702. package/build/src/utils/tsconfig/evaluateTsConfig.js.map +1 -1
  703. package/build/src/utils/tsconfig/loadTsConfigPaths.js +18 -14
  704. package/build/src/utils/tsconfig/loadTsConfigPaths.js.map +1 -1
  705. package/build/src/utils/tsconfig/matchTsConfigPathAlias.js +7 -5
  706. package/build/src/utils/tsconfig/matchTsConfigPathAlias.js.map +1 -1
  707. package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js +14 -12
  708. package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js.map +1 -1
  709. package/build/src/utils/url.js +23 -13
  710. package/build/src/utils/url.js.map +1 -1
  711. package/build/src/utils/validateApplicationId.js +108 -86
  712. package/build/src/utils/validateApplicationId.js.map +1 -1
  713. package/build/src/utils/variadic.js +22 -16
  714. package/build/src/utils/variadic.js.map +1 -1
  715. package/build/src/whoami/index.js +11 -7
  716. package/build/src/whoami/index.js.map +1 -1
  717. package/build/src/whoami/whoamiAsync.js +11 -7
  718. package/build/src/whoami/whoamiAsync.js.map +1 -1
  719. package/package.json +17 -16
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/run/ios/appleDevice/ClientManager.ts"],"sourcesContent":["/**\n * Copyright (c) 2021 Expo, Inc.\n * Copyright (c) 2018 Drifty Co.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { Socket } from 'net';\nimport { Duplex } from 'stream';\nimport * as tls from 'tls';\n\nimport { AFCClient } from './client/AFCClient';\nimport { DebugserverClient } from './client/DebugserverClient';\nimport { InstallationProxyClient } from './client/InstallationProxyClient';\nimport { LockdowndClient } from './client/LockdowndClient';\nimport { MobileImageMounterClient } from './client/MobileImageMounterClient';\nimport { ServiceClient } from './client/ServiceClient';\nimport { UsbmuxdClient, UsbmuxdDevice, UsbmuxdPairRecord } from './client/UsbmuxdClient';\nimport { CommandError } from '../../../utils/errors';\n\nexport class ClientManager {\n private connections: Socket[];\n constructor(\n public pairRecord: UsbmuxdPairRecord,\n public device: UsbmuxdDevice,\n private lockdowndClient: LockdowndClient\n ) {\n this.connections = [lockdowndClient.socket];\n }\n\n static async create(udid?: string) {\n const usbmuxClient = new UsbmuxdClient(UsbmuxdClient.connectUsbmuxdSocket());\n const device = await usbmuxClient.getDevice(udid);\n const pairRecord = await usbmuxClient.readPairRecord(device.Properties.SerialNumber);\n const lockdownSocket = await usbmuxClient.connect(device, 62078);\n const lockdownClient = new LockdowndClient(lockdownSocket);\n await lockdownClient.doHandshake(pairRecord);\n return new ClientManager(pairRecord, device, lockdownClient);\n }\n\n async getUsbmuxdClient() {\n const usbmuxClient = new UsbmuxdClient(UsbmuxdClient.connectUsbmuxdSocket());\n this.connections.push(usbmuxClient.socket);\n return usbmuxClient;\n }\n\n async getLockdowndClient() {\n const usbmuxClient = new UsbmuxdClient(UsbmuxdClient.connectUsbmuxdSocket());\n const lockdownSocket = await usbmuxClient.connect(this.device, 62078);\n const lockdownClient = new LockdowndClient(lockdownSocket);\n this.connections.push(lockdownClient.socket);\n return lockdownClient;\n }\n\n async getLockdowndClientWithHandshake() {\n const lockdownClient = await this.getLockdowndClient();\n await lockdownClient.doHandshake(this.pairRecord);\n return lockdownClient;\n }\n\n async getAFCClient() {\n return this.getServiceClient('com.apple.afc', AFCClient);\n }\n\n async getInstallationProxyClient() {\n return this.getServiceClient('com.apple.mobile.installation_proxy', InstallationProxyClient);\n }\n\n async getMobileImageMounterClient() {\n return this.getServiceClient('com.apple.mobile.mobile_image_mounter', MobileImageMounterClient);\n }\n\n async getDebugserverClient() {\n try {\n // iOS 14 added support for a secure debug service so try to connect to that first\n return await this.getServiceClient(\n 'com.apple.debugserver.DVTSecureSocketProxy',\n DebugserverClient\n );\n } catch {\n // otherwise, fall back to the previous implementation\n return this.getServiceClient('com.apple.debugserver', DebugserverClient, true);\n }\n }\n\n private async getServiceClient<T extends ServiceClient<any>>(\n name: string,\n ServiceType: new (...args: any[]) => T,\n disableSSL = false\n ) {\n const { port: servicePort, enableServiceSSL } = await this.lockdowndClient.startService(name);\n const usbmuxClient = new UsbmuxdClient(UsbmuxdClient.connectUsbmuxdSocket());\n let usbmuxdSocket = await usbmuxClient.connect(this.device, servicePort);\n\n if (enableServiceSSL) {\n const tlsOptions: tls.ConnectionOptions = {\n rejectUnauthorized: false,\n secureContext: tls.createSecureContext({\n // Avoid using `secureProtocol` fixing the socket to a single TLS version.\n // Newer Node versions might not support older TLS versions.\n // By using the default `minVersion` and `maxVersion` options,\n // The socket will automatically use the appropriate TLS version.\n // See: https://nodejs.org/api/tls.html#tlscreatesecurecontextoptions\n cert: this.pairRecord.RootCertificate,\n key: this.pairRecord.RootPrivateKey,\n }),\n };\n\n // Some services seem to not support TLS/SSL after the initial handshake\n // More info: https://github.com/libimobiledevice/libimobiledevice/issues/793\n if (disableSSL) {\n // According to https://nodejs.org/api/tls.html#tls_tls_connect_options_callback we can\n // pass any Duplex in to tls.connect instead of a Socket. So we'll use our proxy to keep\n // the TLS wrapper and underlying usbmuxd socket separate.\n const proxy: any = new UsbmuxdProxy(usbmuxdSocket);\n tlsOptions.socket = proxy;\n\n await new Promise<void>((resolve, reject) => {\n const timeoutId = setTimeout(() => {\n reject(\n new CommandError('APPLE_DEVICE', 'The TLS handshake failed to complete after 5s.')\n );\n }, 5000);\n tls.connect(tlsOptions, function (this: tls.TLSSocket) {\n clearTimeout(timeoutId);\n // After the handshake, we don't need TLS or the proxy anymore,\n // since we'll just pass in the naked usbmuxd socket to the service client\n this.destroy();\n resolve();\n });\n });\n } else {\n tlsOptions.socket = usbmuxdSocket;\n usbmuxdSocket = tls.connect(tlsOptions);\n }\n }\n const client = new ServiceType(usbmuxdSocket);\n this.connections.push(client.socket);\n return client;\n }\n\n end() {\n for (const socket of this.connections) {\n // may already be closed\n try {\n socket.end();\n } catch {}\n }\n }\n}\n\nclass UsbmuxdProxy extends Duplex {\n constructor(private usbmuxdSock: Socket) {\n super();\n\n this.usbmuxdSock.on('data', (data) => {\n this.push(data);\n });\n }\n\n _write(chunk: any, encoding: string, callback: (err?: Error) => void) {\n this.usbmuxdSock.write(chunk);\n callback();\n }\n\n _read(size: number) {\n // Stub so we don't error, since we push everything we get from usbmuxd as it comes in.\n // TODO: better way to do this?\n }\n\n _destroy() {\n this.usbmuxdSock.removeAllListeners();\n }\n}\n"],"names":["ClientManager","constructor","pairRecord","device","lockdowndClient","connections","socket","create","udid","usbmuxClient","UsbmuxdClient","connectUsbmuxdSocket","getDevice","readPairRecord","Properties","SerialNumber","lockdownSocket","connect","lockdownClient","LockdowndClient","doHandshake","getUsbmuxdClient","push","getLockdowndClient","getLockdowndClientWithHandshake","getAFCClient","getServiceClient","AFCClient","getInstallationProxyClient","InstallationProxyClient","getMobileImageMounterClient","MobileImageMounterClient","getDebugserverClient","DebugserverClient","name","ServiceType","disableSSL","port","servicePort","enableServiceSSL","startService","usbmuxdSocket","tlsOptions","rejectUnauthorized","secureContext","tls","createSecureContext","cert","RootCertificate","key","RootPrivateKey","proxy","UsbmuxdProxy","Promise","resolve","reject","timeoutId","setTimeout","CommandError","clearTimeout","destroy","client","end","Duplex","usbmuxdSock","on","data","_write","chunk","encoding","callback","write","_read","size","_destroy","removeAllListeners"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../src/run/ios/appleDevice/ClientManager.ts"],"sourcesContent":["/**\n * Copyright (c) 2021 Expo, Inc.\n * Copyright (c) 2018 Drifty Co.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { Socket } from 'net';\nimport { Duplex } from 'stream';\nimport * as tls from 'tls';\n\nimport { AFCClient } from './client/AFCClient';\nimport { DebugserverClient } from './client/DebugserverClient';\nimport { InstallationProxyClient } from './client/InstallationProxyClient';\nimport { LockdowndClient } from './client/LockdowndClient';\nimport { MobileImageMounterClient } from './client/MobileImageMounterClient';\nimport { ServiceClient } from './client/ServiceClient';\nimport { UsbmuxdClient, UsbmuxdDevice, UsbmuxdPairRecord } from './client/UsbmuxdClient';\nimport { CommandError } from '../../../utils/errors';\n\nexport class ClientManager {\n private connections: Socket[];\n constructor(\n public pairRecord: UsbmuxdPairRecord,\n public device: UsbmuxdDevice,\n private lockdowndClient: LockdowndClient\n ) {\n this.connections = [lockdowndClient.socket];\n }\n\n static async create(udid?: string) {\n const usbmuxClient = new UsbmuxdClient(UsbmuxdClient.connectUsbmuxdSocket());\n const device = await usbmuxClient.getDevice(udid);\n const pairRecord = await usbmuxClient.readPairRecord(device.Properties.SerialNumber);\n const lockdownSocket = await usbmuxClient.connect(device, 62078);\n const lockdownClient = new LockdowndClient(lockdownSocket);\n await lockdownClient.doHandshake(pairRecord);\n return new ClientManager(pairRecord, device, lockdownClient);\n }\n\n async getUsbmuxdClient() {\n const usbmuxClient = new UsbmuxdClient(UsbmuxdClient.connectUsbmuxdSocket());\n this.connections.push(usbmuxClient.socket);\n return usbmuxClient;\n }\n\n async getLockdowndClient() {\n const usbmuxClient = new UsbmuxdClient(UsbmuxdClient.connectUsbmuxdSocket());\n const lockdownSocket = await usbmuxClient.connect(this.device, 62078);\n const lockdownClient = new LockdowndClient(lockdownSocket);\n this.connections.push(lockdownClient.socket);\n return lockdownClient;\n }\n\n async getLockdowndClientWithHandshake() {\n const lockdownClient = await this.getLockdowndClient();\n await lockdownClient.doHandshake(this.pairRecord);\n return lockdownClient;\n }\n\n async getAFCClient() {\n return this.getServiceClient('com.apple.afc', AFCClient);\n }\n\n async getInstallationProxyClient() {\n return this.getServiceClient('com.apple.mobile.installation_proxy', InstallationProxyClient);\n }\n\n async getMobileImageMounterClient() {\n return this.getServiceClient('com.apple.mobile.mobile_image_mounter', MobileImageMounterClient);\n }\n\n async getDebugserverClient() {\n try {\n // iOS 14 added support for a secure debug service so try to connect to that first\n return await this.getServiceClient(\n 'com.apple.debugserver.DVTSecureSocketProxy',\n DebugserverClient\n );\n } catch {\n // otherwise, fall back to the previous implementation\n return this.getServiceClient('com.apple.debugserver', DebugserverClient, true);\n }\n }\n\n private async getServiceClient<T extends ServiceClient<any>>(\n name: string,\n ServiceType: new (...args: any[]) => T,\n disableSSL = false\n ) {\n const { port: servicePort, enableServiceSSL } = await this.lockdowndClient.startService(name);\n const usbmuxClient = new UsbmuxdClient(UsbmuxdClient.connectUsbmuxdSocket());\n let usbmuxdSocket = await usbmuxClient.connect(this.device, servicePort);\n\n if (enableServiceSSL) {\n const tlsOptions: tls.ConnectionOptions = {\n rejectUnauthorized: false,\n secureContext: tls.createSecureContext({\n // Avoid using `secureProtocol` fixing the socket to a single TLS version.\n // Newer Node versions might not support older TLS versions.\n // By using the default `minVersion` and `maxVersion` options,\n // The socket will automatically use the appropriate TLS version.\n // See: https://nodejs.org/api/tls.html#tlscreatesecurecontextoptions\n cert: this.pairRecord.RootCertificate,\n key: this.pairRecord.RootPrivateKey,\n }),\n };\n\n // Some services seem to not support TLS/SSL after the initial handshake\n // More info: https://github.com/libimobiledevice/libimobiledevice/issues/793\n if (disableSSL) {\n // According to https://nodejs.org/api/tls.html#tls_tls_connect_options_callback we can\n // pass any Duplex in to tls.connect instead of a Socket. So we'll use our proxy to keep\n // the TLS wrapper and underlying usbmuxd socket separate.\n const proxy: any = new UsbmuxdProxy(usbmuxdSocket);\n tlsOptions.socket = proxy;\n\n await new Promise<void>((resolve, reject) => {\n const timeoutId = setTimeout(() => {\n reject(\n new CommandError('APPLE_DEVICE', 'The TLS handshake failed to complete after 5s.')\n );\n }, 5000);\n tls.connect(tlsOptions, function (this: tls.TLSSocket) {\n clearTimeout(timeoutId);\n // After the handshake, we don't need TLS or the proxy anymore,\n // since we'll just pass in the naked usbmuxd socket to the service client\n this.destroy();\n resolve();\n });\n });\n } else {\n tlsOptions.socket = usbmuxdSocket;\n usbmuxdSocket = tls.connect(tlsOptions);\n }\n }\n const client = new ServiceType(usbmuxdSocket);\n this.connections.push(client.socket);\n return client;\n }\n\n end() {\n for (const socket of this.connections) {\n // may already be closed\n try {\n socket.end();\n } catch {}\n }\n }\n}\n\nclass UsbmuxdProxy extends Duplex {\n constructor(private usbmuxdSock: Socket) {\n super();\n\n this.usbmuxdSock.on('data', (data) => {\n this.push(data);\n });\n }\n\n _write(chunk: any, encoding: string, callback: (err?: Error) => void) {\n this.usbmuxdSock.write(chunk);\n callback();\n }\n\n _read(size: number) {\n // Stub so we don't error, since we push everything we get from usbmuxd as it comes in.\n // TODO: better way to do this?\n }\n\n _destroy() {\n this.usbmuxdSock.removeAllListeners();\n }\n}\n"],"names":["ClientManager","constructor","pairRecord","device","lockdowndClient","connections","socket","create","udid","usbmuxClient","UsbmuxdClient","connectUsbmuxdSocket","getDevice","readPairRecord","Properties","SerialNumber","lockdownSocket","connect","lockdownClient","LockdowndClient","doHandshake","getUsbmuxdClient","push","getLockdowndClient","getLockdowndClientWithHandshake","getAFCClient","getServiceClient","AFCClient","getInstallationProxyClient","InstallationProxyClient","getMobileImageMounterClient","MobileImageMounterClient","getDebugserverClient","DebugserverClient","name","ServiceType","disableSSL","port","servicePort","enableServiceSSL","startService","usbmuxdSocket","tlsOptions","rejectUnauthorized","secureContext","tls","createSecureContext","cert","RootCertificate","key","RootPrivateKey","proxy","UsbmuxdProxy","Promise","resolve","reject","timeoutId","setTimeout","CommandError","clearTimeout","destroy","client","end","Duplex","usbmuxdSock","on","data","_write","chunk","encoding","callback","write","_read","size","_destroy","removeAllListeners"],"mappings":"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"}
@@ -10,24 +10,26 @@ Object.defineProperty(exports, "__esModule", {
10
10
  });
11
11
  Object.defineProperty(exports, "AFCClient", {
12
12
  enumerable: true,
13
- get: ()=>AFCClient
13
+ get: function() {
14
+ return AFCClient;
15
+ }
14
16
  });
15
17
  function _debug() {
16
- const data = /*#__PURE__*/ _interopRequireDefault(require("debug"));
18
+ const data = /*#__PURE__*/ _interop_require_default(require("debug"));
17
19
  _debug = function() {
18
20
  return data;
19
21
  };
20
22
  return data;
21
23
  }
22
24
  function _fs() {
23
- const data = /*#__PURE__*/ _interopRequireWildcard(require("fs"));
25
+ const data = /*#__PURE__*/ _interop_require_wildcard(require("fs"));
24
26
  _fs = function() {
25
27
  return data;
26
28
  };
27
29
  return data;
28
30
  }
29
31
  function _path() {
30
- const data = /*#__PURE__*/ _interopRequireWildcard(require("path"));
32
+ const data = /*#__PURE__*/ _interop_require_wildcard(require("path"));
31
33
  _path = function() {
32
34
  return data;
33
35
  };
@@ -40,10 +42,10 @@ function _util() {
40
42
  };
41
43
  return data;
42
44
  }
43
- const _serviceClient = require("./ServiceClient");
45
+ const _ServiceClient = require("./ServiceClient");
44
46
  const _errors = require("../../../../utils/errors");
45
- const _afcprotocol = require("../protocol/AFCProtocol");
46
- function _interopRequireDefault(obj) {
47
+ const _AFCProtocol = require("../protocol/AFCProtocol");
48
+ function _interop_require_default(obj) {
47
49
  return obj && obj.__esModule ? obj : {
48
50
  default: obj
49
51
  };
@@ -56,7 +58,7 @@ function _getRequireWildcardCache(nodeInterop) {
56
58
  return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
57
59
  })(nodeInterop);
58
60
  }
59
- function _interopRequireWildcard(obj, nodeInterop) {
61
+ function _interop_require_wildcard(obj, nodeInterop) {
60
62
  if (!nodeInterop && obj && obj.__esModule) {
61
63
  return obj;
62
64
  }
@@ -69,7 +71,9 @@ function _interopRequireWildcard(obj, nodeInterop) {
69
71
  if (cache && cache.has(obj)) {
70
72
  return cache.get(obj);
71
73
  }
72
- var newObj = {};
74
+ var newObj = {
75
+ __proto__: null
76
+ };
73
77
  var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
74
78
  for(var key in obj){
75
79
  if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
@@ -87,27 +91,26 @@ function _interopRequireWildcard(obj, nodeInterop) {
87
91
  }
88
92
  return newObj;
89
93
  }
90
- const debug = (0, _debug().default)("expo:apple-device:client:afc");
94
+ const debug = (0, _debug().default)('expo:apple-device:client:afc');
91
95
  const MAX_OPEN_FILES = 240;
92
- class AFCClient extends _serviceClient.ServiceClient {
96
+ class AFCClient extends _ServiceClient.ServiceClient {
93
97
  constructor(socket){
94
- super(socket, new _afcprotocol.AFCProtocolClient(socket));
95
- this.socket = socket;
98
+ super(socket, new _AFCProtocol.AFCProtocolClient(socket)), this.socket = socket;
96
99
  }
97
100
  async getFileInfo(path) {
98
101
  debug(`getFileInfo: ${path}`);
99
102
  const response = await this.protocolClient.sendMessage({
100
- operation: _afcprotocol.AFC_OPS.GET_FILE_INFO,
103
+ operation: _AFCProtocol.AFC_OPS.GET_FILE_INFO,
101
104
  data: toCString(path)
102
105
  });
103
106
  debug(`getFileInfo:response: %O`, response);
104
107
  const strings = [];
105
- let currentString = "";
108
+ let currentString = '';
106
109
  const tokens = response.data;
107
110
  tokens.forEach((token)=>{
108
111
  if (token === 0) {
109
112
  strings.push(currentString);
110
- currentString = "";
113
+ currentString = '';
111
114
  } else {
112
115
  currentString += String.fromCharCode(token);
113
116
  }
@@ -117,7 +120,7 @@ class AFCClient extends _serviceClient.ServiceClient {
117
120
  async writeFile(fd, data) {
118
121
  debug(`writeFile: ${Array.prototype.toString.call(fd)} data size: ${data.length}`);
119
122
  const response = await this.protocolClient.sendMessage({
120
- operation: _afcprotocol.AFC_OPS.FILE_WRITE,
123
+ operation: _AFCProtocol.AFC_OPS.FILE_WRITE,
121
124
  data: fd,
122
125
  payload: data
123
126
  });
@@ -129,23 +132,23 @@ class AFCClient extends _serviceClient.ServiceClient {
129
132
  // mode + path + null terminator
130
133
  const data = Buffer.alloc(8 + path.length + 1);
131
134
  // write mode
132
- data.writeUInt32LE(_afcprotocol.AFC_FILE_OPEN_FLAGS.WRONLY, 0);
135
+ data.writeUInt32LE(_AFCProtocol.AFC_FILE_OPEN_FLAGS.WRONLY, 0);
133
136
  // then path to file
134
137
  toCString(path).copy(data, 8);
135
138
  const response = await this.protocolClient.sendMessage({
136
- operation: _afcprotocol.AFC_OPS.FILE_OPEN,
139
+ operation: _AFCProtocol.AFC_OPS.FILE_OPEN,
137
140
  data
138
141
  });
139
142
  // debug(`openFile:response:`, response);
140
- if (response.operation === _afcprotocol.AFC_OPS.FILE_OPEN_RES) {
143
+ if (response.operation === _AFCProtocol.AFC_OPS.FILE_OPEN_RES) {
141
144
  return response.data;
142
145
  }
143
- throw new _errors.CommandError("APPLE_DEVICE_AFC", `There was an unknown error opening file ${path}, response: ${Array.prototype.toString.call(response.data)}`);
146
+ throw new _errors.CommandError('APPLE_DEVICE_AFC', `There was an unknown error opening file ${path}, response: ${Array.prototype.toString.call(response.data)}`);
144
147
  }
145
148
  async closeFile(fd) {
146
149
  debug(`closeFile fd: ${Array.prototype.toString.call(fd)}`);
147
150
  const response = await this.protocolClient.sendMessage({
148
- operation: _afcprotocol.AFC_OPS.FILE_CLOSE,
151
+ operation: _AFCProtocol.AFC_OPS.FILE_CLOSE,
149
152
  data: fd
150
153
  });
151
154
  debug(`closeFile:response:`, response);
@@ -156,7 +159,7 @@ class AFCClient extends _serviceClient.ServiceClient {
156
159
  // read local file and get fd of destination
157
160
  const [srcFile, destFile] = await Promise.all([
158
161
  await (0, _util().promisify)(_fs().readFile)(srcPath),
159
- await this.openFile(destPath),
162
+ await this.openFile(destPath)
160
163
  ]);
161
164
  try {
162
165
  await this.writeFile(destFile, srcFile);
@@ -169,7 +172,7 @@ class AFCClient extends _serviceClient.ServiceClient {
169
172
  async makeDirectory(path) {
170
173
  debug(`makeDirectory: ${path}`);
171
174
  const response = await this.protocolClient.sendMessage({
172
- operation: _afcprotocol.AFC_OPS.MAKE_DIR,
175
+ operation: _AFCProtocol.AFC_OPS.MAKE_DIR,
173
176
  data: toCString(path)
174
177
  });
175
178
  debug(`makeDirectory:response:`, response);
@@ -214,7 +217,7 @@ class AFCClient extends _serviceClient.ServiceClient {
214
217
  }).catch((err)=>{
215
218
  // Couldn't get fd for whatever reason, try again
216
219
  // # of retries is arbitrary and can be adjusted
217
- if (err.status === _afcprotocol.AFC_STATUS.NO_RESOURCES && tries < 10) {
220
+ if (err.status === _AFCProtocol.AFC_STATUS.NO_RESOURCES && tries < 10) {
218
221
  debug(`Received NO_RESOURCES from AFC, retrying ${filePath} upload. ${tries}`);
219
222
  uploadFile(tries++);
220
223
  } else {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/run/ios/appleDevice/client/AFCClient.ts"],"sourcesContent":["/**\n * Copyright (c) 2021 Expo, Inc.\n * Copyright (c) 2018 Drifty Co.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport Debug from 'debug';\nimport * as fs from 'fs';\nimport { Socket } from 'net';\nimport * as path from 'path';\nimport { promisify } from 'util';\n\nimport { ServiceClient } from './ServiceClient';\nimport { CommandError } from '../../../../utils/errors';\nimport {\n AFC_FILE_OPEN_FLAGS,\n AFC_OPS,\n AFC_STATUS,\n AFCError,\n AFCProtocolClient,\n AFCResponse,\n} from '../protocol/AFCProtocol';\n\nconst debug = Debug('expo:apple-device:client:afc');\nconst MAX_OPEN_FILES = 240;\n\nexport class AFCClient extends ServiceClient<AFCProtocolClient> {\n constructor(public socket: Socket) {\n super(socket, new AFCProtocolClient(socket));\n }\n\n async getFileInfo(path: string): Promise<string[]> {\n debug(`getFileInfo: ${path}`);\n\n const response = await this.protocolClient.sendMessage({\n operation: AFC_OPS.GET_FILE_INFO,\n data: toCString(path),\n });\n debug(`getFileInfo:response: %O`, response);\n\n const strings: string[] = [];\n let currentString = '';\n const tokens = response.data;\n tokens.forEach((token) => {\n if (token === 0) {\n strings.push(currentString);\n currentString = '';\n } else {\n currentString += String.fromCharCode(token);\n }\n });\n return strings;\n }\n\n async writeFile(fd: Buffer, data: Buffer): Promise<AFCResponse> {\n debug(`writeFile: ${Array.prototype.toString.call(fd)} data size: ${data.length}`);\n\n const response = await this.protocolClient.sendMessage({\n operation: AFC_OPS.FILE_WRITE,\n data: fd,\n payload: data,\n });\n\n debug(`writeFile:response:`, response);\n return response;\n }\n\n protected async openFile(path: string): Promise<Buffer> {\n debug(`openFile: ${path}`);\n // mode + path + null terminator\n const data = Buffer.alloc(8 + path.length + 1);\n // write mode\n data.writeUInt32LE(AFC_FILE_OPEN_FLAGS.WRONLY, 0);\n // then path to file\n toCString(path).copy(data, 8);\n\n const response = await this.protocolClient.sendMessage({\n operation: AFC_OPS.FILE_OPEN,\n data,\n });\n\n // debug(`openFile:response:`, response);\n\n if (response.operation === AFC_OPS.FILE_OPEN_RES) {\n return response.data;\n }\n\n throw new CommandError(\n 'APPLE_DEVICE_AFC',\n `There was an unknown error opening file ${path}, response: ${Array.prototype.toString.call(\n response.data\n )}`\n );\n }\n\n protected async closeFile(fd: Buffer): Promise<AFCResponse> {\n debug(`closeFile fd: ${Array.prototype.toString.call(fd)}`);\n const response = await this.protocolClient.sendMessage({\n operation: AFC_OPS.FILE_CLOSE,\n data: fd,\n });\n\n debug(`closeFile:response:`, response);\n return response;\n }\n\n protected async uploadFile(srcPath: string, destPath: string): Promise<void> {\n debug(`uploadFile: ${srcPath}, ${destPath}`);\n\n // read local file and get fd of destination\n const [srcFile, destFile] = await Promise.all([\n await promisify(fs.readFile)(srcPath),\n await this.openFile(destPath),\n ]);\n\n try {\n await this.writeFile(destFile, srcFile);\n await this.closeFile(destFile);\n } catch (err) {\n await this.closeFile(destFile);\n throw err;\n }\n }\n\n async makeDirectory(path: string): Promise<AFCResponse> {\n debug(`makeDirectory: ${path}`);\n\n const response = await this.protocolClient.sendMessage({\n operation: AFC_OPS.MAKE_DIR,\n data: toCString(path),\n });\n\n debug(`makeDirectory:response:`, response);\n return response;\n }\n\n async uploadDirectory(srcPath: string, destPath: string): Promise<void> {\n debug(`uploadDirectory: ${srcPath}`);\n await this.makeDirectory(destPath);\n\n // AFC doesn't seem to give out more than 240 file handles,\n // so we delay any requests that would push us over until more open up\n let numOpenFiles = 0;\n const pendingFileUploads: (() => void)[] = [];\n const _this = this;\n return uploadDir(srcPath);\n\n async function uploadDir(dirPath: string): Promise<void> {\n const promises: Promise<void>[] = [];\n for (const file of fs.readdirSync(dirPath)) {\n const filePath = path.join(dirPath, file);\n const remotePath = path.join(destPath, path.relative(srcPath, filePath));\n if (fs.lstatSync(filePath).isDirectory()) {\n promises.push(_this.makeDirectory(remotePath).then(() => uploadDir(filePath)));\n } else {\n // Create promise to add to promises array\n // this way it can be resolved once a pending upload has finished\n let resolve: (val?: any) => void;\n let reject: (err: AFCError) => void;\n const promise = new Promise<void>((res, rej) => {\n resolve = res;\n reject = rej;\n });\n promises.push(promise);\n\n // wrap upload in a function in case we need to save it for later\n const uploadFile = (tries = 0) => {\n numOpenFiles++;\n _this\n .uploadFile(filePath, remotePath)\n .then(() => {\n resolve();\n numOpenFiles--;\n const fn = pendingFileUploads.pop();\n if (fn) {\n fn();\n }\n })\n .catch((err: AFCError) => {\n // Couldn't get fd for whatever reason, try again\n // # of retries is arbitrary and can be adjusted\n if (err.status === AFC_STATUS.NO_RESOURCES && tries < 10) {\n debug(`Received NO_RESOURCES from AFC, retrying ${filePath} upload. ${tries}`);\n uploadFile(tries++);\n } else {\n numOpenFiles--;\n reject(err);\n }\n });\n };\n\n if (numOpenFiles < MAX_OPEN_FILES) {\n uploadFile();\n } else {\n debug(\n `numOpenFiles >= ${MAX_OPEN_FILES}, adding to pending queue. Length: ${pendingFileUploads.length}`\n );\n pendingFileUploads.push(uploadFile);\n }\n }\n }\n await Promise.all(promises);\n }\n }\n}\n\nfunction toCString(s: string) {\n const buf = Buffer.alloc(s.length + 1);\n const len = buf.write(s);\n buf.writeUInt8(0, len);\n return buf;\n}\n"],"names":["AFCClient","debug","Debug","MAX_OPEN_FILES","ServiceClient","constructor","socket","AFCProtocolClient","getFileInfo","path","response","protocolClient","sendMessage","operation","AFC_OPS","GET_FILE_INFO","data","toCString","strings","currentString","tokens","forEach","token","push","String","fromCharCode","writeFile","fd","Array","prototype","toString","call","length","FILE_WRITE","payload","openFile","Buffer","alloc","writeUInt32LE","AFC_FILE_OPEN_FLAGS","WRONLY","copy","FILE_OPEN","FILE_OPEN_RES","CommandError","closeFile","FILE_CLOSE","uploadFile","srcPath","destPath","srcFile","destFile","Promise","all","promisify","fs","readFile","err","makeDirectory","MAKE_DIR","uploadDirectory","numOpenFiles","pendingFileUploads","_this","uploadDir","dirPath","promises","file","readdirSync","filePath","join","remotePath","relative","lstatSync","isDirectory","then","resolve","reject","promise","res","rej","tries","fn","pop","catch","status","AFC_STATUS","NO_RESOURCES","s","buf","len","write","writeUInt8"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../src/run/ios/appleDevice/client/AFCClient.ts"],"sourcesContent":["/**\n * Copyright (c) 2021 Expo, Inc.\n * Copyright (c) 2018 Drifty Co.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport Debug from 'debug';\nimport * as fs from 'fs';\nimport { Socket } from 'net';\nimport * as path from 'path';\nimport { promisify } from 'util';\n\nimport { ServiceClient } from './ServiceClient';\nimport { CommandError } from '../../../../utils/errors';\nimport {\n AFC_FILE_OPEN_FLAGS,\n AFC_OPS,\n AFC_STATUS,\n AFCError,\n AFCProtocolClient,\n AFCResponse,\n} from '../protocol/AFCProtocol';\n\nconst debug = Debug('expo:apple-device:client:afc');\nconst MAX_OPEN_FILES = 240;\n\nexport class AFCClient extends ServiceClient<AFCProtocolClient> {\n constructor(public socket: Socket) {\n super(socket, new AFCProtocolClient(socket));\n }\n\n async getFileInfo(path: string): Promise<string[]> {\n debug(`getFileInfo: ${path}`);\n\n const response = await this.protocolClient.sendMessage({\n operation: AFC_OPS.GET_FILE_INFO,\n data: toCString(path),\n });\n debug(`getFileInfo:response: %O`, response);\n\n const strings: string[] = [];\n let currentString = '';\n const tokens = response.data;\n tokens.forEach((token) => {\n if (token === 0) {\n strings.push(currentString);\n currentString = '';\n } else {\n currentString += String.fromCharCode(token);\n }\n });\n return strings;\n }\n\n async writeFile(fd: Buffer, data: Buffer): Promise<AFCResponse> {\n debug(`writeFile: ${Array.prototype.toString.call(fd)} data size: ${data.length}`);\n\n const response = await this.protocolClient.sendMessage({\n operation: AFC_OPS.FILE_WRITE,\n data: fd,\n payload: data,\n });\n\n debug(`writeFile:response:`, response);\n return response;\n }\n\n protected async openFile(path: string): Promise<Buffer> {\n debug(`openFile: ${path}`);\n // mode + path + null terminator\n const data = Buffer.alloc(8 + path.length + 1);\n // write mode\n data.writeUInt32LE(AFC_FILE_OPEN_FLAGS.WRONLY, 0);\n // then path to file\n toCString(path).copy(data, 8);\n\n const response = await this.protocolClient.sendMessage({\n operation: AFC_OPS.FILE_OPEN,\n data,\n });\n\n // debug(`openFile:response:`, response);\n\n if (response.operation === AFC_OPS.FILE_OPEN_RES) {\n return response.data;\n }\n\n throw new CommandError(\n 'APPLE_DEVICE_AFC',\n `There was an unknown error opening file ${path}, response: ${Array.prototype.toString.call(\n response.data\n )}`\n );\n }\n\n protected async closeFile(fd: Buffer): Promise<AFCResponse> {\n debug(`closeFile fd: ${Array.prototype.toString.call(fd)}`);\n const response = await this.protocolClient.sendMessage({\n operation: AFC_OPS.FILE_CLOSE,\n data: fd,\n });\n\n debug(`closeFile:response:`, response);\n return response;\n }\n\n protected async uploadFile(srcPath: string, destPath: string): Promise<void> {\n debug(`uploadFile: ${srcPath}, ${destPath}`);\n\n // read local file and get fd of destination\n const [srcFile, destFile] = await Promise.all([\n await promisify(fs.readFile)(srcPath),\n await this.openFile(destPath),\n ]);\n\n try {\n await this.writeFile(destFile, srcFile);\n await this.closeFile(destFile);\n } catch (err) {\n await this.closeFile(destFile);\n throw err;\n }\n }\n\n async makeDirectory(path: string): Promise<AFCResponse> {\n debug(`makeDirectory: ${path}`);\n\n const response = await this.protocolClient.sendMessage({\n operation: AFC_OPS.MAKE_DIR,\n data: toCString(path),\n });\n\n debug(`makeDirectory:response:`, response);\n return response;\n }\n\n async uploadDirectory(srcPath: string, destPath: string): Promise<void> {\n debug(`uploadDirectory: ${srcPath}`);\n await this.makeDirectory(destPath);\n\n // AFC doesn't seem to give out more than 240 file handles,\n // so we delay any requests that would push us over until more open up\n let numOpenFiles = 0;\n const pendingFileUploads: (() => void)[] = [];\n const _this = this;\n return uploadDir(srcPath);\n\n async function uploadDir(dirPath: string): Promise<void> {\n const promises: Promise<void>[] = [];\n for (const file of fs.readdirSync(dirPath)) {\n const filePath = path.join(dirPath, file);\n const remotePath = path.join(destPath, path.relative(srcPath, filePath));\n if (fs.lstatSync(filePath).isDirectory()) {\n promises.push(_this.makeDirectory(remotePath).then(() => uploadDir(filePath)));\n } else {\n // Create promise to add to promises array\n // this way it can be resolved once a pending upload has finished\n let resolve: (val?: any) => void;\n let reject: (err: AFCError) => void;\n const promise = new Promise<void>((res, rej) => {\n resolve = res;\n reject = rej;\n });\n promises.push(promise);\n\n // wrap upload in a function in case we need to save it for later\n const uploadFile = (tries = 0) => {\n numOpenFiles++;\n _this\n .uploadFile(filePath, remotePath)\n .then(() => {\n resolve();\n numOpenFiles--;\n const fn = pendingFileUploads.pop();\n if (fn) {\n fn();\n }\n })\n .catch((err: AFCError) => {\n // Couldn't get fd for whatever reason, try again\n // # of retries is arbitrary and can be adjusted\n if (err.status === AFC_STATUS.NO_RESOURCES && tries < 10) {\n debug(`Received NO_RESOURCES from AFC, retrying ${filePath} upload. ${tries}`);\n uploadFile(tries++);\n } else {\n numOpenFiles--;\n reject(err);\n }\n });\n };\n\n if (numOpenFiles < MAX_OPEN_FILES) {\n uploadFile();\n } else {\n debug(\n `numOpenFiles >= ${MAX_OPEN_FILES}, adding to pending queue. Length: ${pendingFileUploads.length}`\n );\n pendingFileUploads.push(uploadFile);\n }\n }\n }\n await Promise.all(promises);\n }\n }\n}\n\nfunction toCString(s: string) {\n const buf = Buffer.alloc(s.length + 1);\n const len = buf.write(s);\n buf.writeUInt8(0, len);\n return buf;\n}\n"],"names":["AFCClient","debug","Debug","MAX_OPEN_FILES","ServiceClient","constructor","socket","AFCProtocolClient","getFileInfo","path","response","protocolClient","sendMessage","operation","AFC_OPS","GET_FILE_INFO","data","toCString","strings","currentString","tokens","forEach","token","push","String","fromCharCode","writeFile","fd","Array","prototype","toString","call","length","FILE_WRITE","payload","openFile","Buffer","alloc","writeUInt32LE","AFC_FILE_OPEN_FLAGS","WRONLY","copy","FILE_OPEN","FILE_OPEN_RES","CommandError","closeFile","FILE_CLOSE","uploadFile","srcPath","destPath","srcFile","destFile","Promise","all","promisify","fs","readFile","err","makeDirectory","MAKE_DIR","uploadDirectory","numOpenFiles","pendingFileUploads","_this","uploadDir","dirPath","promises","file","readdirSync","filePath","join","remotePath","relative","lstatSync","isDirectory","then","resolve","reject","promise","res","rej","tries","fn","pop","catch","status","AFC_STATUS","NO_RESOURCES","s","buf","len","write","writeUInt8"],"mappings":"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"}
@@ -10,25 +10,27 @@ Object.defineProperty(exports, "__esModule", {
10
10
  });
11
11
  Object.defineProperty(exports, "DebugserverClient", {
12
12
  enumerable: true,
13
- get: ()=>DebugserverClient
13
+ get: function() {
14
+ return DebugserverClient;
15
+ }
14
16
  });
15
17
  function _debug() {
16
- const data = /*#__PURE__*/ _interopRequireDefault(require("debug"));
18
+ const data = /*#__PURE__*/ _interop_require_default(require("debug"));
17
19
  _debug = function() {
18
20
  return data;
19
21
  };
20
22
  return data;
21
23
  }
22
24
  function _path() {
23
- const data = /*#__PURE__*/ _interopRequireWildcard(require("path"));
25
+ const data = /*#__PURE__*/ _interop_require_wildcard(require("path"));
24
26
  _path = function() {
25
27
  return data;
26
28
  };
27
29
  return data;
28
30
  }
29
- const _serviceClient = require("./ServiceClient");
30
- const _gdbprotocol = require("../protocol/GDBProtocol");
31
- function _interopRequireDefault(obj) {
31
+ const _ServiceClient = require("./ServiceClient");
32
+ const _GDBProtocol = require("../protocol/GDBProtocol");
33
+ function _interop_require_default(obj) {
32
34
  return obj && obj.__esModule ? obj : {
33
35
  default: obj
34
36
  };
@@ -41,7 +43,7 @@ function _getRequireWildcardCache(nodeInterop) {
41
43
  return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
42
44
  })(nodeInterop);
43
45
  }
44
- function _interopRequireWildcard(obj, nodeInterop) {
46
+ function _interop_require_wildcard(obj, nodeInterop) {
45
47
  if (!nodeInterop && obj && obj.__esModule) {
46
48
  return obj;
47
49
  }
@@ -54,7 +56,9 @@ function _interopRequireWildcard(obj, nodeInterop) {
54
56
  if (cache && cache.has(obj)) {
55
57
  return cache.get(obj);
56
58
  }
57
- var newObj = {};
59
+ var newObj = {
60
+ __proto__: null
61
+ };
58
62
  var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
59
63
  for(var key in obj){
60
64
  if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
@@ -72,51 +76,50 @@ function _interopRequireWildcard(obj, nodeInterop) {
72
76
  }
73
77
  return newObj;
74
78
  }
75
- const debug = (0, _debug().default)("expo:apple-device:client:debugserver");
76
- class DebugserverClient extends _serviceClient.ServiceClient {
79
+ const debug = (0, _debug().default)('expo:apple-device:client:debugserver');
80
+ class DebugserverClient extends _ServiceClient.ServiceClient {
77
81
  constructor(socket){
78
- super(socket, new _gdbprotocol.GDBProtocolClient(socket));
79
- this.socket = socket;
82
+ super(socket, new _GDBProtocol.GDBProtocolClient(socket)), this.socket = socket;
80
83
  }
81
84
  async setMaxPacketSize(size) {
82
- return this.sendCommand("QSetMaxPacketSize:", [
85
+ return this.sendCommand('QSetMaxPacketSize:', [
83
86
  size.toString()
84
87
  ]);
85
88
  }
86
89
  async setWorkingDir(workingDir) {
87
- return this.sendCommand("QSetWorkingDir:", [
90
+ return this.sendCommand('QSetWorkingDir:', [
88
91
  workingDir
89
92
  ]);
90
93
  }
91
94
  async checkLaunchSuccess() {
92
- return this.sendCommand("qLaunchSuccess", []);
95
+ return this.sendCommand('qLaunchSuccess', []);
93
96
  }
94
97
  async attachByName(name) {
95
- const hexName = Buffer.from(name).toString("hex");
98
+ const hexName = Buffer.from(name).toString('hex');
96
99
  return this.sendCommand(`vAttachName;${hexName}`, []);
97
100
  }
98
101
  async continue() {
99
- return this.sendCommand("c", []);
102
+ return this.sendCommand('c', []);
100
103
  }
101
104
  halt() {
102
105
  // ^C
103
- debug("Sending ^C to debugserver");
104
- return this.protocolClient.socket.write("\x03");
106
+ debug('Sending ^C to debugserver');
107
+ return this.protocolClient.socket.write('\u0003');
105
108
  }
106
109
  async kill() {
107
110
  debug(`kill`);
108
111
  const msg = {
109
- cmd: "k",
112
+ cmd: 'k',
110
113
  args: []
111
114
  };
112
115
  return this.protocolClient.sendMessage(msg, (resp, resolve)=>{
113
116
  debug(`kill:response: ${resp}`);
114
- this.protocolClient.socket.write("+");
115
- const parts = resp.split(";");
117
+ this.protocolClient.socket.write('+');
118
+ const parts = resp.split(';');
116
119
  for (const part of parts){
117
- if (part.includes("description")) {
120
+ if (part.includes('description')) {
118
121
  // description:{hex encoded message like: "Terminated with signal 9"}
119
- resolve(Buffer.from(part.split(":")[1], "hex").toString("ascii"));
122
+ resolve(Buffer.from(part.split(':')[1], 'hex').toString('ascii'));
120
123
  }
121
124
  }
122
125
  });
@@ -126,7 +129,7 @@ class DebugserverClient extends _serviceClient.ServiceClient {
126
129
  // A arglen,argnum,arg,
127
130
  async launchApp(appPath, executableName) {
128
131
  const fullPath = _path().join(appPath, executableName);
129
- const hexAppPath = Buffer.from(fullPath).toString("hex");
132
+ const hexAppPath = Buffer.from(fullPath).toString('hex');
130
133
  const appCommand = `A${hexAppPath.length},0,${hexAppPath}`;
131
134
  return this.sendCommand(appCommand, []);
132
135
  }
@@ -138,7 +141,7 @@ class DebugserverClient extends _serviceClient.ServiceClient {
138
141
  debug(`Sending command: ${cmd}, args: ${args}`);
139
142
  const resp = await this.protocolClient.sendMessage(msg);
140
143
  // we need to ACK as well
141
- this.protocolClient.socket.write("+");
144
+ this.protocolClient.socket.write('+');
142
145
  return resp;
143
146
  }
144
147
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/run/ios/appleDevice/client/DebugserverClient.ts"],"sourcesContent":["/**\n * Copyright (c) 2021 Expo, Inc.\n * Copyright (c) 2018 Drifty Co.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport Debug from 'debug';\nimport { Socket } from 'net';\nimport * as path from 'path';\n\nimport { ServiceClient } from './ServiceClient';\nimport { GDBProtocolClient } from '../protocol/GDBProtocol';\n\nconst debug = Debug('expo:apple-device:client:debugserver');\n\nexport class DebugserverClient extends ServiceClient<GDBProtocolClient> {\n constructor(public socket: Socket) {\n super(socket, new GDBProtocolClient(socket));\n }\n\n async setMaxPacketSize(size: number) {\n return this.sendCommand('QSetMaxPacketSize:', [size.toString()]);\n }\n\n async setWorkingDir(workingDir: string) {\n return this.sendCommand('QSetWorkingDir:', [workingDir]);\n }\n\n async checkLaunchSuccess() {\n return this.sendCommand('qLaunchSuccess', []);\n }\n\n async attachByName(name: string) {\n const hexName = Buffer.from(name).toString('hex');\n return this.sendCommand(`vAttachName;${hexName}`, []);\n }\n\n async continue() {\n return this.sendCommand('c', []);\n }\n\n halt() {\n // ^C\n debug('Sending ^C to debugserver');\n return this.protocolClient.socket.write('\\u0003');\n }\n\n async kill() {\n debug(`kill`);\n const msg: any = { cmd: 'k', args: [] };\n return this.protocolClient.sendMessage(msg, (resp: string, resolve: any) => {\n debug(`kill:response: ${resp}`);\n this.protocolClient.socket.write('+');\n const parts = resp.split(';');\n for (const part of parts) {\n if (part.includes('description')) {\n // description:{hex encoded message like: \"Terminated with signal 9\"}\n resolve(Buffer.from(part.split(':')[1], 'hex').toString('ascii'));\n }\n }\n });\n }\n\n // TODO support app args\n // https://sourceware.org/gdb/onlinedocs/gdb/Packets.html#Packets\n // A arglen,argnum,arg,\n async launchApp(appPath: string, executableName: string) {\n const fullPath = path.join(appPath, executableName);\n const hexAppPath = Buffer.from(fullPath).toString('hex');\n const appCommand = `A${hexAppPath.length},0,${hexAppPath}`;\n return this.sendCommand(appCommand, []);\n }\n\n async sendCommand(cmd: string, args: string[]) {\n const msg = { cmd, args };\n debug(`Sending command: ${cmd}, args: ${args}`);\n const resp = await this.protocolClient.sendMessage(msg);\n // we need to ACK as well\n this.protocolClient.socket.write('+');\n return resp;\n }\n}\n"],"names":["DebugserverClient","debug","Debug","ServiceClient","constructor","socket","GDBProtocolClient","setMaxPacketSize","size","sendCommand","toString","setWorkingDir","workingDir","checkLaunchSuccess","attachByName","name","hexName","Buffer","from","continue","halt","protocolClient","write","kill","msg","cmd","args","sendMessage","resp","resolve","parts","split","part","includes","launchApp","appPath","executableName","fullPath","path","join","hexAppPath","appCommand","length"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../src/run/ios/appleDevice/client/DebugserverClient.ts"],"sourcesContent":["/**\n * Copyright (c) 2021 Expo, Inc.\n * Copyright (c) 2018 Drifty Co.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport Debug from 'debug';\nimport { Socket } from 'net';\nimport * as path from 'path';\n\nimport { ServiceClient } from './ServiceClient';\nimport { GDBProtocolClient } from '../protocol/GDBProtocol';\n\nconst debug = Debug('expo:apple-device:client:debugserver');\n\nexport class DebugserverClient extends ServiceClient<GDBProtocolClient> {\n constructor(public socket: Socket) {\n super(socket, new GDBProtocolClient(socket));\n }\n\n async setMaxPacketSize(size: number) {\n return this.sendCommand('QSetMaxPacketSize:', [size.toString()]);\n }\n\n async setWorkingDir(workingDir: string) {\n return this.sendCommand('QSetWorkingDir:', [workingDir]);\n }\n\n async checkLaunchSuccess() {\n return this.sendCommand('qLaunchSuccess', []);\n }\n\n async attachByName(name: string) {\n const hexName = Buffer.from(name).toString('hex');\n return this.sendCommand(`vAttachName;${hexName}`, []);\n }\n\n async continue() {\n return this.sendCommand('c', []);\n }\n\n halt() {\n // ^C\n debug('Sending ^C to debugserver');\n return this.protocolClient.socket.write('\\u0003');\n }\n\n async kill() {\n debug(`kill`);\n const msg: any = { cmd: 'k', args: [] };\n return this.protocolClient.sendMessage(msg, (resp: string, resolve: any) => {\n debug(`kill:response: ${resp}`);\n this.protocolClient.socket.write('+');\n const parts = resp.split(';');\n for (const part of parts) {\n if (part.includes('description')) {\n // description:{hex encoded message like: \"Terminated with signal 9\"}\n resolve(Buffer.from(part.split(':')[1], 'hex').toString('ascii'));\n }\n }\n });\n }\n\n // TODO support app args\n // https://sourceware.org/gdb/onlinedocs/gdb/Packets.html#Packets\n // A arglen,argnum,arg,\n async launchApp(appPath: string, executableName: string) {\n const fullPath = path.join(appPath, executableName);\n const hexAppPath = Buffer.from(fullPath).toString('hex');\n const appCommand = `A${hexAppPath.length},0,${hexAppPath}`;\n return this.sendCommand(appCommand, []);\n }\n\n async sendCommand(cmd: string, args: string[]) {\n const msg = { cmd, args };\n debug(`Sending command: ${cmd}, args: ${args}`);\n const resp = await this.protocolClient.sendMessage(msg);\n // we need to ACK as well\n this.protocolClient.socket.write('+');\n return resp;\n }\n}\n"],"names":["DebugserverClient","debug","Debug","ServiceClient","constructor","socket","GDBProtocolClient","setMaxPacketSize","size","sendCommand","toString","setWorkingDir","workingDir","checkLaunchSuccess","attachByName","name","hexName","Buffer","from","continue","halt","protocolClient","write","kill","msg","cmd","args","sendMessage","resp","resolve","parts","split","part","includes","launchApp","appPath","executableName","fullPath","path","join","hexAppPath","appCommand","length"],"mappings":"AAAA;;;;;;CAMC;;;;+BAUYA;;;eAAAA;;;;gEATK;;;;;;;iEAEI;;;;;;+BAEQ;6BACI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAElC,MAAMC,QAAQC,IAAAA,gBAAK,EAAC;AAEb,MAAMF,0BAA0BG,4BAAa;IAClDC,YAAY,AAAOC,MAAc,CAAE;QACjC,KAAK,CAACA,QAAQ,IAAIC,8BAAiB,CAACD,eADnBA,SAAAA;IAEnB;IAEA,MAAME,iBAAiBC,IAAY,EAAE;QACnC,OAAO,IAAI,CAACC,WAAW,CAAC,sBAAsB;YAACD,KAAKE,QAAQ;SAAG;IACjE;IAEA,MAAMC,cAAcC,UAAkB,EAAE;QACtC,OAAO,IAAI,CAACH,WAAW,CAAC,mBAAmB;YAACG;SAAW;IACzD;IAEA,MAAMC,qBAAqB;QACzB,OAAO,IAAI,CAACJ,WAAW,CAAC,kBAAkB,EAAE;IAC9C;IAEA,MAAMK,aAAaC,IAAY,EAAE;QAC/B,MAAMC,UAAUC,OAAOC,IAAI,CAACH,MAAML,QAAQ,CAAC;QAC3C,OAAO,IAAI,CAACD,WAAW,CAAC,CAAC,YAAY,EAAEO,SAAS,EAAE,EAAE;IACtD;IAEA,MAAMG,WAAW;QACf,OAAO,IAAI,CAACV,WAAW,CAAC,KAAK,EAAE;IACjC;IAEAW,OAAO;QACL,KAAK;QACLnB,MAAM;QACN,OAAO,IAAI,CAACoB,cAAc,CAAChB,MAAM,CAACiB,KAAK,CAAC;IAC1C;IAEA,MAAMC,OAAO;QACXtB,MAAM,CAAC,IAAI,CAAC;QACZ,MAAMuB,MAAW;YAAEC,KAAK;YAAKC,MAAM,EAAE;QAAC;QACtC,OAAO,IAAI,CAACL,cAAc,CAACM,WAAW,CAACH,KAAK,CAACI,MAAcC;YACzD5B,MAAM,CAAC,eAAe,EAAE2B,MAAM;YAC9B,IAAI,CAACP,cAAc,CAAChB,MAAM,CAACiB,KAAK,CAAC;YACjC,MAAMQ,QAAQF,KAAKG,KAAK,CAAC;YACzB,KAAK,MAAMC,QAAQF,MAAO;gBACxB,IAAIE,KAAKC,QAAQ,CAAC,gBAAgB;oBAChC,qEAAqE;oBACrEJ,QAAQZ,OAAOC,IAAI,CAACc,KAAKD,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,OAAOrB,QAAQ,CAAC;gBAC1D;YACF;QACF;IACF;IAEA,wBAAwB;IACxB,iEAAiE;IACjE,uBAAuB;IACvB,MAAMwB,UAAUC,OAAe,EAAEC,cAAsB,EAAE;QACvD,MAAMC,WAAWC,QAAKC,IAAI,CAACJ,SAASC;QACpC,MAAMI,aAAavB,OAAOC,IAAI,CAACmB,UAAU3B,QAAQ,CAAC;QAClD,MAAM+B,aAAa,CAAC,CAAC,EAAED,WAAWE,MAAM,CAAC,GAAG,EAAEF,YAAY;QAC1D,OAAO,IAAI,CAAC/B,WAAW,CAACgC,YAAY,EAAE;IACxC;IAEA,MAAMhC,YAAYgB,GAAW,EAAEC,IAAc,EAAE;QAC7C,MAAMF,MAAM;YAAEC;YAAKC;QAAK;QACxBzB,MAAM,CAAC,iBAAiB,EAAEwB,IAAI,QAAQ,EAAEC,MAAM;QAC9C,MAAME,OAAO,MAAM,IAAI,CAACP,cAAc,CAACM,WAAW,CAACH;QACnD,yBAAyB;QACzB,IAAI,CAACH,cAAc,CAAChB,MAAM,CAACiB,KAAK,CAAC;QACjC,OAAOM;IACT;AACF"}
@@ -10,23 +10,25 @@ Object.defineProperty(exports, "__esModule", {
10
10
  });
11
11
  Object.defineProperty(exports, "InstallationProxyClient", {
12
12
  enumerable: true,
13
- get: ()=>InstallationProxyClient
13
+ get: function() {
14
+ return InstallationProxyClient;
15
+ }
14
16
  });
15
17
  function _debug() {
16
- const data = /*#__PURE__*/ _interopRequireDefault(require("debug"));
18
+ const data = /*#__PURE__*/ _interop_require_default(require("debug"));
17
19
  _debug = function() {
18
20
  return data;
19
21
  };
20
22
  return data;
21
23
  }
22
- const _serviceClient = require("./ServiceClient");
23
- const _lockdownProtocol = require("../protocol/LockdownProtocol");
24
- function _interopRequireDefault(obj) {
24
+ const _ServiceClient = require("./ServiceClient");
25
+ const _LockdownProtocol = require("../protocol/LockdownProtocol");
26
+ function _interop_require_default(obj) {
25
27
  return obj && obj.__esModule ? obj : {
26
28
  default: obj
27
29
  };
28
30
  }
29
- const debug = (0, _debug().default)("expo:apple-device:client:installation_proxy");
31
+ const debug = (0, _debug().default)('expo:apple-device:client:installation_proxy');
30
32
  function isIPLookupResponse(resp) {
31
33
  return resp.length && resp[0].LookupResult !== undefined;
32
34
  }
@@ -37,25 +39,24 @@ function isIPInstallCFBundleIdentifierResponse(resp) {
37
39
  return resp.length && resp[0].CFBundleIdentifier !== undefined;
38
40
  }
39
41
  function isIPInstallCompleteResponse(resp) {
40
- return resp.length && resp[0].Status === "Complete";
42
+ return resp.length && resp[0].Status === 'Complete';
41
43
  }
42
- class InstallationProxyClient extends _serviceClient.ServiceClient {
44
+ class InstallationProxyClient extends _ServiceClient.ServiceClient {
43
45
  constructor(socket){
44
- super(socket, new _lockdownProtocol.LockdownProtocolClient(socket));
45
- this.socket = socket;
46
+ super(socket, new _LockdownProtocol.LockdownProtocolClient(socket)), this.socket = socket;
46
47
  }
47
48
  async lookupApp(bundleIds, options = {
48
49
  ReturnAttributes: [
49
- "Path",
50
- "Container",
51
- "CFBundleExecutable",
52
- "CFBundleIdentifier"
50
+ 'Path',
51
+ 'Container',
52
+ 'CFBundleExecutable',
53
+ 'CFBundleIdentifier'
53
54
  ],
54
- ApplicationsType: "Any"
55
+ ApplicationsType: 'Any'
55
56
  }) {
56
57
  debug(`lookupApp, options: ${JSON.stringify(options)}`);
57
58
  let resp = await this.protocolClient.sendMessage({
58
- Command: "Lookup",
59
+ Command: 'Lookup',
59
60
  ClientOptions: {
60
61
  BundleIDs: bundleIds,
61
62
  ...options
@@ -67,16 +68,16 @@ class InstallationProxyClient extends _serviceClient.ServiceClient {
67
68
  if (isIPLookupResponse(resp)) {
68
69
  return resp[0].LookupResult;
69
70
  } else {
70
- throw new _serviceClient.ResponseError(`There was an error looking up app`, resp);
71
+ throw new _ServiceClient.ResponseError(`There was an error looking up app`, resp);
71
72
  }
72
73
  }
73
74
  async installApp(packagePath, bundleId, options = {
74
- ApplicationsType: "Any",
75
- PackageType: "Developer"
75
+ ApplicationsType: 'Any',
76
+ PackageType: 'Developer'
76
77
  }, onProgress) {
77
78
  debug(`installApp, packagePath: ${packagePath}, bundleId: ${bundleId}`);
78
79
  return this.protocolClient.sendMessage({
79
- Command: "Install",
80
+ Command: 'Install',
80
81
  PackagePath: packagePath,
81
82
  ClientOptions: {
82
83
  CFBundleIdentifier: bundleId,
@@ -103,7 +104,7 @@ class InstallationProxyClient extends _serviceClient.ServiceClient {
103
104
  } else if (isIPInstallCFBundleIdentifierResponse(resp)) {
104
105
  debug(`Installed app: ${resp[0].CFBundleIdentifier}`);
105
106
  } else {
106
- reject(new _serviceClient.ResponseError("There was an error installing app: " + require("util").inspect(resp), resp));
107
+ reject(new _ServiceClient.ResponseError('There was an error installing app: ' + require('util').inspect(resp), resp));
107
108
  }
108
109
  });
109
110
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/run/ios/appleDevice/client/InstallationProxyClient.ts"],"sourcesContent":["/**\n * Copyright (c) 2021 Expo, Inc.\n * Copyright (c) 2018 Drifty Co.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport Debug from 'debug';\nimport { Socket } from 'net';\n\nimport { ResponseError, ServiceClient } from './ServiceClient';\nimport { LockdownProtocolClient } from '../protocol/LockdownProtocol';\nimport type { LockdownCommand, LockdownResponse } from '../protocol/LockdownProtocol';\n\nconst debug = Debug('expo:apple-device:client:installation_proxy');\n\nexport type OnInstallProgressCallback = (props: {\n status: string;\n isComplete: boolean;\n // copiedFiles: number;\n progress: number;\n}) => void;\n\ninterface IPOptions {\n ApplicationsType?: 'Any';\n PackageType?: 'Developer';\n CFBundleIdentifier?: string;\n\n ReturnAttributes?: (\n | 'CFBundleIdentifier'\n | 'ApplicationDSID'\n | 'ApplicationType'\n | 'CFBundleExecutable'\n | 'CFBundleDisplayName'\n | 'CFBundleIconFile'\n | 'CFBundleName'\n | 'CFBundleShortVersionString'\n | 'CFBundleSupportedPlatforms'\n | 'CFBundleURLTypes'\n | 'CodeInfoIdentifier'\n | 'Container'\n | 'Entitlements'\n | 'HasSettingsBundle'\n | 'IsUpgradeable'\n | 'MinimumOSVersion'\n | 'Path'\n | 'SignerIdentity'\n | 'UIDeviceFamily'\n | 'UIFileSharingEnabled'\n | 'UIStatusBarHidden'\n | 'UISupportedInterfaceOrientations'\n )[];\n BundleIDs?: string[];\n [key: string]: undefined | string | string[];\n}\n\ninterface IPInstallPercentCompleteResponseItem extends LockdownResponse {\n PercentComplete: number;\n}\n\ninterface IPInstallCFBundleIdentifierResponseItem {\n CFBundleIdentifier: string;\n}\n\ninterface IPInstallCompleteResponseItem extends LockdownResponse {\n Status: 'Complete';\n}\n/*\n * [{ \"PercentComplete\": 5, \"Status\": \"CreatingStagingDirectory\" }]\n * ...\n * [{ \"PercentComplete\": 90, \"Status\": \"GeneratingApplicationMap\" }]\n * [{ \"CFBundleIdentifier\": \"my.company.app\" }]\n * [{ \"Status\": \"Complete\" }]\n */\ntype IPInstallPercentCompleteResponse = IPInstallPercentCompleteResponseItem[];\ntype IPInstallCFBundleIdentifierResponse = IPInstallCFBundleIdentifierResponseItem[];\ntype IPInstallCompleteResponse = IPInstallCompleteResponseItem[];\n\ninterface IPMessage extends LockdownCommand {\n Command: string;\n ClientOptions: IPOptions;\n}\n\ninterface IPLookupResponseItem extends LockdownResponse {\n LookupResult: IPLookupResult;\n}\n/*\n * [{\n * LookupResult: IPLookupResult,\n * Status: \"Complete\"\n * }]\n */\ntype IPLookupResponse = IPLookupResponseItem[];\n\nexport interface IPLookupResult {\n // BundleId\n [key: string]: {\n Container: string;\n CFBundleIdentifier: string;\n CFBundleExecutable: string;\n Path: string;\n };\n}\n\nfunction isIPLookupResponse(resp: any): resp is IPLookupResponse {\n return resp.length && resp[0].LookupResult !== undefined;\n}\n\nfunction isIPInstallPercentCompleteResponse(resp: any): resp is IPInstallPercentCompleteResponse {\n return resp.length && resp[0].PercentComplete !== undefined;\n}\n\nfunction isIPInstallCFBundleIdentifierResponse(\n resp: any\n): resp is IPInstallCFBundleIdentifierResponse {\n return resp.length && resp[0].CFBundleIdentifier !== undefined;\n}\n\nfunction isIPInstallCompleteResponse(resp: any): resp is IPInstallCompleteResponse {\n return resp.length && resp[0].Status === 'Complete';\n}\n\nexport class InstallationProxyClient extends ServiceClient<LockdownProtocolClient<IPMessage>> {\n constructor(public socket: Socket) {\n super(socket, new LockdownProtocolClient(socket));\n }\n\n async lookupApp(\n bundleIds: string[],\n options: IPOptions = {\n ReturnAttributes: ['Path', 'Container', 'CFBundleExecutable', 'CFBundleIdentifier'],\n ApplicationsType: 'Any',\n }\n ) {\n debug(`lookupApp, options: ${JSON.stringify(options)}`);\n\n let resp = await this.protocolClient.sendMessage({\n Command: 'Lookup',\n ClientOptions: {\n BundleIDs: bundleIds,\n ...options,\n },\n });\n if (resp && !Array.isArray(resp)) resp = [resp];\n if (isIPLookupResponse(resp)) {\n return resp[0].LookupResult;\n } else {\n throw new ResponseError(`There was an error looking up app`, resp);\n }\n }\n\n async installApp(\n packagePath: string,\n bundleId: string,\n options: IPOptions = {\n ApplicationsType: 'Any',\n PackageType: 'Developer',\n },\n onProgress: OnInstallProgressCallback\n ) {\n debug(`installApp, packagePath: ${packagePath}, bundleId: ${bundleId}`);\n\n return this.protocolClient.sendMessage(\n {\n Command: 'Install',\n PackagePath: packagePath,\n ClientOptions: {\n CFBundleIdentifier: bundleId,\n ...options,\n },\n },\n (resp, resolve, reject) => {\n if (resp && !Array.isArray(resp)) resp = [resp];\n\n if (isIPInstallCompleteResponse(resp)) {\n onProgress({\n isComplete: true,\n progress: 100,\n status: resp[0].Status,\n });\n resolve();\n } else if (isIPInstallPercentCompleteResponse(resp)) {\n onProgress({\n isComplete: false,\n progress: resp[0].PercentComplete,\n status: resp[0].Status,\n });\n debug(`Installation status: ${resp[0].Status}, %${resp[0].PercentComplete}`);\n } else if (isIPInstallCFBundleIdentifierResponse(resp)) {\n debug(`Installed app: ${resp[0].CFBundleIdentifier}`);\n } else {\n reject(\n new ResponseError(\n 'There was an error installing app: ' + require('util').inspect(resp),\n resp\n )\n );\n }\n }\n );\n }\n}\n"],"names":["InstallationProxyClient","debug","Debug","isIPLookupResponse","resp","length","LookupResult","undefined","isIPInstallPercentCompleteResponse","PercentComplete","isIPInstallCFBundleIdentifierResponse","CFBundleIdentifier","isIPInstallCompleteResponse","Status","ServiceClient","constructor","socket","LockdownProtocolClient","lookupApp","bundleIds","options","ReturnAttributes","ApplicationsType","JSON","stringify","protocolClient","sendMessage","Command","ClientOptions","BundleIDs","Array","isArray","ResponseError","installApp","packagePath","bundleId","PackageType","onProgress","PackagePath","resolve","reject","isComplete","progress","status","require","inspect"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../src/run/ios/appleDevice/client/InstallationProxyClient.ts"],"sourcesContent":["/**\n * Copyright (c) 2021 Expo, Inc.\n * Copyright (c) 2018 Drifty Co.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport Debug from 'debug';\nimport { Socket } from 'net';\n\nimport { ResponseError, ServiceClient } from './ServiceClient';\nimport { LockdownProtocolClient } from '../protocol/LockdownProtocol';\nimport type { LockdownCommand, LockdownResponse } from '../protocol/LockdownProtocol';\n\nconst debug = Debug('expo:apple-device:client:installation_proxy');\n\nexport type OnInstallProgressCallback = (props: {\n status: string;\n isComplete: boolean;\n // copiedFiles: number;\n progress: number;\n}) => void;\n\ninterface IPOptions {\n ApplicationsType?: 'Any';\n PackageType?: 'Developer';\n CFBundleIdentifier?: string;\n\n ReturnAttributes?: (\n | 'CFBundleIdentifier'\n | 'ApplicationDSID'\n | 'ApplicationType'\n | 'CFBundleExecutable'\n | 'CFBundleDisplayName'\n | 'CFBundleIconFile'\n | 'CFBundleName'\n | 'CFBundleShortVersionString'\n | 'CFBundleSupportedPlatforms'\n | 'CFBundleURLTypes'\n | 'CodeInfoIdentifier'\n | 'Container'\n | 'Entitlements'\n | 'HasSettingsBundle'\n | 'IsUpgradeable'\n | 'MinimumOSVersion'\n | 'Path'\n | 'SignerIdentity'\n | 'UIDeviceFamily'\n | 'UIFileSharingEnabled'\n | 'UIStatusBarHidden'\n | 'UISupportedInterfaceOrientations'\n )[];\n BundleIDs?: string[];\n [key: string]: undefined | string | string[];\n}\n\ninterface IPInstallPercentCompleteResponseItem extends LockdownResponse {\n PercentComplete: number;\n}\n\ninterface IPInstallCFBundleIdentifierResponseItem {\n CFBundleIdentifier: string;\n}\n\ninterface IPInstallCompleteResponseItem extends LockdownResponse {\n Status: 'Complete';\n}\n/*\n * [{ \"PercentComplete\": 5, \"Status\": \"CreatingStagingDirectory\" }]\n * ...\n * [{ \"PercentComplete\": 90, \"Status\": \"GeneratingApplicationMap\" }]\n * [{ \"CFBundleIdentifier\": \"my.company.app\" }]\n * [{ \"Status\": \"Complete\" }]\n */\ntype IPInstallPercentCompleteResponse = IPInstallPercentCompleteResponseItem[];\ntype IPInstallCFBundleIdentifierResponse = IPInstallCFBundleIdentifierResponseItem[];\ntype IPInstallCompleteResponse = IPInstallCompleteResponseItem[];\n\ninterface IPMessage extends LockdownCommand {\n Command: string;\n ClientOptions: IPOptions;\n}\n\ninterface IPLookupResponseItem extends LockdownResponse {\n LookupResult: IPLookupResult;\n}\n/*\n * [{\n * LookupResult: IPLookupResult,\n * Status: \"Complete\"\n * }]\n */\ntype IPLookupResponse = IPLookupResponseItem[];\n\nexport interface IPLookupResult {\n // BundleId\n [key: string]: {\n Container: string;\n CFBundleIdentifier: string;\n CFBundleExecutable: string;\n Path: string;\n };\n}\n\nfunction isIPLookupResponse(resp: any): resp is IPLookupResponse {\n return resp.length && resp[0].LookupResult !== undefined;\n}\n\nfunction isIPInstallPercentCompleteResponse(resp: any): resp is IPInstallPercentCompleteResponse {\n return resp.length && resp[0].PercentComplete !== undefined;\n}\n\nfunction isIPInstallCFBundleIdentifierResponse(\n resp: any\n): resp is IPInstallCFBundleIdentifierResponse {\n return resp.length && resp[0].CFBundleIdentifier !== undefined;\n}\n\nfunction isIPInstallCompleteResponse(resp: any): resp is IPInstallCompleteResponse {\n return resp.length && resp[0].Status === 'Complete';\n}\n\nexport class InstallationProxyClient extends ServiceClient<LockdownProtocolClient<IPMessage>> {\n constructor(public socket: Socket) {\n super(socket, new LockdownProtocolClient(socket));\n }\n\n async lookupApp(\n bundleIds: string[],\n options: IPOptions = {\n ReturnAttributes: ['Path', 'Container', 'CFBundleExecutable', 'CFBundleIdentifier'],\n ApplicationsType: 'Any',\n }\n ) {\n debug(`lookupApp, options: ${JSON.stringify(options)}`);\n\n let resp = await this.protocolClient.sendMessage({\n Command: 'Lookup',\n ClientOptions: {\n BundleIDs: bundleIds,\n ...options,\n },\n });\n if (resp && !Array.isArray(resp)) resp = [resp];\n if (isIPLookupResponse(resp)) {\n return resp[0].LookupResult;\n } else {\n throw new ResponseError(`There was an error looking up app`, resp);\n }\n }\n\n async installApp(\n packagePath: string,\n bundleId: string,\n options: IPOptions = {\n ApplicationsType: 'Any',\n PackageType: 'Developer',\n },\n onProgress: OnInstallProgressCallback\n ) {\n debug(`installApp, packagePath: ${packagePath}, bundleId: ${bundleId}`);\n\n return this.protocolClient.sendMessage(\n {\n Command: 'Install',\n PackagePath: packagePath,\n ClientOptions: {\n CFBundleIdentifier: bundleId,\n ...options,\n },\n },\n (resp, resolve, reject) => {\n if (resp && !Array.isArray(resp)) resp = [resp];\n\n if (isIPInstallCompleteResponse(resp)) {\n onProgress({\n isComplete: true,\n progress: 100,\n status: resp[0].Status,\n });\n resolve();\n } else if (isIPInstallPercentCompleteResponse(resp)) {\n onProgress({\n isComplete: false,\n progress: resp[0].PercentComplete,\n status: resp[0].Status,\n });\n debug(`Installation status: ${resp[0].Status}, %${resp[0].PercentComplete}`);\n } else if (isIPInstallCFBundleIdentifierResponse(resp)) {\n debug(`Installed app: ${resp[0].CFBundleIdentifier}`);\n } else {\n reject(\n new ResponseError(\n 'There was an error installing app: ' + require('util').inspect(resp),\n resp\n )\n );\n }\n }\n );\n }\n}\n"],"names":["InstallationProxyClient","debug","Debug","isIPLookupResponse","resp","length","LookupResult","undefined","isIPInstallPercentCompleteResponse","PercentComplete","isIPInstallCFBundleIdentifierResponse","CFBundleIdentifier","isIPInstallCompleteResponse","Status","ServiceClient","constructor","socket","LockdownProtocolClient","lookupApp","bundleIds","options","ReturnAttributes","ApplicationsType","JSON","stringify","protocolClient","sendMessage","Command","ClientOptions","BundleIDs","Array","isArray","ResponseError","installApp","packagePath","bundleId","PackageType","onProgress","PackagePath","resolve","reject","isComplete","progress","status","require","inspect"],"mappings":"AAAA;;;;;;CAMC;;;;+BAoHYA;;;eAAAA;;;;gEAnHK;;;;;;+BAG2B;kCACN;;;;;;AAGvC,MAAMC,QAAQC,IAAAA,gBAAK,EAAC;AA0FpB,SAASC,mBAAmBC,IAAS;IACnC,OAAOA,KAAKC,MAAM,IAAID,IAAI,CAAC,EAAE,CAACE,YAAY,KAAKC;AACjD;AAEA,SAASC,mCAAmCJ,IAAS;IACnD,OAAOA,KAAKC,MAAM,IAAID,IAAI,CAAC,EAAE,CAACK,eAAe,KAAKF;AACpD;AAEA,SAASG,sCACPN,IAAS;IAET,OAAOA,KAAKC,MAAM,IAAID,IAAI,CAAC,EAAE,CAACO,kBAAkB,KAAKJ;AACvD;AAEA,SAASK,4BAA4BR,IAAS;IAC5C,OAAOA,KAAKC,MAAM,IAAID,IAAI,CAAC,EAAE,CAACS,MAAM,KAAK;AAC3C;AAEO,MAAMb,gCAAgCc,4BAAa;IACxDC,YAAY,AAAOC,MAAc,CAAE;QACjC,KAAK,CAACA,QAAQ,IAAIC,wCAAsB,CAACD,eADxBA,SAAAA;IAEnB;IAEA,MAAME,UACJC,SAAmB,EACnBC,UAAqB;QACnBC,kBAAkB;YAAC;YAAQ;YAAa;YAAsB;SAAqB;QACnFC,kBAAkB;IACpB,CAAC,EACD;QACArB,MAAM,CAAC,oBAAoB,EAAEsB,KAAKC,SAAS,CAACJ,UAAU;QAEtD,IAAIhB,OAAO,MAAM,IAAI,CAACqB,cAAc,CAACC,WAAW,CAAC;YAC/CC,SAAS;YACTC,eAAe;gBACbC,WAAWV;gBACX,GAAGC,OAAO;YACZ;QACF;QACA,IAAIhB,QAAQ,CAAC0B,MAAMC,OAAO,CAAC3B,OAAOA,OAAO;YAACA;SAAK;QAC/C,IAAID,mBAAmBC,OAAO;YAC5B,OAAOA,IAAI,CAAC,EAAE,CAACE,YAAY;QAC7B,OAAO;YACL,MAAM,IAAI0B,4BAAa,CAAC,CAAC,iCAAiC,CAAC,EAAE5B;QAC/D;IACF;IAEA,MAAM6B,WACJC,WAAmB,EACnBC,QAAgB,EAChBf,UAAqB;QACnBE,kBAAkB;QAClBc,aAAa;IACf,CAAC,EACDC,UAAqC,EACrC;QACApC,MAAM,CAAC,yBAAyB,EAAEiC,YAAY,YAAY,EAAEC,UAAU;QAEtE,OAAO,IAAI,CAACV,cAAc,CAACC,WAAW,CACpC;YACEC,SAAS;YACTW,aAAaJ;YACbN,eAAe;gBACbjB,oBAAoBwB;gBACpB,GAAGf,OAAO;YACZ;QACF,GACA,CAAChB,MAAMmC,SAASC;YACd,IAAIpC,QAAQ,CAAC0B,MAAMC,OAAO,CAAC3B,OAAOA,OAAO;gBAACA;aAAK;YAE/C,IAAIQ,4BAA4BR,OAAO;gBACrCiC,WAAW;oBACTI,YAAY;oBACZC,UAAU;oBACVC,QAAQvC,IAAI,CAAC,EAAE,CAACS,MAAM;gBACxB;gBACA0B;YACF,OAAO,IAAI/B,mCAAmCJ,OAAO;gBACnDiC,WAAW;oBACTI,YAAY;oBACZC,UAAUtC,IAAI,CAAC,EAAE,CAACK,eAAe;oBACjCkC,QAAQvC,IAAI,CAAC,EAAE,CAACS,MAAM;gBACxB;gBACAZ,MAAM,CAAC,qBAAqB,EAAEG,IAAI,CAAC,EAAE,CAACS,MAAM,CAAC,GAAG,EAAET,IAAI,CAAC,EAAE,CAACK,eAAe,EAAE;YAC7E,OAAO,IAAIC,sCAAsCN,OAAO;gBACtDH,MAAM,CAAC,eAAe,EAAEG,IAAI,CAAC,EAAE,CAACO,kBAAkB,EAAE;YACtD,OAAO;gBACL6B,OACE,IAAIR,4BAAa,CACf,wCAAwCY,QAAQ,QAAQC,OAAO,CAACzC,OAChEA;YAGN;QACF;IAEJ;AACF"}