@expo/cli 0.11.1 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (326) hide show
  1. package/build/bin/cli +2 -2
  2. package/build/src/api/getExpoGoIntermediateCertificate.js +1 -1
  3. package/build/src/api/getExpoGoIntermediateCertificate.js.map +1 -1
  4. package/build/src/api/getExpoSchema.js +1 -1
  5. package/build/src/api/getExpoSchema.js.map +1 -1
  6. package/build/src/api/getNativeModuleVersions.js +1 -1
  7. package/build/src/api/getNativeModuleVersions.js.map +1 -1
  8. package/build/src/api/getProjectDevelopmentCertificate.js +1 -1
  9. package/build/src/api/getProjectDevelopmentCertificate.js.map +1 -1
  10. package/build/src/api/getVersions.js +1 -1
  11. package/build/src/api/getVersions.js.map +1 -1
  12. package/build/src/api/rest/cache/wrapFetchWithCache.js.map +1 -1
  13. package/build/src/api/rest/client.js +5 -5
  14. package/build/src/api/rest/client.js.map +1 -1
  15. package/build/src/api/rest/wrapFetchWithOffline.js.map +1 -1
  16. package/build/src/api/rest/wrapFetchWithProgress.js.map +1 -1
  17. package/build/src/api/rest/wrapFetchWithProxy.js.map +1 -1
  18. package/build/src/api/updateDevelopmentSession.js +1 -1
  19. package/build/src/api/updateDevelopmentSession.js.map +1 -1
  20. package/build/src/api/user/actions.js +2 -2
  21. package/build/src/api/user/actions.js.map +1 -1
  22. package/build/src/api/user/otp.js +1 -1
  23. package/build/src/api/user/otp.js.map +1 -1
  24. package/build/src/api/user/user.js +2 -2
  25. package/build/src/api/user/user.js.map +1 -1
  26. package/build/src/config/configAsync.js +17 -1
  27. package/build/src/config/configAsync.js.map +1 -1
  28. package/build/src/customize/customizeAsync.js +1 -1
  29. package/build/src/customize/customizeAsync.js.map +1 -1
  30. package/build/src/customize/generate.js +29 -2
  31. package/build/src/customize/generate.js.map +1 -1
  32. package/build/src/customize/templates.js +8 -0
  33. package/build/src/customize/templates.js.map +1 -1
  34. package/build/src/customize/typescript.js +54 -0
  35. package/build/src/customize/typescript.js.map +1 -0
  36. package/build/src/export/createBundles.js +1 -31
  37. package/build/src/export/createBundles.js.map +1 -1
  38. package/build/src/export/createMetadataJson.js.map +1 -1
  39. package/build/src/export/embed/exportEmbedAsync.js +52 -4
  40. package/build/src/export/embed/exportEmbedAsync.js.map +1 -1
  41. package/build/src/export/embed/index.js +1 -3
  42. package/build/src/export/embed/index.js.map +1 -1
  43. package/build/src/export/embed/resolveOptions.js +6 -10
  44. package/build/src/export/embed/resolveOptions.js.map +1 -1
  45. package/build/src/export/exportApp.js +73 -46
  46. package/build/src/export/exportApp.js.map +1 -1
  47. package/build/src/export/exportAssets.js +4 -4
  48. package/build/src/export/exportAssets.js.map +1 -1
  49. package/build/src/export/exportAsync.js +1 -1
  50. package/build/src/export/exportAsync.js.map +1 -1
  51. package/build/src/export/exportHermes.js +204 -0
  52. package/build/src/export/exportHermes.js.map +1 -0
  53. package/build/src/export/exportStaticAsync.js +48 -14
  54. package/build/src/export/exportStaticAsync.js.map +1 -1
  55. package/build/src/export/favicon.js +7 -7
  56. package/build/src/export/favicon.js.map +1 -1
  57. package/build/src/export/fork-bundleAsync.js +35 -12
  58. package/build/src/export/fork-bundleAsync.js.map +1 -1
  59. package/build/src/export/getPublicExpoManifest.js +1 -1
  60. package/build/src/export/getPublicExpoManifest.js.map +1 -1
  61. package/build/src/export/getResolvedLocales.js.map +1 -1
  62. package/build/src/export/persistMetroAssets.js +118 -0
  63. package/build/src/export/persistMetroAssets.js.map +1 -0
  64. package/build/src/export/printBundleSizes.js.map +1 -1
  65. package/build/src/export/saveAssets.js.map +1 -1
  66. package/build/src/export/web/exportWebAsync.js.map +1 -1
  67. package/build/src/export/writeContents.js +5 -1
  68. package/build/src/export/writeContents.js.map +1 -1
  69. package/build/src/install/checkPackages.js +1 -1
  70. package/build/src/install/checkPackages.js.map +1 -1
  71. package/build/src/install/index.js +1 -0
  72. package/build/src/install/index.js.map +1 -1
  73. package/build/src/install/installAsync.js +2 -1
  74. package/build/src/install/installAsync.js.map +1 -1
  75. package/build/src/install/resolveOptions.js +7 -4
  76. package/build/src/install/resolveOptions.js.map +1 -1
  77. package/build/src/prebuild/configureProjectAsync.js +5 -9
  78. package/build/src/prebuild/configureProjectAsync.js.map +1 -1
  79. package/build/src/prebuild/index.js +2 -0
  80. package/build/src/prebuild/index.js.map +1 -1
  81. package/build/src/prebuild/prebuildAsync.js +7 -6
  82. package/build/src/prebuild/prebuildAsync.js.map +1 -1
  83. package/build/src/prebuild/resolveOptions.js +4 -2
  84. package/build/src/prebuild/resolveOptions.js.map +1 -1
  85. package/build/src/prebuild/updateFromTemplate.js +8 -5
  86. package/build/src/prebuild/updateFromTemplate.js.map +1 -1
  87. package/build/src/register/registerAsync.js +0 -1
  88. package/build/src/register/registerAsync.js.map +1 -1
  89. package/build/src/run/android/resolveInstallApkName.js.map +1 -1
  90. package/build/src/run/android/resolveOptions.js +1 -1
  91. package/build/src/run/android/resolveOptions.js.map +1 -1
  92. package/build/src/run/android/runAndroidAsync.js +7 -2
  93. package/build/src/run/android/runAndroidAsync.js.map +1 -1
  94. package/build/src/run/ios/XcodeBuild.js +2 -2
  95. package/build/src/run/ios/XcodeBuild.js.map +1 -1
  96. package/build/src/run/ios/appleDevice/AppleDevice.js +4 -4
  97. package/build/src/run/ios/appleDevice/AppleDevice.js.map +1 -1
  98. package/build/src/run/ios/appleDevice/ClientManager.js +1 -1
  99. package/build/src/run/ios/appleDevice/ClientManager.js.map +1 -1
  100. package/build/src/run/ios/appleDevice/client/AFCClient.js +1 -1
  101. package/build/src/run/ios/appleDevice/client/AFCClient.js.map +1 -1
  102. package/build/src/run/ios/appleDevice/client/DebugserverClient.js +1 -1
  103. package/build/src/run/ios/appleDevice/client/DebugserverClient.js.map +1 -1
  104. package/build/src/run/ios/appleDevice/client/InstallationProxyClient.js +1 -1
  105. package/build/src/run/ios/appleDevice/client/InstallationProxyClient.js.map +1 -1
  106. package/build/src/run/ios/appleDevice/client/LockdowndClient.js +1 -1
  107. package/build/src/run/ios/appleDevice/client/LockdowndClient.js.map +1 -1
  108. package/build/src/run/ios/appleDevice/client/MobileImageMounterClient.js +1 -1
  109. package/build/src/run/ios/appleDevice/client/MobileImageMounterClient.js.map +1 -1
  110. package/build/src/run/ios/appleDevice/client/ServiceClient.js.map +1 -1
  111. package/build/src/run/ios/appleDevice/client/UsbmuxdClient.js +1 -1
  112. package/build/src/run/ios/appleDevice/client/UsbmuxdClient.js.map +1 -1
  113. package/build/src/run/ios/appleDevice/installOnDeviceAsync.js +1 -1
  114. package/build/src/run/ios/appleDevice/installOnDeviceAsync.js.map +1 -1
  115. package/build/src/run/ios/appleDevice/protocol/AFCProtocol.js +1 -1
  116. package/build/src/run/ios/appleDevice/protocol/AFCProtocol.js.map +1 -1
  117. package/build/src/run/ios/appleDevice/protocol/AbstractProtocol.js.map +1 -1
  118. package/build/src/run/ios/appleDevice/protocol/GDBProtocol.js +1 -1
  119. package/build/src/run/ios/appleDevice/protocol/GDBProtocol.js.map +1 -1
  120. package/build/src/run/ios/appleDevice/protocol/LockdownProtocol.js +1 -1
  121. package/build/src/run/ios/appleDevice/protocol/LockdownProtocol.js.map +1 -1
  122. package/build/src/run/ios/codeSigning/configureCodeSigning.js +1 -1
  123. package/build/src/run/ios/codeSigning/configureCodeSigning.js.map +1 -1
  124. package/build/src/run/ios/codeSigning/resolveCertificateSigningIdentity.js +2 -2
  125. package/build/src/run/ios/codeSigning/resolveCertificateSigningIdentity.js.map +1 -1
  126. package/build/src/run/ios/codeSigning/xcodeCodeSigning.js +3 -0
  127. package/build/src/run/ios/codeSigning/xcodeCodeSigning.js.map +1 -1
  128. package/build/src/run/ios/index.js.map +1 -1
  129. package/build/src/run/ios/launchApp.js +2 -2
  130. package/build/src/run/ios/launchApp.js.map +1 -1
  131. package/build/src/run/ios/options/resolveDevice.js +1 -1
  132. package/build/src/run/ios/options/resolveDevice.js.map +1 -1
  133. package/build/src/run/ios/options/resolveOptions.js +2 -2
  134. package/build/src/run/ios/options/resolveOptions.js.map +1 -1
  135. package/build/src/run/ios/runIosAsync.js +8 -3
  136. package/build/src/run/ios/runIosAsync.js.map +1 -1
  137. package/build/src/start/doctor/apple/XcodePrerequisite.js +43 -2
  138. package/build/src/start/doctor/apple/XcodePrerequisite.js.map +1 -1
  139. package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js +1 -1
  140. package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js.map +1 -1
  141. package/build/src/start/doctor/dependencies/getVersionedPackages.js +5 -3
  142. package/build/src/start/doctor/dependencies/getVersionedPackages.js.map +1 -1
  143. package/build/src/start/doctor/dependencies/validateDependenciesVersions.js +1 -1
  144. package/build/src/start/doctor/dependencies/validateDependenciesVersions.js.map +1 -1
  145. package/build/src/start/doctor/ngrok/ExternalModule.js.map +1 -1
  146. package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js +7 -7
  147. package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js.map +1 -1
  148. package/build/src/start/doctor/typescript/updateTSConfig.js +11 -10
  149. package/build/src/start/doctor/typescript/updateTSConfig.js.map +1 -1
  150. package/build/src/start/index.js +0 -2
  151. package/build/src/start/index.js.map +1 -1
  152. package/build/src/start/interface/interactiveActions.js +4 -4
  153. package/build/src/start/interface/interactiveActions.js.map +1 -1
  154. package/build/src/start/interface/startInterface.js +3 -3
  155. package/build/src/start/interface/startInterface.js.map +1 -1
  156. package/build/src/start/platforms/ExpoGoInstaller.js.map +1 -1
  157. package/build/src/start/platforms/PlatformManager.js.map +1 -1
  158. package/build/src/start/platforms/android/ADBServer.js +1 -1
  159. package/build/src/start/platforms/android/ADBServer.js.map +1 -1
  160. package/build/src/start/platforms/android/AndroidDeviceManager.js +5 -5
  161. package/build/src/start/platforms/android/AndroidDeviceManager.js.map +1 -1
  162. package/build/src/start/platforms/android/AndroidPlatformManager.js +1 -1
  163. package/build/src/start/platforms/android/AndroidPlatformManager.js.map +1 -1
  164. package/build/src/start/platforms/android/adb.js +1 -1
  165. package/build/src/start/platforms/android/adb.js.map +1 -1
  166. package/build/src/start/platforms/android/adbReverse.js +2 -2
  167. package/build/src/start/platforms/android/adbReverse.js.map +1 -1
  168. package/build/src/start/platforms/android/emulator.js +1 -1
  169. package/build/src/start/platforms/android/emulator.js.map +1 -1
  170. package/build/src/start/platforms/android/getDevices.js +1 -1
  171. package/build/src/start/platforms/android/getDevices.js.map +1 -1
  172. package/build/src/start/platforms/android/promptAndroidDevice.js +1 -1
  173. package/build/src/start/platforms/android/promptAndroidDevice.js.map +1 -1
  174. package/build/src/start/platforms/ios/AppleDeviceManager.js +5 -5
  175. package/build/src/start/platforms/ios/AppleDeviceManager.js.map +1 -1
  176. package/build/src/start/platforms/ios/ApplePlatformManager.js +1 -1
  177. package/build/src/start/platforms/ios/ApplePlatformManager.js.map +1 -1
  178. package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js.map +1 -1
  179. package/build/src/start/platforms/ios/getBestSimulator.js +1 -1
  180. package/build/src/start/platforms/ios/getBestSimulator.js.map +1 -1
  181. package/build/src/start/platforms/ios/promptAppleDevice.js +1 -1
  182. package/build/src/start/platforms/ios/promptAppleDevice.js.map +1 -1
  183. package/build/src/start/platforms/ios/simctl.js +1 -1
  184. package/build/src/start/platforms/ios/simctl.js.map +1 -1
  185. package/build/src/start/platforms/ios/simctlLogging.js +1 -1
  186. package/build/src/start/platforms/ios/simctlLogging.js.map +1 -1
  187. package/build/src/start/resolveOptions.js +0 -5
  188. package/build/src/start/resolveOptions.js.map +1 -1
  189. package/build/src/start/server/AsyncNgrok.js +4 -3
  190. package/build/src/start/server/AsyncNgrok.js.map +1 -1
  191. package/build/src/start/server/BundlerDevServer.js +4 -11
  192. package/build/src/start/server/BundlerDevServer.js.map +1 -1
  193. package/build/src/start/server/DevServerManager.js +3 -2
  194. package/build/src/start/server/DevServerManager.js.map +1 -1
  195. package/build/src/start/server/UrlCreator.js +2 -1
  196. package/build/src/start/server/UrlCreator.js.map +1 -1
  197. package/build/src/start/server/getStaticRenderFunctions.js +3 -12
  198. package/build/src/start/server/getStaticRenderFunctions.js.map +1 -1
  199. package/build/src/start/server/metro/MetroBundlerDevServer.js +57 -36
  200. package/build/src/start/server/metro/MetroBundlerDevServer.js.map +1 -1
  201. package/build/src/start/server/metro/MetroTerminalReporter.js +15 -4
  202. package/build/src/start/server/metro/MetroTerminalReporter.js.map +1 -1
  203. package/build/src/start/server/metro/TerminalReporter.js.map +1 -1
  204. package/build/src/start/server/metro/TerminalReporter.types.js.map +1 -1
  205. package/build/src/start/server/metro/inspector-proxy/device.js.map +1 -1
  206. package/build/src/start/server/metro/inspector-proxy/handlers/NetworkResponse.js.map +1 -1
  207. package/build/src/start/server/metro/inspector-proxy/handlers/PageReload.js.map +1 -1
  208. package/build/src/start/server/metro/inspector-proxy/handlers/VscodeDebuggerGetPossibleBreakpoints.js.map +1 -1
  209. package/build/src/start/server/metro/inspector-proxy/handlers/VscodeDebuggerScriptParsed.js.map +1 -1
  210. package/build/src/start/server/metro/inspector-proxy/handlers/VscodeDebuggerSetBreakpointByUrl.js.map +1 -1
  211. package/build/src/start/server/metro/inspector-proxy/handlers/VscodeRuntimeGetProperties.js.map +1 -1
  212. package/build/src/start/server/metro/inspector-proxy/handlers/types.js.map +1 -1
  213. package/build/src/start/server/metro/inspector-proxy/index.js +1 -1
  214. package/build/src/start/server/metro/inspector-proxy/index.js.map +1 -1
  215. package/build/src/start/server/metro/instantiateMetro.js +74 -13
  216. package/build/src/start/server/metro/instantiateMetro.js.map +1 -1
  217. package/build/src/start/server/metro/metroErrorInterface.js.map +1 -1
  218. package/build/src/start/server/metro/resolveFromProject.js +13 -4
  219. package/build/src/start/server/metro/resolveFromProject.js.map +1 -1
  220. package/build/src/start/server/metro/runServer-fork.js +1 -1
  221. package/build/src/start/server/metro/runServer-fork.js.map +1 -1
  222. package/build/src/start/server/metro/withMetroMultiPlatform.js +43 -5
  223. package/build/src/start/server/metro/withMetroMultiPlatform.js.map +1 -1
  224. package/build/src/start/server/metro/withMetroResolvers.js +1 -1
  225. package/build/src/start/server/metro/withMetroResolvers.js.map +1 -1
  226. package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js +3 -3
  227. package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js.map +1 -1
  228. package/build/src/start/server/middleware/ExpoMiddleware.js.map +1 -1
  229. package/build/src/start/server/middleware/FaviconMiddleware.js +1 -1
  230. package/build/src/start/server/middleware/FaviconMiddleware.js.map +1 -1
  231. package/build/src/start/server/middleware/InterstitialPageMiddleware.js +3 -3
  232. package/build/src/start/server/middleware/InterstitialPageMiddleware.js.map +1 -1
  233. package/build/src/start/server/middleware/ManifestMiddleware.js +8 -5
  234. package/build/src/start/server/middleware/ManifestMiddleware.js.map +1 -1
  235. package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js +1 -1
  236. package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js.map +1 -1
  237. package/build/src/start/server/middleware/ServeStaticMiddleware.js +1 -1
  238. package/build/src/start/server/middleware/ServeStaticMiddleware.js.map +1 -1
  239. package/build/src/start/server/middleware/inspector/JsInspector.js +69 -0
  240. package/build/src/start/server/middleware/inspector/JsInspector.js.map +1 -0
  241. package/build/src/start/server/middleware/inspector/LaunchBrowser.js +57 -0
  242. package/build/src/start/server/middleware/inspector/LaunchBrowser.js.map +1 -0
  243. package/build/src/start/server/middleware/inspector/LaunchBrowser.types.js +13 -0
  244. package/build/src/start/server/middleware/inspector/LaunchBrowser.types.js.map +1 -0
  245. package/build/src/start/server/middleware/inspector/LaunchBrowserImplLinux.js +79 -0
  246. package/build/src/start/server/middleware/inspector/LaunchBrowserImplLinux.js.map +1 -0
  247. package/build/src/start/server/middleware/inspector/LaunchBrowserImplMacOS.js +78 -0
  248. package/build/src/start/server/middleware/inspector/LaunchBrowserImplMacOS.js.map +1 -0
  249. package/build/src/start/server/middleware/inspector/LaunchBrowserImplWindows.js +121 -0
  250. package/build/src/start/server/middleware/inspector/LaunchBrowserImplWindows.js.map +1 -0
  251. package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js +64 -0
  252. package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js.map +1 -0
  253. package/build/src/start/server/middleware/inspector/middlwareMutations.js +19 -0
  254. package/build/src/start/server/middleware/inspector/middlwareMutations.js.map +1 -0
  255. package/build/src/start/server/middleware/mutations.js +19 -0
  256. package/build/src/start/server/middleware/mutations.js.map +1 -0
  257. package/build/src/start/server/middleware/remoteDevtoolsCorsMiddleware.js +31 -0
  258. package/build/src/start/server/middleware/remoteDevtoolsCorsMiddleware.js.map +1 -0
  259. package/build/src/start/server/middleware/remoteDevtoolsSecurityHeadersMiddleware.js +17 -0
  260. package/build/src/start/server/middleware/remoteDevtoolsSecurityHeadersMiddleware.js.map +1 -0
  261. package/build/src/start/server/middleware/resolveAssets.js.map +1 -1
  262. package/build/src/start/server/middleware/resolvePlatform.js.map +1 -1
  263. package/build/src/start/server/middleware/server.types.js.map +1 -1
  264. package/build/src/start/server/middleware/suppressErrorMiddleware.js +16 -0
  265. package/build/src/start/server/middleware/suppressErrorMiddleware.js.map +1 -0
  266. package/build/src/start/server/openPlatforms.js.map +1 -1
  267. package/build/src/start/server/type-generation/__typetests__/fixtures/basic.js.map +1 -1
  268. package/build/src/start/server/type-generation/routes.js +6 -6
  269. package/build/src/start/server/type-generation/routes.js.map +1 -1
  270. package/build/src/start/server/type-generation/startTypescriptTypeGeneration.js +3 -3
  271. package/build/src/start/server/type-generation/startTypescriptTypeGeneration.js.map +1 -1
  272. package/build/src/start/server/webpack/WebpackBundlerDevServer.js +19 -87
  273. package/build/src/start/server/webpack/WebpackBundlerDevServer.js.map +1 -1
  274. package/build/src/start/server/webpack/compile.js +1 -1
  275. package/build/src/start/server/webpack/compile.js.map +1 -1
  276. package/build/src/start/startAsync.js +10 -32
  277. package/build/src/start/startAsync.js.map +1 -1
  278. package/build/src/utils/FileNotifier.js +1 -1
  279. package/build/src/utils/FileNotifier.js.map +1 -1
  280. package/build/src/utils/analytics/metroDebuggerMiddleware.js +1 -1
  281. package/build/src/utils/analytics/metroDebuggerMiddleware.js.map +1 -1
  282. package/build/src/utils/analytics/rudderstackClient.js +2 -2
  283. package/build/src/utils/array.js.map +1 -1
  284. package/build/src/utils/cocoapods.js +2 -2
  285. package/build/src/utils/cocoapods.js.map +1 -1
  286. package/build/src/utils/codesigning.js +2 -2
  287. package/build/src/utils/codesigning.js.map +1 -1
  288. package/build/src/utils/downloadAppAsync.js +1 -1
  289. package/build/src/utils/downloadAppAsync.js.map +1 -1
  290. package/build/src/utils/downloadExpoGoAsync.js +2 -2
  291. package/build/src/utils/downloadExpoGoAsync.js.map +1 -1
  292. package/build/src/utils/editor.js +1 -1
  293. package/build/src/utils/editor.js.map +1 -1
  294. package/build/src/utils/env.js +1 -1
  295. package/build/src/utils/env.js.map +1 -1
  296. package/build/src/utils/errors.js.map +1 -1
  297. package/build/src/utils/getOrPromptApplicationId.js +2 -2
  298. package/build/src/utils/getOrPromptApplicationId.js.map +1 -1
  299. package/build/src/utils/git.js +1 -1
  300. package/build/src/utils/git.js.map +1 -1
  301. package/build/src/utils/modifyConfigAsync.js +1 -1
  302. package/build/src/utils/modifyConfigAsync.js.map +1 -1
  303. package/build/src/utils/modifyConfigPlugins.js +1 -1
  304. package/build/src/utils/modifyConfigPlugins.js.map +1 -1
  305. package/build/src/utils/npm.js +1 -1
  306. package/build/src/utils/npm.js.map +1 -1
  307. package/build/src/utils/obj.js.map +1 -1
  308. package/build/src/utils/plist.js +1 -1
  309. package/build/src/utils/plist.js.map +1 -1
  310. package/build/src/utils/port.js +46 -18
  311. package/build/src/utils/port.js.map +1 -1
  312. package/build/src/utils/profile.js +1 -1
  313. package/build/src/utils/profile.js.map +1 -1
  314. package/build/src/utils/scheme.js +1 -1
  315. package/build/src/utils/scheme.js.map +1 -1
  316. package/build/src/utils/tsconfig/loadTsConfigPaths.js +1 -1
  317. package/build/src/utils/tsconfig/loadTsConfigPaths.js.map +1 -1
  318. package/build/src/utils/validateApplicationId.js +85 -5
  319. package/build/src/utils/validateApplicationId.js.map +1 -1
  320. package/package.json +19 -13
  321. package/build/src/api/signManifest.js +0 -26
  322. package/build/src/api/signManifest.js.map +0 -1
  323. package/build/src/start/server/middleware/ClassicManifestMiddleware.js +0 -155
  324. package/build/src/start/server/middleware/ClassicManifestMiddleware.js.map +0 -1
  325. package/build/src/start/server/middleware/createDevServerMiddleware.js +0 -24
  326. package/build/src/start/server/middleware/createDevServerMiddleware.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/prebuild/index.ts"],"sourcesContent":["#!/usr/bin/env node\nimport chalk from 'chalk';\n\nimport { Command } from '../../bin/cli';\nimport { assertArgs, getProjectRoot, printHelp } from '../utils/args';\n\nexport const expoPrebuild: Command = async (argv) => {\n const args = assertArgs(\n {\n // Types\n '--help': Boolean,\n '--clean': Boolean,\n '--npm': Boolean,\n '--pnpm': Boolean,\n '--yarn': Boolean,\n '--no-install': Boolean,\n '--template': String,\n '--platform': String,\n '--skip-dependency-update': String,\n // Aliases\n '-h': '--help',\n '-p': '--platform',\n '-t': '--type',\n },\n argv\n );\n\n if (args['--help']) {\n printHelp(\n `Create native iOS and Android project files for building natively`,\n chalk`npx expo prebuild {dim <dir>}`,\n [\n chalk`<dir> Directory of the Expo project. {dim Default: Current working directory}`,\n `--no-install Skip installing npm packages and CocoaPods`,\n `--clean Delete the native folders and regenerate them before applying changes`,\n chalk`--npm Use npm to install dependencies. {dim Default when package-lock.json exists}`,\n chalk`--yarn Use Yarn to install dependencies. {dim Default when yarn.lock exists}`,\n chalk`--pnpm Use pnpm to install dependencies. {dim Default when pnpm-lock.yaml exists}`,\n `--template <template> Project template to clone from. File path pointing to a local tar file or a github repo`,\n chalk`-p, --platform <all|android|ios> Platforms to sync: ios, android, all. {dim Default: all}`,\n `--skip-dependency-update <dependencies> Preserves versions of listed packages in package.json (comma separated list)`,\n `-h, --help Usage info`,\n ].join('\\n')\n );\n }\n\n // Load modules after the help prompt so `npx expo prebuild -h` shows as fast as possible.\n const [\n // ./prebuildAsync\n { prebuildAsync },\n // ./resolveOptions\n { resolvePlatformOption, resolvePackageManagerOptions, resolveSkipDependencyUpdate },\n // ../utils/errors\n { logCmdError },\n ] = await Promise.all([\n import('./prebuildAsync'),\n import('./resolveOptions'),\n import('../utils/errors'),\n ]);\n\n return (() => {\n return prebuildAsync(getProjectRoot(args), {\n // Parsed options\n clean: args['--clean'],\n\n packageManager: resolvePackageManagerOptions(args),\n install: !args['--no-install'],\n platforms: resolvePlatformOption(args['--platform']),\n // TODO: Parse\n skipDependencyUpdate: resolveSkipDependencyUpdate(args['--skip-dependency-update']),\n template: args['--template'],\n });\n })().catch(logCmdError);\n};\n"],"names":["expoPrebuild","argv","args","assertArgs","Boolean","String","printHelp","chalk","join","prebuildAsync","resolvePlatformOption","resolvePackageManagerOptions","resolveSkipDependencyUpdate","logCmdError","Promise","all","getProjectRoot","clean","packageManager","install","platforms","skipDependencyUpdate","template","catch"],"mappings":"AAAA;;;;;;AACkB,IAAA,MAAO,kCAAP,OAAO,EAAA;AAG6B,IAAA,KAAe,WAAf,eAAe,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAE9D,MAAMA,YAAY,GAAY,OAAOC,IAAI,GAAK;IACnD,MAAMC,IAAI,GAAGC,CAAAA,GAAAA,KAAU,AAkBtB,CAAA,WAlBsB,CACrB;QACE,QAAQ;QACR,QAAQ,EAAEC,OAAO;QACjB,SAAS,EAAEA,OAAO;QAClB,OAAO,EAAEA,OAAO;QAChB,QAAQ,EAAEA,OAAO;QACjB,QAAQ,EAAEA,OAAO;QACjB,cAAc,EAAEA,OAAO;QACvB,YAAY,EAAEC,MAAM;QACpB,YAAY,EAAEA,MAAM;QACpB,0BAA0B,EAAEA,MAAM;QAClC,UAAU;QACV,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,QAAQ;KACf,EACDJ,IAAI,CACL,AAAC;IAEF,IAAIC,IAAI,CAAC,QAAQ,CAAC,EAAE;QAClBI,CAAAA,GAAAA,KAAS,AAeR,CAAA,UAfQ,CACP,CAAC,iEAAiE,CAAC,EACnEC,MAAK,QAAA,CAAC,6BAA6B,CAAC,EACpC;YACEA,MAAK,QAAA,CAAC,gHAAgH,CAAC;YACvH,CAAC,mFAAmF,CAAC;YACrF,CAAC,8GAA8G,CAAC;YAChHA,MAAK,QAAA,CAAC,qHAAqH,CAAC;YAC5HA,MAAK,QAAA,CAAC,8GAA8G,CAAC;YACrHA,MAAK,QAAA,CAAC,mHAAmH,CAAC;YAC1H,CAAC,gIAAgI,CAAC;YAClIA,MAAK,QAAA,CAAC,iGAAiG,CAAC;YACxG,CAAC,qHAAqH,CAAC;YACvH,CAAC,mDAAmD,CAAC;SACtD,CAACC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;KACH;IAED,0FAA0F;IAC1F,MAAM,CACJ,kBAAkB;IAClB,EAAEC,aAAa,CAAA,EAAE,EACjB,mBAAmB;IACnB,EAAEC,qBAAqB,CAAA,EAAEC,4BAA4B,CAAA,EAAEC,2BAA2B,CAAA,EAAE,EACpF,kBAAkB;IAClB,EAAEC,WAAW,CAAA,EAAE,GAChB,GAAG,MAAMC,OAAO,CAACC,GAAG,CAAC;QACpB;mDAAO,iBAAiB;UAAC;QACzB;mDAAO,kBAAkB;UAAC;QAC1B;mDAAO,iBAAiB;UAAC;KAC1B,CAAC,AAAC;IAEH,OAAO,CAAC,IAAM;QACZ,OAAON,aAAa,CAACO,CAAAA,GAAAA,KAAc,AAAM,CAAA,eAAN,CAACd,IAAI,CAAC,EAAE;YACzC,iBAAiB;YACjBe,KAAK,EAAEf,IAAI,CAAC,SAAS,CAAC;YAEtBgB,cAAc,EAAEP,4BAA4B,CAACT,IAAI,CAAC;YAClDiB,OAAO,EAAE,CAACjB,IAAI,CAAC,cAAc,CAAC;YAC9BkB,SAAS,EAAEV,qBAAqB,CAACR,IAAI,CAAC,YAAY,CAAC,CAAC;YACpD,cAAc;YACdmB,oBAAoB,EAAET,2BAA2B,CAACV,IAAI,CAAC,0BAA0B,CAAC,CAAC;YACnFoB,QAAQ,EAAEpB,IAAI,CAAC,YAAY,CAAC;SAC7B,CAAC,CAAC;KACJ,CAAC,EAAE,CAACqB,KAAK,CAACV,WAAW,CAAC,CAAC;CACzB,AAAC;QAnEWb,YAAY,GAAZA,YAAY"}
1
+ {"version":3,"sources":["../../../src/prebuild/index.ts"],"sourcesContent":["#!/usr/bin/env node\nimport chalk from 'chalk';\n\nimport { Command } from '../../bin/cli';\nimport { assertArgs, getProjectRoot, printHelp } from '../utils/args';\n\nexport const expoPrebuild: Command = async (argv) => {\n const args = assertArgs(\n {\n // Types\n '--help': Boolean,\n '--clean': Boolean,\n '--npm': Boolean,\n '--pnpm': Boolean,\n '--yarn': Boolean,\n '--bun': Boolean,\n '--no-install': Boolean,\n '--template': String,\n '--platform': String,\n '--skip-dependency-update': String,\n // Aliases\n '-h': '--help',\n '-p': '--platform',\n '-t': '--type',\n },\n argv\n );\n\n if (args['--help']) {\n printHelp(\n `Create native iOS and Android project files for building natively`,\n chalk`npx expo prebuild {dim <dir>}`,\n [\n chalk`<dir> Directory of the Expo project. {dim Default: Current working directory}`,\n `--no-install Skip installing npm packages and CocoaPods`,\n `--clean Delete the native folders and regenerate them before applying changes`,\n chalk`--npm Use npm to install dependencies. {dim Default when package-lock.json exists}`,\n chalk`--yarn Use Yarn to install dependencies. {dim Default when yarn.lock exists}`,\n chalk`--bun Use bun to install dependencies. {dim Default when bun.lockb exists}`,\n chalk`--pnpm Use pnpm to install dependencies. {dim Default when pnpm-lock.yaml exists}`,\n `--template <template> Project template to clone from. File path pointing to a local tar file or a github repo`,\n chalk`-p, --platform <all|android|ios> Platforms to sync: ios, android, all. {dim Default: all}`,\n `--skip-dependency-update <dependencies> Preserves versions of listed packages in package.json (comma separated list)`,\n `-h, --help Usage info`,\n ].join('\\n')\n );\n }\n\n // Load modules after the help prompt so `npx expo prebuild -h` shows as fast as possible.\n const [\n // ./prebuildAsync\n { prebuildAsync },\n // ./resolveOptions\n { resolvePlatformOption, resolvePackageManagerOptions, resolveSkipDependencyUpdate },\n // ../utils/errors\n { logCmdError },\n ] = await Promise.all([\n import('./prebuildAsync'),\n import('./resolveOptions'),\n import('../utils/errors'),\n ]);\n\n return (() => {\n return prebuildAsync(getProjectRoot(args), {\n // Parsed options\n clean: args['--clean'],\n\n packageManager: resolvePackageManagerOptions(args),\n install: !args['--no-install'],\n platforms: resolvePlatformOption(args['--platform']),\n // TODO: Parse\n skipDependencyUpdate: resolveSkipDependencyUpdate(args['--skip-dependency-update']),\n template: args['--template'],\n });\n })().catch(logCmdError);\n};\n"],"names":["expoPrebuild","argv","args","assertArgs","Boolean","String","printHelp","chalk","join","prebuildAsync","resolvePlatformOption","resolvePackageManagerOptions","resolveSkipDependencyUpdate","logCmdError","Promise","all","getProjectRoot","clean","packageManager","install","platforms","skipDependencyUpdate","template","catch"],"mappings":"AAAA;;;;;;AACkB,IAAA,MAAO,kCAAP,OAAO,EAAA;AAG6B,IAAA,KAAe,WAAf,eAAe,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAE9D,MAAMA,YAAY,GAAY,OAAOC,IAAI,GAAK;IACnD,MAAMC,IAAI,GAAGC,CAAAA,GAAAA,KAAU,AAmBtB,CAAA,WAnBsB,CACrB;QACE,QAAQ;QACR,QAAQ,EAAEC,OAAO;QACjB,SAAS,EAAEA,OAAO;QAClB,OAAO,EAAEA,OAAO;QAChB,QAAQ,EAAEA,OAAO;QACjB,QAAQ,EAAEA,OAAO;QACjB,OAAO,EAAEA,OAAO;QAChB,cAAc,EAAEA,OAAO;QACvB,YAAY,EAAEC,MAAM;QACpB,YAAY,EAAEA,MAAM;QACpB,0BAA0B,EAAEA,MAAM;QAClC,UAAU;QACV,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,QAAQ;KACf,EACDJ,IAAI,CACL,AAAC;IAEF,IAAIC,IAAI,CAAC,QAAQ,CAAC,EAAE;QAClBI,CAAAA,GAAAA,KAAS,AAgBR,CAAA,UAhBQ,CACP,CAAC,iEAAiE,CAAC,EACnEC,MAAK,QAAA,CAAC,6BAA6B,CAAC,EACpC;YACEA,MAAK,QAAA,CAAC,gHAAgH,CAAC;YACvH,CAAC,mFAAmF,CAAC;YACrF,CAAC,8GAA8G,CAAC;YAChHA,MAAK,QAAA,CAAC,qHAAqH,CAAC;YAC5HA,MAAK,QAAA,CAAC,8GAA8G,CAAC;YACrHA,MAAK,QAAA,CAAC,6GAA6G,CAAC;YACpHA,MAAK,QAAA,CAAC,mHAAmH,CAAC;YAC1H,CAAC,gIAAgI,CAAC;YAClIA,MAAK,QAAA,CAAC,iGAAiG,CAAC;YACxG,CAAC,qHAAqH,CAAC;YACvH,CAAC,mDAAmD,CAAC;SACtD,CAACC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;KACH;IAED,0FAA0F;IAC1F,MAAM,CACJ,kBAAkB;IAClB,EAAEC,aAAa,CAAA,EAAE,EACjB,mBAAmB;IACnB,EAAEC,qBAAqB,CAAA,EAAEC,4BAA4B,CAAA,EAAEC,2BAA2B,CAAA,EAAE,EACpF,kBAAkB;IAClB,EAAEC,WAAW,CAAA,EAAE,GAChB,GAAG,MAAMC,OAAO,CAACC,GAAG,CAAC;QACpB;mDAAO,iBAAiB;UAAC;QACzB;mDAAO,kBAAkB;UAAC;QAC1B;mDAAO,iBAAiB;UAAC;KAC1B,CAAC,AAAC;IAEH,OAAO,CAAC,IAAM;QACZ,OAAON,aAAa,CAACO,CAAAA,GAAAA,KAAc,AAAM,CAAA,eAAN,CAACd,IAAI,CAAC,EAAE;YACzC,iBAAiB;YACjBe,KAAK,EAAEf,IAAI,CAAC,SAAS,CAAC;YAEtBgB,cAAc,EAAEP,4BAA4B,CAACT,IAAI,CAAC;YAClDiB,OAAO,EAAE,CAACjB,IAAI,CAAC,cAAc,CAAC;YAC9BkB,SAAS,EAAEV,qBAAqB,CAACR,IAAI,CAAC,YAAY,CAAC,CAAC;YACpD,cAAc;YACdmB,oBAAoB,EAAET,2BAA2B,CAACV,IAAI,CAAC,0BAA0B,CAAC,CAAC;YACnFoB,QAAQ,EAAEpB,IAAI,CAAC,YAAY,CAAC;SAC7B,CAAC,CAAC;KACJ,CAAC,EAAE,CAACqB,KAAK,CAACV,WAAW,CAAC,CAAC;CACzB,AAAC;QArEWb,YAAY,GAAZA,YAAY"}
@@ -3,17 +3,17 @@ Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
5
  exports.prebuildAsync = prebuildAsync;
6
+ var _clearNativeFolder = require("./clearNativeFolder");
7
+ var _configureProjectAsync = require("./configureProjectAsync");
8
+ var _ensureConfigAsync = require("./ensureConfigAsync");
9
+ var _resolveOptions = require("./resolveOptions");
10
+ var _updateFromTemplate = require("./updateFromTemplate");
6
11
  var _installAsync = require("../install/installAsync");
7
12
  var _env = require("../utils/env");
8
13
  var _nodeEnv = require("../utils/nodeEnv");
9
14
  var _nodeModules = require("../utils/nodeModules");
10
15
  var _ora = require("../utils/ora");
11
16
  var _profile = require("../utils/profile");
12
- var _clearNativeFolder = require("./clearNativeFolder");
13
- var _configureProjectAsync = require("./configureProjectAsync");
14
- var _ensureConfigAsync = require("./ensureConfigAsync");
15
- var _resolveOptions = require("./resolveOptions");
16
- var _updateFromTemplate = require("./updateFromTemplate");
17
17
  function _interopRequireWildcard(obj) {
18
18
  if (obj && obj.__esModule) {
19
19
  return obj;
@@ -71,7 +71,7 @@ async function prebuildAsync(projectRoot, options) {
71
71
  });
72
72
  // Install node modules
73
73
  if (options.install) {
74
- var ref, ref1, ref2, ref3;
74
+ var ref, ref1, ref2, ref3, ref4;
75
75
  if (hasNewDependencies && ((ref = options.packageManager) == null ? void 0 : ref.npm)) {
76
76
  await (0, _nodeModules).clearNodeModulesAsync(projectRoot);
77
77
  }
@@ -79,6 +79,7 @@ async function prebuildAsync(projectRoot, options) {
79
79
  npm: !!((ref1 = options.packageManager) == null ? void 0 : ref1.npm),
80
80
  yarn: !!((ref2 = options.packageManager) == null ? void 0 : ref2.yarn),
81
81
  pnpm: !!((ref3 = options.packageManager) == null ? void 0 : ref3.pnpm),
82
+ bun: !!((ref4 = options.packageManager) == null ? void 0 : ref4.bun),
82
83
  silent: !(_env.env.EXPO_DEBUG || _env.env.CI)
83
84
  });
84
85
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/prebuild/prebuildAsync.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config';\nimport { ModPlatform } from '@expo/config-plugins';\n\nimport { installAsync } from '../install/installAsync';\nimport { env } from '../utils/env';\nimport { setNodeEnv } from '../utils/nodeEnv';\nimport { clearNodeModulesAsync } from '../utils/nodeModules';\nimport { logNewSection } from '../utils/ora';\nimport { profile } from '../utils/profile';\nimport { clearNativeFolder, promptToClearMalformedNativeProjectsAsync } from './clearNativeFolder';\nimport { configureProjectAsync } from './configureProjectAsync';\nimport { ensureConfigAsync } from './ensureConfigAsync';\nimport { assertPlatforms, ensureValidPlatforms, resolveTemplateOption } from './resolveOptions';\nimport { updateFromTemplateAsync } from './updateFromTemplate';\n\nconst debug = require('debug')('expo:prebuild') as typeof console.log;\n\nexport type PrebuildResults = {\n /** Expo config. */\n exp: ExpoConfig;\n /** Indicates if the process created new files. */\n hasNewProjectFiles: boolean;\n /** The platforms that were prebuilt. */\n platforms: ModPlatform[];\n /** Indicates if pod install was run. */\n podInstall: boolean;\n /** Indicates if node modules were installed. */\n nodeInstall: boolean;\n};\n\n/**\n * Entry point into the prebuild process, delegates to other helpers to perform various steps.\n *\n * 0. Attempt to clean the project folders.\n * 1. Create native projects (ios, android).\n * 2. Install node modules.\n * 3. Apply config to native projects.\n * 4. Install CocoaPods.\n */\nexport async function prebuildAsync(\n projectRoot: string,\n options: {\n /** Should install node modules and cocoapods. */\n install?: boolean;\n /** List of platforms to prebuild. */\n platforms: ModPlatform[];\n /** Should delete the native folders before attempting to prebuild. */\n clean?: boolean;\n /** URL or file path to the prebuild template. */\n template?: string;\n /** Name of the node package manager to install with. */\n packageManager?: {\n npm?: boolean;\n yarn?: boolean;\n pnpm?: boolean;\n };\n /** List of node modules to skip updating. */\n skipDependencyUpdate?: string[];\n }\n): Promise<PrebuildResults | null> {\n setNodeEnv('development');\n require('@expo/env').load(projectRoot);\n\n if (options.clean) {\n const { maybeBailOnGitStatusAsync } = await import('../utils/git');\n // Clean the project folders...\n if (await maybeBailOnGitStatusAsync()) {\n return null;\n }\n // Clear the native folders before syncing\n await clearNativeFolder(projectRoot, options.platforms);\n } else {\n // Check if the existing project folders are malformed.\n await promptToClearMalformedNativeProjectsAsync(projectRoot, options.platforms);\n }\n\n // Warn if the project is attempting to prebuild an unsupported platform (iOS on Windows).\n options.platforms = ensureValidPlatforms(options.platforms);\n // Assert if no platforms are left over after filtering.\n assertPlatforms(options.platforms);\n\n // Get the Expo config, create it if missing.\n const { exp, pkg } = await ensureConfigAsync(projectRoot, { platforms: options.platforms });\n\n // Create native projects from template.\n const { hasNewProjectFiles, needsPodInstall, hasNewDependencies } = await updateFromTemplateAsync(\n projectRoot,\n {\n exp,\n pkg,\n template: options.template != null ? resolveTemplateOption(options.template) : undefined,\n platforms: options.platforms,\n skipDependencyUpdate: options.skipDependencyUpdate,\n }\n );\n\n // Install node modules\n if (options.install) {\n if (hasNewDependencies && options.packageManager?.npm) {\n await clearNodeModulesAsync(projectRoot);\n }\n\n await installAsync([], {\n npm: !!options.packageManager?.npm,\n yarn: !!options.packageManager?.yarn,\n pnpm: !!options.packageManager?.pnpm,\n silent: !(env.EXPO_DEBUG || env.CI),\n });\n }\n\n // Apply Expo config to native projects\n const configSyncingStep = logNewSection('Config syncing');\n try {\n await profile(configureProjectAsync)(projectRoot, {\n platforms: options.platforms,\n });\n configSyncingStep.succeed('Config synced');\n } catch (error) {\n configSyncingStep.fail('Config sync failed');\n throw error;\n }\n\n // Install CocoaPods\n let podsInstalled: boolean = false;\n // err towards running pod install less because it's slow and users can easily run npx pod-install afterwards.\n if (options.platforms.includes('ios') && options.install && needsPodInstall) {\n const { installCocoaPodsAsync } = await import('../utils/cocoapods');\n\n podsInstalled = await installCocoaPodsAsync(projectRoot);\n } else {\n debug('Skipped pod install');\n }\n\n return {\n nodeInstall: !!options.install,\n podInstall: !podsInstalled,\n platforms: options.platforms,\n hasNewProjectFiles,\n exp,\n };\n}\n"],"names":["prebuildAsync","debug","require","projectRoot","options","setNodeEnv","load","clean","maybeBailOnGitStatusAsync","clearNativeFolder","platforms","promptToClearMalformedNativeProjectsAsync","ensureValidPlatforms","assertPlatforms","exp","pkg","ensureConfigAsync","hasNewProjectFiles","needsPodInstall","hasNewDependencies","updateFromTemplateAsync","template","resolveTemplateOption","undefined","skipDependencyUpdate","install","packageManager","npm","clearNodeModulesAsync","installAsync","yarn","pnpm","silent","env","EXPO_DEBUG","CI","configSyncingStep","logNewSection","profile","configureProjectAsync","succeed","error","fail","podsInstalled","includes","installCocoaPodsAsync","nodeInstall","podInstall"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/prebuild/prebuildAsync.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config';\nimport { ModPlatform } from '@expo/config-plugins';\n\nimport { clearNativeFolder, promptToClearMalformedNativeProjectsAsync } from './clearNativeFolder';\nimport { configureProjectAsync } from './configureProjectAsync';\nimport { ensureConfigAsync } from './ensureConfigAsync';\nimport { assertPlatforms, ensureValidPlatforms, resolveTemplateOption } from './resolveOptions';\nimport { updateFromTemplateAsync } from './updateFromTemplate';\nimport { installAsync } from '../install/installAsync';\nimport { env } from '../utils/env';\nimport { setNodeEnv } from '../utils/nodeEnv';\nimport { clearNodeModulesAsync } from '../utils/nodeModules';\nimport { logNewSection } from '../utils/ora';\nimport { profile } from '../utils/profile';\n\nconst debug = require('debug')('expo:prebuild') as typeof console.log;\n\nexport type PrebuildResults = {\n /** Expo config. */\n exp: ExpoConfig;\n /** Indicates if the process created new files. */\n hasNewProjectFiles: boolean;\n /** The platforms that were prebuilt. */\n platforms: ModPlatform[];\n /** Indicates if pod install was run. */\n podInstall: boolean;\n /** Indicates if node modules were installed. */\n nodeInstall: boolean;\n};\n\n/**\n * Entry point into the prebuild process, delegates to other helpers to perform various steps.\n *\n * 0. Attempt to clean the project folders.\n * 1. Create native projects (ios, android).\n * 2. Install node modules.\n * 3. Apply config to native projects.\n * 4. Install CocoaPods.\n */\nexport async function prebuildAsync(\n projectRoot: string,\n options: {\n /** Should install node modules and cocoapods. */\n install?: boolean;\n /** List of platforms to prebuild. */\n platforms: ModPlatform[];\n /** Should delete the native folders before attempting to prebuild. */\n clean?: boolean;\n /** URL or file path to the prebuild template. */\n template?: string;\n /** Name of the node package manager to install with. */\n packageManager?: {\n npm?: boolean;\n yarn?: boolean;\n pnpm?: boolean;\n bun?: boolean;\n };\n /** List of node modules to skip updating. */\n skipDependencyUpdate?: string[];\n }\n): Promise<PrebuildResults | null> {\n setNodeEnv('development');\n require('@expo/env').load(projectRoot);\n\n if (options.clean) {\n const { maybeBailOnGitStatusAsync } = await import('../utils/git');\n // Clean the project folders...\n if (await maybeBailOnGitStatusAsync()) {\n return null;\n }\n // Clear the native folders before syncing\n await clearNativeFolder(projectRoot, options.platforms);\n } else {\n // Check if the existing project folders are malformed.\n await promptToClearMalformedNativeProjectsAsync(projectRoot, options.platforms);\n }\n\n // Warn if the project is attempting to prebuild an unsupported platform (iOS on Windows).\n options.platforms = ensureValidPlatforms(options.platforms);\n // Assert if no platforms are left over after filtering.\n assertPlatforms(options.platforms);\n\n // Get the Expo config, create it if missing.\n const { exp, pkg } = await ensureConfigAsync(projectRoot, { platforms: options.platforms });\n\n // Create native projects from template.\n const { hasNewProjectFiles, needsPodInstall, hasNewDependencies } = await updateFromTemplateAsync(\n projectRoot,\n {\n exp,\n pkg,\n template: options.template != null ? resolveTemplateOption(options.template) : undefined,\n platforms: options.platforms,\n skipDependencyUpdate: options.skipDependencyUpdate,\n }\n );\n\n // Install node modules\n if (options.install) {\n if (hasNewDependencies && options.packageManager?.npm) {\n await clearNodeModulesAsync(projectRoot);\n }\n\n await installAsync([], {\n npm: !!options.packageManager?.npm,\n yarn: !!options.packageManager?.yarn,\n pnpm: !!options.packageManager?.pnpm,\n bun: !!options.packageManager?.bun,\n silent: !(env.EXPO_DEBUG || env.CI),\n });\n }\n\n // Apply Expo config to native projects\n const configSyncingStep = logNewSection('Config syncing');\n try {\n await profile(configureProjectAsync)(projectRoot, {\n platforms: options.platforms,\n });\n configSyncingStep.succeed('Config synced');\n } catch (error) {\n configSyncingStep.fail('Config sync failed');\n throw error;\n }\n\n // Install CocoaPods\n let podsInstalled: boolean = false;\n // err towards running pod install less because it's slow and users can easily run npx pod-install afterwards.\n if (options.platforms.includes('ios') && options.install && needsPodInstall) {\n const { installCocoaPodsAsync } = await import('../utils/cocoapods');\n\n podsInstalled = await installCocoaPodsAsync(projectRoot);\n } else {\n debug('Skipped pod install');\n }\n\n return {\n nodeInstall: !!options.install,\n podInstall: !podsInstalled,\n platforms: options.platforms,\n hasNewProjectFiles,\n exp,\n };\n}\n"],"names":["prebuildAsync","debug","require","projectRoot","options","setNodeEnv","load","clean","maybeBailOnGitStatusAsync","clearNativeFolder","platforms","promptToClearMalformedNativeProjectsAsync","ensureValidPlatforms","assertPlatforms","exp","pkg","ensureConfigAsync","hasNewProjectFiles","needsPodInstall","hasNewDependencies","updateFromTemplateAsync","template","resolveTemplateOption","undefined","skipDependencyUpdate","install","packageManager","npm","clearNodeModulesAsync","installAsync","yarn","pnpm","bun","silent","env","EXPO_DEBUG","CI","configSyncingStep","logNewSection","profile","configureProjectAsync","succeed","error","fail","podsInstalled","includes","installCocoaPodsAsync","nodeInstall","podInstall"],"mappings":"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"}
@@ -45,15 +45,17 @@ function resolvePackageManagerOptions(args) {
45
45
  const managers = {
46
46
  npm: args["--npm"],
47
47
  yarn: args["--yarn"],
48
- pnpm: args["--pnpm"]
48
+ pnpm: args["--pnpm"],
49
+ bun: args["--bun"]
49
50
  };
50
51
  if ([
51
52
  managers.npm,
52
53
  managers.pnpm,
53
54
  managers.yarn,
55
+ managers.bun,
54
56
  !!args["--no-install"]
55
57
  ].filter(Boolean).length > 1) {
56
- throw new _errors.CommandError("BAD_ARGS", "Specify at most one of: --no-install, --npm, --pnpm, --yarn");
58
+ throw new _errors.CommandError("BAD_ARGS", "Specify at most one of: --no-install, --npm, --pnpm, --yarn, --bun");
57
59
  }
58
60
  return managers;
59
61
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/prebuild/resolveOptions.ts"],"sourcesContent":["import { ModPlatform } from '@expo/config-plugins';\nimport assert from 'assert';\nimport chalk from 'chalk';\nimport fs from 'fs';\nimport path from 'path';\n\nimport * as Log from '../log';\nimport { CommandError } from '../utils/errors';\nimport { validateUrl } from '../utils/url';\n\nexport function resolvePackageManagerOptions(args: any) {\n const managers: Record<string, boolean> = {\n npm: args['--npm'],\n yarn: args['--yarn'],\n pnpm: args['--pnpm'],\n };\n\n if (\n [managers.npm, managers.pnpm, managers.yarn, !!args['--no-install']].filter(Boolean).length > 1\n ) {\n throw new CommandError(\n 'BAD_ARGS',\n 'Specify at most one of: --no-install, --npm, --pnpm, --yarn'\n );\n }\n\n return managers;\n}\n\n/** Resolves a template option as a URL or file path pointing to a tar file. */\nexport function resolveTemplateOption(template: string) {\n if (validateUrl(template)) {\n return template;\n }\n const templatePath = path.resolve(template);\n assert(fs.existsSync(templatePath), 'template file does not exist: ' + templatePath);\n assert(\n fs.statSync(templatePath).isFile(),\n 'template must be a tar file created by running `npm pack` in a project: ' + templatePath\n );\n\n return templatePath;\n}\n\n/** Resolves dependencies to skip from a string joined by `,`. Example: `react-native,expo,lodash` */\nexport function resolveSkipDependencyUpdate(value: any) {\n if (!value || typeof value !== 'string') {\n return [];\n }\n return value.split(',');\n}\n\n/** Returns an array of platforms based on the input platform identifier and runtime constraints. */\nexport function resolvePlatformOption(\n platform: string = 'all',\n { loose }: { loose?: boolean } = {}\n): ModPlatform[] {\n switch (platform) {\n case 'ios':\n return ['ios'];\n case 'android':\n return ['android'];\n case 'all':\n return loose || process.platform !== 'win32' ? ['android', 'ios'] : ['android'];\n default:\n return [platform as ModPlatform];\n }\n}\n\n/** Warns and filters out unsupported platforms based on the runtime constraints. Essentially this means no iOS on Windows devices. */\nexport function ensureValidPlatforms(platforms: ModPlatform[]): ModPlatform[] {\n // Skip ejecting for iOS on Windows\n if (process.platform === 'win32' && platforms.includes('ios')) {\n Log.warn(\n chalk`⚠️ Skipping generating the iOS native project files. Run {bold expo eject} again from macOS or Linux to generate the iOS project.\\n`\n );\n return platforms.filter((platform) => platform !== 'ios');\n }\n return platforms;\n}\n\n/** Asserts platform length must be greater than zero. */\nexport function assertPlatforms(platforms: ModPlatform[]) {\n if (!platforms?.length) {\n throw new CommandError('At least one platform must be enabled when syncing');\n }\n}\n"],"names":["resolvePackageManagerOptions","resolveTemplateOption","resolveSkipDependencyUpdate","resolvePlatformOption","ensureValidPlatforms","assertPlatforms","Log","args","managers","npm","yarn","pnpm","filter","Boolean","length","CommandError","template","validateUrl","templatePath","path","resolve","assert","fs","existsSync","statSync","isFile","value","split","platform","loose","process","platforms","includes","warn","chalk"],"mappings":"AAAA;;;;QAUgBA,4BAA4B,GAA5BA,4BAA4B;QAoB5BC,qBAAqB,GAArBA,qBAAqB;QAerBC,2BAA2B,GAA3BA,2BAA2B;QAQ3BC,qBAAqB,GAArBA,qBAAqB;QAiBrBC,oBAAoB,GAApBA,oBAAoB;QAYpBC,eAAe,GAAfA,eAAe;AAjFZ,IAAA,OAAQ,kCAAR,QAAQ,EAAA;AACT,IAAA,MAAO,kCAAP,OAAO,EAAA;AACV,IAAA,GAAI,kCAAJ,IAAI,EAAA;AACF,IAAA,KAAM,kCAAN,MAAM,EAAA;AAEXC,IAAAA,GAAG,mCAAM,QAAQ,EAAd;AACc,IAAA,OAAiB,WAAjB,iBAAiB,CAAA;AAClB,IAAA,IAAc,WAAd,cAAc,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEnC,SAASN,4BAA4B,CAACO,IAAS,EAAE;IACtD,MAAMC,QAAQ,GAA4B;QACxCC,GAAG,EAAEF,IAAI,CAAC,OAAO,CAAC;QAClBG,IAAI,EAAEH,IAAI,CAAC,QAAQ,CAAC;QACpBI,IAAI,EAAEJ,IAAI,CAAC,QAAQ,CAAC;KACrB,AAAC;IAEF,IACE;QAACC,QAAQ,CAACC,GAAG;QAAED,QAAQ,CAACG,IAAI;QAAEH,QAAQ,CAACE,IAAI;QAAE,CAAC,CAACH,IAAI,CAAC,cAAc,CAAC;KAAC,CAACK,MAAM,CAACC,OAAO,CAAC,CAACC,MAAM,GAAG,CAAC,EAC/F;QACA,MAAM,IAAIC,OAAY,aAAA,CACpB,UAAU,EACV,6DAA6D,CAC9D,CAAC;KACH;IAED,OAAOP,QAAQ,CAAC;CACjB;AAGM,SAASP,qBAAqB,CAACe,QAAgB,EAAE;IACtD,IAAIC,CAAAA,GAAAA,IAAW,AAAU,CAAA,YAAV,CAACD,QAAQ,CAAC,EAAE;QACzB,OAAOA,QAAQ,CAAC;KACjB;IACD,MAAME,YAAY,GAAGC,KAAI,QAAA,CAACC,OAAO,CAACJ,QAAQ,CAAC,AAAC;IAC5CK,CAAAA,GAAAA,OAAM,AAA8E,CAAA,QAA9E,CAACC,GAAE,QAAA,CAACC,UAAU,CAACL,YAAY,CAAC,EAAE,gCAAgC,GAAGA,YAAY,CAAC,CAAC;IACrFG,CAAAA,GAAAA,OAAM,AAGL,CAAA,QAHK,CACJC,GAAE,QAAA,CAACE,QAAQ,CAACN,YAAY,CAAC,CAACO,MAAM,EAAE,EAClC,0EAA0E,GAAGP,YAAY,CAC1F,CAAC;IAEF,OAAOA,YAAY,CAAC;CACrB;AAGM,SAAShB,2BAA2B,CAACwB,KAAU,EAAE;IACtD,IAAI,CAACA,KAAK,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;QACvC,OAAO,EAAE,CAAC;KACX;IACD,OAAOA,KAAK,CAACC,KAAK,CAAC,GAAG,CAAC,CAAC;CACzB;AAGM,SAASxB,qBAAqB,CACnCyB,QAAgB,GAAG,KAAK,EACxB,EAAEC,KAAK,CAAA,EAAuB,GAAG,EAAE,EACpB;IACf,OAAQD,QAAQ;QACd,KAAK,KAAK;YACR,OAAO;gBAAC,KAAK;aAAC,CAAC;QACjB,KAAK,SAAS;YACZ,OAAO;gBAAC,SAAS;aAAC,CAAC;QACrB,KAAK,KAAK;YACR,OAAOC,KAAK,IAAIC,OAAO,CAACF,QAAQ,KAAK,OAAO,GAAG;gBAAC,SAAS;gBAAE,KAAK;aAAC,GAAG;gBAAC,SAAS;aAAC,CAAC;QAClF;YACE,OAAO;gBAACA,QAAQ;aAAgB,CAAC;KACpC;CACF;AAGM,SAASxB,oBAAoB,CAAC2B,SAAwB,EAAiB;IAC5E,mCAAmC;IACnC,IAAID,OAAO,CAACF,QAAQ,KAAK,OAAO,IAAIG,SAAS,CAACC,QAAQ,CAAC,KAAK,CAAC,EAAE;QAC7D1B,GAAG,CAAC2B,IAAI,CACNC,MAAK,QAAA,CAAC,wIAAoI,CAAC,CAC5I,CAAC;QACF,OAAOH,SAAS,CAACnB,MAAM,CAAC,CAACgB,QAAQ,GAAKA,QAAQ,KAAK,KAAK;QAAA,CAAC,CAAC;KAC3D;IACD,OAAOG,SAAS,CAAC;CAClB;AAGM,SAAS1B,eAAe,CAAC0B,SAAwB,EAAE;IACxD,IAAI,CAACA,CAAAA,SAAS,QAAQ,GAAjBA,KAAAA,CAAiB,GAAjBA,SAAS,CAAEjB,MAAM,CAAA,EAAE;QACtB,MAAM,IAAIC,OAAY,aAAA,CAAC,oDAAoD,CAAC,CAAC;KAC9E;CACF"}
1
+ {"version":3,"sources":["../../../src/prebuild/resolveOptions.ts"],"sourcesContent":["import { ModPlatform } from '@expo/config-plugins';\nimport assert from 'assert';\nimport chalk from 'chalk';\nimport fs from 'fs';\nimport path from 'path';\n\nimport * as Log from '../log';\nimport { CommandError } from '../utils/errors';\nimport { validateUrl } from '../utils/url';\n\nexport function resolvePackageManagerOptions(args: any) {\n const managers: Record<string, boolean> = {\n npm: args['--npm'],\n yarn: args['--yarn'],\n pnpm: args['--pnpm'],\n bun: args['--bun'],\n };\n\n if (\n [managers.npm, managers.pnpm, managers.yarn, managers.bun, !!args['--no-install']].filter(\n Boolean\n ).length > 1\n ) {\n throw new CommandError(\n 'BAD_ARGS',\n 'Specify at most one of: --no-install, --npm, --pnpm, --yarn, --bun'\n );\n }\n\n return managers;\n}\n\n/** Resolves a template option as a URL or file path pointing to a tar file. */\nexport function resolveTemplateOption(template: string) {\n if (validateUrl(template)) {\n return template;\n }\n const templatePath = path.resolve(template);\n assert(fs.existsSync(templatePath), 'template file does not exist: ' + templatePath);\n assert(\n fs.statSync(templatePath).isFile(),\n 'template must be a tar file created by running `npm pack` in a project: ' + templatePath\n );\n\n return templatePath;\n}\n\n/** Resolves dependencies to skip from a string joined by `,`. Example: `react-native,expo,lodash` */\nexport function resolveSkipDependencyUpdate(value: any) {\n if (!value || typeof value !== 'string') {\n return [];\n }\n return value.split(',');\n}\n\n/** Returns an array of platforms based on the input platform identifier and runtime constraints. */\nexport function resolvePlatformOption(\n platform: string = 'all',\n { loose }: { loose?: boolean } = {}\n): ModPlatform[] {\n switch (platform) {\n case 'ios':\n return ['ios'];\n case 'android':\n return ['android'];\n case 'all':\n return loose || process.platform !== 'win32' ? ['android', 'ios'] : ['android'];\n default:\n return [platform as ModPlatform];\n }\n}\n\n/** Warns and filters out unsupported platforms based on the runtime constraints. Essentially this means no iOS on Windows devices. */\nexport function ensureValidPlatforms(platforms: ModPlatform[]): ModPlatform[] {\n // Skip ejecting for iOS on Windows\n if (process.platform === 'win32' && platforms.includes('ios')) {\n Log.warn(\n chalk`⚠️ Skipping generating the iOS native project files. Run {bold expo eject} again from macOS or Linux to generate the iOS project.\\n`\n );\n return platforms.filter((platform) => platform !== 'ios');\n }\n return platforms;\n}\n\n/** Asserts platform length must be greater than zero. */\nexport function assertPlatforms(platforms: ModPlatform[]) {\n if (!platforms?.length) {\n throw new CommandError('At least one platform must be enabled when syncing');\n }\n}\n"],"names":["resolvePackageManagerOptions","resolveTemplateOption","resolveSkipDependencyUpdate","resolvePlatformOption","ensureValidPlatforms","assertPlatforms","Log","args","managers","npm","yarn","pnpm","bun","filter","Boolean","length","CommandError","template","validateUrl","templatePath","path","resolve","assert","fs","existsSync","statSync","isFile","value","split","platform","loose","process","platforms","includes","warn","chalk"],"mappings":"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"}
@@ -4,14 +4,14 @@ Object.defineProperty(exports, "__esModule", {
4
4
  });
5
5
  exports.updateFromTemplateAsync = updateFromTemplateAsync;
6
6
  var _chalk = _interopRequireDefault(require("chalk"));
7
- var Log = _interopRequireWildcard(require("../log"));
8
- var _errors = require("../utils/errors");
9
- var _ora = require("../utils/ora");
10
- var _profile = require("../utils/profile");
11
7
  var _copyTemplateFiles = require("./copyTemplateFiles");
12
8
  var _resolveTemplate = require("./resolveTemplate");
13
9
  var _updatePackageJson = require("./updatePackageJson");
14
10
  var _validateTemplatePlatforms = require("./validateTemplatePlatforms");
11
+ var Log = _interopRequireWildcard(require("../log"));
12
+ var _errors = require("../utils/errors");
13
+ var _ora = require("../utils/ora");
14
+ var _profile = require("../utils/profile");
15
15
  function _interopRequireDefault(obj) {
16
16
  return obj && obj.__esModule ? obj : {
17
17
  default: obj
@@ -69,7 +69,10 @@ async function updateFromTemplateAsync(projectRoot, { exp , pkg , template , tem
69
69
  *
70
70
  * @return `true` if any project files were created.
71
71
  */ async function cloneTemplateAndCopyToProjectAsync({ projectRoot , templateDirectory , template , exp , platforms: unknownPlatforms }) {
72
- const ora = (0, _ora).logNewSection("Creating native project directories (./ios and ./android) and updating .gitignore");
72
+ const platformDirectories = unknownPlatforms.map((platform)=>`./${platform}`
73
+ ).reverse().join(" and ");
74
+ const pluralized = unknownPlatforms.length > 1 ? "directories" : "directory";
75
+ const ora = (0, _ora).logNewSection(`Creating native project ${pluralized} (${platformDirectories}) and updating .gitignore`);
73
76
  try {
74
77
  await (0, _resolveTemplate).cloneTemplateAsync({
75
78
  templateDirectory,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/prebuild/updateFromTemplate.ts"],"sourcesContent":["import { ExpoConfig, PackageJSONConfig } from '@expo/config';\nimport { ModPlatform } from '@expo/config-plugins';\nimport chalk from 'chalk';\n\nimport * as Log from '../log';\nimport { AbortCommandError, SilentError } from '../utils/errors';\nimport { logNewSection } from '../utils/ora';\nimport { profile } from '../utils/profile';\nimport { copyTemplateFilesAsync, createCopyFilesSuccessMessage } from './copyTemplateFiles';\nimport { cloneTemplateAsync } from './resolveTemplate';\nimport { DependenciesModificationResults, updatePackageJSONAsync } from './updatePackageJson';\nimport { validateTemplatePlatforms } from './validateTemplatePlatforms';\n\n/**\n * Creates local native files from an input template file path.\n *\n * @return `true` if the project is ejecting, and `false` if it's syncing.\n */\nexport async function updateFromTemplateAsync(\n projectRoot: string,\n {\n exp,\n pkg,\n template,\n templateDirectory,\n platforms,\n skipDependencyUpdate,\n }: {\n /** Expo Config */\n exp: ExpoConfig;\n /** package.json as JSON */\n pkg: PackageJSONConfig;\n /** Template reference ID. */\n template?: string;\n /** Directory to write the template to before copying into the project. */\n templateDirectory?: string;\n /** List of platforms to clone. */\n platforms: ModPlatform[];\n /** List of dependencies to skip updating. */\n skipDependencyUpdate?: string[];\n }\n): Promise<\n {\n /** Indicates if new files were created in the project. */\n hasNewProjectFiles: boolean;\n /** Indicates that the project needs to run `pod install` */\n needsPodInstall: boolean;\n } & DependenciesModificationResults\n> {\n if (!templateDirectory) {\n const temporary = await import('tempy');\n templateDirectory = temporary.directory();\n }\n\n const copiedPaths = await profile(cloneTemplateAndCopyToProjectAsync)({\n projectRoot,\n template,\n templateDirectory,\n exp,\n platforms,\n });\n\n const depsResults = await profile(updatePackageJSONAsync)(projectRoot, {\n templateDirectory,\n pkg,\n skipDependencyUpdate,\n });\n\n return {\n hasNewProjectFiles: !!copiedPaths.length,\n // If the iOS folder changes or new packages are added, we should rerun pod install.\n needsPodInstall:\n copiedPaths.includes('ios') ||\n depsResults.hasNewDependencies ||\n depsResults.hasNewDevDependencies,\n ...depsResults,\n };\n}\n\n/**\n * Extract the template and copy the ios and android directories over to the project directory.\n *\n * @return `true` if any project files were created.\n */\nasync function cloneTemplateAndCopyToProjectAsync({\n projectRoot,\n templateDirectory,\n template,\n exp,\n platforms: unknownPlatforms,\n}: {\n projectRoot: string;\n templateDirectory: string;\n template?: string;\n exp: Pick<ExpoConfig, 'name' | 'sdkVersion'>;\n platforms: ModPlatform[];\n}): Promise<string[]> {\n const ora = logNewSection(\n 'Creating native project directories (./ios and ./android) and updating .gitignore'\n );\n\n try {\n await cloneTemplateAsync({ templateDirectory, template, exp, ora });\n\n const platforms = await validateTemplatePlatforms({\n templateDirectory,\n platforms: unknownPlatforms,\n });\n\n const results = await copyTemplateFilesAsync(projectRoot, {\n templateDirectory,\n platforms,\n });\n\n ora.succeed(createCopyFilesSuccessMessage(platforms, results));\n\n return results.copiedPaths;\n } catch (e: any) {\n if (!(e instanceof AbortCommandError)) {\n Log.error(e.message);\n }\n ora.fail('Failed to create the native project.');\n Log.log(\n chalk.yellow(\n 'You may want to delete the `./ios` and/or `./android` directories before trying again.'\n )\n );\n throw new SilentError(e);\n }\n}\n"],"names":["updateFromTemplateAsync","Log","projectRoot","exp","pkg","template","templateDirectory","platforms","skipDependencyUpdate","temporary","directory","copiedPaths","profile","cloneTemplateAndCopyToProjectAsync","depsResults","updatePackageJSONAsync","hasNewProjectFiles","length","needsPodInstall","includes","hasNewDependencies","hasNewDevDependencies","unknownPlatforms","ora","logNewSection","cloneTemplateAsync","validateTemplatePlatforms","results","copyTemplateFilesAsync","succeed","createCopyFilesSuccessMessage","e","AbortCommandError","error","message","fail","log","chalk","yellow","SilentError"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/prebuild/updateFromTemplate.ts"],"sourcesContent":["import { ExpoConfig, PackageJSONConfig } from '@expo/config';\nimport { ModPlatform } from '@expo/config-plugins';\nimport chalk from 'chalk';\n\nimport { copyTemplateFilesAsync, createCopyFilesSuccessMessage } from './copyTemplateFiles';\nimport { cloneTemplateAsync } from './resolveTemplate';\nimport { DependenciesModificationResults, updatePackageJSONAsync } from './updatePackageJson';\nimport { validateTemplatePlatforms } from './validateTemplatePlatforms';\nimport * as Log from '../log';\nimport { AbortCommandError, SilentError } from '../utils/errors';\nimport { logNewSection } from '../utils/ora';\nimport { profile } from '../utils/profile';\n\n/**\n * Creates local native files from an input template file path.\n *\n * @return `true` if the project is ejecting, and `false` if it's syncing.\n */\nexport async function updateFromTemplateAsync(\n projectRoot: string,\n {\n exp,\n pkg,\n template,\n templateDirectory,\n platforms,\n skipDependencyUpdate,\n }: {\n /** Expo Config */\n exp: ExpoConfig;\n /** package.json as JSON */\n pkg: PackageJSONConfig;\n /** Template reference ID. */\n template?: string;\n /** Directory to write the template to before copying into the project. */\n templateDirectory?: string;\n /** List of platforms to clone. */\n platforms: ModPlatform[];\n /** List of dependencies to skip updating. */\n skipDependencyUpdate?: string[];\n }\n): Promise<\n {\n /** Indicates if new files were created in the project. */\n hasNewProjectFiles: boolean;\n /** Indicates that the project needs to run `pod install` */\n needsPodInstall: boolean;\n } & DependenciesModificationResults\n> {\n if (!templateDirectory) {\n const temporary = await import('tempy');\n templateDirectory = temporary.directory();\n }\n\n const copiedPaths = await profile(cloneTemplateAndCopyToProjectAsync)({\n projectRoot,\n template,\n templateDirectory,\n exp,\n platforms,\n });\n\n const depsResults = await profile(updatePackageJSONAsync)(projectRoot, {\n templateDirectory,\n pkg,\n skipDependencyUpdate,\n });\n\n return {\n hasNewProjectFiles: !!copiedPaths.length,\n // If the iOS folder changes or new packages are added, we should rerun pod install.\n needsPodInstall:\n copiedPaths.includes('ios') ||\n depsResults.hasNewDependencies ||\n depsResults.hasNewDevDependencies,\n ...depsResults,\n };\n}\n\n/**\n * Extract the template and copy the ios and android directories over to the project directory.\n *\n * @return `true` if any project files were created.\n */\nasync function cloneTemplateAndCopyToProjectAsync({\n projectRoot,\n templateDirectory,\n template,\n exp,\n platforms: unknownPlatforms,\n}: {\n projectRoot: string;\n templateDirectory: string;\n template?: string;\n exp: Pick<ExpoConfig, 'name' | 'sdkVersion'>;\n platforms: ModPlatform[];\n}): Promise<string[]> {\n const platformDirectories = unknownPlatforms\n .map((platform) => `./${platform}`)\n .reverse()\n .join(' and ');\n\n const pluralized = unknownPlatforms.length > 1 ? 'directories' : 'directory';\n const ora = logNewSection(\n `Creating native project ${pluralized} (${platformDirectories}) and updating .gitignore`\n );\n\n try {\n await cloneTemplateAsync({ templateDirectory, template, exp, ora });\n\n const platforms = await validateTemplatePlatforms({\n templateDirectory,\n platforms: unknownPlatforms,\n });\n\n const results = await copyTemplateFilesAsync(projectRoot, {\n templateDirectory,\n platforms,\n });\n\n ora.succeed(createCopyFilesSuccessMessage(platforms, results));\n\n return results.copiedPaths;\n } catch (e: any) {\n if (!(e instanceof AbortCommandError)) {\n Log.error(e.message);\n }\n ora.fail('Failed to create the native project.');\n Log.log(\n chalk.yellow(\n 'You may want to delete the `./ios` and/or `./android` directories before trying again.'\n )\n );\n throw new SilentError(e);\n }\n}\n"],"names":["updateFromTemplateAsync","Log","projectRoot","exp","pkg","template","templateDirectory","platforms","skipDependencyUpdate","temporary","directory","copiedPaths","profile","cloneTemplateAndCopyToProjectAsync","depsResults","updatePackageJSONAsync","hasNewProjectFiles","length","needsPodInstall","includes","hasNewDependencies","hasNewDevDependencies","unknownPlatforms","platformDirectories","map","platform","reverse","join","pluralized","ora","logNewSection","cloneTemplateAsync","validateTemplatePlatforms","results","copyTemplateFilesAsync","succeed","createCopyFilesSuccessMessage","e","AbortCommandError","error","message","fail","log","chalk","yellow","SilentError"],"mappings":"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"}
@@ -25,7 +25,6 @@ async function registerAsync() {
25
25
  } else {
26
26
  spinner.fail(failedMessage);
27
27
  }
28
- return;
29
28
  } catch (error) {
30
29
  spinner.fail(failedMessage);
31
30
  throw error;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/register/registerAsync.ts"],"sourcesContent":["import { env } from '../utils/env';\nimport { CommandError } from '../utils/errors';\nimport { isInteractive } from '../utils/interactive';\nimport { learnMore } from '../utils/link';\nimport { openBrowserAsync } from '../utils/open';\nimport { ora } from '../utils/ora';\n\nexport async function registerAsync() {\n if (!isInteractive()) {\n throw new CommandError(\n 'NON_INTERACTIVE',\n `Cannot register an account in CI. Use the EXPO_TOKEN environment variable to authenticate in CI (${learnMore(\n 'https://docs.expo.dev/accounts/programmatic-access/'\n )})`\n );\n } else if (env.EXPO_OFFLINE) {\n throw new CommandError('OFFLINE', `Cannot register an account in offline-mode`);\n }\n\n const registrationUrl = `https://expo.dev/signup`;\n const failedMessage = `Unable to open a web browser. Register an account at: ${registrationUrl}`;\n const spinner = ora(`Opening ${registrationUrl}`).start();\n try {\n const opened = await openBrowserAsync(registrationUrl);\n\n if (opened) {\n spinner.succeed(`Opened ${registrationUrl}`);\n } else {\n spinner.fail(failedMessage);\n }\n return;\n } catch (error) {\n spinner.fail(failedMessage);\n throw error;\n }\n}\n"],"names":["registerAsync","isInteractive","CommandError","learnMore","env","EXPO_OFFLINE","registrationUrl","failedMessage","spinner","ora","start","opened","openBrowserAsync","succeed","fail","error"],"mappings":"AAAA;;;;QAOsBA,aAAa,GAAbA,aAAa;AAPf,IAAA,IAAc,WAAd,cAAc,CAAA;AACL,IAAA,OAAiB,WAAjB,iBAAiB,CAAA;AAChB,IAAA,YAAsB,WAAtB,sBAAsB,CAAA;AAC1B,IAAA,KAAe,WAAf,eAAe,CAAA;AACR,IAAA,KAAe,WAAf,eAAe,CAAA;AAC5B,IAAA,IAAc,WAAd,cAAc,CAAA;AAE3B,eAAeA,aAAa,GAAG;IACpC,IAAI,CAACC,CAAAA,GAAAA,YAAa,AAAE,CAAA,cAAF,EAAE,EAAE;QACpB,MAAM,IAAIC,OAAY,aAAA,CACpB,iBAAiB,EACjB,CAAC,iGAAiG,EAAEC,CAAAA,GAAAA,KAAS,AAE5G,CAAA,UAF4G,CAC3G,qDAAqD,CACtD,CAAC,CAAC,CAAC,CACL,CAAC;KACH,MAAM,IAAIC,IAAG,IAAA,CAACC,YAAY,EAAE;QAC3B,MAAM,IAAIH,OAAY,aAAA,CAAC,SAAS,EAAE,CAAC,0CAA0C,CAAC,CAAC,CAAC;KACjF;IAED,MAAMI,eAAe,GAAG,CAAC,uBAAuB,CAAC,AAAC;IAClD,MAAMC,aAAa,GAAG,CAAC,sDAAsD,EAAED,eAAe,CAAC,CAAC,AAAC;IACjG,MAAME,OAAO,GAAGC,CAAAA,GAAAA,IAAG,AAA8B,CAAA,IAA9B,CAAC,CAAC,QAAQ,EAAEH,eAAe,CAAC,CAAC,CAAC,CAACI,KAAK,EAAE,AAAC;IAC1D,IAAI;QACF,MAAMC,MAAM,GAAG,MAAMC,CAAAA,GAAAA,KAAgB,AAAiB,CAAA,iBAAjB,CAACN,eAAe,CAAC,AAAC;QAEvD,IAAIK,MAAM,EAAE;YACVH,OAAO,CAACK,OAAO,CAAC,CAAC,OAAO,EAAEP,eAAe,CAAC,CAAC,CAAC,CAAC;SAC9C,MAAM;YACLE,OAAO,CAACM,IAAI,CAACP,aAAa,CAAC,CAAC;SAC7B;QACD,OAAO;KACR,CAAC,OAAOQ,KAAK,EAAE;QACdP,OAAO,CAACM,IAAI,CAACP,aAAa,CAAC,CAAC;QAC5B,MAAMQ,KAAK,CAAC;KACb;CACF"}
1
+ {"version":3,"sources":["../../../src/register/registerAsync.ts"],"sourcesContent":["import { env } from '../utils/env';\nimport { CommandError } from '../utils/errors';\nimport { isInteractive } from '../utils/interactive';\nimport { learnMore } from '../utils/link';\nimport { openBrowserAsync } from '../utils/open';\nimport { ora } from '../utils/ora';\n\nexport async function registerAsync() {\n if (!isInteractive()) {\n throw new CommandError(\n 'NON_INTERACTIVE',\n `Cannot register an account in CI. Use the EXPO_TOKEN environment variable to authenticate in CI (${learnMore(\n 'https://docs.expo.dev/accounts/programmatic-access/'\n )})`\n );\n } else if (env.EXPO_OFFLINE) {\n throw new CommandError('OFFLINE', `Cannot register an account in offline-mode`);\n }\n\n const registrationUrl = `https://expo.dev/signup`;\n const failedMessage = `Unable to open a web browser. Register an account at: ${registrationUrl}`;\n const spinner = ora(`Opening ${registrationUrl}`).start();\n try {\n const opened = await openBrowserAsync(registrationUrl);\n\n if (opened) {\n spinner.succeed(`Opened ${registrationUrl}`);\n } else {\n spinner.fail(failedMessage);\n }\n } catch (error) {\n spinner.fail(failedMessage);\n throw error;\n }\n}\n"],"names":["registerAsync","isInteractive","CommandError","learnMore","env","EXPO_OFFLINE","registrationUrl","failedMessage","spinner","ora","start","opened","openBrowserAsync","succeed","fail","error"],"mappings":"AAAA;;;;QAOsBA,aAAa,GAAbA,aAAa;AAPf,IAAA,IAAc,WAAd,cAAc,CAAA;AACL,IAAA,OAAiB,WAAjB,iBAAiB,CAAA;AAChB,IAAA,YAAsB,WAAtB,sBAAsB,CAAA;AAC1B,IAAA,KAAe,WAAf,eAAe,CAAA;AACR,IAAA,KAAe,WAAf,eAAe,CAAA;AAC5B,IAAA,IAAc,WAAd,cAAc,CAAA;AAE3B,eAAeA,aAAa,GAAG;IACpC,IAAI,CAACC,CAAAA,GAAAA,YAAa,AAAE,CAAA,cAAF,EAAE,EAAE;QACpB,MAAM,IAAIC,OAAY,aAAA,CACpB,iBAAiB,EACjB,CAAC,iGAAiG,EAAEC,CAAAA,GAAAA,KAAS,AAE5G,CAAA,UAF4G,CAC3G,qDAAqD,CACtD,CAAC,CAAC,CAAC,CACL,CAAC;KACH,MAAM,IAAIC,IAAG,IAAA,CAACC,YAAY,EAAE;QAC3B,MAAM,IAAIH,OAAY,aAAA,CAAC,SAAS,EAAE,CAAC,0CAA0C,CAAC,CAAC,CAAC;KACjF;IAED,MAAMI,eAAe,GAAG,CAAC,uBAAuB,CAAC,AAAC;IAClD,MAAMC,aAAa,GAAG,CAAC,sDAAsD,EAAED,eAAe,CAAC,CAAC,AAAC;IACjG,MAAME,OAAO,GAAGC,CAAAA,GAAAA,IAAG,AAA8B,CAAA,IAA9B,CAAC,CAAC,QAAQ,EAAEH,eAAe,CAAC,CAAC,CAAC,CAACI,KAAK,EAAE,AAAC;IAC1D,IAAI;QACF,MAAMC,MAAM,GAAG,MAAMC,CAAAA,GAAAA,KAAgB,AAAiB,CAAA,iBAAjB,CAACN,eAAe,CAAC,AAAC;QAEvD,IAAIK,MAAM,EAAE;YACVH,OAAO,CAACK,OAAO,CAAC,CAAC,OAAO,EAAEP,eAAe,CAAC,CAAC,CAAC,CAAC;SAC9C,MAAM;YACLE,OAAO,CAACM,IAAI,CAACP,aAAa,CAAC,CAAC;SAC7B;KACF,CAAC,OAAOQ,KAAK,EAAE;QACdP,OAAO,CAACM,IAAI,CAACP,aAAa,CAAC,CAAC;QAC5B,MAAMQ,KAAK,CAAC;KACb;CACF"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/run/android/resolveInstallApkName.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\n\nimport { Device, DeviceABI, getDeviceABIsAsync } from '../../start/platforms/android/adb';\nimport { GradleProps } from './resolveGradleProps';\n\nconst debug = require('debug')('expo:run:android:resolveInstallApkName') as typeof console.log;\n\nexport async function resolveInstallApkNameAsync(\n device: Pick<Device, 'name' | 'pid'>,\n { appName, buildType, flavors, apkVariantDirectory }: GradleProps\n) {\n const availableCPUs = await getDeviceABIsAsync(device);\n availableCPUs.push(DeviceABI.universal);\n\n debug('Supported ABIs: ' + availableCPUs.join(', '));\n debug('Searching for APK: ' + apkVariantDirectory);\n\n // Check for cpu specific builds first\n for (const availableCPU of availableCPUs) {\n const apkName = getApkFileName(appName, buildType, flavors, availableCPU);\n const apkPath = path.join(apkVariantDirectory, apkName);\n debug('Checking for APK at:', apkPath);\n if (fs.existsSync(apkPath)) {\n return apkName;\n }\n }\n\n // Otherwise use the default apk named after the variant: app-debug.apk\n const apkName = getApkFileName(appName, buildType, flavors);\n const apkPath = path.join(apkVariantDirectory, apkName);\n debug('Checking for fallback APK at:', apkPath);\n if (fs.existsSync(apkPath)) {\n return apkName;\n }\n\n return null;\n}\n\nfunction getApkFileName(\n appName: string,\n buildType: string,\n flavors?: string[] | null,\n cpuArch?: string | null\n) {\n let apkName = `${appName}-`;\n if (flavors) {\n apkName += flavors.reduce((rest, flavor) => `${rest}${flavor}-`, '');\n }\n if (cpuArch) {\n apkName += `${cpuArch}-`;\n }\n apkName += `${buildType}.apk`;\n\n return apkName;\n}\n"],"names":["resolveInstallApkNameAsync","debug","require","device","appName","buildType","flavors","apkVariantDirectory","availableCPUs","getDeviceABIsAsync","push","DeviceABI","universal","join","availableCPU","apkName","getApkFileName","apkPath","path","fs","existsSync","cpuArch","reduce","rest","flavor"],"mappings":"AAAA;;;;QAQsBA,0BAA0B,GAA1BA,0BAA0B;AARjC,IAAA,GAAI,kCAAJ,IAAI,EAAA;AACF,IAAA,KAAM,kCAAN,MAAM,EAAA;AAE+B,IAAA,IAAmC,WAAnC,mCAAmC,CAAA;;;;;;AAGzF,MAAMC,KAAK,GAAGC,OAAO,CAAC,OAAO,CAAC,CAAC,wCAAwC,CAAC,AAAsB,AAAC;AAExF,eAAeF,0BAA0B,CAC9CG,MAAoC,EACpC,EAAEC,OAAO,CAAA,EAAEC,SAAS,CAAA,EAAEC,OAAO,CAAA,EAAEC,mBAAmB,CAAA,EAAe,EACjE;IACA,MAAMC,aAAa,GAAG,MAAMC,CAAAA,GAAAA,IAAkB,AAAQ,CAAA,mBAAR,CAACN,MAAM,CAAC,AAAC;IACvDK,aAAa,CAACE,IAAI,CAACC,IAAS,UAAA,CAACC,SAAS,CAAC,CAAC;IAExCX,KAAK,CAAC,kBAAkB,GAAGO,aAAa,CAACK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACrDZ,KAAK,CAAC,qBAAqB,GAAGM,mBAAmB,CAAC,CAAC;IAEnD,sCAAsC;IACtC,KAAK,MAAMO,YAAY,IAAIN,aAAa,CAAE;QACxC,MAAMO,OAAO,GAAGC,cAAc,CAACZ,OAAO,EAAEC,SAAS,EAAEC,OAAO,EAAEQ,YAAY,CAAC,AAAC;QAC1E,MAAMG,OAAO,GAAGC,KAAI,QAAA,CAACL,IAAI,CAACN,mBAAmB,EAAEQ,OAAO,CAAC,AAAC;QACxDd,KAAK,CAAC,sBAAsB,EAAEgB,OAAO,CAAC,CAAC;QACvC,IAAIE,GAAE,QAAA,CAACC,UAAU,CAACH,OAAO,CAAC,EAAE;YAC1B,OAAOF,OAAO,CAAC;SAChB;KACF;IAED,uEAAuE;IACvE,MAAMA,OAAO,GAAGC,cAAc,CAACZ,OAAO,EAAEC,SAAS,EAAEC,OAAO,CAAC,AAAC;IAC5D,MAAMW,OAAO,GAAGC,KAAI,QAAA,CAACL,IAAI,CAACN,mBAAmB,EAAEQ,OAAO,CAAC,AAAC;IACxDd,KAAK,CAAC,+BAA+B,EAAEgB,OAAO,CAAC,CAAC;IAChD,IAAIE,GAAE,QAAA,CAACC,UAAU,CAACH,OAAO,CAAC,EAAE;QAC1B,OAAOF,OAAO,CAAC;KAChB;IAED,OAAO,IAAI,CAAC;CACb;AAED,SAASC,cAAc,CACrBZ,OAAe,EACfC,SAAiB,EACjBC,OAAyB,EACzBe,OAAuB,EACvB;IACA,IAAIN,OAAO,GAAG,CAAC,EAAEX,OAAO,CAAC,CAAC,CAAC,AAAC;IAC5B,IAAIE,OAAO,EAAE;QACXS,OAAO,IAAIT,OAAO,CAACgB,MAAM,CAAC,CAACC,IAAI,EAAEC,MAAM,GAAK,CAAC,EAAED,IAAI,CAAC,EAAEC,MAAM,CAAC,CAAC,CAAC;QAAA,EAAE,EAAE,CAAC,CAAC;KACtE;IACD,IAAIH,OAAO,EAAE;QACXN,OAAO,IAAI,CAAC,EAAEM,OAAO,CAAC,CAAC,CAAC,CAAC;KAC1B;IACDN,OAAO,IAAI,CAAC,EAAEV,SAAS,CAAC,IAAI,CAAC,CAAC;IAE9B,OAAOU,OAAO,CAAC;CAChB"}
1
+ {"version":3,"sources":["../../../../src/run/android/resolveInstallApkName.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\n\nimport { GradleProps } from './resolveGradleProps';\nimport { Device, DeviceABI, getDeviceABIsAsync } from '../../start/platforms/android/adb';\n\nconst debug = require('debug')('expo:run:android:resolveInstallApkName') as typeof console.log;\n\nexport async function resolveInstallApkNameAsync(\n device: Pick<Device, 'name' | 'pid'>,\n { appName, buildType, flavors, apkVariantDirectory }: GradleProps\n) {\n const availableCPUs = await getDeviceABIsAsync(device);\n availableCPUs.push(DeviceABI.universal);\n\n debug('Supported ABIs: ' + availableCPUs.join(', '));\n debug('Searching for APK: ' + apkVariantDirectory);\n\n // Check for cpu specific builds first\n for (const availableCPU of availableCPUs) {\n const apkName = getApkFileName(appName, buildType, flavors, availableCPU);\n const apkPath = path.join(apkVariantDirectory, apkName);\n debug('Checking for APK at:', apkPath);\n if (fs.existsSync(apkPath)) {\n return apkName;\n }\n }\n\n // Otherwise use the default apk named after the variant: app-debug.apk\n const apkName = getApkFileName(appName, buildType, flavors);\n const apkPath = path.join(apkVariantDirectory, apkName);\n debug('Checking for fallback APK at:', apkPath);\n if (fs.existsSync(apkPath)) {\n return apkName;\n }\n\n return null;\n}\n\nfunction getApkFileName(\n appName: string,\n buildType: string,\n flavors?: string[] | null,\n cpuArch?: string | null\n) {\n let apkName = `${appName}-`;\n if (flavors) {\n apkName += flavors.reduce((rest, flavor) => `${rest}${flavor}-`, '');\n }\n if (cpuArch) {\n apkName += `${cpuArch}-`;\n }\n apkName += `${buildType}.apk`;\n\n return apkName;\n}\n"],"names":["resolveInstallApkNameAsync","debug","require","device","appName","buildType","flavors","apkVariantDirectory","availableCPUs","getDeviceABIsAsync","push","DeviceABI","universal","join","availableCPU","apkName","getApkFileName","apkPath","path","fs","existsSync","cpuArch","reduce","rest","flavor"],"mappings":"AAAA;;;;QAQsBA,0BAA0B,GAA1BA,0BAA0B;AARjC,IAAA,GAAI,kCAAJ,IAAI,EAAA;AACF,IAAA,KAAM,kCAAN,MAAM,EAAA;AAG+B,IAAA,IAAmC,WAAnC,mCAAmC,CAAA;;;;;;AAEzF,MAAMC,KAAK,GAAGC,OAAO,CAAC,OAAO,CAAC,CAAC,wCAAwC,CAAC,AAAsB,AAAC;AAExF,eAAeF,0BAA0B,CAC9CG,MAAoC,EACpC,EAAEC,OAAO,CAAA,EAAEC,SAAS,CAAA,EAAEC,OAAO,CAAA,EAAEC,mBAAmB,CAAA,EAAe,EACjE;IACA,MAAMC,aAAa,GAAG,MAAMC,CAAAA,GAAAA,IAAkB,AAAQ,CAAA,mBAAR,CAACN,MAAM,CAAC,AAAC;IACvDK,aAAa,CAACE,IAAI,CAACC,IAAS,UAAA,CAACC,SAAS,CAAC,CAAC;IAExCX,KAAK,CAAC,kBAAkB,GAAGO,aAAa,CAACK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACrDZ,KAAK,CAAC,qBAAqB,GAAGM,mBAAmB,CAAC,CAAC;IAEnD,sCAAsC;IACtC,KAAK,MAAMO,YAAY,IAAIN,aAAa,CAAE;QACxC,MAAMO,OAAO,GAAGC,cAAc,CAACZ,OAAO,EAAEC,SAAS,EAAEC,OAAO,EAAEQ,YAAY,CAAC,AAAC;QAC1E,MAAMG,OAAO,GAAGC,KAAI,QAAA,CAACL,IAAI,CAACN,mBAAmB,EAAEQ,OAAO,CAAC,AAAC;QACxDd,KAAK,CAAC,sBAAsB,EAAEgB,OAAO,CAAC,CAAC;QACvC,IAAIE,GAAE,QAAA,CAACC,UAAU,CAACH,OAAO,CAAC,EAAE;YAC1B,OAAOF,OAAO,CAAC;SAChB;KACF;IAED,uEAAuE;IACvE,MAAMA,OAAO,GAAGC,cAAc,CAACZ,OAAO,EAAEC,SAAS,EAAEC,OAAO,CAAC,AAAC;IAC5D,MAAMW,OAAO,GAAGC,KAAI,QAAA,CAACL,IAAI,CAACN,mBAAmB,EAAEQ,OAAO,CAAC,AAAC;IACxDd,KAAK,CAAC,+BAA+B,EAAEgB,OAAO,CAAC,CAAC;IAChD,IAAIE,GAAE,QAAA,CAACC,UAAU,CAACH,OAAO,CAAC,EAAE;QAC1B,OAAOF,OAAO,CAAC;KAChB;IAED,OAAO,IAAI,CAAC;CACb;AAED,SAASC,cAAc,CACrBZ,OAAe,EACfC,SAAiB,EACjBC,OAAyB,EACzBe,OAAuB,EACvB;IACA,IAAIN,OAAO,GAAG,CAAC,EAAEX,OAAO,CAAC,CAAC,CAAC,AAAC;IAC5B,IAAIE,OAAO,EAAE;QACXS,OAAO,IAAIT,OAAO,CAACgB,MAAM,CAAC,CAACC,IAAI,EAAEC,MAAM,GAAK,CAAC,EAAED,IAAI,CAAC,EAAEC,MAAM,CAAC,CAAC,CAAC;QAAA,EAAE,EAAE,CAAC,CAAC;KACtE;IACD,IAAIH,OAAO,EAAE;QACXN,OAAO,IAAI,CAAC,EAAEM,OAAO,CAAC,CAAC,CAAC,CAAC;KAC1B;IACDN,OAAO,IAAI,CAAC,EAAEV,SAAS,CAAC,IAAI,CAAC,CAAC;IAE9B,OAAOU,OAAO,CAAC;CAChB"}
@@ -3,10 +3,10 @@ Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
5
  exports.resolveOptionsAsync = resolveOptionsAsync;
6
- var _resolveBundlerProps = require("../resolveBundlerProps");
7
6
  var _resolveDevice = require("./resolveDevice");
8
7
  var _resolveGradleProps = require("./resolveGradleProps");
9
8
  var _resolveLaunchProps = require("./resolveLaunchProps");
9
+ var _resolveBundlerProps = require("../resolveBundlerProps");
10
10
  async function resolveOptionsAsync(projectRoot, options) {
11
11
  var _variant;
12
12
  return {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/run/android/resolveOptions.ts"],"sourcesContent":["import { AndroidDeviceManager } from '../../start/platforms/android/AndroidDeviceManager';\nimport { BundlerProps, resolveBundlerPropsAsync } from '../resolveBundlerProps';\nimport { resolveDeviceAsync } from './resolveDevice';\nimport { GradleProps, resolveGradleProps } from './resolveGradleProps';\nimport { LaunchProps, resolveLaunchPropsAsync } from './resolveLaunchProps';\n\nexport type Options = {\n variant?: string;\n device?: boolean | string;\n port?: number;\n bundler?: boolean;\n install?: boolean;\n buildCache?: boolean;\n};\n\nexport type ResolvedOptions = GradleProps &\n BundlerProps &\n LaunchProps & {\n variant: string;\n buildCache: boolean;\n device: AndroidDeviceManager;\n install: boolean;\n };\n\nexport async function resolveOptionsAsync(\n projectRoot: string,\n options: Options\n): Promise<ResolvedOptions> {\n return {\n ...(await resolveBundlerPropsAsync(projectRoot, options)),\n ...resolveGradleProps(projectRoot, options),\n ...(await resolveLaunchPropsAsync(projectRoot)),\n variant: options.variant ?? 'debug',\n // Resolve the device based on the provided device id or prompt\n // from a list of devices (connected or simulated) that are filtered by the scheme.\n device: await resolveDeviceAsync(options.device),\n buildCache: !!options.buildCache,\n install: !!options.install,\n };\n}\n"],"names":["resolveOptionsAsync","projectRoot","options","resolveBundlerPropsAsync","resolveGradleProps","resolveLaunchPropsAsync","variant","device","resolveDeviceAsync","buildCache","install"],"mappings":"AAAA;;;;QAwBsBA,mBAAmB,GAAnBA,mBAAmB;AAvBc,IAAA,oBAAwB,WAAxB,wBAAwB,CAAA;AAC5C,IAAA,cAAiB,WAAjB,iBAAiB,CAAA;AACJ,IAAA,mBAAsB,WAAtB,sBAAsB,CAAA;AACjB,IAAA,mBAAsB,WAAtB,sBAAsB,CAAA;AAoBpE,eAAeA,mBAAmB,CACvCC,WAAmB,EACnBC,OAAgB,EACU;QAKfA,QAAe;IAJ1B,OAAO;QACL,GAAI,MAAMC,CAAAA,GAAAA,oBAAwB,AAAsB,CAAA,yBAAtB,CAACF,WAAW,EAAEC,OAAO,CAAC;QACxD,GAAGE,CAAAA,GAAAA,mBAAkB,AAAsB,CAAA,mBAAtB,CAACH,WAAW,EAAEC,OAAO,CAAC;QAC3C,GAAI,MAAMG,CAAAA,GAAAA,mBAAuB,AAAa,CAAA,wBAAb,CAACJ,WAAW,CAAC;QAC9CK,OAAO,EAAEJ,CAAAA,QAAe,GAAfA,OAAO,CAACI,OAAO,YAAfJ,QAAe,GAAI,OAAO;QACnC,+DAA+D;QAC/D,mFAAmF;QACnFK,MAAM,EAAE,MAAMC,CAAAA,GAAAA,cAAkB,AAAgB,CAAA,mBAAhB,CAACN,OAAO,CAACK,MAAM,CAAC;QAChDE,UAAU,EAAE,CAAC,CAACP,OAAO,CAACO,UAAU;QAChCC,OAAO,EAAE,CAAC,CAACR,OAAO,CAACQ,OAAO;KAC3B,CAAC;CACH"}
1
+ {"version":3,"sources":["../../../../src/run/android/resolveOptions.ts"],"sourcesContent":["import { resolveDeviceAsync } from './resolveDevice';\nimport { GradleProps, resolveGradleProps } from './resolveGradleProps';\nimport { LaunchProps, resolveLaunchPropsAsync } from './resolveLaunchProps';\nimport { AndroidDeviceManager } from '../../start/platforms/android/AndroidDeviceManager';\nimport { BundlerProps, resolveBundlerPropsAsync } from '../resolveBundlerProps';\n\nexport type Options = {\n variant?: string;\n device?: boolean | string;\n port?: number;\n bundler?: boolean;\n install?: boolean;\n buildCache?: boolean;\n};\n\nexport type ResolvedOptions = GradleProps &\n BundlerProps &\n LaunchProps & {\n variant: string;\n buildCache: boolean;\n device: AndroidDeviceManager;\n install: boolean;\n };\n\nexport async function resolveOptionsAsync(\n projectRoot: string,\n options: Options\n): Promise<ResolvedOptions> {\n return {\n ...(await resolveBundlerPropsAsync(projectRoot, options)),\n ...resolveGradleProps(projectRoot, options),\n ...(await resolveLaunchPropsAsync(projectRoot)),\n variant: options.variant ?? 'debug',\n // Resolve the device based on the provided device id or prompt\n // from a list of devices (connected or simulated) that are filtered by the scheme.\n device: await resolveDeviceAsync(options.device),\n buildCache: !!options.buildCache,\n install: !!options.install,\n };\n}\n"],"names":["resolveOptionsAsync","projectRoot","options","resolveBundlerPropsAsync","resolveGradleProps","resolveLaunchPropsAsync","variant","device","resolveDeviceAsync","buildCache","install"],"mappings":"AAAA;;;;QAwBsBA,mBAAmB,GAAnBA,mBAAmB;AAxBN,IAAA,cAAiB,WAAjB,iBAAiB,CAAA;AACJ,IAAA,mBAAsB,WAAtB,sBAAsB,CAAA;AACjB,IAAA,mBAAsB,WAAtB,sBAAsB,CAAA;AAEpB,IAAA,oBAAwB,WAAxB,wBAAwB,CAAA;AAoBxE,eAAeA,mBAAmB,CACvCC,WAAmB,EACnBC,OAAgB,EACU;QAKfA,QAAe;IAJ1B,OAAO;QACL,GAAI,MAAMC,CAAAA,GAAAA,oBAAwB,AAAsB,CAAA,yBAAtB,CAACF,WAAW,EAAEC,OAAO,CAAC;QACxD,GAAGE,CAAAA,GAAAA,mBAAkB,AAAsB,CAAA,mBAAtB,CAACH,WAAW,EAAEC,OAAO,CAAC;QAC3C,GAAI,MAAMG,CAAAA,GAAAA,mBAAuB,AAAa,CAAA,wBAAb,CAACJ,WAAW,CAAC;QAC9CK,OAAO,EAAEJ,CAAAA,QAAe,GAAfA,OAAO,CAACI,OAAO,YAAfJ,QAAe,GAAI,OAAO;QACnC,+DAA+D;QAC/D,mFAAmF;QACnFK,MAAM,EAAE,MAAMC,CAAAA,GAAAA,cAAkB,AAAgB,CAAA,mBAAhB,CAACN,OAAO,CAACK,MAAM,CAAC;QAChDE,UAAU,EAAE,CAAC,CAACP,OAAO,CAACO,UAAU;QAChCC,OAAO,EAAE,CAAC,CAACR,OAAO,CAACQ,OAAO;KAC3B,CAAC;CACH"}
@@ -4,15 +4,16 @@ Object.defineProperty(exports, "__esModule", {
4
4
  });
5
5
  exports.runAndroidAsync = runAndroidAsync;
6
6
  var _path = _interopRequireDefault(require("path"));
7
+ var _resolveInstallApkName = require("./resolveInstallApkName");
8
+ var _resolveOptions = require("./resolveOptions");
7
9
  var _log = require("../../log");
8
10
  var _gradle = require("../../start/platforms/android/gradle");
9
11
  var _nodeEnv = require("../../utils/nodeEnv");
12
+ var _port = require("../../utils/port");
10
13
  var _scheme = require("../../utils/scheme");
11
14
  var _ensureNativeProject = require("../ensureNativeProject");
12
15
  var _hints = require("../hints");
13
16
  var _startBundler = require("../startBundler");
14
- var _resolveInstallApkName = require("./resolveInstallApkName");
15
- var _resolveOptions = require("./resolveOptions");
16
17
  function _interopRequireDefault(obj) {
17
18
  return obj && obj.__esModule ? obj : {
18
19
  default: obj
@@ -38,6 +39,10 @@ async function runAndroidAsync(projectRoot, { install , ...options }) {
38
39
  appName: props.appName,
39
40
  buildCache: props.buildCache
40
41
  });
42
+ // Ensure the port hasn't become busy during the build.
43
+ if (props.shouldStartBundler && !await (0, _port).ensurePortAvailabilityAsync(projectRoot, props)) {
44
+ props.shouldStartBundler = false;
45
+ }
41
46
  const manager = await (0, _startBundler).startBundlerAsync(projectRoot, {
42
47
  port: props.port,
43
48
  // If a scheme is specified then use that instead of the package name.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/run/android/runAndroidAsync.ts"],"sourcesContent":["import path from 'path';\n\nimport { Log } from '../../log';\nimport { assembleAsync, installAsync } from '../../start/platforms/android/gradle';\nimport { setNodeEnv } from '../../utils/nodeEnv';\nimport { getSchemesForAndroidAsync } from '../../utils/scheme';\nimport { ensureNativeProjectAsync } from '../ensureNativeProject';\nimport { logProjectLogsLocation } from '../hints';\nimport { startBundlerAsync } from '../startBundler';\nimport { resolveInstallApkNameAsync } from './resolveInstallApkName';\nimport { Options, ResolvedOptions, resolveOptionsAsync } from './resolveOptions';\n\nconst debug = require('debug')('expo:run:android');\n\nexport async function runAndroidAsync(projectRoot: string, { install, ...options }: Options) {\n // NOTE: This is a guess, the developer can overwrite with `NODE_ENV`.\n setNodeEnv(options.variant === 'release' ? 'production' : 'development');\n require('@expo/env').load(projectRoot);\n\n await ensureNativeProjectAsync(projectRoot, { platform: 'android', install });\n\n const props = await resolveOptionsAsync(projectRoot, options);\n\n debug('Package name: ' + props.packageName);\n Log.log('› Building app...');\n\n const androidProjectRoot = path.join(projectRoot, 'android');\n\n await assembleAsync(androidProjectRoot, {\n variant: props.variant,\n port: props.port,\n appName: props.appName,\n buildCache: props.buildCache,\n });\n\n const manager = await startBundlerAsync(projectRoot, {\n port: props.port,\n // If a scheme is specified then use that instead of the package name.\n scheme: (await getSchemesForAndroidAsync(projectRoot))?.[0],\n headless: !props.shouldStartBundler,\n });\n\n await installAppAsync(androidProjectRoot, props);\n\n await manager.getDefaultDevServer().openCustomRuntimeAsync(\n 'emulator',\n {\n applicationId: props.packageName,\n },\n { device: props.device.device }\n );\n\n if (props.shouldStartBundler) {\n logProjectLogsLocation();\n }\n}\n\nasync function installAppAsync(androidProjectRoot: string, props: ResolvedOptions) {\n // Find the APK file path\n const apkFile = await resolveInstallApkNameAsync(props.device.device, props);\n\n if (apkFile) {\n // Attempt to install the APK from the file path\n const binaryPath = path.join(props.apkVariantDirectory, apkFile);\n debug('Installing:', binaryPath);\n await props.device.installAppAsync(binaryPath);\n } else {\n // If we cannot resolve the APK file path then we can attempt to install using Gradle.\n // This offers more advanced resolution that we may not have first class support for.\n Log.log('› Failed to locate binary file, installing with Gradle...');\n await installAsync(androidProjectRoot, {\n variant: props.variant ?? 'debug',\n appName: props.appName ?? 'app',\n port: props.port,\n });\n }\n}\n"],"names":["runAndroidAsync","debug","require","projectRoot","install","options","setNodeEnv","variant","load","ensureNativeProjectAsync","platform","props","resolveOptionsAsync","packageName","Log","log","androidProjectRoot","path","join","assembleAsync","port","appName","buildCache","manager","startBundlerAsync","scheme","getSchemesForAndroidAsync","headless","shouldStartBundler","installAppAsync","getDefaultDevServer","openCustomRuntimeAsync","applicationId","device","logProjectLogsLocation","apkFile","resolveInstallApkNameAsync","binaryPath","apkVariantDirectory","installAsync"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/run/android/runAndroidAsync.ts"],"sourcesContent":["import path from 'path';\n\nimport { resolveInstallApkNameAsync } from './resolveInstallApkName';\nimport { Options, ResolvedOptions, resolveOptionsAsync } from './resolveOptions';\nimport { Log } from '../../log';\nimport { assembleAsync, installAsync } from '../../start/platforms/android/gradle';\nimport { setNodeEnv } from '../../utils/nodeEnv';\nimport { ensurePortAvailabilityAsync } from '../../utils/port';\nimport { getSchemesForAndroidAsync } from '../../utils/scheme';\nimport { ensureNativeProjectAsync } from '../ensureNativeProject';\nimport { logProjectLogsLocation } from '../hints';\nimport { startBundlerAsync } from '../startBundler';\n\nconst debug = require('debug')('expo:run:android');\n\nexport async function runAndroidAsync(projectRoot: string, { install, ...options }: Options) {\n // NOTE: This is a guess, the developer can overwrite with `NODE_ENV`.\n setNodeEnv(options.variant === 'release' ? 'production' : 'development');\n require('@expo/env').load(projectRoot);\n\n await ensureNativeProjectAsync(projectRoot, { platform: 'android', install });\n\n const props = await resolveOptionsAsync(projectRoot, options);\n\n debug('Package name: ' + props.packageName);\n Log.log('› Building app...');\n\n const androidProjectRoot = path.join(projectRoot, 'android');\n\n await assembleAsync(androidProjectRoot, {\n variant: props.variant,\n port: props.port,\n appName: props.appName,\n buildCache: props.buildCache,\n });\n\n // Ensure the port hasn't become busy during the build.\n if (props.shouldStartBundler && !(await ensurePortAvailabilityAsync(projectRoot, props))) {\n props.shouldStartBundler = false;\n }\n\n const manager = await startBundlerAsync(projectRoot, {\n port: props.port,\n // If a scheme is specified then use that instead of the package name.\n scheme: (await getSchemesForAndroidAsync(projectRoot))?.[0],\n headless: !props.shouldStartBundler,\n });\n\n await installAppAsync(androidProjectRoot, props);\n\n await manager.getDefaultDevServer().openCustomRuntimeAsync(\n 'emulator',\n {\n applicationId: props.packageName,\n },\n { device: props.device.device }\n );\n\n if (props.shouldStartBundler) {\n logProjectLogsLocation();\n }\n}\n\nasync function installAppAsync(androidProjectRoot: string, props: ResolvedOptions) {\n // Find the APK file path\n const apkFile = await resolveInstallApkNameAsync(props.device.device, props);\n\n if (apkFile) {\n // Attempt to install the APK from the file path\n const binaryPath = path.join(props.apkVariantDirectory, apkFile);\n debug('Installing:', binaryPath);\n await props.device.installAppAsync(binaryPath);\n } else {\n // If we cannot resolve the APK file path then we can attempt to install using Gradle.\n // This offers more advanced resolution that we may not have first class support for.\n Log.log('› Failed to locate binary file, installing with Gradle...');\n await installAsync(androidProjectRoot, {\n variant: props.variant ?? 'debug',\n appName: props.appName ?? 'app',\n port: props.port,\n });\n }\n}\n"],"names":["runAndroidAsync","debug","require","projectRoot","install","options","setNodeEnv","variant","load","ensureNativeProjectAsync","platform","props","resolveOptionsAsync","packageName","Log","log","androidProjectRoot","path","join","assembleAsync","port","appName","buildCache","shouldStartBundler","ensurePortAvailabilityAsync","manager","startBundlerAsync","scheme","getSchemesForAndroidAsync","headless","installAppAsync","getDefaultDevServer","openCustomRuntimeAsync","applicationId","device","logProjectLogsLocation","apkFile","resolveInstallApkNameAsync","binaryPath","apkVariantDirectory","installAsync"],"mappings":"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"}
@@ -16,13 +16,13 @@ var _childProcess = require("child_process");
16
16
  var _fs = _interopRequireDefault(require("fs"));
17
17
  var _os = _interopRequireDefault(require("os"));
18
18
  var _path = _interopRequireDefault(require("path"));
19
+ var _configureCodeSigning = require("./codeSigning/configureCodeSigning");
20
+ var _simulatorCodeSigning = require("./codeSigning/simulatorCodeSigning");
19
21
  var Log = _interopRequireWildcard(require("../../log"));
20
22
  var _dir = require("../../utils/dir");
21
23
  var _env = require("../../utils/env");
22
24
  var _errors = require("../../utils/errors");
23
25
  var _terminal = require("../../utils/terminal");
24
- var _configureCodeSigning = require("./codeSigning/configureCodeSigning");
25
- var _simulatorCodeSigning = require("./codeSigning/simulatorCodeSigning");
26
26
  function _interopRequireDefault(obj) {
27
27
  return obj && obj.__esModule ? obj : {
28
28
  default: obj
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/run/ios/XcodeBuild.ts"],"sourcesContent":["import { ExpoRunFormatter } from '@expo/xcpretty';\nimport chalk from 'chalk';\nimport { spawn, SpawnOptionsWithoutStdio } from 'child_process';\nimport fs from 'fs';\nimport os from 'os';\nimport path from 'path';\n\nimport * as Log from '../../log';\nimport { ensureDirectory } from '../../utils/dir';\nimport { env } from '../../utils/env';\nimport { AbortCommandError, CommandError } from '../../utils/errors';\nimport { getUserTerminal } from '../../utils/terminal';\nimport { BuildProps, ProjectInfo } from './XcodeBuild.types';\nimport { ensureDeviceIsCodeSignedForDeploymentAsync } from './codeSigning/configureCodeSigning';\nimport { simulatorBuildRequiresCodeSigning } from './codeSigning/simulatorCodeSigning';\nexport function logPrettyItem(message: string) {\n Log.log(chalk`{whiteBright \\u203A} ${message}`);\n}\n\n/**\n *\n * @returns '/Users/evanbacon/Library/Developer/Xcode/DerivedData/myapp-gpgjqjodrxtervaufttwnsgimhrx/Build/Products/Debug-iphonesimulator/myapp.app'\n */\nexport function getAppBinaryPath(buildOutput: string) {\n // Matches what's used in \"Bundle React Native code and images\" script.\n // Requires that `-hideShellScriptEnvironment` is not included in the build command (extra logs).\n\n // Like `\\=/Users/evanbacon/Library/Developer/Xcode/DerivedData/Exponent-anpuosnglkxokahjhfszejloqfvo/Build/Products/Debug-iphonesimulator`\n const CONFIGURATION_BUILD_DIR = extractEnvVariableFromBuild(\n buildOutput,\n 'CONFIGURATION_BUILD_DIR'\n ).sort(\n // Longer name means more suffixes, we want the shortest possible one to be first.\n // Massive projects (like Expo Go) can sometimes print multiple different sets of environment variables.\n // This can become an issue with some\n (a, b) => a.length - b.length\n );\n // Like `Exponent.app`\n const UNLOCALIZED_RESOURCES_FOLDER_PATH = extractEnvVariableFromBuild(\n buildOutput,\n 'UNLOCALIZED_RESOURCES_FOLDER_PATH'\n );\n\n const binaryPath = path.join(\n // Use the shortest defined env variable (usually there's just one).\n CONFIGURATION_BUILD_DIR[0],\n // Use the last defined env variable.\n UNLOCALIZED_RESOURCES_FOLDER_PATH[UNLOCALIZED_RESOURCES_FOLDER_PATH.length - 1]\n );\n\n // If the app has a space in the name it'll fail because it isn't escaped properly by Xcode.\n return getEscapedPath(binaryPath);\n}\n\nexport function getEscapedPath(filePath: string): string {\n if (fs.existsSync(filePath)) {\n return filePath;\n }\n const unescapedPath = filePath.split(/\\\\ /).join(' ');\n if (fs.existsSync(unescapedPath)) {\n return unescapedPath;\n }\n throw new CommandError(\n 'XCODE_BUILD',\n `Unexpected: Generated app at path \"${filePath}\" cannot be read, the app cannot be installed. Please report this and build onto a simulator.`\n );\n}\n\nexport function extractEnvVariableFromBuild(buildOutput: string, variableName: string) {\n // Xcode can sometimes escape `=` with a backslash or put the value in quotes\n const reg = new RegExp(`export ${variableName}\\\\\\\\?=(.*)$`, 'mg');\n const matched = [...buildOutput.matchAll(reg)];\n\n if (!matched || !matched.length) {\n throw new CommandError(\n 'XCODE_BUILD',\n `Malformed xcodebuild results: \"${variableName}\" variable was not generated in build output. Please report this issue and run your project with Xcode instead.`\n );\n }\n return matched.map((value) => value[1]).filter(Boolean) as string[];\n}\n\nexport function getProcessOptions({\n packager,\n shouldSkipInitialBundling,\n terminal,\n port,\n}: {\n packager: boolean;\n shouldSkipInitialBundling?: boolean;\n terminal: string | undefined;\n port: number;\n}): SpawnOptionsWithoutStdio {\n const SKIP_BUNDLING = shouldSkipInitialBundling ? '1' : undefined;\n if (packager) {\n return {\n env: {\n ...process.env,\n RCT_TERMINAL: terminal,\n SKIP_BUNDLING,\n RCT_METRO_PORT: port.toString(),\n },\n };\n }\n\n return {\n env: {\n ...process.env,\n RCT_TERMINAL: terminal,\n SKIP_BUNDLING,\n // Always skip launching the packager from a build script.\n // The script is used for people building their project directly from Xcode.\n // This essentially means \"› Running script 'Start Packager'\" does nothing.\n RCT_NO_LAUNCH_PACKAGER: 'true',\n // FORCE_BUNDLING: '0'\n },\n };\n}\n\nexport async function getXcodeBuildArgsAsync(\n props: Pick<\n BuildProps,\n | 'buildCache'\n | 'projectRoot'\n | 'xcodeProject'\n | 'configuration'\n | 'scheme'\n | 'device'\n | 'isSimulator'\n >\n): Promise<string[]> {\n const args = [\n props.xcodeProject.isWorkspace ? '-workspace' : '-project',\n props.xcodeProject.name,\n '-configuration',\n props.configuration,\n '-scheme',\n props.scheme,\n '-destination',\n `id=${props.device.udid}`,\n ];\n\n if (!props.isSimulator || simulatorBuildRequiresCodeSigning(props.projectRoot)) {\n const developmentTeamId = await ensureDeviceIsCodeSignedForDeploymentAsync(props.projectRoot);\n if (developmentTeamId) {\n args.push(\n `DEVELOPMENT_TEAM=${developmentTeamId}`,\n '-allowProvisioningUpdates',\n '-allowProvisioningDeviceRegistration'\n );\n }\n }\n\n // Add last\n if (props.buildCache === false) {\n args.push(\n // Will first clean the derived data folder.\n 'clean',\n // Then build step must be added otherwise the process will simply clean and exit.\n 'build'\n );\n }\n return args;\n}\n\nfunction spawnXcodeBuild(\n args: string[],\n options: SpawnOptionsWithoutStdio,\n { onData }: { onData: (data: string) => void }\n): Promise<{ code: number | null; results: string; error: string }> {\n const buildProcess = spawn('xcodebuild', args, options);\n\n let results = '';\n let error = '';\n\n buildProcess.stdout.on('data', (data: Buffer) => {\n const stringData = data.toString();\n results += stringData;\n onData(stringData);\n });\n\n buildProcess.stderr.on('data', (data: Buffer) => {\n const stringData = data instanceof Buffer ? data.toString() : data;\n error += stringData;\n });\n\n return new Promise(async (resolve, reject) => {\n buildProcess.on('close', (code: number) => {\n resolve({ code, results, error });\n });\n });\n}\n\nasync function spawnXcodeBuildWithFlush(\n args: string[],\n options: SpawnOptionsWithoutStdio,\n { onFlush }: { onFlush: (data: string) => void }\n): Promise<{ code: number | null; results: string; error: string }> {\n let currentBuffer = '';\n\n // Data can be sent in chunks that would have no relevance to our regex\n // this can cause massive slowdowns, so we need to ensure the data is complete before attempting to parse it.\n function flushBuffer() {\n if (!currentBuffer) {\n return;\n }\n\n const data = currentBuffer;\n // Reset buffer.\n currentBuffer = '';\n // Process data.\n onFlush(data);\n }\n\n const data = await spawnXcodeBuild(args, options, {\n onData(stringData) {\n currentBuffer += stringData;\n // Only flush the data if we have a full line.\n if (currentBuffer.endsWith(os.EOL)) {\n flushBuffer();\n }\n },\n });\n\n // Flush log data at the end just in case we missed something.\n flushBuffer();\n return data;\n}\n\nasync function spawnXcodeBuildWithFormat(\n args: string[],\n options: SpawnOptionsWithoutStdio,\n { projectRoot, xcodeProject }: { projectRoot: string; xcodeProject: ProjectInfo }\n): Promise<{ code: number | null; results: string; error: string; formatter: ExpoRunFormatter }> {\n Log.debug(` xcodebuild ${args.join(' ')}`);\n\n logPrettyItem(chalk.bold`Planning build`);\n\n const formatter = ExpoRunFormatter.create(projectRoot, {\n xcodeProject,\n isDebug: env.EXPO_DEBUG,\n });\n\n const results = await spawnXcodeBuildWithFlush(args, options, {\n onFlush(data) {\n // Process data.\n for (const line of formatter.pipe(data)) {\n // Log parsed results.\n Log.log(line);\n }\n },\n });\n\n Log.debug(`Exited with code: ${results.code}`);\n\n if (\n // User cancelled with ctrl-c\n results.code === null ||\n // Build interrupted\n results.code === 75\n ) {\n throw new AbortCommandError();\n }\n\n Log.log(formatter.getBuildSummary());\n\n return { ...results, formatter };\n}\n\nexport async function buildAsync(props: BuildProps): Promise<string> {\n const args = await getXcodeBuildArgsAsync(props);\n\n const { projectRoot, xcodeProject, shouldSkipInitialBundling, port } = props;\n\n const { code, results, formatter, error } = await spawnXcodeBuildWithFormat(\n args,\n getProcessOptions({\n packager: false,\n terminal: getUserTerminal(),\n shouldSkipInitialBundling,\n port,\n }),\n {\n projectRoot,\n xcodeProject,\n }\n );\n\n const logFilePath = writeBuildLogs(projectRoot, results, error);\n\n if (code !== 0) {\n // Determine if the logger found any errors;\n const wasErrorPresented = !!formatter.errors.length;\n\n if (wasErrorPresented) {\n // This has a flaw, if the user is missing a file, and there is a script error, only the missing file error will be shown.\n // They will only see the script error if they fix the missing file and rerun.\n // The flaw can be fixed by catching script errors in the custom logger.\n throw new CommandError(\n `Failed to build iOS project. \"xcodebuild\" exited with error code ${code}.`\n );\n }\n\n _assertXcodeBuildResults(code, results, error, xcodeProject, logFilePath);\n }\n return results;\n}\n\n// Exposed for testing.\nexport function _assertXcodeBuildResults(\n code: number | null,\n results: string,\n error: string,\n xcodeProject: { name: string },\n logFilePath: string\n): void {\n const errorTitle = `Failed to build iOS project. \"xcodebuild\" exited with error code ${code}.`;\n\n const throwWithMessage = (message: string): never => {\n throw new CommandError(\n `${errorTitle}\\nTo view more error logs, try building the app with Xcode directly, by opening ${xcodeProject.name}.\\n\\n` +\n message +\n `Build logs written to ${chalk.underline(logFilePath)}`\n );\n };\n\n const localizedError = error.match(/NSLocalizedFailure = \"(.*)\"/)?.[1];\n\n if (localizedError) {\n throwWithMessage(chalk.bold(localizedError) + '\\n\\n');\n }\n // Show all the log info because often times the error is coming from a shell script,\n // that invoked a node script, that started metro, which threw an error.\n\n throwWithMessage(results + '\\n\\n' + error);\n}\n\nfunction writeBuildLogs(projectRoot: string, buildOutput: string, errorOutput: string) {\n const [logFilePath, errorFilePath] = getErrorLogFilePath(projectRoot);\n\n fs.writeFileSync(logFilePath, buildOutput);\n fs.writeFileSync(errorFilePath, errorOutput);\n return logFilePath;\n}\n\nfunction getErrorLogFilePath(projectRoot: string): [string, string] {\n const folder = path.join(projectRoot, '.expo');\n ensureDirectory(folder);\n return [path.join(folder, 'xcodebuild.log'), path.join(folder, 'xcodebuild-error.log')];\n}\n"],"names":["logPrettyItem","getAppBinaryPath","getEscapedPath","extractEnvVariableFromBuild","getProcessOptions","getXcodeBuildArgsAsync","buildAsync","_assertXcodeBuildResults","Log","message","log","chalk","buildOutput","CONFIGURATION_BUILD_DIR","sort","a","b","length","UNLOCALIZED_RESOURCES_FOLDER_PATH","binaryPath","path","join","filePath","fs","existsSync","unescapedPath","split","CommandError","variableName","reg","RegExp","matched","matchAll","map","value","filter","Boolean","packager","shouldSkipInitialBundling","terminal","port","SKIP_BUNDLING","undefined","env","process","RCT_TERMINAL","RCT_METRO_PORT","toString","RCT_NO_LAUNCH_PACKAGER","props","args","xcodeProject","isWorkspace","name","configuration","scheme","device","udid","isSimulator","simulatorBuildRequiresCodeSigning","projectRoot","developmentTeamId","ensureDeviceIsCodeSignedForDeploymentAsync","push","buildCache","spawnXcodeBuild","options","onData","buildProcess","spawn","results","error","stdout","on","data","stringData","stderr","Buffer","Promise","resolve","reject","code","spawnXcodeBuildWithFlush","onFlush","currentBuffer","flushBuffer","endsWith","os","EOL","spawnXcodeBuildWithFormat","debug","bold","formatter","ExpoRunFormatter","create","isDebug","EXPO_DEBUG","line","pipe","AbortCommandError","getBuildSummary","getUserTerminal","logFilePath","writeBuildLogs","wasErrorPresented","errors","errorTitle","throwWithMessage","underline","localizedError","match","errorOutput","errorFilePath","getErrorLogFilePath","writeFileSync","folder","ensureDirectory"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/run/ios/XcodeBuild.ts"],"sourcesContent":["import { ExpoRunFormatter } from '@expo/xcpretty';\nimport chalk from 'chalk';\nimport { spawn, SpawnOptionsWithoutStdio } from 'child_process';\nimport fs from 'fs';\nimport os from 'os';\nimport path from 'path';\n\nimport { BuildProps, ProjectInfo } from './XcodeBuild.types';\nimport { ensureDeviceIsCodeSignedForDeploymentAsync } from './codeSigning/configureCodeSigning';\nimport { simulatorBuildRequiresCodeSigning } from './codeSigning/simulatorCodeSigning';\nimport * as Log from '../../log';\nimport { ensureDirectory } from '../../utils/dir';\nimport { env } from '../../utils/env';\nimport { AbortCommandError, CommandError } from '../../utils/errors';\nimport { getUserTerminal } from '../../utils/terminal';\nexport function logPrettyItem(message: string) {\n Log.log(chalk`{whiteBright \\u203A} ${message}`);\n}\n\n/**\n *\n * @returns '/Users/evanbacon/Library/Developer/Xcode/DerivedData/myapp-gpgjqjodrxtervaufttwnsgimhrx/Build/Products/Debug-iphonesimulator/myapp.app'\n */\nexport function getAppBinaryPath(buildOutput: string) {\n // Matches what's used in \"Bundle React Native code and images\" script.\n // Requires that `-hideShellScriptEnvironment` is not included in the build command (extra logs).\n\n // Like `\\=/Users/evanbacon/Library/Developer/Xcode/DerivedData/Exponent-anpuosnglkxokahjhfszejloqfvo/Build/Products/Debug-iphonesimulator`\n const CONFIGURATION_BUILD_DIR = extractEnvVariableFromBuild(\n buildOutput,\n 'CONFIGURATION_BUILD_DIR'\n ).sort(\n // Longer name means more suffixes, we want the shortest possible one to be first.\n // Massive projects (like Expo Go) can sometimes print multiple different sets of environment variables.\n // This can become an issue with some\n (a, b) => a.length - b.length\n );\n // Like `Exponent.app`\n const UNLOCALIZED_RESOURCES_FOLDER_PATH = extractEnvVariableFromBuild(\n buildOutput,\n 'UNLOCALIZED_RESOURCES_FOLDER_PATH'\n );\n\n const binaryPath = path.join(\n // Use the shortest defined env variable (usually there's just one).\n CONFIGURATION_BUILD_DIR[0],\n // Use the last defined env variable.\n UNLOCALIZED_RESOURCES_FOLDER_PATH[UNLOCALIZED_RESOURCES_FOLDER_PATH.length - 1]\n );\n\n // If the app has a space in the name it'll fail because it isn't escaped properly by Xcode.\n return getEscapedPath(binaryPath);\n}\n\nexport function getEscapedPath(filePath: string): string {\n if (fs.existsSync(filePath)) {\n return filePath;\n }\n const unescapedPath = filePath.split(/\\\\ /).join(' ');\n if (fs.existsSync(unescapedPath)) {\n return unescapedPath;\n }\n throw new CommandError(\n 'XCODE_BUILD',\n `Unexpected: Generated app at path \"${filePath}\" cannot be read, the app cannot be installed. Please report this and build onto a simulator.`\n );\n}\n\nexport function extractEnvVariableFromBuild(buildOutput: string, variableName: string) {\n // Xcode can sometimes escape `=` with a backslash or put the value in quotes\n const reg = new RegExp(`export ${variableName}\\\\\\\\?=(.*)$`, 'mg');\n const matched = [...buildOutput.matchAll(reg)];\n\n if (!matched || !matched.length) {\n throw new CommandError(\n 'XCODE_BUILD',\n `Malformed xcodebuild results: \"${variableName}\" variable was not generated in build output. Please report this issue and run your project with Xcode instead.`\n );\n }\n return matched.map((value) => value[1]).filter(Boolean) as string[];\n}\n\nexport function getProcessOptions({\n packager,\n shouldSkipInitialBundling,\n terminal,\n port,\n}: {\n packager: boolean;\n shouldSkipInitialBundling?: boolean;\n terminal: string | undefined;\n port: number;\n}): SpawnOptionsWithoutStdio {\n const SKIP_BUNDLING = shouldSkipInitialBundling ? '1' : undefined;\n if (packager) {\n return {\n env: {\n ...process.env,\n RCT_TERMINAL: terminal,\n SKIP_BUNDLING,\n RCT_METRO_PORT: port.toString(),\n },\n };\n }\n\n return {\n env: {\n ...process.env,\n RCT_TERMINAL: terminal,\n SKIP_BUNDLING,\n // Always skip launching the packager from a build script.\n // The script is used for people building their project directly from Xcode.\n // This essentially means \"› Running script 'Start Packager'\" does nothing.\n RCT_NO_LAUNCH_PACKAGER: 'true',\n // FORCE_BUNDLING: '0'\n },\n };\n}\n\nexport async function getXcodeBuildArgsAsync(\n props: Pick<\n BuildProps,\n | 'buildCache'\n | 'projectRoot'\n | 'xcodeProject'\n | 'configuration'\n | 'scheme'\n | 'device'\n | 'isSimulator'\n >\n): Promise<string[]> {\n const args = [\n props.xcodeProject.isWorkspace ? '-workspace' : '-project',\n props.xcodeProject.name,\n '-configuration',\n props.configuration,\n '-scheme',\n props.scheme,\n '-destination',\n `id=${props.device.udid}`,\n ];\n\n if (!props.isSimulator || simulatorBuildRequiresCodeSigning(props.projectRoot)) {\n const developmentTeamId = await ensureDeviceIsCodeSignedForDeploymentAsync(props.projectRoot);\n if (developmentTeamId) {\n args.push(\n `DEVELOPMENT_TEAM=${developmentTeamId}`,\n '-allowProvisioningUpdates',\n '-allowProvisioningDeviceRegistration'\n );\n }\n }\n\n // Add last\n if (props.buildCache === false) {\n args.push(\n // Will first clean the derived data folder.\n 'clean',\n // Then build step must be added otherwise the process will simply clean and exit.\n 'build'\n );\n }\n return args;\n}\n\nfunction spawnXcodeBuild(\n args: string[],\n options: SpawnOptionsWithoutStdio,\n { onData }: { onData: (data: string) => void }\n): Promise<{ code: number | null; results: string; error: string }> {\n const buildProcess = spawn('xcodebuild', args, options);\n\n let results = '';\n let error = '';\n\n buildProcess.stdout.on('data', (data: Buffer) => {\n const stringData = data.toString();\n results += stringData;\n onData(stringData);\n });\n\n buildProcess.stderr.on('data', (data: Buffer) => {\n const stringData = data instanceof Buffer ? data.toString() : data;\n error += stringData;\n });\n\n return new Promise(async (resolve, reject) => {\n buildProcess.on('close', (code: number) => {\n resolve({ code, results, error });\n });\n });\n}\n\nasync function spawnXcodeBuildWithFlush(\n args: string[],\n options: SpawnOptionsWithoutStdio,\n { onFlush }: { onFlush: (data: string) => void }\n): Promise<{ code: number | null; results: string; error: string }> {\n let currentBuffer = '';\n\n // Data can be sent in chunks that would have no relevance to our regex\n // this can cause massive slowdowns, so we need to ensure the data is complete before attempting to parse it.\n function flushBuffer() {\n if (!currentBuffer) {\n return;\n }\n\n const data = currentBuffer;\n // Reset buffer.\n currentBuffer = '';\n // Process data.\n onFlush(data);\n }\n\n const data = await spawnXcodeBuild(args, options, {\n onData(stringData) {\n currentBuffer += stringData;\n // Only flush the data if we have a full line.\n if (currentBuffer.endsWith(os.EOL)) {\n flushBuffer();\n }\n },\n });\n\n // Flush log data at the end just in case we missed something.\n flushBuffer();\n return data;\n}\n\nasync function spawnXcodeBuildWithFormat(\n args: string[],\n options: SpawnOptionsWithoutStdio,\n { projectRoot, xcodeProject }: { projectRoot: string; xcodeProject: ProjectInfo }\n): Promise<{ code: number | null; results: string; error: string; formatter: ExpoRunFormatter }> {\n Log.debug(` xcodebuild ${args.join(' ')}`);\n\n logPrettyItem(chalk.bold`Planning build`);\n\n const formatter = ExpoRunFormatter.create(projectRoot, {\n xcodeProject,\n isDebug: env.EXPO_DEBUG,\n });\n\n const results = await spawnXcodeBuildWithFlush(args, options, {\n onFlush(data) {\n // Process data.\n for (const line of formatter.pipe(data)) {\n // Log parsed results.\n Log.log(line);\n }\n },\n });\n\n Log.debug(`Exited with code: ${results.code}`);\n\n if (\n // User cancelled with ctrl-c\n results.code === null ||\n // Build interrupted\n results.code === 75\n ) {\n throw new AbortCommandError();\n }\n\n Log.log(formatter.getBuildSummary());\n\n return { ...results, formatter };\n}\n\nexport async function buildAsync(props: BuildProps): Promise<string> {\n const args = await getXcodeBuildArgsAsync(props);\n\n const { projectRoot, xcodeProject, shouldSkipInitialBundling, port } = props;\n\n const { code, results, formatter, error } = await spawnXcodeBuildWithFormat(\n args,\n getProcessOptions({\n packager: false,\n terminal: getUserTerminal(),\n shouldSkipInitialBundling,\n port,\n }),\n {\n projectRoot,\n xcodeProject,\n }\n );\n\n const logFilePath = writeBuildLogs(projectRoot, results, error);\n\n if (code !== 0) {\n // Determine if the logger found any errors;\n const wasErrorPresented = !!formatter.errors.length;\n\n if (wasErrorPresented) {\n // This has a flaw, if the user is missing a file, and there is a script error, only the missing file error will be shown.\n // They will only see the script error if they fix the missing file and rerun.\n // The flaw can be fixed by catching script errors in the custom logger.\n throw new CommandError(\n `Failed to build iOS project. \"xcodebuild\" exited with error code ${code}.`\n );\n }\n\n _assertXcodeBuildResults(code, results, error, xcodeProject, logFilePath);\n }\n return results;\n}\n\n// Exposed for testing.\nexport function _assertXcodeBuildResults(\n code: number | null,\n results: string,\n error: string,\n xcodeProject: { name: string },\n logFilePath: string\n): void {\n const errorTitle = `Failed to build iOS project. \"xcodebuild\" exited with error code ${code}.`;\n\n const throwWithMessage = (message: string): never => {\n throw new CommandError(\n `${errorTitle}\\nTo view more error logs, try building the app with Xcode directly, by opening ${xcodeProject.name}.\\n\\n` +\n message +\n `Build logs written to ${chalk.underline(logFilePath)}`\n );\n };\n\n const localizedError = error.match(/NSLocalizedFailure = \"(.*)\"/)?.[1];\n\n if (localizedError) {\n throwWithMessage(chalk.bold(localizedError) + '\\n\\n');\n }\n // Show all the log info because often times the error is coming from a shell script,\n // that invoked a node script, that started metro, which threw an error.\n\n throwWithMessage(results + '\\n\\n' + error);\n}\n\nfunction writeBuildLogs(projectRoot: string, buildOutput: string, errorOutput: string) {\n const [logFilePath, errorFilePath] = getErrorLogFilePath(projectRoot);\n\n fs.writeFileSync(logFilePath, buildOutput);\n fs.writeFileSync(errorFilePath, errorOutput);\n return logFilePath;\n}\n\nfunction getErrorLogFilePath(projectRoot: string): [string, string] {\n const folder = path.join(projectRoot, '.expo');\n ensureDirectory(folder);\n return [path.join(folder, 'xcodebuild.log'), path.join(folder, 'xcodebuild-error.log')];\n}\n"],"names":["logPrettyItem","getAppBinaryPath","getEscapedPath","extractEnvVariableFromBuild","getProcessOptions","getXcodeBuildArgsAsync","buildAsync","_assertXcodeBuildResults","Log","message","log","chalk","buildOutput","CONFIGURATION_BUILD_DIR","sort","a","b","length","UNLOCALIZED_RESOURCES_FOLDER_PATH","binaryPath","path","join","filePath","fs","existsSync","unescapedPath","split","CommandError","variableName","reg","RegExp","matched","matchAll","map","value","filter","Boolean","packager","shouldSkipInitialBundling","terminal","port","SKIP_BUNDLING","undefined","env","process","RCT_TERMINAL","RCT_METRO_PORT","toString","RCT_NO_LAUNCH_PACKAGER","props","args","xcodeProject","isWorkspace","name","configuration","scheme","device","udid","isSimulator","simulatorBuildRequiresCodeSigning","projectRoot","developmentTeamId","ensureDeviceIsCodeSignedForDeploymentAsync","push","buildCache","spawnXcodeBuild","options","onData","buildProcess","spawn","results","error","stdout","on","data","stringData","stderr","Buffer","Promise","resolve","reject","code","spawnXcodeBuildWithFlush","onFlush","currentBuffer","flushBuffer","endsWith","os","EOL","spawnXcodeBuildWithFormat","debug","bold","formatter","ExpoRunFormatter","create","isDebug","EXPO_DEBUG","line","pipe","AbortCommandError","getBuildSummary","getUserTerminal","logFilePath","writeBuildLogs","wasErrorPresented","errors","errorTitle","throwWithMessage","underline","localizedError","match","errorOutput","errorFilePath","getErrorLogFilePath","writeFileSync","folder","ensureDirectory"],"mappings":"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"}
@@ -7,15 +7,15 @@ exports.runOnDevice = runOnDevice;
7
7
  var _debug = _interopRequireDefault(require("debug"));
8
8
  var _fs = _interopRequireDefault(require("fs"));
9
9
  var _path = _interopRequireDefault(require("path"));
10
+ var _clientManager = require("./ClientManager");
11
+ var _lockdowndClient = require("./client/LockdowndClient");
12
+ var _usbmuxdClient = require("./client/UsbmuxdClient");
13
+ var _afcprotocol = require("./protocol/AFCProtocol");
10
14
  var _log = require("../../../log");
11
15
  var _xcodeDeveloperDiskImagePrerequisite = require("../../../start/doctor/apple/XcodeDeveloperDiskImagePrerequisite");
12
16
  var _delay = require("../../../utils/delay");
13
17
  var _errors = require("../../../utils/errors");
14
18
  var _exit = require("../../../utils/exit");
15
- var _clientManager = require("./ClientManager");
16
- var _lockdowndClient = require("./client/LockdowndClient");
17
- var _usbmuxdClient = require("./client/UsbmuxdClient");
18
- var _afcprotocol = require("./protocol/AFCProtocol");
19
19
  function _interopRequireDefault(obj) {
20
20
  return obj && obj.__esModule ? obj : {
21
21
  default: obj