@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
@@ -0,0 +1,118 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ exports.persistMetroAssetsAsync = persistMetroAssetsAsync;
6
+ exports.stripAssetPrefix = stripAssetPrefix;
7
+ var _fs = _interopRequireDefault(require("fs"));
8
+ var _path = _interopRequireDefault(require("path"));
9
+ var _log = require("../log");
10
+ function _interopRequireDefault(obj) {
11
+ return obj && obj.__esModule ? obj : {
12
+ default: obj
13
+ };
14
+ }
15
+ function persistMetroAssetsAsync(assets, { platform , outputDirectory , basePath }) {
16
+ const files = assets.reduce((acc, asset)=>{
17
+ const validScales = new Set(filterPlatformAssetScales(platform, asset.scales));
18
+ asset.scales.forEach((scale, idx)=>{
19
+ if (!validScales.has(scale)) {
20
+ return;
21
+ }
22
+ const src = asset.files[idx];
23
+ const dest = _path.default.join(outputDirectory, getAssetLocalPath(asset, {
24
+ scale,
25
+ basePath
26
+ }));
27
+ acc[src] = dest;
28
+ });
29
+ return acc;
30
+ }, {});
31
+ return copyAll(files);
32
+ }
33
+ function copyAll(filesToCopy) {
34
+ const queue = Object.keys(filesToCopy);
35
+ if (queue.length === 0) {
36
+ return;
37
+ }
38
+ _log.Log.log(`Copying ${queue.length} asset files`);
39
+ return new Promise((resolve, reject)=>{
40
+ const copyNext = (error)=>{
41
+ if (error) {
42
+ return reject(error);
43
+ }
44
+ if (queue.length) {
45
+ // queue.length === 0 is checked in previous branch, so this is string
46
+ const src = queue.shift();
47
+ const dest = filesToCopy[src];
48
+ copy(src, dest, copyNext);
49
+ } else {
50
+ _log.Log.log("Persisted assets");
51
+ resolve();
52
+ }
53
+ };
54
+ copyNext();
55
+ });
56
+ }
57
+ function copy(src, dest, callback) {
58
+ _fs.default.mkdir(_path.default.dirname(dest), {
59
+ recursive: true
60
+ }, (err)=>{
61
+ if (err) {
62
+ callback(err);
63
+ return;
64
+ }
65
+ _fs.default.createReadStream(src).pipe(_fs.default.createWriteStream(dest)).on("finish", callback);
66
+ });
67
+ }
68
+ const ALLOWED_SCALES = {
69
+ ios: [
70
+ 1,
71
+ 2,
72
+ 3
73
+ ]
74
+ };
75
+ function filterPlatformAssetScales(platform, scales) {
76
+ const whitelist = ALLOWED_SCALES[platform];
77
+ if (!whitelist) {
78
+ return scales;
79
+ }
80
+ const result = scales.filter((scale)=>whitelist.includes(scale)
81
+ );
82
+ if (!result.length && scales.length) {
83
+ // No matching scale found, but there are some available. Ideally we don't
84
+ // want to be in this situation and should throw, but for now as a fallback
85
+ // let's just use the closest larger image
86
+ const maxScale = whitelist[whitelist.length - 1];
87
+ for (const scale of scales){
88
+ if (scale > maxScale) {
89
+ result.push(scale);
90
+ break;
91
+ }
92
+ }
93
+ // There is no larger scales available, use the largest we have
94
+ if (!result.length) {
95
+ result.push(scales[scales.length - 1]);
96
+ }
97
+ }
98
+ return result;
99
+ }
100
+ function getAssetLocalPath(asset, { basePath , scale }) {
101
+ const suffix = scale === 1 ? "" : `@${scale}x`;
102
+ const fileName = `${asset.name + suffix}.${asset.type}`;
103
+ const adjustedHttpServerLocation = stripAssetPrefix(asset.httpServerLocation, basePath);
104
+ return _path.default.join(// Assets can have relative paths outside of the project root.
105
+ // Replace `../` with `_` to make sure they don't end up outside of
106
+ // the expected assets directory.
107
+ adjustedHttpServerLocation.replace(/^\/+/g, "").replace(/\.\.\//g, "_"), fileName);
108
+ }
109
+ function stripAssetPrefix(path, basePath) {
110
+ path = path.replace(/\/assets\?export_path=(.*)/, "$1");
111
+ // TODO: Windows?
112
+ if (basePath) {
113
+ return path.replace(/^\/+/g, "").replace(new RegExp(`^${basePath.replace(/^\/+/g, "").replace(/[|\\{}()[\]^$+*?.]/g, "\\$&").replace(/-/g, "\\x2d")}`, "g"), "");
114
+ }
115
+ return path;
116
+ }
117
+
118
+ //# sourceMappingURL=persistMetroAssets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/export/persistMetroAssets.ts"],"sourcesContent":["import fs from 'fs';\nimport type { AssetData, AssetDataWithoutFiles } from 'metro';\nimport path from 'path';\n\nimport { Log } from '../log';\n\nexport function persistMetroAssetsAsync(\n assets: readonly AssetData[],\n {\n platform,\n outputDirectory,\n basePath,\n }: {\n platform: string;\n outputDirectory: string;\n basePath?: string;\n }\n) {\n const files = assets.reduce<Record<string, string>>((acc, asset) => {\n const validScales = new Set(filterPlatformAssetScales(platform, asset.scales));\n\n asset.scales.forEach((scale, idx) => {\n if (!validScales.has(scale)) {\n return;\n }\n const src = asset.files[idx];\n const dest = path.join(outputDirectory, getAssetLocalPath(asset, { scale, basePath }));\n acc[src] = dest;\n });\n return acc;\n }, {});\n\n return copyAll(files);\n}\n\nfunction copyAll(filesToCopy: Record<string, string>) {\n const queue = Object.keys(filesToCopy);\n if (queue.length === 0) {\n return;\n }\n\n Log.log(`Copying ${queue.length} asset files`);\n return new Promise<void>((resolve, reject) => {\n const copyNext = (error?: NodeJS.ErrnoException) => {\n if (error) {\n return reject(error);\n }\n if (queue.length) {\n // queue.length === 0 is checked in previous branch, so this is string\n const src = queue.shift() as string;\n const dest = filesToCopy[src];\n copy(src, dest, copyNext);\n } else {\n Log.log('Persisted assets');\n resolve();\n }\n };\n copyNext();\n });\n}\n\nfunction copy(src: string, dest: string, callback: (error: NodeJS.ErrnoException) => void): void {\n fs.mkdir(path.dirname(dest), { recursive: true }, (err?) => {\n if (err) {\n callback(err);\n return;\n }\n fs.createReadStream(src).pipe(fs.createWriteStream(dest)).on('finish', callback);\n });\n}\n\nconst ALLOWED_SCALES: { [key: string]: number[] } = {\n ios: [1, 2, 3],\n};\n\nfunction filterPlatformAssetScales(platform: string, scales: readonly number[]): readonly number[] {\n const whitelist: number[] = ALLOWED_SCALES[platform];\n if (!whitelist) {\n return scales;\n }\n const result = scales.filter((scale) => whitelist.includes(scale));\n if (!result.length && scales.length) {\n // No matching scale found, but there are some available. Ideally we don't\n // want to be in this situation and should throw, but for now as a fallback\n // let's just use the closest larger image\n const maxScale = whitelist[whitelist.length - 1];\n for (const scale of scales) {\n if (scale > maxScale) {\n result.push(scale);\n break;\n }\n }\n\n // There is no larger scales available, use the largest we have\n if (!result.length) {\n result.push(scales[scales.length - 1]);\n }\n }\n return result;\n}\n\nfunction getAssetLocalPath(\n asset: AssetDataWithoutFiles,\n { basePath, scale }: { basePath?: string; scale: number }\n): string {\n const suffix = scale === 1 ? '' : `@${scale}x`;\n const fileName = `${asset.name + suffix}.${asset.type}`;\n\n const adjustedHttpServerLocation = stripAssetPrefix(asset.httpServerLocation, basePath);\n return path.join(\n // Assets can have relative paths outside of the project root.\n // Replace `../` with `_` to make sure they don't end up outside of\n // the expected assets directory.\n adjustedHttpServerLocation.replace(/^\\/+/g, '').replace(/\\.\\.\\//g, '_'),\n fileName\n );\n}\n\nexport function stripAssetPrefix(path: string, basePath?: string) {\n path = path.replace(/\\/assets\\?export_path=(.*)/, '$1');\n\n // TODO: Windows?\n if (basePath) {\n return path.replace(/^\\/+/g, '').replace(\n new RegExp(\n `^${basePath\n .replace(/^\\/+/g, '')\n .replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&')\n .replace(/-/g, '\\\\x2d')}`,\n 'g'\n ),\n ''\n );\n }\n return path;\n}\n"],"names":["persistMetroAssetsAsync","stripAssetPrefix","assets","platform","outputDirectory","basePath","files","reduce","acc","asset","validScales","Set","filterPlatformAssetScales","scales","forEach","scale","idx","has","src","dest","path","join","getAssetLocalPath","copyAll","filesToCopy","queue","Object","keys","length","Log","log","Promise","resolve","reject","copyNext","error","shift","copy","callback","fs","mkdir","dirname","recursive","err","createReadStream","pipe","createWriteStream","on","ALLOWED_SCALES","ios","whitelist","result","filter","includes","maxScale","push","suffix","fileName","name","type","adjustedHttpServerLocation","httpServerLocation","replace","RegExp"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/export/printBundleSizes.ts"],"sourcesContent":["import { Platform } from '@expo/config';\nimport chalk from 'chalk';\nimport prettyBytes from 'pretty-bytes';\nimport table from 'text-table';\n\nimport * as Log from '../log';\nimport { stripAnsi } from '../utils/ansi';\nimport { learnMore } from '../utils/link';\nimport { BundleOutput } from './fork-bundleAsync';\n\nexport function printBundleSizes(bundles: Partial<Record<Platform, BundleOutput>>) {\n const files: [string, string | Uint8Array][] = [];\n\n for (const [platform, bundleOutput] of Object.entries(bundles) as [\n Platform,\n Pick<BundleOutput, 'hermesBytecodeBundle' | 'code' | 'hermesSourcemap' | 'map'>\n ][]) {\n if (bundleOutput.hermesBytecodeBundle) {\n files.push([chalk.bold(`index.${platform}.hbc`), bundleOutput.hermesBytecodeBundle]);\n } else if (bundleOutput.code) {\n files.push([chalk.bold(`index.${platform}.js`), bundleOutput.code]);\n }\n if (bundleOutput.hermesSourcemap) {\n files.push([chalk.dim(`index.${platform}.hbc.map`), bundleOutput.hermesSourcemap]);\n } else if (bundleOutput.map) {\n files.push([chalk.dim(`index.${platform}.js.map`), bundleOutput.map]);\n }\n }\n\n Log.log();\n Log.log(createFilesTable(files.sort((a, b) => a[1].length - b[1].length)));\n Log.log();\n Log.log(\n chalk`💡 JavaScript bundle sizes affect startup time. {dim ${learnMore(\n `https://expo.fyi/javascript-bundle-sizes`\n )}}`\n );\n Log.log();\n\n return files;\n}\n\nexport function createFilesTable(files: [string, string | Uint8Array][]): string {\n const tableData = files.map((item, index) => {\n const fileBranch =\n index === 0 ? (files.length > 1 ? '┌' : '─') : index === files.length - 1 ? '└' : '├';\n\n return [`${fileBranch} ${item[0]}`, prettyBytes(Buffer.byteLength(item[1], 'utf8'))];\n });\n return table([['Bundle', 'Size'].map((v) => chalk.underline(v)), ...tableData], {\n align: ['l', 'r'],\n stringLength: (str) => stripAnsi(str)?.length ?? 0,\n });\n}\n"],"names":["printBundleSizes","createFilesTable","Log","bundles","files","platform","bundleOutput","Object","entries","hermesBytecodeBundle","push","chalk","bold","code","hermesSourcemap","dim","map","log","sort","a","b","length","learnMore","tableData","item","index","fileBranch","prettyBytes","Buffer","byteLength","stripAnsi","table","v","underline","align","stringLength","str"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/export/printBundleSizes.ts"],"sourcesContent":["import { Platform } from '@expo/config';\nimport chalk from 'chalk';\nimport prettyBytes from 'pretty-bytes';\nimport table from 'text-table';\n\nimport { BundleOutput } from './fork-bundleAsync';\nimport * as Log from '../log';\nimport { stripAnsi } from '../utils/ansi';\nimport { learnMore } from '../utils/link';\n\nexport function printBundleSizes(bundles: Partial<Record<Platform, BundleOutput>>) {\n const files: [string, string | Uint8Array][] = [];\n\n for (const [platform, bundleOutput] of Object.entries(bundles) as [\n Platform,\n Pick<BundleOutput, 'hermesBytecodeBundle' | 'code' | 'hermesSourcemap' | 'map'>,\n ][]) {\n if (bundleOutput.hermesBytecodeBundle) {\n files.push([chalk.bold(`index.${platform}.hbc`), bundleOutput.hermesBytecodeBundle]);\n } else if (bundleOutput.code) {\n files.push([chalk.bold(`index.${platform}.js`), bundleOutput.code]);\n }\n if (bundleOutput.hermesSourcemap) {\n files.push([chalk.dim(`index.${platform}.hbc.map`), bundleOutput.hermesSourcemap]);\n } else if (bundleOutput.map) {\n files.push([chalk.dim(`index.${platform}.js.map`), bundleOutput.map]);\n }\n }\n\n Log.log();\n Log.log(createFilesTable(files.sort((a, b) => a[1].length - b[1].length)));\n Log.log();\n Log.log(\n chalk`💡 JavaScript bundle sizes affect startup time. {dim ${learnMore(\n `https://expo.fyi/javascript-bundle-sizes`\n )}}`\n );\n Log.log();\n\n return files;\n}\n\nexport function createFilesTable(files: [string, string | Uint8Array][]): string {\n const tableData = files.map((item, index) => {\n const fileBranch =\n index === 0 ? (files.length > 1 ? '┌' : '─') : index === files.length - 1 ? '└' : '├';\n\n return [`${fileBranch} ${item[0]}`, prettyBytes(Buffer.byteLength(item[1], 'utf8'))];\n });\n return table([['Bundle', 'Size'].map((v) => chalk.underline(v)), ...tableData], {\n align: ['l', 'r'],\n stringLength: (str) => stripAnsi(str)?.length ?? 0,\n });\n}\n"],"names":["printBundleSizes","createFilesTable","Log","bundles","files","platform","bundleOutput","Object","entries","hermesBytecodeBundle","push","chalk","bold","code","hermesSourcemap","dim","map","log","sort","a","b","length","learnMore","tableData","item","index","fileBranch","prettyBytes","Buffer","byteLength","stripAnsi","table","v","underline","align","stringLength","str"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/export/saveAssets.ts"],"sourcesContent":["import { BundleAssetWithFileHashes } from '@expo/dev-server';\nimport path from 'path';\n\nimport * as Log from '../log';\nimport { chunk } from '../utils/array';\nimport { copyAsync } from '../utils/dir';\n\nconst debug = require('debug')('expo:export:saveAssets') as typeof console.log;\n\nexport type ManifestAsset = { fileHashes: string[]; files: string[]; hash: string };\n\nexport type Asset = ManifestAsset | BundleAssetWithFileHashes;\n\nfunction logAssetTask(projectRoot: string, action: 'uploading' | 'saving', pathName: string) {\n debug(`${action} ${pathName}`);\n\n const relativePath = pathName.replace(projectRoot, '');\n Log.log(`${action} ${relativePath}`);\n}\n\nfunction collectAssetPaths(assets: Asset[]): Record<string, string> {\n // Collect paths by key, also effectively handles duplicates in the array\n const paths: { [fileHash: string]: string } = {};\n assets.forEach((asset) => {\n asset.files.forEach((path: string, index: number) => {\n paths[asset.fileHashes[index]] = path;\n });\n });\n return paths;\n}\n\nexport async function saveAssetsAsync(\n projectRoot: string,\n { assets, outputDir }: { assets: Asset[]; outputDir: string }\n) {\n // Collect paths by key, also effectively handles duplicates in the array\n const paths = collectAssetPaths(assets);\n\n // save files one chunk at a time\n for (const keys of chunk(Object.entries(paths), 5)) {\n await Promise.all(\n keys.map(([key, pathName]) => {\n logAssetTask(projectRoot, 'saving', pathName);\n // copy file over to assetPath\n return copyAsync(pathName, path.join(outputDir, 'assets', key));\n })\n );\n }\n Log.log('Files successfully saved.');\n}\n"],"names":["saveAssetsAsync","Log","debug","require","logAssetTask","projectRoot","action","pathName","relativePath","replace","log","collectAssetPaths","assets","paths","forEach","asset","files","path","index","fileHashes","outputDir","keys","chunk","Object","entries","Promise","all","map","key","copyAsync","join"],"mappings":"AAAA;;;;QA+BsBA,eAAe,GAAfA,eAAe;AA9BpB,IAAA,KAAM,kCAAN,MAAM,EAAA;AAEXC,IAAAA,GAAG,mCAAM,QAAQ,EAAd;AACO,IAAA,MAAgB,WAAhB,gBAAgB,CAAA;AACZ,IAAA,IAAc,WAAd,cAAc,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAExC,MAAMC,KAAK,GAAGC,OAAO,CAAC,OAAO,CAAC,CAAC,wBAAwB,CAAC,AAAsB,AAAC;AAM/E,SAASC,YAAY,CAACC,WAAmB,EAAEC,MAA8B,EAAEC,QAAgB,EAAE;IAC3FL,KAAK,CAAC,CAAC,EAAEI,MAAM,CAAC,CAAC,EAAEC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAE/B,MAAMC,YAAY,GAAGD,QAAQ,CAACE,OAAO,CAACJ,WAAW,EAAE,EAAE,CAAC,AAAC;IACvDJ,GAAG,CAACS,GAAG,CAAC,CAAC,EAAEJ,MAAM,CAAC,CAAC,EAAEE,YAAY,CAAC,CAAC,CAAC,CAAC;CACtC;AAED,SAASG,iBAAiB,CAACC,MAAe,EAA0B;IAClE,yEAAyE;IACzE,MAAMC,KAAK,GAAmC,EAAE,AAAC;IACjDD,MAAM,CAACE,OAAO,CAAC,CAACC,KAAK,GAAK;QACxBA,KAAK,CAACC,KAAK,CAACF,OAAO,CAAC,CAACG,IAAY,EAAEC,KAAa,GAAK;YACnDL,KAAK,CAACE,KAAK,CAACI,UAAU,CAACD,KAAK,CAAC,CAAC,GAAGD,IAAI,CAAC;SACvC,CAAC,CAAC;KACJ,CAAC,CAAC;IACH,OAAOJ,KAAK,CAAC;CACd;AAEM,eAAeb,eAAe,CACnCK,WAAmB,EACnB,EAAEO,MAAM,CAAA,EAAEQ,SAAS,CAAA,EAA0C,EAC7D;IACA,yEAAyE;IACzE,MAAMP,KAAK,GAAGF,iBAAiB,CAACC,MAAM,CAAC,AAAC;IAExC,iCAAiC;IACjC,KAAK,MAAMS,IAAI,IAAIC,CAAAA,GAAAA,MAAK,AAA0B,CAAA,MAA1B,CAACC,MAAM,CAACC,OAAO,CAACX,KAAK,CAAC,EAAE,CAAC,CAAC,CAAE;QAClD,MAAMY,OAAO,CAACC,GAAG,CACfL,IAAI,CAACM,GAAG,CAAC,CAAC,CAACC,GAAG,EAAErB,QAAQ,CAAC,GAAK;YAC5BH,YAAY,CAACC,WAAW,EAAE,QAAQ,EAAEE,QAAQ,CAAC,CAAC;YAC9C,8BAA8B;YAC9B,OAAOsB,CAAAA,GAAAA,IAAS,AAA+C,CAAA,UAA/C,CAACtB,QAAQ,EAAEU,KAAI,QAAA,CAACa,IAAI,CAACV,SAAS,EAAE,QAAQ,EAAEQ,GAAG,CAAC,CAAC,CAAC;SACjE,CAAC,CACH,CAAC;KACH;IACD3B,GAAG,CAACS,GAAG,CAAC,2BAA2B,CAAC,CAAC;CACtC"}
1
+ {"version":3,"sources":["../../../src/export/saveAssets.ts"],"sourcesContent":["import path from 'path';\n\nimport { BundleAssetWithFileHashes } from './fork-bundleAsync';\nimport * as Log from '../log';\nimport { chunk } from '../utils/array';\nimport { copyAsync } from '../utils/dir';\n\nconst debug = require('debug')('expo:export:saveAssets') as typeof console.log;\n\nexport type ManifestAsset = { fileHashes: string[]; files: string[]; hash: string };\n\nexport type Asset = ManifestAsset | BundleAssetWithFileHashes;\n\nfunction logAssetTask(projectRoot: string, action: 'uploading' | 'saving', pathName: string) {\n debug(`${action} ${pathName}`);\n\n const relativePath = pathName.replace(projectRoot, '');\n Log.log(`${action} ${relativePath}`);\n}\n\nfunction collectAssetPaths(assets: Asset[]): Record<string, string> {\n // Collect paths by key, also effectively handles duplicates in the array\n const paths: { [fileHash: string]: string } = {};\n assets.forEach((asset) => {\n asset.files.forEach((path: string, index: number) => {\n paths[asset.fileHashes[index]] = path;\n });\n });\n return paths;\n}\n\nexport async function saveAssetsAsync(\n projectRoot: string,\n { assets, outputDir }: { assets: Asset[]; outputDir: string }\n) {\n // Collect paths by key, also effectively handles duplicates in the array\n const paths = collectAssetPaths(assets);\n\n // save files one chunk at a time\n for (const keys of chunk(Object.entries(paths), 5)) {\n await Promise.all(\n keys.map(([key, pathName]) => {\n logAssetTask(projectRoot, 'saving', pathName);\n // copy file over to assetPath\n return copyAsync(pathName, path.join(outputDir, 'assets', key));\n })\n );\n }\n Log.log('Files successfully saved.');\n}\n"],"names":["saveAssetsAsync","Log","debug","require","logAssetTask","projectRoot","action","pathName","relativePath","replace","log","collectAssetPaths","assets","paths","forEach","asset","files","path","index","fileHashes","outputDir","keys","chunk","Object","entries","Promise","all","map","key","copyAsync","join"],"mappings":"AAAA;;;;QA+BsBA,eAAe,GAAfA,eAAe;AA/BpB,IAAA,KAAM,kCAAN,MAAM,EAAA;AAGXC,IAAAA,GAAG,mCAAM,QAAQ,EAAd;AACO,IAAA,MAAgB,WAAhB,gBAAgB,CAAA;AACZ,IAAA,IAAc,WAAd,cAAc,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAExC,MAAMC,KAAK,GAAGC,OAAO,CAAC,OAAO,CAAC,CAAC,wBAAwB,CAAC,AAAsB,AAAC;AAM/E,SAASC,YAAY,CAACC,WAAmB,EAAEC,MAA8B,EAAEC,QAAgB,EAAE;IAC3FL,KAAK,CAAC,CAAC,EAAEI,MAAM,CAAC,CAAC,EAAEC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAE/B,MAAMC,YAAY,GAAGD,QAAQ,CAACE,OAAO,CAACJ,WAAW,EAAE,EAAE,CAAC,AAAC;IACvDJ,GAAG,CAACS,GAAG,CAAC,CAAC,EAAEJ,MAAM,CAAC,CAAC,EAAEE,YAAY,CAAC,CAAC,CAAC,CAAC;CACtC;AAED,SAASG,iBAAiB,CAACC,MAAe,EAA0B;IAClE,yEAAyE;IACzE,MAAMC,KAAK,GAAmC,EAAE,AAAC;IACjDD,MAAM,CAACE,OAAO,CAAC,CAACC,KAAK,GAAK;QACxBA,KAAK,CAACC,KAAK,CAACF,OAAO,CAAC,CAACG,IAAY,EAAEC,KAAa,GAAK;YACnDL,KAAK,CAACE,KAAK,CAACI,UAAU,CAACD,KAAK,CAAC,CAAC,GAAGD,IAAI,CAAC;SACvC,CAAC,CAAC;KACJ,CAAC,CAAC;IACH,OAAOJ,KAAK,CAAC;CACd;AAEM,eAAeb,eAAe,CACnCK,WAAmB,EACnB,EAAEO,MAAM,CAAA,EAAEQ,SAAS,CAAA,EAA0C,EAC7D;IACA,yEAAyE;IACzE,MAAMP,KAAK,GAAGF,iBAAiB,CAACC,MAAM,CAAC,AAAC;IAExC,iCAAiC;IACjC,KAAK,MAAMS,IAAI,IAAIC,CAAAA,GAAAA,MAAK,AAA0B,CAAA,MAA1B,CAACC,MAAM,CAACC,OAAO,CAACX,KAAK,CAAC,EAAE,CAAC,CAAC,CAAE;QAClD,MAAMY,OAAO,CAACC,GAAG,CACfL,IAAI,CAACM,GAAG,CAAC,CAAC,CAACC,GAAG,EAAErB,QAAQ,CAAC,GAAK;YAC5BH,YAAY,CAACC,WAAW,EAAE,QAAQ,EAAEE,QAAQ,CAAC,CAAC;YAC9C,8BAA8B;YAC9B,OAAOsB,CAAAA,GAAAA,IAAS,AAA+C,CAAA,UAA/C,CAACtB,QAAQ,EAAEU,KAAI,QAAA,CAACa,IAAI,CAACV,SAAS,EAAE,QAAQ,EAAEQ,GAAG,CAAC,CAAC,CAAC;SACjE,CAAC,CACH,CAAC;KACH;IACD3B,GAAG,CAACS,GAAG,CAAC,2BAA2B,CAAC,CAAC;CACtC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/export/web/exportWebAsync.ts"],"sourcesContent":["import { getConfig } from '@expo/config';\nimport chalk from 'chalk';\n\nimport { Log } from '../../log';\nimport { WebSupportProjectPrerequisite } from '../../start/doctor/web/WebSupportProjectPrerequisite';\nimport { getPlatformBundlers } from '../../start/server/platformBundlers';\nimport { WebpackBundlerDevServer } from '../../start/server/webpack/WebpackBundlerDevServer';\nimport { CommandError } from '../../utils/errors';\nimport { setNodeEnv } from '../../utils/nodeEnv';\nimport { Options } from './resolveOptions';\n\nexport async function exportWebAsync(projectRoot: string, options: Options) {\n // Ensure webpack is available\n await new WebSupportProjectPrerequisite(projectRoot).assertAsync();\n\n setNodeEnv(options.dev ? 'development' : 'production');\n require('@expo/env').load(projectRoot);\n\n const { exp } = getConfig(projectRoot);\n const platformBundlers = getPlatformBundlers(exp);\n // Create a bundler interface\n const bundler = new WebpackBundlerDevServer(projectRoot, platformBundlers, false);\n\n // If the user set `web.bundler: 'metro'` then they should use `expo export` instead.\n if (!bundler.isTargetingWeb()) {\n throw new CommandError(\n chalk`{bold expo export:web} can only be used with Webpack. Use {bold expo export} for other bundlers.`\n );\n }\n\n Log.log(`Exporting with Webpack...`);\n\n // Bundle the app\n await bundler.bundleAsync({\n mode: options.dev ? 'development' : 'production',\n clear: options.clear,\n });\n}\n"],"names":["exportWebAsync","projectRoot","options","WebSupportProjectPrerequisite","assertAsync","setNodeEnv","dev","require","load","exp","getConfig","platformBundlers","getPlatformBundlers","bundler","WebpackBundlerDevServer","isTargetingWeb","CommandError","chalk","Log","log","bundleAsync","mode","clear"],"mappings":"AAAA;;;;QAWsBA,cAAc,GAAdA,cAAc;AAXV,IAAA,OAAc,WAAd,cAAc,CAAA;AACtB,IAAA,MAAO,kCAAP,OAAO,EAAA;AAEL,IAAA,IAAW,WAAX,WAAW,CAAA;AACe,IAAA,8BAAsD,WAAtD,sDAAsD,CAAA;AAChE,IAAA,iBAAqC,WAArC,qCAAqC,CAAA;AACjC,IAAA,wBAAoD,WAApD,oDAAoD,CAAA;AAC/D,IAAA,OAAoB,WAApB,oBAAoB,CAAA;AACtB,IAAA,QAAqB,WAArB,qBAAqB,CAAA;;;;;;AAGzC,eAAeA,cAAc,CAACC,WAAmB,EAAEC,OAAgB,EAAE;IAC1E,8BAA8B;IAC9B,MAAM,IAAIC,8BAA6B,8BAAA,CAACF,WAAW,CAAC,CAACG,WAAW,EAAE,CAAC;IAEnEC,CAAAA,GAAAA,QAAU,AAA4C,CAAA,WAA5C,CAACH,OAAO,CAACI,GAAG,GAAG,aAAa,GAAG,YAAY,CAAC,CAAC;IACvDC,OAAO,CAAC,WAAW,CAAC,CAACC,IAAI,CAACP,WAAW,CAAC,CAAC;IAEvC,MAAM,EAAEQ,GAAG,CAAA,EAAE,GAAGC,CAAAA,GAAAA,OAAS,AAAa,CAAA,UAAb,CAACT,WAAW,CAAC,AAAC;IACvC,MAAMU,gBAAgB,GAAGC,CAAAA,GAAAA,iBAAmB,AAAK,CAAA,oBAAL,CAACH,GAAG,CAAC,AAAC;IAClD,6BAA6B;IAC7B,MAAMI,OAAO,GAAG,IAAIC,wBAAuB,wBAAA,CAACb,WAAW,EAAEU,gBAAgB,EAAE,KAAK,CAAC,AAAC;IAElF,qFAAqF;IACrF,IAAI,CAACE,OAAO,CAACE,cAAc,EAAE,EAAE;QAC7B,MAAM,IAAIC,OAAY,aAAA,CACpBC,MAAK,QAAA,CAAC,gGAAgG,CAAC,CACxG,CAAC;KACH;IAEDC,IAAG,IAAA,CAACC,GAAG,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC;IAErC,iBAAiB;IACjB,MAAMN,OAAO,CAACO,WAAW,CAAC;QACxBC,IAAI,EAAEnB,OAAO,CAACI,GAAG,GAAG,aAAa,GAAG,YAAY;QAChDgB,KAAK,EAAEpB,OAAO,CAACoB,KAAK;KACrB,CAAC,CAAC;CACJ"}
1
+ {"version":3,"sources":["../../../../src/export/web/exportWebAsync.ts"],"sourcesContent":["import { getConfig } from '@expo/config';\nimport chalk from 'chalk';\n\nimport { Options } from './resolveOptions';\nimport { Log } from '../../log';\nimport { WebSupportProjectPrerequisite } from '../../start/doctor/web/WebSupportProjectPrerequisite';\nimport { getPlatformBundlers } from '../../start/server/platformBundlers';\nimport { WebpackBundlerDevServer } from '../../start/server/webpack/WebpackBundlerDevServer';\nimport { CommandError } from '../../utils/errors';\nimport { setNodeEnv } from '../../utils/nodeEnv';\n\nexport async function exportWebAsync(projectRoot: string, options: Options) {\n // Ensure webpack is available\n await new WebSupportProjectPrerequisite(projectRoot).assertAsync();\n\n setNodeEnv(options.dev ? 'development' : 'production');\n require('@expo/env').load(projectRoot);\n\n const { exp } = getConfig(projectRoot);\n const platformBundlers = getPlatformBundlers(exp);\n // Create a bundler interface\n const bundler = new WebpackBundlerDevServer(projectRoot, platformBundlers, false);\n\n // If the user set `web.bundler: 'metro'` then they should use `expo export` instead.\n if (!bundler.isTargetingWeb()) {\n throw new CommandError(\n chalk`{bold expo export:web} can only be used with Webpack. Use {bold expo export} for other bundlers.`\n );\n }\n\n Log.log(`Exporting with Webpack...`);\n\n // Bundle the app\n await bundler.bundleAsync({\n mode: options.dev ? 'development' : 'production',\n clear: options.clear,\n });\n}\n"],"names":["exportWebAsync","projectRoot","options","WebSupportProjectPrerequisite","assertAsync","setNodeEnv","dev","require","load","exp","getConfig","platformBundlers","getPlatformBundlers","bundler","WebpackBundlerDevServer","isTargetingWeb","CommandError","chalk","Log","log","bundleAsync","mode","clear"],"mappings":"AAAA;;;;QAWsBA,cAAc,GAAdA,cAAc;AAXV,IAAA,OAAc,WAAd,cAAc,CAAA;AACtB,IAAA,MAAO,kCAAP,OAAO,EAAA;AAGL,IAAA,IAAW,WAAX,WAAW,CAAA;AACe,IAAA,8BAAsD,WAAtD,sDAAsD,CAAA;AAChE,IAAA,iBAAqC,WAArC,qCAAqC,CAAA;AACjC,IAAA,wBAAoD,WAApD,oDAAoD,CAAA;AAC/D,IAAA,OAAoB,WAApB,oBAAoB,CAAA;AACtB,IAAA,QAAqB,WAArB,qBAAqB,CAAA;;;;;;AAEzC,eAAeA,cAAc,CAACC,WAAmB,EAAEC,OAAgB,EAAE;IAC1E,8BAA8B;IAC9B,MAAM,IAAIC,8BAA6B,8BAAA,CAACF,WAAW,CAAC,CAACG,WAAW,EAAE,CAAC;IAEnEC,CAAAA,GAAAA,QAAU,AAA4C,CAAA,WAA5C,CAACH,OAAO,CAACI,GAAG,GAAG,aAAa,GAAG,YAAY,CAAC,CAAC;IACvDC,OAAO,CAAC,WAAW,CAAC,CAACC,IAAI,CAACP,WAAW,CAAC,CAAC;IAEvC,MAAM,EAAEQ,GAAG,CAAA,EAAE,GAAGC,CAAAA,GAAAA,OAAS,AAAa,CAAA,UAAb,CAACT,WAAW,CAAC,AAAC;IACvC,MAAMU,gBAAgB,GAAGC,CAAAA,GAAAA,iBAAmB,AAAK,CAAA,oBAAL,CAACH,GAAG,CAAC,AAAC;IAClD,6BAA6B;IAC7B,MAAMI,OAAO,GAAG,IAAIC,wBAAuB,wBAAA,CAACb,WAAW,EAAEU,gBAAgB,EAAE,KAAK,CAAC,AAAC;IAElF,qFAAqF;IACrF,IAAI,CAACE,OAAO,CAACE,cAAc,EAAE,EAAE;QAC7B,MAAM,IAAIC,OAAY,aAAA,CACpBC,MAAK,QAAA,CAAC,gGAAgG,CAAC,CACxG,CAAC;KACH;IAEDC,IAAG,IAAA,CAACC,GAAG,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC;IAErC,iBAAiB;IACjB,MAAMN,OAAO,CAACO,WAAW,CAAC;QACxBC,IAAI,EAAEnB,OAAO,CAACI,GAAG,GAAG,aAAa,GAAG,YAAY;QAChDgB,KAAK,EAAEpB,OAAO,CAACoB,KAAK;KACrB,CAAC,CAAC;CACJ"}
@@ -31,10 +31,14 @@ const debug = require("debug")("expo:export:write");
31
31
  */ function createBundleHash(bundle) {
32
32
  return _crypto.default.createHash("md5").update(bundle).digest("hex");
33
33
  }
34
- async function writeBundlesAsync({ bundles , outputDir }) {
34
+ async function writeBundlesAsync({ bundles , outputDir , useWebSSG }) {
35
35
  const hashes = {};
36
36
  const fileNames = {};
37
37
  for (const [platform, bundleOutput] of Object.entries(bundles)){
38
+ // TODO: Move native to use the newer `_expo/...` bundle writing system.
39
+ if (platform === "web" && useWebSSG) {
40
+ continue;
41
+ }
38
42
  var _hermesBytecodeBundle;
39
43
  const bundle = (_hermesBytecodeBundle = bundleOutput.hermesBytecodeBundle) != null ? _hermesBytecodeBundle : bundleOutput.code;
40
44
  const hash = createBundleHash(bundle);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/export/writeContents.ts"],"sourcesContent":["import { Platform } from '@expo/config';\nimport crypto from 'crypto';\nimport fs from 'fs/promises';\nimport path from 'path';\n\nimport { createMetadataJson } from './createMetadataJson';\nimport { BundleOutput } from './fork-bundleAsync';\nimport { Asset } from './saveAssets';\n\nconst debug = require('debug')('expo:export:write') as typeof console.log;\n\n/**\n * @param props.platform native platform for the bundle\n * @param props.format extension to use for the name\n * @param props.hash crypto hash for the bundle contents\n * @returns filename for the JS bundle.\n */\nfunction createBundleFileName({\n platform,\n format,\n hash,\n}: {\n platform: string;\n format: 'javascript' | 'bytecode';\n hash: string;\n}): string {\n return `${platform}-${hash}.${format === 'javascript' ? 'js' : 'hbc'}`;\n}\n\n/**\n * @param bundle JS bundle as a string\n * @returns crypto hash for the provided bundle\n */\nfunction createBundleHash(bundle: string | Uint8Array): string {\n return crypto.createHash('md5').update(bundle).digest('hex');\n}\n\nexport async function writeBundlesAsync({\n bundles,\n outputDir,\n}: {\n bundles: Partial<Record<Platform, Pick<BundleOutput, 'hermesBytecodeBundle' | 'code'>>>;\n outputDir: string;\n}) {\n const hashes: Partial<Record<Platform, string>> = {};\n const fileNames: Partial<Record<Platform, string>> = {};\n\n for (const [platform, bundleOutput] of Object.entries(bundles) as [\n Platform,\n Pick<BundleOutput, 'hermesBytecodeBundle' | 'code'>\n ][]) {\n const bundle = bundleOutput.hermesBytecodeBundle ?? bundleOutput.code;\n const hash = createBundleHash(bundle);\n const fileName = createBundleFileName({\n platform,\n format: bundleOutput.hermesBytecodeBundle ? 'bytecode' : 'javascript',\n hash,\n });\n\n hashes[platform] = hash;\n fileNames[platform] = fileName;\n await fs.writeFile(path.join(outputDir, fileName), bundle);\n }\n\n return { hashes, fileNames };\n}\n\ntype SourceMapWriteResult = {\n platform: string;\n fileName: string;\n hash: string;\n map: string;\n comment: string;\n};\n\nexport async function writeSourceMapsAsync({\n bundles,\n hashes,\n fileNames,\n outputDir,\n}: {\n bundles: Record<\n string,\n Pick<BundleOutput, 'hermesSourcemap' | 'map' | 'hermesBytecodeBundle' | 'code'>\n >;\n hashes?: Record<string, string>;\n fileNames?: Record<string, string>;\n outputDir: string;\n}): Promise<SourceMapWriteResult[]> {\n return (\n await Promise.all(\n Object.entries(bundles).map(async ([platform, bundle]) => {\n const sourceMap = bundle.hermesSourcemap ?? bundle.map;\n if (!sourceMap) {\n debug(`Skip writing sourcemap (platform: ${platform})`);\n return null;\n }\n\n const hash =\n hashes?.[platform] ?? createBundleHash(bundle.hermesBytecodeBundle ?? bundle.code);\n const mapName = `${platform}-${hash}.map`;\n await fs.writeFile(path.join(outputDir, mapName), sourceMap);\n\n const jsBundleFileName =\n fileNames?.[platform] ??\n createBundleFileName({\n platform,\n format: bundle.hermesBytecodeBundle ? 'bytecode' : 'javascript',\n hash,\n });\n const jsPath = path.join(outputDir, jsBundleFileName);\n\n // Add correct mapping to sourcemap paths\n const mappingComment = `\\n//# sourceMappingURL=${mapName}`;\n await fs.appendFile(jsPath, mappingComment);\n return {\n platform,\n fileName: mapName,\n hash,\n map: sourceMap,\n comment: mappingComment,\n };\n })\n )\n ).filter(Boolean) as SourceMapWriteResult[];\n}\n\nexport async function writeMetadataJsonAsync({\n outputDir,\n bundles,\n fileNames,\n}: {\n outputDir: string;\n bundles: Record<string, Pick<BundleOutput, 'assets'>>;\n fileNames: Record<string, string>;\n}) {\n const contents = createMetadataJson({\n bundles,\n fileNames,\n });\n const metadataPath = path.join(outputDir, 'metadata.json');\n debug(`Writing metadata.json to ${metadataPath}`);\n await fs.writeFile(metadataPath, JSON.stringify(contents));\n return contents;\n}\n\nexport async function writeAssetMapAsync({\n outputDir,\n assets,\n}: {\n outputDir: string;\n assets: Asset[];\n}) {\n // Convert the assets array to a k/v pair where the asset hash is the key and the asset is the value.\n const contents = Object.fromEntries(assets.map((asset) => [asset.hash, asset]));\n await fs.writeFile(path.join(outputDir, 'assetmap.json'), JSON.stringify(contents));\n return contents;\n}\n\nexport async function writeDebugHtmlAsync({\n outputDir,\n fileNames,\n}: {\n outputDir: string;\n fileNames: Record<string, string>;\n}) {\n // Make a debug html so user can debug their bundles\n const contents = `\n ${Object.values(fileNames)\n .map((fileName) => `<script src=\"${path.join('bundles', fileName)}\"></script>`)\n .join('\\n ')}\n Open up this file in Chrome. In the JavaScript developer console, navigate to the Source tab.\n You can see a red colored folder containing the original source code from your bundle.\n `;\n\n await fs.writeFile(path.join(outputDir, 'debug.html'), contents);\n return contents;\n}\n"],"names":["writeBundlesAsync","writeSourceMapsAsync","writeMetadataJsonAsync","writeAssetMapAsync","writeDebugHtmlAsync","debug","require","createBundleFileName","platform","format","hash","createBundleHash","bundle","crypto","createHash","update","digest","bundles","outputDir","hashes","fileNames","bundleOutput","Object","entries","hermesBytecodeBundle","code","fileName","fs","writeFile","path","join","Promise","all","map","sourceMap","hermesSourcemap","mapName","jsBundleFileName","jsPath","mappingComment","appendFile","comment","filter","Boolean","contents","createMetadataJson","metadataPath","JSON","stringify","assets","fromEntries","asset","values"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/export/writeContents.ts"],"sourcesContent":["import { Platform } from '@expo/config';\nimport crypto from 'crypto';\nimport fs from 'fs/promises';\nimport path from 'path';\n\nimport { createMetadataJson } from './createMetadataJson';\nimport { BundleOutput } from './fork-bundleAsync';\nimport { Asset } from './saveAssets';\n\nconst debug = require('debug')('expo:export:write') as typeof console.log;\n\n/**\n * @param props.platform native platform for the bundle\n * @param props.format extension to use for the name\n * @param props.hash crypto hash for the bundle contents\n * @returns filename for the JS bundle.\n */\nfunction createBundleFileName({\n platform,\n format,\n hash,\n}: {\n platform: string;\n format: 'javascript' | 'bytecode';\n hash: string;\n}): string {\n return `${platform}-${hash}.${format === 'javascript' ? 'js' : 'hbc'}`;\n}\n\n/**\n * @param bundle JS bundle as a string\n * @returns crypto hash for the provided bundle\n */\nfunction createBundleHash(bundle: string | Uint8Array): string {\n return crypto.createHash('md5').update(bundle).digest('hex');\n}\n\nexport async function writeBundlesAsync({\n bundles,\n outputDir,\n useWebSSG,\n}: {\n bundles: Partial<Record<Platform, Pick<BundleOutput, 'hermesBytecodeBundle' | 'code'>>>;\n outputDir: string;\n useWebSSG?: boolean;\n}) {\n const hashes: Partial<Record<Platform, string>> = {};\n const fileNames: Partial<Record<Platform, string>> = {};\n\n for (const [platform, bundleOutput] of Object.entries(bundles) as [\n Platform,\n Pick<BundleOutput, 'hermesBytecodeBundle' | 'code'>,\n ][]) {\n // TODO: Move native to use the newer `_expo/...` bundle writing system.\n if (platform === 'web' && useWebSSG) {\n continue;\n }\n const bundle = bundleOutput.hermesBytecodeBundle ?? bundleOutput.code;\n const hash = createBundleHash(bundle);\n const fileName = createBundleFileName({\n platform,\n format: bundleOutput.hermesBytecodeBundle ? 'bytecode' : 'javascript',\n hash,\n });\n\n hashes[platform] = hash;\n fileNames[platform] = fileName;\n await fs.writeFile(path.join(outputDir, fileName), bundle);\n }\n\n return { hashes, fileNames };\n}\n\ntype SourceMapWriteResult = {\n platform: string;\n fileName: string;\n hash: string;\n map: string;\n comment: string;\n};\n\nexport async function writeSourceMapsAsync({\n bundles,\n hashes,\n fileNames,\n outputDir,\n}: {\n bundles: Record<\n string,\n Pick<BundleOutput, 'hermesSourcemap' | 'map' | 'hermesBytecodeBundle' | 'code'>\n >;\n hashes?: Record<string, string>;\n fileNames?: Record<string, string>;\n outputDir: string;\n}): Promise<SourceMapWriteResult[]> {\n return (\n await Promise.all(\n Object.entries(bundles).map(async ([platform, bundle]) => {\n const sourceMap = bundle.hermesSourcemap ?? bundle.map;\n if (!sourceMap) {\n debug(`Skip writing sourcemap (platform: ${platform})`);\n return null;\n }\n\n const hash =\n hashes?.[platform] ?? createBundleHash(bundle.hermesBytecodeBundle ?? bundle.code);\n const mapName = `${platform}-${hash}.map`;\n await fs.writeFile(path.join(outputDir, mapName), sourceMap);\n\n const jsBundleFileName =\n fileNames?.[platform] ??\n createBundleFileName({\n platform,\n format: bundle.hermesBytecodeBundle ? 'bytecode' : 'javascript',\n hash,\n });\n const jsPath = path.join(outputDir, jsBundleFileName);\n\n // Add correct mapping to sourcemap paths\n const mappingComment = `\\n//# sourceMappingURL=${mapName}`;\n await fs.appendFile(jsPath, mappingComment);\n return {\n platform,\n fileName: mapName,\n hash,\n map: sourceMap,\n comment: mappingComment,\n };\n })\n )\n ).filter(Boolean) as SourceMapWriteResult[];\n}\n\nexport async function writeMetadataJsonAsync({\n outputDir,\n bundles,\n fileNames,\n}: {\n outputDir: string;\n bundles: Record<string, Pick<BundleOutput, 'assets'>>;\n fileNames: Record<string, string>;\n}) {\n const contents = createMetadataJson({\n bundles,\n fileNames,\n });\n const metadataPath = path.join(outputDir, 'metadata.json');\n debug(`Writing metadata.json to ${metadataPath}`);\n await fs.writeFile(metadataPath, JSON.stringify(contents));\n return contents;\n}\n\nexport async function writeAssetMapAsync({\n outputDir,\n assets,\n}: {\n outputDir: string;\n assets: Asset[];\n}) {\n // Convert the assets array to a k/v pair where the asset hash is the key and the asset is the value.\n const contents = Object.fromEntries(assets.map((asset) => [asset.hash, asset]));\n await fs.writeFile(path.join(outputDir, 'assetmap.json'), JSON.stringify(contents));\n return contents;\n}\n\nexport async function writeDebugHtmlAsync({\n outputDir,\n fileNames,\n}: {\n outputDir: string;\n fileNames: Record<string, string>;\n}) {\n // Make a debug html so user can debug their bundles\n const contents = `\n ${Object.values(fileNames)\n .map((fileName) => `<script src=\"${path.join('bundles', fileName)}\"></script>`)\n .join('\\n ')}\n Open up this file in Chrome. In the JavaScript developer console, navigate to the Source tab.\n You can see a red colored folder containing the original source code from your bundle.\n `;\n\n await fs.writeFile(path.join(outputDir, 'debug.html'), contents);\n return contents;\n}\n"],"names":["writeBundlesAsync","writeSourceMapsAsync","writeMetadataJsonAsync","writeAssetMapAsync","writeDebugHtmlAsync","debug","require","createBundleFileName","platform","format","hash","createBundleHash","bundle","crypto","createHash","update","digest","bundles","outputDir","useWebSSG","hashes","fileNames","bundleOutput","Object","entries","hermesBytecodeBundle","code","fileName","fs","writeFile","path","join","Promise","all","map","sourceMap","hermesSourcemap","mapName","jsBundleFileName","jsPath","mappingComment","appendFile","comment","filter","Boolean","contents","createMetadataJson","metadataPath","JSON","stringify","assets","fromEntries","asset","values"],"mappings":"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"}
@@ -5,13 +5,13 @@ Object.defineProperty(exports, "__esModule", {
5
5
  exports.checkPackagesAsync = checkPackagesAsync;
6
6
  var _config = require("@expo/config");
7
7
  var _chalk = _interopRequireDefault(require("chalk"));
8
+ var _installAsync = require("./installAsync");
8
9
  var Log = _interopRequireWildcard(require("../log"));
9
10
  var _validateDependenciesVersions = require("../start/doctor/dependencies/validateDependenciesVersions");
10
11
  var _interactive = require("../utils/interactive");
11
12
  var _link = require("../utils/link");
12
13
  var _prompts = require("../utils/prompts");
13
14
  var _strings = require("../utils/strings");
14
- var _installAsync = require("./installAsync");
15
15
  function _interopRequireDefault(obj) {
16
16
  return obj && obj.__esModule ? obj : {
17
17
  default: obj
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/install/checkPackages.ts"],"sourcesContent":["import { getConfig } from '@expo/config';\nimport * as PackageManager from '@expo/package-manager';\nimport chalk from 'chalk';\n\nimport * as Log from '../log';\nimport {\n getVersionedDependenciesAsync,\n logIncorrectDependencies,\n} from '../start/doctor/dependencies/validateDependenciesVersions';\nimport { isInteractive } from '../utils/interactive';\nimport { learnMore } from '../utils/link';\nimport { confirmAsync } from '../utils/prompts';\nimport { joinWithCommasAnd } from '../utils/strings';\nimport { fixPackagesAsync } from './installAsync';\nimport { Options } from './resolveOptions';\n\nconst debug = require('debug')('expo:install:check') as typeof console.log;\n\n// Exposed for testing.\nexport async function checkPackagesAsync(\n projectRoot: string,\n {\n packages,\n packageManager,\n options: { fix },\n packageManagerArguments,\n }: {\n /**\n * List of packages to version\n * @example ['uuid', 'react-native-reanimated@latest']\n */\n packages: string[];\n /** Package manager to use when installing the versioned packages. */\n packageManager: PackageManager.NodePackageManager;\n\n /** How the check should resolve */\n options: Pick<Options, 'fix'>;\n /**\n * Extra parameters to pass to the `packageManager` when installing versioned packages.\n * @example ['--no-save']\n */\n packageManagerArguments: string[];\n }\n) {\n // Read the project Expo config without plugins.\n const { exp, pkg } = getConfig(projectRoot, {\n // Sometimes users will add a plugin to the config before installing the library,\n // this wouldn't work unless we dangerously disable plugin serialization.\n skipPlugins: true,\n });\n\n if (pkg.expo?.install?.exclude?.length) {\n Log.log(\n chalk`Skipped ${fix ? 'fixing' : 'checking'} dependencies: ${joinWithCommasAnd(\n pkg.expo.install.exclude\n )}. These dependencies are listed in {bold expo.install.exclude} in package.json. ${learnMore(\n 'https://expo.dev/more/expo-cli/#configuring-dependency-validation'\n )}`\n );\n }\n\n const dependencies = await getVersionedDependenciesAsync(projectRoot, exp, pkg, packages);\n\n if (!dependencies.length) {\n Log.exit(chalk.greenBright('Dependencies are up to date'), 0);\n }\n\n logIncorrectDependencies(dependencies);\n\n const value =\n // If `--fix` then always fix.\n fix ||\n // Otherwise prompt to fix when not running in CI.\n (isInteractive() && (await confirmAsync({ message: 'Fix dependencies?' }).catch(() => false)));\n\n if (value) {\n debug('Installing fixed dependencies:', dependencies);\n // Install the corrected dependencies.\n return fixPackagesAsync(projectRoot, {\n packageManager,\n packages: dependencies,\n packageManagerArguments,\n sdkVersion: exp.sdkVersion!,\n });\n }\n // Exit with non-zero exit code if any of the dependencies are out of date.\n Log.exit(chalk.red('Found outdated dependencies'), 1);\n}\n"],"names":["checkPackagesAsync","Log","debug","require","projectRoot","packages","packageManager","options","fix","packageManagerArguments","pkg","exp","getConfig","skipPlugins","expo","install","exclude","length","log","chalk","joinWithCommasAnd","learnMore","dependencies","getVersionedDependenciesAsync","exit","greenBright","logIncorrectDependencies","value","isInteractive","confirmAsync","message","catch","fixPackagesAsync","sdkVersion","red"],"mappings":"AAAA;;;;QAmBsBA,kBAAkB,GAAlBA,kBAAkB;AAnBd,IAAA,OAAc,WAAd,cAAc,CAAA;AAEtB,IAAA,MAAO,kCAAP,OAAO,EAAA;AAEbC,IAAAA,GAAG,mCAAM,QAAQ,EAAd;AAIR,IAAA,6BAA2D,WAA3D,2DAA2D,CAAA;AACpC,IAAA,YAAsB,WAAtB,sBAAsB,CAAA;AAC1B,IAAA,KAAe,WAAf,eAAe,CAAA;AACZ,IAAA,QAAkB,WAAlB,kBAAkB,CAAA;AACb,IAAA,QAAkB,WAAlB,kBAAkB,CAAA;AACnB,IAAA,aAAgB,WAAhB,gBAAgB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGjD,MAAMC,KAAK,GAAGC,OAAO,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAAC,AAAsB,AAAC;AAGpE,eAAeH,kBAAkB,CACtCI,WAAmB,EACnB,EACEC,QAAQ,CAAA,EACRC,cAAc,CAAA,EACdC,OAAO,EAAE,EAAEC,GAAG,CAAA,EAAE,CAAA,EAChBC,uBAAuB,CAAA,EAiBxB,EACD;QAQIC,GAAQ;IAPZ,gDAAgD;IAChD,MAAM,EAAEC,GAAG,CAAA,EAAED,GAAG,CAAA,EAAE,GAAGE,CAAAA,GAAAA,OAAS,AAI5B,CAAA,UAJ4B,CAACR,WAAW,EAAE;QAC1C,iFAAiF;QACjF,yEAAyE;QACzES,WAAW,EAAE,IAAI;KAClB,CAAC,AAAC;IAEH,IAAIH,CAAAA,GAAQ,GAARA,GAAG,CAACI,IAAI,SAAS,GAAjBJ,KAAAA,CAAiB,GAAjBA,QAAAA,GAAQ,CAAEK,OAAO,SAAA,GAAjBL,KAAAA,CAAiB,GAAjBA,aAAmBM,OAAO,SAAT,GAAjBN,KAAAA,CAAiB,QAAWO,MAAM,AAAjB,EAAmB;QACtChB,GAAG,CAACiB,GAAG,CACLC,MAAK,QAAA,CAAC,QAAQ,EAAEX,GAAG,GAAG,QAAQ,GAAG,UAAU,CAAC,eAAe,EAAEY,CAAAA,GAAAA,QAAiB,AAE7E,CAAA,kBAF6E,CAC5EV,GAAG,CAACI,IAAI,CAACC,OAAO,CAACC,OAAO,CACzB,CAAC,gFAAgF,EAAEK,CAAAA,GAAAA,KAAS,AAE5F,CAAA,UAF4F,CAC3F,mEAAmE,CACpE,CAAC,CAAC,CACJ,CAAC;KACH;IAED,MAAMC,YAAY,GAAG,MAAMC,CAAAA,GAAAA,6BAA6B,AAAiC,CAAA,8BAAjC,CAACnB,WAAW,EAAEO,GAAG,EAAED,GAAG,EAAEL,QAAQ,CAAC,AAAC;IAE1F,IAAI,CAACiB,YAAY,CAACL,MAAM,EAAE;QACxBhB,GAAG,CAACuB,IAAI,CAACL,MAAK,QAAA,CAACM,WAAW,CAAC,6BAA6B,CAAC,EAAE,CAAC,CAAC,CAAC;KAC/D;IAEDC,CAAAA,GAAAA,6BAAwB,AAAc,CAAA,yBAAd,CAACJ,YAAY,CAAC,CAAC;IAEvC,MAAMK,KAAK,GACT,8BAA8B;IAC9BnB,GAAG,IACH,kDAAkD;IAClD,CAACoB,CAAAA,GAAAA,YAAa,AAAE,CAAA,cAAF,EAAE,IAAK,MAAMC,CAAAA,GAAAA,QAAY,AAAkC,CAAA,aAAlC,CAAC;QAAEC,OAAO,EAAE,mBAAmB;KAAE,CAAC,CAACC,KAAK,CAAC,IAAM,KAAK;IAAA,CAAC,AAAC,CAAC,AAAC;IAEjG,IAAIJ,KAAK,EAAE;QACTzB,KAAK,CAAC,gCAAgC,EAAEoB,YAAY,CAAC,CAAC;QACtD,sCAAsC;QACtC,OAAOU,CAAAA,GAAAA,aAAgB,AAKrB,CAAA,iBALqB,CAAC5B,WAAW,EAAE;YACnCE,cAAc;YACdD,QAAQ,EAAEiB,YAAY;YACtBb,uBAAuB;YACvBwB,UAAU,EAAEtB,GAAG,CAACsB,UAAU;SAC3B,CAAC,CAAC;KACJ;IACD,2EAA2E;IAC3EhC,GAAG,CAACuB,IAAI,CAACL,MAAK,QAAA,CAACe,GAAG,CAAC,6BAA6B,CAAC,EAAE,CAAC,CAAC,CAAC;CACvD"}
1
+ {"version":3,"sources":["../../../src/install/checkPackages.ts"],"sourcesContent":["import { getConfig } from '@expo/config';\nimport * as PackageManager from '@expo/package-manager';\nimport chalk from 'chalk';\n\nimport { fixPackagesAsync } from './installAsync';\nimport { Options } from './resolveOptions';\nimport * as Log from '../log';\nimport {\n getVersionedDependenciesAsync,\n logIncorrectDependencies,\n} from '../start/doctor/dependencies/validateDependenciesVersions';\nimport { isInteractive } from '../utils/interactive';\nimport { learnMore } from '../utils/link';\nimport { confirmAsync } from '../utils/prompts';\nimport { joinWithCommasAnd } from '../utils/strings';\n\nconst debug = require('debug')('expo:install:check') as typeof console.log;\n\n// Exposed for testing.\nexport async function checkPackagesAsync(\n projectRoot: string,\n {\n packages,\n packageManager,\n options: { fix },\n packageManagerArguments,\n }: {\n /**\n * List of packages to version\n * @example ['uuid', 'react-native-reanimated@latest']\n */\n packages: string[];\n /** Package manager to use when installing the versioned packages. */\n packageManager: PackageManager.NodePackageManager;\n\n /** How the check should resolve */\n options: Pick<Options, 'fix'>;\n /**\n * Extra parameters to pass to the `packageManager` when installing versioned packages.\n * @example ['--no-save']\n */\n packageManagerArguments: string[];\n }\n) {\n // Read the project Expo config without plugins.\n const { exp, pkg } = getConfig(projectRoot, {\n // Sometimes users will add a plugin to the config before installing the library,\n // this wouldn't work unless we dangerously disable plugin serialization.\n skipPlugins: true,\n });\n\n if (pkg.expo?.install?.exclude?.length) {\n Log.log(\n chalk`Skipped ${fix ? 'fixing' : 'checking'} dependencies: ${joinWithCommasAnd(\n pkg.expo.install.exclude\n )}. These dependencies are listed in {bold expo.install.exclude} in package.json. ${learnMore(\n 'https://expo.dev/more/expo-cli/#configuring-dependency-validation'\n )}`\n );\n }\n\n const dependencies = await getVersionedDependenciesAsync(projectRoot, exp, pkg, packages);\n\n if (!dependencies.length) {\n Log.exit(chalk.greenBright('Dependencies are up to date'), 0);\n }\n\n logIncorrectDependencies(dependencies);\n\n const value =\n // If `--fix` then always fix.\n fix ||\n // Otherwise prompt to fix when not running in CI.\n (isInteractive() && (await confirmAsync({ message: 'Fix dependencies?' }).catch(() => false)));\n\n if (value) {\n debug('Installing fixed dependencies:', dependencies);\n // Install the corrected dependencies.\n return fixPackagesAsync(projectRoot, {\n packageManager,\n packages: dependencies,\n packageManagerArguments,\n sdkVersion: exp.sdkVersion!,\n });\n }\n // Exit with non-zero exit code if any of the dependencies are out of date.\n Log.exit(chalk.red('Found outdated dependencies'), 1);\n}\n"],"names":["checkPackagesAsync","Log","debug","require","projectRoot","packages","packageManager","options","fix","packageManagerArguments","pkg","exp","getConfig","skipPlugins","expo","install","exclude","length","log","chalk","joinWithCommasAnd","learnMore","dependencies","getVersionedDependenciesAsync","exit","greenBright","logIncorrectDependencies","value","isInteractive","confirmAsync","message","catch","fixPackagesAsync","sdkVersion","red"],"mappings":"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"}
@@ -28,6 +28,7 @@ const expoInstall = async (argv)=>{
28
28
  `--fix Automatically update any invalid package versions`,
29
29
  _chalk.default`--npm Use npm to install dependencies. {dim Default when package-lock.json exists}`,
30
30
  _chalk.default`--yarn Use Yarn to install dependencies. {dim Default when yarn.lock exists}`,
31
+ _chalk.default`--bun Use bun to install dependencies. {dim Default when bun.lockb exists}`,
31
32
  _chalk.default`--pnpm Use pnpm to install dependencies. {dim Default when pnpm-lock.yaml exists}`,
32
33
  `-h, --help Usage info`,
33
34
  ].join("\n"), [
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/install/index.ts"],"sourcesContent":["#!/usr/bin/env node\nimport chalk from 'chalk';\n\nimport { Command } from '../../bin/cli';\nimport { assertWithOptionsArgs, printHelp } from '../utils/args';\n\nexport const expoInstall: Command = async (argv) => {\n const args = assertWithOptionsArgs(\n {\n // Other options are parsed manually.\n '--help': Boolean,\n // Aliases\n '-h': '--help',\n },\n {\n argv,\n // Allow other options, we'll throw an error if unexpected values are passed.\n permissive: true,\n }\n );\n\n if (args['--help']) {\n printHelp(\n `Install a module or other package to a project`,\n `npx expo install`,\n [\n `--check Check which installed packages need to be updated`,\n `--fix Automatically update any invalid package versions`,\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 `-h, --help Usage info`,\n ].join('\\n'),\n [\n '',\n chalk` Additional options can be passed to the underlying install command by using {bold --}`,\n chalk` {dim $} npx expo install react -- --verbose`,\n chalk` {dim >} yarn add react --verbose`,\n '',\n ].join('\\n')\n );\n }\n\n // Load modules after the help prompt so `npx expo install -h` shows as fast as possible.\n const { installAsync } = require('./installAsync') as typeof import('./installAsync');\n const { logCmdError } = require('../utils/errors') as typeof import('../utils/errors');\n const { resolveArgsAsync } = require('./resolveOptions') as typeof import('./resolveOptions');\n\n const { variadic, options, extras } = await resolveArgsAsync(process.argv.slice(3)).catch(\n logCmdError\n );\n return installAsync(variadic, options, extras).catch(logCmdError);\n};\n"],"names":["expoInstall","argv","args","assertWithOptionsArgs","Boolean","permissive","printHelp","chalk","join","installAsync","require","logCmdError","resolveArgsAsync","variadic","options","extras","process","slice","catch"],"mappings":"AAAA;;;;;;AACkB,IAAA,MAAO,kCAAP,OAAO,EAAA;AAGwB,IAAA,KAAe,WAAf,eAAe,CAAA;;;;;;AAEzD,MAAMA,WAAW,GAAY,OAAOC,IAAI,GAAK;IAClD,MAAMC,IAAI,GAAGC,CAAAA,GAAAA,KAAqB,AAYjC,CAAA,sBAZiC,CAChC;QACE,qCAAqC;QACrC,QAAQ,EAAEC,OAAO;QACjB,UAAU;QACV,IAAI,EAAE,QAAQ;KACf,EACD;QACEH,IAAI;QACJ,6EAA6E;QAC7EI,UAAU,EAAE,IAAI;KACjB,CACF,AAAC;IAEF,IAAIH,IAAI,CAAC,QAAQ,CAAC,EAAE;QAClBI,CAAAA,GAAAA,KAAS,AAkBR,CAAA,UAlBQ,CACP,CAAC,8CAA8C,CAAC,EAChD,CAAC,gBAAgB,CAAC,EAClB;YACE,CAAC,6DAA6D,CAAC;YAC/D,CAAC,6DAA6D,CAAC;YAC/DC,MAAK,QAAA,CAAC,wFAAwF,CAAC;YAC/FA,MAAK,QAAA,CAAC,iFAAiF,CAAC;YACxFA,MAAK,QAAA,CAAC,sFAAsF,CAAC;YAC7F,CAAC,sBAAsB,CAAC;SACzB,CAACC,IAAI,CAAC,IAAI,CAAC,EACZ;YACE,EAAE;YACFD,MAAK,QAAA,CAAC,uFAAuF,CAAC;YAC9FA,MAAK,QAAA,CAAC,+CAA+C,CAAC;YACtDA,MAAK,QAAA,CAAC,oCAAoC,CAAC;YAC3C,EAAE;SACH,CAACC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;KACH;IAED,yFAAyF;IACzF,MAAM,EAAEC,YAAY,CAAA,EAAE,GAAGC,OAAO,CAAC,gBAAgB,CAAC,AAAmC,AAAC;IACtF,MAAM,EAAEC,WAAW,CAAA,EAAE,GAAGD,OAAO,CAAC,iBAAiB,CAAC,AAAoC,AAAC;IACvF,MAAM,EAAEE,gBAAgB,CAAA,EAAE,GAAGF,OAAO,CAAC,kBAAkB,CAAC,AAAqC,AAAC;IAE9F,MAAM,EAAEG,QAAQ,CAAA,EAAEC,OAAO,CAAA,EAAEC,MAAM,CAAA,EAAE,GAAG,MAAMH,gBAAgB,CAACI,OAAO,CAACf,IAAI,CAACgB,KAAK,CAAC,CAAC,CAAC,CAAC,CAACC,KAAK,CACvFP,WAAW,CACZ,AAAC;IACF,OAAOF,YAAY,CAACI,QAAQ,EAAEC,OAAO,EAAEC,MAAM,CAAC,CAACG,KAAK,CAACP,WAAW,CAAC,CAAC;CACnE,AAAC;QA9CWX,WAAW,GAAXA,WAAW"}
1
+ {"version":3,"sources":["../../../src/install/index.ts"],"sourcesContent":["#!/usr/bin/env node\nimport chalk from 'chalk';\n\nimport { Command } from '../../bin/cli';\nimport { assertWithOptionsArgs, printHelp } from '../utils/args';\n\nexport const expoInstall: Command = async (argv) => {\n const args = assertWithOptionsArgs(\n {\n // Other options are parsed manually.\n '--help': Boolean,\n // Aliases\n '-h': '--help',\n },\n {\n argv,\n // Allow other options, we'll throw an error if unexpected values are passed.\n permissive: true,\n }\n );\n\n if (args['--help']) {\n printHelp(\n `Install a module or other package to a project`,\n `npx expo install`,\n [\n `--check Check which installed packages need to be updated`,\n `--fix Automatically update any invalid package versions`,\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 `-h, --help Usage info`,\n ].join('\\n'),\n [\n '',\n chalk` Additional options can be passed to the underlying install command by using {bold --}`,\n chalk` {dim $} npx expo install react -- --verbose`,\n chalk` {dim >} yarn add react --verbose`,\n '',\n ].join('\\n')\n );\n }\n\n // Load modules after the help prompt so `npx expo install -h` shows as fast as possible.\n const { installAsync } = require('./installAsync') as typeof import('./installAsync');\n const { logCmdError } = require('../utils/errors') as typeof import('../utils/errors');\n const { resolveArgsAsync } = require('./resolveOptions') as typeof import('./resolveOptions');\n\n const { variadic, options, extras } = await resolveArgsAsync(process.argv.slice(3)).catch(\n logCmdError\n );\n return installAsync(variadic, options, extras).catch(logCmdError);\n};\n"],"names":["expoInstall","argv","args","assertWithOptionsArgs","Boolean","permissive","printHelp","chalk","join","installAsync","require","logCmdError","resolveArgsAsync","variadic","options","extras","process","slice","catch"],"mappings":"AAAA;;;;;;AACkB,IAAA,MAAO,kCAAP,OAAO,EAAA;AAGwB,IAAA,KAAe,WAAf,eAAe,CAAA;;;;;;AAEzD,MAAMA,WAAW,GAAY,OAAOC,IAAI,GAAK;IAClD,MAAMC,IAAI,GAAGC,CAAAA,GAAAA,KAAqB,AAYjC,CAAA,sBAZiC,CAChC;QACE,qCAAqC;QACrC,QAAQ,EAAEC,OAAO;QACjB,UAAU;QACV,IAAI,EAAE,QAAQ;KACf,EACD;QACEH,IAAI;QACJ,6EAA6E;QAC7EI,UAAU,EAAE,IAAI;KACjB,CACF,AAAC;IAEF,IAAIH,IAAI,CAAC,QAAQ,CAAC,EAAE;QAClBI,CAAAA,GAAAA,KAAS,AAmBR,CAAA,UAnBQ,CACP,CAAC,8CAA8C,CAAC,EAChD,CAAC,gBAAgB,CAAC,EAClB;YACE,CAAC,6DAA6D,CAAC;YAC/D,CAAC,6DAA6D,CAAC;YAC/DC,MAAK,QAAA,CAAC,wFAAwF,CAAC;YAC/FA,MAAK,QAAA,CAAC,iFAAiF,CAAC;YACxFA,MAAK,QAAA,CAAC,gFAAgF,CAAC;YACvFA,MAAK,QAAA,CAAC,sFAAsF,CAAC;YAC7F,CAAC,sBAAsB,CAAC;SACzB,CAACC,IAAI,CAAC,IAAI,CAAC,EACZ;YACE,EAAE;YACFD,MAAK,QAAA,CAAC,uFAAuF,CAAC;YAC9FA,MAAK,QAAA,CAAC,+CAA+C,CAAC;YACtDA,MAAK,QAAA,CAAC,oCAAoC,CAAC;YAC3C,EAAE;SACH,CAACC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;KACH;IAED,yFAAyF;IACzF,MAAM,EAAEC,YAAY,CAAA,EAAE,GAAGC,OAAO,CAAC,gBAAgB,CAAC,AAAmC,AAAC;IACtF,MAAM,EAAEC,WAAW,CAAA,EAAE,GAAGD,OAAO,CAAC,iBAAiB,CAAC,AAAoC,AAAC;IACvF,MAAM,EAAEE,gBAAgB,CAAA,EAAE,GAAGF,OAAO,CAAC,kBAAkB,CAAC,AAAqC,AAAC;IAE9F,MAAM,EAAEG,QAAQ,CAAA,EAAEC,OAAO,CAAA,EAAEC,MAAM,CAAA,EAAE,GAAG,MAAMH,gBAAgB,CAACI,OAAO,CAACf,IAAI,CAACgB,KAAK,CAAC,CAAC,CAAC,CAAC,CAACC,KAAK,CACvFP,WAAW,CACZ,AAAC;IACF,OAAOF,YAAY,CAACI,QAAQ,EAAEC,OAAO,EAAEC,MAAM,CAAC,CAACG,KAAK,CAACP,WAAW,CAAC,CAAC;CACnE,AAAC;QA/CWX,WAAW,GAAXA,WAAW"}
@@ -8,6 +8,7 @@ exports.fixPackagesAsync = fixPackagesAsync;
8
8
  var _config = require("@expo/config");
9
9
  var PackageManager = _interopRequireWildcard(require("@expo/package-manager"));
10
10
  var _chalk = _interopRequireDefault(require("chalk"));
11
+ var _checkPackages = require("./checkPackages");
11
12
  var Log = _interopRequireWildcard(require("../log"));
12
13
  var _getVersionedPackages = require("../start/doctor/dependencies/getVersionedPackages");
13
14
  var _array = require("../utils/array");
@@ -15,7 +16,6 @@ var _findUp = require("../utils/findUp");
15
16
  var _link = require("../utils/link");
16
17
  var _nodeEnv = require("../utils/nodeEnv");
17
18
  var _strings = require("../utils/strings");
18
- var _checkPackages = require("./checkPackages");
19
19
  function _interopRequireDefault(obj) {
20
20
  return obj && obj.__esModule ? obj : {
21
21
  default: obj
@@ -53,6 +53,7 @@ async function installAsync(packages, options, packageManagerArguments = []) {
53
53
  const packageManager = PackageManager.createForProject(projectRoot, {
54
54
  npm: options.npm,
55
55
  yarn: options.yarn,
56
+ bun: options.bun,
56
57
  pnpm: options.pnpm,
57
58
  silent: options.silent,
58
59
  log: Log.log
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/install/installAsync.ts"],"sourcesContent":["import { getConfig } from '@expo/config';\nimport * as PackageManager from '@expo/package-manager';\nimport chalk from 'chalk';\n\nimport * as Log from '../log';\nimport {\n getOperationLog,\n getVersionedPackagesAsync,\n} from '../start/doctor/dependencies/getVersionedPackages';\nimport { getVersionedDependenciesAsync } from '../start/doctor/dependencies/validateDependenciesVersions';\nimport { groupBy } from '../utils/array';\nimport { findUpProjectRootOrAssert } from '../utils/findUp';\nimport { learnMore } from '../utils/link';\nimport { setNodeEnv } from '../utils/nodeEnv';\nimport { joinWithCommasAnd } from '../utils/strings';\nimport { checkPackagesAsync } from './checkPackages';\nimport { Options } from './resolveOptions';\n\nexport async function installAsync(\n packages: string[],\n options: Options & { projectRoot?: string },\n packageManagerArguments: string[] = []\n) {\n setNodeEnv('development');\n // Locate the project root based on the process current working directory.\n // This enables users to run `npx expo install` from a subdirectory of the project.\n const projectRoot = options.projectRoot ?? findUpProjectRootOrAssert(process.cwd());\n require('@expo/env').load(projectRoot);\n\n // Resolve the package manager used by the project, or based on the provided arguments.\n const packageManager = PackageManager.createForProject(projectRoot, {\n npm: options.npm,\n yarn: options.yarn,\n pnpm: options.pnpm,\n silent: options.silent,\n log: Log.log,\n });\n\n if (options.check || options.fix) {\n return await checkPackagesAsync(projectRoot, {\n packages,\n options,\n packageManager,\n packageManagerArguments,\n });\n }\n\n // Read the project Expo config without plugins.\n const { exp } = getConfig(projectRoot, {\n // Sometimes users will add a plugin to the config before installing the library,\n // this wouldn't work unless we dangerously disable plugin serialization.\n skipPlugins: true,\n });\n\n // Resolve the versioned packages, then install them.\n return installPackagesAsync(projectRoot, {\n packageManager,\n packages,\n packageManagerArguments,\n sdkVersion: exp.sdkVersion!,\n });\n}\n\n/** Version packages and install in a project. */\nexport async function installPackagesAsync(\n projectRoot: string,\n {\n packages,\n packageManager,\n sdkVersion,\n packageManagerArguments,\n }: {\n /**\n * List of packages to version, grouped by the type of dependency.\n * @example ['uuid', 'react-native-reanimated@latest']\n */\n packages: string[];\n /** Package manager to use when installing the versioned packages. */\n packageManager: PackageManager.NodePackageManager;\n /**\n * SDK to version `packages` for.\n * @example '44.0.0'\n */\n sdkVersion: string;\n /**\n * Extra parameters to pass to the `packageManager` when installing versioned packages.\n * @example ['--no-save']\n */\n packageManagerArguments: string[];\n }\n): Promise<void> {\n // Read the project Expo config without plugins.\n const { pkg } = getConfig(projectRoot, {\n // Sometimes users will add a plugin to the config before installing the library,\n // this wouldn't work unless we dangerously disable plugin serialization.\n skipPlugins: true,\n });\n\n //assertNotInstallingExcludedPackages(projectRoot, packages, pkg);\n\n const versioning = await getVersionedPackagesAsync(projectRoot, {\n packages,\n // sdkVersion is always defined because we don't skipSDKVersionRequirement in getConfig.\n sdkVersion,\n pkg,\n });\n\n Log.log(\n chalk`\\u203A Installing ${\n versioning.messages.length ? versioning.messages.join(' and ') + ' ' : ''\n }using {bold ${packageManager.name}}`\n );\n\n if (versioning.excludedNativeModules.length) {\n Log.log(\n chalk`\\u203A Using latest version instead of ${joinWithCommasAnd(\n versioning.excludedNativeModules.map(\n ({ bundledNativeVersion, name }) => `${bundledNativeVersion} for ${name}`\n )\n )} because ${\n versioning.excludedNativeModules.length > 1 ? 'they are' : 'it is'\n } listed in {bold expo.install.exclude} in package.json. ${learnMore(\n 'https://expo.dev/more/expo-cli/#configuring-dependency-validation'\n )}`\n );\n }\n\n await packageManager.addAsync([...packageManagerArguments, ...versioning.packages]);\n\n await applyPluginsAsync(projectRoot, versioning.packages);\n}\n\nexport async function fixPackagesAsync(\n projectRoot: string,\n {\n packages,\n packageManager,\n sdkVersion,\n packageManagerArguments,\n }: {\n packages: Awaited<ReturnType<typeof getVersionedDependenciesAsync>>;\n /** Package manager to use when installing the versioned packages. */\n packageManager: PackageManager.NodePackageManager;\n /**\n * SDK to version `packages` for.\n * @example '44.0.0'\n */\n sdkVersion: string;\n /**\n * Extra parameters to pass to the `packageManager` when installing versioned packages.\n * @example ['--no-save']\n */\n packageManagerArguments: string[];\n }\n): Promise<void> {\n if (!packages.length) {\n return;\n }\n\n const { dependencies = [], devDependencies = [] } = groupBy(packages, (dep) => dep.packageType);\n const versioningMessages = getOperationLog({\n othersCount: 0, // All fixable packages are versioned\n nativeModulesCount: packages.length,\n sdkVersion,\n });\n\n Log.log(\n chalk`\\u203A Installing ${\n versioningMessages.length ? versioningMessages.join(' and ') + ' ' : ''\n }using {bold ${packageManager.name}}`\n );\n\n if (dependencies.length) {\n const versionedPackages = dependencies.map(\n (dep) => `${dep.packageName}@${dep.expectedVersionOrRange}`\n );\n\n await packageManager.addAsync([...packageManagerArguments, ...versionedPackages]);\n\n await applyPluginsAsync(projectRoot, versionedPackages);\n }\n\n if (devDependencies.length) {\n await packageManager.addDevAsync([\n ...packageManagerArguments,\n ...devDependencies.map((dep) => `${dep.packageName}@${dep.expectedVersionOrRange}`),\n ]);\n }\n}\n\n/**\n * A convenience feature for automatically applying Expo Config Plugins to the `app.json` after installing them.\n * This should be dropped in favor of autolinking in the future.\n */\nasync function applyPluginsAsync(projectRoot: string, packages: string[]) {\n const { autoAddConfigPluginsAsync } = await import('./utils/autoAddConfigPlugins');\n\n try {\n const { exp } = getConfig(projectRoot, { skipSDKVersionRequirement: true });\n\n // Only auto add plugins if the plugins array is defined or if the project is using SDK +42.\n await autoAddConfigPluginsAsync(\n projectRoot,\n exp,\n // Split any possible NPM tags. i.e. `expo@latest` -> `expo`\n packages.map((pkg) => pkg.split('@')[0]).filter(Boolean)\n );\n } catch (error: any) {\n // If we fail to apply plugins, the log a warning and continue.\n if (error.isPluginError) {\n Log.warn(`Skipping config plugin check: ` + error.message);\n return;\n }\n // Any other error, rethrow.\n throw error;\n }\n}\n"],"names":["installAsync","installPackagesAsync","fixPackagesAsync","PackageManager","Log","packages","options","packageManagerArguments","setNodeEnv","projectRoot","findUpProjectRootOrAssert","process","cwd","require","load","packageManager","createForProject","npm","yarn","pnpm","silent","log","check","fix","checkPackagesAsync","exp","getConfig","skipPlugins","sdkVersion","pkg","versioning","getVersionedPackagesAsync","chalk","messages","length","join","name","excludedNativeModules","joinWithCommasAnd","map","bundledNativeVersion","learnMore","addAsync","applyPluginsAsync","dependencies","devDependencies","groupBy","dep","packageType","versioningMessages","getOperationLog","othersCount","nativeModulesCount","versionedPackages","packageName","expectedVersionOrRange","addDevAsync","autoAddConfigPluginsAsync","skipSDKVersionRequirement","split","filter","Boolean","error","isPluginError","warn","message"],"mappings":"AAAA;;;;QAkBsBA,YAAY,GAAZA,YAAY;QA8CZC,oBAAoB,GAApBA,oBAAoB;QAoEpBC,gBAAgB,GAAhBA,gBAAgB;AApIZ,IAAA,OAAc,WAAd,cAAc,CAAA;AAC5BC,IAAAA,cAAc,mCAAM,uBAAuB,EAA7B;AACR,IAAA,MAAO,kCAAP,OAAO,EAAA;AAEbC,IAAAA,GAAG,mCAAM,QAAQ,EAAd;AAIR,IAAA,qBAAmD,WAAnD,mDAAmD,CAAA;AAElC,IAAA,MAAgB,WAAhB,gBAAgB,CAAA;AACE,IAAA,OAAiB,WAAjB,iBAAiB,CAAA;AACjC,IAAA,KAAe,WAAf,eAAe,CAAA;AACd,IAAA,QAAkB,WAAlB,kBAAkB,CAAA;AACX,IAAA,QAAkB,WAAlB,kBAAkB,CAAA;AACjB,IAAA,cAAiB,WAAjB,iBAAiB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAG7C,eAAeJ,YAAY,CAChCK,QAAkB,EAClBC,OAA2C,EAC3CC,uBAAiC,GAAG,EAAE,EACtC;IACAC,CAAAA,GAAAA,QAAU,AAAe,CAAA,WAAf,CAAC,aAAa,CAAC,CAAC;QAGNF,YAAmB;IAFvC,0EAA0E;IAC1E,mFAAmF;IACnF,MAAMG,WAAW,GAAGH,CAAAA,YAAmB,GAAnBA,OAAO,CAACG,WAAW,YAAnBH,YAAmB,GAAII,CAAAA,GAAAA,OAAyB,AAAe,CAAA,0BAAf,CAACC,OAAO,CAACC,GAAG,EAAE,CAAC,AAAC;IACpFC,OAAO,CAAC,WAAW,CAAC,CAACC,IAAI,CAACL,WAAW,CAAC,CAAC;IAEvC,uFAAuF;IACvF,MAAMM,cAAc,GAAGZ,cAAc,CAACa,gBAAgB,CAACP,WAAW,EAAE;QAClEQ,GAAG,EAAEX,OAAO,CAACW,GAAG;QAChBC,IAAI,EAAEZ,OAAO,CAACY,IAAI;QAClBC,IAAI,EAAEb,OAAO,CAACa,IAAI;QAClBC,MAAM,EAAEd,OAAO,CAACc,MAAM;QACtBC,GAAG,EAAEjB,GAAG,CAACiB,GAAG;KACb,CAAC,AAAC;IAEH,IAAIf,OAAO,CAACgB,KAAK,IAAIhB,OAAO,CAACiB,GAAG,EAAE;QAChC,OAAO,MAAMC,CAAAA,GAAAA,cAAkB,AAK7B,CAAA,mBAL6B,CAACf,WAAW,EAAE;YAC3CJ,QAAQ;YACRC,OAAO;YACPS,cAAc;YACdR,uBAAuB;SACxB,CAAC,CAAC;KACJ;IAED,gDAAgD;IAChD,MAAM,EAAEkB,GAAG,CAAA,EAAE,GAAGC,CAAAA,GAAAA,OAAS,AAIvB,CAAA,UAJuB,CAACjB,WAAW,EAAE;QACrC,iFAAiF;QACjF,yEAAyE;QACzEkB,WAAW,EAAE,IAAI;KAClB,CAAC,AAAC;IAEH,qDAAqD;IACrD,OAAO1B,oBAAoB,CAACQ,WAAW,EAAE;QACvCM,cAAc;QACdV,QAAQ;QACRE,uBAAuB;QACvBqB,UAAU,EAAEH,GAAG,CAACG,UAAU;KAC3B,CAAC,CAAC;CACJ;AAGM,eAAe3B,oBAAoB,CACxCQ,WAAmB,EACnB,EACEJ,QAAQ,CAAA,EACRU,cAAc,CAAA,EACda,UAAU,CAAA,EACVrB,uBAAuB,CAAA,EAmBxB,EACc;IACf,gDAAgD;IAChD,MAAM,EAAEsB,GAAG,CAAA,EAAE,GAAGH,CAAAA,GAAAA,OAAS,AAIvB,CAAA,UAJuB,CAACjB,WAAW,EAAE;QACrC,iFAAiF;QACjF,yEAAyE;QACzEkB,WAAW,EAAE,IAAI;KAClB,CAAC,AAAC;IAEH,kEAAkE;IAElE,MAAMG,UAAU,GAAG,MAAMC,CAAAA,GAAAA,qBAAyB,AAKhD,CAAA,0BALgD,CAACtB,WAAW,EAAE;QAC9DJ,QAAQ;QACR,wFAAwF;QACxFuB,UAAU;QACVC,GAAG;KACJ,CAAC,AAAC;IAEHzB,GAAG,CAACiB,GAAG,CACLW,MAAK,QAAA,CAAC,kBAAkB,EACtBF,UAAU,CAACG,QAAQ,CAACC,MAAM,GAAGJ,UAAU,CAACG,QAAQ,CAACE,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,GAAG,EAAE,CAC1E,YAAY,EAAEpB,cAAc,CAACqB,IAAI,CAAC,CAAC,CAAC,CACtC,CAAC;IAEF,IAAIN,UAAU,CAACO,qBAAqB,CAACH,MAAM,EAAE;QAC3C9B,GAAG,CAACiB,GAAG,CACLW,MAAK,QAAA,CAAC,uCAAuC,EAAEM,CAAAA,GAAAA,QAAiB,AAI/D,CAAA,kBAJ+D,CAC9DR,UAAU,CAACO,qBAAqB,CAACE,GAAG,CAClC,CAAC,EAAEC,oBAAoB,CAAA,EAAEJ,IAAI,CAAA,EAAE,GAAK,CAAC,EAAEI,oBAAoB,CAAC,KAAK,EAAEJ,IAAI,CAAC,CAAC;QAAA,CAC1E,CACF,CAAC,SAAS,EACTN,UAAU,CAACO,qBAAqB,CAACH,MAAM,GAAG,CAAC,GAAG,UAAU,GAAG,OAAO,CACnE,wDAAwD,EAAEO,CAAAA,GAAAA,KAAS,AAEnE,CAAA,UAFmE,CAClE,mEAAmE,CACpE,CAAC,CAAC,CACJ,CAAC;KACH;IAED,MAAM1B,cAAc,CAAC2B,QAAQ,CAAC;WAAInC,uBAAuB;WAAKuB,UAAU,CAACzB,QAAQ;KAAC,CAAC,CAAC;IAEpF,MAAMsC,iBAAiB,CAAClC,WAAW,EAAEqB,UAAU,CAACzB,QAAQ,CAAC,CAAC;CAC3D;AAEM,eAAeH,gBAAgB,CACpCO,WAAmB,EACnB,EACEJ,QAAQ,CAAA,EACRU,cAAc,CAAA,EACda,UAAU,CAAA,EACVrB,uBAAuB,CAAA,EAexB,EACc;IACf,IAAI,CAACF,QAAQ,CAAC6B,MAAM,EAAE;QACpB,OAAO;KACR;IAED,MAAM,EAAEU,YAAY,EAAG,EAAE,CAAA,EAAEC,eAAe,EAAG,EAAE,CAAA,EAAE,GAAGC,CAAAA,GAAAA,MAAO,AAAoC,CAAA,QAApC,CAACzC,QAAQ,EAAE,CAAC0C,GAAG,GAAKA,GAAG,CAACC,WAAW;IAAA,CAAC,AAAC;IAChG,MAAMC,kBAAkB,GAAGC,CAAAA,GAAAA,qBAAe,AAIxC,CAAA,gBAJwC,CAAC;QACzCC,WAAW,EAAE,CAAC;QACdC,kBAAkB,EAAE/C,QAAQ,CAAC6B,MAAM;QACnCN,UAAU;KACX,CAAC,AAAC;IAEHxB,GAAG,CAACiB,GAAG,CACLW,MAAK,QAAA,CAAC,kBAAkB,EACtBiB,kBAAkB,CAACf,MAAM,GAAGe,kBAAkB,CAACd,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,GAAG,EAAE,CACxE,YAAY,EAAEpB,cAAc,CAACqB,IAAI,CAAC,CAAC,CAAC,CACtC,CAAC;IAEF,IAAIQ,YAAY,CAACV,MAAM,EAAE;QACvB,MAAMmB,iBAAiB,GAAGT,YAAY,CAACL,GAAG,CACxC,CAACQ,GAAG,GAAK,CAAC,EAAEA,GAAG,CAACO,WAAW,CAAC,CAAC,EAAEP,GAAG,CAACQ,sBAAsB,CAAC,CAAC;QAAA,CAC5D,AAAC;QAEF,MAAMxC,cAAc,CAAC2B,QAAQ,CAAC;eAAInC,uBAAuB;eAAK8C,iBAAiB;SAAC,CAAC,CAAC;QAElF,MAAMV,iBAAiB,CAAClC,WAAW,EAAE4C,iBAAiB,CAAC,CAAC;KACzD;IAED,IAAIR,eAAe,CAACX,MAAM,EAAE;QAC1B,MAAMnB,cAAc,CAACyC,WAAW,CAAC;eAC5BjD,uBAAuB;eACvBsC,eAAe,CAACN,GAAG,CAAC,CAACQ,GAAG,GAAK,CAAC,EAAEA,GAAG,CAACO,WAAW,CAAC,CAAC,EAAEP,GAAG,CAACQ,sBAAsB,CAAC,CAAC;YAAA,CAAC;SACpF,CAAC,CAAC;KACJ;CACF;AAED;;;GAGG,CACH,eAAeZ,iBAAiB,CAAClC,WAAmB,EAAEJ,QAAkB,EAAE;IACxE,MAAM,EAAEoD,yBAAyB,CAAA,EAAE,GAAG,MAAM;+CAAO,8BAA8B;MAAC,AAAC;IAEnF,IAAI;QACF,MAAM,EAAEhC,GAAG,CAAA,EAAE,GAAGC,CAAAA,GAAAA,OAAS,AAAkD,CAAA,UAAlD,CAACjB,WAAW,EAAE;YAAEiD,yBAAyB,EAAE,IAAI;SAAE,CAAC,AAAC;QAE5E,4FAA4F;QAC5F,MAAMD,yBAAyB,CAC7BhD,WAAW,EACXgB,GAAG,EACH,4DAA4D;QAC5DpB,QAAQ,CAACkC,GAAG,CAAC,CAACV,GAAG,GAAKA,GAAG,CAAC8B,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAAA,CAAC,CAACC,MAAM,CAACC,OAAO,CAAC,CACzD,CAAC;KACH,CAAC,OAAOC,KAAK,EAAO;QACnB,+DAA+D;QAC/D,IAAIA,KAAK,CAACC,aAAa,EAAE;YACvB3D,GAAG,CAAC4D,IAAI,CAAC,CAAC,8BAA8B,CAAC,GAAGF,KAAK,CAACG,OAAO,CAAC,CAAC;YAC3D,OAAO;SACR;QACD,4BAA4B;QAC5B,MAAMH,KAAK,CAAC;KACb;CACF"}
1
+ {"version":3,"sources":["../../../src/install/installAsync.ts"],"sourcesContent":["import { getConfig } from '@expo/config';\nimport * as PackageManager from '@expo/package-manager';\nimport chalk from 'chalk';\n\nimport { checkPackagesAsync } from './checkPackages';\nimport { Options } from './resolveOptions';\nimport * as Log from '../log';\nimport {\n getOperationLog,\n getVersionedPackagesAsync,\n} from '../start/doctor/dependencies/getVersionedPackages';\nimport { getVersionedDependenciesAsync } from '../start/doctor/dependencies/validateDependenciesVersions';\nimport { groupBy } from '../utils/array';\nimport { findUpProjectRootOrAssert } from '../utils/findUp';\nimport { learnMore } from '../utils/link';\nimport { setNodeEnv } from '../utils/nodeEnv';\nimport { joinWithCommasAnd } from '../utils/strings';\n\nexport async function installAsync(\n packages: string[],\n options: Options & { projectRoot?: string },\n packageManagerArguments: string[] = []\n) {\n setNodeEnv('development');\n // Locate the project root based on the process current working directory.\n // This enables users to run `npx expo install` from a subdirectory of the project.\n const projectRoot = options.projectRoot ?? findUpProjectRootOrAssert(process.cwd());\n require('@expo/env').load(projectRoot);\n\n // Resolve the package manager used by the project, or based on the provided arguments.\n const packageManager = PackageManager.createForProject(projectRoot, {\n npm: options.npm,\n yarn: options.yarn,\n bun: options.bun,\n pnpm: options.pnpm,\n silent: options.silent,\n log: Log.log,\n });\n\n if (options.check || options.fix) {\n return await checkPackagesAsync(projectRoot, {\n packages,\n options,\n packageManager,\n packageManagerArguments,\n });\n }\n\n // Read the project Expo config without plugins.\n const { exp } = getConfig(projectRoot, {\n // Sometimes users will add a plugin to the config before installing the library,\n // this wouldn't work unless we dangerously disable plugin serialization.\n skipPlugins: true,\n });\n\n // Resolve the versioned packages, then install them.\n return installPackagesAsync(projectRoot, {\n packageManager,\n packages,\n packageManagerArguments,\n sdkVersion: exp.sdkVersion!,\n });\n}\n\n/** Version packages and install in a project. */\nexport async function installPackagesAsync(\n projectRoot: string,\n {\n packages,\n packageManager,\n sdkVersion,\n packageManagerArguments,\n }: {\n /**\n * List of packages to version, grouped by the type of dependency.\n * @example ['uuid', 'react-native-reanimated@latest']\n */\n packages: string[];\n /** Package manager to use when installing the versioned packages. */\n packageManager: PackageManager.NodePackageManager;\n /**\n * SDK to version `packages` for.\n * @example '44.0.0'\n */\n sdkVersion: string;\n /**\n * Extra parameters to pass to the `packageManager` when installing versioned packages.\n * @example ['--no-save']\n */\n packageManagerArguments: string[];\n }\n): Promise<void> {\n // Read the project Expo config without plugins.\n const { pkg } = getConfig(projectRoot, {\n // Sometimes users will add a plugin to the config before installing the library,\n // this wouldn't work unless we dangerously disable plugin serialization.\n skipPlugins: true,\n });\n\n //assertNotInstallingExcludedPackages(projectRoot, packages, pkg);\n\n const versioning = await getVersionedPackagesAsync(projectRoot, {\n packages,\n // sdkVersion is always defined because we don't skipSDKVersionRequirement in getConfig.\n sdkVersion,\n pkg,\n });\n\n Log.log(\n chalk`\\u203A Installing ${\n versioning.messages.length ? versioning.messages.join(' and ') + ' ' : ''\n }using {bold ${packageManager.name}}`\n );\n\n if (versioning.excludedNativeModules.length) {\n Log.log(\n chalk`\\u203A Using latest version instead of ${joinWithCommasAnd(\n versioning.excludedNativeModules.map(\n ({ bundledNativeVersion, name }) => `${bundledNativeVersion} for ${name}`\n )\n )} because ${\n versioning.excludedNativeModules.length > 1 ? 'they are' : 'it is'\n } listed in {bold expo.install.exclude} in package.json. ${learnMore(\n 'https://expo.dev/more/expo-cli/#configuring-dependency-validation'\n )}`\n );\n }\n\n await packageManager.addAsync([...packageManagerArguments, ...versioning.packages]);\n\n await applyPluginsAsync(projectRoot, versioning.packages);\n}\n\nexport async function fixPackagesAsync(\n projectRoot: string,\n {\n packages,\n packageManager,\n sdkVersion,\n packageManagerArguments,\n }: {\n packages: Awaited<ReturnType<typeof getVersionedDependenciesAsync>>;\n /** Package manager to use when installing the versioned packages. */\n packageManager: PackageManager.NodePackageManager;\n /**\n * SDK to version `packages` for.\n * @example '44.0.0'\n */\n sdkVersion: string;\n /**\n * Extra parameters to pass to the `packageManager` when installing versioned packages.\n * @example ['--no-save']\n */\n packageManagerArguments: string[];\n }\n): Promise<void> {\n if (!packages.length) {\n return;\n }\n\n const { dependencies = [], devDependencies = [] } = groupBy(packages, (dep) => dep.packageType);\n const versioningMessages = getOperationLog({\n othersCount: 0, // All fixable packages are versioned\n nativeModulesCount: packages.length,\n sdkVersion,\n });\n\n Log.log(\n chalk`\\u203A Installing ${\n versioningMessages.length ? versioningMessages.join(' and ') + ' ' : ''\n }using {bold ${packageManager.name}}`\n );\n\n if (dependencies.length) {\n const versionedPackages = dependencies.map(\n (dep) => `${dep.packageName}@${dep.expectedVersionOrRange}`\n );\n\n await packageManager.addAsync([...packageManagerArguments, ...versionedPackages]);\n\n await applyPluginsAsync(projectRoot, versionedPackages);\n }\n\n if (devDependencies.length) {\n await packageManager.addDevAsync([\n ...packageManagerArguments,\n ...devDependencies.map((dep) => `${dep.packageName}@${dep.expectedVersionOrRange}`),\n ]);\n }\n}\n\n/**\n * A convenience feature for automatically applying Expo Config Plugins to the `app.json` after installing them.\n * This should be dropped in favor of autolinking in the future.\n */\nasync function applyPluginsAsync(projectRoot: string, packages: string[]) {\n const { autoAddConfigPluginsAsync } = await import('./utils/autoAddConfigPlugins');\n\n try {\n const { exp } = getConfig(projectRoot, { skipSDKVersionRequirement: true });\n\n // Only auto add plugins if the plugins array is defined or if the project is using SDK +42.\n await autoAddConfigPluginsAsync(\n projectRoot,\n exp,\n // Split any possible NPM tags. i.e. `expo@latest` -> `expo`\n packages.map((pkg) => pkg.split('@')[0]).filter(Boolean)\n );\n } catch (error: any) {\n // If we fail to apply plugins, the log a warning and continue.\n if (error.isPluginError) {\n Log.warn(`Skipping config plugin check: ` + error.message);\n return;\n }\n // Any other error, rethrow.\n throw error;\n }\n}\n"],"names":["installAsync","installPackagesAsync","fixPackagesAsync","PackageManager","Log","packages","options","packageManagerArguments","setNodeEnv","projectRoot","findUpProjectRootOrAssert","process","cwd","require","load","packageManager","createForProject","npm","yarn","bun","pnpm","silent","log","check","fix","checkPackagesAsync","exp","getConfig","skipPlugins","sdkVersion","pkg","versioning","getVersionedPackagesAsync","chalk","messages","length","join","name","excludedNativeModules","joinWithCommasAnd","map","bundledNativeVersion","learnMore","addAsync","applyPluginsAsync","dependencies","devDependencies","groupBy","dep","packageType","versioningMessages","getOperationLog","othersCount","nativeModulesCount","versionedPackages","packageName","expectedVersionOrRange","addDevAsync","autoAddConfigPluginsAsync","skipSDKVersionRequirement","split","filter","Boolean","error","isPluginError","warn","message"],"mappings":"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"}
@@ -12,9 +12,10 @@ function resolveOptions(options) {
12
12
  if ([
13
13
  options.npm,
14
14
  options.pnpm,
15
- options.yarn
15
+ options.yarn,
16
+ options.bun
16
17
  ].filter(Boolean).length > 1) {
17
- throw new _errors.CommandError("BAD_ARGS", "Specify at most one of: --npm, --pnpm, --yarn");
18
+ throw new _errors.CommandError("BAD_ARGS", "Specify at most one of: --npm, --pnpm, --yarn, --bun");
18
19
  }
19
20
  return {
20
21
  ...options
@@ -27,7 +28,8 @@ async function resolveArgsAsync(argv) {
27
28
  "--fix",
28
29
  "--npm",
29
30
  "--pnpm",
30
- "--yarn"
31
+ "--yarn",
32
+ "--bun"
31
33
  ], {
32
34
  variadic,
33
35
  extras,
@@ -41,7 +43,8 @@ async function resolveArgsAsync(argv) {
41
43
  check: !!flags["--check"],
42
44
  yarn: !!flags["--yarn"],
43
45
  npm: !!flags["--npm"],
44
- pnpm: !!flags["--pnpm"]
46
+ pnpm: !!flags["--pnpm"],
47
+ bun: !!flags["--bun"]
45
48
  }),
46
49
  extras
47
50
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/install/resolveOptions.ts"],"sourcesContent":["import { NodePackageManagerForProject } from '@expo/package-manager';\n\nimport { CommandError } from '../utils/errors';\nimport { assertUnexpectedVariadicFlags, parseVariadicArguments } from '../utils/variadic';\n\nexport type Options = Pick<NodePackageManagerForProject, 'npm' | 'pnpm' | 'yarn'> & {\n /** Check which packages need to be updated, does not install any provided packages. */\n check?: boolean;\n /** Should the dependencies be fixed automatically. */\n fix?: boolean;\n /** Should disable install output, used for commands like `prebuild` that run install internally. */\n silent?: boolean;\n};\n\nfunction resolveOptions(options: Options): Options {\n if (options.fix && options.check) {\n throw new CommandError('BAD_ARGS', 'Specify at most one of: --check, --fix');\n }\n if ([options.npm, options.pnpm, options.yarn].filter(Boolean).length > 1) {\n throw new CommandError('BAD_ARGS', 'Specify at most one of: --npm, --pnpm, --yarn');\n }\n return {\n ...options,\n };\n}\n\nexport async function resolveArgsAsync(\n argv: string[]\n): Promise<{ variadic: string[]; options: Options; extras: string[] }> {\n const { variadic, extras, flags } = parseVariadicArguments(argv);\n\n assertUnexpectedVariadicFlags(\n ['--check', '--fix', '--npm', '--pnpm', '--yarn'],\n { variadic, extras, flags },\n 'npx expo install'\n );\n\n return {\n // Variadic arguments like `npx expo install react react-dom` -> ['react', 'react-dom']\n variadic,\n options: resolveOptions({\n fix: !!flags['--fix'],\n check: !!flags['--check'],\n yarn: !!flags['--yarn'],\n npm: !!flags['--npm'],\n pnpm: !!flags['--pnpm'],\n }),\n extras,\n };\n}\n"],"names":["resolveArgsAsync","resolveOptions","options","fix","check","CommandError","npm","pnpm","yarn","filter","Boolean","length","argv","variadic","extras","flags","parseVariadicArguments","assertUnexpectedVariadicFlags"],"mappings":"AAAA;;;;QA0BsBA,gBAAgB,GAAhBA,gBAAgB;AAxBT,IAAA,OAAiB,WAAjB,iBAAiB,CAAA;AACwB,IAAA,SAAmB,WAAnB,mBAAmB,CAAA;AAWzF,SAASC,cAAc,CAACC,OAAgB,EAAW;IACjD,IAAIA,OAAO,CAACC,GAAG,IAAID,OAAO,CAACE,KAAK,EAAE;QAChC,MAAM,IAAIC,OAAY,aAAA,CAAC,UAAU,EAAE,wCAAwC,CAAC,CAAC;KAC9E;IACD,IAAI;QAACH,OAAO,CAACI,GAAG;QAAEJ,OAAO,CAACK,IAAI;QAAEL,OAAO,CAACM,IAAI;KAAC,CAACC,MAAM,CAACC,OAAO,CAAC,CAACC,MAAM,GAAG,CAAC,EAAE;QACxE,MAAM,IAAIN,OAAY,aAAA,CAAC,UAAU,EAAE,+CAA+C,CAAC,CAAC;KACrF;IACD,OAAO;QACL,GAAGH,OAAO;KACX,CAAC;CACH;AAEM,eAAeF,gBAAgB,CACpCY,IAAc,EACuD;IACrE,MAAM,EAAEC,QAAQ,CAAA,EAAEC,MAAM,CAAA,EAAEC,KAAK,CAAA,EAAE,GAAGC,CAAAA,GAAAA,SAAsB,AAAM,CAAA,uBAAN,CAACJ,IAAI,CAAC,AAAC;IAEjEK,CAAAA,GAAAA,SAA6B,AAI5B,CAAA,8BAJ4B,CAC3B;QAAC,SAAS;QAAE,OAAO;QAAE,OAAO;QAAE,QAAQ;QAAE,QAAQ;KAAC,EACjD;QAAEJ,QAAQ;QAAEC,MAAM;QAAEC,KAAK;KAAE,EAC3B,kBAAkB,CACnB,CAAC;IAEF,OAAO;QACL,uFAAuF;QACvFF,QAAQ;QACRX,OAAO,EAAED,cAAc,CAAC;YACtBE,GAAG,EAAE,CAAC,CAACY,KAAK,CAAC,OAAO,CAAC;YACrBX,KAAK,EAAE,CAAC,CAACW,KAAK,CAAC,SAAS,CAAC;YACzBP,IAAI,EAAE,CAAC,CAACO,KAAK,CAAC,QAAQ,CAAC;YACvBT,GAAG,EAAE,CAAC,CAACS,KAAK,CAAC,OAAO,CAAC;YACrBR,IAAI,EAAE,CAAC,CAACQ,KAAK,CAAC,QAAQ,CAAC;SACxB,CAAC;QACFD,MAAM;KACP,CAAC;CACH"}
1
+ {"version":3,"sources":["../../../src/install/resolveOptions.ts"],"sourcesContent":["import { NodePackageManagerForProject } from '@expo/package-manager';\n\nimport { CommandError } from '../utils/errors';\nimport { assertUnexpectedVariadicFlags, parseVariadicArguments } from '../utils/variadic';\n\nexport type Options = Pick<NodePackageManagerForProject, 'npm' | 'pnpm' | 'yarn' | 'bun'> & {\n /** Check which packages need to be updated, does not install any provided packages. */\n check?: boolean;\n /** Should the dependencies be fixed automatically. */\n fix?: boolean;\n /** Should disable install output, used for commands like `prebuild` that run install internally. */\n silent?: boolean;\n};\n\nfunction resolveOptions(options: Options): Options {\n if (options.fix && options.check) {\n throw new CommandError('BAD_ARGS', 'Specify at most one of: --check, --fix');\n }\n if ([options.npm, options.pnpm, options.yarn, options.bun].filter(Boolean).length > 1) {\n throw new CommandError('BAD_ARGS', 'Specify at most one of: --npm, --pnpm, --yarn, --bun');\n }\n return {\n ...options,\n };\n}\n\nexport async function resolveArgsAsync(\n argv: string[]\n): Promise<{ variadic: string[]; options: Options; extras: string[] }> {\n const { variadic, extras, flags } = parseVariadicArguments(argv);\n\n assertUnexpectedVariadicFlags(\n ['--check', '--fix', '--npm', '--pnpm', '--yarn', '--bun'],\n { variadic, extras, flags },\n 'npx expo install'\n );\n\n return {\n // Variadic arguments like `npx expo install react react-dom` -> ['react', 'react-dom']\n variadic,\n options: resolveOptions({\n fix: !!flags['--fix'],\n check: !!flags['--check'],\n yarn: !!flags['--yarn'],\n npm: !!flags['--npm'],\n pnpm: !!flags['--pnpm'],\n bun: !!flags['--bun'],\n }),\n extras,\n };\n}\n"],"names":["resolveArgsAsync","resolveOptions","options","fix","check","CommandError","npm","pnpm","yarn","bun","filter","Boolean","length","argv","variadic","extras","flags","parseVariadicArguments","assertUnexpectedVariadicFlags"],"mappings":"AAAA;;;;QA0BsBA,gBAAgB,GAAhBA,gBAAgB;AAxBT,IAAA,OAAiB,WAAjB,iBAAiB,CAAA;AACwB,IAAA,SAAmB,WAAnB,mBAAmB,CAAA;AAWzF,SAASC,cAAc,CAACC,OAAgB,EAAW;IACjD,IAAIA,OAAO,CAACC,GAAG,IAAID,OAAO,CAACE,KAAK,EAAE;QAChC,MAAM,IAAIC,OAAY,aAAA,CAAC,UAAU,EAAE,wCAAwC,CAAC,CAAC;KAC9E;IACD,IAAI;QAACH,OAAO,CAACI,GAAG;QAAEJ,OAAO,CAACK,IAAI;QAAEL,OAAO,CAACM,IAAI;QAAEN,OAAO,CAACO,GAAG;KAAC,CAACC,MAAM,CAACC,OAAO,CAAC,CAACC,MAAM,GAAG,CAAC,EAAE;QACrF,MAAM,IAAIP,OAAY,aAAA,CAAC,UAAU,EAAE,sDAAsD,CAAC,CAAC;KAC5F;IACD,OAAO;QACL,GAAGH,OAAO;KACX,CAAC;CACH;AAEM,eAAeF,gBAAgB,CACpCa,IAAc,EACuD;IACrE,MAAM,EAAEC,QAAQ,CAAA,EAAEC,MAAM,CAAA,EAAEC,KAAK,CAAA,EAAE,GAAGC,CAAAA,GAAAA,SAAsB,AAAM,CAAA,uBAAN,CAACJ,IAAI,CAAC,AAAC;IAEjEK,CAAAA,GAAAA,SAA6B,AAI5B,CAAA,8BAJ4B,CAC3B;QAAC,SAAS;QAAE,OAAO;QAAE,OAAO;QAAE,QAAQ;QAAE,QAAQ;QAAE,OAAO;KAAC,EAC1D;QAAEJ,QAAQ;QAAEC,MAAM;QAAEC,KAAK;KAAE,EAC3B,kBAAkB,CACnB,CAAC;IAEF,OAAO;QACL,uFAAuF;QACvFF,QAAQ;QACRZ,OAAO,EAAED,cAAc,CAAC;YACtBE,GAAG,EAAE,CAAC,CAACa,KAAK,CAAC,OAAO,CAAC;YACrBZ,KAAK,EAAE,CAAC,CAACY,KAAK,CAAC,SAAS,CAAC;YACzBR,IAAI,EAAE,CAAC,CAACQ,KAAK,CAAC,QAAQ,CAAC;YACvBV,GAAG,EAAE,CAAC,CAACU,KAAK,CAAC,OAAO,CAAC;YACrBT,IAAI,EAAE,CAAC,CAACS,KAAK,CAAC,QAAQ,CAAC;YACvBP,GAAG,EAAE,CAAC,CAACO,KAAK,CAAC,OAAO,CAAC;SACtB,CAAC;QACFD,MAAM;KACP,CAAC;CACH"}
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
5
  exports.configureProjectAsync = configureProjectAsync;
6
- var _config = require("@expo/config");
7
6
  var _configPlugins = require("@expo/config-plugins");
8
7
  var _prebuildConfig = require("@expo/prebuild-config");
9
8
  var _configAsync = require("../config/configAsync");
@@ -42,16 +41,13 @@ async function configureProjectAsync(projectRoot, { platforms }) {
42
41
  // Check package before reading the config because it may mutate the config if the user is prompted to define it.
43
42
  packageName = await (0, _getOrPromptApplicationId).getOrPromptForPackage(projectRoot);
44
43
  }
45
- let { exp: config1 } = await (0, _prebuildConfig).getPrebuildConfigAsync(projectRoot, {
44
+ let { exp: config } = await (0, _prebuildConfig).getPrebuildConfigAsync(projectRoot, {
46
45
  platforms,
47
46
  packageName,
48
- bundleIdentifier,
49
- expoUsername (config) {
50
- return (0, _config).getAccountUsername(config);
51
- }
47
+ bundleIdentifier
52
48
  });
53
49
  // compile all plugins and mods
54
- config1 = await (0, _configPlugins).compileModsAsync(config1, {
50
+ config = await (0, _configPlugins).compileModsAsync(config, {
55
51
  projectRoot,
56
52
  platforms,
57
53
  assertMissingModProviders: false
@@ -59,10 +55,10 @@ async function configureProjectAsync(projectRoot, { platforms }) {
59
55
  if (_env.env.EXPO_DEBUG) {
60
56
  Log.log();
61
57
  Log.log("Evaluated config:");
62
- (0, _configAsync).logConfig(config1);
58
+ (0, _configAsync).logConfig(config);
63
59
  Log.log();
64
60
  }
65
- return config1;
61
+ return config;
66
62
  }
67
63
 
68
64
  //# sourceMappingURL=configureProjectAsync.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/prebuild/configureProjectAsync.ts"],"sourcesContent":["import { ExpoConfig, getAccountUsername } from '@expo/config';\nimport { compileModsAsync, ModPlatform } from '@expo/config-plugins';\nimport { getPrebuildConfigAsync } from '@expo/prebuild-config';\n\nimport { logConfig } from '../config/configAsync';\nimport * as Log from '../log';\nimport { env } from '../utils/env';\nimport {\n getOrPromptForBundleIdentifier,\n getOrPromptForPackage,\n} from '../utils/getOrPromptApplicationId';\n\nexport async function configureProjectAsync(\n projectRoot: string,\n {\n platforms,\n }: {\n platforms: ModPlatform[];\n }\n): Promise<ExpoConfig> {\n let bundleIdentifier: string | undefined;\n if (platforms.includes('ios')) {\n // Check bundle ID before reading the config because it may mutate the config if the user is prompted to define it.\n bundleIdentifier = await getOrPromptForBundleIdentifier(projectRoot);\n }\n let packageName: string | undefined;\n if (platforms.includes('android')) {\n // Check package before reading the config because it may mutate the config if the user is prompted to define it.\n packageName = await getOrPromptForPackage(projectRoot);\n }\n\n let { exp: config } = await getPrebuildConfigAsync(projectRoot, {\n platforms,\n packageName,\n bundleIdentifier,\n expoUsername(config) {\n return getAccountUsername(config);\n },\n });\n\n // compile all plugins and mods\n config = await compileModsAsync(config, {\n projectRoot,\n platforms,\n assertMissingModProviders: false,\n });\n\n if (env.EXPO_DEBUG) {\n Log.log();\n Log.log('Evaluated config:');\n logConfig(config);\n Log.log();\n }\n\n return config;\n}\n"],"names":["configureProjectAsync","Log","projectRoot","platforms","bundleIdentifier","includes","getOrPromptForBundleIdentifier","packageName","getOrPromptForPackage","exp","config","getPrebuildConfigAsync","expoUsername","getAccountUsername","compileModsAsync","assertMissingModProviders","env","EXPO_DEBUG","log","logConfig"],"mappings":"AAAA;;;;QAYsBA,qBAAqB,GAArBA,qBAAqB;AAZI,IAAA,OAAc,WAAd,cAAc,CAAA;AACf,IAAA,cAAsB,WAAtB,sBAAsB,CAAA;AAC7B,IAAA,eAAuB,WAAvB,uBAAuB,CAAA;AAEpC,IAAA,YAAuB,WAAvB,uBAAuB,CAAA;AACrCC,IAAAA,GAAG,mCAAM,QAAQ,EAAd;AACK,IAAA,IAAc,WAAd,cAAc,CAAA;AAI3B,IAAA,yBAAmC,WAAnC,mCAAmC,CAAA;;;;;;;;;;;;;;;;;;;;;;AAEnC,eAAeD,qBAAqB,CACzCE,WAAmB,EACnB,EACEC,SAAS,CAAA,EAGV,EACoB;IACrB,IAAIC,gBAAgB,AAAoB,AAAC;IACzC,IAAID,SAAS,CAACE,QAAQ,CAAC,KAAK,CAAC,EAAE;QAC7B,mHAAmH;QACnHD,gBAAgB,GAAG,MAAME,CAAAA,GAAAA,yBAA8B,AAAa,CAAA,+BAAb,CAACJ,WAAW,CAAC,CAAC;KACtE;IACD,IAAIK,WAAW,AAAoB,AAAC;IACpC,IAAIJ,SAAS,CAACE,QAAQ,CAAC,SAAS,CAAC,EAAE;QACjC,iHAAiH;QACjHE,WAAW,GAAG,MAAMC,CAAAA,GAAAA,yBAAqB,AAAa,CAAA,sBAAb,CAACN,WAAW,CAAC,CAAC;KACxD;IAED,IAAI,EAAEO,GAAG,EAAEC,OAAM,CAAA,EAAE,GAAG,MAAMC,CAAAA,GAAAA,eAAsB,AAOhD,CAAA,uBAPgD,CAACT,WAAW,EAAE;QAC9DC,SAAS;QACTI,WAAW;QACXH,gBAAgB;QAChBQ,YAAY,EAACF,MAAM,EAAE;YACnB,OAAOG,CAAAA,GAAAA,OAAkB,AAAQ,CAAA,mBAAR,CAACH,MAAM,CAAC,CAAC;SACnC;KACF,CAAC,AAAC;IAEH,+BAA+B;IAC/BA,OAAM,GAAG,MAAMI,CAAAA,GAAAA,cAAgB,AAI7B,CAAA,iBAJ6B,CAACJ,OAAM,EAAE;QACtCR,WAAW;QACXC,SAAS;QACTY,yBAAyB,EAAE,KAAK;KACjC,CAAC,CAAC;IAEH,IAAIC,IAAG,IAAA,CAACC,UAAU,EAAE;QAClBhB,GAAG,CAACiB,GAAG,EAAE,CAAC;QACVjB,GAAG,CAACiB,GAAG,CAAC,mBAAmB,CAAC,CAAC;QAC7BC,CAAAA,GAAAA,YAAS,AAAQ,CAAA,UAAR,CAACT,OAAM,CAAC,CAAC;QAClBT,GAAG,CAACiB,GAAG,EAAE,CAAC;KACX;IAED,OAAOR,OAAM,CAAC;CACf"}
1
+ {"version":3,"sources":["../../../src/prebuild/configureProjectAsync.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config';\nimport { compileModsAsync, ModPlatform } from '@expo/config-plugins';\nimport { getPrebuildConfigAsync } from '@expo/prebuild-config';\n\nimport { logConfig } from '../config/configAsync';\nimport * as Log from '../log';\nimport { env } from '../utils/env';\nimport {\n getOrPromptForBundleIdentifier,\n getOrPromptForPackage,\n} from '../utils/getOrPromptApplicationId';\n\nexport async function configureProjectAsync(\n projectRoot: string,\n {\n platforms,\n }: {\n platforms: ModPlatform[];\n }\n): Promise<ExpoConfig> {\n let bundleIdentifier: string | undefined;\n if (platforms.includes('ios')) {\n // Check bundle ID before reading the config because it may mutate the config if the user is prompted to define it.\n bundleIdentifier = await getOrPromptForBundleIdentifier(projectRoot);\n }\n let packageName: string | undefined;\n if (platforms.includes('android')) {\n // Check package before reading the config because it may mutate the config if the user is prompted to define it.\n packageName = await getOrPromptForPackage(projectRoot);\n }\n\n let { exp: config } = await getPrebuildConfigAsync(projectRoot, {\n platforms,\n packageName,\n bundleIdentifier,\n });\n\n // compile all plugins and mods\n config = await compileModsAsync(config, {\n projectRoot,\n platforms,\n assertMissingModProviders: false,\n });\n\n if (env.EXPO_DEBUG) {\n Log.log();\n Log.log('Evaluated config:');\n logConfig(config);\n Log.log();\n }\n\n return config;\n}\n"],"names":["configureProjectAsync","Log","projectRoot","platforms","bundleIdentifier","includes","getOrPromptForBundleIdentifier","packageName","getOrPromptForPackage","exp","config","getPrebuildConfigAsync","compileModsAsync","assertMissingModProviders","env","EXPO_DEBUG","log","logConfig"],"mappings":"AAAA;;;;QAYsBA,qBAAqB,GAArBA,qBAAqB;AAXG,IAAA,cAAsB,WAAtB,sBAAsB,CAAA;AAC7B,IAAA,eAAuB,WAAvB,uBAAuB,CAAA;AAEpC,IAAA,YAAuB,WAAvB,uBAAuB,CAAA;AACrCC,IAAAA,GAAG,mCAAM,QAAQ,EAAd;AACK,IAAA,IAAc,WAAd,cAAc,CAAA;AAI3B,IAAA,yBAAmC,WAAnC,mCAAmC,CAAA;;;;;;;;;;;;;;;;;;;;;;AAEnC,eAAeD,qBAAqB,CACzCE,WAAmB,EACnB,EACEC,SAAS,CAAA,EAGV,EACoB;IACrB,IAAIC,gBAAgB,AAAoB,AAAC;IACzC,IAAID,SAAS,CAACE,QAAQ,CAAC,KAAK,CAAC,EAAE;QAC7B,mHAAmH;QACnHD,gBAAgB,GAAG,MAAME,CAAAA,GAAAA,yBAA8B,AAAa,CAAA,+BAAb,CAACJ,WAAW,CAAC,CAAC;KACtE;IACD,IAAIK,WAAW,AAAoB,AAAC;IACpC,IAAIJ,SAAS,CAACE,QAAQ,CAAC,SAAS,CAAC,EAAE;QACjC,iHAAiH;QACjHE,WAAW,GAAG,MAAMC,CAAAA,GAAAA,yBAAqB,AAAa,CAAA,sBAAb,CAACN,WAAW,CAAC,CAAC;KACxD;IAED,IAAI,EAAEO,GAAG,EAAEC,MAAM,CAAA,EAAE,GAAG,MAAMC,CAAAA,GAAAA,eAAsB,AAIhD,CAAA,uBAJgD,CAACT,WAAW,EAAE;QAC9DC,SAAS;QACTI,WAAW;QACXH,gBAAgB;KACjB,CAAC,AAAC;IAEH,+BAA+B;IAC/BM,MAAM,GAAG,MAAME,CAAAA,GAAAA,cAAgB,AAI7B,CAAA,iBAJ6B,CAACF,MAAM,EAAE;QACtCR,WAAW;QACXC,SAAS;QACTU,yBAAyB,EAAE,KAAK;KACjC,CAAC,CAAC;IAEH,IAAIC,IAAG,IAAA,CAACC,UAAU,EAAE;QAClBd,GAAG,CAACe,GAAG,EAAE,CAAC;QACVf,GAAG,CAACe,GAAG,CAAC,mBAAmB,CAAC,CAAC;QAC7BC,CAAAA,GAAAA,YAAS,AAAQ,CAAA,UAAR,CAACP,MAAM,CAAC,CAAC;QAClBT,GAAG,CAACe,GAAG,EAAE,CAAC;KACX;IAED,OAAON,MAAM,CAAC;CACf"}
@@ -40,6 +40,7 @@ const expoPrebuild = async (argv)=>{
40
40
  "--npm": Boolean,
41
41
  "--pnpm": Boolean,
42
42
  "--yarn": Boolean,
43
+ "--bun": Boolean,
43
44
  "--no-install": Boolean,
44
45
  "--template": String,
45
46
  "--platform": String,
@@ -56,6 +57,7 @@ const expoPrebuild = async (argv)=>{
56
57
  `--clean Delete the native folders and regenerate them before applying changes`,
57
58
  _chalk.default`--npm Use npm to install dependencies. {dim Default when package-lock.json exists}`,
58
59
  _chalk.default`--yarn Use Yarn to install dependencies. {dim Default when yarn.lock exists}`,
60
+ _chalk.default`--bun Use bun to install dependencies. {dim Default when bun.lockb exists}`,
59
61
  _chalk.default`--pnpm Use pnpm to install dependencies. {dim Default when pnpm-lock.yaml exists}`,
60
62
  `--template <template> Project template to clone from. File path pointing to a local tar file or a github repo`,
61
63
  _chalk.default`-p, --platform <all|android|ios> Platforms to sync: ios, android, all. {dim Default: all}`,