@expo/cli 0.17.9 → 0.18.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 (570) hide show
  1. package/build/bin/cli +11 -7
  2. package/build/bin/cli.map +1 -1
  3. package/build/src/api/getExpoSchema.js +23 -5
  4. package/build/src/api/getExpoSchema.js.map +1 -1
  5. package/build/src/api/graphql/client.js +28 -10
  6. package/build/src/api/graphql/client.js.map +1 -1
  7. package/build/src/api/graphql/queries/AppQuery.js +16 -4
  8. package/build/src/api/graphql/queries/AppQuery.js.map +1 -1
  9. package/build/src/api/graphql/queries/UserQuery.js +8 -2
  10. package/build/src/api/graphql/queries/UserQuery.js.map +1 -1
  11. package/build/src/api/graphql/types/App.js +8 -2
  12. package/build/src/api/graphql/types/App.js.map +1 -1
  13. package/build/src/api/rest/cache/FileSystemCache.js +21 -9
  14. package/build/src/api/rest/cache/FileSystemCache.js.map +1 -1
  15. package/build/src/api/rest/cache/response.js +9 -3
  16. package/build/src/api/rest/cache/response.js.map +1 -1
  17. package/build/src/api/rest/cache/wrapFetchWithCache.js +32 -8
  18. package/build/src/api/rest/cache/wrapFetchWithCache.js.map +1 -1
  19. package/build/src/api/rest/client.js +23 -5
  20. package/build/src/api/rest/client.js.map +1 -1
  21. package/build/src/api/rest/wrapFetchWithBaseUrl.js +9 -4
  22. package/build/src/api/rest/wrapFetchWithBaseUrl.js.map +1 -1
  23. package/build/src/api/rest/wrapFetchWithProxy.js +8 -2
  24. package/build/src/api/rest/wrapFetchWithProxy.js.map +1 -1
  25. package/build/src/api/settings.js +8 -2
  26. package/build/src/api/settings.js.map +1 -1
  27. package/build/src/api/updateDevelopmentSession.js +18 -6
  28. package/build/src/api/updateDevelopmentSession.js.map +1 -1
  29. package/build/src/api/user/UserSettings.js +26 -8
  30. package/build/src/api/user/UserSettings.js.map +1 -1
  31. package/build/src/api/user/actions.js +17 -5
  32. package/build/src/api/user/actions.js.map +1 -1
  33. package/build/src/api/user/expoSsoLauncher.js +32 -8
  34. package/build/src/api/user/expoSsoLauncher.js.map +1 -1
  35. package/build/src/api/user/otp.js +17 -5
  36. package/build/src/api/user/otp.js.map +1 -1
  37. package/build/src/api/user/user.js +19 -12
  38. package/build/src/api/user/user.js.map +1 -1
  39. package/build/src/config/configAsync.js +25 -7
  40. package/build/src/config/configAsync.js.map +1 -1
  41. package/build/src/config/index.js +9 -3
  42. package/build/src/config/index.js.map +1 -1
  43. package/build/src/customize/customizeAsync.js +8 -2
  44. package/build/src/customize/customizeAsync.js.map +1 -1
  45. package/build/src/customize/generate.js +16 -4
  46. package/build/src/customize/generate.js.map +1 -1
  47. package/build/src/customize/index.js +10 -4
  48. package/build/src/customize/index.js.map +1 -1
  49. package/build/src/customize/templates.js +33 -9
  50. package/build/src/customize/templates.js.map +1 -1
  51. package/build/src/customize/typescript.js +8 -2
  52. package/build/src/customize/typescript.js.map +1 -1
  53. package/build/src/export/createMetadataJson.js +8 -2
  54. package/build/src/export/createMetadataJson.js.map +1 -1
  55. package/build/src/export/embed/exportEmbedAsync.js +58 -18
  56. package/build/src/export/embed/exportEmbedAsync.js.map +1 -1
  57. package/build/src/export/embed/index.js +17 -5
  58. package/build/src/export/embed/index.js.map +1 -1
  59. package/build/src/export/embed/resolveOptions.js +8 -2
  60. package/build/src/export/embed/resolveOptions.js.map +1 -1
  61. package/build/src/export/embed/xcodeCompilerLogger.js +16 -4
  62. package/build/src/export/embed/xcodeCompilerLogger.js.map +1 -1
  63. package/build/src/export/exportApp.js +32 -12
  64. package/build/src/export/exportApp.js.map +1 -1
  65. package/build/src/export/exportAssets.js +27 -9
  66. package/build/src/export/exportAssets.js.map +1 -1
  67. package/build/src/export/exportAsync.js +10 -2
  68. package/build/src/export/exportAsync.js.map +1 -1
  69. package/build/src/export/exportHermes.js +29 -17
  70. package/build/src/export/exportHermes.js.map +1 -1
  71. package/build/src/export/exportStaticAsync.js +69 -37
  72. package/build/src/export/exportStaticAsync.js.map +1 -1
  73. package/build/src/export/favicon.js +33 -9
  74. package/build/src/export/favicon.js.map +1 -1
  75. package/build/src/export/fork-bundleAsync.js +61 -16
  76. package/build/src/export/fork-bundleAsync.js.map +1 -1
  77. package/build/src/export/getPublicExpoManifest.js +8 -2
  78. package/build/src/export/getPublicExpoManifest.js.map +1 -1
  79. package/build/src/export/getResolvedLocales.js +15 -3
  80. package/build/src/export/getResolvedLocales.js.map +1 -1
  81. package/build/src/export/index.js +11 -5
  82. package/build/src/export/index.js.map +1 -1
  83. package/build/src/export/metroAssetLocalPath.js +9 -3
  84. package/build/src/export/metroAssetLocalPath.js.map +1 -1
  85. package/build/src/export/persistMetroAssets.js +27 -15
  86. package/build/src/export/persistMetroAssets.js.map +1 -1
  87. package/build/src/export/publicFolder.js +18 -6
  88. package/build/src/export/publicFolder.js.map +1 -1
  89. package/build/src/export/resolveOptions.js +8 -2
  90. package/build/src/export/resolveOptions.js.map +1 -1
  91. package/build/src/export/saveAssets.js +43 -19
  92. package/build/src/export/saveAssets.js.map +1 -1
  93. package/build/src/export/web/exportWebAsync.js +16 -4
  94. package/build/src/export/web/exportWebAsync.js.map +1 -1
  95. package/build/src/export/web/index.js +9 -3
  96. package/build/src/export/web/index.js.map +1 -1
  97. package/build/src/install/applyPlugins.js +8 -2
  98. package/build/src/install/applyPlugins.js.map +1 -1
  99. package/build/src/install/checkPackages.js +18 -6
  100. package/build/src/install/checkPackages.js.map +1 -1
  101. package/build/src/install/fixPackages.js +8 -2
  102. package/build/src/install/fixPackages.js.map +1 -1
  103. package/build/src/install/index.js +14 -8
  104. package/build/src/install/index.js.map +1 -1
  105. package/build/src/install/installAsync.js +27 -9
  106. package/build/src/install/installAsync.js.map +1 -1
  107. package/build/src/install/installExpoPackage.js +17 -5
  108. package/build/src/install/installExpoPackage.js.map +1 -1
  109. package/build/src/install/utils/autoAddConfigPlugins.js +17 -5
  110. package/build/src/install/utils/autoAddConfigPlugins.js.map +1 -1
  111. package/build/src/log.js +9 -3
  112. package/build/src/log.js.map +1 -1
  113. package/build/src/prebuild/clearNativeFolder.js +37 -13
  114. package/build/src/prebuild/clearNativeFolder.js.map +1 -1
  115. package/build/src/prebuild/configureProjectAsync.js +16 -4
  116. package/build/src/prebuild/configureProjectAsync.js.map +1 -1
  117. package/build/src/prebuild/copyTemplateFiles.js +29 -11
  118. package/build/src/prebuild/copyTemplateFiles.js.map +1 -1
  119. package/build/src/prebuild/ensureConfigAsync.js +24 -6
  120. package/build/src/prebuild/ensureConfigAsync.js.map +1 -1
  121. package/build/src/prebuild/index.js +14 -8
  122. package/build/src/prebuild/index.js.map +1 -1
  123. package/build/src/prebuild/prebuildAsync.js +9 -3
  124. package/build/src/prebuild/prebuildAsync.js.map +1 -1
  125. package/build/src/prebuild/renameTemplateAppName.js +119 -0
  126. package/build/src/prebuild/renameTemplateAppName.js.map +1 -0
  127. package/build/src/prebuild/resolveOptions.js +32 -8
  128. package/build/src/prebuild/resolveOptions.js.map +1 -1
  129. package/build/src/prebuild/resolveTemplate.js +44 -14
  130. package/build/src/prebuild/resolveTemplate.js.map +1 -1
  131. package/build/src/prebuild/updateFromTemplate.js +18 -2
  132. package/build/src/prebuild/updateFromTemplate.js.map +1 -1
  133. package/build/src/prebuild/updatePackageJson.js +49 -13
  134. package/build/src/prebuild/updatePackageJson.js.map +1 -1
  135. package/build/src/prebuild/validateTemplatePlatforms.js +16 -4
  136. package/build/src/prebuild/validateTemplatePlatforms.js.map +1 -1
  137. package/build/src/run/android/index.js +20 -4
  138. package/build/src/run/android/index.js.map +1 -1
  139. package/build/src/run/android/resolveGradlePropsAsync.js +55 -0
  140. package/build/src/run/android/resolveGradlePropsAsync.js.map +1 -0
  141. package/build/src/run/android/resolveInstallApkName.js +18 -6
  142. package/build/src/run/android/resolveInstallApkName.js.map +1 -1
  143. package/build/src/run/android/resolveLaunchProps.js +10 -4
  144. package/build/src/run/android/resolveLaunchProps.js.map +1 -1
  145. package/build/src/run/android/resolveOptions.js +5 -3
  146. package/build/src/run/android/resolveOptions.js.map +1 -1
  147. package/build/src/run/android/runAndroidAsync.js +13 -4
  148. package/build/src/run/android/runAndroidAsync.js.map +1 -1
  149. package/build/src/run/ensureNativeProject.js +15 -3
  150. package/build/src/run/ensureNativeProject.js.map +1 -1
  151. package/build/src/run/hints.js +10 -4
  152. package/build/src/run/hints.js.map +1 -1
  153. package/build/src/run/index.js +8 -2
  154. package/build/src/run/index.js.map +1 -1
  155. package/build/src/run/ios/XcodeBuild.js +57 -21
  156. package/build/src/run/ios/XcodeBuild.js.map +1 -1
  157. package/build/src/run/ios/appleDevice/AppleDevice.js +25 -7
  158. package/build/src/run/ios/appleDevice/AppleDevice.js.map +1 -1
  159. package/build/src/run/ios/appleDevice/ClientManager.js +10 -4
  160. package/build/src/run/ios/appleDevice/ClientManager.js.map +1 -1
  161. package/build/src/run/ios/appleDevice/client/AFCClient.js +34 -10
  162. package/build/src/run/ios/appleDevice/client/AFCClient.js.map +1 -1
  163. package/build/src/run/ios/appleDevice/client/DebugserverClient.js +16 -4
  164. package/build/src/run/ios/appleDevice/client/DebugserverClient.js.map +1 -1
  165. package/build/src/run/ios/appleDevice/client/InstallationProxyClient.js +8 -2
  166. package/build/src/run/ios/appleDevice/client/InstallationProxyClient.js.map +1 -1
  167. package/build/src/run/ios/appleDevice/client/LockdowndClient.js +17 -5
  168. package/build/src/run/ios/appleDevice/client/LockdowndClient.js.map +1 -1
  169. package/build/src/run/ios/appleDevice/client/MobileImageMounterClient.js +17 -5
  170. package/build/src/run/ios/appleDevice/client/MobileImageMounterClient.js.map +1 -1
  171. package/build/src/run/ios/appleDevice/client/UsbmuxdClient.js +25 -7
  172. package/build/src/run/ios/appleDevice/client/UsbmuxdClient.js.map +1 -1
  173. package/build/src/run/ios/appleDevice/installOnDeviceAsync.js +24 -6
  174. package/build/src/run/ios/appleDevice/installOnDeviceAsync.js.map +1 -1
  175. package/build/src/run/ios/appleDevice/protocol/AFCProtocol.js +8 -2
  176. package/build/src/run/ios/appleDevice/protocol/AFCProtocol.js.map +1 -1
  177. package/build/src/run/ios/appleDevice/protocol/AbstractProtocol.js +16 -4
  178. package/build/src/run/ios/appleDevice/protocol/AbstractProtocol.js.map +1 -1
  179. package/build/src/run/ios/appleDevice/protocol/GDBProtocol.js +8 -2
  180. package/build/src/run/ios/appleDevice/protocol/GDBProtocol.js.map +1 -1
  181. package/build/src/run/ios/appleDevice/protocol/LockdownProtocol.js +16 -4
  182. package/build/src/run/ios/appleDevice/protocol/LockdownProtocol.js.map +1 -1
  183. package/build/src/run/ios/appleDevice/protocol/UsbmuxProtocol.js +16 -4
  184. package/build/src/run/ios/appleDevice/protocol/UsbmuxProtocol.js.map +1 -1
  185. package/build/src/run/ios/codeSigning/Security.js +17 -5
  186. package/build/src/run/ios/codeSigning/Security.js.map +1 -1
  187. package/build/src/run/ios/codeSigning/configureCodeSigning.js +8 -2
  188. package/build/src/run/ios/codeSigning/configureCodeSigning.js.map +1 -1
  189. package/build/src/run/ios/codeSigning/resolveCertificateSigningIdentity.js +9 -3
  190. package/build/src/run/ios/codeSigning/resolveCertificateSigningIdentity.js.map +1 -1
  191. package/build/src/run/ios/codeSigning/simulatorCodeSigning.js +25 -7
  192. package/build/src/run/ios/codeSigning/simulatorCodeSigning.js.map +1 -1
  193. package/build/src/run/ios/codeSigning/xcodeCodeSigning.js +22 -10
  194. package/build/src/run/ios/codeSigning/xcodeCodeSigning.js.map +1 -1
  195. package/build/src/run/ios/index.js +19 -7
  196. package/build/src/run/ios/index.js.map +1 -1
  197. package/build/src/run/ios/launchApp.js +17 -5
  198. package/build/src/run/ios/launchApp.js.map +1 -1
  199. package/build/src/run/ios/options/promptDevice.js +9 -3
  200. package/build/src/run/ios/options/promptDevice.js.map +1 -1
  201. package/build/src/run/ios/options/resolveDevice.js +1 -2
  202. package/build/src/run/ios/options/resolveDevice.js.map +1 -1
  203. package/build/src/run/ios/options/resolveNativeScheme.js +27 -9
  204. package/build/src/run/ios/options/resolveNativeScheme.js.map +1 -1
  205. package/build/src/run/ios/options/resolveXcodeProject.js +8 -2
  206. package/build/src/run/ios/options/resolveXcodeProject.js.map +1 -1
  207. package/build/src/run/ios/runIosAsync.js +10 -2
  208. package/build/src/run/ios/runIosAsync.js.map +1 -1
  209. package/build/src/run/startBundler.js +16 -4
  210. package/build/src/run/startBundler.js.map +1 -1
  211. package/build/src/start/detectDevClient.js +29 -0
  212. package/build/src/start/detectDevClient.js.map +1 -0
  213. package/build/src/start/doctor/SecurityBinPrerequisite.js +8 -2
  214. package/build/src/start/doctor/SecurityBinPrerequisite.js.map +1 -1
  215. package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js +16 -4
  216. package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js.map +1 -1
  217. package/build/src/start/doctor/apple/XcodeDeveloperDiskImagePrerequisite.js +16 -4
  218. package/build/src/start/doctor/apple/XcodeDeveloperDiskImagePrerequisite.js.map +1 -1
  219. package/build/src/start/doctor/apple/XcodePrerequisite.js +79 -29
  220. package/build/src/start/doctor/apple/XcodePrerequisite.js.map +1 -1
  221. package/build/src/start/doctor/apple/XcrunPrerequisite.js +24 -6
  222. package/build/src/start/doctor/apple/XcrunPrerequisite.js.map +1 -1
  223. package/build/src/start/doctor/dependencies/bundledNativeModules.js +25 -7
  224. package/build/src/start/doctor/dependencies/bundledNativeModules.js.map +1 -1
  225. package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js +27 -9
  226. package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js.map +1 -1
  227. package/build/src/start/doctor/dependencies/getMissingPackages.js +24 -6
  228. package/build/src/start/doctor/dependencies/getMissingPackages.js.map +1 -1
  229. package/build/src/start/doctor/dependencies/getVersionedPackages.js +8 -2
  230. package/build/src/start/doctor/dependencies/getVersionedPackages.js.map +1 -1
  231. package/build/src/start/doctor/dependencies/resolvePackages.js +25 -7
  232. package/build/src/start/doctor/dependencies/resolvePackages.js.map +1 -1
  233. package/build/src/start/doctor/dependencies/validateDependenciesVersions.js +32 -21
  234. package/build/src/start/doctor/dependencies/validateDependenciesVersions.js.map +1 -1
  235. package/build/src/start/doctor/ngrok/ExternalModule.js +33 -9
  236. package/build/src/start/doctor/ngrok/ExternalModule.js.map +1 -1
  237. package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js +18 -6
  238. package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js.map +1 -1
  239. package/build/src/start/doctor/typescript/updateTSConfig.js +29 -11
  240. package/build/src/start/doctor/typescript/updateTSConfig.js.map +1 -1
  241. package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js +18 -6
  242. package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js.map +1 -1
  243. package/build/src/start/index.js +17 -11
  244. package/build/src/start/index.js.map +1 -1
  245. package/build/src/start/interface/commandsTable.js +27 -9
  246. package/build/src/start/interface/commandsTable.js.map +1 -1
  247. package/build/src/start/interface/interactiveActions.js +17 -11
  248. package/build/src/start/interface/interactiveActions.js.map +1 -1
  249. package/build/src/start/interface/startInterface.js +8 -2
  250. package/build/src/start/interface/startInterface.js.map +1 -1
  251. package/build/src/start/platforms/AppIdResolver.js +9 -3
  252. package/build/src/start/platforms/AppIdResolver.js.map +1 -1
  253. package/build/src/start/platforms/DeviceManager.js +8 -2
  254. package/build/src/start/platforms/DeviceManager.js.map +1 -1
  255. package/build/src/start/platforms/ExpoGoInstaller.js +30 -14
  256. package/build/src/start/platforms/ExpoGoInstaller.js.map +1 -1
  257. package/build/src/start/platforms/PlatformManager.js +33 -13
  258. package/build/src/start/platforms/PlatformManager.js.map +1 -1
  259. package/build/src/start/platforms/android/ADBServer.js +17 -5
  260. package/build/src/start/platforms/android/ADBServer.js.map +1 -1
  261. package/build/src/start/platforms/android/AndroidAppIdResolver.js +13 -7
  262. package/build/src/start/platforms/android/AndroidAppIdResolver.js.map +1 -1
  263. package/build/src/start/platforms/android/AndroidDeviceManager.js +19 -7
  264. package/build/src/start/platforms/android/AndroidDeviceManager.js.map +1 -1
  265. package/build/src/start/platforms/android/AndroidSdk.js +34 -10
  266. package/build/src/start/platforms/android/AndroidSdk.js.map +1 -1
  267. package/build/src/start/platforms/android/activateWindow.js +16 -4
  268. package/build/src/start/platforms/android/activateWindow.js.map +1 -1
  269. package/build/src/start/platforms/android/adb.js +21 -4
  270. package/build/src/start/platforms/android/adb.js.map +1 -1
  271. package/build/src/start/platforms/android/emulator.js +32 -8
  272. package/build/src/start/platforms/android/emulator.js.map +1 -1
  273. package/build/src/start/platforms/android/gradle.js +23 -6
  274. package/build/src/start/platforms/android/gradle.js.map +1 -1
  275. package/build/src/start/platforms/android/promptAndroidDevice.js +10 -4
  276. package/build/src/start/platforms/android/promptAndroidDevice.js.map +1 -1
  277. package/build/src/start/platforms/ios/AppleAppIdResolver.js +26 -8
  278. package/build/src/start/platforms/ios/AppleAppIdResolver.js.map +1 -1
  279. package/build/src/start/platforms/ios/AppleDeviceManager.js +50 -18
  280. package/build/src/start/platforms/ios/AppleDeviceManager.js.map +1 -1
  281. package/build/src/start/platforms/ios/assertSystemRequirements.js +4 -3
  282. package/build/src/start/platforms/ios/assertSystemRequirements.js.map +1 -1
  283. package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js +16 -4
  284. package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js.map +1 -1
  285. package/build/src/start/platforms/ios/getBestSimulator.js +8 -2
  286. package/build/src/start/platforms/ios/getBestSimulator.js.map +1 -1
  287. package/build/src/start/platforms/ios/promptAppleDevice.js +9 -3
  288. package/build/src/start/platforms/ios/promptAppleDevice.js.map +1 -1
  289. package/build/src/start/platforms/ios/simctl.js +12 -6
  290. package/build/src/start/platforms/ios/simctl.js.map +1 -1
  291. package/build/src/start/platforms/ios/simctlLogging.js +40 -10
  292. package/build/src/start/platforms/ios/simctlLogging.js.map +1 -1
  293. package/build/src/start/platforms/ios/xcrun.js +16 -4
  294. package/build/src/start/platforms/ios/xcrun.js.map +1 -1
  295. package/build/src/start/project/dotExpo.js +27 -9
  296. package/build/src/start/project/dotExpo.js.map +1 -1
  297. package/build/src/start/resolveOptions.js +33 -15
  298. package/build/src/start/resolveOptions.js.map +1 -1
  299. package/build/src/start/server/AsyncNgrok.js +34 -10
  300. package/build/src/start/server/AsyncNgrok.js.map +1 -1
  301. package/build/src/start/server/BundlerDevServer.js +16 -4
  302. package/build/src/start/server/BundlerDevServer.js.map +1 -1
  303. package/build/src/start/server/DevServerManager.js +28 -10
  304. package/build/src/start/server/DevServerManager.js.map +1 -1
  305. package/build/src/start/server/DevToolsPluginManager.js +16 -4
  306. package/build/src/start/server/DevToolsPluginManager.js.map +1 -1
  307. package/build/src/start/server/DevelopmentSession.js +9 -3
  308. package/build/src/start/server/DevelopmentSession.js.map +1 -1
  309. package/build/src/start/server/ReactDevToolsProxy.js +26 -8
  310. package/build/src/start/server/ReactDevToolsProxy.js.map +1 -1
  311. package/build/src/start/server/UrlCreator.js +19 -6
  312. package/build/src/start/server/UrlCreator.js.map +1 -1
  313. package/build/src/start/server/getStaticRenderFunctions.js +91 -55
  314. package/build/src/start/server/getStaticRenderFunctions.js.map +1 -1
  315. package/build/src/start/server/metro/MetroBundlerDevServer.js +231 -83
  316. package/build/src/start/server/metro/MetroBundlerDevServer.js.map +1 -1
  317. package/build/src/start/server/metro/MetroTerminalReporter.js +30 -15
  318. package/build/src/start/server/metro/MetroTerminalReporter.js.map +1 -1
  319. package/build/src/start/server/metro/TerminalReporter.js +26 -8
  320. package/build/src/start/server/metro/TerminalReporter.js.map +1 -1
  321. package/build/src/start/server/metro/TerminalReporter.types.js.map +1 -1
  322. package/build/src/start/server/metro/createExpoMetroResolver.js +56 -20
  323. package/build/src/start/server/metro/createExpoMetroResolver.js.map +1 -1
  324. package/build/src/start/server/metro/createJResolver.js +90 -45
  325. package/build/src/start/server/metro/createJResolver.js.map +1 -1
  326. package/build/src/start/server/metro/createServerRouteMiddleware.js +29 -28
  327. package/build/src/start/server/metro/createServerRouteMiddleware.js.map +1 -1
  328. package/build/src/start/server/metro/debugging/MessageHandler.js +27 -0
  329. package/build/src/start/server/metro/debugging/MessageHandler.js.map +1 -0
  330. package/build/src/start/server/metro/debugging/createDebugMiddleware.js +11 -8
  331. package/build/src/start/server/metro/debugging/createDebugMiddleware.js.map +1 -1
  332. package/build/src/start/server/metro/debugging/createHandlersFactory.js +63 -0
  333. package/build/src/start/server/metro/debugging/createHandlersFactory.js.map +1 -0
  334. package/build/src/start/server/metro/debugging/{inspectorHandlers/utils.js → getDebuggerType.js} +1 -6
  335. package/build/src/start/server/metro/debugging/getDebuggerType.js.map +1 -0
  336. package/build/src/start/server/metro/debugging/{inspectorHandlers → messageHandlers}/NetworkResponse.js +8 -5
  337. package/build/src/start/server/metro/debugging/messageHandlers/NetworkResponse.js.map +1 -0
  338. package/build/src/start/server/metro/debugging/{inspectorHandlers → messageHandlers}/PageReload.js +7 -6
  339. package/build/src/start/server/metro/debugging/messageHandlers/PageReload.js.map +1 -0
  340. package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerGetPossibleBreakpoints.js +25 -0
  341. package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerGetPossibleBreakpoints.js.map +1 -0
  342. package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerSetBreakpointByUrl.js +22 -0
  343. package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerSetBreakpointByUrl.js.map +1 -0
  344. package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeCallFunctionOn.js +28 -0
  345. package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeCallFunctionOn.js.map +1 -0
  346. package/build/src/start/server/metro/debugging/{inspectorHandlers → messageHandlers}/VscodeRuntimeGetProperties.js +10 -6
  347. package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeGetProperties.js.map +1 -0
  348. package/build/src/start/server/metro/debugging/pageIsSupported.js +14 -0
  349. package/build/src/start/server/metro/debugging/pageIsSupported.js.map +1 -0
  350. package/build/src/start/server/metro/debugging/types.js.map +1 -0
  351. package/build/src/start/server/metro/externals.js +51 -64
  352. package/build/src/start/server/metro/externals.js.map +1 -1
  353. package/build/src/start/server/metro/fetchRouterManifest.js +8 -2
  354. package/build/src/start/server/metro/fetchRouterManifest.js.map +1 -1
  355. package/build/src/start/server/metro/formatFileCandidates.js +8 -2
  356. package/build/src/start/server/metro/formatFileCandidates.js.map +1 -1
  357. package/build/src/start/server/metro/getCssModulesFromBundler.js +34 -10
  358. package/build/src/start/server/metro/getCssModulesFromBundler.js.map +1 -1
  359. package/build/src/start/server/metro/instantiateMetro.js +96 -30
  360. package/build/src/start/server/metro/instantiateMetro.js.map +1 -1
  361. package/build/src/start/server/metro/metroErrorInterface.js +40 -21
  362. package/build/src/start/server/metro/metroErrorInterface.js.map +1 -1
  363. package/build/src/start/server/metro/metroVirtualModules.js +82 -0
  364. package/build/src/start/server/metro/metroVirtualModules.js.map +1 -0
  365. package/build/src/start/server/metro/metroWatchTypeScriptFiles.js +8 -2
  366. package/build/src/start/server/metro/metroWatchTypeScriptFiles.js.map +1 -1
  367. package/build/src/start/server/metro/router.js +44 -17
  368. package/build/src/start/server/metro/router.js.map +1 -1
  369. package/build/src/start/server/metro/runServer-fork.js +56 -14
  370. package/build/src/start/server/metro/runServer-fork.js.map +1 -1
  371. package/build/src/start/server/metro/serializeHtml.js +25 -12
  372. package/build/src/start/server/metro/serializeHtml.js.map +1 -1
  373. package/build/src/start/server/metro/waitForMetroToObserveTypeScriptFile.js +8 -2
  374. package/build/src/start/server/metro/waitForMetroToObserveTypeScriptFile.js.map +1 -1
  375. package/build/src/start/server/metro/withMetroMultiPlatform.js +148 -46
  376. package/build/src/start/server/metro/withMetroMultiPlatform.js.map +1 -1
  377. package/build/src/start/server/metro/withMetroResolvers.js +31 -13
  378. package/build/src/start/server/metro/withMetroResolvers.js.map +1 -1
  379. package/build/src/start/server/middleware/CreateFileMiddleware.js +22 -10
  380. package/build/src/start/server/middleware/CreateFileMiddleware.js.map +1 -1
  381. package/build/src/start/server/middleware/DevToolsPluginMiddleware.js +16 -4
  382. package/build/src/start/server/middleware/DevToolsPluginMiddleware.js.map +1 -1
  383. package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js +42 -12
  384. package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js.map +1 -1
  385. package/build/src/start/server/middleware/ExpoMiddleware.js +8 -2
  386. package/build/src/start/server/middleware/ExpoMiddleware.js.map +1 -1
  387. package/build/src/start/server/middleware/InterstitialPageMiddleware.js +41 -11
  388. package/build/src/start/server/middleware/InterstitialPageMiddleware.js.map +1 -1
  389. package/build/src/start/server/middleware/ManifestMiddleware.js +40 -10
  390. package/build/src/start/server/middleware/ManifestMiddleware.js.map +1 -1
  391. package/build/src/start/server/middleware/ReactDevToolsPageMiddleware.js +24 -6
  392. package/build/src/start/server/middleware/ReactDevToolsPageMiddleware.js.map +1 -1
  393. package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js +8 -2
  394. package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js.map +1 -1
  395. package/build/src/start/server/middleware/ServeStaticMiddleware.js +24 -6
  396. package/build/src/start/server/middleware/ServeStaticMiddleware.js.map +1 -1
  397. package/build/src/start/server/middleware/inspector/JsInspector.js +25 -8
  398. package/build/src/start/server/middleware/inspector/JsInspector.js.map +1 -1
  399. package/build/src/start/server/middleware/inspector/LaunchBrowser.js +10 -4
  400. package/build/src/start/server/middleware/inspector/LaunchBrowser.js.map +1 -1
  401. package/build/src/start/server/middleware/inspector/LaunchBrowserImplLinux.js +24 -6
  402. package/build/src/start/server/middleware/inspector/LaunchBrowserImplLinux.js.map +1 -1
  403. package/build/src/start/server/middleware/inspector/LaunchBrowserImplMacOS.js +33 -9
  404. package/build/src/start/server/middleware/inspector/LaunchBrowserImplMacOS.js.map +1 -1
  405. package/build/src/start/server/middleware/inspector/LaunchBrowserImplWindows.js +27 -11
  406. package/build/src/start/server/middleware/inspector/LaunchBrowserImplWindows.js.map +1 -1
  407. package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js +33 -9
  408. package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js.map +1 -1
  409. package/build/src/start/server/middleware/metroOptions.js +12 -2
  410. package/build/src/start/server/middleware/metroOptions.js.map +1 -1
  411. package/build/src/start/server/middleware/resolveAssets.js +17 -5
  412. package/build/src/start/server/middleware/resolveAssets.js.map +1 -1
  413. package/build/src/start/server/middleware/resolvePlatform.js +8 -2
  414. package/build/src/start/server/middleware/resolvePlatform.js.map +1 -1
  415. package/build/src/start/server/platformBundlers.js +8 -2
  416. package/build/src/start/server/platformBundlers.js.map +1 -1
  417. package/build/src/start/server/serverLogLikeMetro.js +37 -13
  418. package/build/src/start/server/serverLogLikeMetro.js.map +1 -1
  419. package/build/src/start/server/type-generation/expo-env.js +16 -4
  420. package/build/src/start/server/type-generation/expo-env.js.map +1 -1
  421. package/build/src/start/server/type-generation/routes.js +91 -37
  422. package/build/src/start/server/type-generation/routes.js.map +1 -1
  423. package/build/src/start/server/type-generation/startTypescriptTypeGeneration.js +27 -9
  424. package/build/src/start/server/type-generation/startTypescriptTypeGeneration.js.map +1 -1
  425. package/build/src/start/server/type-generation/tsconfig.js +27 -9
  426. package/build/src/start/server/type-generation/tsconfig.js.map +1 -1
  427. package/build/src/start/server/webTemplate.js +26 -8
  428. package/build/src/start/server/webTemplate.js.map +1 -1
  429. package/build/src/start/server/webpack/WebpackBundlerDevServer.js +36 -12
  430. package/build/src/start/server/webpack/WebpackBundlerDevServer.js.map +1 -1
  431. package/build/src/start/server/webpack/compile.js +17 -5
  432. package/build/src/start/server/webpack/compile.js.map +1 -1
  433. package/build/src/start/server/webpack/resolveFromProject.js +8 -2
  434. package/build/src/start/server/webpack/resolveFromProject.js.map +1 -1
  435. package/build/src/start/server/webpack/tls.js +35 -11
  436. package/build/src/start/server/webpack/tls.js.map +1 -1
  437. package/build/src/start/startAsync.js +36 -11
  438. package/build/src/start/startAsync.js.map +1 -1
  439. package/build/src/utils/FileNotifier.js +32 -8
  440. package/build/src/utils/FileNotifier.js.map +1 -1
  441. package/build/src/utils/analytics/getDevClientProperties.js +26 -8
  442. package/build/src/utils/analytics/getDevClientProperties.js.map +1 -1
  443. package/build/src/utils/analytics/metroDebuggerMiddleware.js +2 -2
  444. package/build/src/utils/analytics/metroDebuggerMiddleware.js.map +1 -1
  445. package/build/src/utils/args.js +32 -8
  446. package/build/src/utils/args.js.map +1 -1
  447. package/build/src/utils/cocoapods.js +64 -28
  448. package/build/src/utils/cocoapods.js.map +1 -1
  449. package/build/src/utils/codesigning.js +79 -29
  450. package/build/src/utils/codesigning.js.map +1 -1
  451. package/build/src/utils/createFileTransform.js +24 -69
  452. package/build/src/utils/createFileTransform.js.map +1 -1
  453. package/build/src/utils/dir.js +33 -26
  454. package/build/src/utils/dir.js.map +1 -1
  455. package/build/src/utils/downloadAppAsync.js +40 -10
  456. package/build/src/utils/downloadAppAsync.js.map +1 -1
  457. package/build/src/utils/downloadExpoGoAsync.js +26 -11
  458. package/build/src/utils/downloadExpoGoAsync.js.map +1 -1
  459. package/build/src/utils/editor.js +18 -6
  460. package/build/src/utils/editor.js.map +1 -1
  461. package/build/src/utils/env.js +40 -31
  462. package/build/src/utils/env.js.map +1 -1
  463. package/build/src/utils/errors.js +20 -5
  464. package/build/src/utils/errors.js.map +1 -1
  465. package/build/src/utils/findUp.js +18 -6
  466. package/build/src/utils/findUp.js.map +1 -1
  467. package/build/src/utils/getOrPromptApplicationId.js +19 -7
  468. package/build/src/utils/getOrPromptApplicationId.js.map +1 -1
  469. package/build/src/utils/getRunningProcess.js +18 -6
  470. package/build/src/utils/getRunningProcess.js.map +1 -1
  471. package/build/src/utils/git.js +18 -6
  472. package/build/src/utils/git.js.map +1 -1
  473. package/build/src/utils/glob.js +9 -3
  474. package/build/src/utils/glob.js.map +1 -1
  475. package/build/src/utils/ip.js +8 -2
  476. package/build/src/utils/ip.js.map +1 -1
  477. package/build/src/utils/isModuleSymlinked.js +16 -4
  478. package/build/src/utils/isModuleSymlinked.js.map +1 -1
  479. package/build/src/utils/link.js +18 -6
  480. package/build/src/utils/link.js.map +1 -1
  481. package/build/src/utils/mergeGitIgnorePaths.js +25 -13
  482. package/build/src/utils/mergeGitIgnorePaths.js.map +1 -1
  483. package/build/src/utils/modifyConfigAsync.js +18 -6
  484. package/build/src/utils/modifyConfigAsync.js.map +1 -1
  485. package/build/src/utils/modifyConfigPlugins.js +8 -2
  486. package/build/src/utils/modifyConfigPlugins.js.map +1 -1
  487. package/build/src/utils/nodeEnv.js +2 -0
  488. package/build/src/utils/nodeEnv.js.map +1 -1
  489. package/build/src/utils/nodeModules.js +23 -5
  490. package/build/src/utils/nodeModules.js.map +1 -1
  491. package/build/src/utils/npm.js +64 -17
  492. package/build/src/utils/npm.js.map +1 -1
  493. package/build/src/utils/open.js +9 -3
  494. package/build/src/utils/open.js.map +1 -1
  495. package/build/src/utils/ora.js +16 -4
  496. package/build/src/utils/ora.js.map +1 -1
  497. package/build/src/utils/plist.js +24 -6
  498. package/build/src/utils/plist.js.map +1 -1
  499. package/build/src/utils/port.js +22 -10
  500. package/build/src/utils/port.js.map +1 -1
  501. package/build/src/utils/profile.js +8 -2
  502. package/build/src/utils/profile.js.map +1 -1
  503. package/build/src/utils/progress.js +8 -2
  504. package/build/src/utils/progress.js.map +1 -1
  505. package/build/src/utils/prompts.js +16 -4
  506. package/build/src/utils/prompts.js.map +1 -1
  507. package/build/src/utils/scheme.js +75 -23
  508. package/build/src/utils/scheme.js.map +1 -1
  509. package/build/src/utils/tar.js +16 -4
  510. package/build/src/utils/tar.js.map +1 -1
  511. package/build/src/utils/telemetry/DetachedClient.js +87 -0
  512. package/build/src/utils/telemetry/DetachedClient.js.map +1 -0
  513. package/build/src/utils/telemetry/RudderClient.js +98 -0
  514. package/build/src/utils/telemetry/RudderClient.js.map +1 -0
  515. package/build/src/utils/telemetry/flushDetached.js +43 -0
  516. package/build/src/utils/telemetry/flushDetached.js.map +1 -0
  517. package/build/src/utils/telemetry/getContext.js +92 -0
  518. package/build/src/utils/telemetry/getContext.js.map +1 -0
  519. package/build/src/utils/telemetry/index.js +32 -0
  520. package/build/src/utils/telemetry/index.js.map +1 -0
  521. package/build/src/utils/telemetry/types.js +6 -0
  522. package/build/src/utils/telemetry/types.js.map +1 -0
  523. package/build/src/utils/tsconfig/evaluateTsConfig.js +16 -4
  524. package/build/src/utils/tsconfig/evaluateTsConfig.js.map +1 -1
  525. package/build/src/utils/tsconfig/loadTsConfigPaths.js +18 -6
  526. package/build/src/utils/tsconfig/loadTsConfigPaths.js.map +1 -1
  527. package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js +10 -4
  528. package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js.map +1 -1
  529. package/build/src/utils/url.js +19 -10
  530. package/build/src/utils/url.js.map +1 -1
  531. package/build/src/utils/validateApplicationId.js +18 -6
  532. package/build/src/utils/validateApplicationId.js.map +1 -1
  533. package/build/src/whoami/whoamiAsync.js +8 -2
  534. package/build/src/whoami/whoamiAsync.js.map +1 -1
  535. package/package.json +15 -16
  536. package/static/canary/react-native/Libraries/Renderer/implementations/ReactFabric-dev.js +27907 -0
  537. package/static/canary/react-native/Libraries/Renderer/implementations/ReactFabric-prod.js +9494 -0
  538. package/static/canary/react-native/Libraries/Renderer/implementations/ReactFabric-profiling.js +10015 -0
  539. package/static/canary/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +28375 -0
  540. package/static/canary/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +9714 -0
  541. package/build/src/run/android/resolveGradleProps.js +0 -37
  542. package/build/src/run/android/resolveGradleProps.js.map +0 -1
  543. package/build/src/start/server/metro/bundleApiRoutes.js +0 -52
  544. package/build/src/start/server/metro/bundleApiRoutes.js.map +0 -1
  545. package/build/src/start/server/metro/debugging/InspectorDevice.js +0 -80
  546. package/build/src/start/server/metro/debugging/InspectorDevice.js.map +0 -1
  547. package/build/src/start/server/metro/debugging/InspectorProxy.js +0 -116
  548. package/build/src/start/server/metro/debugging/InspectorProxy.js.map +0 -1
  549. package/build/src/start/server/metro/debugging/inspectorHandlers/NetworkResponse.js.map +0 -1
  550. package/build/src/start/server/metro/debugging/inspectorHandlers/PageReload.js.map +0 -1
  551. package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeDebuggerGetPossibleBreakpoints.js +0 -21
  552. package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeDebuggerGetPossibleBreakpoints.js.map +0 -1
  553. package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeDebuggerScriptParsed.js +0 -56
  554. package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeDebuggerScriptParsed.js.map +0 -1
  555. package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeDebuggerSetBreakpointByUrl.js +0 -18
  556. package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeDebuggerSetBreakpointByUrl.js.map +0 -1
  557. package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeRuntimeCallFunctionOn.js +0 -24
  558. package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeRuntimeCallFunctionOn.js.map +0 -1
  559. package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeRuntimeGetProperties.js.map +0 -1
  560. package/build/src/start/server/metro/debugging/inspectorHandlers/types.js.map +0 -1
  561. package/build/src/start/server/metro/debugging/inspectorHandlers/utils.js.map +0 -1
  562. package/build/src/start/server/type-generation/__typetests__/fixtures/basic.js +0 -38
  563. package/build/src/start/server/type-generation/__typetests__/fixtures/basic.js.map +0 -1
  564. package/build/src/start/server/type-generation/__typetests__/generateFixtures.js +0 -38
  565. package/build/src/start/server/type-generation/__typetests__/generateFixtures.js.map +0 -1
  566. package/build/src/start/server/type-generation/__typetests__/route.test.js +0 -184
  567. package/build/src/start/server/type-generation/__typetests__/route.test.js.map +0 -1
  568. package/build/src/utils/analytics/rudderstackClient.js +0 -147
  569. package/build/src/utils/analytics/rudderstackClient.js.map +0 -1
  570. /package/build/src/start/server/metro/debugging/{inspectorHandlers/types.js → types.js} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/export/fork-bundleAsync.ts"],"sourcesContent":["import { ExpoConfig, getConfigFilePaths, Platform, ProjectConfig } from '@expo/config';\nimport { LoadOptions } from '@expo/metro-config';\nimport { SerialAsset } from '@expo/metro-config/build/serializer/serializerAssets';\nimport getMetroAssets from '@expo/metro-config/build/transform-worker/getAssets';\nimport assert from 'assert';\nimport Metro, { MixedOutput, Module, ReadOnlyGraph } from 'metro';\nimport type { TransformInputOptions } from 'metro/src/DeltaBundler/types';\nimport IncrementalBundler from 'metro/src/IncrementalBundler';\nimport Server from 'metro/src/Server';\nimport splitBundleOptions from 'metro/src/lib/splitBundleOptions';\nimport type {\n ResolverInputOptions,\n BundleOptions as MetroBundleOptions,\n} from 'metro/src/shared/types';\nimport { ConfigT } from 'metro-config';\nimport path from 'path';\n\nimport { isEnableHermesManaged, maybeThrowFromInconsistentEngineAsync } from './exportHermes';\nimport { loadMetroConfigAsync } from '../start/server/metro/instantiateMetro';\nimport { getEntryWithServerRoot } from '../start/server/middleware/ManifestMiddleware';\nimport {\n ExpoMetroBundleOptions,\n getMetroDirectBundleOptionsForExpoConfig,\n} from '../start/server/middleware/metroOptions';\nimport { CommandError } from '../utils/errors';\n\nexport type MetroDevServerOptions = LoadOptions;\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};\nexport type BundleAssetWithFileHashes = Metro.AssetData & {\n fileHashes: string[]; // added by the hashAssets asset plugin\n};\nexport type BundleOutput = {\n artifacts: SerialAsset[];\n assets: readonly BundleAssetWithFileHashes[];\n};\n\nlet nextBuildID = 0;\n\nasync function assertEngineMismatchAsync(\n projectRoot: string,\n exp: Pick<ExpoConfig, 'ios' | 'android' | 'jsEngine'>,\n platform: Platform\n) {\n const isHermesManaged = isEnableHermesManaged(exp, platform);\n\n const paths = getConfigFilePaths(projectRoot);\n const configFilePath = paths.dynamicConfigPath ?? paths.staticConfigPath ?? 'app.json';\n await maybeThrowFromInconsistentEngineAsync(\n projectRoot,\n configFilePath,\n platform,\n isHermesManaged\n );\n}\n\nexport async function createBundlesAsync(\n projectRoot: string,\n projectConfig: ProjectConfig,\n bundleOptions: {\n clear?: boolean;\n maxWorkers?: number;\n platforms: Platform[];\n dev?: boolean;\n minify?: boolean;\n bytecode: boolean;\n sourcemaps?: boolean;\n entryPoint?: string;\n }\n): Promise<Partial<Record<Platform, BundleOutput>>> {\n if (!bundleOptions.platforms.length) {\n return {};\n }\n const { exp, pkg } = projectConfig;\n\n const bundles = await bundleProductionMetroClientAsync(\n projectRoot,\n exp,\n {\n // If not legacy, ignore the target option to prevent warnings from being thrown.\n resetCache: bundleOptions.clear,\n maxWorkers: bundleOptions.maxWorkers,\n },\n bundleOptions.platforms.map((platform: Platform) => ({\n platform,\n entryPoint:\n bundleOptions.entryPoint ?? getEntryWithServerRoot(projectRoot, { platform, pkg }),\n sourcemaps: bundleOptions.sourcemaps,\n minify: bundleOptions.minify,\n bytecode: bundleOptions.bytecode,\n dev: bundleOptions.dev,\n }))\n );\n\n // { ios: bundle, android: bundle }\n return bundleOptions.platforms.reduce<Partial<Record<Platform, BundleOutput>>>(\n (prev, platform, index) => ({\n ...prev,\n [platform]: bundles[index],\n }),\n {}\n );\n}\n\nfunction assertMetroConfig(\n config: ConfigT\n): asserts config is ConfigT & { serializer: NonNullable<ConfigT['serializer']> } {\n if (!config.serializer?.customSerializer) {\n throw new CommandError(\n 'METRO_CONFIG_MALFORMED',\n `The Metro bundler configuration is missing required features from 'expo/metro-config' and cannot be used with Expo CLI. Ensure the metro.config.js file is extending 'expo/metro-config'. Learn more: https://docs.expo.dev/guides/customizing-metro`\n );\n }\n}\n\nasync function bundleProductionMetroClientAsync(\n projectRoot: string,\n expoConfig: ExpoConfig,\n metroOptions: MetroDevServerOptions,\n bundles: BundleOptions[]\n): Promise<BundleOutput[]> {\n // Assert early so the user doesn't have to wait until bundling is complete to find out that\n // Hermes won't be available.\n await Promise.all(\n bundles.map(({ platform }) => assertEngineMismatchAsync(projectRoot, expoConfig, platform))\n );\n\n const { config, reporter } = await loadMetroConfigAsync(projectRoot, metroOptions, {\n exp: expoConfig,\n isExporting: true,\n });\n\n assertMetroConfig(config);\n\n const metroServer = await Metro.runMetro(config, {\n watch: false,\n });\n\n const buildAsync = async (bundle: BundleOptions): Promise<BundleOutput> => {\n const buildID = `bundle_${nextBuildID++}_${bundle.platform}`;\n const isHermes = isEnableHermesManaged(expoConfig, bundle.platform);\n if (isHermes) {\n await assertEngineMismatchAsync(projectRoot, expoConfig, bundle.platform);\n }\n const bundleOptions: MetroBundleOptions = {\n ...Server.DEFAULT_BUNDLE_OPTIONS,\n sourceMapUrl: bundle.sourceMapUrl,\n ...getMetroDirectBundleOptionsForExpoConfig(projectRoot, expoConfig, {\n minify: bundle.minify,\n mainModuleName: bundle.entryPoint,\n platform: bundle.platform,\n mode: bundle.dev ? 'development' : 'production',\n engine: isHermes ? 'hermes' : undefined,\n serializerIncludeMaps: bundle.sourcemaps,\n bytecode: bundle.bytecode && isHermes,\n // Bundle splitting on web-only for now.\n // serializerOutput: bundle.platform === 'web' ? 'static' : undefined,\n serializerOutput: 'static',\n isExporting: true,\n }),\n bundleType: 'bundle',\n inlineSourceMap: false,\n createModuleIdFactory: config.serializer.createModuleIdFactory,\n onProgress: (transformedFileCount: number, totalFileCount: number) => {\n reporter.update({\n buildID,\n type: 'bundle_transform_progressed',\n transformedFileCount,\n totalFileCount,\n });\n },\n };\n\n const bundleDetails = {\n ...bundleOptions,\n buildID,\n };\n reporter.update({\n buildID,\n type: 'bundle_build_started',\n bundleDetails,\n });\n try {\n const artifacts = await forkMetroBuildAsync(metroServer, bundleOptions);\n reporter.update({\n buildID,\n type: 'bundle_build_done',\n });\n return artifacts;\n } catch (error) {\n reporter.update({\n buildID,\n type: 'bundle_build_failed',\n });\n\n throw error;\n }\n };\n\n try {\n return await Promise.all(bundles.map((bundle) => buildAsync(bundle)));\n } catch (error) {\n // New line so errors don't show up inline with the progress bar\n console.log('');\n throw error;\n } finally {\n metroServer.end();\n }\n}\n\n// Forked out of Metro because the `this._getServerRootDir()` doesn't match the development\n// behavior.\nexport async function getAssets(metro: Metro.Server, options: MetroBundleOptions) {\n const { entryFile, onProgress, resolverOptions, transformOptions } = splitBundleOptions(options);\n\n // @ts-expect-error: _bundler isn't exposed on the type.\n const dependencies = await metro._bundler.getDependencies(\n [entryFile],\n transformOptions,\n resolverOptions,\n { onProgress, shallow: false, lazy: false }\n );\n\n // @ts-expect-error\n const _config = metro._config as ConfigT;\n\n return getMetroAssets(dependencies, {\n processModuleFilter: _config.serializer.processModuleFilter,\n assetPlugins: _config.transformer.assetPlugins,\n platform: transformOptions.platform!,\n projectRoot: _config.projectRoot, // this._getServerRootDir(),\n publicPath: _config.transformer.publicPath,\n });\n}\n\nfunction isMetroServerInstance(metro: Metro.Server): metro is Metro.Server & {\n _shouldAddModuleToIgnoreList: (module: Module<MixedOutput>) => boolean;\n _bundler: IncrementalBundler;\n _config: ConfigT;\n _createModuleId: (path: string) => number;\n _resolveRelativePath(\n filePath: string,\n {\n relativeTo,\n resolverOptions,\n transformOptions,\n }: {\n relativeTo: 'project' | 'server';\n resolverOptions: ResolverInputOptions;\n transformOptions: TransformInputOptions;\n }\n ): Promise<string>;\n _getEntryPointAbsolutePath(entryFile: string): string;\n _getSortedModules(graph: ReadOnlyGraph): Module<MixedOutput>[];\n} {\n return '_shouldAddModuleToIgnoreList' in metro;\n}\n\nasync function forkMetroBuildAsync(\n metro: Metro.Server,\n options: ExpoMetroBundleOptions\n): Promise<{ artifacts: SerialAsset[]; assets: readonly BundleAssetWithFileHashes[] }> {\n if (!isMetroServerInstance(metro)) {\n throw new Error('Expected Metro server instance to have private functions exposed.');\n }\n\n if (options.serializerOptions?.output !== 'static') {\n throw new Error('Only multi-serializer output is supported.');\n }\n\n const {\n entryFile,\n graphOptions,\n onProgress,\n resolverOptions,\n serializerOptions,\n transformOptions,\n } = splitBundleOptions(options);\n\n const { prepend, graph } = await metro._bundler.buildGraph(\n entryFile,\n transformOptions,\n resolverOptions,\n {\n onProgress,\n shallow: graphOptions.shallow,\n // @ts-expect-error\n lazy: graphOptions.lazy,\n }\n );\n\n const entryPoint = metro._getEntryPointAbsolutePath(entryFile);\n\n const bundleOptions = {\n asyncRequireModulePath: await metro._resolveRelativePath(\n metro._config.transformer.asyncRequireModulePath,\n {\n relativeTo: 'project',\n resolverOptions,\n transformOptions,\n }\n ),\n processModuleFilter: metro._config.serializer.processModuleFilter,\n createModuleId: metro._createModuleId,\n getRunModuleStatement: metro._config.serializer.getRunModuleStatement,\n dev: transformOptions.dev,\n includeAsyncPaths: graphOptions.lazy,\n projectRoot: metro._config.projectRoot,\n modulesOnly: serializerOptions.modulesOnly,\n runBeforeMainModule: metro._config.serializer.getModulesRunBeforeMainModule(\n path.relative(metro._config.projectRoot, entryPoint)\n ),\n runModule: serializerOptions.runModule,\n sourceMapUrl: serializerOptions.sourceMapUrl,\n sourceUrl: serializerOptions.sourceUrl,\n inlineSourceMap: serializerOptions.inlineSourceMap,\n serverRoot: metro._config.server.unstable_serverRoot ?? metro._config.projectRoot,\n shouldAddToIgnoreList: (module: Module<MixedOutput>) =>\n metro._shouldAddModuleToIgnoreList(module),\n // Custom options we pass to the serializer to emulate the URL query parameters.\n serializerOptions: options.serializerOptions,\n };\n\n assertMetroConfig(metro._config);\n\n const bundle = await metro._config.serializer.customSerializer!(\n entryPoint,\n // @ts-expect-error: Metro is typed incorrectly\n prepend,\n graph,\n bundleOptions\n );\n\n try {\n const parsed = typeof bundle === 'string' ? JSON.parse(bundle) : bundle;\n\n assert(\n 'artifacts' in parsed && Array.isArray(parsed.artifacts),\n 'Expected serializer to return an object with key artifacts to contain an array of serial assets.'\n );\n return parsed;\n } catch (error: any) {\n throw new Error(\n 'Serializer did not return expected format. The project copy of `expo/metro-config` may be out of date. Error: ' +\n error.message\n );\n }\n}\n"],"names":["createBundlesAsync","getAssets","nextBuildID","assertEngineMismatchAsync","projectRoot","exp","platform","isHermesManaged","isEnableHermesManaged","paths","getConfigFilePaths","configFilePath","dynamicConfigPath","staticConfigPath","maybeThrowFromInconsistentEngineAsync","projectConfig","bundleOptions","platforms","length","pkg","bundles","bundleProductionMetroClientAsync","resetCache","clear","maxWorkers","map","entryPoint","getEntryWithServerRoot","sourcemaps","minify","bytecode","dev","reduce","prev","index","assertMetroConfig","config","serializer","customSerializer","CommandError","expoConfig","metroOptions","Promise","all","reporter","loadMetroConfigAsync","isExporting","metroServer","Metro","runMetro","watch","buildAsync","bundle","buildID","isHermes","Server","DEFAULT_BUNDLE_OPTIONS","sourceMapUrl","getMetroDirectBundleOptionsForExpoConfig","mainModuleName","mode","engine","undefined","serializerIncludeMaps","serializerOutput","bundleType","inlineSourceMap","createModuleIdFactory","onProgress","transformedFileCount","totalFileCount","update","type","bundleDetails","artifacts","forkMetroBuildAsync","error","console","log","end","metro","options","entryFile","resolverOptions","transformOptions","splitBundleOptions","dependencies","_bundler","getDependencies","shallow","lazy","_config","getMetroAssets","processModuleFilter","assetPlugins","transformer","publicPath","isMetroServerInstance","Error","serializerOptions","output","graphOptions","prepend","graph","buildGraph","_getEntryPointAbsolutePath","asyncRequireModulePath","_resolveRelativePath","relativeTo","createModuleId","_createModuleId","getRunModuleStatement","includeAsyncPaths","modulesOnly","runBeforeMainModule","getModulesRunBeforeMainModule","path","relative","runModule","sourceUrl","serverRoot","server","unstable_serverRoot","shouldAddToIgnoreList","module","_shouldAddModuleToIgnoreList","parsed","JSON","parse","assert","Array","isArray","message"],"mappings":"AAAA;;;;QAgEsBA,kBAAkB,GAAlBA,kBAAkB;QA4JlBC,SAAS,GAATA,SAAS;AA5NyC,IAAA,OAAc,WAAd,cAAc,CAAA;AAG3D,IAAA,UAAqD,kCAArD,qDAAqD,EAAA;AAC7D,IAAA,OAAQ,kCAAR,QAAQ,EAAA;AAC+B,IAAA,MAAO,kCAAP,OAAO,EAAA;AAG9C,IAAA,OAAkB,kCAAlB,kBAAkB,EAAA;AACN,IAAA,mBAAkC,kCAAlC,kCAAkC,EAAA;AAMhD,IAAA,KAAM,kCAAN,MAAM,EAAA;AAEsD,IAAA,aAAgB,WAAhB,gBAAgB,CAAA;AACxD,IAAA,iBAAwC,WAAxC,wCAAwC,CAAA;AACtC,IAAA,mBAA+C,WAA/C,+CAA+C,CAAA;AAI/E,IAAA,aAAyC,WAAzC,yCAAyC,CAAA;AACnB,IAAA,OAAiB,WAAjB,iBAAiB,CAAA;;;;;;AAqB9C,IAAIC,WAAW,GAAG,CAAC,AAAC;AAEpB,eAAeC,yBAAyB,CACtCC,WAAmB,EACnBC,GAAqD,EACrDC,QAAkB,EAClB;IACA,MAAMC,eAAe,GAAGC,CAAAA,GAAAA,aAAqB,AAAe,CAAA,sBAAf,CAACH,GAAG,EAAEC,QAAQ,CAAC,AAAC;IAE7D,MAAMG,KAAK,GAAGC,CAAAA,GAAAA,OAAkB,AAAa,CAAA,mBAAb,CAACN,WAAW,CAAC,AAAC;QACvBK,kBAAuB,EAAvBA,GAAiD;IAAxE,MAAME,cAAc,GAAGF,CAAAA,GAAiD,GAAjDA,CAAAA,kBAAuB,GAAvBA,KAAK,CAACG,iBAAiB,YAAvBH,kBAAuB,GAAIA,KAAK,CAACI,gBAAgB,YAAjDJ,GAAiD,GAAI,UAAU,AAAC;IACvF,MAAMK,CAAAA,GAAAA,aAAqC,AAK1C,CAAA,sCAL0C,CACzCV,WAAW,EACXO,cAAc,EACdL,QAAQ,EACRC,eAAe,CAChB,CAAC;CACH;AAEM,eAAeP,kBAAkB,CACtCI,WAAmB,EACnBW,aAA4B,EAC5BC,aASC,EACiD;IAClD,IAAI,CAACA,aAAa,CAACC,SAAS,CAACC,MAAM,EAAE;QACnC,OAAO,EAAE,CAAC;KACX;IACD,MAAM,EAAEb,GAAG,CAAA,EAAEc,GAAG,CAAA,EAAE,GAAGJ,aAAa,AAAC;QAa7BC,WAAwB;IAX9B,MAAMI,OAAO,GAAG,MAAMC,gCAAgC,CACpDjB,WAAW,EACXC,GAAG,EACH;QACE,iFAAiF;QACjFiB,UAAU,EAAEN,aAAa,CAACO,KAAK;QAC/BC,UAAU,EAAER,aAAa,CAACQ,UAAU;KACrC,EACDR,aAAa,CAACC,SAAS,CAACQ,GAAG,CAAC,CAACnB,QAAkB,GAAK,CAAC;YACnDA,QAAQ;YACRoB,UAAU,EACRV,CAAAA,WAAwB,GAAxBA,aAAa,CAACU,UAAU,YAAxBV,WAAwB,GAAIW,CAAAA,GAAAA,mBAAsB,AAAgC,CAAA,uBAAhC,CAACvB,WAAW,EAAE;gBAAEE,QAAQ;gBAAEa,GAAG;aAAE,CAAC;YACpFS,UAAU,EAAEZ,aAAa,CAACY,UAAU;YACpCC,MAAM,EAAEb,aAAa,CAACa,MAAM;YAC5BC,QAAQ,EAAEd,aAAa,CAACc,QAAQ;YAChCC,GAAG,EAAEf,aAAa,CAACe,GAAG;SACvB,CAAC;IAAA,CAAC,CACJ,AAAC;IAEF,mCAAmC;IACnC,OAAOf,aAAa,CAACC,SAAS,CAACe,MAAM,CACnC,CAACC,IAAI,EAAE3B,QAAQ,EAAE4B,KAAK,GAAK,CAAC;YAC1B,GAAGD,IAAI;YACP,CAAC3B,QAAQ,CAAC,EAAEc,OAAO,CAACc,KAAK,CAAC;SAC3B,CAAC;IAAA,EACF,EAAE,CACH,CAAC;CACH;AAED,SAASC,iBAAiB,CACxBC,MAAe,EACiE;QAC3EA,GAAiB;IAAtB,IAAI,CAACA,CAAAA,CAAAA,GAAiB,GAAjBA,MAAM,CAACC,UAAU,SAAkB,GAAnCD,KAAAA,CAAmC,GAAnCA,GAAiB,CAAEE,gBAAgB,CAAA,EAAE;QACxC,MAAM,IAAIC,OAAY,aAAA,CACpB,wBAAwB,EACxB,CAAC,oPAAoP,CAAC,CACvP,CAAC;KACH;CACF;AAED,eAAelB,gCAAgC,CAC7CjB,WAAmB,EACnBoC,UAAsB,EACtBC,YAAmC,EACnCrB,OAAwB,EACC;IACzB,4FAA4F;IAC5F,6BAA6B;IAC7B,MAAMsB,OAAO,CAACC,GAAG,CACfvB,OAAO,CAACK,GAAG,CAAC,CAAC,EAAEnB,QAAQ,CAAA,EAAE,GAAKH,yBAAyB,CAACC,WAAW,EAAEoC,UAAU,EAAElC,QAAQ,CAAC;IAAA,CAAC,CAC5F,CAAC;IAEF,MAAM,EAAE8B,MAAM,CAAA,EAAEQ,QAAQ,CAAA,EAAE,GAAG,MAAMC,CAAAA,GAAAA,iBAAoB,AAGrD,CAAA,qBAHqD,CAACzC,WAAW,EAAEqC,YAAY,EAAE;QACjFpC,GAAG,EAAEmC,UAAU;QACfM,WAAW,EAAE,IAAI;KAClB,CAAC,AAAC;IAEHX,iBAAiB,CAACC,MAAM,CAAC,CAAC;IAE1B,MAAMW,WAAW,GAAG,MAAMC,MAAK,QAAA,CAACC,QAAQ,CAACb,MAAM,EAAE;QAC/Cc,KAAK,EAAE,KAAK;KACb,CAAC,AAAC;IAEH,MAAMC,UAAU,GAAG,OAAOC,MAAqB,GAA4B;QACzE,MAAMC,OAAO,GAAG,CAAC,OAAO,EAAEnD,WAAW,EAAE,CAAC,CAAC,EAAEkD,MAAM,CAAC9C,QAAQ,CAAC,CAAC,AAAC;QAC7D,MAAMgD,QAAQ,GAAG9C,CAAAA,GAAAA,aAAqB,AAA6B,CAAA,sBAA7B,CAACgC,UAAU,EAAEY,MAAM,CAAC9C,QAAQ,CAAC,AAAC;QACpE,IAAIgD,QAAQ,EAAE;YACZ,MAAMnD,yBAAyB,CAACC,WAAW,EAAEoC,UAAU,EAAEY,MAAM,CAAC9C,QAAQ,CAAC,CAAC;SAC3E;QACD,MAAMU,aAAa,GAAuB;YACxC,GAAGuC,OAAM,QAAA,CAACC,sBAAsB;YAChCC,YAAY,EAAEL,MAAM,CAACK,YAAY;YACjC,GAAGC,CAAAA,GAAAA,aAAwC,AAYzC,CAAA,yCAZyC,CAACtD,WAAW,EAAEoC,UAAU,EAAE;gBACnEX,MAAM,EAAEuB,MAAM,CAACvB,MAAM;gBACrB8B,cAAc,EAAEP,MAAM,CAAC1B,UAAU;gBACjCpB,QAAQ,EAAE8C,MAAM,CAAC9C,QAAQ;gBACzBsD,IAAI,EAAER,MAAM,CAACrB,GAAG,GAAG,aAAa,GAAG,YAAY;gBAC/C8B,MAAM,EAAEP,QAAQ,GAAG,QAAQ,GAAGQ,SAAS;gBACvCC,qBAAqB,EAAEX,MAAM,CAACxB,UAAU;gBACxCE,QAAQ,EAAEsB,MAAM,CAACtB,QAAQ,IAAIwB,QAAQ;gBACrC,wCAAwC;gBACxC,sEAAsE;gBACtEU,gBAAgB,EAAE,QAAQ;gBAC1BlB,WAAW,EAAE,IAAI;aAClB,CAAC;YACFmB,UAAU,EAAE,QAAQ;YACpBC,eAAe,EAAE,KAAK;YACtBC,qBAAqB,EAAE/B,MAAM,CAACC,UAAU,CAAC8B,qBAAqB;YAC9DC,UAAU,EAAE,CAACC,oBAA4B,EAAEC,cAAsB,GAAK;gBACpE1B,QAAQ,CAAC2B,MAAM,CAAC;oBACdlB,OAAO;oBACPmB,IAAI,EAAE,6BAA6B;oBACnCH,oBAAoB;oBACpBC,cAAc;iBACf,CAAC,CAAC;aACJ;SACF,AAAC;QAEF,MAAMG,aAAa,GAAG;YACpB,GAAGzD,aAAa;YAChBqC,OAAO;SACR,AAAC;QACFT,QAAQ,CAAC2B,MAAM,CAAC;YACdlB,OAAO;YACPmB,IAAI,EAAE,sBAAsB;YAC5BC,aAAa;SACd,CAAC,CAAC;QACH,IAAI;YACF,MAAMC,SAAS,GAAG,MAAMC,mBAAmB,CAAC5B,WAAW,EAAE/B,aAAa,CAAC,AAAC;YACxE4B,QAAQ,CAAC2B,MAAM,CAAC;gBACdlB,OAAO;gBACPmB,IAAI,EAAE,mBAAmB;aAC1B,CAAC,CAAC;YACH,OAAOE,SAAS,CAAC;SAClB,CAAC,OAAOE,KAAK,EAAE;YACdhC,QAAQ,CAAC2B,MAAM,CAAC;gBACdlB,OAAO;gBACPmB,IAAI,EAAE,qBAAqB;aAC5B,CAAC,CAAC;YAEH,MAAMI,KAAK,CAAC;SACb;KACF,AAAC;IAEF,IAAI;QACF,OAAO,MAAMlC,OAAO,CAACC,GAAG,CAACvB,OAAO,CAACK,GAAG,CAAC,CAAC2B,MAAM,GAAKD,UAAU,CAACC,MAAM,CAAC;QAAA,CAAC,CAAC,CAAC;KACvE,CAAC,OAAOwB,KAAK,EAAE;QACd,gEAAgE;QAChEC,OAAO,CAACC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,MAAMF,KAAK,CAAC;KACb,QAAS;QACR7B,WAAW,CAACgC,GAAG,EAAE,CAAC;KACnB;CACF;AAIM,eAAe9E,SAAS,CAAC+E,KAAmB,EAAEC,OAA2B,EAAE;IAChF,MAAM,EAAEC,SAAS,CAAA,EAAEd,UAAU,CAAA,EAAEe,eAAe,CAAA,EAAEC,gBAAgB,CAAA,EAAE,GAAGC,CAAAA,GAAAA,mBAAkB,AAAS,CAAA,QAAT,CAACJ,OAAO,CAAC,AAAC;IAEjG,wDAAwD;IACxD,MAAMK,YAAY,GAAG,MAAMN,KAAK,CAACO,QAAQ,CAACC,eAAe,CACvD;QAACN,SAAS;KAAC,EACXE,gBAAgB,EAChBD,eAAe,EACf;QAAEf,UAAU;QAAEqB,OAAO,EAAE,KAAK;QAAEC,IAAI,EAAE,KAAK;KAAE,CAC5C,AAAC;IAEF,mBAAmB;IACnB,MAAMC,QAAO,GAAGX,KAAK,CAACW,OAAO,AAAW,AAAC;IAEzC,OAAOC,CAAAA,GAAAA,UAAc,AAMnB,CAAA,QANmB,CAACN,YAAY,EAAE;QAClCO,mBAAmB,EAAEF,QAAO,CAACtD,UAAU,CAACwD,mBAAmB;QAC3DC,YAAY,EAAEH,QAAO,CAACI,WAAW,CAACD,YAAY;QAC9CxF,QAAQ,EAAE8E,gBAAgB,CAAC9E,QAAQ;QACnCF,WAAW,EAAEuF,QAAO,CAACvF,WAAW;QAChC4F,UAAU,EAAEL,QAAO,CAACI,WAAW,CAACC,UAAU;KAC3C,CAAC,CAAC;CACJ;AAED,SAASC,qBAAqB,CAACjB,KAAmB,EAmBhD;IACA,OAAO,8BAA8B,IAAIA,KAAK,CAAC;CAChD;AAED,eAAeL,mBAAmB,CAChCK,KAAmB,EACnBC,OAA+B,EACsD;QAKjFA,GAAyB;IAJ7B,IAAI,CAACgB,qBAAqB,CAACjB,KAAK,CAAC,EAAE;QACjC,MAAM,IAAIkB,KAAK,CAAC,mEAAmE,CAAC,CAAC;KACtF;IAED,IAAIjB,CAAAA,CAAAA,GAAyB,GAAzBA,OAAO,CAACkB,iBAAiB,SAAQ,GAAjClB,KAAAA,CAAiC,GAAjCA,GAAyB,CAAEmB,MAAM,CAAA,KAAK,QAAQ,EAAE;QAClD,MAAM,IAAIF,KAAK,CAAC,4CAA4C,CAAC,CAAC;KAC/D;IAED,MAAM,EACJhB,SAAS,CAAA,EACTmB,YAAY,CAAA,EACZjC,UAAU,CAAA,EACVe,eAAe,CAAA,EACfgB,iBAAiB,CAAA,EACjBf,gBAAgB,CAAA,IACjB,GAAGC,CAAAA,GAAAA,mBAAkB,AAAS,CAAA,QAAT,CAACJ,OAAO,CAAC,AAAC;IAEhC,MAAM,EAAEqB,OAAO,CAAA,EAAEC,KAAK,CAAA,EAAE,GAAG,MAAMvB,KAAK,CAACO,QAAQ,CAACiB,UAAU,CACxDtB,SAAS,EACTE,gBAAgB,EAChBD,eAAe,EACf;QACEf,UAAU;QACVqB,OAAO,EAAEY,YAAY,CAACZ,OAAO;QAC7B,mBAAmB;QACnBC,IAAI,EAAEW,YAAY,CAACX,IAAI;KACxB,CACF,AAAC;IAEF,MAAMhE,UAAU,GAAGsD,KAAK,CAACyB,0BAA0B,CAACvB,SAAS,CAAC,AAAC;QAyBjDF,oBAAwC;IAvBtD,MAAMhE,aAAa,GAAG;QACpB0F,sBAAsB,EAAE,MAAM1B,KAAK,CAAC2B,oBAAoB,CACtD3B,KAAK,CAACW,OAAO,CAACI,WAAW,CAACW,sBAAsB,EAChD;YACEE,UAAU,EAAE,SAAS;YACrBzB,eAAe;YACfC,gBAAgB;SACjB,CACF;QACDS,mBAAmB,EAAEb,KAAK,CAACW,OAAO,CAACtD,UAAU,CAACwD,mBAAmB;QACjEgB,cAAc,EAAE7B,KAAK,CAAC8B,eAAe;QACrCC,qBAAqB,EAAE/B,KAAK,CAACW,OAAO,CAACtD,UAAU,CAAC0E,qBAAqB;QACrEhF,GAAG,EAAEqD,gBAAgB,CAACrD,GAAG;QACzBiF,iBAAiB,EAAEX,YAAY,CAACX,IAAI;QACpCtF,WAAW,EAAE4E,KAAK,CAACW,OAAO,CAACvF,WAAW;QACtC6G,WAAW,EAAEd,iBAAiB,CAACc,WAAW;QAC1CC,mBAAmB,EAAElC,KAAK,CAACW,OAAO,CAACtD,UAAU,CAAC8E,6BAA6B,CACzEC,KAAI,QAAA,CAACC,QAAQ,CAACrC,KAAK,CAACW,OAAO,CAACvF,WAAW,EAAEsB,UAAU,CAAC,CACrD;QACD4F,SAAS,EAAEnB,iBAAiB,CAACmB,SAAS;QACtC7D,YAAY,EAAE0C,iBAAiB,CAAC1C,YAAY;QAC5C8D,SAAS,EAAEpB,iBAAiB,CAACoB,SAAS;QACtCrD,eAAe,EAAEiC,iBAAiB,CAACjC,eAAe;QAClDsD,UAAU,EAAExC,CAAAA,oBAAwC,GAAxCA,KAAK,CAACW,OAAO,CAAC8B,MAAM,CAACC,mBAAmB,YAAxC1C,oBAAwC,GAAIA,KAAK,CAACW,OAAO,CAACvF,WAAW;QACjFuH,qBAAqB,EAAE,CAACC,MAA2B,GACjD5C,KAAK,CAAC6C,4BAA4B,CAACD,MAAM,CAAC;QAAA;QAC5C,gFAAgF;QAChFzB,iBAAiB,EAAElB,OAAO,CAACkB,iBAAiB;KAC7C,AAAC;IAEFhE,iBAAiB,CAAC6C,KAAK,CAACW,OAAO,CAAC,CAAC;IAEjC,MAAMvC,MAAM,GAAG,MAAM4B,KAAK,CAACW,OAAO,CAACtD,UAAU,CAACC,gBAAgB,CAC5DZ,UAAU,EACV,+CAA+C;IAC/C4E,OAAO,EACPC,KAAK,EACLvF,aAAa,CACd,AAAC;IAEF,IAAI;QACF,MAAM8G,MAAM,GAAG,OAAO1E,MAAM,KAAK,QAAQ,GAAG2E,IAAI,CAACC,KAAK,CAAC5E,MAAM,CAAC,GAAGA,MAAM,AAAC;QAExE6E,CAAAA,GAAAA,OAAM,AAGL,CAAA,QAHK,CACJ,WAAW,IAAIH,MAAM,IAAII,KAAK,CAACC,OAAO,CAACL,MAAM,CAACpD,SAAS,CAAC,EACxD,kGAAkG,CACnG,CAAC;QACF,OAAOoD,MAAM,CAAC;KACf,CAAC,OAAOlD,KAAK,EAAO;QACnB,MAAM,IAAIsB,KAAK,CACb,gHAAgH,GAC9GtB,KAAK,CAACwD,OAAO,CAChB,CAAC;KACH;CACF"}
1
+ {"version":3,"sources":["../../../src/export/fork-bundleAsync.ts"],"sourcesContent":["import { ExpoConfig, getConfigFilePaths, Platform, ProjectConfig } from '@expo/config';\nimport { LoadOptions } from '@expo/metro-config';\nimport { SerialAsset } from '@expo/metro-config/build/serializer/serializerAssets';\nimport getMetroAssets from '@expo/metro-config/build/transform-worker/getAssets';\nimport assert from 'assert';\nimport Metro, { MixedOutput, Module, ReadOnlyGraph } from 'metro';\nimport type { TransformInputOptions } from 'metro/src/DeltaBundler/types';\nimport IncrementalBundler from 'metro/src/IncrementalBundler';\nimport Server from 'metro/src/Server';\nimport splitBundleOptions from 'metro/src/lib/splitBundleOptions';\nimport type {\n ResolverInputOptions,\n BundleOptions as MetroBundleOptions,\n} from 'metro/src/shared/types';\nimport { ConfigT } from 'metro-config';\nimport path from 'path';\n\nimport { isEnableHermesManaged, maybeThrowFromInconsistentEngineAsync } from './exportHermes';\nimport { loadMetroConfigAsync } from '../start/server/metro/instantiateMetro';\nimport { getEntryWithServerRoot } from '../start/server/middleware/ManifestMiddleware';\nimport {\n ExpoMetroBundleOptions,\n getMetroDirectBundleOptionsForExpoConfig,\n} from '../start/server/middleware/metroOptions';\nimport { CommandError } from '../utils/errors';\n\nexport type MetroDevServerOptions = LoadOptions;\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};\nexport type BundleAssetWithFileHashes = Metro.AssetData & {\n fileHashes: string[]; // added by the hashAssets asset plugin\n};\nexport type BundleOutput = {\n artifacts: SerialAsset[];\n assets: readonly BundleAssetWithFileHashes[];\n};\n\nlet nextBuildID = 0;\n\nasync function assertEngineMismatchAsync(\n projectRoot: string,\n exp: Pick<ExpoConfig, 'ios' | 'android' | 'jsEngine'>,\n platform: Platform\n) {\n const isHermesManaged = isEnableHermesManaged(exp, platform);\n\n const paths = getConfigFilePaths(projectRoot);\n const configFilePath = paths.dynamicConfigPath ?? paths.staticConfigPath ?? 'app.json';\n await maybeThrowFromInconsistentEngineAsync(\n projectRoot,\n configFilePath,\n platform,\n isHermesManaged\n );\n}\n\nexport async function createBundlesAsync(\n projectRoot: string,\n projectConfig: ProjectConfig,\n bundleOptions: {\n clear?: boolean;\n maxWorkers?: number;\n platforms: Platform[];\n dev?: boolean;\n minify?: boolean;\n bytecode: boolean;\n sourcemaps?: boolean;\n entryPoint?: string;\n }\n): Promise<Partial<Record<Platform, BundleOutput>>> {\n if (!bundleOptions.platforms.length) {\n return {};\n }\n const { exp, pkg } = projectConfig;\n\n const bundles = await bundleProductionMetroClientAsync(\n projectRoot,\n exp,\n {\n // If not legacy, ignore the target option to prevent warnings from being thrown.\n resetCache: bundleOptions.clear,\n maxWorkers: bundleOptions.maxWorkers,\n },\n bundleOptions.platforms.map((platform: Platform) => ({\n platform,\n entryPoint:\n bundleOptions.entryPoint ?? getEntryWithServerRoot(projectRoot, { platform, pkg }),\n sourcemaps: bundleOptions.sourcemaps,\n minify: bundleOptions.minify,\n bytecode: bundleOptions.bytecode,\n dev: bundleOptions.dev,\n }))\n );\n\n // { ios: bundle, android: bundle }\n return bundleOptions.platforms.reduce<Partial<Record<Platform, BundleOutput>>>(\n (prev, platform, index) => ({\n ...prev,\n [platform]: bundles[index],\n }),\n {}\n );\n}\n\nfunction assertMetroConfig(\n config: ConfigT\n): asserts config is ConfigT & { serializer: NonNullable<ConfigT['serializer']> } {\n if (!config.serializer?.customSerializer) {\n throw new CommandError(\n 'METRO_CONFIG_MALFORMED',\n `The Metro bundler configuration is missing required features from 'expo/metro-config' and cannot be used with Expo CLI. Ensure the metro.config.js file is extending 'expo/metro-config'. Learn more: https://docs.expo.dev/guides/customizing-metro`\n );\n }\n}\n\nasync function bundleProductionMetroClientAsync(\n projectRoot: string,\n expoConfig: ExpoConfig,\n metroOptions: MetroDevServerOptions,\n bundles: BundleOptions[]\n): Promise<BundleOutput[]> {\n // Assert early so the user doesn't have to wait until bundling is complete to find out that\n // Hermes won't be available.\n await Promise.all(\n bundles.map(({ platform }) => assertEngineMismatchAsync(projectRoot, expoConfig, platform))\n );\n\n const { config, reporter } = await loadMetroConfigAsync(projectRoot, metroOptions, {\n exp: expoConfig,\n isExporting: true,\n getMetroBundler() {\n return metroServer.getBundler().getBundler();\n },\n });\n\n assertMetroConfig(config);\n\n const metroServer = await Metro.runMetro(config, {\n watch: false,\n });\n\n const buildAsync = async (bundle: BundleOptions): Promise<BundleOutput> => {\n const buildID = `bundle_${nextBuildID++}_${bundle.platform}`;\n const isHermes = isEnableHermesManaged(expoConfig, bundle.platform);\n if (isHermes) {\n await assertEngineMismatchAsync(projectRoot, expoConfig, bundle.platform);\n }\n const bundleOptions: MetroBundleOptions = {\n ...Server.DEFAULT_BUNDLE_OPTIONS,\n sourceMapUrl: bundle.sourceMapUrl,\n ...getMetroDirectBundleOptionsForExpoConfig(projectRoot, expoConfig, {\n minify: bundle.minify,\n mainModuleName: bundle.entryPoint,\n platform: bundle.platform,\n mode: bundle.dev ? 'development' : 'production',\n engine: isHermes ? 'hermes' : undefined,\n serializerIncludeMaps: bundle.sourcemaps,\n bytecode: bundle.bytecode && isHermes,\n // Bundle splitting on web-only for now.\n // serializerOutput: bundle.platform === 'web' ? 'static' : undefined,\n serializerOutput: 'static',\n isExporting: true,\n }),\n bundleType: 'bundle',\n inlineSourceMap: false,\n createModuleIdFactory: config.serializer.createModuleIdFactory,\n onProgress: (transformedFileCount: number, totalFileCount: number) => {\n reporter.update({\n buildID,\n type: 'bundle_transform_progressed',\n transformedFileCount,\n totalFileCount,\n });\n },\n };\n\n const bundleDetails = {\n ...bundleOptions,\n buildID,\n };\n reporter.update({\n buildID,\n type: 'bundle_build_started',\n bundleDetails,\n });\n try {\n const artifacts = await forkMetroBuildAsync(metroServer, bundleOptions);\n reporter.update({\n buildID,\n type: 'bundle_build_done',\n });\n return artifacts;\n } catch (error) {\n reporter.update({\n buildID,\n type: 'bundle_build_failed',\n });\n\n throw error;\n }\n };\n\n try {\n return await Promise.all(bundles.map((bundle) => buildAsync(bundle)));\n } catch (error) {\n // New line so errors don't show up inline with the progress bar\n console.log('');\n throw error;\n } finally {\n metroServer.end();\n }\n}\n\n// Forked out of Metro because the `this._getServerRootDir()` doesn't match the development\n// behavior.\nexport async function getAssets(metro: Metro.Server, options: MetroBundleOptions) {\n const { entryFile, onProgress, resolverOptions, transformOptions } = splitBundleOptions(options);\n\n // @ts-expect-error: _bundler isn't exposed on the type.\n const dependencies = await metro._bundler.getDependencies(\n [entryFile],\n transformOptions,\n resolverOptions,\n { onProgress, shallow: false, lazy: false }\n );\n\n // @ts-expect-error\n const _config = metro._config as ConfigT;\n\n return getMetroAssets(dependencies, {\n processModuleFilter: _config.serializer.processModuleFilter,\n assetPlugins: _config.transformer.assetPlugins,\n platform: transformOptions.platform!,\n projectRoot: _config.projectRoot, // this._getServerRootDir(),\n publicPath: _config.transformer.publicPath,\n });\n}\n\nfunction isMetroServerInstance(metro: Metro.Server): metro is Metro.Server & {\n _shouldAddModuleToIgnoreList: (module: Module<MixedOutput>) => boolean;\n _bundler: IncrementalBundler;\n _config: ConfigT;\n _createModuleId: (path: string) => number;\n _resolveRelativePath(\n filePath: string,\n {\n relativeTo,\n resolverOptions,\n transformOptions,\n }: {\n relativeTo: 'project' | 'server';\n resolverOptions: ResolverInputOptions;\n transformOptions: TransformInputOptions;\n }\n ): Promise<string>;\n _getEntryPointAbsolutePath(entryFile: string): string;\n _getSortedModules(graph: ReadOnlyGraph): Module<MixedOutput>[];\n} {\n return '_shouldAddModuleToIgnoreList' in metro;\n}\n\nasync function forkMetroBuildAsync(\n metro: Metro.Server,\n options: ExpoMetroBundleOptions\n): Promise<{ artifacts: SerialAsset[]; assets: readonly BundleAssetWithFileHashes[] }> {\n if (!isMetroServerInstance(metro)) {\n throw new Error('Expected Metro server instance to have private functions exposed.');\n }\n\n if (options.serializerOptions?.output !== 'static') {\n throw new Error('Only multi-serializer output is supported.');\n }\n\n const {\n entryFile,\n graphOptions,\n onProgress,\n resolverOptions,\n serializerOptions,\n transformOptions,\n } = splitBundleOptions(options);\n\n const { prepend, graph } = await metro._bundler.buildGraph(\n entryFile,\n transformOptions,\n resolverOptions,\n {\n onProgress,\n shallow: graphOptions.shallow,\n // @ts-expect-error\n lazy: graphOptions.lazy,\n }\n );\n\n const entryPoint = metro._getEntryPointAbsolutePath(entryFile);\n\n const bundleOptions = {\n asyncRequireModulePath: await metro._resolveRelativePath(\n metro._config.transformer.asyncRequireModulePath,\n {\n relativeTo: 'project',\n resolverOptions,\n transformOptions,\n }\n ),\n processModuleFilter: metro._config.serializer.processModuleFilter,\n createModuleId: metro._createModuleId,\n getRunModuleStatement: metro._config.serializer.getRunModuleStatement,\n dev: transformOptions.dev,\n includeAsyncPaths: graphOptions.lazy,\n projectRoot: metro._config.projectRoot,\n modulesOnly: serializerOptions.modulesOnly,\n runBeforeMainModule: metro._config.serializer.getModulesRunBeforeMainModule(\n path.relative(metro._config.projectRoot, entryPoint)\n ),\n runModule: serializerOptions.runModule,\n sourceMapUrl: serializerOptions.sourceMapUrl,\n sourceUrl: serializerOptions.sourceUrl,\n inlineSourceMap: serializerOptions.inlineSourceMap,\n serverRoot: metro._config.server.unstable_serverRoot ?? metro._config.projectRoot,\n shouldAddToIgnoreList: (module: Module<MixedOutput>) =>\n metro._shouldAddModuleToIgnoreList(module),\n // Custom options we pass to the serializer to emulate the URL query parameters.\n serializerOptions: options.serializerOptions,\n };\n\n assertMetroConfig(metro._config);\n\n const bundle = await metro._config.serializer.customSerializer!(\n entryPoint,\n // @ts-expect-error: Metro is typed incorrectly\n prepend,\n graph,\n bundleOptions\n );\n\n try {\n const parsed = typeof bundle === 'string' ? JSON.parse(bundle) : bundle;\n\n assert(\n 'artifacts' in parsed && Array.isArray(parsed.artifacts),\n 'Expected serializer to return an object with key artifacts to contain an array of serial assets.'\n );\n return parsed;\n } catch (error: any) {\n throw new Error(\n 'Serializer did not return expected format. The project copy of `expo/metro-config` may be out of date. Error: ' +\n error.message\n );\n }\n}\n"],"names":["createBundlesAsync","getAssets","nextBuildID","assertEngineMismatchAsync","projectRoot","exp","platform","isHermesManaged","isEnableHermesManaged","paths","getConfigFilePaths","configFilePath","dynamicConfigPath","staticConfigPath","maybeThrowFromInconsistentEngineAsync","projectConfig","bundleOptions","platforms","length","pkg","bundles","bundleProductionMetroClientAsync","resetCache","clear","maxWorkers","map","entryPoint","getEntryWithServerRoot","sourcemaps","minify","bytecode","dev","reduce","prev","index","assertMetroConfig","config","serializer","customSerializer","CommandError","expoConfig","metroOptions","Promise","all","reporter","loadMetroConfigAsync","isExporting","getMetroBundler","metroServer","getBundler","Metro","runMetro","watch","buildAsync","bundle","buildID","isHermes","Server","DEFAULT_BUNDLE_OPTIONS","sourceMapUrl","getMetroDirectBundleOptionsForExpoConfig","mainModuleName","mode","engine","undefined","serializerIncludeMaps","serializerOutput","bundleType","inlineSourceMap","createModuleIdFactory","onProgress","transformedFileCount","totalFileCount","update","type","bundleDetails","artifacts","forkMetroBuildAsync","error","console","log","end","metro","options","entryFile","resolverOptions","transformOptions","splitBundleOptions","dependencies","_bundler","getDependencies","shallow","lazy","_config","getMetroAssets","processModuleFilter","assetPlugins","transformer","publicPath","isMetroServerInstance","Error","serializerOptions","output","graphOptions","prepend","graph","buildGraph","_getEntryPointAbsolutePath","asyncRequireModulePath","_resolveRelativePath","relativeTo","createModuleId","_createModuleId","getRunModuleStatement","includeAsyncPaths","modulesOnly","runBeforeMainModule","getModulesRunBeforeMainModule","path","relative","runModule","sourceUrl","serverRoot","server","unstable_serverRoot","shouldAddToIgnoreList","module","_shouldAddModuleToIgnoreList","parsed","JSON","parse","assert","Array","isArray","message"],"mappings":"AAAA;;;;QAgEsBA,kBAAkB,GAAlBA,kBAAkB;QA+JlBC,SAAS,GAATA,SAAS;SA/NyC,OAAc;yBAAd,cAAc;IAAd,OAAc;;;;;SAG3D,UAAqD;gDAArD,qDAAqD;IAArD,UAAqD;;;;;SAC7D,OAAQ;gDAAR,QAAQ;IAAR,OAAQ;;;;;SAC+B,MAAO;gDAAP,OAAO;IAAP,MAAO;;;;;SAG9C,OAAkB;gDAAlB,kBAAkB;IAAlB,OAAkB;;;;;SACN,mBAAkC;gDAAlC,kCAAkC;IAAlC,mBAAkC;;;;;SAMhD,KAAM;gDAAN,MAAM;IAAN,KAAM;;;;;AAEsD,IAAA,aAAgB,WAAhB,gBAAgB,CAAA;AACxD,IAAA,iBAAwC,WAAxC,wCAAwC,CAAA;AACtC,IAAA,mBAA+C,WAA/C,+CAA+C,CAAA;AAI/E,IAAA,aAAyC,WAAzC,yCAAyC,CAAA;AACnB,IAAA,OAAiB,WAAjB,iBAAiB,CAAA;;;;;;AAqB9C,IAAIC,WAAW,GAAG,CAAC,AAAC;AAEpB,eAAeC,yBAAyB,CACtCC,WAAmB,EACnBC,GAAqD,EACrDC,QAAkB,EAClB;IACA,MAAMC,eAAe,GAAGC,CAAAA,GAAAA,aAAqB,AAAe,CAAA,sBAAf,CAACH,GAAG,EAAEC,QAAQ,CAAC,AAAC;IAE7D,MAAMG,KAAK,GAAGC,OAAkB,qBAAA,CAACN,WAAW,CAAC,AAAC;QACvBK,kBAAuB,EAAvBA,GAAiD;IAAxE,MAAME,cAAc,GAAGF,CAAAA,GAAiD,GAAjDA,CAAAA,kBAAuB,GAAvBA,KAAK,CAACG,iBAAiB,YAAvBH,kBAAuB,GAAIA,KAAK,CAACI,gBAAgB,YAAjDJ,GAAiD,GAAI,UAAU,AAAC;IACvF,MAAMK,CAAAA,GAAAA,aAAqC,AAK1C,CAAA,sCAL0C,CACzCV,WAAW,EACXO,cAAc,EACdL,QAAQ,EACRC,eAAe,CAChB,CAAC;CACH;AAEM,eAAeP,kBAAkB,CACtCI,WAAmB,EACnBW,aAA4B,EAC5BC,aASC,EACiD;IAClD,IAAI,CAACA,aAAa,CAACC,SAAS,CAACC,MAAM,EAAE;QACnC,OAAO,EAAE,CAAC;KACX;IACD,MAAM,EAAEb,GAAG,CAAA,EAAEc,GAAG,CAAA,EAAE,GAAGJ,aAAa,AAAC;QAa7BC,WAAwB;IAX9B,MAAMI,OAAO,GAAG,MAAMC,gCAAgC,CACpDjB,WAAW,EACXC,GAAG,EACH;QACE,iFAAiF;QACjFiB,UAAU,EAAEN,aAAa,CAACO,KAAK;QAC/BC,UAAU,EAAER,aAAa,CAACQ,UAAU;KACrC,EACDR,aAAa,CAACC,SAAS,CAACQ,GAAG,CAAC,CAACnB,QAAkB,GAAK,CAAC;YACnDA,QAAQ;YACRoB,UAAU,EACRV,CAAAA,WAAwB,GAAxBA,aAAa,CAACU,UAAU,YAAxBV,WAAwB,GAAIW,CAAAA,GAAAA,mBAAsB,AAAgC,CAAA,uBAAhC,CAACvB,WAAW,EAAE;gBAAEE,QAAQ;gBAAEa,GAAG;aAAE,CAAC;YACpFS,UAAU,EAAEZ,aAAa,CAACY,UAAU;YACpCC,MAAM,EAAEb,aAAa,CAACa,MAAM;YAC5BC,QAAQ,EAAEd,aAAa,CAACc,QAAQ;YAChCC,GAAG,EAAEf,aAAa,CAACe,GAAG;SACvB,CAAC;IAAA,CAAC,CACJ,AAAC;IAEF,mCAAmC;IACnC,OAAOf,aAAa,CAACC,SAAS,CAACe,MAAM,CACnC,CAACC,IAAI,EAAE3B,QAAQ,EAAE4B,KAAK,GAAK,CAAC;YAC1B,GAAGD,IAAI;YACP,CAAC3B,QAAQ,CAAC,EAAEc,OAAO,CAACc,KAAK,CAAC;SAC3B,CAAC;IAAA,EACF,EAAE,CACH,CAAC;CACH;AAED,SAASC,iBAAiB,CACxBC,MAAe,EACiE;QAC3EA,GAAiB;IAAtB,IAAI,CAACA,CAAAA,CAAAA,GAAiB,GAAjBA,MAAM,CAACC,UAAU,SAAkB,GAAnCD,KAAAA,CAAmC,GAAnCA,GAAiB,CAAEE,gBAAgB,CAAA,EAAE;QACxC,MAAM,IAAIC,OAAY,aAAA,CACpB,wBAAwB,EACxB,CAAC,oPAAoP,CAAC,CACvP,CAAC;KACH;CACF;AAED,eAAelB,gCAAgC,CAC7CjB,WAAmB,EACnBoC,UAAsB,EACtBC,YAAmC,EACnCrB,OAAwB,EACC;IACzB,4FAA4F;IAC5F,6BAA6B;IAC7B,MAAMsB,OAAO,CAACC,GAAG,CACfvB,OAAO,CAACK,GAAG,CAAC,CAAC,EAAEnB,QAAQ,CAAA,EAAE,GAAKH,yBAAyB,CAACC,WAAW,EAAEoC,UAAU,EAAElC,QAAQ,CAAC;IAAA,CAAC,CAC5F,CAAC;IAEF,MAAM,EAAE8B,MAAM,CAAA,EAAEQ,QAAQ,CAAA,EAAE,GAAG,MAAMC,CAAAA,GAAAA,iBAAoB,AAMrD,CAAA,qBANqD,CAACzC,WAAW,EAAEqC,YAAY,EAAE;QACjFpC,GAAG,EAAEmC,UAAU;QACfM,WAAW,EAAE,IAAI;QACjBC,eAAe,IAAG;YAChB,OAAOC,WAAW,CAACC,UAAU,EAAE,CAACA,UAAU,EAAE,CAAC;SAC9C;KACF,CAAC,AAAC;IAEHd,iBAAiB,CAACC,MAAM,CAAC,CAAC;IAE1B,MAAMY,WAAW,GAAG,MAAME,MAAK,UAAA,CAACC,QAAQ,CAACf,MAAM,EAAE;QAC/CgB,KAAK,EAAE,KAAK;KACb,CAAC,AAAC;IAEH,MAAMC,UAAU,GAAG,OAAOC,MAAqB,GAA4B;QACzE,MAAMC,OAAO,GAAG,CAAC,OAAO,EAAErD,WAAW,EAAE,CAAC,CAAC,EAAEoD,MAAM,CAAChD,QAAQ,CAAC,CAAC,AAAC;QAC7D,MAAMkD,QAAQ,GAAGhD,CAAAA,GAAAA,aAAqB,AAA6B,CAAA,sBAA7B,CAACgC,UAAU,EAAEc,MAAM,CAAChD,QAAQ,CAAC,AAAC;QACpE,IAAIkD,QAAQ,EAAE;YACZ,MAAMrD,yBAAyB,CAACC,WAAW,EAAEoC,UAAU,EAAEc,MAAM,CAAChD,QAAQ,CAAC,CAAC;SAC3E;QACD,MAAMU,aAAa,GAAuB;YACxC,GAAGyC,OAAM,UAAA,CAACC,sBAAsB;YAChCC,YAAY,EAAEL,MAAM,CAACK,YAAY;YACjC,GAAGC,CAAAA,GAAAA,aAAwC,AAYzC,CAAA,yCAZyC,CAACxD,WAAW,EAAEoC,UAAU,EAAE;gBACnEX,MAAM,EAAEyB,MAAM,CAACzB,MAAM;gBACrBgC,cAAc,EAAEP,MAAM,CAAC5B,UAAU;gBACjCpB,QAAQ,EAAEgD,MAAM,CAAChD,QAAQ;gBACzBwD,IAAI,EAAER,MAAM,CAACvB,GAAG,GAAG,aAAa,GAAG,YAAY;gBAC/CgC,MAAM,EAAEP,QAAQ,GAAG,QAAQ,GAAGQ,SAAS;gBACvCC,qBAAqB,EAAEX,MAAM,CAAC1B,UAAU;gBACxCE,QAAQ,EAAEwB,MAAM,CAACxB,QAAQ,IAAI0B,QAAQ;gBACrC,wCAAwC;gBACxC,sEAAsE;gBACtEU,gBAAgB,EAAE,QAAQ;gBAC1BpB,WAAW,EAAE,IAAI;aAClB,CAAC;YACFqB,UAAU,EAAE,QAAQ;YACpBC,eAAe,EAAE,KAAK;YACtBC,qBAAqB,EAAEjC,MAAM,CAACC,UAAU,CAACgC,qBAAqB;YAC9DC,UAAU,EAAE,CAACC,oBAA4B,EAAEC,cAAsB,GAAK;gBACpE5B,QAAQ,CAAC6B,MAAM,CAAC;oBACdlB,OAAO;oBACPmB,IAAI,EAAE,6BAA6B;oBACnCH,oBAAoB;oBACpBC,cAAc;iBACf,CAAC,CAAC;aACJ;SACF,AAAC;QAEF,MAAMG,aAAa,GAAG;YACpB,GAAG3D,aAAa;YAChBuC,OAAO;SACR,AAAC;QACFX,QAAQ,CAAC6B,MAAM,CAAC;YACdlB,OAAO;YACPmB,IAAI,EAAE,sBAAsB;YAC5BC,aAAa;SACd,CAAC,CAAC;QACH,IAAI;YACF,MAAMC,SAAS,GAAG,MAAMC,mBAAmB,CAAC7B,WAAW,EAAEhC,aAAa,CAAC,AAAC;YACxE4B,QAAQ,CAAC6B,MAAM,CAAC;gBACdlB,OAAO;gBACPmB,IAAI,EAAE,mBAAmB;aAC1B,CAAC,CAAC;YACH,OAAOE,SAAS,CAAC;SAClB,CAAC,OAAOE,KAAK,EAAE;YACdlC,QAAQ,CAAC6B,MAAM,CAAC;gBACdlB,OAAO;gBACPmB,IAAI,EAAE,qBAAqB;aAC5B,CAAC,CAAC;YAEH,MAAMI,KAAK,CAAC;SACb;KACF,AAAC;IAEF,IAAI;QACF,OAAO,MAAMpC,OAAO,CAACC,GAAG,CAACvB,OAAO,CAACK,GAAG,CAAC,CAAC6B,MAAM,GAAKD,UAAU,CAACC,MAAM,CAAC;QAAA,CAAC,CAAC,CAAC;KACvE,CAAC,OAAOwB,KAAK,EAAE;QACd,gEAAgE;QAChEC,OAAO,CAACC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,MAAMF,KAAK,CAAC;KACb,QAAS;QACR9B,WAAW,CAACiC,GAAG,EAAE,CAAC;KACnB;CACF;AAIM,eAAehF,SAAS,CAACiF,KAAmB,EAAEC,OAA2B,EAAE;IAChF,MAAM,EAAEC,SAAS,CAAA,EAAEd,UAAU,CAAA,EAAEe,eAAe,CAAA,EAAEC,gBAAgB,CAAA,EAAE,GAAGC,mBAAkB,UAAA,CAACJ,OAAO,CAAC,AAAC;IAEjG,wDAAwD;IACxD,MAAMK,YAAY,GAAG,MAAMN,KAAK,CAACO,QAAQ,CAACC,eAAe,CACvD;QAACN,SAAS;KAAC,EACXE,gBAAgB,EAChBD,eAAe,EACf;QAAEf,UAAU;QAAEqB,OAAO,EAAE,KAAK;QAAEC,IAAI,EAAE,KAAK;KAAE,CAC5C,AAAC;IAEF,mBAAmB;IACnB,MAAMC,QAAO,GAAGX,KAAK,CAACW,OAAO,AAAW,AAAC;IAEzC,OAAOC,UAAc,UAAA,CAACN,YAAY,EAAE;QAClCO,mBAAmB,EAAEF,QAAO,CAACxD,UAAU,CAAC0D,mBAAmB;QAC3DC,YAAY,EAAEH,QAAO,CAACI,WAAW,CAACD,YAAY;QAC9C1F,QAAQ,EAAEgF,gBAAgB,CAAChF,QAAQ;QACnCF,WAAW,EAAEyF,QAAO,CAACzF,WAAW;QAChC8F,UAAU,EAAEL,QAAO,CAACI,WAAW,CAACC,UAAU;KAC3C,CAAC,CAAC;CACJ;AAED,SAASC,qBAAqB,CAACjB,KAAmB,EAmBhD;IACA,OAAO,8BAA8B,IAAIA,KAAK,CAAC;CAChD;AAED,eAAeL,mBAAmB,CAChCK,KAAmB,EACnBC,OAA+B,EACsD;QAKjFA,GAAyB;IAJ7B,IAAI,CAACgB,qBAAqB,CAACjB,KAAK,CAAC,EAAE;QACjC,MAAM,IAAIkB,KAAK,CAAC,mEAAmE,CAAC,CAAC;KACtF;IAED,IAAIjB,CAAAA,CAAAA,GAAyB,GAAzBA,OAAO,CAACkB,iBAAiB,SAAQ,GAAjClB,KAAAA,CAAiC,GAAjCA,GAAyB,CAAEmB,MAAM,CAAA,KAAK,QAAQ,EAAE;QAClD,MAAM,IAAIF,KAAK,CAAC,4CAA4C,CAAC,CAAC;KAC/D;IAED,MAAM,EACJhB,SAAS,CAAA,EACTmB,YAAY,CAAA,EACZjC,UAAU,CAAA,EACVe,eAAe,CAAA,EACfgB,iBAAiB,CAAA,EACjBf,gBAAgB,CAAA,IACjB,GAAGC,mBAAkB,UAAA,CAACJ,OAAO,CAAC,AAAC;IAEhC,MAAM,EAAEqB,OAAO,CAAA,EAAEC,KAAK,CAAA,EAAE,GAAG,MAAMvB,KAAK,CAACO,QAAQ,CAACiB,UAAU,CACxDtB,SAAS,EACTE,gBAAgB,EAChBD,eAAe,EACf;QACEf,UAAU;QACVqB,OAAO,EAAEY,YAAY,CAACZ,OAAO;QAC7B,mBAAmB;QACnBC,IAAI,EAAEW,YAAY,CAACX,IAAI;KACxB,CACF,AAAC;IAEF,MAAMlE,UAAU,GAAGwD,KAAK,CAACyB,0BAA0B,CAACvB,SAAS,CAAC,AAAC;QAyBjDF,oBAAwC;IAvBtD,MAAMlE,aAAa,GAAG;QACpB4F,sBAAsB,EAAE,MAAM1B,KAAK,CAAC2B,oBAAoB,CACtD3B,KAAK,CAACW,OAAO,CAACI,WAAW,CAACW,sBAAsB,EAChD;YACEE,UAAU,EAAE,SAAS;YACrBzB,eAAe;YACfC,gBAAgB;SACjB,CACF;QACDS,mBAAmB,EAAEb,KAAK,CAACW,OAAO,CAACxD,UAAU,CAAC0D,mBAAmB;QACjEgB,cAAc,EAAE7B,KAAK,CAAC8B,eAAe;QACrCC,qBAAqB,EAAE/B,KAAK,CAACW,OAAO,CAACxD,UAAU,CAAC4E,qBAAqB;QACrElF,GAAG,EAAEuD,gBAAgB,CAACvD,GAAG;QACzBmF,iBAAiB,EAAEX,YAAY,CAACX,IAAI;QACpCxF,WAAW,EAAE8E,KAAK,CAACW,OAAO,CAACzF,WAAW;QACtC+G,WAAW,EAAEd,iBAAiB,CAACc,WAAW;QAC1CC,mBAAmB,EAAElC,KAAK,CAACW,OAAO,CAACxD,UAAU,CAACgF,6BAA6B,CACzEC,KAAI,UAAA,CAACC,QAAQ,CAACrC,KAAK,CAACW,OAAO,CAACzF,WAAW,EAAEsB,UAAU,CAAC,CACrD;QACD8F,SAAS,EAAEnB,iBAAiB,CAACmB,SAAS;QACtC7D,YAAY,EAAE0C,iBAAiB,CAAC1C,YAAY;QAC5C8D,SAAS,EAAEpB,iBAAiB,CAACoB,SAAS;QACtCrD,eAAe,EAAEiC,iBAAiB,CAACjC,eAAe;QAClDsD,UAAU,EAAExC,CAAAA,oBAAwC,GAAxCA,KAAK,CAACW,OAAO,CAAC8B,MAAM,CAACC,mBAAmB,YAAxC1C,oBAAwC,GAAIA,KAAK,CAACW,OAAO,CAACzF,WAAW;QACjFyH,qBAAqB,EAAE,CAACC,MAA2B,GACjD5C,KAAK,CAAC6C,4BAA4B,CAACD,MAAM,CAAC;QAAA;QAC5C,gFAAgF;QAChFzB,iBAAiB,EAAElB,OAAO,CAACkB,iBAAiB;KAC7C,AAAC;IAEFlE,iBAAiB,CAAC+C,KAAK,CAACW,OAAO,CAAC,CAAC;IAEjC,MAAMvC,MAAM,GAAG,MAAM4B,KAAK,CAACW,OAAO,CAACxD,UAAU,CAACC,gBAAgB,CAC5DZ,UAAU,EACV,+CAA+C;IAC/C8E,OAAO,EACPC,KAAK,EACLzF,aAAa,CACd,AAAC;IAEF,IAAI;QACF,MAAMgH,MAAM,GAAG,OAAO1E,MAAM,KAAK,QAAQ,GAAG2E,IAAI,CAACC,KAAK,CAAC5E,MAAM,CAAC,GAAGA,MAAM,AAAC;QAExE6E,OAAM,UAAA,CACJ,WAAW,IAAIH,MAAM,IAAII,KAAK,CAACC,OAAO,CAACL,MAAM,CAACpD,SAAS,CAAC,EACxD,kGAAkG,CACnG,CAAC;QACF,OAAOoD,MAAM,CAAC;KACf,CAAC,OAAOlD,KAAK,EAAO;QACnB,MAAM,IAAIsB,KAAK,CACb,gHAAgH,GAC9GtB,KAAK,CAACwD,OAAO,CAChB,CAAC;KACH;CACF"}
@@ -3,13 +3,19 @@ Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
5
  exports.getPublicExpoManifestAsync = getPublicExpoManifestAsync;
6
- var _config = require("@expo/config");
6
+ function _config() {
7
+ const data = require("@expo/config");
8
+ _config = function() {
9
+ return data;
10
+ };
11
+ return data;
12
+ }
7
13
  var _getResolvedLocales = require("./getResolvedLocales");
8
14
  var _env = require("../utils/env");
9
15
  var _errors = require("../utils/errors");
10
16
  async function getPublicExpoManifestAsync(projectRoot, { skipValidation } = {}) {
11
17
  // Read the config in public mode which strips the `hooks`.
12
- const { exp } = (0, _config).getConfig(projectRoot, {
18
+ const { exp } = _config().getConfig(projectRoot, {
13
19
  isPublicConfig: true,
14
20
  // This shouldn't be needed since the CLI is vendored in `expo`.
15
21
  skipSDKVersionRequirement: true
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/export/getPublicExpoManifest.ts"],"sourcesContent":["import { ExpoConfig, getConfig } from '@expo/config';\n\nimport { LocaleMap, getResolvedLocalesAsync } from './getResolvedLocales';\nimport { env } from '../utils/env';\nimport { CommandError } from '../utils/errors';\n\n/** Get the public Expo manifest from the local project config. */\nexport async function getPublicExpoManifestAsync(\n projectRoot: string,\n { skipValidation }: { skipValidation?: boolean } = {}\n): Promise<ExpoConfig & { locales: LocaleMap; sdkVersion: string }> {\n // Read the config in public mode which strips the `hooks`.\n const { exp } = getConfig(projectRoot, {\n isPublicConfig: true,\n // This shouldn't be needed since the CLI is vendored in `expo`.\n skipSDKVersionRequirement: true,\n });\n\n // Only allow projects to be published with UNVERSIONED if a correct token is set in env\n if (\n !skipValidation &&\n exp.sdkVersion === 'UNVERSIONED' &&\n !env.EXPO_SKIP_MANIFEST_VALIDATION_TOKEN\n ) {\n throw new CommandError('INVALID_OPTIONS', 'Cannot publish with sdkVersion UNVERSIONED.');\n }\n\n return {\n ...exp,\n locales: await getResolvedLocalesAsync(projectRoot, exp),\n sdkVersion: exp.sdkVersion!,\n };\n}\n"],"names":["getPublicExpoManifestAsync","projectRoot","skipValidation","exp","getConfig","isPublicConfig","skipSDKVersionRequirement","sdkVersion","env","EXPO_SKIP_MANIFEST_VALIDATION_TOKEN","CommandError","locales","getResolvedLocalesAsync"],"mappings":"AAAA;;;;QAOsBA,0BAA0B,GAA1BA,0BAA0B;AAPV,IAAA,OAAc,WAAd,cAAc,CAAA;AAED,IAAA,mBAAsB,WAAtB,sBAAsB,CAAA;AACrD,IAAA,IAAc,WAAd,cAAc,CAAA;AACL,IAAA,OAAiB,WAAjB,iBAAiB,CAAA;AAGvC,eAAeA,0BAA0B,CAC9CC,WAAmB,EACnB,EAAEC,cAAc,CAAA,EAAgC,GAAG,EAAE,EACa;IAClE,2DAA2D;IAC3D,MAAM,EAAEC,GAAG,CAAA,EAAE,GAAGC,CAAAA,GAAAA,OAAS,AAIvB,CAAA,UAJuB,CAACH,WAAW,EAAE;QACrCI,cAAc,EAAE,IAAI;QACpB,gEAAgE;QAChEC,yBAAyB,EAAE,IAAI;KAChC,CAAC,AAAC;IAEH,wFAAwF;IACxF,IACE,CAACJ,cAAc,IACfC,GAAG,CAACI,UAAU,KAAK,aAAa,IAChC,CAACC,IAAG,IAAA,CAACC,mCAAmC,EACxC;QACA,MAAM,IAAIC,OAAY,aAAA,CAAC,iBAAiB,EAAE,6CAA6C,CAAC,CAAC;KAC1F;IAED,OAAO;QACL,GAAGP,GAAG;QACNQ,OAAO,EAAE,MAAMC,CAAAA,GAAAA,mBAAuB,AAAkB,CAAA,wBAAlB,CAACX,WAAW,EAAEE,GAAG,CAAC;QACxDI,UAAU,EAAEJ,GAAG,CAACI,UAAU;KAC3B,CAAC;CACH"}
1
+ {"version":3,"sources":["../../../src/export/getPublicExpoManifest.ts"],"sourcesContent":["import { ExpoConfig, getConfig } from '@expo/config';\n\nimport { LocaleMap, getResolvedLocalesAsync } from './getResolvedLocales';\nimport { env } from '../utils/env';\nimport { CommandError } from '../utils/errors';\n\n/** Get the public Expo manifest from the local project config. */\nexport async function getPublicExpoManifestAsync(\n projectRoot: string,\n { skipValidation }: { skipValidation?: boolean } = {}\n): Promise<ExpoConfig & { locales: LocaleMap; sdkVersion: string }> {\n // Read the config in public mode which strips the `hooks`.\n const { exp } = getConfig(projectRoot, {\n isPublicConfig: true,\n // This shouldn't be needed since the CLI is vendored in `expo`.\n skipSDKVersionRequirement: true,\n });\n\n // Only allow projects to be published with UNVERSIONED if a correct token is set in env\n if (\n !skipValidation &&\n exp.sdkVersion === 'UNVERSIONED' &&\n !env.EXPO_SKIP_MANIFEST_VALIDATION_TOKEN\n ) {\n throw new CommandError('INVALID_OPTIONS', 'Cannot publish with sdkVersion UNVERSIONED.');\n }\n\n return {\n ...exp,\n locales: await getResolvedLocalesAsync(projectRoot, exp),\n sdkVersion: exp.sdkVersion!,\n };\n}\n"],"names":["getPublicExpoManifestAsync","projectRoot","skipValidation","exp","getConfig","isPublicConfig","skipSDKVersionRequirement","sdkVersion","env","EXPO_SKIP_MANIFEST_VALIDATION_TOKEN","CommandError","locales","getResolvedLocalesAsync"],"mappings":"AAAA;;;;QAOsBA,0BAA0B,GAA1BA,0BAA0B;SAPV,OAAc;yBAAd,cAAc;IAAd,OAAc;;;;;AAED,IAAA,mBAAsB,WAAtB,sBAAsB,CAAA;AACrD,IAAA,IAAc,WAAd,cAAc,CAAA;AACL,IAAA,OAAiB,WAAjB,iBAAiB,CAAA;AAGvC,eAAeA,0BAA0B,CAC9CC,WAAmB,EACnB,EAAEC,cAAc,CAAA,EAAgC,GAAG,EAAE,EACa;IAClE,2DAA2D;IAC3D,MAAM,EAAEC,GAAG,CAAA,EAAE,GAAGC,OAAS,YAAA,CAACH,WAAW,EAAE;QACrCI,cAAc,EAAE,IAAI;QACpB,gEAAgE;QAChEC,yBAAyB,EAAE,IAAI;KAChC,CAAC,AAAC;IAEH,wFAAwF;IACxF,IACE,CAACJ,cAAc,IACfC,GAAG,CAACI,UAAU,KAAK,aAAa,IAChC,CAACC,IAAG,IAAA,CAACC,mCAAmC,EACxC;QACA,MAAM,IAAIC,OAAY,aAAA,CAAC,iBAAiB,EAAE,6CAA6C,CAAC,CAAC;KAC1F;IAED,OAAO;QACL,GAAGP,GAAG;QACNQ,OAAO,EAAE,MAAMC,CAAAA,GAAAA,mBAAuB,AAAkB,CAAA,wBAAlB,CAACX,WAAW,EAAEE,GAAG,CAAC;QACxDI,UAAU,EAAEJ,GAAG,CAACI,UAAU;KAC3B,CAAC;CACH"}
@@ -3,8 +3,20 @@ Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
5
  exports.getResolvedLocalesAsync = getResolvedLocalesAsync;
6
- var _jsonFile = _interopRequireDefault(require("@expo/json-file"));
7
- var _path = _interopRequireDefault(require("path"));
6
+ function _jsonFile() {
7
+ const data = _interopRequireDefault(require("@expo/json-file"));
8
+ _jsonFile = function() {
9
+ return data;
10
+ };
11
+ return data;
12
+ }
13
+ function _path() {
14
+ const data = _interopRequireDefault(require("path"));
15
+ _path = function() {
16
+ return data;
17
+ };
18
+ return data;
19
+ }
8
20
  var _errors = require("../utils/errors");
9
21
  function _interopRequireDefault(obj) {
10
22
  return obj && obj.__esModule ? obj : {
@@ -19,7 +31,7 @@ async function getResolvedLocalesAsync(projectRoot, exp) {
19
31
  for (const [lang, localeJsonPath] of Object.entries(exp.locales)){
20
32
  if (typeof localeJsonPath === "string") {
21
33
  try {
22
- locales[lang] = await _jsonFile.default.readAsync(_path.default.join(projectRoot, localeJsonPath));
34
+ locales[lang] = await _jsonFile().default.readAsync(_path().default.join(projectRoot, localeJsonPath));
23
35
  } catch (error) {
24
36
  throw new _errors.CommandError("EXPO_CONFIG", JSON.stringify(error));
25
37
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/export/getResolvedLocales.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config';\nimport JsonFile, { JSONObject } from '@expo/json-file';\nimport path from 'path';\n\nimport { CommandError } from '../utils/errors';\n\nexport type LocaleMap = Record<string, JSONObject>;\n\n// Similar to how we resolve locales in `@expo/config-plugins`\nexport async function getResolvedLocalesAsync(\n projectRoot: string,\n exp: Pick<ExpoConfig, 'locales'>\n): Promise<LocaleMap> {\n if (!exp.locales) {\n return {};\n }\n\n const locales: LocaleMap = {};\n for (const [lang, localeJsonPath] of Object.entries(exp.locales)) {\n if (typeof localeJsonPath === 'string') {\n try {\n locales[lang] = await JsonFile.readAsync(path.join(projectRoot, localeJsonPath));\n } catch (error: any) {\n throw new CommandError('EXPO_CONFIG', JSON.stringify(error));\n }\n } else {\n // In the off chance that someone defined the locales json in the config, pass it directly to the object.\n // We do this to make the types more elegant.\n locales[lang] = localeJsonPath;\n }\n }\n return locales;\n}\n"],"names":["getResolvedLocalesAsync","projectRoot","exp","locales","lang","localeJsonPath","Object","entries","JsonFile","readAsync","path","join","error","CommandError","JSON","stringify"],"mappings":"AAAA;;;;QASsBA,uBAAuB,GAAvBA,uBAAuB;AARR,IAAA,SAAiB,kCAAjB,iBAAiB,EAAA;AACrC,IAAA,KAAM,kCAAN,MAAM,EAAA;AAEM,IAAA,OAAiB,WAAjB,iBAAiB,CAAA;;;;;;AAKvC,eAAeA,uBAAuB,CAC3CC,WAAmB,EACnBC,GAAgC,EACZ;IACpB,IAAI,CAACA,GAAG,CAACC,OAAO,EAAE;QAChB,OAAO,EAAE,CAAC;KACX;IAED,MAAMA,OAAO,GAAc,EAAE,AAAC;IAC9B,KAAK,MAAM,CAACC,IAAI,EAAEC,cAAc,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACL,GAAG,CAACC,OAAO,CAAC,CAAE;QAChE,IAAI,OAAOE,cAAc,KAAK,QAAQ,EAAE;YACtC,IAAI;gBACFF,OAAO,CAACC,IAAI,CAAC,GAAG,MAAMI,SAAQ,QAAA,CAACC,SAAS,CAACC,KAAI,QAAA,CAACC,IAAI,CAACV,WAAW,EAAEI,cAAc,CAAC,CAAC,CAAC;aAClF,CAAC,OAAOO,KAAK,EAAO;gBACnB,MAAM,IAAIC,OAAY,aAAA,CAAC,aAAa,EAAEC,IAAI,CAACC,SAAS,CAACH,KAAK,CAAC,CAAC,CAAC;aAC9D;SACF,MAAM;YACL,yGAAyG;YACzG,6CAA6C;YAC7CT,OAAO,CAACC,IAAI,CAAC,GAAGC,cAAc,CAAC;SAChC;KACF;IACD,OAAOF,OAAO,CAAC;CAChB"}
1
+ {"version":3,"sources":["../../../src/export/getResolvedLocales.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config';\nimport JsonFile, { JSONObject } from '@expo/json-file';\nimport path from 'path';\n\nimport { CommandError } from '../utils/errors';\n\nexport type LocaleMap = Record<string, JSONObject>;\n\n// Similar to how we resolve locales in `@expo/config-plugins`\nexport async function getResolvedLocalesAsync(\n projectRoot: string,\n exp: Pick<ExpoConfig, 'locales'>\n): Promise<LocaleMap> {\n if (!exp.locales) {\n return {};\n }\n\n const locales: LocaleMap = {};\n for (const [lang, localeJsonPath] of Object.entries(exp.locales)) {\n if (typeof localeJsonPath === 'string') {\n try {\n locales[lang] = await JsonFile.readAsync(path.join(projectRoot, localeJsonPath));\n } catch (error: any) {\n throw new CommandError('EXPO_CONFIG', JSON.stringify(error));\n }\n } else {\n // In the off chance that someone defined the locales json in the config, pass it directly to the object.\n // We do this to make the types more elegant.\n locales[lang] = localeJsonPath;\n }\n }\n return locales;\n}\n"],"names":["getResolvedLocalesAsync","projectRoot","exp","locales","lang","localeJsonPath","Object","entries","JsonFile","readAsync","path","join","error","CommandError","JSON","stringify"],"mappings":"AAAA;;;;QASsBA,uBAAuB,GAAvBA,uBAAuB;SARR,SAAiB;gDAAjB,iBAAiB;IAAjB,SAAiB;;;;;SACrC,KAAM;gDAAN,MAAM;IAAN,KAAM;;;;;AAEM,IAAA,OAAiB,WAAjB,iBAAiB,CAAA;;;;;;AAKvC,eAAeA,uBAAuB,CAC3CC,WAAmB,EACnBC,GAAgC,EACZ;IACpB,IAAI,CAACA,GAAG,CAACC,OAAO,EAAE;QAChB,OAAO,EAAE,CAAC;KACX;IAED,MAAMA,OAAO,GAAc,EAAE,AAAC;IAC9B,KAAK,MAAM,CAACC,IAAI,EAAEC,cAAc,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACL,GAAG,CAACC,OAAO,CAAC,CAAE;QAChE,IAAI,OAAOE,cAAc,KAAK,QAAQ,EAAE;YACtC,IAAI;gBACFF,OAAO,CAACC,IAAI,CAAC,GAAG,MAAMI,SAAQ,UAAA,CAACC,SAAS,CAACC,KAAI,UAAA,CAACC,IAAI,CAACV,WAAW,EAAEI,cAAc,CAAC,CAAC,CAAC;aAClF,CAAC,OAAOO,KAAK,EAAO;gBACnB,MAAM,IAAIC,OAAY,aAAA,CAAC,aAAa,EAAEC,IAAI,CAACC,SAAS,CAACH,KAAK,CAAC,CAAC,CAAC;aAC9D;SACF,MAAM;YACL,yGAAyG;YACzG,6CAA6C;YAC7CT,OAAO,CAACC,IAAI,CAAC,GAAGC,cAAc,CAAC;SAChC;KACF;IACD,OAAOF,OAAO,CAAC;CAChB"}
@@ -4,7 +4,13 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.expoExport = void 0;
7
- var _chalk = _interopRequireDefault(require("chalk"));
7
+ function _chalk() {
8
+ const data = _interopRequireDefault(require("chalk"));
9
+ _chalk = function() {
10
+ return data;
11
+ };
12
+ return data;
13
+ }
8
14
  var _args = require("../utils/args");
9
15
  var _errors = require("../utils/errors");
10
16
  function _interopRequireDefault(obj) {
@@ -64,15 +70,15 @@ const expoExport = async (argv)=>{
64
70
  "--dump-sourcemap": "--source-maps"
65
71
  }, argv);
66
72
  if (args["--help"]) {
67
- (0, _args).printHelp(`Export the static files of the app for hosting it on a web server`, _chalk.default`npx expo export {dim <dir>}`, [
68
- _chalk.default`<dir> Directory of the Expo project. {dim Default: Current working directory}`,
69
- _chalk.default`--output-dir <dir> The directory to export the static files to. {dim Default: dist}`,
73
+ (0, _args).printHelp(`Export the static files of the app for hosting it on a web server`, _chalk().default`npx expo export {dim <dir>}`, [
74
+ _chalk().default`<dir> Directory of the Expo project. {dim Default: Current working directory}`,
75
+ _chalk().default`--output-dir <dir> The directory to export the static files to. {dim Default: dist}`,
70
76
  `--dev Configure static files for developing locally using a non-https server`,
71
77
  `--no-minify Prevent minifying source`,
72
78
  `--no-bytecode Prevent generating Hermes bytecode`,
73
79
  `--max-workers <number> Maximum number of tasks to allow the bundler to spawn`,
74
80
  `--dump-assetmap Emit an asset map for further processing`,
75
- _chalk.default`-p, --platform <platform> Options: android, ios, web, all. {dim Default: all}`,
81
+ _chalk().default`-p, --platform <platform> Options: android, ios, web, all. {dim Default: all}`,
76
82
  `-s, --source-maps Emit JavaScript source maps`,
77
83
  `-c, --clear Clear the bundler cache`,
78
84
  `-h, --help Usage info`,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/export/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 expoExport: Command = async (argv) => {\n const args = assertArgs(\n {\n // Types\n '--help': Boolean,\n '--clear': Boolean,\n '--dump-assetmap': Boolean,\n '--dev': Boolean,\n '--source-maps': Boolean,\n '--max-workers': Number,\n '--output-dir': String,\n '--platform': [String],\n '--no-minify': Boolean,\n '--no-bytecode': Boolean,\n\n // Hack: This is added because EAS CLI always includes the flag.\n // If supplied, we'll do nothing with the value, but at least the process won't crash.\n // Note that we also don't show this value in the `--help` prompt since we don't want people to use it.\n '--experimental-bundle': Boolean,\n\n // Aliases\n '-h': '--help',\n '-s': '--source-maps',\n // '-d': '--dump-assetmap',\n '-c': '--clear',\n '-p': '--platform',\n // Interop with Metro docs and RedBox errors.\n '--reset-cache': '--clear',\n\n // Deprecated\n '--dump-sourcemap': '--source-maps',\n },\n argv\n );\n\n if (args['--help']) {\n printHelp(\n `Export the static files of the app for hosting it on a web server`,\n chalk`npx expo export {dim <dir>}`,\n [\n chalk`<dir> Directory of the Expo project. {dim Default: Current working directory}`,\n chalk`--output-dir <dir> The directory to export the static files to. {dim Default: dist}`,\n `--dev Configure static files for developing locally using a non-https server`,\n `--no-minify Prevent minifying source`,\n `--no-bytecode Prevent generating Hermes bytecode`,\n `--max-workers <number> Maximum number of tasks to allow the bundler to spawn`,\n `--dump-assetmap Emit an asset map for further processing`,\n chalk`-p, --platform <platform> Options: android, ios, web, all. {dim Default: all}`,\n `-s, --source-maps Emit JavaScript source maps`,\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(projectRoot, args).catch(logCmdError);\n\n const { exportAsync } = await import('./exportAsync.js');\n return exportAsync(projectRoot, options).catch(logCmdError);\n};\n"],"names":["expoExport","argv","args","assertArgs","Boolean","Number","String","printHelp","chalk","join","projectRoot","getProjectRoot","resolveOptionsAsync","options","catch","logCmdError","exportAsync"],"mappings":"AAAA;;;;;;AACkB,IAAA,MAAO,kCAAP,OAAO,EAAA;AAG6B,IAAA,KAAe,WAAf,eAAe,CAAA;AACzC,IAAA,OAAiB,WAAjB,iBAAiB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEtC,MAAMA,UAAU,GAAY,OAAOC,IAAI,GAAK;IACjD,MAAMC,IAAI,GAAGC,CAAAA,GAAAA,KAAU,AAgCtB,CAAA,WAhCsB,CACrB;QACE,QAAQ;QACR,QAAQ,EAAEC,OAAO;QACjB,SAAS,EAAEA,OAAO;QAClB,iBAAiB,EAAEA,OAAO;QAC1B,OAAO,EAAEA,OAAO;QAChB,eAAe,EAAEA,OAAO;QACxB,eAAe,EAAEC,MAAM;QACvB,cAAc,EAAEC,MAAM;QACtB,YAAY,EAAE;YAACA,MAAM;SAAC;QACtB,aAAa,EAAEF,OAAO;QACtB,eAAe,EAAEA,OAAO;QAExB,gEAAgE;QAChE,sFAAsF;QACtF,uGAAuG;QACvG,uBAAuB,EAAEA,OAAO;QAEhC,UAAU;QACV,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,eAAe;QACrB,2BAA2B;QAC3B,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,YAAY;QAClB,6CAA6C;QAC7C,eAAe,EAAE,SAAS;QAE1B,aAAa;QACb,kBAAkB,EAAE,eAAe;KACpC,EACDH,IAAI,CACL,AAAC;IAEF,IAAIC,IAAI,CAAC,QAAQ,CAAC,EAAE;QAClBK,CAAAA,GAAAA,KAAS,AAgBR,CAAA,UAhBQ,CACP,CAAC,iEAAiE,CAAC,EACnEC,MAAK,QAAA,CAAC,2BAA2B,CAAC,EAClC;YACEA,MAAK,QAAA,CAAC,kGAAkG,CAAC;YACzGA,MAAK,QAAA,CAAC,2FAA2F,CAAC;YAClG,CAAC,iGAAiG,CAAC;YACnG,CAAC,mDAAmD,CAAC;YACrD,CAAC,6DAA6D,CAAC;YAC/D,CAAC,gFAAgF,CAAC;YAClF,CAAC,mEAAmE,CAAC;YACrEA,MAAK,QAAA,CAAC,8EAA8E,CAAC;YACrF,CAAC,sDAAsD,CAAC;YACxD,CAAC,kDAAkD,CAAC;YACpD,CAAC,qCAAqC,CAAC;SACxC,CAACC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;KACH;IAED,MAAMC,WAAW,GAAGC,CAAAA,GAAAA,KAAc,AAAM,CAAA,eAAN,CAACT,IAAI,CAAC,AAAC;IACzC,MAAM,EAAEU,mBAAmB,CAAA,EAAE,GAAG,MAAM;+CAAO,qBAAqB;MAAC,AAAC;IACpE,MAAMC,OAAO,GAAG,MAAMD,mBAAmB,CAACF,WAAW,EAAER,IAAI,CAAC,CAACY,KAAK,CAACC,OAAW,YAAA,CAAC,AAAC;IAEhF,MAAM,EAAEC,WAAW,CAAA,EAAE,GAAG,MAAM;+CAAO,kBAAkB;MAAC,AAAC;IACzD,OAAOA,WAAW,CAACN,WAAW,EAAEG,OAAO,CAAC,CAACC,KAAK,CAACC,OAAW,YAAA,CAAC,CAAC;CAC7D,AAAC;QA7DWf,UAAU,GAAVA,UAAU"}
1
+ {"version":3,"sources":["../../../src/export/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 expoExport: Command = async (argv) => {\n const args = assertArgs(\n {\n // Types\n '--help': Boolean,\n '--clear': Boolean,\n '--dump-assetmap': Boolean,\n '--dev': Boolean,\n '--source-maps': Boolean,\n '--max-workers': Number,\n '--output-dir': String,\n '--platform': [String],\n '--no-minify': Boolean,\n '--no-bytecode': Boolean,\n\n // Hack: This is added because EAS CLI always includes the flag.\n // If supplied, we'll do nothing with the value, but at least the process won't crash.\n // Note that we also don't show this value in the `--help` prompt since we don't want people to use it.\n '--experimental-bundle': Boolean,\n\n // Aliases\n '-h': '--help',\n '-s': '--source-maps',\n // '-d': '--dump-assetmap',\n '-c': '--clear',\n '-p': '--platform',\n // Interop with Metro docs and RedBox errors.\n '--reset-cache': '--clear',\n\n // Deprecated\n '--dump-sourcemap': '--source-maps',\n },\n argv\n );\n\n if (args['--help']) {\n printHelp(\n `Export the static files of the app for hosting it on a web server`,\n chalk`npx expo export {dim <dir>}`,\n [\n chalk`<dir> Directory of the Expo project. {dim Default: Current working directory}`,\n chalk`--output-dir <dir> The directory to export the static files to. {dim Default: dist}`,\n `--dev Configure static files for developing locally using a non-https server`,\n `--no-minify Prevent minifying source`,\n `--no-bytecode Prevent generating Hermes bytecode`,\n `--max-workers <number> Maximum number of tasks to allow the bundler to spawn`,\n `--dump-assetmap Emit an asset map for further processing`,\n chalk`-p, --platform <platform> Options: android, ios, web, all. {dim Default: all}`,\n `-s, --source-maps Emit JavaScript source maps`,\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(projectRoot, args).catch(logCmdError);\n\n const { exportAsync } = await import('./exportAsync.js');\n return exportAsync(projectRoot, options).catch(logCmdError);\n};\n"],"names":["expoExport","argv","args","assertArgs","Boolean","Number","String","printHelp","chalk","join","projectRoot","getProjectRoot","resolveOptionsAsync","options","catch","logCmdError","exportAsync"],"mappings":"AAAA;;;;;;SACkB,MAAO;gDAAP,OAAO;IAAP,MAAO;;;;;AAG6B,IAAA,KAAe,WAAf,eAAe,CAAA;AACzC,IAAA,OAAiB,WAAjB,iBAAiB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEtC,MAAMA,UAAU,GAAY,OAAOC,IAAI,GAAK;IACjD,MAAMC,IAAI,GAAGC,CAAAA,GAAAA,KAAU,AAgCtB,CAAA,WAhCsB,CACrB;QACE,QAAQ;QACR,QAAQ,EAAEC,OAAO;QACjB,SAAS,EAAEA,OAAO;QAClB,iBAAiB,EAAEA,OAAO;QAC1B,OAAO,EAAEA,OAAO;QAChB,eAAe,EAAEA,OAAO;QACxB,eAAe,EAAEC,MAAM;QACvB,cAAc,EAAEC,MAAM;QACtB,YAAY,EAAE;YAACA,MAAM;SAAC;QACtB,aAAa,EAAEF,OAAO;QACtB,eAAe,EAAEA,OAAO;QAExB,gEAAgE;QAChE,sFAAsF;QACtF,uGAAuG;QACvG,uBAAuB,EAAEA,OAAO;QAEhC,UAAU;QACV,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,eAAe;QACrB,2BAA2B;QAC3B,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,YAAY;QAClB,6CAA6C;QAC7C,eAAe,EAAE,SAAS;QAE1B,aAAa;QACb,kBAAkB,EAAE,eAAe;KACpC,EACDH,IAAI,CACL,AAAC;IAEF,IAAIC,IAAI,CAAC,QAAQ,CAAC,EAAE;QAClBK,CAAAA,GAAAA,KAAS,AAgBR,CAAA,UAhBQ,CACP,CAAC,iEAAiE,CAAC,EACnEC,MAAK,UAAA,CAAC,2BAA2B,CAAC,EAClC;YACEA,MAAK,UAAA,CAAC,kGAAkG,CAAC;YACzGA,MAAK,UAAA,CAAC,2FAA2F,CAAC;YAClG,CAAC,iGAAiG,CAAC;YACnG,CAAC,mDAAmD,CAAC;YACrD,CAAC,6DAA6D,CAAC;YAC/D,CAAC,gFAAgF,CAAC;YAClF,CAAC,mEAAmE,CAAC;YACrEA,MAAK,UAAA,CAAC,8EAA8E,CAAC;YACrF,CAAC,sDAAsD,CAAC;YACxD,CAAC,kDAAkD,CAAC;YACpD,CAAC,qCAAqC,CAAC;SACxC,CAACC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;KACH;IAED,MAAMC,WAAW,GAAGC,CAAAA,GAAAA,KAAc,AAAM,CAAA,eAAN,CAACT,IAAI,CAAC,AAAC;IACzC,MAAM,EAAEU,mBAAmB,CAAA,EAAE,GAAG,MAAM;+CAAO,qBAAqB;MAAC,AAAC;IACpE,MAAMC,OAAO,GAAG,MAAMD,mBAAmB,CAACF,WAAW,EAAER,IAAI,CAAC,CAACY,KAAK,CAACC,OAAW,YAAA,CAAC,AAAC;IAEhF,MAAM,EAAEC,WAAW,CAAA,EAAE,GAAG,MAAM;+CAAO,kBAAkB;MAAC,AAAC;IACzD,OAAOA,WAAW,CAACN,WAAW,EAAEG,OAAO,CAAC,CAACC,KAAK,CAACC,OAAW,YAAA,CAAC,CAAC;CAC7D,AAAC;QA7DWf,UAAU,GAAVA,UAAU"}
@@ -5,7 +5,13 @@ Object.defineProperty(exports, "__esModule", {
5
5
  exports.getAssetLocalPath = getAssetLocalPath;
6
6
  exports.stripAssetPrefix = stripAssetPrefix;
7
7
  exports.drawableFileTypes = void 0;
8
- var _path = _interopRequireDefault(require("path"));
8
+ function _path() {
9
+ const data = _interopRequireDefault(require("path"));
10
+ _path = function() {
11
+ return data;
12
+ };
13
+ return data;
14
+ }
9
15
  function _interopRequireDefault(obj) {
10
16
  return obj && obj.__esModule ? obj : {
11
17
  default: obj
@@ -26,13 +32,13 @@ function getAssetLocalPath(asset, { baseUrl , scale , platform }) {
26
32
  function getAssetLocalPathAndroid(asset, { baseUrl , scale }) {
27
33
  const androidFolder = getAndroidResourceFolderName(asset, scale);
28
34
  const fileName = getResourceIdentifier(asset);
29
- return _path.default.join(androidFolder, `${fileName}.${asset.type}`);
35
+ return _path().default.join(androidFolder, `${fileName}.${asset.type}`);
30
36
  }
31
37
  function getAssetLocalPathDefault(asset, { baseUrl , scale }) {
32
38
  const suffix = scale === 1 ? "" : `@${scale}x`;
33
39
  const fileName = `${asset.name}${suffix}.${asset.type}`;
34
40
  const adjustedHttpServerLocation = stripAssetPrefix(asset.httpServerLocation, baseUrl);
35
- return _path.default.join(// Assets can have relative paths outside of the project root.
41
+ return _path().default.join(// Assets can have relative paths outside of the project root.
36
42
  // Replace `../` with `_` to make sure they don't end up outside of
37
43
  // the expected assets directory.
38
44
  adjustedHttpServerLocation.replace(/^\/+/g, "").replace(/\.\.\//g, "_"), fileName);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/export/metroAssetLocalPath.ts"],"sourcesContent":["/**\n * Copyright © 2023 650 Industries.\n * Copyright (c) Meta Platforms, Inc. and affiliates.\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 *\n * Based on the community asset persisting for Metro but with base path and web support:\n * https://github.com/facebook/react-native/blob/d6e0bc714ad4d215ede4949d3c4f44af6dea5dd3/packages/community-cli-plugin/src/commands/bundle/saveAssets.js#L1\n */\nimport type { AssetData } from 'metro';\nimport path from 'path';\n\nexport function getAssetLocalPath(\n asset: Pick<AssetData, 'type' | 'httpServerLocation' | 'name'>,\n { baseUrl, scale, platform }: { baseUrl?: string; scale: number; platform: string }\n): string {\n if (platform === 'android') {\n return getAssetLocalPathAndroid(asset, { baseUrl, scale });\n }\n return getAssetLocalPathDefault(asset, { baseUrl, scale });\n}\n\nfunction getAssetLocalPathAndroid(\n asset: Pick<AssetData, 'type' | 'httpServerLocation' | 'name'>,\n {\n baseUrl,\n scale,\n }: {\n // TODO: baseUrl support\n baseUrl?: string;\n scale: number;\n }\n): string {\n const androidFolder = getAndroidResourceFolderName(asset, scale);\n const fileName = getResourceIdentifier(asset);\n return path.join(androidFolder, `${fileName}.${asset.type}`);\n}\n\nfunction getAssetLocalPathDefault(\n asset: Pick<AssetData, 'type' | 'httpServerLocation' | 'name'>,\n { baseUrl, scale }: { baseUrl?: string; scale: number }\n): string {\n const suffix = scale === 1 ? '' : `@${scale}x`;\n const fileName = `${asset.name}${suffix}.${asset.type}`;\n\n const adjustedHttpServerLocation = stripAssetPrefix(asset.httpServerLocation, baseUrl);\n\n return path.join(\n // Assets can have relative paths outside of the project root.\n // Replace `../` with `_` to make sure they don't end up outside of\n // the expected assets directory.\n adjustedHttpServerLocation.replace(/^\\/+/g, '').replace(/\\.\\.\\//g, '_'),\n fileName\n );\n}\n\nexport function stripAssetPrefix(path: string, baseUrl?: string) {\n path = path.replace(/\\/assets\\?export_path=(.*)/, '$1');\n\n // TODO: Windows?\n if (baseUrl) {\n return path.replace(/^\\/+/g, '').replace(\n new RegExp(\n `^${baseUrl\n .replace(/^\\/+/g, '')\n .replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&')\n .replace(/-/g, '\\\\x2d')}`,\n 'g'\n ),\n ''\n );\n }\n return path;\n}\n\n/**\n * FIXME: using number to represent discrete scale numbers is fragile in essence because of\n * floating point numbers imprecision.\n */\nfunction getAndroidAssetSuffix(scale: number): string | null {\n switch (scale) {\n case 0.75:\n return 'ldpi';\n case 1:\n return 'mdpi';\n case 1.5:\n return 'hdpi';\n case 2:\n return 'xhdpi';\n case 3:\n return 'xxhdpi';\n case 4:\n return 'xxxhdpi';\n default:\n return null;\n }\n}\n\n// See https://developer.android.com/guide/topics/resources/drawable-resource.html\nexport const drawableFileTypes = new Set<string>(['gif', 'jpeg', 'jpg', 'png', 'webp', 'xml']);\n\nfunction getAndroidResourceFolderName(asset: Pick<AssetData, 'type'>, scale: number): string {\n if (!drawableFileTypes.has(asset.type)) {\n return 'raw';\n }\n const suffix = getAndroidAssetSuffix(scale);\n if (!suffix) {\n throw new Error(\n `Asset \"${JSON.stringify(asset)}\" does not use a supported Android resolution suffix`\n );\n }\n return `drawable-${suffix}`;\n}\n\nfunction getResourceIdentifier(asset: Pick<AssetData, 'httpServerLocation' | 'name'>): string {\n const folderPath = getBaseUrl(asset);\n return `${folderPath}/${asset.name}`\n .toLowerCase()\n .replace(/\\//g, '_') // Encode folder structure in file name\n .replace(/([^a-z0-9_])/g, '') // Remove illegal chars\n .replace(/^assets_/, ''); // Remove \"assets_\" prefix\n}\n\nfunction getBaseUrl(asset: Pick<AssetData, 'httpServerLocation'>): string {\n let baseUrl = asset.httpServerLocation;\n if (baseUrl[0] === '/') {\n baseUrl = baseUrl.substring(1);\n }\n return baseUrl;\n}\n"],"names":["getAssetLocalPath","stripAssetPrefix","asset","baseUrl","scale","platform","getAssetLocalPathAndroid","getAssetLocalPathDefault","androidFolder","getAndroidResourceFolderName","fileName","getResourceIdentifier","path","join","type","suffix","name","adjustedHttpServerLocation","httpServerLocation","replace","RegExp","getAndroidAssetSuffix","drawableFileTypes","Set","has","Error","JSON","stringify","folderPath","getBaseUrl","toLowerCase","substring"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/export/metroAssetLocalPath.ts"],"sourcesContent":["/**\n * Copyright © 2023 650 Industries.\n * Copyright (c) Meta Platforms, Inc. and affiliates.\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 *\n * Based on the community asset persisting for Metro but with base path and web support:\n * https://github.com/facebook/react-native/blob/d6e0bc714ad4d215ede4949d3c4f44af6dea5dd3/packages/community-cli-plugin/src/commands/bundle/saveAssets.js#L1\n */\nimport type { AssetData } from 'metro';\nimport path from 'path';\n\nexport function getAssetLocalPath(\n asset: Pick<AssetData, 'type' | 'httpServerLocation' | 'name'>,\n { baseUrl, scale, platform }: { baseUrl?: string; scale: number; platform: string }\n): string {\n if (platform === 'android') {\n return getAssetLocalPathAndroid(asset, { baseUrl, scale });\n }\n return getAssetLocalPathDefault(asset, { baseUrl, scale });\n}\n\nfunction getAssetLocalPathAndroid(\n asset: Pick<AssetData, 'type' | 'httpServerLocation' | 'name'>,\n {\n baseUrl,\n scale,\n }: {\n // TODO: baseUrl support\n baseUrl?: string;\n scale: number;\n }\n): string {\n const androidFolder = getAndroidResourceFolderName(asset, scale);\n const fileName = getResourceIdentifier(asset);\n return path.join(androidFolder, `${fileName}.${asset.type}`);\n}\n\nfunction getAssetLocalPathDefault(\n asset: Pick<AssetData, 'type' | 'httpServerLocation' | 'name'>,\n { baseUrl, scale }: { baseUrl?: string; scale: number }\n): string {\n const suffix = scale === 1 ? '' : `@${scale}x`;\n const fileName = `${asset.name}${suffix}.${asset.type}`;\n\n const adjustedHttpServerLocation = stripAssetPrefix(asset.httpServerLocation, baseUrl);\n\n return path.join(\n // Assets can have relative paths outside of the project root.\n // Replace `../` with `_` to make sure they don't end up outside of\n // the expected assets directory.\n adjustedHttpServerLocation.replace(/^\\/+/g, '').replace(/\\.\\.\\//g, '_'),\n fileName\n );\n}\n\nexport function stripAssetPrefix(path: string, baseUrl?: string) {\n path = path.replace(/\\/assets\\?export_path=(.*)/, '$1');\n\n // TODO: Windows?\n if (baseUrl) {\n return path.replace(/^\\/+/g, '').replace(\n new RegExp(\n `^${baseUrl\n .replace(/^\\/+/g, '')\n .replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&')\n .replace(/-/g, '\\\\x2d')}`,\n 'g'\n ),\n ''\n );\n }\n return path;\n}\n\n/**\n * FIXME: using number to represent discrete scale numbers is fragile in essence because of\n * floating point numbers imprecision.\n */\nfunction getAndroidAssetSuffix(scale: number): string | null {\n switch (scale) {\n case 0.75:\n return 'ldpi';\n case 1:\n return 'mdpi';\n case 1.5:\n return 'hdpi';\n case 2:\n return 'xhdpi';\n case 3:\n return 'xxhdpi';\n case 4:\n return 'xxxhdpi';\n default:\n return null;\n }\n}\n\n// See https://developer.android.com/guide/topics/resources/drawable-resource.html\nexport const drawableFileTypes = new Set<string>(['gif', 'jpeg', 'jpg', 'png', 'webp', 'xml']);\n\nfunction getAndroidResourceFolderName(asset: Pick<AssetData, 'type'>, scale: number): string {\n if (!drawableFileTypes.has(asset.type)) {\n return 'raw';\n }\n const suffix = getAndroidAssetSuffix(scale);\n if (!suffix) {\n throw new Error(\n `Asset \"${JSON.stringify(asset)}\" does not use a supported Android resolution suffix`\n );\n }\n return `drawable-${suffix}`;\n}\n\nfunction getResourceIdentifier(asset: Pick<AssetData, 'httpServerLocation' | 'name'>): string {\n const folderPath = getBaseUrl(asset);\n return `${folderPath}/${asset.name}`\n .toLowerCase()\n .replace(/\\//g, '_') // Encode folder structure in file name\n .replace(/([^a-z0-9_])/g, '') // Remove illegal chars\n .replace(/^assets_/, ''); // Remove \"assets_\" prefix\n}\n\nfunction getBaseUrl(asset: Pick<AssetData, 'httpServerLocation'>): string {\n let baseUrl = asset.httpServerLocation;\n if (baseUrl[0] === '/') {\n baseUrl = baseUrl.substring(1);\n }\n return baseUrl;\n}\n"],"names":["getAssetLocalPath","stripAssetPrefix","asset","baseUrl","scale","platform","getAssetLocalPathAndroid","getAssetLocalPathDefault","androidFolder","getAndroidResourceFolderName","fileName","getResourceIdentifier","path","join","type","suffix","name","adjustedHttpServerLocation","httpServerLocation","replace","RegExp","getAndroidAssetSuffix","drawableFileTypes","Set","has","Error","JSON","stringify","folderPath","getBaseUrl","toLowerCase","substring"],"mappings":"AAUA;;;;QAGgBA,iBAAiB,GAAjBA,iBAAiB;QA4CjBC,gBAAgB,GAAhBA,gBAAgB;;SA9Cf,KAAM;gDAAN,MAAM;IAAN,KAAM;;;;;;;;;;AAEhB,SAASD,iBAAiB,CAC/BE,KAA8D,EAC9D,EAAEC,OAAO,CAAA,EAAEC,KAAK,CAAA,EAAEC,QAAQ,CAAA,EAAyD,EAC3E;IACR,IAAIA,QAAQ,KAAK,SAAS,EAAE;QAC1B,OAAOC,wBAAwB,CAACJ,KAAK,EAAE;YAAEC,OAAO;YAAEC,KAAK;SAAE,CAAC,CAAC;KAC5D;IACD,OAAOG,wBAAwB,CAACL,KAAK,EAAE;QAAEC,OAAO;QAAEC,KAAK;KAAE,CAAC,CAAC;CAC5D;AAED,SAASE,wBAAwB,CAC/BJ,KAA8D,EAC9D,EACEC,OAAO,CAAA,EACPC,KAAK,CAAA,EAKN,EACO;IACR,MAAMI,aAAa,GAAGC,4BAA4B,CAACP,KAAK,EAAEE,KAAK,CAAC,AAAC;IACjE,MAAMM,QAAQ,GAAGC,qBAAqB,CAACT,KAAK,CAAC,AAAC;IAC9C,OAAOU,KAAI,UAAA,CAACC,IAAI,CAACL,aAAa,EAAE,CAAC,EAAEE,QAAQ,CAAC,CAAC,EAAER,KAAK,CAACY,IAAI,CAAC,CAAC,CAAC,CAAC;CAC9D;AAED,SAASP,wBAAwB,CAC/BL,KAA8D,EAC9D,EAAEC,OAAO,CAAA,EAAEC,KAAK,CAAA,EAAuC,EAC/C;IACR,MAAMW,MAAM,GAAGX,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAEA,KAAK,CAAC,CAAC,CAAC,AAAC;IAC/C,MAAMM,QAAQ,GAAG,CAAC,EAAER,KAAK,CAACc,IAAI,CAAC,EAAED,MAAM,CAAC,CAAC,EAAEb,KAAK,CAACY,IAAI,CAAC,CAAC,AAAC;IAExD,MAAMG,0BAA0B,GAAGhB,gBAAgB,CAACC,KAAK,CAACgB,kBAAkB,EAAEf,OAAO,CAAC,AAAC;IAEvF,OAAOS,KAAI,UAAA,CAACC,IAAI,CACd,8DAA8D;IAC9D,mEAAmE;IACnE,iCAAiC;IACjCI,0BAA0B,CAACE,OAAO,UAAU,EAAE,CAAC,CAACA,OAAO,YAAY,GAAG,CAAC,EACvET,QAAQ,CACT,CAAC;CACH;AAEM,SAAST,gBAAgB,CAACW,IAAY,EAAET,OAAgB,EAAE;IAC/DS,IAAI,GAAGA,IAAI,CAACO,OAAO,+BAA+B,IAAI,CAAC,CAAC;IAExD,iBAAiB;IACjB,IAAIhB,OAAO,EAAE;QACX,OAAOS,IAAI,CAACO,OAAO,UAAU,EAAE,CAAC,CAACA,OAAO,CACtC,IAAIC,MAAM,CACR,CAAC,CAAC,EAAEjB,OAAO,CACRgB,OAAO,UAAU,EAAE,CAAC,CACpBA,OAAO,wBAAwB,MAAM,CAAC,CACtCA,OAAO,OAAO,OAAO,CAAC,CAAC,CAAC,EAC3B,GAAG,CACJ,EACD,EAAE,CACH,CAAC;KACH;IACD,OAAOP,IAAI,CAAC;CACb;AAED;;;GAGG,CACH,SAASS,qBAAqB,CAACjB,KAAa,EAAiB;IAC3D,OAAQA,KAAK;QACX,KAAK,IAAI;YACP,OAAO,MAAM,CAAC;QAChB,KAAK,CAAC;YACJ,OAAO,MAAM,CAAC;QAChB,KAAK,GAAG;YACN,OAAO,MAAM,CAAC;QAChB,KAAK,CAAC;YACJ,OAAO,OAAO,CAAC;QACjB,KAAK,CAAC;YACJ,OAAO,QAAQ,CAAC;QAClB,KAAK,CAAC;YACJ,OAAO,SAAS,CAAC;QACnB;YACE,OAAO,IAAI,CAAC;KACf;CACF;AAGM,MAAMkB,iBAAiB,GAAG,IAAIC,GAAG,CAAS;IAAC,KAAK;IAAE,MAAM;IAAE,KAAK;IAAE,KAAK;IAAE,MAAM;IAAE,KAAK;CAAC,CAAC,AAAC;QAAlFD,iBAAiB,GAAjBA,iBAAiB;AAE9B,SAASb,4BAA4B,CAACP,KAA8B,EAAEE,KAAa,EAAU;IAC3F,IAAI,CAACkB,iBAAiB,CAACE,GAAG,CAACtB,KAAK,CAACY,IAAI,CAAC,EAAE;QACtC,OAAO,KAAK,CAAC;KACd;IACD,MAAMC,MAAM,GAAGM,qBAAqB,CAACjB,KAAK,CAAC,AAAC;IAC5C,IAAI,CAACW,MAAM,EAAE;QACX,MAAM,IAAIU,KAAK,CACb,CAAC,OAAO,EAAEC,IAAI,CAACC,SAAS,CAACzB,KAAK,CAAC,CAAC,oDAAoD,CAAC,CACtF,CAAC;KACH;IACD,OAAO,CAAC,SAAS,EAAEa,MAAM,CAAC,CAAC,CAAC;CAC7B;AAED,SAASJ,qBAAqB,CAACT,KAAqD,EAAU;IAC5F,MAAM0B,UAAU,GAAGC,UAAU,CAAC3B,KAAK,CAAC,AAAC;IACrC,OAAO,CAAC,EAAE0B,UAAU,CAAC,CAAC,EAAE1B,KAAK,CAACc,IAAI,CAAC,CAAC,CACjCc,WAAW,EAAE,CACbX,OAAO,QAAQ,GAAG,CAAC,CAAC,uCAAuC;KAC3DA,OAAO,kBAAkB,EAAE,CAAC,CAAC,uBAAuB;KACpDA,OAAO,aAAa,EAAE,CAAC,CAAC,CAAC,0BAA0B;CACvD;AAED,SAASU,UAAU,CAAC3B,KAA4C,EAAU;IACxE,IAAIC,OAAO,GAAGD,KAAK,CAACgB,kBAAkB,AAAC;IACvC,IAAIf,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;QACtBA,OAAO,GAAGA,OAAO,CAAC4B,SAAS,CAAC,CAAC,CAAC,CAAC;KAChC;IACD,OAAO5B,OAAO,CAAC;CAChB"}
@@ -5,8 +5,20 @@ Object.defineProperty(exports, "__esModule", {
5
5
  exports.persistMetroAssetsAsync = persistMetroAssetsAsync;
6
6
  exports.copyInBatchesAsync = copyInBatchesAsync;
7
7
  exports.filterPlatformAssetScales = filterPlatformAssetScales;
8
- var _fs = _interopRequireDefault(require("fs"));
9
- var _path = _interopRequireDefault(require("path"));
8
+ function _fs() {
9
+ const data = _interopRequireDefault(require("fs"));
10
+ _fs = function() {
11
+ return data;
12
+ };
13
+ return data;
14
+ }
15
+ function _path() {
16
+ const data = _interopRequireDefault(require("path"));
17
+ _path = function() {
18
+ return data;
19
+ };
20
+ return data;
21
+ }
10
22
  var _metroAssetLocalPath = require("./metroAssetLocalPath");
11
23
  var _log = require("../log");
12
24
  function _interopRequireDefault(obj) {
@@ -15,10 +27,10 @@ function _interopRequireDefault(obj) {
15
27
  };
16
28
  }
17
29
  function cleanAssetCatalog(catalogDir) {
18
- const files = _fs.default.readdirSync(catalogDir).filter((file)=>file.endsWith(".imageset")
30
+ const files = _fs().default.readdirSync(catalogDir).filter((file)=>file.endsWith(".imageset")
19
31
  );
20
32
  for (const file1 of files){
21
- _fs.default.rmSync(_path.default.join(catalogDir, file1));
33
+ _fs().default.rmSync(_path().default.join(catalogDir, file1));
22
34
  }
23
35
  }
24
36
  async function persistMetroAssetsAsync(assets, { platform , outputDirectory , baseUrl , iosAssetCatalogDirectory , files }) {
@@ -31,8 +43,8 @@ async function persistMetroAssetsAsync(assets, { platform , outputDirectory , ba
31
43
  if (platform === "ios" && iosAssetCatalogDirectory != null) {
32
44
  // Use iOS Asset Catalog for images. This will allow Apple app thinning to
33
45
  // remove unused scales from the optimized bundle.
34
- const catalogDir = _path.default.join(iosAssetCatalogDirectory, "RNAssets.xcassets");
35
- if (!_fs.default.existsSync(catalogDir)) {
46
+ const catalogDir = _path().default.join(iosAssetCatalogDirectory, "RNAssets.xcassets");
47
+ if (!_fs().default.existsSync(catalogDir)) {
36
48
  _log.Log.error(`Could not find asset catalog 'RNAssets.xcassets' in ${iosAssetCatalogDirectory}. Make sure to create it if it does not exist.`);
37
49
  return;
38
50
  }
@@ -55,13 +67,13 @@ async function persistMetroAssetsAsync(assets, { platform , outputDirectory , ba
55
67
  const batches = {};
56
68
  async function write(src, dest) {
57
69
  if (files) {
58
- const data = await _fs.default.promises.readFile(src);
70
+ const data = await _fs().default.promises.readFile(src);
59
71
  files.set(dest, {
60
72
  contents: data,
61
73
  targetDomain: platform === "web" ? "client" : undefined
62
74
  });
63
75
  } else {
64
- batches[src] = _path.default.join(outputDirectory, dest);
76
+ batches[src] = _path().default.join(outputDirectory, dest);
65
77
  }
66
78
  }
67
79
  for (const asset of assetsToCopy){
@@ -82,14 +94,14 @@ async function persistMetroAssetsAsync(assets, { platform , outputDirectory , ba
82
94
  }
83
95
  }
84
96
  function writeImageSet(imageSet) {
85
- _fs.default.mkdirSync(imageSet.baseUrl, {
97
+ _fs().default.mkdirSync(imageSet.baseUrl, {
86
98
  recursive: true
87
99
  });
88
100
  for (const file2 of imageSet.files){
89
- const dest = _path.default.join(imageSet.baseUrl, file2.name);
90
- _fs.default.copyFileSync(file2.src, dest);
101
+ const dest = _path().default.join(imageSet.baseUrl, file2.name);
102
+ _fs().default.copyFileSync(file2.src, dest);
91
103
  }
92
- _fs.default.writeFileSync(_path.default.join(imageSet.baseUrl, "Contents.json"), JSON.stringify({
104
+ _fs().default.writeFileSync(_path().default.join(imageSet.baseUrl, "Contents.json"), JSON.stringify({
93
105
  images: imageSet.files.map((file)=>({
94
106
  filename: file.name,
95
107
  idiom: "universal",
@@ -108,7 +120,7 @@ function isCatalogAsset(asset) {
108
120
  function getImageSet(catalogDir, asset, scales) {
109
121
  const fileName = getResourceIdentifier(asset);
110
122
  return {
111
- baseUrl: _path.default.join(catalogDir, `${fileName}.imageset`),
123
+ baseUrl: _path().default.join(catalogDir, `${fileName}.imageset`),
112
124
  files: scales.map((scale, idx)=>{
113
125
  const suffix = scale === 1 ? "" : `@${scale}x`;
114
126
  return {
@@ -143,14 +155,14 @@ function copyInBatchesAsync(filesToCopy) {
143
155
  });
144
156
  }
145
157
  function copy(src, dest, callback) {
146
- _fs.default.mkdir(_path.default.dirname(dest), {
158
+ _fs().default.mkdir(_path().default.dirname(dest), {
147
159
  recursive: true
148
160
  }, (err)=>{
149
161
  if (err) {
150
162
  callback(err);
151
163
  return;
152
164
  }
153
- _fs.default.createReadStream(src).pipe(_fs.default.createWriteStream(dest)).on("finish", callback);
165
+ _fs().default.createReadStream(src).pipe(_fs().default.createWriteStream(dest)).on("finish", callback);
154
166
  });
155
167
  }
156
168
  const ALLOWED_SCALES = {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/export/persistMetroAssets.ts"],"sourcesContent":["/**\n * Copyright © 2023 650 Industries.\n * Copyright (c) Meta Platforms, Inc. and affiliates.\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 *\n * Based on the community asset persisting for Metro but with base path and web support:\n * https://github.com/facebook/react-native/blob/d6e0bc714ad4d215ede4949d3c4f44af6dea5dd3/packages/community-cli-plugin/src/commands/bundle/saveAssets.js#L1\n */\nimport fs from 'fs';\nimport type { AssetData } from 'metro';\nimport path from 'path';\n\nimport { getAssetLocalPath } from './metroAssetLocalPath';\nimport { ExportAssetMap } from './saveAssets';\nimport { Log } from '../log';\n\nfunction cleanAssetCatalog(catalogDir: string): void {\n const files = fs.readdirSync(catalogDir).filter((file) => file.endsWith('.imageset'));\n for (const file of files) {\n fs.rmSync(path.join(catalogDir, file));\n }\n}\n\nexport async function persistMetroAssetsAsync(\n assets: readonly AssetData[],\n {\n platform,\n outputDirectory,\n baseUrl,\n iosAssetCatalogDirectory,\n files,\n }: {\n platform: string;\n outputDirectory: string;\n baseUrl?: string;\n iosAssetCatalogDirectory?: string;\n files?: ExportAssetMap;\n }\n) {\n if (outputDirectory == null) {\n Log.warn('Assets destination folder is not set, skipping...');\n return;\n }\n\n let assetsToCopy: AssetData[] = [];\n\n // TODO: Use `files` as below to defer writing files\n if (platform === 'ios' && iosAssetCatalogDirectory != null) {\n // Use iOS Asset Catalog for images. This will allow Apple app thinning to\n // remove unused scales from the optimized bundle.\n const catalogDir = path.join(iosAssetCatalogDirectory, 'RNAssets.xcassets');\n if (!fs.existsSync(catalogDir)) {\n Log.error(\n `Could not find asset catalog 'RNAssets.xcassets' in ${iosAssetCatalogDirectory}. Make sure to create it if it does not exist.`\n );\n return;\n }\n\n Log.log('Adding images to asset catalog', catalogDir);\n cleanAssetCatalog(catalogDir);\n for (const asset of assets) {\n if (isCatalogAsset(asset)) {\n const imageSet = getImageSet(\n catalogDir,\n asset,\n filterPlatformAssetScales(platform, asset.scales)\n );\n writeImageSet(imageSet);\n } else {\n assetsToCopy.push(asset);\n }\n }\n Log.log('Done adding images to asset catalog');\n } else {\n assetsToCopy = [...assets];\n }\n\n const batches: Record<string, string> = {};\n\n async function write(src: string, dest: string) {\n if (files) {\n const data = await fs.promises.readFile(src);\n files.set(dest, {\n contents: data,\n targetDomain: platform === 'web' ? 'client' : undefined,\n });\n } else {\n batches[src] = path.join(outputDirectory, dest);\n }\n }\n\n for (const asset of assetsToCopy) {\n const validScales = new Set(filterPlatformAssetScales(platform, asset.scales));\n for (let idx = 0; idx < asset.scales.length; idx++) {\n const scale = asset.scales[idx];\n if (validScales.has(scale)) {\n await write(asset.files[idx], getAssetLocalPath(asset, { platform, scale, baseUrl }));\n }\n }\n }\n\n if (!files) {\n await copyInBatchesAsync(batches);\n }\n}\n\nfunction writeImageSet(imageSet: ImageSet): void {\n fs.mkdirSync(imageSet.baseUrl, { recursive: true });\n\n for (const file of imageSet.files) {\n const dest = path.join(imageSet.baseUrl, file.name);\n fs.copyFileSync(file.src, dest);\n }\n\n fs.writeFileSync(\n path.join(imageSet.baseUrl, 'Contents.json'),\n JSON.stringify({\n images: imageSet.files.map((file) => ({\n filename: file.name,\n idiom: 'universal',\n scale: `${file.scale}x`,\n })),\n info: {\n author: 'expo',\n version: 1,\n },\n })\n );\n}\n\nfunction isCatalogAsset(asset: Pick<AssetData, 'type'>): boolean {\n return asset.type === 'png' || asset.type === 'jpg' || asset.type === 'jpeg';\n}\n\ntype ImageSet = {\n baseUrl: string;\n files: { name: string; src: string; scale: number }[];\n};\n\nfunction getImageSet(\n catalogDir: string,\n asset: Pick<AssetData, 'httpServerLocation' | 'name' | 'type' | 'files'>,\n scales: number[]\n): ImageSet {\n const fileName = getResourceIdentifier(asset);\n return {\n baseUrl: path.join(catalogDir, `${fileName}.imageset`),\n files: scales.map((scale, idx) => {\n const suffix = scale === 1 ? '' : `@${scale}x`;\n return {\n name: `${fileName + suffix}.${asset.type}`,\n scale,\n src: asset.files[idx],\n };\n }),\n };\n}\n\nexport function copyInBatchesAsync(filesToCopy: Record<string, string>) {\n const queue = Object.keys(filesToCopy);\n if (queue.length === 0) {\n return;\n }\n\n Log.log(`Copying ${queue.length} asset files`);\n return new Promise<void>((resolve, reject) => {\n const copyNext = (error?: NodeJS.ErrnoException) => {\n if (error) {\n return reject(error);\n }\n if (queue.length) {\n // queue.length === 0 is checked in previous branch, so this is string\n const src = queue.shift() as string;\n const dest = filesToCopy[src];\n copy(src, dest, copyNext);\n } else {\n resolve();\n }\n };\n copyNext();\n });\n}\n\nfunction copy(src: string, dest: string, callback: (error: NodeJS.ErrnoException) => void): void {\n fs.mkdir(path.dirname(dest), { recursive: true }, (err?) => {\n if (err) {\n callback(err);\n return;\n }\n fs.createReadStream(src).pipe(fs.createWriteStream(dest)).on('finish', callback);\n });\n}\n\nconst ALLOWED_SCALES: { [key: string]: number[] } = {\n ios: [1, 2, 3],\n};\n\nexport function filterPlatformAssetScales(platform: string, scales: number[]): number[] {\n const whitelist: number[] = ALLOWED_SCALES[platform];\n if (!whitelist) {\n return scales;\n }\n const result = scales.filter((scale) => whitelist.includes(scale));\n if (!result.length && scales.length) {\n // No matching scale found, but there are some available. Ideally we don't\n // want to be in this situation and should throw, but for now as a fallback\n // let's just use the closest larger image\n const maxScale = whitelist[whitelist.length - 1];\n for (const scale of scales) {\n if (scale > maxScale) {\n result.push(scale);\n break;\n }\n }\n\n // There is no larger scales available, use the largest we have\n if (!result.length) {\n result.push(scales[scales.length - 1]);\n }\n }\n return result;\n}\n\nfunction getResourceIdentifier(asset: Pick<AssetData, 'httpServerLocation' | 'name'>): string {\n const folderPath = getBaseUrl(asset);\n return `${folderPath}/${asset.name}`\n .toLowerCase()\n .replace(/\\//g, '_') // Encode folder structure in file name\n .replace(/([^a-z0-9_])/g, '') // Remove illegal chars\n .replace(/^assets_/, ''); // Remove \"assets_\" prefix\n}\n\nfunction getBaseUrl(asset: Pick<AssetData, 'httpServerLocation'>): string {\n let baseUrl = asset.httpServerLocation;\n if (baseUrl[0] === '/') {\n baseUrl = baseUrl.substring(1);\n }\n return baseUrl;\n}\n"],"names":["persistMetroAssetsAsync","copyInBatchesAsync","filterPlatformAssetScales","cleanAssetCatalog","catalogDir","files","fs","readdirSync","filter","file","endsWith","rmSync","path","join","assets","platform","outputDirectory","baseUrl","iosAssetCatalogDirectory","Log","warn","assetsToCopy","existsSync","error","log","asset","isCatalogAsset","imageSet","getImageSet","scales","writeImageSet","push","batches","write","src","dest","data","promises","readFile","set","contents","targetDomain","undefined","validScales","Set","idx","length","scale","has","getAssetLocalPath","mkdirSync","recursive","name","copyFileSync","writeFileSync","JSON","stringify","images","map","filename","idiom","info","author","version","type","fileName","getResourceIdentifier","suffix","filesToCopy","queue","Object","keys","Promise","resolve","reject","copyNext","shift","copy","callback","mkdir","dirname","err","createReadStream","pipe","createWriteStream","on","ALLOWED_SCALES","ios","whitelist","result","includes","maxScale","folderPath","getBaseUrl","toLowerCase","replace","httpServerLocation","substring"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/export/persistMetroAssets.ts"],"sourcesContent":["/**\n * Copyright © 2023 650 Industries.\n * Copyright (c) Meta Platforms, Inc. and affiliates.\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 *\n * Based on the community asset persisting for Metro but with base path and web support:\n * https://github.com/facebook/react-native/blob/d6e0bc714ad4d215ede4949d3c4f44af6dea5dd3/packages/community-cli-plugin/src/commands/bundle/saveAssets.js#L1\n */\nimport fs from 'fs';\nimport type { AssetData } from 'metro';\nimport path from 'path';\n\nimport { getAssetLocalPath } from './metroAssetLocalPath';\nimport { ExportAssetMap } from './saveAssets';\nimport { Log } from '../log';\n\nfunction cleanAssetCatalog(catalogDir: string): void {\n const files = fs.readdirSync(catalogDir).filter((file) => file.endsWith('.imageset'));\n for (const file of files) {\n fs.rmSync(path.join(catalogDir, file));\n }\n}\n\nexport async function persistMetroAssetsAsync(\n assets: readonly AssetData[],\n {\n platform,\n outputDirectory,\n baseUrl,\n iosAssetCatalogDirectory,\n files,\n }: {\n platform: string;\n outputDirectory: string;\n baseUrl?: string;\n iosAssetCatalogDirectory?: string;\n files?: ExportAssetMap;\n }\n) {\n if (outputDirectory == null) {\n Log.warn('Assets destination folder is not set, skipping...');\n return;\n }\n\n let assetsToCopy: AssetData[] = [];\n\n // TODO: Use `files` as below to defer writing files\n if (platform === 'ios' && iosAssetCatalogDirectory != null) {\n // Use iOS Asset Catalog for images. This will allow Apple app thinning to\n // remove unused scales from the optimized bundle.\n const catalogDir = path.join(iosAssetCatalogDirectory, 'RNAssets.xcassets');\n if (!fs.existsSync(catalogDir)) {\n Log.error(\n `Could not find asset catalog 'RNAssets.xcassets' in ${iosAssetCatalogDirectory}. Make sure to create it if it does not exist.`\n );\n return;\n }\n\n Log.log('Adding images to asset catalog', catalogDir);\n cleanAssetCatalog(catalogDir);\n for (const asset of assets) {\n if (isCatalogAsset(asset)) {\n const imageSet = getImageSet(\n catalogDir,\n asset,\n filterPlatformAssetScales(platform, asset.scales)\n );\n writeImageSet(imageSet);\n } else {\n assetsToCopy.push(asset);\n }\n }\n Log.log('Done adding images to asset catalog');\n } else {\n assetsToCopy = [...assets];\n }\n\n const batches: Record<string, string> = {};\n\n async function write(src: string, dest: string) {\n if (files) {\n const data = await fs.promises.readFile(src);\n files.set(dest, {\n contents: data,\n targetDomain: platform === 'web' ? 'client' : undefined,\n });\n } else {\n batches[src] = path.join(outputDirectory, dest);\n }\n }\n\n for (const asset of assetsToCopy) {\n const validScales = new Set(filterPlatformAssetScales(platform, asset.scales));\n for (let idx = 0; idx < asset.scales.length; idx++) {\n const scale = asset.scales[idx];\n if (validScales.has(scale)) {\n await write(asset.files[idx], getAssetLocalPath(asset, { platform, scale, baseUrl }));\n }\n }\n }\n\n if (!files) {\n await copyInBatchesAsync(batches);\n }\n}\n\nfunction writeImageSet(imageSet: ImageSet): void {\n fs.mkdirSync(imageSet.baseUrl, { recursive: true });\n\n for (const file of imageSet.files) {\n const dest = path.join(imageSet.baseUrl, file.name);\n fs.copyFileSync(file.src, dest);\n }\n\n fs.writeFileSync(\n path.join(imageSet.baseUrl, 'Contents.json'),\n JSON.stringify({\n images: imageSet.files.map((file) => ({\n filename: file.name,\n idiom: 'universal',\n scale: `${file.scale}x`,\n })),\n info: {\n author: 'expo',\n version: 1,\n },\n })\n );\n}\n\nfunction isCatalogAsset(asset: Pick<AssetData, 'type'>): boolean {\n return asset.type === 'png' || asset.type === 'jpg' || asset.type === 'jpeg';\n}\n\ntype ImageSet = {\n baseUrl: string;\n files: { name: string; src: string; scale: number }[];\n};\n\nfunction getImageSet(\n catalogDir: string,\n asset: Pick<AssetData, 'httpServerLocation' | 'name' | 'type' | 'files'>,\n scales: number[]\n): ImageSet {\n const fileName = getResourceIdentifier(asset);\n return {\n baseUrl: path.join(catalogDir, `${fileName}.imageset`),\n files: scales.map((scale, idx) => {\n const suffix = scale === 1 ? '' : `@${scale}x`;\n return {\n name: `${fileName + suffix}.${asset.type}`,\n scale,\n src: asset.files[idx],\n };\n }),\n };\n}\n\nexport function copyInBatchesAsync(filesToCopy: Record<string, string>) {\n const queue = Object.keys(filesToCopy);\n if (queue.length === 0) {\n return;\n }\n\n Log.log(`Copying ${queue.length} asset files`);\n return new Promise<void>((resolve, reject) => {\n const copyNext = (error?: NodeJS.ErrnoException) => {\n if (error) {\n return reject(error);\n }\n if (queue.length) {\n // queue.length === 0 is checked in previous branch, so this is string\n const src = queue.shift() as string;\n const dest = filesToCopy[src];\n copy(src, dest, copyNext);\n } else {\n resolve();\n }\n };\n copyNext();\n });\n}\n\nfunction copy(src: string, dest: string, callback: (error: NodeJS.ErrnoException) => void): void {\n fs.mkdir(path.dirname(dest), { recursive: true }, (err?) => {\n if (err) {\n callback(err);\n return;\n }\n fs.createReadStream(src).pipe(fs.createWriteStream(dest)).on('finish', callback);\n });\n}\n\nconst ALLOWED_SCALES: { [key: string]: number[] } = {\n ios: [1, 2, 3],\n};\n\nexport function filterPlatformAssetScales(platform: string, scales: number[]): number[] {\n const whitelist: number[] = ALLOWED_SCALES[platform];\n if (!whitelist) {\n return scales;\n }\n const result = scales.filter((scale) => whitelist.includes(scale));\n if (!result.length && scales.length) {\n // No matching scale found, but there are some available. Ideally we don't\n // want to be in this situation and should throw, but for now as a fallback\n // let's just use the closest larger image\n const maxScale = whitelist[whitelist.length - 1];\n for (const scale of scales) {\n if (scale > maxScale) {\n result.push(scale);\n break;\n }\n }\n\n // There is no larger scales available, use the largest we have\n if (!result.length) {\n result.push(scales[scales.length - 1]);\n }\n }\n return result;\n}\n\nfunction getResourceIdentifier(asset: Pick<AssetData, 'httpServerLocation' | 'name'>): string {\n const folderPath = getBaseUrl(asset);\n return `${folderPath}/${asset.name}`\n .toLowerCase()\n .replace(/\\//g, '_') // Encode folder structure in file name\n .replace(/([^a-z0-9_])/g, '') // Remove illegal chars\n .replace(/^assets_/, ''); // Remove \"assets_\" prefix\n}\n\nfunction getBaseUrl(asset: Pick<AssetData, 'httpServerLocation'>): string {\n let baseUrl = asset.httpServerLocation;\n if (baseUrl[0] === '/') {\n baseUrl = baseUrl.substring(1);\n }\n return baseUrl;\n}\n"],"names":["persistMetroAssetsAsync","copyInBatchesAsync","filterPlatformAssetScales","cleanAssetCatalog","catalogDir","files","fs","readdirSync","filter","file","endsWith","rmSync","path","join","assets","platform","outputDirectory","baseUrl","iosAssetCatalogDirectory","Log","warn","assetsToCopy","existsSync","error","log","asset","isCatalogAsset","imageSet","getImageSet","scales","writeImageSet","push","batches","write","src","dest","data","promises","readFile","set","contents","targetDomain","undefined","validScales","Set","idx","length","scale","has","getAssetLocalPath","mkdirSync","recursive","name","copyFileSync","writeFileSync","JSON","stringify","images","map","filename","idiom","info","author","version","type","fileName","getResourceIdentifier","suffix","filesToCopy","queue","Object","keys","Promise","resolve","reject","copyNext","shift","copy","callback","mkdir","dirname","err","createReadStream","pipe","createWriteStream","on","ALLOWED_SCALES","ios","whitelist","result","includes","maxScale","folderPath","getBaseUrl","toLowerCase","replace","httpServerLocation","substring"],"mappings":"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"}
@@ -4,8 +4,20 @@ Object.defineProperty(exports, "__esModule", {
4
4
  });
5
5
  exports.getUserDefinedFile = getUserDefinedFile;
6
6
  exports.copyPublicFolderAsync = copyPublicFolderAsync;
7
- var _fs = _interopRequireDefault(require("fs"));
8
- var _path = _interopRequireDefault(require("path"));
7
+ function _fs() {
8
+ const data = _interopRequireDefault(require("fs"));
9
+ _fs = function() {
10
+ return data;
11
+ };
12
+ return data;
13
+ }
14
+ function _path() {
15
+ const data = _interopRequireDefault(require("path"));
16
+ _path = function() {
17
+ return data;
18
+ };
19
+ return data;
20
+ }
9
21
  var _dir = require("../utils/dir");
10
22
  var _env = require("../utils/env");
11
23
  function _interopRequireDefault(obj) {
@@ -15,10 +27,10 @@ function _interopRequireDefault(obj) {
15
27
  }
16
28
  const debug = require("debug")("expo:public-folder");
17
29
  function getUserDefinedFile(projectRoot, possiblePaths) {
18
- const publicPath = _path.default.join(projectRoot, _env.env.EXPO_PUBLIC_FOLDER);
30
+ const publicPath = _path().default.join(projectRoot, _env.env.EXPO_PUBLIC_FOLDER);
19
31
  for (const possiblePath of possiblePaths){
20
- const fullPath = _path.default.join(publicPath, possiblePath);
21
- if (_fs.default.existsSync(fullPath)) {
32
+ const fullPath = _path().default.join(publicPath, possiblePath);
33
+ if (_fs().default.existsSync(fullPath)) {
22
34
  debug(`Found user-defined public file: ` + possiblePath);
23
35
  return fullPath;
24
36
  }
@@ -26,7 +38,7 @@ function getUserDefinedFile(projectRoot, possiblePaths) {
26
38
  return null;
27
39
  }
28
40
  async function copyPublicFolderAsync(publicFolder, outputFolder) {
29
- if (_fs.default.existsSync(publicFolder)) {
41
+ if (_fs().default.existsSync(publicFolder)) {
30
42
  await (0, _dir).copyAsync(publicFolder, outputFolder);
31
43
  }
32
44
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/export/publicFolder.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\n\nimport { copyAsync } from '../utils/dir';\nimport { env } from '../utils/env';\n\nconst debug = require('debug')('expo:public-folder') as typeof console.log;\n\n/** @returns the file system path for a user-defined file in the public folder. */\nexport function getUserDefinedFile(projectRoot: string, possiblePaths: string[]): string | null {\n const publicPath = path.join(projectRoot, env.EXPO_PUBLIC_FOLDER);\n\n for (const possiblePath of possiblePaths) {\n const fullPath = path.join(publicPath, possiblePath);\n if (fs.existsSync(fullPath)) {\n debug(`Found user-defined public file: ` + possiblePath);\n return fullPath;\n }\n }\n\n return null;\n}\n\n/**\n * Copy the contents of the public folder into the output folder.\n * This enables users to add static files like `favicon.ico` or `serve.json`.\n *\n * The contents of this folder are completely universal since they refer to\n * static network requests which fall outside the scope of React Native's magic\n * platform resolution patterns.\n */\nexport async function copyPublicFolderAsync(publicFolder: string, outputFolder: string) {\n if (fs.existsSync(publicFolder)) {\n await copyAsync(publicFolder, outputFolder);\n }\n}\n"],"names":["getUserDefinedFile","copyPublicFolderAsync","debug","require","projectRoot","possiblePaths","publicPath","path","join","env","EXPO_PUBLIC_FOLDER","possiblePath","fullPath","fs","existsSync","publicFolder","outputFolder","copyAsync"],"mappings":"AAAA;;;;QASgBA,kBAAkB,GAAlBA,kBAAkB;QAsBZC,qBAAqB,GAArBA,qBAAqB;AA/B5B,IAAA,GAAI,kCAAJ,IAAI,EAAA;AACF,IAAA,KAAM,kCAAN,MAAM,EAAA;AAEG,IAAA,IAAc,WAAd,cAAc,CAAA;AACpB,IAAA,IAAc,WAAd,cAAc,CAAA;;;;;;AAElC,MAAMC,KAAK,GAAGC,OAAO,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAAC,AAAsB,AAAC;AAGpE,SAASH,kBAAkB,CAACI,WAAmB,EAAEC,aAAuB,EAAiB;IAC9F,MAAMC,UAAU,GAAGC,KAAI,QAAA,CAACC,IAAI,CAACJ,WAAW,EAAEK,IAAG,IAAA,CAACC,kBAAkB,CAAC,AAAC;IAElE,KAAK,MAAMC,YAAY,IAAIN,aAAa,CAAE;QACxC,MAAMO,QAAQ,GAAGL,KAAI,QAAA,CAACC,IAAI,CAACF,UAAU,EAAEK,YAAY,CAAC,AAAC;QACrD,IAAIE,GAAE,QAAA,CAACC,UAAU,CAACF,QAAQ,CAAC,EAAE;YAC3BV,KAAK,CAAC,CAAC,gCAAgC,CAAC,GAAGS,YAAY,CAAC,CAAC;YACzD,OAAOC,QAAQ,CAAC;SACjB;KACF;IAED,OAAO,IAAI,CAAC;CACb;AAUM,eAAeX,qBAAqB,CAACc,YAAoB,EAAEC,YAAoB,EAAE;IACtF,IAAIH,GAAE,QAAA,CAACC,UAAU,CAACC,YAAY,CAAC,EAAE;QAC/B,MAAME,CAAAA,GAAAA,IAAS,AAA4B,CAAA,UAA5B,CAACF,YAAY,EAAEC,YAAY,CAAC,CAAC;KAC7C;CACF"}
1
+ {"version":3,"sources":["../../../src/export/publicFolder.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\n\nimport { copyAsync } from '../utils/dir';\nimport { env } from '../utils/env';\n\nconst debug = require('debug')('expo:public-folder') as typeof console.log;\n\n/** @returns the file system path for a user-defined file in the public folder. */\nexport function getUserDefinedFile(projectRoot: string, possiblePaths: string[]): string | null {\n const publicPath = path.join(projectRoot, env.EXPO_PUBLIC_FOLDER);\n\n for (const possiblePath of possiblePaths) {\n const fullPath = path.join(publicPath, possiblePath);\n if (fs.existsSync(fullPath)) {\n debug(`Found user-defined public file: ` + possiblePath);\n return fullPath;\n }\n }\n\n return null;\n}\n\n/**\n * Copy the contents of the public folder into the output folder.\n * This enables users to add static files like `favicon.ico` or `serve.json`.\n *\n * The contents of this folder are completely universal since they refer to\n * static network requests which fall outside the scope of React Native's magic\n * platform resolution patterns.\n */\nexport async function copyPublicFolderAsync(publicFolder: string, outputFolder: string) {\n if (fs.existsSync(publicFolder)) {\n await copyAsync(publicFolder, outputFolder);\n }\n}\n"],"names":["getUserDefinedFile","copyPublicFolderAsync","debug","require","projectRoot","possiblePaths","publicPath","path","join","env","EXPO_PUBLIC_FOLDER","possiblePath","fullPath","fs","existsSync","publicFolder","outputFolder","copyAsync"],"mappings":"AAAA;;;;QASgBA,kBAAkB,GAAlBA,kBAAkB;QAsBZC,qBAAqB,GAArBA,qBAAqB;SA/B5B,GAAI;gDAAJ,IAAI;IAAJ,GAAI;;;;;SACF,KAAM;gDAAN,MAAM;IAAN,KAAM;;;;;AAEG,IAAA,IAAc,WAAd,cAAc,CAAA;AACpB,IAAA,IAAc,WAAd,cAAc,CAAA;;;;;;AAElC,MAAMC,KAAK,GAAGC,OAAO,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAAC,AAAsB,AAAC;AAGpE,SAASH,kBAAkB,CAACI,WAAmB,EAAEC,aAAuB,EAAiB;IAC9F,MAAMC,UAAU,GAAGC,KAAI,UAAA,CAACC,IAAI,CAACJ,WAAW,EAAEK,IAAG,IAAA,CAACC,kBAAkB,CAAC,AAAC;IAElE,KAAK,MAAMC,YAAY,IAAIN,aAAa,CAAE;QACxC,MAAMO,QAAQ,GAAGL,KAAI,UAAA,CAACC,IAAI,CAACF,UAAU,EAAEK,YAAY,CAAC,AAAC;QACrD,IAAIE,GAAE,UAAA,CAACC,UAAU,CAACF,QAAQ,CAAC,EAAE;YAC3BV,KAAK,CAAC,CAAC,gCAAgC,CAAC,GAAGS,YAAY,CAAC,CAAC;YACzD,OAAOC,QAAQ,CAAC;SACjB;KACF;IAED,OAAO,IAAI,CAAC;CACb;AAUM,eAAeX,qBAAqB,CAACc,YAAoB,EAAEC,YAAoB,EAAE;IACtF,IAAIH,GAAE,UAAA,CAACC,UAAU,CAACC,YAAY,CAAC,EAAE;QAC/B,MAAME,CAAAA,GAAAA,IAAS,AAA4B,CAAA,UAA5B,CAACF,YAAY,EAAEC,YAAY,CAAC,CAAC;KAC7C;CACF"}
@@ -4,7 +4,13 @@ Object.defineProperty(exports, "__esModule", {
4
4
  });
5
5
  exports.resolvePlatformOption = resolvePlatformOption;
6
6
  exports.resolveOptionsAsync = resolveOptionsAsync;
7
- var _config = require("@expo/config");
7
+ function _config() {
8
+ const data = require("@expo/config");
9
+ _config = function() {
10
+ return data;
11
+ };
12
+ return data;
13
+ }
8
14
  var _platformBundlers = require("../start/server/platformBundlers");
9
15
  var _errors = require("../utils/errors");
10
16
  function resolvePlatformOption(exp, platformBundlers, platform1 = [
@@ -49,7 +55,7 @@ function resolvePlatformOption(exp, platformBundlers, platform1 = [
49
55
  );
50
56
  }
51
57
  async function resolveOptionsAsync(projectRoot, args) {
52
- const { exp } = (0, _config).getConfig(projectRoot, {
58
+ const { exp } = _config().getConfig(projectRoot, {
53
59
  skipPlugins: true,
54
60
  skipSDKVersionRequirement: true
55
61
  });