@depup/expo__cli 55.0.22-depup.1 → 57.0.9-depup.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 (600) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +13 -18
  3. package/build/bin/cli +4 -4
  4. package/build/bin/cli.map +1 -1
  5. package/build/src/api/endpoint.js +4 -4
  6. package/build/src/api/endpoint.js.map +1 -1
  7. package/build/src/api/getExpoSchema.js +3 -3
  8. package/build/src/api/getExpoSchema.js.map +1 -1
  9. package/build/src/api/graphql/client.js +26 -14
  10. package/build/src/api/graphql/client.js.map +1 -1
  11. package/build/src/api/graphql/mutations/TunnelMutation.js +31 -0
  12. package/build/src/api/graphql/mutations/TunnelMutation.js.map +1 -0
  13. package/build/src/api/rest/cache/FileSystemResponseCache.js.map +1 -1
  14. package/build/src/api/rest/cache/ResponseCache.js +5 -5
  15. package/build/src/api/rest/cache/ResponseCache.js.map +1 -1
  16. package/build/src/api/rest/client.js +35 -20
  17. package/build/src/api/rest/client.js.map +1 -1
  18. package/build/src/api/rest/wrapFetchWithBaseUrl.js.map +1 -1
  19. package/build/src/api/rest/wrapFetchWithOffline.js.map +1 -1
  20. package/build/src/api/rest/wrapFetchWithProgress.js.map +1 -1
  21. package/build/src/api/rest/wrapFetchWithUserAgent.js.map +1 -1
  22. package/build/src/api/updateDevelopmentSession.js +6 -5
  23. package/build/src/api/updateDevelopmentSession.js.map +1 -1
  24. package/build/src/api/user/UserSettings.js +28 -15
  25. package/build/src/api/user/UserSettings.js.map +1 -1
  26. package/build/src/api/user/actions.js +10 -3
  27. package/build/src/api/user/actions.js.map +1 -1
  28. package/build/src/api/user/expoSsoLauncher.js +76 -24
  29. package/build/src/api/user/expoSsoLauncher.js.map +1 -1
  30. package/build/src/api/user/otp.js +4 -4
  31. package/build/src/api/user/otp.js.map +1 -1
  32. package/build/src/api/user/user.js +19 -7
  33. package/build/src/api/user/user.js.map +1 -1
  34. package/build/src/config/configAsync.js +3 -3
  35. package/build/src/config/configAsync.js.map +1 -1
  36. package/build/src/config/index.js.map +1 -1
  37. package/build/src/customize/customizeAsync.js.map +1 -1
  38. package/build/src/customize/generate.js +7 -4
  39. package/build/src/customize/generate.js.map +1 -1
  40. package/build/src/customize/index.js.map +1 -1
  41. package/build/src/customize/templates.js +4 -6
  42. package/build/src/customize/templates.js.map +1 -1
  43. package/build/src/customize/typescript.js.map +1 -1
  44. package/build/src/events/index.js +19 -15
  45. package/build/src/events/index.js.map +1 -1
  46. package/build/src/events/stream.js +94 -24
  47. package/build/src/events/stream.js.map +1 -1
  48. package/build/src/expoUpdatesExports.js +50 -7
  49. package/build/src/expoUpdatesExports.js.map +1 -1
  50. package/build/src/export/createMetadataJson.js +2 -1
  51. package/build/src/export/createMetadataJson.js.map +1 -1
  52. package/build/src/export/embed/exportEmbedAsync.js +58 -24
  53. package/build/src/export/embed/exportEmbedAsync.js.map +1 -1
  54. package/build/src/export/embed/exportServer.js +1 -1
  55. package/build/src/export/embed/exportServer.js.map +1 -1
  56. package/build/src/export/embed/index.js +1 -1
  57. package/build/src/export/embed/index.js.map +1 -1
  58. package/build/src/export/embed/resolveOptions.js +7 -6
  59. package/build/src/export/embed/resolveOptions.js.map +1 -1
  60. package/build/src/export/embed/xcodeCompilerLogger.js +7 -7
  61. package/build/src/export/embed/xcodeCompilerLogger.js.map +1 -1
  62. package/build/src/export/exportApp.js +40 -30
  63. package/build/src/export/exportApp.js.map +1 -1
  64. package/build/src/export/exportAssets.js +5 -5
  65. package/build/src/export/exportAssets.js.map +1 -1
  66. package/build/src/export/exportAsync.js.map +1 -1
  67. package/build/src/export/exportDomComponents.js +16 -9
  68. package/build/src/export/exportDomComponents.js.map +1 -1
  69. package/build/src/export/exportHermes.js +23 -13
  70. package/build/src/export/exportHermes.js.map +1 -1
  71. package/build/src/export/exportStaticAsync.js +30 -21
  72. package/build/src/export/exportStaticAsync.js.map +1 -1
  73. package/build/src/export/favicon.js +26 -34
  74. package/build/src/export/favicon.js.map +1 -1
  75. package/build/src/export/getPublicExpoManifest.js.map +1 -1
  76. package/build/src/export/getResolvedLocales.js.map +1 -1
  77. package/build/src/export/html.js +3 -3
  78. package/build/src/export/html.js.map +1 -1
  79. package/build/src/export/index.js +2 -0
  80. package/build/src/export/index.js.map +1 -1
  81. package/build/src/export/metroAssetLocalPath.js +4 -4
  82. package/build/src/export/metroAssetLocalPath.js.map +1 -1
  83. package/build/src/export/persistMetroAssets.js +6 -6
  84. package/build/src/export/persistMetroAssets.js.map +1 -1
  85. package/build/src/export/publicFolder.js +16 -4
  86. package/build/src/export/publicFolder.js.map +1 -1
  87. package/build/src/export/resolveOptions.js +12 -13
  88. package/build/src/export/resolveOptions.js.map +1 -1
  89. package/build/src/export/saveAssets.js +3 -3
  90. package/build/src/export/saveAssets.js.map +1 -1
  91. package/build/src/export/static.js +6 -0
  92. package/build/src/export/static.js.map +1 -0
  93. package/build/src/export/web/exportWebAsync.js.map +1 -1
  94. package/build/src/export/web/index.js.map +1 -1
  95. package/build/src/export/writeContents.js.map +1 -1
  96. package/build/src/install/checkPackages.js +1 -28
  97. package/build/src/install/checkPackages.js.map +1 -1
  98. package/build/src/install/fixPackages.js.map +1 -1
  99. package/build/src/install/index.js.map +1 -1
  100. package/build/src/install/installAsync.js +3 -3
  101. package/build/src/install/installAsync.js.map +1 -1
  102. package/build/src/install/installExpoPackage.js.map +1 -1
  103. package/build/src/install/resolveOptions.js.map +1 -1
  104. package/build/src/install/utils/autoAddConfigPlugins.js +3 -3
  105. package/build/src/install/utils/autoAddConfigPlugins.js.map +1 -1
  106. package/build/src/install/utils/checkPackagesCompatibility.js +32 -16
  107. package/build/src/install/utils/checkPackagesCompatibility.js.map +1 -1
  108. package/build/src/lint/ESlintPrerequisite.js.map +1 -1
  109. package/build/src/log.js +32 -14
  110. package/build/src/log.js.map +1 -1
  111. package/build/src/login/index.js +25 -5
  112. package/build/src/login/index.js.map +1 -1
  113. package/build/src/logout/index.js.map +1 -1
  114. package/build/src/prebuild/clearNativeFolder.js +49 -14
  115. package/build/src/prebuild/clearNativeFolder.js.map +1 -1
  116. package/build/src/prebuild/configureProjectAsync.js.map +1 -1
  117. package/build/src/prebuild/copyTemplateFiles.js +3 -3
  118. package/build/src/prebuild/copyTemplateFiles.js.map +1 -1
  119. package/build/src/prebuild/ensureConfigAsync.js.map +1 -1
  120. package/build/src/prebuild/index.js +3 -2
  121. package/build/src/prebuild/index.js.map +1 -1
  122. package/build/src/prebuild/prebuildAsync.js +31 -6
  123. package/build/src/prebuild/prebuildAsync.js.map +1 -1
  124. package/build/src/prebuild/renameTemplateAppName.js +8 -5
  125. package/build/src/prebuild/renameTemplateAppName.js.map +1 -1
  126. package/build/src/prebuild/resolveOptions.js +7 -7
  127. package/build/src/prebuild/resolveOptions.js.map +1 -1
  128. package/build/src/prebuild/resolveTemplate.js +10 -5
  129. package/build/src/prebuild/resolveTemplate.js.map +1 -1
  130. package/build/src/prebuild/updateFromTemplate.js +3 -3
  131. package/build/src/prebuild/updateFromTemplate.js.map +1 -1
  132. package/build/src/prebuild/updatePackageJson.js +7 -7
  133. package/build/src/prebuild/updatePackageJson.js.map +1 -1
  134. package/build/src/prebuild/validateTemplatePlatforms.js.map +1 -1
  135. package/build/src/register/index.js.map +1 -1
  136. package/build/src/run/android/index.js.map +1 -1
  137. package/build/src/run/android/resolveGradlePropsAsync.js +3 -4
  138. package/build/src/run/android/resolveGradlePropsAsync.js.map +1 -1
  139. package/build/src/run/android/resolveInstallApkName.js +48 -1
  140. package/build/src/run/android/resolveInstallApkName.js.map +1 -1
  141. package/build/src/run/android/resolveLaunchProps.js +4 -1
  142. package/build/src/run/android/resolveLaunchProps.js.map +1 -1
  143. package/build/src/run/android/resolveOptions.js.map +1 -1
  144. package/build/src/run/android/runAndroidAsync.js.map +1 -1
  145. package/build/src/run/ensureNativeProject.js.map +1 -1
  146. package/build/src/run/hints.js +4 -4
  147. package/build/src/run/hints.js.map +1 -1
  148. package/build/src/run/index.js.map +1 -1
  149. package/build/src/run/ios/XcodeBuild.js +163 -23
  150. package/build/src/run/ios/XcodeBuild.js.map +1 -1
  151. package/build/src/run/ios/appleDevice/AppleDevice.js +6 -5
  152. package/build/src/run/ios/appleDevice/AppleDevice.js.map +1 -1
  153. package/build/src/run/ios/appleDevice/ClientManager.js.map +1 -1
  154. package/build/src/run/ios/appleDevice/client/AFCClient.js +10 -16
  155. package/build/src/run/ios/appleDevice/client/AFCClient.js.map +1 -1
  156. package/build/src/run/ios/appleDevice/client/DebugserverClient.js +1 -1
  157. package/build/src/run/ios/appleDevice/client/DebugserverClient.js.map +1 -1
  158. package/build/src/run/ios/appleDevice/client/InstallationProxyClient.js +2 -1
  159. package/build/src/run/ios/appleDevice/client/InstallationProxyClient.js.map +1 -1
  160. package/build/src/run/ios/appleDevice/client/LockdowndClient.js +1 -1
  161. package/build/src/run/ios/appleDevice/client/LockdowndClient.js.map +1 -1
  162. package/build/src/run/ios/appleDevice/client/MobileImageMounterClient.js.map +1 -1
  163. package/build/src/run/ios/appleDevice/client/ServiceClient.js +3 -3
  164. package/build/src/run/ios/appleDevice/client/ServiceClient.js.map +1 -1
  165. package/build/src/run/ios/appleDevice/client/UsbmuxdClient.js.map +1 -1
  166. package/build/src/run/ios/appleDevice/installOnDeviceAsync.js +3 -3
  167. package/build/src/run/ios/appleDevice/installOnDeviceAsync.js.map +1 -1
  168. package/build/src/run/ios/appleDevice/protocol/AFCProtocol.js +16 -13
  169. package/build/src/run/ios/appleDevice/protocol/AFCProtocol.js.map +1 -1
  170. package/build/src/run/ios/appleDevice/protocol/AbstractProtocol.js +6 -6
  171. package/build/src/run/ios/appleDevice/protocol/AbstractProtocol.js.map +1 -1
  172. package/build/src/run/ios/appleDevice/protocol/GDBProtocol.js +5 -5
  173. package/build/src/run/ios/appleDevice/protocol/GDBProtocol.js.map +1 -1
  174. package/build/src/run/ios/appleDevice/protocol/LockdownProtocol.js +7 -7
  175. package/build/src/run/ios/appleDevice/protocol/LockdownProtocol.js.map +1 -1
  176. package/build/src/run/ios/appleDevice/protocol/UsbmuxProtocol.js +5 -5
  177. package/build/src/run/ios/appleDevice/protocol/UsbmuxProtocol.js.map +1 -1
  178. package/build/src/run/ios/codeSigning/Security.js +8 -8
  179. package/build/src/run/ios/codeSigning/Security.js.map +1 -1
  180. package/build/src/run/ios/codeSigning/configureCodeSigning.js +5 -3
  181. package/build/src/run/ios/codeSigning/configureCodeSigning.js.map +1 -1
  182. package/build/src/run/ios/codeSigning/resolveCertificateSigningIdentity.js +7 -5
  183. package/build/src/run/ios/codeSigning/resolveCertificateSigningIdentity.js.map +1 -1
  184. package/build/src/run/ios/codeSigning/settings.js +3 -3
  185. package/build/src/run/ios/codeSigning/settings.js.map +1 -1
  186. package/build/src/run/ios/codeSigning/xcodeCodeSigning.js +4 -4
  187. package/build/src/run/ios/codeSigning/xcodeCodeSigning.js.map +1 -1
  188. package/build/src/run/ios/index.js +8 -1
  189. package/build/src/run/ios/index.js.map +1 -1
  190. package/build/src/run/ios/launchApp.js +3 -3
  191. package/build/src/run/ios/launchApp.js.map +1 -1
  192. package/build/src/run/ios/options/appleDestinations.js.map +1 -1
  193. package/build/src/run/ios/options/promptDevice.js +3 -3
  194. package/build/src/run/ios/options/promptDevice.js.map +1 -1
  195. package/build/src/run/ios/options/resolveDevice.js +8 -3
  196. package/build/src/run/ios/options/resolveDevice.js.map +1 -1
  197. package/build/src/run/ios/options/resolveNativeScheme.js +4 -4
  198. package/build/src/run/ios/options/resolveNativeScheme.js.map +1 -1
  199. package/build/src/run/ios/options/resolveOptions.js +9 -4
  200. package/build/src/run/ios/options/resolveOptions.js.map +1 -1
  201. package/build/src/run/ios/options/resolveXcodeProject.js.map +1 -1
  202. package/build/src/run/ios/runIosAsync.js +39 -0
  203. package/build/src/run/ios/runIosAsync.js.map +1 -1
  204. package/build/src/run/ios/validateExternalBinary.js.map +1 -1
  205. package/build/src/run/startBundler.js +4 -0
  206. package/build/src/run/startBundler.js.map +1 -1
  207. package/build/src/serve/index.js +4 -1
  208. package/build/src/serve/index.js.map +1 -1
  209. package/build/src/serve/serveAsync.js +23 -11
  210. package/build/src/serve/serveAsync.js.map +1 -1
  211. package/build/src/serve/static.js +69 -0
  212. package/build/src/serve/static.js.map +1 -0
  213. package/build/src/start/checkDependenciesOnStart.js +131 -0
  214. package/build/src/start/checkDependenciesOnStart.js.map +1 -0
  215. package/build/src/start/detectDevClient.js +3 -3
  216. package/build/src/start/detectDevClient.js.map +1 -1
  217. package/build/src/start/doctor/Prerequisite.js +4 -4
  218. package/build/src/start/doctor/Prerequisite.js.map +1 -1
  219. package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js +53 -91
  220. package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js.map +1 -1
  221. package/build/src/start/doctor/apple/XcodePrerequisite.js +3 -3
  222. package/build/src/start/doctor/apple/XcodePrerequisite.js.map +1 -1
  223. package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js +3 -3
  224. package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js.map +1 -1
  225. package/build/src/start/doctor/dependencies/getMissingPackages.js +5 -5
  226. package/build/src/start/doctor/dependencies/getMissingPackages.js.map +1 -1
  227. package/build/src/start/doctor/dependencies/getVersionedPackages.js +5 -5
  228. package/build/src/start/doctor/dependencies/getVersionedPackages.js.map +1 -1
  229. package/build/src/start/doctor/dependencies/reactNativeTv.js +149 -0
  230. package/build/src/start/doctor/dependencies/reactNativeTv.js.map +1 -0
  231. package/build/src/start/doctor/dependencies/resolvePackages.js +4 -4
  232. package/build/src/start/doctor/dependencies/resolvePackages.js.map +1 -1
  233. package/build/src/start/doctor/dependencies/validateDependenciesVersions.js +33 -8
  234. package/build/src/start/doctor/dependencies/validateDependenciesVersions.js.map +1 -1
  235. package/build/src/start/doctor/ngrok/ExternalModule.js +14 -9
  236. package/build/src/start/doctor/ngrok/ExternalModule.js.map +1 -1
  237. package/build/src/start/doctor/ngrok/NgrokResolver.js +3 -3
  238. package/build/src/start/doctor/ngrok/NgrokResolver.js.map +1 -1
  239. package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js.map +1 -1
  240. package/build/src/start/doctor/typescript/updateTSConfig.js +3 -3
  241. package/build/src/start/doctor/typescript/updateTSConfig.js.map +1 -1
  242. package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js +5 -12
  243. package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js.map +1 -1
  244. package/build/src/start/index.js +2 -0
  245. package/build/src/start/index.js.map +1 -1
  246. package/build/src/start/interface/KeyPressHandler.js.map +1 -1
  247. package/build/src/start/interface/cliExtensionMenuItemHandler.js.map +1 -1
  248. package/build/src/start/interface/commandsTable.js +6 -6
  249. package/build/src/start/interface/commandsTable.js.map +1 -1
  250. package/build/src/start/interface/createDevToolsMenuItems.js.map +1 -1
  251. package/build/src/start/interface/interactiveActions.js +49 -6
  252. package/build/src/start/interface/interactiveActions.js.map +1 -1
  253. package/build/src/start/interface/startInterface.js +13 -4
  254. package/build/src/start/interface/startInterface.js.map +1 -1
  255. package/build/src/start/platforms/AppIdResolver.js +4 -0
  256. package/build/src/start/platforms/AppIdResolver.js.map +1 -1
  257. package/build/src/start/platforms/DeviceManager.js.map +1 -1
  258. package/build/src/start/platforms/ExpoGoInstaller.js +13 -4
  259. package/build/src/start/platforms/ExpoGoInstaller.js.map +1 -1
  260. package/build/src/start/platforms/PlatformManager.js.map +1 -1
  261. package/build/src/start/platforms/android/AndroidAppIdResolver.js.map +1 -1
  262. package/build/src/start/platforms/android/AndroidDeviceManager.js.map +1 -1
  263. package/build/src/start/platforms/android/AndroidPlatformManager.js.map +1 -1
  264. package/build/src/start/platforms/android/activateWindow.js.map +1 -1
  265. package/build/src/start/platforms/android/adb.js +36 -34
  266. package/build/src/start/platforms/android/adb.js.map +1 -1
  267. package/build/src/start/platforms/android/adbReverse.js +4 -4
  268. package/build/src/start/platforms/android/adbReverse.js.map +1 -1
  269. package/build/src/start/platforms/android/emulator.js +5 -5
  270. package/build/src/start/platforms/android/emulator.js.map +1 -1
  271. package/build/src/start/platforms/android/getDevices.js.map +1 -1
  272. package/build/src/start/platforms/android/gradle.js +5 -5
  273. package/build/src/start/platforms/android/gradle.js.map +1 -1
  274. package/build/src/start/platforms/android/promptAndroidDevice.js +3 -3
  275. package/build/src/start/platforms/android/promptAndroidDevice.js.map +1 -1
  276. package/build/src/start/platforms/ios/AppleAppIdResolver.js.map +1 -1
  277. package/build/src/start/platforms/ios/AppleDeviceManager.js +20 -6
  278. package/build/src/start/platforms/ios/AppleDeviceManager.js.map +1 -1
  279. package/build/src/start/platforms/ios/ApplePlatformManager.js +11 -0
  280. package/build/src/start/platforms/ios/ApplePlatformManager.js.map +1 -1
  281. package/build/src/start/platforms/ios/devicectl.js +7 -7
  282. package/build/src/start/platforms/ios/devicectl.js.map +1 -1
  283. package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js +26 -11
  284. package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js.map +1 -1
  285. package/build/src/start/platforms/ios/getBestSimulator.js +5 -5
  286. package/build/src/start/platforms/ios/getBestSimulator.js.map +1 -1
  287. package/build/src/start/platforms/ios/promptAppleDevice.js +5 -4
  288. package/build/src/start/platforms/ios/promptAppleDevice.js.map +1 -1
  289. package/build/src/start/platforms/ios/simctl.js +25 -19
  290. package/build/src/start/platforms/ios/simctl.js.map +1 -1
  291. package/build/src/start/platforms/ios/simctlLogging.js +3 -3
  292. package/build/src/start/platforms/ios/simctlLogging.js.map +1 -1
  293. package/build/src/start/platforms/ios/xcrun.js +3 -3
  294. package/build/src/start/platforms/ios/xcrun.js.map +1 -1
  295. package/build/src/start/project/devices.js +6 -6
  296. package/build/src/start/project/devices.js.map +1 -1
  297. package/build/src/start/project/dotExpo.js +4 -3
  298. package/build/src/start/project/dotExpo.js.map +1 -1
  299. package/build/src/start/resolveOptions.js +7 -7
  300. package/build/src/start/resolveOptions.js.map +1 -1
  301. package/build/src/start/server/AsyncNgrok.js +1 -1
  302. package/build/src/start/server/AsyncNgrok.js.map +1 -1
  303. package/build/src/start/server/AsyncWsTunnel.js +120 -35
  304. package/build/src/start/server/AsyncWsTunnel.js.map +1 -1
  305. package/build/src/start/server/Bonjour.js +8 -3
  306. package/build/src/start/server/Bonjour.js.map +1 -1
  307. package/build/src/start/server/BundlerDevServer.js +23 -9
  308. package/build/src/start/server/BundlerDevServer.js.map +1 -1
  309. package/build/src/start/server/DevServerManager.js.map +1 -1
  310. package/build/src/start/server/DevToolsPlugin.js +63 -3
  311. package/build/src/start/server/DevToolsPlugin.js.map +1 -1
  312. package/build/src/start/server/DevToolsPlugin.schema.js +8 -3
  313. package/build/src/start/server/DevToolsPlugin.schema.js.map +1 -1
  314. package/build/src/start/server/DevToolsPluginCliExtensionExecutor.js +58 -23
  315. package/build/src/start/server/DevToolsPluginCliExtensionExecutor.js.map +1 -1
  316. package/build/src/start/server/DevToolsPluginCliExtensionResults.js +29 -0
  317. package/build/src/start/server/DevToolsPluginCliExtensionResults.js.map +1 -1
  318. package/build/src/start/server/DevToolsPluginManager.js +20 -6
  319. package/build/src/start/server/DevToolsPluginManager.js.map +1 -1
  320. package/build/src/start/server/DevToolsPluginServerHelpers.js +83 -0
  321. package/build/src/start/server/DevToolsPluginServerHelpers.js.map +1 -0
  322. package/build/src/start/server/DevelopmentSession.js +41 -24
  323. package/build/src/start/server/DevelopmentSession.js.map +1 -1
  324. package/build/src/start/server/MCP.js +10 -3
  325. package/build/src/start/server/MCP.js.map +1 -1
  326. package/build/src/start/server/MCPDevToolsPluginCLIExtensions.js +15 -5
  327. package/build/src/start/server/MCPDevToolsPluginCLIExtensions.js.map +1 -1
  328. package/build/src/start/server/UrlCreator.js +14 -1
  329. package/build/src/start/server/UrlCreator.js.map +1 -1
  330. package/build/src/start/server/createMCPDevToolsExtensionSchema.js +18 -4
  331. package/build/src/start/server/createMCPDevToolsExtensionSchema.js.map +1 -1
  332. package/build/src/start/server/getStaticRenderFunctions.js +13 -24
  333. package/build/src/start/server/getStaticRenderFunctions.js.map +1 -1
  334. package/build/src/start/server/metro/MetroBundlerDevServer.js +245 -114
  335. package/build/src/start/server/metro/MetroBundlerDevServer.js.map +1 -1
  336. package/build/src/start/server/metro/MetroTerminalReporter.js +67 -16
  337. package/build/src/start/server/metro/MetroTerminalReporter.js.map +1 -1
  338. package/build/src/start/server/metro/TerminalReporter.js +22 -4
  339. package/build/src/start/server/metro/TerminalReporter.js.map +1 -1
  340. package/build/src/start/server/metro/createExpoAutolinkingResolver.js +25 -12
  341. package/build/src/start/server/metro/createExpoAutolinkingResolver.js.map +1 -1
  342. package/build/src/start/server/metro/createExpoFallbackResolver.js +39 -0
  343. package/build/src/start/server/metro/createExpoFallbackResolver.js.map +1 -1
  344. package/build/src/start/server/metro/createFileMap-fork.js +196 -0
  345. package/build/src/start/server/metro/createFileMap-fork.js.map +1 -0
  346. package/build/src/start/server/metro/createServerComponentsMiddleware.js +22 -22
  347. package/build/src/start/server/metro/createServerComponentsMiddleware.js.map +1 -1
  348. package/build/src/start/server/metro/createServerRouteMiddleware.js.map +1 -1
  349. package/build/src/start/server/metro/createTypescriptResolver.js +410 -0
  350. package/build/src/start/server/metro/createTypescriptResolver.js.map +1 -0
  351. package/build/src/start/server/metro/debugging/MessageHandler.js.map +1 -1
  352. package/build/src/start/server/metro/debugging/attachAtlas.js +3 -3
  353. package/build/src/start/server/metro/debugging/attachAtlas.js.map +1 -1
  354. package/build/src/start/server/metro/debugging/createDebugMiddleware.js +6 -5
  355. package/build/src/start/server/metro/debugging/createDebugMiddleware.js.map +1 -1
  356. package/build/src/start/server/metro/debugging/createHandlersFactory.js.map +1 -1
  357. package/build/src/start/server/metro/debugging/messageHandlers/NetworkResponse.js +20 -4
  358. package/build/src/start/server/metro/debugging/messageHandlers/NetworkResponse.js.map +1 -1
  359. package/build/src/start/server/metro/debugging/pageIsSupported.js.map +1 -1
  360. package/build/src/start/server/metro/dev-server/compression.js.map +1 -1
  361. package/build/src/start/server/metro/dev-server/createMessageSocket.js +13 -2
  362. package/build/src/start/server/metro/dev-server/createMessageSocket.js.map +1 -1
  363. package/build/src/start/server/metro/dev-server/createMetroMiddleware.js +9 -2
  364. package/build/src/start/server/metro/dev-server/createMetroMiddleware.js.map +1 -1
  365. package/build/src/start/server/metro/dev-server/utils/socketMessages.js +3 -3
  366. package/build/src/start/server/metro/dev-server/utils/socketMessages.js.map +1 -1
  367. package/build/src/start/server/metro/errors/FailedToResolveNativeOnlyModuleError.js.map +1 -1
  368. package/build/src/start/server/metro/externals.js +4 -4
  369. package/build/src/start/server/metro/externals.js.map +1 -1
  370. package/build/src/start/server/metro/fetchRouterManifest.js +3 -3
  371. package/build/src/start/server/metro/fetchRouterManifest.js.map +1 -1
  372. package/build/src/start/server/metro/getCssModulesFromBundler.js +3 -3
  373. package/build/src/start/server/metro/getCssModulesFromBundler.js.map +1 -1
  374. package/build/src/start/server/metro/instantiateMetro.js +141 -57
  375. package/build/src/start/server/metro/instantiateMetro.js.map +1 -1
  376. package/build/src/start/server/metro/log-box/LogBoxLog.js.map +1 -1
  377. package/build/src/start/server/metro/log-box/LogBoxSymbolication.js +4 -4
  378. package/build/src/start/server/metro/log-box/LogBoxSymbolication.js.map +1 -1
  379. package/build/src/start/server/metro/log-box/formatProjectFilePath.js +3 -3
  380. package/build/src/start/server/metro/log-box/formatProjectFilePath.js.map +1 -1
  381. package/build/src/start/server/metro/metroErrorInterface.js +16 -13
  382. package/build/src/start/server/metro/metroErrorInterface.js.map +1 -1
  383. package/build/src/start/server/metro/metroErrors.js +3 -3
  384. package/build/src/start/server/metro/metroErrors.js.map +1 -1
  385. package/build/src/start/server/metro/metroWatchTypeScriptFiles.js +48 -16
  386. package/build/src/start/server/metro/metroWatchTypeScriptFiles.js.map +1 -1
  387. package/build/src/start/server/metro/resolveLoader.js +3 -3
  388. package/build/src/start/server/metro/resolveLoader.js.map +1 -1
  389. package/build/src/start/server/metro/router.js +23 -14
  390. package/build/src/start/server/metro/router.js.map +1 -1
  391. package/build/src/start/server/metro/runServer-fork.js +13 -10
  392. package/build/src/start/server/metro/runServer-fork.js.map +1 -1
  393. package/build/src/start/server/metro/serializeHtml.js +29 -13
  394. package/build/src/start/server/metro/serializeHtml.js.map +1 -1
  395. package/build/src/start/server/metro/waitForMetroToObserveTypeScriptFile.js +36 -34
  396. package/build/src/start/server/metro/waitForMetroToObserveTypeScriptFile.js.map +1 -1
  397. package/build/src/start/server/metro/withMetroErrorReportingResolver.js +53 -30
  398. package/build/src/start/server/metro/withMetroErrorReportingResolver.js.map +1 -1
  399. package/build/src/start/server/metro/withMetroMultiPlatform.js +187 -126
  400. package/build/src/start/server/metro/withMetroMultiPlatform.js.map +1 -1
  401. package/build/src/start/server/metro/withMetroResolvers.js +4 -4
  402. package/build/src/start/server/metro/withMetroResolvers.js.map +1 -1
  403. package/build/src/start/server/middleware/ContextModuleSourceMapsMiddleware.js.map +1 -1
  404. package/build/src/start/server/middleware/CorsMiddleware.js +3 -3
  405. package/build/src/start/server/middleware/CorsMiddleware.js.map +1 -1
  406. package/build/src/start/server/middleware/CreateFileMiddleware.js.map +1 -1
  407. package/build/src/start/server/middleware/DevToolsPluginMiddleware.js +60 -9
  408. package/build/src/start/server/middleware/DevToolsPluginMiddleware.js.map +1 -1
  409. package/build/src/start/server/middleware/DomComponentsMiddleware.js +30 -17
  410. package/build/src/start/server/middleware/DomComponentsMiddleware.js.map +1 -1
  411. package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js +6 -4
  412. package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js.map +1 -1
  413. package/build/src/start/server/middleware/ExpoMiddleware.js +3 -3
  414. package/build/src/start/server/middleware/ExpoMiddleware.js.map +1 -1
  415. package/build/src/start/server/middleware/FaviconMiddleware.js.map +1 -1
  416. package/build/src/start/server/middleware/HistoryFallbackMiddleware.js.map +1 -1
  417. package/build/src/start/server/middleware/InterstitialPageMiddleware.js +13 -8
  418. package/build/src/start/server/middleware/InterstitialPageMiddleware.js.map +1 -1
  419. package/build/src/start/server/middleware/ManifestMiddleware.js +19 -47
  420. package/build/src/start/server/middleware/ManifestMiddleware.js.map +1 -1
  421. package/build/src/start/server/middleware/OpenMiddleware.js +150 -0
  422. package/build/src/start/server/middleware/OpenMiddleware.js.map +1 -0
  423. package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js +13 -4
  424. package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js.map +1 -1
  425. package/build/src/start/server/middleware/ServeStaticMiddleware.js +2 -9
  426. package/build/src/start/server/middleware/ServeStaticMiddleware.js.map +1 -1
  427. package/build/src/start/server/middleware/domPolyfills.js +60 -0
  428. package/build/src/start/server/middleware/domPolyfills.js.map +1 -0
  429. package/build/src/start/server/middleware/inspector/JsInspector.js +6 -31
  430. package/build/src/start/server/middleware/inspector/JsInspector.js.map +1 -1
  431. package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js +14 -24
  432. package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js.map +1 -1
  433. package/build/src/start/server/middleware/inspector/middlwareMutations.js +3 -3
  434. package/build/src/start/server/middleware/inspector/middlwareMutations.js.map +1 -1
  435. package/build/src/start/server/middleware/metroOptions.js +15 -14
  436. package/build/src/start/server/middleware/metroOptions.js.map +1 -1
  437. package/build/src/start/server/middleware/mutations.js +3 -3
  438. package/build/src/start/server/middleware/mutations.js.map +1 -1
  439. package/build/src/start/server/middleware/openHandlers.js +157 -0
  440. package/build/src/start/server/middleware/openHandlers.js.map +1 -0
  441. package/build/src/start/server/middleware/resolveAssets.js +4 -4
  442. package/build/src/start/server/middleware/resolveAssets.js.map +1 -1
  443. package/build/src/start/server/middleware/resolvePlatform.js +9 -7
  444. package/build/src/start/server/middleware/resolvePlatform.js.map +1 -1
  445. package/build/src/start/server/middleware/resolveRuntimeVersionWithExpoUpdatesAsync.js.map +1 -1
  446. package/build/src/start/server/openPlatforms.js.map +1 -1
  447. package/build/src/start/server/platformBundlers.js +3 -1
  448. package/build/src/start/server/platformBundlers.js.map +1 -1
  449. package/build/src/start/server/serverLogLikeMetro.js +13 -36
  450. package/build/src/start/server/serverLogLikeMetro.js.map +1 -1
  451. package/build/src/start/server/type-generation/expo-env.js +3 -3
  452. package/build/src/start/server/type-generation/expo-env.js.map +1 -1
  453. package/build/src/start/server/type-generation/routes.js +14 -55
  454. package/build/src/start/server/type-generation/routes.js.map +1 -1
  455. package/build/src/start/server/type-generation/startTypescriptTypeGeneration.js.map +1 -1
  456. package/build/src/start/server/type-generation/tsconfig.js +5 -5
  457. package/build/src/start/server/type-generation/tsconfig.js.map +1 -1
  458. package/build/src/start/server/webTemplate.js +12 -10
  459. package/build/src/start/server/webTemplate.js.map +1 -1
  460. package/build/src/start/server/webpack/WebpackBundlerDevServer.js +3 -3
  461. package/build/src/start/server/webpack/WebpackBundlerDevServer.js.map +1 -1
  462. package/build/src/start/server/webpack/formatWebpackMessages.js.map +1 -1
  463. package/build/src/start/server/webpack/resolveFromProject.js +4 -4
  464. package/build/src/start/server/webpack/resolveFromProject.js.map +1 -1
  465. package/build/src/start/server/webpack/tls.js +3 -3
  466. package/build/src/start/server/webpack/tls.js.map +1 -1
  467. package/build/src/start/startAsync.js +21 -11
  468. package/build/src/start/startAsync.js.map +1 -1
  469. package/build/src/types.d.ts +2 -0
  470. package/build/src/utils/FileNotifier.js +1 -1
  471. package/build/src/utils/FileNotifier.js.map +1 -1
  472. package/build/src/utils/args.js +5 -5
  473. package/build/src/utils/args.js.map +1 -1
  474. package/build/src/utils/array.js +8 -8
  475. package/build/src/utils/array.js.map +1 -1
  476. package/build/src/utils/build-cache-providers/helpers.js +4 -4
  477. package/build/src/utils/build-cache-providers/helpers.js.map +1 -1
  478. package/build/src/utils/build-cache-providers/index.js +5 -5
  479. package/build/src/utils/build-cache-providers/index.js.map +1 -1
  480. package/build/src/utils/cocoapods.js +5 -5
  481. package/build/src/utils/cocoapods.js.map +1 -1
  482. package/build/src/utils/codesigning.js +12 -6
  483. package/build/src/utils/codesigning.js.map +1 -1
  484. package/build/src/utils/composeMetroIgnorePatterns.js +69 -0
  485. package/build/src/utils/composeMetroIgnorePatterns.js.map +1 -0
  486. package/build/src/utils/createTempPath.js +3 -3
  487. package/build/src/utils/createTempPath.js.map +1 -1
  488. package/build/src/utils/delay.js +4 -4
  489. package/build/src/utils/delay.js.map +1 -1
  490. package/build/src/utils/dir.js +21 -11
  491. package/build/src/utils/dir.js.map +1 -1
  492. package/build/src/utils/downloadAppAsync.js.map +1 -1
  493. package/build/src/utils/downloadExpoGoAsync.js +4 -4
  494. package/build/src/utils/downloadExpoGoAsync.js.map +1 -1
  495. package/build/src/utils/editor.js +4 -4
  496. package/build/src/utils/editor.js.map +1 -1
  497. package/build/src/utils/env.js +39 -13
  498. package/build/src/utils/env.js.map +1 -1
  499. package/build/src/utils/errors.js +6 -6
  500. package/build/src/utils/errors.js.map +1 -1
  501. package/build/src/utils/exit.js +15 -19
  502. package/build/src/utils/exit.js.map +1 -1
  503. package/build/src/utils/expoUpdatesCli.js +5 -5
  504. package/build/src/utils/expoUpdatesCli.js.map +1 -1
  505. package/build/src/utils/fetch.js +4 -4
  506. package/build/src/utils/fetch.js.map +1 -1
  507. package/build/src/utils/filePath.js +3 -29
  508. package/build/src/utils/filePath.js.map +1 -1
  509. package/build/src/utils/findUp.js +3 -3
  510. package/build/src/utils/findUp.js.map +1 -1
  511. package/build/src/utils/fn.js +3 -3
  512. package/build/src/utils/fn.js.map +1 -1
  513. package/build/src/utils/freeport.js +3 -3
  514. package/build/src/utils/freeport.js.map +1 -1
  515. package/build/src/utils/getOrPromptApplicationId.js +3 -5
  516. package/build/src/utils/getOrPromptApplicationId.js.map +1 -1
  517. package/build/src/utils/getRunningProcess.js +5 -5
  518. package/build/src/utils/getRunningProcess.js.map +1 -1
  519. package/build/src/utils/git.js +3 -3
  520. package/build/src/utils/git.js.map +1 -1
  521. package/build/src/utils/glob.js +3 -3
  522. package/build/src/utils/glob.js.map +1 -1
  523. package/build/src/utils/ip.js +4 -4
  524. package/build/src/utils/ip.js.map +1 -1
  525. package/build/src/utils/link.js +3 -3
  526. package/build/src/utils/link.js.map +1 -1
  527. package/build/src/utils/mergeGitIgnorePaths.js +10 -10
  528. package/build/src/utils/mergeGitIgnorePaths.js.map +1 -1
  529. package/build/src/utils/modifyConfigAsync.js +3 -3
  530. package/build/src/utils/modifyConfigAsync.js.map +1 -1
  531. package/build/src/utils/net.js +23 -4
  532. package/build/src/utils/net.js.map +1 -1
  533. package/build/src/utils/nodeEnv.js +6 -6
  534. package/build/src/utils/nodeEnv.js.map +1 -1
  535. package/build/src/utils/npm.js +10 -9
  536. package/build/src/utils/npm.js.map +1 -1
  537. package/build/src/utils/obj.js +4 -4
  538. package/build/src/utils/obj.js.map +1 -1
  539. package/build/src/utils/open.js +240 -11
  540. package/build/src/utils/open.js.map +1 -1
  541. package/build/src/utils/ora.js +4 -4
  542. package/build/src/utils/ora.js.map +1 -1
  543. package/build/src/utils/plist.js +5 -4
  544. package/build/src/utils/plist.js.map +1 -1
  545. package/build/src/utils/port.js +12 -5
  546. package/build/src/utils/port.js.map +1 -1
  547. package/build/src/utils/progress.js +4 -4
  548. package/build/src/utils/progress.js.map +1 -1
  549. package/build/src/utils/prompts.js +11 -11
  550. package/build/src/utils/prompts.js.map +1 -1
  551. package/build/src/utils/qr.js +5 -4
  552. package/build/src/utils/qr.js.map +1 -1
  553. package/build/src/utils/resolveArgs.js +10 -9
  554. package/build/src/utils/resolveArgs.js.map +1 -1
  555. package/build/src/utils/scheme.js +4 -4
  556. package/build/src/utils/scheme.js.map +1 -1
  557. package/build/src/utils/strings.js.map +1 -1
  558. package/build/src/utils/tar.js +8 -7
  559. package/build/src/utils/tar.js.map +1 -1
  560. package/build/src/utils/telemetry/Telemetry.js +5 -0
  561. package/build/src/utils/telemetry/Telemetry.js.map +1 -1
  562. package/build/src/utils/telemetry/clients/FetchClient.js +1 -1
  563. package/build/src/utils/telemetry/clients/FetchClient.js.map +1 -1
  564. package/build/src/utils/telemetry/clients/flushFetchDetached.js +5 -1
  565. package/build/src/utils/telemetry/clients/flushFetchDetached.js.map +1 -1
  566. package/build/src/utils/telemetry/index.js +4 -4
  567. package/build/src/utils/telemetry/index.js.map +1 -1
  568. package/build/src/utils/telemetry/utils/agent.js +42 -0
  569. package/build/src/utils/telemetry/utils/agent.js.map +1 -0
  570. package/build/src/utils/telemetry/utils/constants.js +3 -3
  571. package/build/src/utils/telemetry/utils/constants.js.map +1 -1
  572. package/build/src/utils/telemetry/utils/context.js +3 -2
  573. package/build/src/utils/telemetry/utils/context.js.map +1 -1
  574. package/build/src/utils/url.js +5 -17
  575. package/build/src/utils/url.js.map +1 -1
  576. package/build/src/utils/validateApplicationId.js +12 -12
  577. package/build/src/utils/validateApplicationId.js.map +1 -1
  578. package/build/src/utils/variadic.js +4 -4
  579. package/build/src/utils/variadic.js.map +1 -1
  580. package/build/src/whoami/index.js.map +1 -1
  581. package/changes.json +16 -36
  582. package/main.js +3 -0
  583. package/package.json +86 -90
  584. package/static/loading-page/index.html +45 -3
  585. package/static/template/+html.tsx +14 -5
  586. package/add-module.js +0 -8
  587. package/build/src/start/server/middleware/inspector/CdpClient.js +0 -81
  588. package/build/src/start/server/middleware/inspector/CdpClient.js.map +0 -1
  589. package/build/src/utils/resolveGlobal.js +0 -195
  590. package/build/src/utils/resolveGlobal.js.map +0 -1
  591. package/build/src/utils/resolveWatchFolders.js +0 -67
  592. package/build/src/utils/resolveWatchFolders.js.map +0 -1
  593. package/build/src/utils/tsconfig/evaluateTsConfig.js +0 -87
  594. package/build/src/utils/tsconfig/evaluateTsConfig.js.map +0 -1
  595. package/build/src/utils/tsconfig/loadTsConfigPaths.js +0 -84
  596. package/build/src/utils/tsconfig/loadTsConfigPaths.js.map +0 -1
  597. package/build/src/utils/tsconfig/matchTsConfigPathAlias.js +0 -94
  598. package/build/src/utils/tsconfig/matchTsConfigPathAlias.js.map +0 -1
  599. package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js +0 -62
  600. package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/export/saveAssets.ts"],"sourcesContent":["/**\n * Copyright © 2023 650 Industries.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport type { AssetData } from '@expo/metro/metro';\nimport type { SerialAsset } from '@expo/metro-config/build/serializer/serializerAssets';\nimport chalk from 'chalk';\nimport fs from 'fs';\nimport path from 'path';\n\nimport { Log } from '../log';\nimport { env } from '../utils/env';\n\nlet bytesFormatter: Intl.NumberFormat | undefined | null;\n\nconst prettyBytes = (bytes: number): string => {\n try {\n if (bytesFormatter === undefined && typeof Intl === 'object') {\n bytesFormatter = new Intl.NumberFormat('en', {\n notation: 'compact',\n style: 'unit',\n unit: 'byte',\n unitDisplay: 'narrow',\n });\n }\n if (bytesFormatter != null) {\n return bytesFormatter.format(bytes);\n }\n } catch {\n bytesFormatter = null;\n }\n // Fall back if ICU is unavailable, which is rare but possible with custom Node.js builds\n if (bytes >= 900_000) {\n return `${(bytes / 1_000_000).toFixed(1)}MB`;\n } else if (bytes >= 900) {\n return `${(bytes / 1_000).toFixed(1)}KB`;\n } else {\n return `${bytes}B`;\n }\n};\n\nconst BLT = '\\u203A';\n\nexport type BundleOptions = {\n entryPoint: string;\n platform: 'android' | 'ios' | 'web';\n dev?: boolean;\n minify?: boolean;\n bytecode: boolean;\n sourceMapUrl?: string;\n sourcemaps?: boolean;\n};\n\nexport type BundleAssetWithFileHashes = AssetData & {\n fileHashes: string[]; // added by the hashAssets asset plugin\n};\n\nexport type BundleOutput = {\n artifacts: SerialAsset[];\n assets: readonly BundleAssetWithFileHashes[];\n};\n\nexport type ManifestAsset = { fileHashes: string[]; files: string[]; hash: string };\n\nexport type Asset = ManifestAsset | BundleAssetWithFileHashes;\n\nexport type ExportAssetDescriptor = {\n contents: string | Buffer;\n originFilename?: string;\n /** An identifier for grouping together variations of the same asset. */\n assetId?: string;\n /** Expo Router route path for formatting the HTML output. */\n routeId?: string;\n /** Expo Router route path for formatting the middleware function output. */\n middlewareId?: string;\n /** Expo Router API route path for formatting the server function output. */\n apiRouteId?: string;\n /** Expo Router route path for formatting the RSC output. */\n rscId?: string;\n /** Expo Router route path for formatting the loader module output. */\n loaderId?: string;\n /** A key for grouping together output files by server- or client-side. */\n targetDomain?: 'server' | 'client';\n};\n\nexport type ExportAssetMap = Map<string, ExportAssetDescriptor>;\n\nexport async function persistMetroFilesAsync(files: ExportAssetMap, outputDir: string) {\n if (!files.size) {\n return;\n }\n await fs.promises.mkdir(path.join(outputDir), { recursive: true });\n\n // Test fixtures:\n // Log.log(\n // JSON.stringify(\n // Object.fromEntries([...files.entries()].map(([k, v]) => [k, { ...v, contents: '' }]))\n // )\n // );\n\n const assetEntries: [string, ExportAssetDescriptor][] = [];\n const apiRouteEntries: [string, ExportAssetDescriptor][] = [];\n const middlewareEntries: [string, ExportAssetDescriptor][] = [];\n const routeEntries: [string, ExportAssetDescriptor][] = [];\n const rscEntries: [string, ExportAssetDescriptor][] = [];\n const loaderEntries: [string, ExportAssetDescriptor][] = [];\n const remainingEntries: [string, ExportAssetDescriptor][] = [];\n\n let hasServerOutput = false;\n for (const asset of files.entries()) {\n hasServerOutput = hasServerOutput || asset[1].targetDomain === 'server';\n if (asset[1].assetId) assetEntries.push(asset);\n else if (asset[1].routeId != null) routeEntries.push(asset);\n else if (asset[1].middlewareId != null) middlewareEntries.push(asset);\n else if (asset[1].apiRouteId != null) apiRouteEntries.push(asset);\n else if (asset[1].rscId != null) rscEntries.push(asset);\n else if (asset[1].loaderId != null) loaderEntries.push(asset);\n else remainingEntries.push(asset);\n }\n\n const groups = groupBy(assetEntries, ([, { assetId }]) => assetId!);\n\n const contentSize = (contents: string | Buffer) => {\n const length =\n typeof contents === 'string' ? Buffer.byteLength(contents, 'utf8') : contents.length;\n return length;\n };\n\n const sizeStr = (contents: string | Buffer) => {\n const length = contentSize(contents);\n const size = chalk.gray`(${prettyBytes(length)})`;\n return size;\n };\n\n // TODO: If any Expo Router is used, then use a new style which is more simple:\n // `chalk.gray(/path/to/) + chalk.cyan('route')`\n // | index.html (1.2kb)\n // | /path\n // | other.html (1.2kb)\n\n const isExpoRouter = routeEntries.length;\n\n // Phase out printing all the assets as users can simply check the file system for more info.\n const showAdditionalInfo = !isExpoRouter || env.EXPO_DEBUG;\n\n const assetGroups = [...groups.entries()].sort((a, b) => a[0].localeCompare(b[0])) as [\n string,\n [string, ExportAssetDescriptor][],\n ][];\n\n if (showAdditionalInfo) {\n if (assetGroups.length) {\n const totalAssets = assetGroups.reduce((sum, [, assets]) => sum + assets.length, 0);\n\n Log.log('');\n Log.log(chalk.bold`${BLT} Assets (${totalAssets}):`);\n\n for (const [assetId, assets] of assetGroups) {\n const averageContentSize =\n assets.reduce((sum, [, { contents }]) => sum + contentSize(contents), 0) / assets.length;\n Log.log(\n assetId,\n chalk.gray(\n `(${[\n assets.length > 1 ? `${assets.length} variations` : '',\n `${prettyBytes(averageContentSize)}`,\n ]\n .filter(Boolean)\n .join(' | ')})`\n )\n );\n }\n }\n }\n\n const bundles: Map<string, [string, ExportAssetDescriptor][]> = new Map();\n const other: [string, ExportAssetDescriptor][] = [];\n\n remainingEntries.forEach(([filepath, asset]) => {\n if (!filepath.match(/_expo\\/(server|static)\\//)) {\n other.push([filepath, asset]);\n } else {\n const platform = filepath.match(/_expo\\/static\\/js\\/([^/]+)\\//)?.[1] ?? 'web';\n if (!bundles.has(platform)) bundles.set(platform, []);\n\n bundles.get(platform)!.push([filepath, asset]);\n }\n });\n\n [...bundles.entries()].forEach(([platform, assets]) => {\n Log.log('');\n Log.log(chalk.bold`${BLT} ${platform} bundles (${assets.length}):`);\n\n const allAssets = assets.sort((a, b) => a[0].localeCompare(b[0]));\n while (allAssets.length) {\n const [filePath, asset] = allAssets.shift()!;\n Log.log(filePath, sizeStr(asset.contents));\n if (filePath.match(/\\.(js|hbc)$/)) {\n // Get source map\n const sourceMapIndex = allAssets.findIndex(([fp]) => fp === filePath + '.map');\n if (sourceMapIndex !== -1) {\n const [sourceMapFilePath, sourceMapAsset] = allAssets.splice(sourceMapIndex, 1)[0];\n Log.log(chalk.gray(sourceMapFilePath), sizeStr(sourceMapAsset.contents));\n }\n }\n }\n });\n\n if (showAdditionalInfo && other.length) {\n Log.log('');\n Log.log(chalk.bold`${BLT} Files (${other.length}):`);\n\n for (const [filePath, asset] of other.sort((a, b) => a[0].localeCompare(b[0]))) {\n Log.log(filePath, sizeStr(asset.contents));\n }\n }\n\n if (rscEntries.length) {\n Log.log('');\n Log.log(chalk.bold`${BLT} React Server Components (${rscEntries.length}):`);\n\n for (const [filePath, assets] of rscEntries.sort((a, b) => a[0].length - b[0].length)) {\n const id = assets.rscId!;\n Log.log(\n '/' + (id === '' ? chalk.gray(' (index)') : id),\n sizeStr(assets.contents),\n chalk.gray(filePath)\n );\n }\n }\n\n if (routeEntries.length) {\n Log.log('');\n Log.log(chalk.bold`${BLT} Static routes (${routeEntries.length}):`);\n\n for (const [, assets] of routeEntries.sort((a, b) => a[0].length - b[0].length)) {\n const id = assets.routeId!;\n Log.log('/' + (id === '' ? chalk.gray(' (index)') : id), sizeStr(assets.contents));\n }\n }\n\n if (apiRouteEntries.length) {\n const apiRoutesWithoutSourcemaps = apiRouteEntries.filter(\n (route) => !route[0].endsWith('.map')\n );\n Log.log('');\n Log.log(chalk.bold`${BLT} API routes (${apiRoutesWithoutSourcemaps.length}):`);\n\n for (const [apiRouteFilename, assets] of apiRoutesWithoutSourcemaps.sort(\n (a, b) => a[0].length - b[0].length\n )) {\n const id = assets.apiRouteId!;\n const hasSourceMap = apiRouteEntries.find(\n ([filename, route]) =>\n filename !== apiRouteFilename &&\n route.apiRouteId === assets.apiRouteId &&\n filename.endsWith('.map')\n );\n Log.log(\n id === '' ? chalk.gray(' (index)') : id,\n sizeStr(assets.contents),\n hasSourceMap ? chalk.gray(`(source map ${sizeStr(hasSourceMap[1].contents)})`) : ''\n );\n }\n }\n\n if (middlewareEntries.length) {\n const middlewareWithoutSourcemaps = middlewareEntries.filter(\n (route) => !route[0].endsWith('.map')\n );\n Log.log('');\n Log.log(chalk.bold`${BLT} Middleware:`);\n\n for (const [middlewareFilename, assets] of middlewareWithoutSourcemaps.sort(\n (a, b) => a[0].length - b[0].length\n )) {\n const id = assets.middlewareId!;\n const hasSourceMap = middlewareEntries.find(\n ([filename, route]) =>\n filename !== middlewareFilename &&\n route.middlewareId === assets.middlewareId &&\n filename.endsWith('.map')\n );\n Log.log(\n id,\n sizeStr(assets.contents),\n hasSourceMap ? chalk.gray(`(source map ${sizeStr(hasSourceMap[1].contents)})`) : ''\n );\n }\n }\n\n if (loaderEntries.length) {\n const loadersWithoutSourcemaps = loaderEntries.filter((entry) => !entry[0].endsWith('.map'));\n Log.log('');\n Log.log(chalk.bold`${BLT} Loaders (${loadersWithoutSourcemaps.length}):`);\n\n for (const [loaderFilename, assets] of loadersWithoutSourcemaps.sort(\n (a, b) => a[0].length - b[0].length\n )) {\n const id = assets.loaderId!;\n const hasSourceMap = loaderEntries.find(\n ([filename, entry]) =>\n filename !== loaderFilename &&\n entry.loaderId === assets.loaderId &&\n filename.endsWith('.map')\n );\n Log.log(\n id === '/' ? '/ ' + chalk.gray('(index)') : id,\n sizeStr(assets.contents),\n hasSourceMap ? chalk.gray(`(source map ${sizeStr(hasSourceMap[1].contents)})`) : ''\n );\n }\n }\n\n // Decouple logging from writing for better performance.\n\n await Promise.all(\n [...files.entries()]\n .sort(([a], [b]) => a.localeCompare(b))\n .map(async ([file, { contents, targetDomain }]) => {\n // NOTE: Only use `targetDomain` if we have at least one server asset\n const domain = (hasServerOutput && targetDomain) || '';\n const outputPath = path.join(outputDir, domain, file);\n await fs.promises.mkdir(path.dirname(outputPath), { recursive: true });\n await fs.promises.writeFile(outputPath, contents);\n })\n );\n\n Log.log('');\n}\n\nfunction groupBy<T>(array: T[], key: (item: T) => string): Map<string, T[]> {\n const map = new Map<string, T[]>();\n array.forEach((item) => {\n const group = key(item);\n const list = map.get(group) ?? [];\n list.push(item);\n map.set(group, list);\n });\n return map;\n}\n\n// TODO: Move source map modification to the serializer\nexport function getFilesFromSerialAssets(\n resources: SerialAsset[],\n {\n includeSourceMaps,\n files = new Map(),\n platform,\n isServerHosted = platform === 'web',\n }: {\n includeSourceMaps: boolean;\n files?: ExportAssetMap;\n platform?: string;\n isServerHosted?: boolean;\n }\n) {\n resources.forEach((resource) => {\n if (resource.type === 'css-external') {\n return;\n }\n files.set(resource.filename, {\n contents: resource.source,\n originFilename: resource.originFilename,\n targetDomain: isServerHosted ? 'client' : undefined,\n });\n });\n\n return files;\n}\n"],"names":["getFilesFromSerialAssets","persistMetroFilesAsync","bytesFormatter","prettyBytes","bytes","undefined","Intl","NumberFormat","notation","style","unit","unitDisplay","format","toFixed","BLT","files","outputDir","size","fs","promises","mkdir","path","join","recursive","assetEntries","apiRouteEntries","middlewareEntries","routeEntries","rscEntries","loaderEntries","remainingEntries","hasServerOutput","asset","entries","targetDomain","assetId","push","routeId","middlewareId","apiRouteId","rscId","loaderId","groups","groupBy","contentSize","contents","length","Buffer","byteLength","sizeStr","chalk","gray","isExpoRouter","showAdditionalInfo","env","EXPO_DEBUG","assetGroups","sort","a","b","localeCompare","totalAssets","reduce","sum","assets","Log","log","bold","averageContentSize","filter","Boolean","bundles","Map","other","forEach","filepath","match","platform","has","set","get","allAssets","filePath","shift","sourceMapIndex","findIndex","fp","sourceMapFilePath","sourceMapAsset","splice","id","apiRoutesWithoutSourcemaps","route","endsWith","apiRouteFilename","hasSourceMap","find","filename","middlewareWithoutSourcemaps","middlewareFilename","loadersWithoutSourcemaps","entry","loaderFilename","Promise","all","map","file","domain","outputPath","dirname","writeFile","array","key","item","group","list","resources","includeSourceMaps","isServerHosted","resource","type","source","originFilename"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/export/saveAssets.ts"],"sourcesContent":["/**\n * Copyright © 2023 650 Industries.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport type { Platform } from '@expo/config';\nimport type { AssetData } from '@expo/metro/metro';\nimport type { SerialAsset } from '@expo/metro-config/build/serializer/serializerAssets';\nimport chalk from 'chalk';\nimport fs from 'fs';\nimport path from 'path';\n\nimport { Log } from '../log';\nimport { env } from '../utils/env';\n\nlet bytesFormatter: Intl.NumberFormat | undefined | null;\n\nconst prettyBytes = (bytes: number): string => {\n try {\n if (bytesFormatter === undefined && typeof Intl === 'object') {\n bytesFormatter = new Intl.NumberFormat('en', {\n notation: 'compact',\n style: 'unit',\n unit: 'byte',\n unitDisplay: 'narrow',\n });\n }\n if (bytesFormatter != null) {\n return bytesFormatter.format(bytes);\n }\n } catch {\n bytesFormatter = null;\n }\n // Fall back if ICU is unavailable, which is rare but possible with custom Node.js builds\n if (bytes >= 900_000) {\n return `${(bytes / 1_000_000).toFixed(1)}MB`;\n } else if (bytes >= 900) {\n return `${(bytes / 1_000).toFixed(1)}KB`;\n } else {\n return `${bytes}B`;\n }\n};\n\nconst BLT = '\\u203A';\n\nexport type BundleOptions = {\n entryPoint: string;\n platform: Platform;\n dev?: boolean;\n minify?: boolean;\n bytecode: boolean;\n sourceMapUrl?: string;\n sourcemaps?: boolean;\n};\n\nexport type BundleAssetWithFileHashes = AssetData & {\n fileHashes: string[]; // added by the hashAssets asset plugin\n};\n\nexport type BundleOutput = {\n artifacts: SerialAsset[];\n assets: readonly BundleAssetWithFileHashes[];\n};\n\nexport type ManifestAsset = { fileHashes: string[]; files: string[]; hash: string };\n\nexport type Asset = ManifestAsset | BundleAssetWithFileHashes;\n\nexport type ExportAssetDescriptor = {\n contents: string | Buffer;\n originFilename?: string;\n /** An identifier for grouping together variations of the same asset. */\n assetId?: string;\n /** Expo Router route path for formatting the HTML output. */\n routeId?: string;\n /** Expo Router route path for formatting the middleware function output. */\n middlewareId?: string;\n /** Expo Router API route path for formatting the server function output. */\n apiRouteId?: string;\n /** Expo Router route path for formatting the RSC output. */\n rscId?: string;\n /** Expo Router route path for formatting the loader module output. */\n loaderId?: string;\n /** A key for grouping together output files by server- or client-side. */\n targetDomain?: 'server' | 'client';\n};\n\nexport type ExportAssetMap = Map<string, ExportAssetDescriptor>;\n\nexport async function persistMetroFilesAsync(files: ExportAssetMap, outputDir: string) {\n if (!files.size) {\n return;\n }\n await fs.promises.mkdir(path.join(outputDir), { recursive: true });\n\n // Test fixtures:\n // Log.log(\n // JSON.stringify(\n // Object.fromEntries([...files.entries()].map(([k, v]) => [k, { ...v, contents: '' }]))\n // )\n // );\n\n const assetEntries: [string, ExportAssetDescriptor][] = [];\n const apiRouteEntries: [string, ExportAssetDescriptor][] = [];\n const middlewareEntries: [string, ExportAssetDescriptor][] = [];\n const routeEntries: [string, ExportAssetDescriptor][] = [];\n const rscEntries: [string, ExportAssetDescriptor][] = [];\n const loaderEntries: [string, ExportAssetDescriptor][] = [];\n const remainingEntries: [string, ExportAssetDescriptor][] = [];\n\n let hasServerOutput = false;\n for (const asset of files.entries()) {\n hasServerOutput = hasServerOutput || asset[1].targetDomain === 'server';\n if (asset[1].assetId) assetEntries.push(asset);\n else if (asset[1].routeId != null) routeEntries.push(asset);\n else if (asset[1].middlewareId != null) middlewareEntries.push(asset);\n else if (asset[1].apiRouteId != null) apiRouteEntries.push(asset);\n else if (asset[1].rscId != null) rscEntries.push(asset);\n else if (asset[1].loaderId != null) loaderEntries.push(asset);\n else remainingEntries.push(asset);\n }\n\n const groups = groupBy(assetEntries, ([, { assetId }]) => assetId!);\n\n const contentSize = (contents: string | Buffer) => {\n const length =\n typeof contents === 'string' ? Buffer.byteLength(contents, 'utf8') : contents.length;\n return length;\n };\n\n const sizeStr = (contents: string | Buffer) => {\n const length = contentSize(contents);\n const size = chalk.gray`(${prettyBytes(length)})`;\n return size;\n };\n\n // TODO: If any Expo Router is used, then use a new style which is more simple:\n // `chalk.gray(/path/to/) + chalk.cyan('route')`\n // | index.html (1.2kb)\n // | /path\n // | other.html (1.2kb)\n\n const isExpoRouter = routeEntries.length;\n\n // Phase out printing all the assets as users can simply check the file system for more info.\n const showAdditionalInfo = !isExpoRouter || env.EXPO_DEBUG;\n\n const assetGroups = [...groups.entries()].sort((a, b) => a[0].localeCompare(b[0])) as [\n string,\n [string, ExportAssetDescriptor][],\n ][];\n\n if (showAdditionalInfo) {\n if (assetGroups.length) {\n const totalAssets = assetGroups.reduce((sum, [, assets]) => sum + assets.length, 0);\n\n Log.log('');\n Log.log(chalk.bold`${BLT} Assets (${totalAssets}):`);\n\n for (const [assetId, assets] of assetGroups) {\n const averageContentSize =\n assets.reduce((sum, [, { contents }]) => sum + contentSize(contents), 0) / assets.length;\n Log.log(\n assetId,\n chalk.gray(\n `(${[\n assets.length > 1 ? `${assets.length} variations` : '',\n `${prettyBytes(averageContentSize)}`,\n ]\n .filter(Boolean)\n .join(' | ')})`\n )\n );\n }\n }\n }\n\n const bundles: Map<string, [string, ExportAssetDescriptor][]> = new Map();\n const other: [string, ExportAssetDescriptor][] = [];\n\n remainingEntries.forEach(([filepath, asset]) => {\n if (!filepath.match(/_expo\\/(server|static)\\//)) {\n other.push([filepath, asset]);\n } else {\n const platform = filepath.match(/_expo\\/static\\/js\\/([^/]+)\\//)?.[1] ?? 'web';\n if (!bundles.has(platform)) bundles.set(platform, []);\n\n bundles.get(platform)!.push([filepath, asset]);\n }\n });\n\n [...bundles.entries()].forEach(([platform, assets]) => {\n Log.log('');\n Log.log(chalk.bold`${BLT} ${platform} bundles (${assets.length}):`);\n\n const allAssets = assets.sort((a, b) => a[0].localeCompare(b[0]));\n while (allAssets.length) {\n const [filePath, asset] = allAssets.shift()!;\n Log.log(filePath, sizeStr(asset.contents));\n if (filePath.match(/\\.(js|hbc)$/)) {\n // Get source map\n const sourceMapIndex = allAssets.findIndex(([fp]) => fp === filePath + '.map');\n if (sourceMapIndex !== -1) {\n const [sourceMapFilePath, sourceMapAsset] = allAssets.splice(sourceMapIndex, 1)[0]!;\n Log.log(chalk.gray(sourceMapFilePath), sizeStr(sourceMapAsset.contents));\n }\n }\n }\n });\n\n if (showAdditionalInfo && other.length) {\n Log.log('');\n Log.log(chalk.bold`${BLT} Files (${other.length}):`);\n\n for (const [filePath, asset] of other.sort((a, b) => a[0].localeCompare(b[0]))) {\n Log.log(filePath, sizeStr(asset.contents));\n }\n }\n\n if (rscEntries.length) {\n Log.log('');\n Log.log(chalk.bold`${BLT} React Server Components (${rscEntries.length}):`);\n\n for (const [filePath, assets] of rscEntries.sort((a, b) => a[0].length - b[0].length)) {\n const id = assets.rscId!;\n Log.log(\n '/' + (id === '' ? chalk.gray(' (index)') : id),\n sizeStr(assets.contents),\n chalk.gray(filePath)\n );\n }\n }\n\n if (routeEntries.length) {\n Log.log('');\n Log.log(chalk.bold`${BLT} Static routes (${routeEntries.length}):`);\n\n for (const [, assets] of routeEntries.sort((a, b) => a[0].length - b[0].length)) {\n const id = assets.routeId!;\n Log.log('/' + (id === '' ? chalk.gray(' (index)') : id), sizeStr(assets.contents));\n }\n }\n\n if (apiRouteEntries.length) {\n const apiRoutesWithoutSourcemaps = apiRouteEntries.filter(\n (route) => !route[0].endsWith('.map')\n );\n Log.log('');\n Log.log(chalk.bold`${BLT} API routes (${apiRoutesWithoutSourcemaps.length}):`);\n\n for (const [apiRouteFilename, assets] of apiRoutesWithoutSourcemaps.sort(\n (a, b) => a[0].length - b[0].length\n )) {\n const id = assets.apiRouteId!;\n const hasSourceMap = apiRouteEntries.find(\n ([filename, route]) =>\n filename !== apiRouteFilename &&\n route.apiRouteId === assets.apiRouteId &&\n filename.endsWith('.map')\n );\n Log.log(\n id === '' ? chalk.gray(' (index)') : id,\n sizeStr(assets.contents),\n hasSourceMap ? chalk.gray(`(source map ${sizeStr(hasSourceMap[1].contents)})`) : ''\n );\n }\n }\n\n if (middlewareEntries.length) {\n const middlewareWithoutSourcemaps = middlewareEntries.filter(\n (route) => !route[0].endsWith('.map')\n );\n Log.log('');\n Log.log(chalk.bold`${BLT} Middleware:`);\n\n for (const [middlewareFilename, assets] of middlewareWithoutSourcemaps.sort(\n (a, b) => a[0].length - b[0].length\n )) {\n const id = assets.middlewareId!;\n const hasSourceMap = middlewareEntries.find(\n ([filename, route]) =>\n filename !== middlewareFilename &&\n route.middlewareId === assets.middlewareId &&\n filename.endsWith('.map')\n );\n Log.log(\n id,\n sizeStr(assets.contents),\n hasSourceMap ? chalk.gray(`(source map ${sizeStr(hasSourceMap[1].contents)})`) : ''\n );\n }\n }\n\n if (loaderEntries.length) {\n const loadersWithoutSourcemaps = loaderEntries.filter((entry) => !entry[0].endsWith('.map'));\n Log.log('');\n Log.log(chalk.bold`${BLT} Loaders (${loadersWithoutSourcemaps.length}):`);\n\n for (const [loaderFilename, assets] of loadersWithoutSourcemaps.sort(\n (a, b) => a[0].length - b[0].length\n )) {\n const id = assets.loaderId!;\n const hasSourceMap = loaderEntries.find(\n ([filename, entry]) =>\n filename !== loaderFilename &&\n entry.loaderId === assets.loaderId &&\n filename.endsWith('.map')\n );\n Log.log(\n id === '/' ? '/ ' + chalk.gray('(index)') : id,\n sizeStr(assets.contents),\n hasSourceMap ? chalk.gray(`(source map ${sizeStr(hasSourceMap[1].contents)})`) : ''\n );\n }\n }\n\n // Decouple logging from writing for better performance.\n\n await Promise.all(\n [...files.entries()]\n .sort(([a], [b]) => a.localeCompare(b))\n .map(async ([file, { contents, targetDomain }]) => {\n // NOTE: Only use `targetDomain` if we have at least one server asset\n const domain = (hasServerOutput && targetDomain) || '';\n const outputPath = path.join(outputDir, domain, file);\n await fs.promises.mkdir(path.dirname(outputPath), { recursive: true });\n await fs.promises.writeFile(outputPath, contents);\n })\n );\n\n Log.log('');\n}\n\nfunction groupBy<T>(array: T[], key: (item: T) => string): Map<string, T[]> {\n const map = new Map<string, T[]>();\n array.forEach((item) => {\n const group = key(item);\n const list = map.get(group) ?? [];\n list.push(item);\n map.set(group, list);\n });\n return map;\n}\n\n// TODO: Move source map modification to the serializer\nexport function getFilesFromSerialAssets(\n resources: SerialAsset[],\n {\n includeSourceMaps,\n files = new Map(),\n platform,\n isServerHosted = platform === 'web',\n }: {\n includeSourceMaps: boolean;\n files?: ExportAssetMap;\n platform?: string;\n isServerHosted?: boolean;\n }\n) {\n resources.forEach((resource) => {\n if (resource.type === 'css-external') {\n return;\n }\n files.set(resource.filename, {\n contents: resource.source,\n originFilename: resource.originFilename,\n targetDomain: isServerHosted ? 'client' : undefined,\n });\n });\n\n return files;\n}\n"],"names":["getFilesFromSerialAssets","persistMetroFilesAsync","bytesFormatter","prettyBytes","bytes","undefined","Intl","NumberFormat","notation","style","unit","unitDisplay","format","toFixed","BLT","files","outputDir","size","fs","promises","mkdir","path","join","recursive","assetEntries","apiRouteEntries","middlewareEntries","routeEntries","rscEntries","loaderEntries","remainingEntries","hasServerOutput","asset","entries","targetDomain","assetId","push","routeId","middlewareId","apiRouteId","rscId","loaderId","groups","groupBy","contentSize","contents","length","Buffer","byteLength","sizeStr","chalk","gray","isExpoRouter","showAdditionalInfo","env","EXPO_DEBUG","assetGroups","sort","a","b","localeCompare","totalAssets","reduce","sum","assets","Log","log","bold","averageContentSize","filter","Boolean","bundles","Map","other","forEach","filepath","match","platform","has","set","get","allAssets","filePath","shift","sourceMapIndex","findIndex","fp","sourceMapFilePath","sourceMapAsset","splice","id","apiRoutesWithoutSourcemaps","route","endsWith","apiRouteFilename","hasSourceMap","find","filename","middlewareWithoutSourcemaps","middlewareFilename","loadersWithoutSourcemaps","entry","loaderFilename","Promise","all","map","file","domain","outputPath","dirname","writeFile","array","key","item","group","list","resources","includeSourceMaps","isServerHosted","resource","type","source","originFilename"],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+
6
+ //# sourceMappingURL=static.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":""}
@@ -1 +1 @@
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, loadEnvFiles } 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 loadEnvFiles(projectRoot);\n\n const { exp } = getConfig(projectRoot);\n const platformBundlers = getPlatformBundlers(projectRoot, exp);\n // Create a bundler interface\n const bundler = new WebpackBundlerDevServer(projectRoot, platformBundlers);\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","loadEnvFiles","exp","getConfig","platformBundlers","getPlatformBundlers","bundler","WebpackBundlerDevServer","isTargetingWeb","CommandError","chalk","Log","log","bundleAsync","mode","clear"],"mappings":";;;;+BAWsBA;;;eAAAA;;;;yBAXI;;;;;;;gEACR;;;;;;qBAGE;+CAC0B;kCACV;yCACI;wBACX;yBACY;;;;;;AAElC,eAAeA,eAAeC,WAAmB,EAAEC,OAAgB;IACxE,8BAA8B;IAC9B,MAAM,IAAIC,4DAA6B,CAACF,aAAaG,WAAW;IAEhEC,IAAAA,mBAAU,EAACH,QAAQI,GAAG,GAAG,gBAAgB;IACzCC,IAAAA,qBAAY,EAACN;IAEb,MAAM,EAAEO,GAAG,EAAE,GAAGC,IAAAA,mBAAS,EAACR;IAC1B,MAAMS,mBAAmBC,IAAAA,qCAAmB,EAACV,aAAaO;IAC1D,6BAA6B;IAC7B,MAAMI,UAAU,IAAIC,gDAAuB,CAACZ,aAAaS;IAEzD,qFAAqF;IACrF,IAAI,CAACE,QAAQE,cAAc,IAAI;QAC7B,MAAM,IAAIC,oBAAY,CACpBC,IAAAA,gBAAK,CAAA,CAAC,gGAAgG,CAAC;IAE3G;IAEAC,QAAG,CAACC,GAAG,CAAC,CAAC,yBAAyB,CAAC;IAEnC,iBAAiB;IACjB,MAAMN,QAAQO,WAAW,CAAC;QACxBC,MAAMlB,QAAQI,GAAG,GAAG,gBAAgB;QACpCe,OAAOnB,QAAQmB,KAAK;IACtB;AACF"}
1
+ {"version":3,"sources":["../../../../src/export/web/exportWebAsync.ts"],"sourcesContent":["import { getConfig } from '@expo/config';\nimport chalk from 'chalk';\n\nimport type { 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, loadEnvFiles } 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 loadEnvFiles(projectRoot);\n\n const { exp } = getConfig(projectRoot);\n const platformBundlers = getPlatformBundlers(projectRoot, exp);\n // Create a bundler interface\n const bundler = new WebpackBundlerDevServer(projectRoot, platformBundlers);\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","loadEnvFiles","exp","getConfig","platformBundlers","getPlatformBundlers","bundler","WebpackBundlerDevServer","isTargetingWeb","CommandError","chalk","Log","log","bundleAsync","mode","clear"],"mappings":";;;;+BAWsBA;;;eAAAA;;;;yBAXI;;;;;;;gEACR;;;;;;qBAGE;+CAC0B;kCACV;yCACI;wBACX;yBACY;;;;;;AAElC,eAAeA,eAAeC,WAAmB,EAAEC,OAAgB;IACxE,8BAA8B;IAC9B,MAAM,IAAIC,4DAA6B,CAACF,aAAaG,WAAW;IAEhEC,IAAAA,mBAAU,EAACH,QAAQI,GAAG,GAAG,gBAAgB;IACzCC,IAAAA,qBAAY,EAACN;IAEb,MAAM,EAAEO,GAAG,EAAE,GAAGC,IAAAA,mBAAS,EAACR;IAC1B,MAAMS,mBAAmBC,IAAAA,qCAAmB,EAACV,aAAaO;IAC1D,6BAA6B;IAC7B,MAAMI,UAAU,IAAIC,gDAAuB,CAACZ,aAAaS;IAEzD,qFAAqF;IACrF,IAAI,CAACE,QAAQE,cAAc,IAAI;QAC7B,MAAM,IAAIC,oBAAY,CACpBC,IAAAA,gBAAK,CAAA,CAAC,gGAAgG,CAAC;IAE3G;IAEAC,QAAG,CAACC,GAAG,CAAC,CAAC,yBAAyB,CAAC;IAEnC,iBAAiB;IACjB,MAAMN,QAAQO,WAAW,CAAC;QACxBC,MAAMlB,QAAQI,GAAG,GAAG,gBAAgB;QACpCe,OAAOnB,QAAQmB,KAAK;IACtB;AACF"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/export/web/index.ts"],"sourcesContent":["#!/usr/bin/env node\nimport chalk from 'chalk';\n\nimport { Command } from '../../../bin/cli';\nimport { assertArgs, getProjectRoot, printHelp } from '../../utils/args';\nimport { logCmdError } from '../../utils/errors';\n\nexport const expoExportWeb: Command = async (argv) => {\n const args = assertArgs(\n {\n // Types\n '--help': Boolean,\n '--clear': Boolean,\n '--dev': Boolean,\n // Aliases\n '-h': '--help',\n '-c': '--clear',\n },\n argv\n );\n\n if (args['--help']) {\n printHelp(\n `(Deprecated) Bundle the static files of the web app with Webpack for hosting on a web server`,\n chalk`npx expo export:web {dim <dir>}`,\n [\n chalk`<dir> Directory of the Expo project. {dim Default: Current working directory}`,\n `--dev Bundle in development mode`,\n `-c, --clear Clear the bundler cache`,\n `-h, --help Usage info`,\n ].join('\\n')\n );\n }\n\n const projectRoot = getProjectRoot(args);\n const { resolveOptionsAsync } = await import('./resolveOptions.js');\n const options = await resolveOptionsAsync(args).catch(logCmdError);\n\n const { exportWebAsync } = await import('./exportWebAsync.js');\n return exportWebAsync(projectRoot, options).catch(logCmdError);\n};\n"],"names":["expoExportWeb","argv","args","assertArgs","Boolean","printHelp","chalk","join","projectRoot","getProjectRoot","resolveOptionsAsync","options","catch","logCmdError","exportWebAsync"],"mappings":";;;;;+BAOaA;;;eAAAA;;;;gEANK;;;;;;sBAGoC;wBAC1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAErB,MAAMA,gBAAyB,OAAOC;IAC3C,MAAMC,OAAOC,IAAAA,gBAAU,EACrB;QACE,QAAQ;QACR,UAAUC;QACV,WAAWA;QACX,SAASA;QACT,UAAU;QACV,MAAM;QACN,MAAM;IACR,GACAH;IAGF,IAAIC,IAAI,CAAC,SAAS,EAAE;QAClBG,IAAAA,eAAS,EACP,CAAC,4FAA4F,CAAC,EAC9FC,IAAAA,gBAAK,CAAA,CAAC,+BAA+B,CAAC,EACtC;YACEA,IAAAA,gBAAK,CAAA,CAAC,qGAAqG,CAAC;YAC5G,CAAC,wDAAwD,CAAC;YAC1D,CAAC,qDAAqD,CAAC;YACvD,CAAC,wCAAwC,CAAC;SAC3C,CAACC,IAAI,CAAC;IAEX;IAEA,MAAMC,cAAcC,IAAAA,oBAAc,EAACP;IACnC,MAAM,EAAEQ,mBAAmB,EAAE,GAAG,MAAM,mEAAA,QAAO;IAC7C,MAAMC,UAAU,MAAMD,oBAAoBR,MAAMU,KAAK,CAACC,mBAAW;IAEjE,MAAM,EAAEC,cAAc,EAAE,GAAG,MAAM,mEAAA,QAAO;IACxC,OAAOA,eAAeN,aAAaG,SAASC,KAAK,CAACC,mBAAW;AAC/D"}
1
+ {"version":3,"sources":["../../../../src/export/web/index.ts"],"sourcesContent":["#!/usr/bin/env node\nimport chalk from 'chalk';\n\nimport type { Command } from '../../../bin/cli';\nimport { assertArgs, getProjectRoot, printHelp } from '../../utils/args';\nimport { logCmdError } from '../../utils/errors';\n\nexport const expoExportWeb: Command = async (argv) => {\n const args = assertArgs(\n {\n // Types\n '--help': Boolean,\n '--clear': Boolean,\n '--dev': Boolean,\n // Aliases\n '-h': '--help',\n '-c': '--clear',\n },\n argv\n );\n\n if (args['--help']) {\n printHelp(\n `(Deprecated) Bundle the static files of the web app with Webpack for hosting on a web server`,\n chalk`npx expo export:web {dim <dir>}`,\n [\n chalk`<dir> Directory of the Expo project. {dim Default: Current working directory}`,\n `--dev Bundle in development mode`,\n `-c, --clear Clear the bundler cache`,\n `-h, --help Usage info`,\n ].join('\\n')\n );\n }\n\n const projectRoot = getProjectRoot(args);\n const { resolveOptionsAsync } = await import('./resolveOptions.js');\n const options = await resolveOptionsAsync(args).catch(logCmdError);\n\n const { exportWebAsync } = await import('./exportWebAsync.js');\n return exportWebAsync(projectRoot, options).catch(logCmdError);\n};\n"],"names":["expoExportWeb","argv","args","assertArgs","Boolean","printHelp","chalk","join","projectRoot","getProjectRoot","resolveOptionsAsync","options","catch","logCmdError","exportWebAsync"],"mappings":";;;;;+BAOaA;;;eAAAA;;;;gEANK;;;;;;sBAGoC;wBAC1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAErB,MAAMA,gBAAyB,OAAOC;IAC3C,MAAMC,OAAOC,IAAAA,gBAAU,EACrB;QACE,QAAQ;QACR,UAAUC;QACV,WAAWA;QACX,SAASA;QACT,UAAU;QACV,MAAM;QACN,MAAM;IACR,GACAH;IAGF,IAAIC,IAAI,CAAC,SAAS,EAAE;QAClBG,IAAAA,eAAS,EACP,CAAC,4FAA4F,CAAC,EAC9FC,IAAAA,gBAAK,CAAA,CAAC,+BAA+B,CAAC,EACtC;YACEA,IAAAA,gBAAK,CAAA,CAAC,qGAAqG,CAAC;YAC5G,CAAC,wDAAwD,CAAC;YAC1D,CAAC,qDAAqD,CAAC;YACvD,CAAC,wCAAwC,CAAC;SAC3C,CAACC,IAAI,CAAC;IAEX;IAEA,MAAMC,cAAcC,IAAAA,oBAAc,EAACP;IACnC,MAAM,EAAEQ,mBAAmB,EAAE,GAAG,MAAM,mEAAA,QAAO;IAC7C,MAAMC,UAAU,MAAMD,oBAAoBR,MAAMU,KAAK,CAACC,mBAAW;IAEjE,MAAM,EAAEC,cAAc,EAAE,GAAG,MAAM,mEAAA,QAAO;IACxC,OAAOA,eAAeN,aAAaG,SAASC,KAAK,CAACC,mBAAW;AAC/D"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/export/writeContents.ts"],"sourcesContent":["import { Asset } from './saveAssets';\n\nexport function createAssetMap({ assets }: { assets: Asset[] }) {\n // Convert the assets array to a k/v pair where the asset hash is the key and the asset is the value.\n return Object.fromEntries(assets.map((asset) => [asset.hash, asset]));\n}\n"],"names":["createAssetMap","assets","Object","fromEntries","map","asset","hash"],"mappings":";;;;+BAEgBA;;;eAAAA;;;AAAT,SAASA,eAAe,EAAEC,MAAM,EAAuB;IAC5D,qGAAqG;IACrG,OAAOC,OAAOC,WAAW,CAACF,OAAOG,GAAG,CAAC,CAACC,QAAU;YAACA,MAAMC,IAAI;YAAED;SAAM;AACrE"}
1
+ {"version":3,"sources":["../../../src/export/writeContents.ts"],"sourcesContent":["import type { Asset } from './saveAssets';\n\nexport function createAssetMap({ assets }: { assets: Asset[] }) {\n // Convert the assets array to a k/v pair where the asset hash is the key and the asset is the value.\n return Object.fromEntries(assets.map((asset) => [asset.hash, asset]));\n}\n"],"names":["createAssetMap","assets","Object","fromEntries","map","asset","hash"],"mappings":";;;;+BAEgBA;;;eAAAA;;;AAAT,SAASA,eAAe,EAAEC,MAAM,EAAuB;IAC5D,qGAAqG;IACrG,OAAOC,OAAOC,WAAW,CAACF,OAAOG,GAAG,CAAC,CAACC,QAAU;YAACA,MAAMC,IAAI;YAAED;SAAM;AACrE"}
@@ -22,13 +22,6 @@ function _chalk() {
22
22
  };
23
23
  return data;
24
24
  }
25
- function _resolvefrom() {
26
- const data = /*#__PURE__*/ _interop_require_default(require("resolve-from"));
27
- _resolvefrom = function() {
28
- return data;
29
- };
30
- return data;
31
- }
32
25
  const _fixPackages = require("./fixPackages");
33
26
  const _log = /*#__PURE__*/ _interop_require_wildcard(require("../log"));
34
27
  const _validateDependenciesVersions = require("../start/doctor/dependencies/validateDependenciesVersions");
@@ -84,7 +77,7 @@ function _interop_require_wildcard(obj, nodeInterop) {
84
77
  }
85
78
  const debug = require('debug')('expo:install:check');
86
79
  async function checkPackagesAsync(projectRoot, { packages, packageManager, options: { fix, json }, packageManagerArguments }) {
87
- var _pkg_expo_install_exclude, _pkg_expo_install, _pkg_expo, _pkg_dependencies;
80
+ var _pkg_expo_install_exclude, _pkg_expo_install, _pkg_expo;
88
81
  // Read the project Expo config without plugins.
89
82
  const { exp, pkg } = (0, _config().getConfig)(projectRoot, {
90
83
  // Sometimes users will add a plugin to the config before installing the library,
@@ -95,26 +88,6 @@ async function checkPackagesAsync(projectRoot, { packages, packageManager, optio
95
88
  _log.log((0, _chalk().default)`Skipped ${fix ? 'fixing' : 'checking'} dependencies: ${(0, _strings.joinWithCommasAnd)(pkg.expo.install.exclude)}. These dependencies are listed in {bold expo.install.exclude} in package.json. ${(0, _link.learnMore)('https://docs.expo.dev/more/expo-cli/#configuring-dependency-validation')}`);
96
89
  }
97
90
  const dependencies = await (0, _validateDependenciesVersions.getVersionedDependenciesAsync)(projectRoot, exp, pkg, packages);
98
- /*
99
- * Expo Router projects will do this additional check
100
- * Note: The e2e tests use nexpo which will always resolve 'expo-router/doctor.js'
101
- * For that reason, you cannot use nexpo to test for the sub-dependency check,
102
- * and you cannot replace this guard with a try/catch around the import('expo-router')
103
- */ if ((_pkg_dependencies = pkg.dependencies) == null ? void 0 : _pkg_dependencies['expo-router']) {
104
- // TODO(@kitten): This should be removed. None of the checks apply anymore
105
- try {
106
- const { doctor: routerDoctor } = await Promise.resolve().then(()=>/*#__PURE__*/ _interop_require_wildcard(require("expo-router/doctor.js")));
107
- dependencies.push(...routerDoctor(pkg, _resolvefrom().default.silent(projectRoot, '@react-navigation/native'), {
108
- bold: _chalk().default.bold,
109
- learnMore: _link.learnMore
110
- }));
111
- } catch (error) {
112
- if (!json) {
113
- _log.log(`Skipped checking expo-router dependencies: expo-router/doctor.js not found.`);
114
- }
115
- debug('expo-router/doctor error:', error);
116
- }
117
- }
118
91
  if (!dependencies.length) {
119
92
  if (json) {
120
93
  console.log(JSON.stringify({
@@ -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';\nimport resolveFrom from 'resolve-from';\n\nimport { fixPackagesAsync } from './fixPackages';\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/**\n * Handles `expo install --fix|check'.\n * Checks installed dependencies against bundledNativeModules and versions endpoints to find any incompatibilities.\n * If `--fix` is passed, it will install the correct versions of the dependencies.\n * If `--check` is passed, it will prompt the user to install the correct versions of the dependencies (on interactive terminal).\n */\nexport async function checkPackagesAsync(\n projectRoot: string,\n {\n packages,\n packageManager,\n options: { fix, json },\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' | 'json'>;\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 && !json) {\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://docs.expo.dev/more/expo-cli/#configuring-dependency-validation'\n )}`\n );\n }\n\n const dependencies = await getVersionedDependenciesAsync(projectRoot, exp, pkg, packages);\n\n /*\n * Expo Router projects will do this additional check\n * Note: The e2e tests use nexpo which will always resolve 'expo-router/doctor.js'\n * For that reason, you cannot use nexpo to test for the sub-dependency check,\n * and you cannot replace this guard with a try/catch around the import('expo-router')\n */\n if (pkg.dependencies?.['expo-router']) {\n // TODO(@kitten): This should be removed. None of the checks apply anymore\n try {\n const { doctor: routerDoctor } = await import('expo-router/doctor.js');\n dependencies.push(\n ...routerDoctor(pkg, resolveFrom.silent(projectRoot, '@react-navigation/native'), {\n bold: chalk.bold,\n learnMore,\n })\n );\n } catch (error) {\n if (!json) {\n Log.log(`Skipped checking expo-router dependencies: expo-router/doctor.js not found.`);\n }\n debug('expo-router/doctor error:', error);\n }\n }\n\n if (!dependencies.length) {\n if (json) {\n console.log(JSON.stringify({ dependencies: [], upToDate: true }));\n } else {\n Log.exit(chalk.greenBright('Dependencies are up to date'), 0);\n }\n return;\n }\n\n if (json) {\n console.log(JSON.stringify({ dependencies, upToDate: false }, null, 2));\n // Exit with non-zero exit code to indicate outdated dependencies\n process.exit(1);\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\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","debug","require","projectRoot","packages","packageManager","options","fix","json","packageManagerArguments","pkg","exp","getConfig","skipPlugins","expo","install","exclude","length","Log","log","chalk","joinWithCommasAnd","learnMore","dependencies","getVersionedDependenciesAsync","doctor","routerDoctor","push","resolveFrom","silent","bold","error","console","JSON","stringify","upToDate","exit","greenBright","process","logIncorrectDependencies","value","isInteractive","confirmAsync","message","catch","fixPackagesAsync","sdkVersion","red"],"mappings":";;;;+BAyBsBA;;;eAAAA;;;;yBAzBI;;;;;;;gEAER;;;;;;;gEACM;;;;;;6BAES;6DAEZ;8CAId;6BACuB;sBACJ;yBACG;yBACK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAElC,MAAMC,QAAQC,QAAQ,SAAS;AAQxB,eAAeF,mBACpBG,WAAmB,EACnB,EACEC,QAAQ,EACRC,cAAc,EACdC,SAAS,EAAEC,GAAG,EAAEC,IAAI,EAAE,EACtBC,uBAAuB,EAiBxB;QASGC,2BAAAA,mBAAAA,WAkBAA;IAzBJ,gDAAgD;IAChD,MAAM,EAAEC,GAAG,EAAED,GAAG,EAAE,GAAGE,IAAAA,mBAAS,EAACT,aAAa;QAC1C,iFAAiF;QACjF,yEAAyE;QACzEU,aAAa;IACf;IAEA,IAAIH,EAAAA,YAAAA,IAAII,IAAI,sBAARJ,oBAAAA,UAAUK,OAAO,sBAAjBL,4BAAAA,kBAAmBM,OAAO,qBAA1BN,0BAA4BO,MAAM,KAAI,CAACT,MAAM;QAC/CU,KAAIC,GAAG,CACLC,IAAAA,gBAAK,CAAA,CAAC,QAAQ,EAAEb,MAAM,WAAW,WAAW,eAAe,EAAEc,IAAAA,0BAAiB,EAC5EX,IAAII,IAAI,CAACC,OAAO,CAACC,OAAO,EACxB,gFAAgF,EAAEM,IAAAA,eAAS,EAC3F,0EACA,CAAC;IAEP;IAEA,MAAMC,eAAe,MAAMC,IAAAA,2DAA6B,EAACrB,aAAaQ,KAAKD,KAAKN;IAEhF;;;;;GAKC,GACD,KAAIM,oBAAAA,IAAIa,YAAY,qBAAhBb,iBAAkB,CAAC,cAAc,EAAE;QACrC,0EAA0E;QAC1E,IAAI;YACF,MAAM,EAAEe,QAAQC,YAAY,EAAE,GAAG,MAAM,mEAAA,QAAO;YAC9CH,aAAaI,IAAI,IACZD,aAAahB,KAAKkB,sBAAW,CAACC,MAAM,CAAC1B,aAAa,6BAA6B;gBAChF2B,MAAMV,gBAAK,CAACU,IAAI;gBAChBR,WAAAA,eAAS;YACX;QAEJ,EAAE,OAAOS,OAAO;YACd,IAAI,CAACvB,MAAM;gBACTU,KAAIC,GAAG,CAAC,CAAC,2EAA2E,CAAC;YACvF;YACAlB,MAAM,6BAA6B8B;QACrC;IACF;IAEA,IAAI,CAACR,aAAaN,MAAM,EAAE;QACxB,IAAIT,MAAM;YACRwB,QAAQb,GAAG,CAACc,KAAKC,SAAS,CAAC;gBAAEX,cAAc,EAAE;gBAAEY,UAAU;YAAK;QAChE,OAAO;YACLjB,KAAIkB,IAAI,CAAChB,gBAAK,CAACiB,WAAW,CAAC,gCAAgC;QAC7D;QACA;IACF;IAEA,IAAI7B,MAAM;QACRwB,QAAQb,GAAG,CAACc,KAAKC,SAAS,CAAC;YAAEX;YAAcY,UAAU;QAAM,GAAG,MAAM;QACpE,iEAAiE;QACjEG,QAAQF,IAAI,CAAC;IACf;IAEAG,IAAAA,sDAAwB,EAAChB;IAEzB,MAAMiB,QACJ,8BAA8B;IAC9BjC,OACA,kDAAkD;IACjDkC,IAAAA,0BAAa,OAAO,MAAMC,IAAAA,qBAAY,EAAC;QAAEC,SAAS;IAAoB,GAAGC,KAAK,CAAC,IAAM;IAExF,IAAIJ,OAAO;QACTvC,MAAM,kCAAkCsB;QACxC,sCAAsC;QACtC,OAAOsB,IAAAA,6BAAgB,EAAC1C,aAAa;YACnCE;YACAD,UAAUmB;YACVd;YACAqC,YAAYnC,IAAImC,UAAU;QAC5B;IACF;IAEA,2EAA2E;IAC3E5B,KAAIkB,IAAI,CAAChB,gBAAK,CAAC2B,GAAG,CAAC,gCAAgC;AACrD"}
1
+ {"version":3,"sources":["../../../src/install/checkPackages.ts"],"sourcesContent":["import { getConfig } from '@expo/config';\nimport type * as PackageManager from '@expo/package-manager';\nimport chalk from 'chalk';\n\nimport { fixPackagesAsync } from './fixPackages';\nimport type { 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/**\n * Handles `expo install --fix|check'.\n * Checks installed dependencies against bundledNativeModules and versions endpoints to find any incompatibilities.\n * If `--fix` is passed, it will install the correct versions of the dependencies.\n * If `--check` is passed, it will prompt the user to install the correct versions of the dependencies (on interactive terminal).\n */\nexport async function checkPackagesAsync(\n projectRoot: string,\n {\n packages,\n packageManager,\n options: { fix, json },\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' | 'json'>;\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 && !json) {\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://docs.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 if (json) {\n console.log(JSON.stringify({ dependencies: [], upToDate: true }));\n } else {\n Log.exit(chalk.greenBright('Dependencies are up to date'), 0);\n }\n return;\n }\n\n if (json) {\n console.log(JSON.stringify({ dependencies, upToDate: false }, null, 2));\n // Exit with non-zero exit code to indicate outdated dependencies\n process.exit(1);\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\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","debug","require","projectRoot","packages","packageManager","options","fix","json","packageManagerArguments","pkg","exp","getConfig","skipPlugins","expo","install","exclude","length","Log","log","chalk","joinWithCommasAnd","learnMore","dependencies","getVersionedDependenciesAsync","console","JSON","stringify","upToDate","exit","greenBright","process","logIncorrectDependencies","value","isInteractive","confirmAsync","message","catch","fixPackagesAsync","sdkVersion","red"],"mappings":";;;;+BAwBsBA;;;eAAAA;;;;yBAxBI;;;;;;;gEAER;;;;;;6BAEe;6DAEZ;8CAId;6BACuB;sBACJ;yBACG;yBACK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAElC,MAAMC,QAAQC,QAAQ,SAAS;AAQxB,eAAeF,mBACpBG,WAAmB,EACnB,EACEC,QAAQ,EACRC,cAAc,EACdC,SAAS,EAAEC,GAAG,EAAEC,IAAI,EAAE,EACtBC,uBAAuB,EAiBxB;QASGC,2BAAAA,mBAAAA;IAPJ,gDAAgD;IAChD,MAAM,EAAEC,GAAG,EAAED,GAAG,EAAE,GAAGE,IAAAA,mBAAS,EAACT,aAAa;QAC1C,iFAAiF;QACjF,yEAAyE;QACzEU,aAAa;IACf;IAEA,IAAIH,EAAAA,YAAAA,IAAII,IAAI,sBAARJ,oBAAAA,UAAUK,OAAO,sBAAjBL,4BAAAA,kBAAmBM,OAAO,qBAA1BN,0BAA4BO,MAAM,KAAI,CAACT,MAAM;QAC/CU,KAAIC,GAAG,CACLC,IAAAA,gBAAK,CAAA,CAAC,QAAQ,EAAEb,MAAM,WAAW,WAAW,eAAe,EAAEc,IAAAA,0BAAiB,EAC5EX,IAAII,IAAI,CAACC,OAAO,CAACC,OAAO,EACxB,gFAAgF,EAAEM,IAAAA,eAAS,EAC3F,0EACA,CAAC;IAEP;IAEA,MAAMC,eAAe,MAAMC,IAAAA,2DAA6B,EAACrB,aAAaQ,KAAKD,KAAKN;IAEhF,IAAI,CAACmB,aAAaN,MAAM,EAAE;QACxB,IAAIT,MAAM;YACRiB,QAAQN,GAAG,CAACO,KAAKC,SAAS,CAAC;gBAAEJ,cAAc,EAAE;gBAAEK,UAAU;YAAK;QAChE,OAAO;YACLV,KAAIW,IAAI,CAACT,gBAAK,CAACU,WAAW,CAAC,gCAAgC;QAC7D;QACA;IACF;IAEA,IAAItB,MAAM;QACRiB,QAAQN,GAAG,CAACO,KAAKC,SAAS,CAAC;YAAEJ;YAAcK,UAAU;QAAM,GAAG,MAAM;QACpE,iEAAiE;QACjEG,QAAQF,IAAI,CAAC;IACf;IAEAG,IAAAA,sDAAwB,EAACT;IAEzB,MAAMU,QACJ,8BAA8B;IAC9B1B,OACA,kDAAkD;IACjD2B,IAAAA,0BAAa,OAAO,MAAMC,IAAAA,qBAAY,EAAC;QAAEC,SAAS;IAAoB,GAAGC,KAAK,CAAC,IAAM;IAExF,IAAIJ,OAAO;QACThC,MAAM,kCAAkCsB;QACxC,sCAAsC;QACtC,OAAOe,IAAAA,6BAAgB,EAACnC,aAAa;YACnCE;YACAD,UAAUmB;YACVd;YACA8B,YAAY5B,IAAI4B,UAAU;QAC5B;IACF;IAEA,2EAA2E;IAC3ErB,KAAIW,IAAI,CAACT,gBAAK,CAACoB,GAAG,CAAC,gCAAgC;AACrD"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/install/fixPackages.ts"],"sourcesContent":["import * as PackageManager from '@expo/package-manager';\nimport chalk from 'chalk';\n\nimport { applyPluginsAsync } from './applyPlugins';\nimport { installExpoPackageAsync } from './installExpoPackage';\nimport * as Log from '../log';\nimport { getOperationLog } from '../start/doctor/dependencies/getVersionedPackages';\nimport { getVersionedDependenciesAsync } from '../start/doctor/dependencies/validateDependenciesVersions';\nimport { groupBy } from '../utils/array';\n\n/**\n * Given a list of incompatible packages, installs the correct versions of the packages with the package manager used for the project.\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 // display all packages to update, including expo package\n Log.log(\n chalk`\\u203A Installing ${\n versioningMessages.length ? versioningMessages.join(' and ') + ' ' : ''\n }using {bold ${packageManager.name}}`\n );\n\n // if updating expo package, install this first, then run expo install --fix again under new version\n const expoDep = dependencies.find((dep) => dep.packageName === 'expo');\n if (expoDep) {\n await installExpoPackageAsync(projectRoot, {\n packageManager,\n packageManagerArguments,\n expoPackageToInstall: `expo@${expoDep.expectedVersionOrRange}`,\n followUpCommandArgs: ['--fix'],\n });\n // follow-up commands will be spawned in a detached process, so return immediately\n return;\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(\n projectRoot,\n dependencies.map((dep) => dep.packageName)\n );\n }\n\n if (devDependencies.length) {\n await packageManager.addDevAsync([\n ...packageManagerArguments,\n ...devDependencies.map((dep) => `${dep.packageName}@${dep.expectedVersionOrRange}`),\n ]);\n }\n}\n"],"names":["fixPackagesAsync","projectRoot","packages","packageManager","sdkVersion","packageManagerArguments","length","dependencies","devDependencies","groupBy","dep","packageType","versioningMessages","getOperationLog","othersCount","nativeModulesCount","Log","log","chalk","join","name","expoDep","find","packageName","installExpoPackageAsync","expoPackageToInstall","expectedVersionOrRange","followUpCommandArgs","versionedPackages","map","addAsync","applyPluginsAsync","addDevAsync"],"mappings":";;;;+BAasBA;;;eAAAA;;;;gEAZJ;;;;;;8BAEgB;oCACM;6DACnB;sCACW;uBAER;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKjB,eAAeA,iBACpBC,WAAmB,EACnB,EACEC,QAAQ,EACRC,cAAc,EACdC,UAAU,EACVC,uBAAuB,EAexB;IAED,IAAI,CAACH,SAASI,MAAM,EAAE;QACpB;IACF;IAEA,MAAM,EAAEC,eAAe,EAAE,EAAEC,kBAAkB,EAAE,EAAE,GAAGC,IAAAA,cAAO,EAACP,UAAU,CAACQ,MAAQA,IAAIC,WAAW;IAC9F,MAAMC,qBAAqBC,IAAAA,qCAAe,EAAC;QACzCC,aAAa;QACbC,oBAAoBb,SAASI,MAAM;QACnCF;IACF;IAEA,yDAAyD;IACzDY,KAAIC,GAAG,CACLC,IAAAA,gBAAK,CAAA,CAAC,kBAAkB,EACtBN,mBAAmBN,MAAM,GAAGM,mBAAmBO,IAAI,CAAC,WAAW,MAAM,GACtE,YAAY,EAAEhB,eAAeiB,IAAI,CAAC,CAAC,CAAC;IAGvC,oGAAoG;IACpG,MAAMC,UAAUd,aAAae,IAAI,CAAC,CAACZ,MAAQA,IAAIa,WAAW,KAAK;IAC/D,IAAIF,SAAS;QACX,MAAMG,IAAAA,2CAAuB,EAACvB,aAAa;YACzCE;YACAE;YACAoB,sBAAsB,CAAC,KAAK,EAAEJ,QAAQK,sBAAsB,EAAE;YAC9DC,qBAAqB;gBAAC;aAAQ;QAChC;QACA,kFAAkF;QAClF;IACF;IAEA,IAAIpB,aAAaD,MAAM,EAAE;QACvB,MAAMsB,oBAAoBrB,aAAasB,GAAG,CACxC,CAACnB,MAAQ,GAAGA,IAAIa,WAAW,CAAC,CAAC,EAAEb,IAAIgB,sBAAsB,EAAE;QAG7D,MAAMvB,eAAe2B,QAAQ,CAAC;eAAIzB;eAA4BuB;SAAkB;QAEhF,MAAMG,IAAAA,+BAAiB,EACrB9B,aACAM,aAAasB,GAAG,CAAC,CAACnB,MAAQA,IAAIa,WAAW;IAE7C;IAEA,IAAIf,gBAAgBF,MAAM,EAAE;QAC1B,MAAMH,eAAe6B,WAAW,CAAC;eAC5B3B;eACAG,gBAAgBqB,GAAG,CAAC,CAACnB,MAAQ,GAAGA,IAAIa,WAAW,CAAC,CAAC,EAAEb,IAAIgB,sBAAsB,EAAE;SACnF;IACH;AACF"}
1
+ {"version":3,"sources":["../../../src/install/fixPackages.ts"],"sourcesContent":["import type * as PackageManager from '@expo/package-manager';\nimport chalk from 'chalk';\n\nimport { applyPluginsAsync } from './applyPlugins';\nimport { installExpoPackageAsync } from './installExpoPackage';\nimport * as Log from '../log';\nimport { getOperationLog } from '../start/doctor/dependencies/getVersionedPackages';\nimport type { getVersionedDependenciesAsync } from '../start/doctor/dependencies/validateDependenciesVersions';\nimport { groupBy } from '../utils/array';\n\n/**\n * Given a list of incompatible packages, installs the correct versions of the packages with the package manager used for the project.\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 // display all packages to update, including expo package\n Log.log(\n chalk`\\u203A Installing ${\n versioningMessages.length ? versioningMessages.join(' and ') + ' ' : ''\n }using {bold ${packageManager.name}}`\n );\n\n // if updating expo package, install this first, then run expo install --fix again under new version\n const expoDep = dependencies.find((dep) => dep.packageName === 'expo');\n if (expoDep) {\n await installExpoPackageAsync(projectRoot, {\n packageManager,\n packageManagerArguments,\n expoPackageToInstall: `expo@${expoDep.expectedVersionOrRange}`,\n followUpCommandArgs: ['--fix'],\n });\n // follow-up commands will be spawned in a detached process, so return immediately\n return;\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(\n projectRoot,\n dependencies.map((dep) => dep.packageName)\n );\n }\n\n if (devDependencies.length) {\n await packageManager.addDevAsync([\n ...packageManagerArguments,\n ...devDependencies.map((dep) => `${dep.packageName}@${dep.expectedVersionOrRange}`),\n ]);\n }\n}\n"],"names":["fixPackagesAsync","projectRoot","packages","packageManager","sdkVersion","packageManagerArguments","length","dependencies","devDependencies","groupBy","dep","packageType","versioningMessages","getOperationLog","othersCount","nativeModulesCount","Log","log","chalk","join","name","expoDep","find","packageName","installExpoPackageAsync","expoPackageToInstall","expectedVersionOrRange","followUpCommandArgs","versionedPackages","map","addAsync","applyPluginsAsync","addDevAsync"],"mappings":";;;;+BAasBA;;;eAAAA;;;;gEAZJ;;;;;;8BAEgB;oCACM;6DACnB;sCACW;uBAER;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKjB,eAAeA,iBACpBC,WAAmB,EACnB,EACEC,QAAQ,EACRC,cAAc,EACdC,UAAU,EACVC,uBAAuB,EAexB;IAED,IAAI,CAACH,SAASI,MAAM,EAAE;QACpB;IACF;IAEA,MAAM,EAAEC,eAAe,EAAE,EAAEC,kBAAkB,EAAE,EAAE,GAAGC,IAAAA,cAAO,EAACP,UAAU,CAACQ,MAAQA,IAAIC,WAAW;IAC9F,MAAMC,qBAAqBC,IAAAA,qCAAe,EAAC;QACzCC,aAAa;QACbC,oBAAoBb,SAASI,MAAM;QACnCF;IACF;IAEA,yDAAyD;IACzDY,KAAIC,GAAG,CACLC,IAAAA,gBAAK,CAAA,CAAC,kBAAkB,EACtBN,mBAAmBN,MAAM,GAAGM,mBAAmBO,IAAI,CAAC,WAAW,MAAM,GACtE,YAAY,EAAEhB,eAAeiB,IAAI,CAAC,CAAC,CAAC;IAGvC,oGAAoG;IACpG,MAAMC,UAAUd,aAAae,IAAI,CAAC,CAACZ,MAAQA,IAAIa,WAAW,KAAK;IAC/D,IAAIF,SAAS;QACX,MAAMG,IAAAA,2CAAuB,EAACvB,aAAa;YACzCE;YACAE;YACAoB,sBAAsB,CAAC,KAAK,EAAEJ,QAAQK,sBAAsB,EAAE;YAC9DC,qBAAqB;gBAAC;aAAQ;QAChC;QACA,kFAAkF;QAClF;IACF;IAEA,IAAIpB,aAAaD,MAAM,EAAE;QACvB,MAAMsB,oBAAoBrB,aAAasB,GAAG,CACxC,CAACnB,MAAQ,GAAGA,IAAIa,WAAW,CAAC,CAAC,EAAEb,IAAIgB,sBAAsB,EAAE;QAG7D,MAAMvB,eAAe2B,QAAQ,CAAC;eAAIzB;eAA4BuB;SAAkB;QAEhF,MAAMG,IAAAA,+BAAiB,EACrB9B,aACAM,aAAasB,GAAG,CAAC,CAACnB,MAAQA,IAAIa,WAAW;IAE7C;IAEA,IAAIf,gBAAgBF,MAAM,EAAE;QAC1B,MAAMH,eAAe6B,WAAW,CAAC;eAC5B3B;eACAG,gBAAgBqB,GAAG,CAAC,CAACnB,MAAQ,GAAGA,IAAIa,WAAW,CAAC,CAAC,EAAEb,IAAIgB,sBAAsB,EAAE;SACnF;IACH;AACF"}
@@ -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 '--json': 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 '--dev Save the dependencies as devDependencies',\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.lock or bun.lockb exists}`,\n chalk`--pnpm Use pnpm to install dependencies. {dim Default when pnpm-lock.yaml exists}`,\n `-h, --help Usage info`,\n `--json Output dependency information in JSON format with --check flag`,\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":";;;;;+BAMaA;;;eAAAA;;;;gEALK;;;;;;sBAG+B;;;;;;AAE1C,MAAMA,cAAuB,OAAOC;IACzC,MAAMC,OAAOC,IAAAA,2BAAqB,EAChC;QACE,qCAAqC;QACrC,UAAUC;QACV,UAAUA;QACV,UAAU;QACV,MAAM;IACR,GACA;QACEH;QACA,6EAA6E;QAC7EI,YAAY;IACd;IAGF,IAAIH,IAAI,CAAC,SAAS,EAAE;QAClBI,IAAAA,eAAS,EACP,CAAC,8CAA8C,CAAC,EAChD,CAAC,gBAAgB,CAAC,EAClB;YACE,CAAC,6DAA6D,CAAC;YAC/D;YACA,CAAC,6DAA6D,CAAC;YAC/DC,IAAAA,gBAAK,CAAA,CAAC,wFAAwF,CAAC;YAC/FA,IAAAA,gBAAK,CAAA,CAAC,iFAAiF,CAAC;YACxFA,IAAAA,gBAAK,CAAA,CAAC,4FAA4F,CAAC;YACnGA,IAAAA,gBAAK,CAAA,CAAC,sFAAsF,CAAC;YAC7F,CAAC,sBAAsB,CAAC;YACxB,CAAC,0EAA0E,CAAC;SAC7E,CAACC,IAAI,CAAC,OACP;YACE;YACAD,IAAAA,gBAAK,CAAA,CAAC,uFAAuF,CAAC;YAC9FA,IAAAA,gBAAK,CAAA,CAAC,+CAA+C,CAAC;YACtDA,IAAAA,gBAAK,CAAA,CAAC,oCAAoC,CAAC;YAC3C;SACD,CAACC,IAAI,CAAC;IAEX;IAEA,yFAAyF;IACzF,MAAM,EAAEC,YAAY,EAAE,GAAGC,QAAQ;IACjC,MAAM,EAAEC,WAAW,EAAE,GAAGD,QAAQ;IAChC,MAAM,EAAEE,gBAAgB,EAAE,GAAGF,QAAQ;IAErC,MAAM,EAAEG,QAAQ,EAAEC,OAAO,EAAEC,MAAM,EAAE,GAAG,MAAMH,iBAAiBI,QAAQf,IAAI,CAACgB,KAAK,CAAC,IAAIC,KAAK,CACvFP;IAEF,OAAOF,aAAaI,UAAUC,SAASC,QAAQG,KAAK,CAACP;AACvD"}
1
+ {"version":3,"sources":["../../../src/install/index.ts"],"sourcesContent":["#!/usr/bin/env node\nimport chalk from 'chalk';\n\nimport type { 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 '--json': 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 '--dev Save the dependencies as devDependencies',\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.lock or bun.lockb exists}`,\n chalk`--pnpm Use pnpm to install dependencies. {dim Default when pnpm-lock.yaml exists}`,\n `-h, --help Usage info`,\n `--json Output dependency information in JSON format with --check flag`,\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":";;;;;+BAMaA;;;eAAAA;;;;gEALK;;;;;;sBAG+B;;;;;;AAE1C,MAAMA,cAAuB,OAAOC;IACzC,MAAMC,OAAOC,IAAAA,2BAAqB,EAChC;QACE,qCAAqC;QACrC,UAAUC;QACV,UAAUA;QACV,UAAU;QACV,MAAM;IACR,GACA;QACEH;QACA,6EAA6E;QAC7EI,YAAY;IACd;IAGF,IAAIH,IAAI,CAAC,SAAS,EAAE;QAClBI,IAAAA,eAAS,EACP,CAAC,8CAA8C,CAAC,EAChD,CAAC,gBAAgB,CAAC,EAClB;YACE,CAAC,6DAA6D,CAAC;YAC/D;YACA,CAAC,6DAA6D,CAAC;YAC/DC,IAAAA,gBAAK,CAAA,CAAC,wFAAwF,CAAC;YAC/FA,IAAAA,gBAAK,CAAA,CAAC,iFAAiF,CAAC;YACxFA,IAAAA,gBAAK,CAAA,CAAC,4FAA4F,CAAC;YACnGA,IAAAA,gBAAK,CAAA,CAAC,sFAAsF,CAAC;YAC7F,CAAC,sBAAsB,CAAC;YACxB,CAAC,0EAA0E,CAAC;SAC7E,CAACC,IAAI,CAAC,OACP;YACE;YACAD,IAAAA,gBAAK,CAAA,CAAC,uFAAuF,CAAC;YAC9FA,IAAAA,gBAAK,CAAA,CAAC,+CAA+C,CAAC;YACtDA,IAAAA,gBAAK,CAAA,CAAC,oCAAoC,CAAC;YAC3C;SACD,CAACC,IAAI,CAAC;IAEX;IAEA,yFAAyF;IACzF,MAAM,EAAEC,YAAY,EAAE,GAAGC,QAAQ;IACjC,MAAM,EAAEC,WAAW,EAAE,GAAGD,QAAQ;IAChC,MAAM,EAAEE,gBAAgB,EAAE,GAAGF,QAAQ;IAErC,MAAM,EAAEG,QAAQ,EAAEC,OAAO,EAAEC,MAAM,EAAE,GAAG,MAAMH,iBAAiBI,QAAQf,IAAI,CAACgB,KAAK,CAAC,IAAIC,KAAK,CACvFP;IAEF,OAAOF,aAAaI,UAAUC,SAASC,QAAQG,KAAK,CAACP;AACvD"}
@@ -5,14 +5,14 @@ Object.defineProperty(exports, "__esModule", {
5
5
  function _export(target, all) {
6
6
  for(var name in all)Object.defineProperty(target, name, {
7
7
  enumerable: true,
8
- get: all[name]
8
+ get: Object.getOwnPropertyDescriptor(all, name).get
9
9
  });
10
10
  }
11
11
  _export(exports, {
12
- installAsync: function() {
12
+ get installAsync () {
13
13
  return installAsync;
14
14
  },
15
- installPackagesAsync: function() {
15
+ get installPackagesAsync () {
16
16
  return installPackagesAsync;
17
17
  }
18
18
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/install/installAsync.ts"],"sourcesContent":["import { getConfig, getPackageJson } from '@expo/config';\nimport * as PackageManager from '@expo/package-manager';\nimport chalk from 'chalk';\n\nimport { applyPluginsAsync } from './applyPlugins';\nimport { checkPackagesAsync } from './checkPackages';\nimport { installExpoPackageAsync } from './installExpoPackage';\nimport { Options } from './resolveOptions';\nimport * as Log from '../log';\nimport { checkPackagesCompatibility } from './utils/checkPackagesCompatibility';\nimport { getVersionedPackagesAsync } from '../start/doctor/dependencies/getVersionedPackages';\nimport { env } from '../utils/env';\nimport { CommandError } from '../utils/errors';\nimport { findUpProjectRootOrAssert } from '../utils/findUp';\nimport { learnMore } from '../utils/link';\nimport { setNodeEnv, loadEnvFiles } from '../utils/nodeEnv';\nimport { joinWithCommasAnd } from '../utils/strings';\n\n/**\n * Installs versions of specified packages compatible with the current Expo SDK version, or\n * checks/ fixes dependencies in project if they don't match compatible versions specified in bundledNativeModules or versions endpoints.\n *\n * @param packages list of packages to install, if installing specific packages and not checking/ fixing\n * @param options options, including check or fix\n * @param packageManagerArguments arguments to forward to the package manager invoked while installing\n * @returns Promise<void>\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 loadEnvFiles(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 const expoVersion = findPackageByName(packages, 'expo');\n const otherPackages = packages.filter((pkg) => pkg !== expoVersion);\n\n // Abort early when installing `expo@<version>` and other packages with `--fix/--check`\n if (packageHasVersion(expoVersion) && otherPackages.length && (options.check || options.fix)) {\n throw new CommandError(\n 'BAD_ARGS',\n `Cannot install other packages with ${expoVersion} and --fix or --check`\n );\n }\n\n // Only check/fix packages if `expo@<version>` is not requested\n if (!packageHasVersion(expoVersion) && (options.check || options.fix)) {\n return await checkPackagesAsync(projectRoot, {\n packages,\n options,\n packageManager,\n packageManagerArguments,\n });\n }\n\n // note(simek): check out the packages compatibility with New Architecture against RND API\n if (!env.EXPO_NO_DEPENDENCY_VALIDATION && !env.EXPO_NO_NEW_ARCH_COMPAT_CHECK) {\n await checkPackagesCompatibility(otherPackages);\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 ...options,\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 fix,\n check,\n dev,\n }: Options & {\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 = getPackageJson(projectRoot);\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 const alreadyExcluded = versioning.excludedNativeModules.filter(\n (module) => module.isExcludedFromValidation\n );\n const specifiedExactVersion = versioning.excludedNativeModules.filter(\n (module) => !module.isExcludedFromValidation\n );\n\n if (alreadyExcluded.length) {\n Log.log(\n chalk`\\u203A Using ${joinWithCommasAnd(\n alreadyExcluded.map(\n ({ bundledNativeVersion, name, specifiedVersion }) =>\n `${specifiedVersion || 'latest'} instead of ${bundledNativeVersion} for ${name}`\n )\n )} because ${\n alreadyExcluded.length > 1 ? 'they are' : 'it is'\n } listed in {bold expo.install.exclude} in package.json. ${learnMore(\n 'https://docs.expo.dev/more/expo-cli/#configuring-dependency-validation'\n )}`\n );\n }\n\n if (specifiedExactVersion.length) {\n Log.log(\n chalk`\\u203A Using ${joinWithCommasAnd(\n specifiedExactVersion.map(\n ({ bundledNativeVersion, name, specifiedVersion }) =>\n `${specifiedVersion} instead of ${bundledNativeVersion} for ${name}`\n )\n )} because ${\n specifiedExactVersion.length > 1 ? 'these versions' : 'this version'\n } was explicitly provided. Packages excluded from dependency validation should be listed in {bold expo.install.exclude} in package.json. ${learnMore(\n 'https://docs.expo.dev/more/expo-cli/#configuring-dependency-validation'\n )}`\n );\n }\n }\n\n // `expo` needs to be installed before installing other packages\n const expoPackage = findPackageByName(packages, 'expo');\n if (expoPackage) {\n const postInstallCommand = packages.filter((pkg) => pkg !== expoPackage);\n\n // Pipe options to the next command\n if (fix) postInstallCommand.push('--fix');\n if (check) postInstallCommand.push('--check');\n\n // Abort after installing `expo`, follow up command is spawn in a new process\n return await installExpoPackageAsync(projectRoot, {\n packageManager,\n packageManagerArguments,\n expoPackageToInstall: versioning.packages.find((pkg) => pkg.startsWith('expo@'))!,\n followUpCommandArgs: postInstallCommand,\n });\n }\n\n if (dev) {\n await packageManager.addDevAsync([...packageManagerArguments, ...versioning.packages]);\n } else {\n await packageManager.addAsync([...packageManagerArguments, ...versioning.packages]);\n }\n\n await applyPluginsAsync(projectRoot, versioning.packages);\n}\n\n/** Find a package, by name, in the requested packages list (`expo` -> `expo`/`expo@<version>`) */\nfunction findPackageByName(packages: string[], name: string) {\n return packages.find((pkg) => pkg === name || pkg.startsWith(`${name}@`));\n}\n\n/** Determine if a specific version is requested for a package */\nfunction packageHasVersion(name = '') {\n return name.indexOf('@', 1) > 0; // Scoped packages may start with `@`\n}\n"],"names":["installAsync","installPackagesAsync","packages","options","packageManagerArguments","setNodeEnv","projectRoot","findUpProjectRootOrAssert","process","cwd","loadEnvFiles","packageManager","PackageManager","createForProject","npm","yarn","bun","pnpm","silent","log","Log","expoVersion","findPackageByName","otherPackages","filter","pkg","packageHasVersion","length","check","fix","CommandError","checkPackagesAsync","env","EXPO_NO_DEPENDENCY_VALIDATION","EXPO_NO_NEW_ARCH_COMPAT_CHECK","checkPackagesCompatibility","exp","getConfig","skipPlugins","sdkVersion","dev","getPackageJson","versioning","getVersionedPackagesAsync","chalk","messages","join","name","excludedNativeModules","alreadyExcluded","module","isExcludedFromValidation","specifiedExactVersion","joinWithCommasAnd","map","bundledNativeVersion","specifiedVersion","learnMore","expoPackage","postInstallCommand","push","installExpoPackageAsync","expoPackageToInstall","find","startsWith","followUpCommandArgs","addDevAsync","addAsync","applyPluginsAsync","indexOf"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/install/installAsync.ts"],"sourcesContent":["import { getConfig, getPackageJson } from '@expo/config';\nimport * as PackageManager from '@expo/package-manager';\nimport chalk from 'chalk';\n\nimport { applyPluginsAsync } from './applyPlugins';\nimport { checkPackagesAsync } from './checkPackages';\nimport { installExpoPackageAsync } from './installExpoPackage';\nimport type { Options } from './resolveOptions';\nimport * as Log from '../log';\nimport { checkPackagesCompatibility } from './utils/checkPackagesCompatibility';\nimport { getVersionedPackagesAsync } from '../start/doctor/dependencies/getVersionedPackages';\nimport { env } from '../utils/env';\nimport { CommandError } from '../utils/errors';\nimport { findUpProjectRootOrAssert } from '../utils/findUp';\nimport { learnMore } from '../utils/link';\nimport { setNodeEnv, loadEnvFiles } from '../utils/nodeEnv';\nimport { joinWithCommasAnd } from '../utils/strings';\n\n/**\n * Installs versions of specified packages compatible with the current Expo SDK version, or\n * checks/ fixes dependencies in project if they don't match compatible versions specified in bundledNativeModules or versions endpoints.\n *\n * @param packages list of packages to install, if installing specific packages and not checking/ fixing\n * @param options options, including check or fix\n * @param packageManagerArguments arguments to forward to the package manager invoked while installing\n * @returns Promise<void>\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 loadEnvFiles(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 const expoVersion = findPackageByName(packages, 'expo');\n const otherPackages = packages.filter((pkg) => pkg !== expoVersion);\n\n // Abort early when installing `expo@<version>` and other packages with `--fix/--check`\n if (packageHasVersion(expoVersion) && otherPackages.length && (options.check || options.fix)) {\n throw new CommandError(\n 'BAD_ARGS',\n `Cannot install other packages with ${expoVersion} and --fix or --check`\n );\n }\n\n // Only check/fix packages if `expo@<version>` is not requested\n if (!packageHasVersion(expoVersion) && (options.check || options.fix)) {\n return await checkPackagesAsync(projectRoot, {\n packages,\n options,\n packageManager,\n packageManagerArguments,\n });\n }\n\n // note(simek): check out the packages compatibility with New Architecture against RND API\n if (!env.EXPO_NO_DEPENDENCY_VALIDATION && !env.EXPO_NO_NEW_ARCH_COMPAT_CHECK) {\n await checkPackagesCompatibility(otherPackages);\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 ...options,\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 fix,\n check,\n dev,\n }: Options & {\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 = getPackageJson(projectRoot);\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 const alreadyExcluded = versioning.excludedNativeModules.filter(\n (module) => module.isExcludedFromValidation\n );\n const specifiedExactVersion = versioning.excludedNativeModules.filter(\n (module) => !module.isExcludedFromValidation\n );\n\n if (alreadyExcluded.length) {\n Log.log(\n chalk`\\u203A Using ${joinWithCommasAnd(\n alreadyExcluded.map(\n ({ bundledNativeVersion, name, specifiedVersion }) =>\n `${specifiedVersion || 'latest'} instead of ${bundledNativeVersion} for ${name}`\n )\n )} because ${\n alreadyExcluded.length > 1 ? 'they are' : 'it is'\n } listed in {bold expo.install.exclude} in package.json. ${learnMore(\n 'https://docs.expo.dev/more/expo-cli/#configuring-dependency-validation'\n )}`\n );\n }\n\n if (specifiedExactVersion.length) {\n Log.log(\n chalk`\\u203A Using ${joinWithCommasAnd(\n specifiedExactVersion.map(\n ({ bundledNativeVersion, name, specifiedVersion }) =>\n `${specifiedVersion} instead of ${bundledNativeVersion} for ${name}`\n )\n )} because ${\n specifiedExactVersion.length > 1 ? 'these versions' : 'this version'\n } was explicitly provided. Packages excluded from dependency validation should be listed in {bold expo.install.exclude} in package.json. ${learnMore(\n 'https://docs.expo.dev/more/expo-cli/#configuring-dependency-validation'\n )}`\n );\n }\n }\n\n // `expo` needs to be installed before installing other packages\n const expoPackage = findPackageByName(packages, 'expo');\n if (expoPackage) {\n const postInstallCommand = packages.filter((pkg) => pkg !== expoPackage);\n\n // Pipe options to the next command\n if (fix) postInstallCommand.push('--fix');\n if (check) postInstallCommand.push('--check');\n\n // Abort after installing `expo`, follow up command is spawn in a new process\n return await installExpoPackageAsync(projectRoot, {\n packageManager,\n packageManagerArguments,\n expoPackageToInstall: versioning.packages.find((pkg) => pkg.startsWith('expo@'))!,\n followUpCommandArgs: postInstallCommand,\n });\n }\n\n if (dev) {\n await packageManager.addDevAsync([...packageManagerArguments, ...versioning.packages]);\n } else {\n await packageManager.addAsync([...packageManagerArguments, ...versioning.packages]);\n }\n\n await applyPluginsAsync(projectRoot, versioning.packages);\n}\n\n/** Find a package, by name, in the requested packages list (`expo` -> `expo`/`expo@<version>`) */\nfunction findPackageByName(packages: string[], name: string) {\n return packages.find((pkg) => pkg === name || pkg.startsWith(`${name}@`));\n}\n\n/** Determine if a specific version is requested for a package */\nfunction packageHasVersion(name = '') {\n return name.indexOf('@', 1) > 0; // Scoped packages may start with `@`\n}\n"],"names":["installAsync","installPackagesAsync","packages","options","packageManagerArguments","setNodeEnv","projectRoot","findUpProjectRootOrAssert","process","cwd","loadEnvFiles","packageManager","PackageManager","createForProject","npm","yarn","bun","pnpm","silent","log","Log","expoVersion","findPackageByName","otherPackages","filter","pkg","packageHasVersion","length","check","fix","CommandError","checkPackagesAsync","env","EXPO_NO_DEPENDENCY_VALIDATION","EXPO_NO_NEW_ARCH_COMPAT_CHECK","checkPackagesCompatibility","exp","getConfig","skipPlugins","sdkVersion","dev","getPackageJson","versioning","getVersionedPackagesAsync","chalk","messages","join","name","excludedNativeModules","alreadyExcluded","module","isExcludedFromValidation","specifiedExactVersion","joinWithCommasAnd","map","bundledNativeVersion","specifiedVersion","learnMore","expoPackage","postInstallCommand","push","installExpoPackageAsync","expoPackageToInstall","find","startsWith","followUpCommandArgs","addDevAsync","addAsync","applyPluginsAsync","indexOf"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/install/installExpoPackage.ts"],"sourcesContent":["import * as PackageManager from '@expo/package-manager';\nimport spawnAsync from '@expo/spawn-async';\nimport chalk from 'chalk';\n\nimport * as Log from '../log';\nimport type { Options } from './resolveOptions';\nimport { getRunningProcess } from '../utils/getRunningProcess';\n\n/**\n * Given a list of incompatible packages, installs the correct versions of the packages with the package manager used for the project.\n * This exits immediately after spawning the install command, since the command shouldn't remain running while it is being updated.\n */\nexport async function installExpoPackageAsync(\n projectRoot: string,\n {\n packageManager,\n packageManagerArguments,\n expoPackageToInstall,\n followUpCommandArgs,\n dev,\n }: Pick<Options, 'dev'> & {\n /** Package manager to use when installing the versioned packages. */\n packageManager: PackageManager.NodePackageManager;\n /**\n * Extra parameters to pass to the `packageManager` when installing versioned packages.\n * @example ['--no-save']\n */\n packageManagerArguments: string[];\n expoPackageToInstall: string;\n followUpCommandArgs: string[];\n }\n) {\n // Check if there's potentially a dev server running in the current folder and warn about it\n // (not guaranteed to be Expo CLI, and the CLI isn't always running on 8081, but it's a good guess)\n const isExpoMaybeRunningForProject = !!(await getRunningProcess(8081));\n\n if (isExpoMaybeRunningForProject) {\n Log.warn(\n 'The Expo CLI appears to be running this project in another terminal window. Close and restart any Expo CLI instances after the installation to complete the update.'\n );\n }\n\n // Safe to use current process to upgrade Expo package- doesn't affect current process\n try {\n if (dev) {\n await packageManager.addDevAsync([...packageManagerArguments, expoPackageToInstall]);\n } else {\n await packageManager.addAsync([...packageManagerArguments, expoPackageToInstall]);\n }\n } catch (error) {\n Log.error(\n chalk`Cannot install the latest Expo package. Install {bold expo@latest} with ${packageManager.name} and then run {bold npx expo install} again.`\n );\n throw error;\n }\n\n // Spawn a new process to install the rest of the packages if there are any, as only then will the latest Expo package be used\n if (followUpCommandArgs.length) {\n let commandSegments = ['expo', 'install', dev ? '--dev' : '', ...followUpCommandArgs].filter(\n Boolean\n );\n if (packageManagerArguments.length) {\n commandSegments = [...commandSegments, '--', ...packageManagerArguments];\n }\n\n Log.log(chalk`\\u203A Running {bold npx expo install} under the updated expo version`);\n Log.log('> ' + commandSegments.join(' '));\n\n await spawnAsync('npx', commandSegments, {\n stdio: 'inherit',\n cwd: projectRoot,\n env: { ...process.env },\n });\n }\n}\n"],"names":["installExpoPackageAsync","projectRoot","packageManager","packageManagerArguments","expoPackageToInstall","followUpCommandArgs","dev","isExpoMaybeRunningForProject","getRunningProcess","Log","warn","addDevAsync","addAsync","error","chalk","name","length","commandSegments","filter","Boolean","log","join","spawnAsync","stdio","cwd","env","process"],"mappings":";;;;+BAYsBA;;;eAAAA;;;;gEAXC;;;;;;;gEACL;;;;;;6DAEG;mCAEa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAM3B,eAAeA,wBACpBC,WAAmB,EACnB,EACEC,cAAc,EACdC,uBAAuB,EACvBC,oBAAoB,EACpBC,mBAAmB,EACnBC,GAAG,EAWJ;IAED,4FAA4F;IAC5F,mGAAmG;IACnG,MAAMC,+BAA+B,CAAC,CAAE,MAAMC,IAAAA,oCAAiB,EAAC;IAEhE,IAAID,8BAA8B;QAChCE,KAAIC,IAAI,CACN;IAEJ;IAEA,sFAAsF;IACtF,IAAI;QACF,IAAIJ,KAAK;YACP,MAAMJ,eAAeS,WAAW,CAAC;mBAAIR;gBAAyBC;aAAqB;QACrF,OAAO;YACL,MAAMF,eAAeU,QAAQ,CAAC;mBAAIT;gBAAyBC;aAAqB;QAClF;IACF,EAAE,OAAOS,OAAO;QACdJ,KAAII,KAAK,CACPC,IAAAA,gBAAK,CAAA,CAAC,wEAAwE,EAAEZ,eAAea,IAAI,CAAC,4CAA4C,CAAC;QAEnJ,MAAMF;IACR;IAEA,8HAA8H;IAC9H,IAAIR,oBAAoBW,MAAM,EAAE;QAC9B,IAAIC,kBAAkB;YAAC;YAAQ;YAAWX,MAAM,UAAU;eAAOD;SAAoB,CAACa,MAAM,CAC1FC;QAEF,IAAIhB,wBAAwBa,MAAM,EAAE;YAClCC,kBAAkB;mBAAIA;gBAAiB;mBAASd;aAAwB;QAC1E;QAEAM,KAAIW,GAAG,CAACN,IAAAA,gBAAK,CAAA,CAAC,qEAAqE,CAAC;QACpFL,KAAIW,GAAG,CAAC,OAAOH,gBAAgBI,IAAI,CAAC;QAEpC,MAAMC,IAAAA,qBAAU,EAAC,OAAOL,iBAAiB;YACvCM,OAAO;YACPC,KAAKvB;YACLwB,KAAK;gBAAE,GAAGC,QAAQD,GAAG;YAAC;QACxB;IACF;AACF"}
1
+ {"version":3,"sources":["../../../src/install/installExpoPackage.ts"],"sourcesContent":["import type * as PackageManager from '@expo/package-manager';\nimport spawnAsync from '@expo/spawn-async';\nimport chalk from 'chalk';\n\nimport * as Log from '../log';\nimport type { Options } from './resolveOptions';\nimport { getRunningProcess } from '../utils/getRunningProcess';\n\n/**\n * Given a list of incompatible packages, installs the correct versions of the packages with the package manager used for the project.\n * This exits immediately after spawning the install command, since the command shouldn't remain running while it is being updated.\n */\nexport async function installExpoPackageAsync(\n projectRoot: string,\n {\n packageManager,\n packageManagerArguments,\n expoPackageToInstall,\n followUpCommandArgs,\n dev,\n }: Pick<Options, 'dev'> & {\n /** Package manager to use when installing the versioned packages. */\n packageManager: PackageManager.NodePackageManager;\n /**\n * Extra parameters to pass to the `packageManager` when installing versioned packages.\n * @example ['--no-save']\n */\n packageManagerArguments: string[];\n expoPackageToInstall: string;\n followUpCommandArgs: string[];\n }\n) {\n // Check if there's potentially a dev server running in the current folder and warn about it\n // (not guaranteed to be Expo CLI, and the CLI isn't always running on 8081, but it's a good guess)\n const isExpoMaybeRunningForProject = !!(await getRunningProcess(8081));\n\n if (isExpoMaybeRunningForProject) {\n Log.warn(\n 'The Expo CLI appears to be running this project in another terminal window. Close and restart any Expo CLI instances after the installation to complete the update.'\n );\n }\n\n // Safe to use current process to upgrade Expo package- doesn't affect current process\n try {\n if (dev) {\n await packageManager.addDevAsync([...packageManagerArguments, expoPackageToInstall]);\n } else {\n await packageManager.addAsync([...packageManagerArguments, expoPackageToInstall]);\n }\n } catch (error) {\n Log.error(\n chalk`Cannot install the latest Expo package. Install {bold expo@latest} with ${packageManager.name} and then run {bold npx expo install} again.`\n );\n throw error;\n }\n\n // Spawn a new process to install the rest of the packages if there are any, as only then will the latest Expo package be used\n if (followUpCommandArgs.length) {\n let commandSegments = ['expo', 'install', dev ? '--dev' : '', ...followUpCommandArgs].filter(\n Boolean\n );\n if (packageManagerArguments.length) {\n commandSegments = [...commandSegments, '--', ...packageManagerArguments];\n }\n\n Log.log(chalk`\\u203A Running {bold npx expo install} under the updated expo version`);\n Log.log('> ' + commandSegments.join(' '));\n\n await spawnAsync('npx', commandSegments, {\n stdio: 'inherit',\n cwd: projectRoot,\n env: { ...process.env },\n });\n }\n}\n"],"names":["installExpoPackageAsync","projectRoot","packageManager","packageManagerArguments","expoPackageToInstall","followUpCommandArgs","dev","isExpoMaybeRunningForProject","getRunningProcess","Log","warn","addDevAsync","addAsync","error","chalk","name","length","commandSegments","filter","Boolean","log","join","spawnAsync","stdio","cwd","env","process"],"mappings":";;;;+BAYsBA;;;eAAAA;;;;gEAXC;;;;;;;gEACL;;;;;;6DAEG;mCAEa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAM3B,eAAeA,wBACpBC,WAAmB,EACnB,EACEC,cAAc,EACdC,uBAAuB,EACvBC,oBAAoB,EACpBC,mBAAmB,EACnBC,GAAG,EAWJ;IAED,4FAA4F;IAC5F,mGAAmG;IACnG,MAAMC,+BAA+B,CAAC,CAAE,MAAMC,IAAAA,oCAAiB,EAAC;IAEhE,IAAID,8BAA8B;QAChCE,KAAIC,IAAI,CACN;IAEJ;IAEA,sFAAsF;IACtF,IAAI;QACF,IAAIJ,KAAK;YACP,MAAMJ,eAAeS,WAAW,CAAC;mBAAIR;gBAAyBC;aAAqB;QACrF,OAAO;YACL,MAAMF,eAAeU,QAAQ,CAAC;mBAAIT;gBAAyBC;aAAqB;QAClF;IACF,EAAE,OAAOS,OAAO;QACdJ,KAAII,KAAK,CACPC,IAAAA,gBAAK,CAAA,CAAC,wEAAwE,EAAEZ,eAAea,IAAI,CAAC,4CAA4C,CAAC;QAEnJ,MAAMF;IACR;IAEA,8HAA8H;IAC9H,IAAIR,oBAAoBW,MAAM,EAAE;QAC9B,IAAIC,kBAAkB;YAAC;YAAQ;YAAWX,MAAM,UAAU;eAAOD;SAAoB,CAACa,MAAM,CAC1FC;QAEF,IAAIhB,wBAAwBa,MAAM,EAAE;YAClCC,kBAAkB;mBAAIA;gBAAiB;mBAASd;aAAwB;QAC1E;QAEAM,KAAIW,GAAG,CAACN,IAAAA,gBAAK,CAAA,CAAC,qEAAqE,CAAC;QACpFL,KAAIW,GAAG,CAAC,OAAOH,gBAAgBI,IAAI,CAAC;QAEpC,MAAMC,IAAAA,qBAAU,EAAC,OAAOL,iBAAiB;YACvCM,OAAO;YACPC,KAAKvB;YACLwB,KAAK;gBAAE,GAAGC,QAAQD,GAAG;YAAC;QACxB;IACF;AACF"}
@@ -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' | '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 /** Should be installed as dev dependencies */\n dev?: boolean;\n /** Should output in JSON format (use with --check) */\n json?: 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 if (options.json && !options.check) {\n throw new CommandError('BAD_ARGS', 'The --json flag can only be used with --check');\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', '--dev', '--fix', '--npm', '--pnpm', '--yarn', '--bun', '--json'],\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 dev: !!flags['--dev'],\n check: !!flags['--check'],\n yarn: !!flags['--yarn'],\n npm: !!flags['--npm'],\n pnpm: !!flags['--pnpm'],\n bun: !!flags['--bun'],\n json: !!flags['--json'],\n }),\n extras,\n };\n}\n"],"names":["resolveArgsAsync","resolveOptions","options","fix","check","CommandError","npm","pnpm","yarn","bun","filter","Boolean","length","json","argv","variadic","extras","flags","parseVariadicArguments","assertUnexpectedVariadicFlags","dev"],"mappings":";;;;+BAiCsBA;;;eAAAA;;;wBA/BO;0BACyC;AAetE,SAASC,eAAeC,OAAgB;IACtC,IAAIA,QAAQC,GAAG,IAAID,QAAQE,KAAK,EAAE;QAChC,MAAM,IAAIC,oBAAY,CAAC,YAAY;IACrC;IACA,IAAI;QAACH,QAAQI,GAAG;QAAEJ,QAAQK,IAAI;QAAEL,QAAQM,IAAI;QAAEN,QAAQO,GAAG;KAAC,CAACC,MAAM,CAACC,SAASC,MAAM,GAAG,GAAG;QACrF,MAAM,IAAIP,oBAAY,CAAC,YAAY;IACrC;IACA,IAAIH,QAAQW,IAAI,IAAI,CAACX,QAAQE,KAAK,EAAE;QAClC,MAAM,IAAIC,oBAAY,CAAC,YAAY;IACrC;IACA,OAAO;QACL,GAAGH,OAAO;IACZ;AACF;AAEO,eAAeF,iBACpBc,IAAc;IAEd,MAAM,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,KAAK,EAAE,GAAGC,IAAAA,gCAAsB,EAACJ;IAE3DK,IAAAA,uCAA6B,EAC3B;QAAC;QAAW;QAAS;QAAS;QAAS;QAAU;QAAU;QAAS;KAAS,EAC7E;QAAEJ;QAAUC;QAAQC;IAAM,GAC1B;IAGF,OAAO;QACL,uFAAuF;QACvFF;QACAb,SAASD,eAAe;YACtBE,KAAK,CAAC,CAACc,KAAK,CAAC,QAAQ;YACrBG,KAAK,CAAC,CAACH,KAAK,CAAC,QAAQ;YACrBb,OAAO,CAAC,CAACa,KAAK,CAAC,UAAU;YACzBT,MAAM,CAAC,CAACS,KAAK,CAAC,SAAS;YACvBX,KAAK,CAAC,CAACW,KAAK,CAAC,QAAQ;YACrBV,MAAM,CAAC,CAACU,KAAK,CAAC,SAAS;YACvBR,KAAK,CAAC,CAACQ,KAAK,CAAC,QAAQ;YACrBJ,MAAM,CAAC,CAACI,KAAK,CAAC,SAAS;QACzB;QACAD;IACF;AACF"}
1
+ {"version":3,"sources":["../../../src/install/resolveOptions.ts"],"sourcesContent":["import type { 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 /** Should be installed as dev dependencies */\n dev?: boolean;\n /** Should output in JSON format (use with --check) */\n json?: 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 if (options.json && !options.check) {\n throw new CommandError('BAD_ARGS', 'The --json flag can only be used with --check');\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', '--dev', '--fix', '--npm', '--pnpm', '--yarn', '--bun', '--json'],\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 dev: !!flags['--dev'],\n check: !!flags['--check'],\n yarn: !!flags['--yarn'],\n npm: !!flags['--npm'],\n pnpm: !!flags['--pnpm'],\n bun: !!flags['--bun'],\n json: !!flags['--json'],\n }),\n extras,\n };\n}\n"],"names":["resolveArgsAsync","resolveOptions","options","fix","check","CommandError","npm","pnpm","yarn","bun","filter","Boolean","length","json","argv","variadic","extras","flags","parseVariadicArguments","assertUnexpectedVariadicFlags","dev"],"mappings":";;;;+BAiCsBA;;;eAAAA;;;wBA/BO;0BACyC;AAetE,SAASC,eAAeC,OAAgB;IACtC,IAAIA,QAAQC,GAAG,IAAID,QAAQE,KAAK,EAAE;QAChC,MAAM,IAAIC,oBAAY,CAAC,YAAY;IACrC;IACA,IAAI;QAACH,QAAQI,GAAG;QAAEJ,QAAQK,IAAI;QAAEL,QAAQM,IAAI;QAAEN,QAAQO,GAAG;KAAC,CAACC,MAAM,CAACC,SAASC,MAAM,GAAG,GAAG;QACrF,MAAM,IAAIP,oBAAY,CAAC,YAAY;IACrC;IACA,IAAIH,QAAQW,IAAI,IAAI,CAACX,QAAQE,KAAK,EAAE;QAClC,MAAM,IAAIC,oBAAY,CAAC,YAAY;IACrC;IACA,OAAO;QACL,GAAGH,OAAO;IACZ;AACF;AAEO,eAAeF,iBACpBc,IAAc;IAEd,MAAM,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,KAAK,EAAE,GAAGC,IAAAA,gCAAsB,EAACJ;IAE3DK,IAAAA,uCAA6B,EAC3B;QAAC;QAAW;QAAS;QAAS;QAAS;QAAU;QAAU;QAAS;KAAS,EAC7E;QAAEJ;QAAUC;QAAQC;IAAM,GAC1B;IAGF,OAAO;QACL,uFAAuF;QACvFF;QACAb,SAASD,eAAe;YACtBE,KAAK,CAAC,CAACc,KAAK,CAAC,QAAQ;YACrBG,KAAK,CAAC,CAACH,KAAK,CAAC,QAAQ;YACrBb,OAAO,CAAC,CAACa,KAAK,CAAC,UAAU;YACzBT,MAAM,CAAC,CAACS,KAAK,CAAC,SAAS;YACvBX,KAAK,CAAC,CAACW,KAAK,CAAC,QAAQ;YACrBV,MAAM,CAAC,CAACU,KAAK,CAAC,SAAS;YACvBR,KAAK,CAAC,CAACQ,KAAK,CAAC,QAAQ;YACrBJ,MAAM,CAAC,CAACI,KAAK,CAAC,SAAS;QACzB;QACAD;IACF;AACF"}
@@ -5,14 +5,14 @@ Object.defineProperty(exports, "__esModule", {
5
5
  function _export(target, all) {
6
6
  for(var name in all)Object.defineProperty(target, name, {
7
7
  enumerable: true,
8
- get: all[name]
8
+ get: Object.getOwnPropertyDescriptor(all, name).get
9
9
  });
10
10
  }
11
11
  _export(exports, {
12
- autoAddConfigPluginsAsync: function() {
12
+ get autoAddConfigPluginsAsync () {
13
13
  return autoAddConfigPluginsAsync;
14
14
  },
15
- getNamedPlugins: function() {
15
+ get getNamedPlugins () {
16
16
  return getNamedPlugins;
17
17
  }
18
18
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/install/utils/autoAddConfigPlugins.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config';\nimport {\n normalizeStaticPlugin,\n resolveConfigPluginFunctionWithInfo,\n} from '@expo/config-plugins/build/utils/plugin-resolver';\nimport { getAutoPlugins } from '@expo/prebuild-config';\n\nimport { attemptAddingPluginsAsync } from '../../utils/modifyConfigPlugins';\n\nconst debug = require('debug')('expo:install:config-plugins') as typeof console.log;\n\nconst AUTO_PLUGINS = getAutoPlugins();\n\n/**\n * Resolve if a package has a config plugin.\n * For sanity, we'll only support config plugins that use the `app.config.js` entry file,\n * this is because a package like `lodash` could be a \"valid\" config plugin and break the prebuild process.\n *\n * @param projectRoot\n * @param packageName\n * @returns\n */\nfunction packageHasConfigPlugin(projectRoot: string, packageName: string) {\n try {\n const info = resolveConfigPluginFunctionWithInfo(projectRoot, packageName);\n if (info.isPluginFile) {\n return info.plugin;\n }\n } catch {}\n return false;\n}\n\n/**\n * Get a list of plugins that were are supplied as string module IDs.\n * @example\n * ```json\n * {\n * \"plugins\": [\n * \"expo-camera\",\n * [\"react-native-firebase\", ...]\n * ]\n * }\n * ```\n * ↓ ↓ ↓ ↓ ↓ ↓\n *\n * `['expo-camera', 'react-native-firebase']`\n *\n */\nexport function getNamedPlugins(plugins: NonNullable<ExpoConfig['plugins']>): string[] {\n const namedPlugins: string[] = [];\n for (const plugin of plugins) {\n try {\n // @ts-ignore\n const [normal] = normalizeStaticPlugin(plugin);\n if (typeof normal === 'string') {\n namedPlugins.push(normal);\n }\n } catch {\n // ignore assertions\n }\n }\n return namedPlugins;\n}\n\n/** Attempts to ensure that non-auto plugins are added to the `app.json` `plugins` array when modules with Expo Config Plugins are installed. */\nexport async function autoAddConfigPluginsAsync(\n projectRoot: string,\n exp: Pick<ExpoConfig, 'plugins'>,\n packages: string[]\n) {\n debug('Checking config plugins...');\n\n const currentPlugins = exp.plugins || [];\n const normalized = getNamedPlugins(currentPlugins);\n\n debug(`Existing plugins: ${normalized.join(', ')}`);\n\n const plugins = packages.filter((pkg) => {\n if (normalized.includes(pkg)) {\n // already included in plugins array\n return false;\n }\n // Check if the package has a valid plugin. Must be a well-made plugin for it to work with this.\n const plugin = packageHasConfigPlugin(projectRoot, pkg);\n\n debug(`Package \"${pkg}\" has plugin: ${!!plugin}` + (plugin ? ` (args: ${plugin.length})` : ''));\n\n if (AUTO_PLUGINS.includes(pkg)) {\n debug(`Package \"${pkg}\" is an auto plugin, skipping...`);\n return false;\n }\n\n return !!plugin;\n });\n\n await attemptAddingPluginsAsync(projectRoot, plugins);\n}\n"],"names":["autoAddConfigPluginsAsync","getNamedPlugins","debug","require","AUTO_PLUGINS","getAutoPlugins","packageHasConfigPlugin","projectRoot","packageName","info","resolveConfigPluginFunctionWithInfo","isPluginFile","plugin","plugins","namedPlugins","normal","normalizeStaticPlugin","push","exp","packages","currentPlugins","normalized","join","filter","pkg","includes","length","attemptAddingPluginsAsync"],"mappings":";;;;;;;;;;;IAiEsBA,yBAAyB;eAAzBA;;IAjBNC,eAAe;eAAfA;;;;yBA5CT;;;;;;;yBACwB;;;;;;qCAEW;AAE1C,MAAMC,QAAQC,QAAQ,SAAS;AAE/B,MAAMC,eAAeC,IAAAA,gCAAc;AAEnC;;;;;;;;CAQC,GACD,SAASC,uBAAuBC,WAAmB,EAAEC,WAAmB;IACtE,IAAI;QACF,MAAMC,OAAOC,IAAAA,qDAAmC,EAACH,aAAaC;QAC9D,IAAIC,KAAKE,YAAY,EAAE;YACrB,OAAOF,KAAKG,MAAM;QACpB;IACF,EAAE,OAAM,CAAC;IACT,OAAO;AACT;AAkBO,SAASX,gBAAgBY,OAA2C;IACzE,MAAMC,eAAyB,EAAE;IACjC,KAAK,MAAMF,UAAUC,QAAS;QAC5B,IAAI;YACF,aAAa;YACb,MAAM,CAACE,OAAO,GAAGC,IAAAA,uCAAqB,EAACJ;YACvC,IAAI,OAAOG,WAAW,UAAU;gBAC9BD,aAAaG,IAAI,CAACF;YACpB;QACF,EAAE,OAAM;QACN,oBAAoB;QACtB;IACF;IACA,OAAOD;AACT;AAGO,eAAed,0BACpBO,WAAmB,EACnBW,GAAgC,EAChCC,QAAkB;IAElBjB,MAAM;IAEN,MAAMkB,iBAAiBF,IAAIL,OAAO,IAAI,EAAE;IACxC,MAAMQ,aAAapB,gBAAgBmB;IAEnClB,MAAM,CAAC,kBAAkB,EAAEmB,WAAWC,IAAI,CAAC,OAAO;IAElD,MAAMT,UAAUM,SAASI,MAAM,CAAC,CAACC;QAC/B,IAAIH,WAAWI,QAAQ,CAACD,MAAM;YAC5B,oCAAoC;YACpC,OAAO;QACT;QACA,gGAAgG;QAChG,MAAMZ,SAASN,uBAAuBC,aAAaiB;QAEnDtB,MAAM,CAAC,SAAS,EAAEsB,IAAI,cAAc,EAAE,CAAC,CAACZ,QAAQ,GAAIA,CAAAA,SAAS,CAAC,QAAQ,EAAEA,OAAOc,MAAM,CAAC,CAAC,CAAC,GAAG,EAAC;QAE5F,IAAItB,aAAaqB,QAAQ,CAACD,MAAM;YAC9BtB,MAAM,CAAC,SAAS,EAAEsB,IAAI,gCAAgC,CAAC;YACvD,OAAO;QACT;QAEA,OAAO,CAAC,CAACZ;IACX;IAEA,MAAMe,IAAAA,8CAAyB,EAACpB,aAAaM;AAC/C"}
1
+ {"version":3,"sources":["../../../../src/install/utils/autoAddConfigPlugins.ts"],"sourcesContent":["import type { ExpoConfig } from '@expo/config';\nimport {\n normalizeStaticPlugin,\n resolveConfigPluginFunctionWithInfo,\n} from '@expo/config-plugins/build/utils/plugin-resolver';\nimport { getAutoPlugins } from '@expo/prebuild-config';\n\nimport { attemptAddingPluginsAsync } from '../../utils/modifyConfigPlugins';\n\nconst debug = require('debug')('expo:install:config-plugins') as typeof console.log;\n\nconst AUTO_PLUGINS = getAutoPlugins();\n\n/**\n * Resolve if a package has a config plugin.\n * For sanity, we'll only support config plugins that use the `app.config.js` entry file,\n * this is because a package like `lodash` could be a \"valid\" config plugin and break the prebuild process.\n *\n * @param projectRoot\n * @param packageName\n * @returns\n */\nfunction packageHasConfigPlugin(projectRoot: string, packageName: string) {\n try {\n const info = resolveConfigPluginFunctionWithInfo(projectRoot, packageName);\n if (info.isPluginFile) {\n return info.plugin;\n }\n } catch {}\n return false;\n}\n\n/**\n * Get a list of plugins that were are supplied as string module IDs.\n * @example\n * ```json\n * {\n * \"plugins\": [\n * \"expo-camera\",\n * [\"react-native-firebase\", ...]\n * ]\n * }\n * ```\n * ↓ ↓ ↓ ↓ ↓ ↓\n *\n * `['expo-camera', 'react-native-firebase']`\n *\n */\nexport function getNamedPlugins(plugins: NonNullable<ExpoConfig['plugins']>): string[] {\n const namedPlugins: string[] = [];\n for (const plugin of plugins) {\n try {\n // @ts-ignore\n const [normal] = normalizeStaticPlugin(plugin);\n if (typeof normal === 'string') {\n namedPlugins.push(normal);\n }\n } catch {\n // ignore assertions\n }\n }\n return namedPlugins;\n}\n\n/** Attempts to ensure that non-auto plugins are added to the `app.json` `plugins` array when modules with Expo Config Plugins are installed. */\nexport async function autoAddConfigPluginsAsync(\n projectRoot: string,\n exp: Pick<ExpoConfig, 'plugins'>,\n packages: string[]\n) {\n debug('Checking config plugins...');\n\n const currentPlugins = exp.plugins || [];\n const normalized = getNamedPlugins(currentPlugins);\n\n debug(`Existing plugins: ${normalized.join(', ')}`);\n\n const plugins = packages.filter((pkg) => {\n if (normalized.includes(pkg)) {\n // already included in plugins array\n return false;\n }\n // Check if the package has a valid plugin. Must be a well-made plugin for it to work with this.\n const plugin = packageHasConfigPlugin(projectRoot, pkg);\n\n debug(`Package \"${pkg}\" has plugin: ${!!plugin}` + (plugin ? ` (args: ${plugin.length})` : ''));\n\n if (AUTO_PLUGINS.includes(pkg)) {\n debug(`Package \"${pkg}\" is an auto plugin, skipping...`);\n return false;\n }\n\n return !!plugin;\n });\n\n await attemptAddingPluginsAsync(projectRoot, plugins);\n}\n"],"names":["autoAddConfigPluginsAsync","getNamedPlugins","debug","require","AUTO_PLUGINS","getAutoPlugins","packageHasConfigPlugin","projectRoot","packageName","info","resolveConfigPluginFunctionWithInfo","isPluginFile","plugin","plugins","namedPlugins","normal","normalizeStaticPlugin","push","exp","packages","currentPlugins","normalized","join","filter","pkg","includes","length","attemptAddingPluginsAsync"],"mappings":";;;;;;;;;;;QAiEsBA;eAAAA;;QAjBNC;eAAAA;;;;yBA5CT;;;;;;;yBACwB;;;;;;qCAEW;AAE1C,MAAMC,QAAQC,QAAQ,SAAS;AAE/B,MAAMC,eAAeC,IAAAA,gCAAc;AAEnC;;;;;;;;CAQC,GACD,SAASC,uBAAuBC,WAAmB,EAAEC,WAAmB;IACtE,IAAI;QACF,MAAMC,OAAOC,IAAAA,qDAAmC,EAACH,aAAaC;QAC9D,IAAIC,KAAKE,YAAY,EAAE;YACrB,OAAOF,KAAKG,MAAM;QACpB;IACF,EAAE,OAAM,CAAC;IACT,OAAO;AACT;AAkBO,SAASX,gBAAgBY,OAA2C;IACzE,MAAMC,eAAyB,EAAE;IACjC,KAAK,MAAMF,UAAUC,QAAS;QAC5B,IAAI;YACF,aAAa;YACb,MAAM,CAACE,OAAO,GAAGC,IAAAA,uCAAqB,EAACJ;YACvC,IAAI,OAAOG,WAAW,UAAU;gBAC9BD,aAAaG,IAAI,CAACF;YACpB;QACF,EAAE,OAAM;QACN,oBAAoB;QACtB;IACF;IACA,OAAOD;AACT;AAGO,eAAed,0BACpBO,WAAmB,EACnBW,GAAgC,EAChCC,QAAkB;IAElBjB,MAAM;IAEN,MAAMkB,iBAAiBF,IAAIL,OAAO,IAAI,EAAE;IACxC,MAAMQ,aAAapB,gBAAgBmB;IAEnClB,MAAM,CAAC,kBAAkB,EAAEmB,WAAWC,IAAI,CAAC,OAAO;IAElD,MAAMT,UAAUM,SAASI,MAAM,CAAC,CAACC;QAC/B,IAAIH,WAAWI,QAAQ,CAACD,MAAM;YAC5B,oCAAoC;YACpC,OAAO;QACT;QACA,gGAAgG;QAChG,MAAMZ,SAASN,uBAAuBC,aAAaiB;QAEnDtB,MAAM,CAAC,SAAS,EAAEsB,IAAI,cAAc,EAAE,CAAC,CAACZ,QAAQ,GAAIA,CAAAA,SAAS,CAAC,QAAQ,EAAEA,OAAOc,MAAM,CAAC,CAAC,CAAC,GAAG,EAAC;QAE5F,IAAItB,aAAaqB,QAAQ,CAACD,MAAM;YAC9BtB,MAAM,CAAC,SAAS,EAAEsB,IAAI,gCAAgC,CAAC;YACvD,OAAO;QACT;QAEA,OAAO,CAAC,CAACZ;IACX;IAEA,MAAMe,IAAAA,8CAAyB,EAACpB,aAAaM;AAC/C"}
@@ -1,11 +1,19 @@
1
- // note(Simek): https://github.com/react-native-community/directory/blob/main/pages/api/libraries/check.ts
1
+ // note(Simek): reference https://github.com/react-native-community/directory/blob/main/pages/api/libraries/check.ts
2
2
  "use strict";
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- Object.defineProperty(exports, "checkPackagesCompatibility", {
7
- enumerable: true,
8
- get: function() {
6
+ function _export(target, all) {
7
+ for(var name in all)Object.defineProperty(target, name, {
8
+ enumerable: true,
9
+ get: Object.getOwnPropertyDescriptor(all, name).get
10
+ });
11
+ }
12
+ _export(exports, {
13
+ get MAX_PACKAGES_PER_QUERY () {
14
+ return MAX_PACKAGES_PER_QUERY;
15
+ },
16
+ get checkPackagesCompatibility () {
9
17
  return checkPackagesCompatibility;
10
18
  }
11
19
  });
@@ -17,6 +25,7 @@ function _chalk() {
17
25
  return data;
18
26
  }
19
27
  const _log = require("../../log");
28
+ const _array = require("../../utils/array");
20
29
  const _fetch = require("../../utils/fetch");
21
30
  const _link = require("../../utils/link");
22
31
  function _interop_require_default(obj) {
@@ -24,6 +33,7 @@ function _interop_require_default(obj) {
24
33
  default: obj
25
34
  };
26
35
  }
36
+ const MAX_PACKAGES_PER_QUERY = 50;
27
37
  const ERROR_MESSAGE = 'Unable to fetch compatibility data from React Native Directory. Skipping check.';
28
38
  async function checkPackagesCompatibility(packages) {
29
39
  try {
@@ -31,19 +41,25 @@ async function checkPackagesCompatibility(packages) {
31
41
  if (!packagesToCheck.length) {
32
42
  return;
33
43
  }
34
- const response = await (0, _fetch.fetch)('https://reactnative.directory/api/libraries/check', {
35
- method: 'POST',
36
- headers: {
37
- 'Content-Type': 'application/json'
38
- },
39
- body: JSON.stringify({
40
- packages: packagesToCheck
41
- })
42
- });
43
- if (!response.ok) {
44
+ const chunkedPackages = (0, _array.chunk)(packagesToCheck, MAX_PACKAGES_PER_QUERY);
45
+ const results = await Promise.allSettled(chunkedPackages.map((packageChunk)=>(0, _fetch.fetch)(`https://reactnative.directory/api/libraries/check?${new URLSearchParams({
46
+ packages: packageChunk.join(',')
47
+ })}`).then((response)=>{
48
+ if (!response.ok) {
49
+ throw new Error(ERROR_MESSAGE);
50
+ }
51
+ return response.json();
52
+ })));
53
+ const packageMetadata = results.reduce((acc, result)=>{
54
+ if (result.status === 'fulfilled') {
55
+ return {
56
+ ...acc,
57
+ ...result.value
58
+ };
59
+ }
44
60
  _log.Log.log(_chalk().default.gray(ERROR_MESSAGE));
45
- }
46
- const packageMetadata = await response.json();
61
+ return acc;
62
+ }, {});
47
63
  const incompatiblePackages = packagesToCheck.filter((packageName)=>{
48
64
  var _packageMetadata_packageName;
49
65
  return ((_packageMetadata_packageName = packageMetadata[packageName]) == null ? void 0 : _packageMetadata_packageName.newArchitecture) === 'unsupported';