@expo/cli 0.18.0 → 0.18.2

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 (653) hide show
  1. package/build/bin/cli +90 -114
  2. package/build/bin/cli.map +1 -1
  3. package/build/src/api/endpoint.js +11 -3
  4. package/build/src/api/endpoint.js.map +1 -1
  5. package/build/src/api/getExpoGoIntermediateCertificate.js +7 -4
  6. package/build/src/api/getExpoGoIntermediateCertificate.js.map +1 -1
  7. package/build/src/api/getExpoSchema.js +13 -11
  8. package/build/src/api/getExpoSchema.js.map +1 -1
  9. package/build/src/api/getNativeModuleVersions.js +7 -4
  10. package/build/src/api/getNativeModuleVersions.js.map +1 -1
  11. package/build/src/api/getProjectDevelopmentCertificate.js +7 -4
  12. package/build/src/api/getProjectDevelopmentCertificate.js.map +1 -1
  13. package/build/src/api/getVersions.js +7 -4
  14. package/build/src/api/getVersions.js.map +1 -1
  15. package/build/src/api/graphql/client.js +55 -35
  16. package/build/src/api/graphql/client.js.map +1 -1
  17. package/build/src/api/graphql/queries/AppQuery.js +9 -7
  18. package/build/src/api/graphql/queries/AppQuery.js.map +1 -1
  19. package/build/src/api/graphql/queries/UserQuery.js +7 -5
  20. package/build/src/api/graphql/queries/UserQuery.js.map +1 -1
  21. package/build/src/api/graphql/types/App.js +6 -4
  22. package/build/src/api/graphql/types/App.js.map +1 -1
  23. package/build/src/api/rest/cache/FileSystemCache.js +6 -4
  24. package/build/src/api/rest/cache/FileSystemCache.js.map +1 -1
  25. package/build/src/api/rest/cache/response.js +4 -1
  26. package/build/src/api/rest/cache/response.js.map +1 -1
  27. package/build/src/api/rest/cache/wrapFetchWithCache.js +21 -12
  28. package/build/src/api/rest/cache/wrapFetchWithCache.js.map +1 -1
  29. package/build/src/api/rest/client.js +36 -29
  30. package/build/src/api/rest/client.js.map +1 -1
  31. package/build/src/api/rest/wrapFetchWithBaseUrl.js +4 -1
  32. package/build/src/api/rest/wrapFetchWithBaseUrl.js.map +1 -1
  33. package/build/src/api/rest/wrapFetchWithOffline.js +5 -2
  34. package/build/src/api/rest/wrapFetchWithOffline.js.map +1 -1
  35. package/build/src/api/rest/wrapFetchWithProgress.js +40 -19
  36. package/build/src/api/rest/wrapFetchWithProgress.js.map +1 -1
  37. package/build/src/api/rest/wrapFetchWithProxy.js +7 -4
  38. package/build/src/api/rest/wrapFetchWithProxy.js.map +1 -1
  39. package/build/src/api/settings.js +9 -4
  40. package/build/src/api/settings.js.map +1 -1
  41. package/build/src/api/updateDevelopmentSession.js +16 -8
  42. package/build/src/api/updateDevelopmentSession.js.map +1 -1
  43. package/build/src/api/user/UserSettings.js +10 -8
  44. package/build/src/api/user/UserSettings.js.map +1 -1
  45. package/build/src/api/user/actions.js +66 -41
  46. package/build/src/api/user/actions.js.map +1 -1
  47. package/build/src/api/user/expoSsoLauncher.js +46 -25
  48. package/build/src/api/user/expoSsoLauncher.js.map +1 -1
  49. package/build/src/api/user/otp.js +70 -50
  50. package/build/src/api/user/otp.js.map +1 -1
  51. package/build/src/api/user/user.js +66 -41
  52. package/build/src/api/user/user.js.map +1 -1
  53. package/build/src/config/configAsync.js +62 -43
  54. package/build/src/config/configAsync.js.map +1 -1
  55. package/build/src/config/index.js +46 -30
  56. package/build/src/config/index.js.map +1 -1
  57. package/build/src/customize/customizeAsync.js +14 -11
  58. package/build/src/customize/customizeAsync.js.map +1 -1
  59. package/build/src/customize/generate.js +61 -46
  60. package/build/src/customize/generate.js.map +1 -1
  61. package/build/src/customize/index.js +10 -8
  62. package/build/src/customize/index.js.map +1 -1
  63. package/build/src/customize/resolveOptions.js +7 -4
  64. package/build/src/customize/resolveOptions.js.map +1 -1
  65. package/build/src/customize/templates.js +31 -34
  66. package/build/src/customize/templates.js.map +1 -1
  67. package/build/src/customize/typescript.js +43 -28
  68. package/build/src/customize/typescript.js.map +1 -1
  69. package/build/src/export/createMetadataJson.js +7 -6
  70. package/build/src/export/createMetadataJson.js.map +1 -1
  71. package/build/src/export/embed/exportEmbedAsync.js +51 -38
  72. package/build/src/export/embed/exportEmbedAsync.js.map +1 -1
  73. package/build/src/export/embed/index.js +48 -36
  74. package/build/src/export/embed/index.js.map +1 -1
  75. package/build/src/export/embed/resolveOptions.js +7 -4
  76. package/build/src/export/embed/resolveOptions.js.map +1 -1
  77. package/build/src/export/embed/xcodeCompilerLogger.js +20 -8
  78. package/build/src/export/embed/xcodeCompilerLogger.js.map +1 -1
  79. package/build/src/export/exportApp.js +84 -67
  80. package/build/src/export/exportApp.js.map +1 -1
  81. package/build/src/export/exportAssets.js +62 -43
  82. package/build/src/export/exportAssets.js.map +1 -1
  83. package/build/src/export/exportAsync.js +47 -26
  84. package/build/src/export/exportAsync.js.map +1 -1
  85. package/build/src/export/exportHermes.js +19 -11
  86. package/build/src/export/exportHermes.js.map +1 -1
  87. package/build/src/export/exportStaticAsync.js +49 -38
  88. package/build/src/export/exportStaticAsync.js.map +1 -1
  89. package/build/src/export/favicon.js +19 -11
  90. package/build/src/export/favicon.js.map +1 -1
  91. package/build/src/export/fork-bundleAsync.js +42 -39
  92. package/build/src/export/fork-bundleAsync.js.map +1 -1
  93. package/build/src/export/getPublicExpoManifest.js +9 -6
  94. package/build/src/export/getPublicExpoManifest.js.map +1 -1
  95. package/build/src/export/getResolvedLocales.js +7 -4
  96. package/build/src/export/getResolvedLocales.js.map +1 -1
  97. package/build/src/export/html.js +12 -4
  98. package/build/src/export/html.js.map +1 -1
  99. package/build/src/export/index.js +49 -33
  100. package/build/src/export/index.js.map +1 -1
  101. package/build/src/export/metroAssetLocalPath.js +22 -6
  102. package/build/src/export/metroAssetLocalPath.js.map +1 -1
  103. package/build/src/export/persistMetroAssets.js +38 -24
  104. package/build/src/export/persistMetroAssets.js.map +1 -1
  105. package/build/src/export/publicFolder.js +15 -7
  106. package/build/src/export/publicFolder.js.map +1 -1
  107. package/build/src/export/resolveOptions.js +19 -15
  108. package/build/src/export/resolveOptions.js.map +1 -1
  109. package/build/src/export/saveAssets.js +42 -38
  110. package/build/src/export/saveAssets.js.map +1 -1
  111. package/build/src/export/web/exportWebAsync.js +15 -12
  112. package/build/src/export/web/exportWebAsync.js.map +1 -1
  113. package/build/src/export/web/index.js +47 -31
  114. package/build/src/export/web/index.js.map +1 -1
  115. package/build/src/export/web/resolveOptions.js +4 -1
  116. package/build/src/export/web/resolveOptions.js.map +1 -1
  117. package/build/src/export/writeContents.js +12 -7
  118. package/build/src/export/writeContents.js.map +1 -1
  119. package/build/src/graphql/generated.js +141 -128
  120. package/build/src/graphql/generated.js.map +1 -1
  121. package/build/src/install/applyPlugins.js +43 -25
  122. package/build/src/install/applyPlugins.js.map +1 -1
  123. package/build/src/install/checkPackages.js +55 -35
  124. package/build/src/install/checkPackages.js.map +1 -1
  125. package/build/src/install/fixPackages.js +52 -35
  126. package/build/src/install/fixPackages.js.map +1 -1
  127. package/build/src/install/index.js +15 -13
  128. package/build/src/install/index.js.map +1 -1
  129. package/build/src/install/installAsync.js +90 -65
  130. package/build/src/install/installAsync.js.map +1 -1
  131. package/build/src/install/installExpoPackage.js +48 -27
  132. package/build/src/install/installExpoPackage.js.map +1 -1
  133. package/build/src/install/resolveOptions.js +8 -5
  134. package/build/src/install/resolveOptions.js.map +1 -1
  135. package/build/src/install/utils/autoAddConfigPlugins.js +15 -7
  136. package/build/src/install/utils/autoAddConfigPlugins.js.map +1 -1
  137. package/build/src/lint/ESlintPrerequisite.js +174 -0
  138. package/build/src/lint/ESlintPrerequisite.js.map +1 -0
  139. package/build/src/lint/index.js +66 -0
  140. package/build/src/lint/index.js.map +1 -0
  141. package/build/src/lint/lintAsync.js +33 -0
  142. package/build/src/lint/lintAsync.js.map +1 -0
  143. package/build/src/log.js +20 -14
  144. package/build/src/log.js.map +1 -1
  145. package/build/src/login/index.js +43 -25
  146. package/build/src/login/index.js.map +1 -1
  147. package/build/src/logout/index.js +43 -25
  148. package/build/src/logout/index.js.map +1 -1
  149. package/build/src/prebuild/clearNativeFolder.js +65 -42
  150. package/build/src/prebuild/clearNativeFolder.js.map +1 -1
  151. package/build/src/prebuild/configureProjectAsync.js +50 -29
  152. package/build/src/prebuild/configureProjectAsync.js.map +1 -1
  153. package/build/src/prebuild/copyTemplateFiles.js +19 -13
  154. package/build/src/prebuild/copyTemplateFiles.js.map +1 -1
  155. package/build/src/prebuild/ensureConfigAsync.js +54 -28
  156. package/build/src/prebuild/ensureConfigAsync.js.map +1 -1
  157. package/build/src/prebuild/index.js +52 -38
  158. package/build/src/prebuild/index.js.map +1 -1
  159. package/build/src/prebuild/prebuildAsync.js +68 -51
  160. package/build/src/prebuild/prebuildAsync.js.map +1 -1
  161. package/build/src/prebuild/renameTemplateAppName.js +15 -10
  162. package/build/src/prebuild/renameTemplateAppName.js.map +1 -1
  163. package/build/src/prebuild/resolveOptions.js +60 -35
  164. package/build/src/prebuild/resolveOptions.js.map +1 -1
  165. package/build/src/prebuild/resolveTemplate.js +66 -40
  166. package/build/src/prebuild/resolveTemplate.js.map +1 -1
  167. package/build/src/prebuild/updateFromTemplate.js +67 -44
  168. package/build/src/prebuild/updateFromTemplate.js.map +1 -1
  169. package/build/src/prebuild/updatePackageJson.js +70 -49
  170. package/build/src/prebuild/updatePackageJson.js.map +1 -1
  171. package/build/src/prebuild/validateTemplatePlatforms.js +44 -23
  172. package/build/src/prebuild/validateTemplatePlatforms.js.map +1 -1
  173. package/build/src/register/index.js +43 -25
  174. package/build/src/register/index.js.map +1 -1
  175. package/build/src/register/registerAsync.js +14 -11
  176. package/build/src/register/registerAsync.js.map +1 -1
  177. package/build/src/run/android/index.js +47 -31
  178. package/build/src/run/android/index.js.map +1 -1
  179. package/build/src/run/android/resolveDevice.js +9 -6
  180. package/build/src/run/android/resolveDevice.js.map +1 -1
  181. package/build/src/run/android/resolveGradlePropsAsync.js +10 -9
  182. package/build/src/run/android/resolveGradlePropsAsync.js.map +1 -1
  183. package/build/src/run/android/resolveInstallApkName.js +14 -12
  184. package/build/src/run/android/resolveInstallApkName.js.map +1 -1
  185. package/build/src/run/android/resolveLaunchProps.js +6 -3
  186. package/build/src/run/android/resolveLaunchProps.js.map +1 -1
  187. package/build/src/run/android/resolveOptions.js +12 -9
  188. package/build/src/run/android/resolveOptions.js.map +1 -1
  189. package/build/src/run/android/runAndroidAsync.js +27 -24
  190. package/build/src/run/android/runAndroidAsync.js.map +1 -1
  191. package/build/src/run/ensureNativeProject.js +11 -8
  192. package/build/src/run/ensureNativeProject.js.map +1 -1
  193. package/build/src/run/hints.js +15 -7
  194. package/build/src/run/hints.js.map +1 -1
  195. package/build/src/run/index.js +49 -35
  196. package/build/src/run/index.js.map +1 -1
  197. package/build/src/run/ios/XcodeBuild.js +75 -51
  198. package/build/src/run/ios/XcodeBuild.js.map +1 -1
  199. package/build/src/run/ios/appleDevice/AppleDevice.js +31 -24
  200. package/build/src/run/ios/appleDevice/AppleDevice.js.map +1 -1
  201. package/build/src/run/ios/appleDevice/ClientManager.js +66 -33
  202. package/build/src/run/ios/appleDevice/ClientManager.js.map +1 -1
  203. package/build/src/run/ios/appleDevice/client/AFCClient.js +73 -47
  204. package/build/src/run/ios/appleDevice/client/AFCClient.js.map +1 -1
  205. package/build/src/run/ios/appleDevice/client/DebugserverClient.js +53 -26
  206. package/build/src/run/ios/appleDevice/client/DebugserverClient.js.map +1 -1
  207. package/build/src/run/ios/appleDevice/client/InstallationProxyClient.js +15 -6
  208. package/build/src/run/ios/appleDevice/client/InstallationProxyClient.js.map +1 -1
  209. package/build/src/run/ios/appleDevice/client/LockdowndClient.js +54 -27
  210. package/build/src/run/ios/appleDevice/client/LockdowndClient.js.map +1 -1
  211. package/build/src/run/ios/appleDevice/client/MobileImageMounterClient.js +56 -30
  212. package/build/src/run/ios/appleDevice/client/MobileImageMounterClient.js.map +1 -1
  213. package/build/src/run/ios/appleDevice/client/ServiceClient.js +18 -4
  214. package/build/src/run/ios/appleDevice/client/ServiceClient.js.map +1 -1
  215. package/build/src/run/ios/appleDevice/client/UsbmuxdClient.js +22 -13
  216. package/build/src/run/ios/appleDevice/client/UsbmuxdClient.js.map +1 -1
  217. package/build/src/run/ios/appleDevice/installOnDeviceAsync.js +57 -31
  218. package/build/src/run/ios/appleDevice/installOnDeviceAsync.js.map +1 -1
  219. package/build/src/run/ios/appleDevice/protocol/AFCProtocol.js +79 -66
  220. package/build/src/run/ios/appleDevice/protocol/AFCProtocol.js.map +1 -1
  221. package/build/src/run/ios/appleDevice/protocol/AbstractProtocol.js +28 -14
  222. package/build/src/run/ios/appleDevice/protocol/AbstractProtocol.js.map +1 -1
  223. package/build/src/run/ios/appleDevice/protocol/GDBProtocol.js +24 -11
  224. package/build/src/run/ios/appleDevice/protocol/GDBProtocol.js.map +1 -1
  225. package/build/src/run/ios/appleDevice/protocol/LockdownProtocol.js +26 -13
  226. package/build/src/run/ios/appleDevice/protocol/LockdownProtocol.js.map +1 -1
  227. package/build/src/run/ios/appleDevice/protocol/UsbmuxProtocol.js +23 -10
  228. package/build/src/run/ios/appleDevice/protocol/UsbmuxProtocol.js.map +1 -1
  229. package/build/src/run/ios/codeSigning/Security.js +27 -20
  230. package/build/src/run/ios/codeSigning/Security.js.map +1 -1
  231. package/build/src/run/ios/codeSigning/configureCodeSigning.js +49 -28
  232. package/build/src/run/ios/codeSigning/configureCodeSigning.js.map +1 -1
  233. package/build/src/run/ios/codeSigning/resolveCertificateSigningIdentity.js +61 -36
  234. package/build/src/run/ios/codeSigning/resolveCertificateSigningIdentity.js.map +1 -1
  235. package/build/src/run/ios/codeSigning/settings.js +11 -3
  236. package/build/src/run/ios/codeSigning/settings.js.map +1 -1
  237. package/build/src/run/ios/codeSigning/simulatorCodeSigning.js +7 -5
  238. package/build/src/run/ios/codeSigning/simulatorCodeSigning.js.map +1 -1
  239. package/build/src/run/ios/codeSigning/xcodeCodeSigning.js +14 -8
  240. package/build/src/run/ios/codeSigning/xcodeCodeSigning.js.map +1 -1
  241. package/build/src/run/ios/index.js +50 -34
  242. package/build/src/run/ios/index.js.map +1 -1
  243. package/build/src/run/ios/launchApp.js +52 -31
  244. package/build/src/run/ios/launchApp.js.map +1 -1
  245. package/build/src/run/ios/options/promptDevice.js +17 -13
  246. package/build/src/run/ios/options/promptDevice.js.map +1 -1
  247. package/build/src/run/ios/options/resolveDevice.js +63 -39
  248. package/build/src/run/ios/options/resolveDevice.js.map +1 -1
  249. package/build/src/run/ios/options/resolveNativeScheme.js +57 -34
  250. package/build/src/run/ios/options/resolveNativeScheme.js.map +1 -1
  251. package/build/src/run/ios/options/resolveOptions.js +15 -12
  252. package/build/src/run/ios/options/resolveOptions.js.map +1 -1
  253. package/build/src/run/ios/options/resolveXcodeProject.js +6 -3
  254. package/build/src/run/ios/options/resolveXcodeProject.js.map +1 -1
  255. package/build/src/run/ios/runIosAsync.js +63 -42
  256. package/build/src/run/ios/runIosAsync.js.map +1 -1
  257. package/build/src/run/resolveBundlerProps.js +8 -5
  258. package/build/src/run/resolveBundlerProps.js.map +1 -1
  259. package/build/src/run/startBundler.js +47 -26
  260. package/build/src/run/startBundler.js.map +1 -1
  261. package/build/src/start/detectDevClient.js +6 -3
  262. package/build/src/start/detectDevClient.js.map +1 -1
  263. package/build/src/start/doctor/Prerequisite.js +15 -7
  264. package/build/src/start/doctor/Prerequisite.js.map +1 -1
  265. package/build/src/start/doctor/SecurityBinPrerequisite.js +7 -4
  266. package/build/src/start/doctor/SecurityBinPrerequisite.js.map +1 -1
  267. package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js +44 -23
  268. package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js.map +1 -1
  269. package/build/src/start/doctor/apple/XcodeDeveloperDiskImagePrerequisite.js +44 -23
  270. package/build/src/start/doctor/apple/XcodeDeveloperDiskImagePrerequisite.js.map +1 -1
  271. package/build/src/start/doctor/apple/XcodePrerequisite.js +61 -36
  272. package/build/src/start/doctor/apple/XcodePrerequisite.js.map +1 -1
  273. package/build/src/start/doctor/apple/XcrunPrerequisite.js +15 -12
  274. package/build/src/start/doctor/apple/XcrunPrerequisite.js.map +1 -1
  275. package/build/src/start/doctor/dependencies/bundledNativeModules.js +49 -28
  276. package/build/src/start/doctor/dependencies/bundledNativeModules.js.map +1 -1
  277. package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js +98 -53
  278. package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js.map +1 -1
  279. package/build/src/start/doctor/dependencies/getMissingPackages.js +17 -9
  280. package/build/src/start/doctor/dependencies/getMissingPackages.js.map +1 -1
  281. package/build/src/start/doctor/dependencies/getVersionedPackages.js +23 -15
  282. package/build/src/start/doctor/dependencies/getVersionedPackages.js.map +1 -1
  283. package/build/src/start/doctor/dependencies/resolvePackages.js +19 -13
  284. package/build/src/start/doctor/dependencies/resolvePackages.js.map +1 -1
  285. package/build/src/start/doctor/dependencies/validateDependenciesVersions.js +63 -41
  286. package/build/src/start/doctor/dependencies/validateDependenciesVersions.js.map +1 -1
  287. package/build/src/start/doctor/ngrok/ExternalModule.js +64 -39
  288. package/build/src/start/doctor/ngrok/ExternalModule.js.map +1 -1
  289. package/build/src/start/doctor/ngrok/NgrokResolver.js +12 -5
  290. package/build/src/start/doctor/ngrok/NgrokResolver.js.map +1 -1
  291. package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js +59 -41
  292. package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js.map +1 -1
  293. package/build/src/start/doctor/typescript/updateTSConfig.js +59 -36
  294. package/build/src/start/doctor/typescript/updateTSConfig.js.map +1 -1
  295. package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js +57 -31
  296. package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js.map +1 -1
  297. package/build/src/start/index.js +56 -42
  298. package/build/src/start/index.js.map +1 -1
  299. package/build/src/start/interface/KeyPressHandler.js +43 -22
  300. package/build/src/start/interface/KeyPressHandler.js.map +1 -1
  301. package/build/src/start/interface/commandsTable.js +60 -38
  302. package/build/src/start/interface/commandsTable.js.map +1 -1
  303. package/build/src/start/interface/interactiveActions.js +85 -68
  304. package/build/src/start/interface/interactiveActions.js.map +1 -1
  305. package/build/src/start/interface/startInterface.js +78 -57
  306. package/build/src/start/interface/startInterface.js.map +1 -1
  307. package/build/src/start/platforms/AppIdResolver.js +9 -6
  308. package/build/src/start/platforms/AppIdResolver.js.map +1 -1
  309. package/build/src/start/platforms/DeviceManager.js +41 -20
  310. package/build/src/start/platforms/DeviceManager.js.map +1 -1
  311. package/build/src/start/platforms/ExpoGoInstaller.js +55 -35
  312. package/build/src/start/platforms/ExpoGoInstaller.js.map +1 -1
  313. package/build/src/start/platforms/PlatformManager.js +19 -17
  314. package/build/src/start/platforms/PlatformManager.js.map +1 -1
  315. package/build/src/start/platforms/android/ADBServer.js +15 -12
  316. package/build/src/start/platforms/android/ADBServer.js.map +1 -1
  317. package/build/src/start/platforms/android/AndroidAppIdResolver.js +6 -4
  318. package/build/src/start/platforms/android/AndroidAppIdResolver.js.map +1 -1
  319. package/build/src/start/platforms/android/AndroidDeviceManager.js +70 -50
  320. package/build/src/start/platforms/android/AndroidDeviceManager.js.map +1 -1
  321. package/build/src/start/platforms/android/AndroidPlatformManager.js +9 -6
  322. package/build/src/start/platforms/android/AndroidPlatformManager.js.map +1 -1
  323. package/build/src/start/platforms/android/AndroidSdk.js +11 -8
  324. package/build/src/start/platforms/android/AndroidSdk.js.map +1 -1
  325. package/build/src/start/platforms/android/activateWindow.js +43 -22
  326. package/build/src/start/platforms/android/activateWindow.js.map +1 -1
  327. package/build/src/start/platforms/android/adb.js +73 -52
  328. package/build/src/start/platforms/android/adb.js.map +1 -1
  329. package/build/src/start/platforms/android/adbReverse.js +57 -31
  330. package/build/src/start/platforms/android/adbReverse.js.map +1 -1
  331. package/build/src/start/platforms/android/emulator.js +63 -42
  332. package/build/src/start/platforms/android/emulator.js.map +1 -1
  333. package/build/src/start/platforms/android/getDevices.js +11 -10
  334. package/build/src/start/platforms/android/getDevices.js.map +1 -1
  335. package/build/src/start/platforms/android/gradle.js +18 -11
  336. package/build/src/start/platforms/android/gradle.js.map +1 -1
  337. package/build/src/start/platforms/android/promptAndroidDevice.js +14 -14
  338. package/build/src/start/platforms/android/promptAndroidDevice.js.map +1 -1
  339. package/build/src/start/platforms/ios/AppleAppIdResolver.js +7 -4
  340. package/build/src/start/platforms/ios/AppleAppIdResolver.js.map +1 -1
  341. package/build/src/start/platforms/ios/AppleDeviceManager.js +80 -54
  342. package/build/src/start/platforms/ios/AppleDeviceManager.js.map +1 -1
  343. package/build/src/start/platforms/ios/ApplePlatformManager.js +7 -4
  344. package/build/src/start/platforms/ios/ApplePlatformManager.js.map +1 -1
  345. package/build/src/start/platforms/ios/assertSystemRequirements.js +11 -8
  346. package/build/src/start/platforms/ios/assertSystemRequirements.js.map +1 -1
  347. package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js +50 -29
  348. package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js.map +1 -1
  349. package/build/src/start/platforms/ios/getBestSimulator.js +53 -29
  350. package/build/src/start/platforms/ios/getBestSimulator.js.map +1 -1
  351. package/build/src/start/platforms/ios/promptAppleDevice.js +18 -12
  352. package/build/src/start/platforms/ios/promptAppleDevice.js.map +1 -1
  353. package/build/src/start/platforms/ios/simctl.js +65 -42
  354. package/build/src/start/platforms/ios/simctl.js.map +1 -1
  355. package/build/src/start/platforms/ios/simctlLogging.js +67 -44
  356. package/build/src/start/platforms/ios/simctlLogging.js.map +1 -1
  357. package/build/src/start/platforms/ios/xcrun.js +8 -5
  358. package/build/src/start/platforms/ios/xcrun.js.map +1 -1
  359. package/build/src/start/project/devices.js +19 -16
  360. package/build/src/start/project/devices.js.map +1 -1
  361. package/build/src/start/project/dotExpo.js +13 -5
  362. package/build/src/start/project/dotExpo.js.map +1 -1
  363. package/build/src/start/project/settings.js +6 -4
  364. package/build/src/start/project/settings.js.map +1 -1
  365. package/build/src/start/resolveOptions.js +26 -19
  366. package/build/src/start/resolveOptions.js.map +1 -1
  367. package/build/src/start/server/AsyncNgrok.js +66 -46
  368. package/build/src/start/server/AsyncNgrok.js.map +1 -1
  369. package/build/src/start/server/BundlerDevServer.js +64 -44
  370. package/build/src/start/server/BundlerDevServer.js.map +1 -1
  371. package/build/src/start/server/DevServerManager.js +81 -69
  372. package/build/src/start/server/DevServerManager.js.map +1 -1
  373. package/build/src/start/server/DevToolsPluginManager.js +21 -16
  374. package/build/src/start/server/DevToolsPluginManager.js.map +1 -1
  375. package/build/src/start/server/DevelopmentSession.js +49 -31
  376. package/build/src/start/server/DevelopmentSession.js.map +1 -1
  377. package/build/src/start/server/ReactDevToolsProxy.js +14 -6
  378. package/build/src/start/server/ReactDevToolsProxy.js.map +1 -1
  379. package/build/src/start/server/UrlCreator.js +44 -23
  380. package/build/src/start/server/UrlCreator.js.map +1 -1
  381. package/build/src/start/server/getStaticRenderFunctions.js +46 -34
  382. package/build/src/start/server/getStaticRenderFunctions.js.map +1 -1
  383. package/build/src/start/server/metro/MetroBundlerDevServer.js +135 -108
  384. package/build/src/start/server/metro/MetroBundlerDevServer.js.map +1 -1
  385. package/build/src/start/server/metro/MetroTerminalReporter.js +24 -17
  386. package/build/src/start/server/metro/MetroTerminalReporter.js.map +1 -1
  387. package/build/src/start/server/metro/TerminalReporter.js +18 -8
  388. package/build/src/start/server/metro/TerminalReporter.js.map +1 -1
  389. package/build/src/start/server/metro/createExpoMetroResolver.js +31 -20
  390. package/build/src/start/server/metro/createExpoMetroResolver.js.map +1 -1
  391. package/build/src/start/server/metro/createJResolver.js +76 -51
  392. package/build/src/start/server/metro/createJResolver.js.map +1 -1
  393. package/build/src/start/server/metro/createServerRouteMiddleware.js +22 -14
  394. package/build/src/start/server/metro/createServerRouteMiddleware.js.map +1 -1
  395. package/build/src/start/server/metro/debugging/MessageHandler.js +4 -1
  396. package/build/src/start/server/metro/debugging/MessageHandler.js.map +1 -1
  397. package/build/src/start/server/metro/debugging/createDebugMiddleware.js +10 -9
  398. package/build/src/start/server/metro/debugging/createDebugMiddleware.js.map +1 -1
  399. package/build/src/start/server/metro/debugging/createHandlersFactory.js +14 -13
  400. package/build/src/start/server/metro/debugging/createHandlersFactory.js.map +1 -1
  401. package/build/src/start/server/metro/debugging/getDebuggerType.js +5 -2
  402. package/build/src/start/server/metro/debugging/getDebuggerType.js.map +1 -1
  403. package/build/src/start/server/metro/debugging/messageHandlers/NetworkResponse.js +5 -2
  404. package/build/src/start/server/metro/debugging/messageHandlers/NetworkResponse.js.map +1 -1
  405. package/build/src/start/server/metro/debugging/messageHandlers/PageReload.js +5 -2
  406. package/build/src/start/server/metro/debugging/messageHandlers/PageReload.js.map +1 -1
  407. package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerGetPossibleBreakpoints.js +7 -4
  408. package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerGetPossibleBreakpoints.js.map +1 -1
  409. package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerSetBreakpointByUrl.js +7 -4
  410. package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerSetBreakpointByUrl.js.map +1 -1
  411. package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeCallFunctionOn.js +7 -4
  412. package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeCallFunctionOn.js.map +1 -1
  413. package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeGetProperties.js +7 -4
  414. package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeGetProperties.js.map +1 -1
  415. package/build/src/start/server/metro/debugging/pageIsSupported.js +4 -1
  416. package/build/src/start/server/metro/debugging/pageIsSupported.js.map +1 -1
  417. package/build/src/start/server/metro/externals.js +21 -10
  418. package/build/src/start/server/metro/externals.js.map +1 -1
  419. package/build/src/start/server/metro/fetchRouterManifest.js +20 -7
  420. package/build/src/start/server/metro/fetchRouterManifest.js.map +1 -1
  421. package/build/src/start/server/metro/formatFileCandidates.js +21 -17
  422. package/build/src/start/server/metro/formatFileCandidates.js.map +1 -1
  423. package/build/src/start/server/metro/getCssModulesFromBundler.js +15 -7
  424. package/build/src/start/server/metro/getCssModulesFromBundler.js.map +1 -1
  425. package/build/src/start/server/metro/instantiateMetro.js +57 -44
  426. package/build/src/start/server/metro/instantiateMetro.js.map +1 -1
  427. package/build/src/start/server/metro/metroErrorInterface.js +43 -34
  428. package/build/src/start/server/metro/metroErrorInterface.js.map +1 -1
  429. package/build/src/start/server/metro/metroErrors.js +11 -2
  430. package/build/src/start/server/metro/metroErrors.js.map +1 -1
  431. package/build/src/start/server/metro/metroVirtualModules.js +10 -2
  432. package/build/src/start/server/metro/metroVirtualModules.js.map +1 -1
  433. package/build/src/start/server/metro/metroWatchTypeScriptFiles.js +5 -2
  434. package/build/src/start/server/metro/metroWatchTypeScriptFiles.js.map +1 -1
  435. package/build/src/start/server/metro/router.js +27 -20
  436. package/build/src/start/server/metro/router.js.map +1 -1
  437. package/build/src/start/server/metro/runServer-fork.js +21 -14
  438. package/build/src/start/server/metro/runServer-fork.js.map +1 -1
  439. package/build/src/start/server/metro/serializeHtml.js +7 -7
  440. package/build/src/start/server/metro/serializeHtml.js.map +1 -1
  441. package/build/src/start/server/metro/waitForMetroToObserveTypeScriptFile.js +12 -4
  442. package/build/src/start/server/metro/waitForMetroToObserveTypeScriptFile.js.map +1 -1
  443. package/build/src/start/server/metro/withMetroMultiPlatform.js +107 -81
  444. package/build/src/start/server/metro/withMetroMultiPlatform.js.map +1 -1
  445. package/build/src/start/server/metro/withMetroResolvers.js +72 -42
  446. package/build/src/start/server/metro/withMetroResolvers.js.map +1 -1
  447. package/build/src/start/server/middleware/ContextModuleSourceMapsMiddleware.js +4 -1
  448. package/build/src/start/server/middleware/ContextModuleSourceMapsMiddleware.js.map +1 -1
  449. package/build/src/start/server/middleware/CorsMiddleware.js +4 -1
  450. package/build/src/start/server/middleware/CorsMiddleware.js.map +1 -1
  451. package/build/src/start/server/middleware/CreateFileMiddleware.js +13 -5
  452. package/build/src/start/server/middleware/CreateFileMiddleware.js.map +1 -1
  453. package/build/src/start/server/middleware/DevToolsPluginMiddleware.js +15 -12
  454. package/build/src/start/server/middleware/DevToolsPluginMiddleware.js.map +1 -1
  455. package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js +30 -23
  456. package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js.map +1 -1
  457. package/build/src/start/server/middleware/ExpoMiddleware.js +47 -21
  458. package/build/src/start/server/middleware/ExpoMiddleware.js.map +1 -1
  459. package/build/src/start/server/middleware/FaviconMiddleware.js +8 -5
  460. package/build/src/start/server/middleware/FaviconMiddleware.js.map +1 -1
  461. package/build/src/start/server/middleware/HistoryFallbackMiddleware.js +6 -3
  462. package/build/src/start/server/middleware/HistoryFallbackMiddleware.js.map +1 -1
  463. package/build/src/start/server/middleware/InterstitialPageMiddleware.js +23 -16
  464. package/build/src/start/server/middleware/InterstitialPageMiddleware.js.map +1 -1
  465. package/build/src/start/server/middleware/ManifestMiddleware.js +84 -60
  466. package/build/src/start/server/middleware/ManifestMiddleware.js.map +1 -1
  467. package/build/src/start/server/middleware/ReactDevToolsPageMiddleware.js +14 -7
  468. package/build/src/start/server/middleware/ReactDevToolsPageMiddleware.js.map +1 -1
  469. package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js +47 -26
  470. package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js.map +1 -1
  471. package/build/src/start/server/middleware/ServeStaticMiddleware.js +11 -8
  472. package/build/src/start/server/middleware/ServeStaticMiddleware.js.map +1 -1
  473. package/build/src/start/server/middleware/inspector/JsInspector.js +30 -24
  474. package/build/src/start/server/middleware/inspector/JsInspector.js.map +1 -1
  475. package/build/src/start/server/middleware/inspector/LaunchBrowser.js +16 -8
  476. package/build/src/start/server/middleware/inspector/LaunchBrowser.js.map +1 -1
  477. package/build/src/start/server/middleware/inspector/LaunchBrowser.types.js +4 -2
  478. package/build/src/start/server/middleware/inspector/LaunchBrowser.types.js.map +1 -1
  479. package/build/src/start/server/middleware/inspector/LaunchBrowserImplLinux.js +16 -12
  480. package/build/src/start/server/middleware/inspector/LaunchBrowserImplLinux.js.map +1 -1
  481. package/build/src/start/server/middleware/inspector/LaunchBrowserImplMacOS.js +59 -37
  482. package/build/src/start/server/middleware/inspector/LaunchBrowserImplMacOS.js.map +1 -1
  483. package/build/src/start/server/middleware/inspector/LaunchBrowserImplWindows.js +22 -16
  484. package/build/src/start/server/middleware/inspector/LaunchBrowserImplWindows.js.map +1 -1
  485. package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js +9 -6
  486. package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js.map +1 -1
  487. package/build/src/start/server/middleware/inspector/middlwareMutations.js +11 -4
  488. package/build/src/start/server/middleware/inspector/middlwareMutations.js.map +1 -1
  489. package/build/src/start/server/middleware/metroOptions.js +26 -18
  490. package/build/src/start/server/middleware/metroOptions.js.map +1 -1
  491. package/build/src/start/server/middleware/mutations.js +11 -4
  492. package/build/src/start/server/middleware/mutations.js.map +1 -1
  493. package/build/src/start/server/middleware/resolveAssets.js +65 -41
  494. package/build/src/start/server/middleware/resolveAssets.js.map +1 -1
  495. package/build/src/start/server/middleware/resolvePlatform.js +14 -6
  496. package/build/src/start/server/middleware/resolvePlatform.js.map +1 -1
  497. package/build/src/start/server/middleware/suppressErrorMiddleware.js +4 -1
  498. package/build/src/start/server/middleware/suppressErrorMiddleware.js.map +1 -1
  499. package/build/src/start/server/openPlatforms.js +7 -6
  500. package/build/src/start/server/openPlatforms.js.map +1 -1
  501. package/build/src/start/server/platformBundlers.js +5 -2
  502. package/build/src/start/server/platformBundlers.js.map +1 -1
  503. package/build/src/start/server/serverLogLikeMetro.js +62 -33
  504. package/build/src/start/server/serverLogLikeMetro.js.map +1 -1
  505. package/build/src/start/server/type-generation/expo-env.js +12 -4
  506. package/build/src/start/server/type-generation/expo-env.js.map +1 -1
  507. package/build/src/start/server/type-generation/routes.js +52 -51
  508. package/build/src/start/server/type-generation/routes.js.map +1 -1
  509. package/build/src/start/server/type-generation/startTypescriptTypeGeneration.js +22 -19
  510. package/build/src/start/server/type-generation/startTypescriptTypeGeneration.js.map +1 -1
  511. package/build/src/start/server/type-generation/tsconfig.js +18 -11
  512. package/build/src/start/server/type-generation/tsconfig.js.map +1 -1
  513. package/build/src/start/server/webTemplate.js +21 -15
  514. package/build/src/start/server/webTemplate.js.map +1 -1
  515. package/build/src/start/server/webpack/WebpackBundlerDevServer.js +81 -56
  516. package/build/src/start/server/webpack/WebpackBundlerDevServer.js.map +1 -1
  517. package/build/src/start/server/webpack/compile.js +47 -26
  518. package/build/src/start/server/webpack/compile.js.map +1 -1
  519. package/build/src/start/server/webpack/formatWebpackMessages.js +35 -25
  520. package/build/src/start/server/webpack/formatWebpackMessages.js.map +1 -1
  521. package/build/src/start/server/webpack/resolveFromProject.js +13 -5
  522. package/build/src/start/server/webpack/resolveFromProject.js.map +1 -1
  523. package/build/src/start/server/webpack/tls.js +54 -28
  524. package/build/src/start/server/webpack/tls.js.map +1 -1
  525. package/build/src/start/startAsync.js +73 -52
  526. package/build/src/start/startAsync.js.map +1 -1
  527. package/build/src/utils/FileNotifier.js +46 -25
  528. package/build/src/utils/FileNotifier.js.map +1 -1
  529. package/build/src/utils/analytics/getDevClientProperties.js +29 -21
  530. package/build/src/utils/analytics/getDevClientProperties.js.map +1 -1
  531. package/build/src/utils/analytics/getMetroDebugProperties.js +4 -1
  532. package/build/src/utils/analytics/getMetroDebugProperties.js.map +1 -1
  533. package/build/src/utils/analytics/getMetroProperties.js +4 -1
  534. package/build/src/utils/analytics/getMetroProperties.js.map +1 -1
  535. package/build/src/utils/analytics/metroDebuggerMiddleware.js +14 -6
  536. package/build/src/utils/analytics/metroDebuggerMiddleware.js.map +1 -1
  537. package/build/src/utils/ansi.js +5 -2
  538. package/build/src/utils/ansi.js.map +1 -1
  539. package/build/src/utils/args.js +57 -29
  540. package/build/src/utils/args.js.map +1 -1
  541. package/build/src/utils/array.js +16 -9
  542. package/build/src/utils/array.js.map +1 -1
  543. package/build/src/utils/cocoapods.js +77 -53
  544. package/build/src/utils/cocoapods.js.map +1 -1
  545. package/build/src/utils/codesigning.js +80 -58
  546. package/build/src/utils/codesigning.js.map +1 -1
  547. package/build/src/utils/createFileTransform.js +13 -5
  548. package/build/src/utils/createFileTransform.js.map +1 -1
  549. package/build/src/utils/delay.js +13 -6
  550. package/build/src/utils/delay.js.map +1 -1
  551. package/build/src/utils/dir.js +24 -21
  552. package/build/src/utils/dir.js.map +1 -1
  553. package/build/src/utils/downloadAppAsync.js +16 -13
  554. package/build/src/utils/downloadAppAsync.js.map +1 -1
  555. package/build/src/utils/downloadExpoGoAsync.js +26 -20
  556. package/build/src/utils/downloadExpoGoAsync.js.map +1 -1
  557. package/build/src/utils/editor.js +50 -24
  558. package/build/src/utils/editor.js.map +1 -1
  559. package/build/src/utils/env.js +35 -33
  560. package/build/src/utils/env.js.map +1 -1
  561. package/build/src/utils/errors.js +17 -9
  562. package/build/src/utils/errors.js.map +1 -1
  563. package/build/src/utils/exit.js +10 -7
  564. package/build/src/utils/exit.js.map +1 -1
  565. package/build/src/utils/findUp.js +22 -4
  566. package/build/src/utils/findUp.js.map +1 -1
  567. package/build/src/utils/fn.js +11 -3
  568. package/build/src/utils/fn.js.map +1 -1
  569. package/build/src/utils/getOrPromptApplicationId.js +71 -45
  570. package/build/src/utils/getOrPromptApplicationId.js.map +1 -1
  571. package/build/src/utils/getRunningProcess.js +52 -26
  572. package/build/src/utils/getRunningProcess.js.map +1 -1
  573. package/build/src/utils/git.js +64 -38
  574. package/build/src/utils/git.js.map +1 -1
  575. package/build/src/utils/glob.js +14 -9
  576. package/build/src/utils/glob.js.map +1 -1
  577. package/build/src/utils/interactive.js +5 -2
  578. package/build/src/utils/interactive.js.map +1 -1
  579. package/build/src/utils/ip.js +5 -2
  580. package/build/src/utils/ip.js.map +1 -1
  581. package/build/src/utils/isModuleSymlinked.js +7 -4
  582. package/build/src/utils/isModuleSymlinked.js.map +1 -1
  583. package/build/src/utils/link.js +13 -5
  584. package/build/src/utils/link.js.map +1 -1
  585. package/build/src/utils/mergeGitIgnorePaths.js +22 -17
  586. package/build/src/utils/mergeGitIgnorePaths.js.map +1 -1
  587. package/build/src/utils/modifyConfigAsync.js +56 -30
  588. package/build/src/utils/modifyConfigAsync.js.map +1 -1
  589. package/build/src/utils/modifyConfigPlugins.js +43 -22
  590. package/build/src/utils/modifyConfigPlugins.js.map +1 -1
  591. package/build/src/utils/nodeEnv.js +6 -1
  592. package/build/src/utils/nodeEnv.js.map +1 -1
  593. package/build/src/utils/nodeModules.js +9 -6
  594. package/build/src/utils/nodeModules.js.map +1 -1
  595. package/build/src/utils/npm.js +32 -24
  596. package/build/src/utils/npm.js.map +1 -1
  597. package/build/src/utils/obj.js +12 -4
  598. package/build/src/utils/obj.js.map +1 -1
  599. package/build/src/utils/open.js +7 -4
  600. package/build/src/utils/open.js.map +1 -1
  601. package/build/src/utils/ora.js +25 -21
  602. package/build/src/utils/ora.js.map +1 -1
  603. package/build/src/utils/plist.js +53 -27
  604. package/build/src/utils/plist.js.map +1 -1
  605. package/build/src/utils/port.js +58 -32
  606. package/build/src/utils/port.js.map +1 -1
  607. package/build/src/utils/profile.js +49 -28
  608. package/build/src/utils/profile.js.map +1 -1
  609. package/build/src/utils/progress.js +16 -12
  610. package/build/src/utils/progress.js.map +1 -1
  611. package/build/src/utils/prompts.js +33 -28
  612. package/build/src/utils/prompts.js.map +1 -1
  613. package/build/src/utils/resolveArgs.js +23 -20
  614. package/build/src/utils/resolveArgs.js.map +1 -1
  615. package/build/src/utils/scheme.js +61 -37
  616. package/build/src/utils/scheme.js.map +1 -1
  617. package/build/src/utils/strings.js +11 -4
  618. package/build/src/utils/strings.js.map +1 -1
  619. package/build/src/utils/tar.js +43 -22
  620. package/build/src/utils/tar.js.map +1 -1
  621. package/build/src/utils/telemetry/DetachedClient.js +8 -5
  622. package/build/src/utils/telemetry/DetachedClient.js.map +1 -1
  623. package/build/src/utils/telemetry/RudderClient.js +12 -9
  624. package/build/src/utils/telemetry/RudderClient.js.map +1 -1
  625. package/build/src/utils/telemetry/flushDetached.js +8 -7
  626. package/build/src/utils/telemetry/flushDetached.js.map +1 -1
  627. package/build/src/utils/telemetry/getContext.js +48 -28
  628. package/build/src/utils/telemetry/getContext.js.map +1 -1
  629. package/build/src/utils/telemetry/index.js +16 -11
  630. package/build/src/utils/telemetry/index.js.map +1 -1
  631. package/build/src/utils/template.js +27 -2
  632. package/build/src/utils/template.js.map +1 -1
  633. package/build/src/utils/terminal.js +5 -2
  634. package/build/src/utils/terminal.js.map +1 -1
  635. package/build/src/utils/tsconfig/evaluateTsConfig.js +18 -12
  636. package/build/src/utils/tsconfig/evaluateTsConfig.js.map +1 -1
  637. package/build/src/utils/tsconfig/loadTsConfigPaths.js +18 -10
  638. package/build/src/utils/tsconfig/loadTsConfigPaths.js.map +1 -1
  639. package/build/src/utils/tsconfig/matchTsConfigPathAlias.js +8 -4
  640. package/build/src/utils/tsconfig/matchTsConfigPathAlias.js.map +1 -1
  641. package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js +12 -9
  642. package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js.map +1 -1
  643. package/build/src/utils/url.js +17 -10
  644. package/build/src/utils/url.js.map +1 -1
  645. package/build/src/utils/validateApplicationId.js +32 -25
  646. package/build/src/utils/validateApplicationId.js.map +1 -1
  647. package/build/src/utils/variadic.js +15 -11
  648. package/build/src/utils/variadic.js.map +1 -1
  649. package/build/src/whoami/index.js +43 -25
  650. package/build/src/whoami/index.js.map +1 -1
  651. package/build/src/whoami/whoamiAsync.js +44 -23
  652. package/build/src/whoami/whoamiAsync.js.map +1 -1
  653. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/start/server/metro/MetroBundlerDevServer.ts"],"sourcesContent":["/**\n * Copyright © 2022 650 Industries.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { getConfig } from '@expo/config';\nimport * as runtimeEnv from '@expo/env';\nimport { SerialAsset } from '@expo/metro-config/build/serializer/serializerAssets';\nimport assert from 'assert';\nimport chalk from 'chalk';\nimport { AssetData } from 'metro';\nimport fetch from 'node-fetch';\nimport path from 'path';\n\nimport { createRouteHandlerMiddleware } from './createServerRouteMiddleware';\nimport { ExpoRouterServerManifestV1, fetchManifest } from './fetchRouterManifest';\nimport { instantiateMetroAsync } from './instantiateMetro';\nimport { getErrorOverlayHtmlAsync, logMetroErrorAsync } from './metroErrorInterface';\nimport { metroWatchTypeScriptFiles } from './metroWatchTypeScriptFiles';\nimport {\n getRouterDirectoryModuleIdWithManifest,\n hasWarnedAboutApiRoutes,\n isApiRouteConvention,\n warnInvalidWebOutput,\n} from './router';\nimport { serializeHtmlWithAssets } from './serializeHtml';\nimport { observeAnyFileChanges, observeFileChanges } from './waitForMetroToObserveTypeScriptFile';\nimport { ExportAssetMap } from '../../../export/saveAssets';\nimport { Log } from '../../../log';\nimport getDevClientProperties from '../../../utils/analytics/getDevClientProperties';\nimport { CommandError } from '../../../utils/errors';\nimport { getFreePortAsync } from '../../../utils/port';\nimport { logEventAsync } from '../../../utils/telemetry';\nimport { BundlerDevServer, BundlerStartOptions, DevServerInstance } from '../BundlerDevServer';\nimport {\n evalMetroNoHandling,\n getStaticRenderFunctionsForEntry,\n requireFileContentsWithMetro,\n} from '../getStaticRenderFunctions';\nimport { ContextModuleSourceMapsMiddleware } from '../middleware/ContextModuleSourceMapsMiddleware';\nimport { CreateFileMiddleware } from '../middleware/CreateFileMiddleware';\nimport { DevToolsPluginMiddleware } from '../middleware/DevToolsPluginMiddleware';\nimport { FaviconMiddleware } from '../middleware/FaviconMiddleware';\nimport { HistoryFallbackMiddleware } from '../middleware/HistoryFallbackMiddleware';\nimport { InterstitialPageMiddleware } from '../middleware/InterstitialPageMiddleware';\nimport { resolveMainModuleName } from '../middleware/ManifestMiddleware';\nimport { ReactDevToolsPageMiddleware } from '../middleware/ReactDevToolsPageMiddleware';\nimport {\n DeepLinkHandler,\n RuntimeRedirectMiddleware,\n} from '../middleware/RuntimeRedirectMiddleware';\nimport { ServeStaticMiddleware } from '../middleware/ServeStaticMiddleware';\nimport {\n ExpoMetroOptions,\n createBundleUrlPath,\n getAsyncRoutesFromExpoConfig,\n getBaseUrlFromExpoConfig,\n shouldEnableAsyncImports,\n} from '../middleware/metroOptions';\nimport { prependMiddleware } from '../middleware/mutations';\nimport { startTypescriptTypeGenerationAsync } from '../type-generation/startTypescriptTypeGeneration';\n\nexport type ExpoRouterRuntimeManifest = Awaited<\n ReturnType<typeof import('expo-router/build/static/renderStaticContent').getManifest>\n>;\n\nexport class ForwardHtmlError extends CommandError {\n constructor(\n message: string,\n public html: string,\n public statusCode: number\n ) {\n super(message);\n }\n}\n\nconst debug = require('debug')('expo:start:server:metro') as typeof console.log;\n\n/** Default port to use for apps running in Expo Go. */\nconst EXPO_GO_METRO_PORT = 8081;\n\n/** Default port to use for apps that run in standard React Native projects or Expo Dev Clients. */\nconst DEV_CLIENT_METRO_PORT = 8081;\n\nexport class MetroBundlerDevServer extends BundlerDevServer {\n private metro: import('metro').Server | null = null;\n\n get name(): string {\n return 'metro';\n }\n\n async resolvePortAsync(options: Partial<BundlerStartOptions> = {}): Promise<number> {\n const port =\n // If the manually defined port is busy then an error should be thrown...\n options.port ??\n // Otherwise use the default port based on the runtime target.\n (options.devClient\n ? // Don't check if the port is busy if we're using the dev client since most clients are hardcoded to 8081.\n Number(process.env.RCT_METRO_PORT) || DEV_CLIENT_METRO_PORT\n : // Otherwise (running in Expo Go) use a free port that falls back on the classic 8081 port.\n await getFreePortAsync(EXPO_GO_METRO_PORT));\n\n return port;\n }\n\n async exportExpoRouterApiRoutesAsync({\n includeSourceMaps,\n outputDir,\n prerenderManifest,\n }: {\n includeSourceMaps?: boolean;\n outputDir: string;\n // This does not contain the API routes info.\n prerenderManifest: ExpoRouterServerManifestV1;\n }): Promise<{ files: ExportAssetMap; manifest: ExpoRouterServerManifestV1<string> }> {\n const { routerRoot } = this.instanceMetroOptions;\n assert(\n routerRoot != null,\n 'The server must be started before calling exportExpoRouterApiRoutesAsync.'\n );\n\n const appDir = path.join(this.projectRoot, routerRoot);\n const manifest = await this.getExpoRouterRoutesManifestAsync({ appDir });\n\n const files: ExportAssetMap = new Map();\n\n for (const route of manifest.apiRoutes) {\n const filepath = path.join(appDir, route.file);\n const contents = await this.bundleApiRoute(filepath);\n const artifactFilename = path.join(\n outputDir,\n path.relative(appDir, filepath.replace(/\\.[tj]sx?$/, '.js'))\n );\n if (contents) {\n let src = contents.src;\n if (includeSourceMaps && contents.map) {\n // TODO(kitten): Merge the source map transformer in the future\n // https://github.com/expo/expo/blob/0dffdb15/packages/%40expo/metro-config/src/serializer/serializeChunks.ts#L422-L439\n // Alternatively, check whether `sourcesRoot` helps here\n const artifactBasename = encodeURIComponent(path.basename(artifactFilename) + '.map');\n src = src.replace(\n /\\/\\/# sourceMappingURL=.*/g,\n `//# sourceMappingURL=${artifactBasename}`\n );\n files.set(artifactFilename + '.map', {\n contents: JSON.stringify({\n version: contents.map.version,\n sources: contents.map.sources.map((source: string) => {\n source =\n typeof source === 'string' && source.startsWith(this.projectRoot)\n ? path.relative(this.projectRoot, source)\n : source;\n return source.split(path.sep).join('/');\n }),\n sourcesContent: new Array(contents.map.sources.length).fill(null),\n names: contents.map.names,\n mappings: contents.map.mappings,\n }),\n targetDomain: 'server',\n });\n }\n files.set(artifactFilename, {\n contents: src,\n targetDomain: 'server',\n });\n }\n // Remap the manifest files to represent the output files.\n route.file = artifactFilename;\n }\n\n return {\n manifest: {\n ...manifest,\n htmlRoutes: prerenderManifest.htmlRoutes,\n },\n files,\n };\n }\n\n async getExpoRouterRoutesManifestAsync({ appDir }: { appDir: string }) {\n // getBuiltTimeServerManifest\n const manifest = await fetchManifest(this.projectRoot, {\n asJson: true,\n appDir,\n });\n\n if (!manifest) {\n throw new CommandError(\n 'EXPO_ROUTER_SERVER_MANIFEST',\n 'Unexpected error: server manifest could not be fetched.'\n );\n }\n\n return manifest;\n }\n\n async getStaticRenderFunctionAsync(): Promise<{\n serverManifest: ExpoRouterServerManifestV1;\n manifest: ExpoRouterRuntimeManifest;\n renderAsync: (path: string) => Promise<string>;\n }> {\n const { mode, minify, isExporting } = this.instanceMetroOptions;\n assert(\n mode != null && minify != null && isExporting != null,\n 'The server must be started before calling ssrLoadModule.'\n );\n\n const url = this.getDevServerUrl()!;\n\n const { getStaticContent, getManifest, getBuildTimeServerManifestAsync } =\n await this.ssrLoadModule<typeof import('expo-router/build/static/renderStaticContent')>(\n 'expo-router/node/render.js',\n {\n minify,\n mode,\n isExporting,\n }\n );\n\n return {\n serverManifest: await getBuildTimeServerManifestAsync(),\n // Get routes from Expo Router.\n manifest: await getManifest({ preserveApiRoutes: false }),\n // Get route generating function\n async renderAsync(path: string) {\n return await getStaticContent(new URL(path, url));\n },\n };\n }\n\n async getStaticResourcesAsync({\n includeSourceMaps,\n mainModuleName,\n }: {\n includeSourceMaps?: boolean;\n mainModuleName?: string;\n } = {}): Promise<{ artifacts: SerialAsset[]; assets?: AssetData[] }> {\n const { mode, minify, isExporting, baseUrl, routerRoot, asyncRoutes } =\n this.instanceMetroOptions;\n assert(\n mode != null &&\n minify != null &&\n isExporting != null &&\n baseUrl != null &&\n routerRoot != null &&\n asyncRoutes != null,\n 'The server must be started before calling getStaticPageAsync.'\n );\n\n const platform = 'web';\n\n const devBundleUrlPathname = createBundleUrlPath({\n platform,\n mode,\n minify,\n environment: 'client',\n serializerOutput: 'static',\n serializerIncludeMaps: includeSourceMaps,\n mainModuleName: mainModuleName ?? resolveMainModuleName(this.projectRoot, { platform }),\n lazy: shouldEnableAsyncImports(this.projectRoot),\n asyncRoutes,\n baseUrl,\n isExporting,\n routerRoot,\n bytecode: false,\n });\n\n const bundleUrl = new URL(devBundleUrlPathname, this.getDevServerUrl()!);\n\n // Fetch the generated HTML from our custom Metro serializer\n const results = await fetch(bundleUrl.toString());\n\n const txt = await results.text();\n\n let data: any;\n try {\n data = JSON.parse(txt);\n } catch (error: any) {\n debug(txt);\n\n // Metro can throw this error when the initial module id cannot be resolved.\n if (!results.ok && txt.startsWith('<!DOCTYPE html>')) {\n throw new ForwardHtmlError(\n `Metro failed to bundle the project. Check the console for more information.`,\n txt,\n results.status\n );\n }\n\n Log.error(\n 'Failed to generate resources with Metro, the Metro config may not be using the correct serializer. Ensure the metro.config.js is extending the expo/metro-config and is not overriding the serializer.'\n );\n throw error;\n }\n\n // NOTE: This could potentially need more validation in the future.\n if ('artifacts' in data && Array.isArray(data.artifacts)) {\n return data;\n }\n\n if (data != null && (data.errors || data.type?.match(/.*Error$/))) {\n // {\n // type: 'InternalError',\n // errors: [],\n // message: 'Metro has encountered an error: While trying to resolve module `stylis` from file `/Users/evanbacon/Documents/GitHub/lab/emotion-error-test/node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js`, the package `/Users/evanbacon/Documents/GitHub/lab/emotion-error-test/node_modules/stylis/package.json` was successfully found. However, this package itself specifies a `main` module field that could not be resolved (`/Users/evanbacon/Documents/GitHub/lab/emotion-error-test/node_modules/stylis/dist/stylis.mjs`. Indeed, none of these files exist:\\n' +\n // '\\n' +\n // ' * /Users/evanbacon/Documents/GitHub/lab/emotion-error-test/node_modules/stylis/dist/stylis.mjs(.web.ts|.ts|.web.tsx|.tsx|.web.js|.js|.web.jsx|.jsx|.web.json|.json|.web.cjs|.cjs|.web.scss|.scss|.web.sass|.sass|.web.css|.css)\\n' +\n // ' * /Users/evanbacon/Documents/GitHub/lab/emotion-error-test/node_modules/stylis/dist/stylis.mjs/index(.web.ts|.ts|.web.tsx|.tsx|.web.js|.js|.web.jsx|.jsx|.web.json|.json|.web.cjs|.cjs|.web.scss|.scss|.web.sass|.sass|.web.css|.css): /Users/evanbacon/Documents/GitHub/lab/emotion-error-test/node_modules/metro/src/node-haste/DependencyGraph.js (289:17)\\n' +\n // '\\n' +\n // '\\x1B[0m \\x1B[90m 287 |\\x1B[39m }\\x1B[0m\\n' +\n // '\\x1B[0m \\x1B[90m 288 |\\x1B[39m \\x1B[36mif\\x1B[39m (error \\x1B[36minstanceof\\x1B[39m \\x1B[33mInvalidPackageError\\x1B[39m) {\\x1B[0m\\n' +\n // '\\x1B[0m\\x1B[31m\\x1B[1m>\\x1B[22m\\x1B[39m\\x1B[90m 289 |\\x1B[39m \\x1B[36mthrow\\x1B[39m \\x1B[36mnew\\x1B[39m \\x1B[33mPackageResolutionError\\x1B[39m({\\x1B[0m\\n' +\n // '\\x1B[0m \\x1B[90m |\\x1B[39m \\x1B[31m\\x1B[1m^\\x1B[22m\\x1B[39m\\x1B[0m\\n' +\n // '\\x1B[0m \\x1B[90m 290 |\\x1B[39m packageError\\x1B[33m:\\x1B[39m error\\x1B[33m,\\x1B[39m\\x1B[0m\\n' +\n // '\\x1B[0m \\x1B[90m 291 |\\x1B[39m originModulePath\\x1B[33m:\\x1B[39m \\x1B[36mfrom\\x1B[39m\\x1B[33m,\\x1B[39m\\x1B[0m\\n' +\n // '\\x1B[0m \\x1B[90m 292 |\\x1B[39m targetModuleName\\x1B[33m:\\x1B[39m to\\x1B[33m,\\x1B[39m\\x1B[0m'\n // }\n // The Metro logger already showed this error.\n throw new Error(data.message);\n }\n\n throw new Error(\n 'Invalid resources returned from the Metro serializer. Expected array, found: ' + data\n );\n }\n\n private async getStaticPageAsync(pathname: string) {\n const { mode, minify, isExporting, baseUrl, routerRoot, asyncRoutes } =\n this.instanceMetroOptions;\n assert(\n mode != null &&\n minify != null &&\n isExporting != null &&\n baseUrl != null &&\n routerRoot != null &&\n asyncRoutes != null,\n 'The server must be started before calling getStaticPageAsync.'\n );\n const platform = 'web';\n\n const devBundleUrlPathname = createBundleUrlPath({\n platform,\n mode,\n environment: 'client',\n mainModuleName: resolveMainModuleName(this.projectRoot, { platform }),\n lazy: shouldEnableAsyncImports(this.projectRoot),\n baseUrl,\n isExporting,\n asyncRoutes,\n routerRoot,\n bytecode: false,\n });\n\n const bundleStaticHtml = async (): Promise<string> => {\n const { getStaticContent } = await this.ssrLoadModule<\n typeof import('expo-router/build/static/renderStaticContent')\n >('expo-router/node/render.js', {\n minify: false,\n mode,\n isExporting,\n platform,\n });\n\n const location = new URL(pathname, this.getDevServerUrl()!);\n return await getStaticContent(location);\n };\n\n const [{ artifacts: resources }, staticHtml] = await Promise.all([\n this.getStaticResourcesAsync(),\n bundleStaticHtml(),\n ]);\n const content = serializeHtmlWithAssets({\n isExporting,\n resources,\n template: staticHtml,\n devBundleUrl: devBundleUrlPathname,\n baseUrl,\n });\n return {\n content,\n resources,\n };\n }\n\n // Set when the server is started.\n private instanceMetroOptions: Partial<ExpoMetroOptions> = {};\n\n async ssrLoadModule<T extends Record<string, any>>(\n filePath: string,\n specificOptions: Partial<ExpoMetroOptions> = {}\n ): Promise<T> {\n const { baseUrl, routerRoot, isExporting } = this.instanceMetroOptions;\n assert(\n baseUrl != null && routerRoot != null && isExporting != null,\n 'The server must be started before calling ssrLoadModule.'\n );\n\n return (\n await getStaticRenderFunctionsForEntry<T>(\n this.projectRoot,\n this.getDevServerUrl()!,\n {\n // Bundle in Node.js mode for SSR.\n environment: 'node',\n platform: 'web',\n mode: 'development',\n bytecode: false,\n\n ...this.instanceMetroOptions,\n baseUrl,\n routerRoot,\n isExporting,\n ...specificOptions,\n },\n filePath\n )\n ).fn;\n }\n\n async ssrLoadModuleContents(\n filePath: string,\n specificOptions: Partial<ExpoMetroOptions> = {}\n ): Promise<{ src: string; filename: string }> {\n const { baseUrl, routerRoot, isExporting } = this.instanceMetroOptions;\n assert(\n baseUrl != null && routerRoot != null && isExporting != null,\n 'The server must be started before calling ssrLoadModule.'\n );\n\n return await requireFileContentsWithMetro(this.projectRoot, this.getDevServerUrl()!, filePath, {\n // Bundle in Node.js mode for SSR.\n environment: 'node',\n platform: 'web',\n mode: 'development',\n bytecode: false,\n\n ...this.instanceMetroOptions,\n baseUrl,\n routerRoot,\n isExporting,\n ...specificOptions,\n });\n }\n\n async watchEnvironmentVariables() {\n if (!this.instance) {\n throw new Error(\n 'Cannot observe environment variable changes without a running Metro instance.'\n );\n }\n if (!this.metro) {\n // This can happen when the run command is used and the server is already running in another\n // process.\n debug('Skipping Environment Variable observation because Metro is not running (headless).');\n return;\n }\n\n const envFiles = runtimeEnv\n .getFiles(process.env.NODE_ENV)\n .map((fileName) => path.join(this.projectRoot, fileName));\n\n observeFileChanges(\n {\n metro: this.metro,\n server: this.instance.server,\n },\n envFiles,\n () => {\n debug('Reloading environment variables...');\n // Force reload the environment variables.\n runtimeEnv.load(this.projectRoot, { force: true });\n }\n );\n }\n\n getExpoLineOptions() {\n return this.instanceMetroOptions;\n }\n\n protected async startImplementationAsync(\n options: BundlerStartOptions\n ): Promise<DevServerInstance> {\n options.port = await this.resolvePortAsync(options);\n this.urlCreator = this.getUrlCreator(options);\n\n const config = getConfig(this.projectRoot, { skipSDKVersionRequirement: true });\n const { exp } = config;\n const useServerRendering = ['static', 'server'].includes(exp.web?.output ?? '');\n const baseUrl = getBaseUrlFromExpoConfig(exp);\n const asyncRoutes = getAsyncRoutesFromExpoConfig(exp, options.mode ?? 'development', 'web');\n const routerRoot = getRouterDirectoryModuleIdWithManifest(this.projectRoot, exp);\n const appDir = path.join(this.projectRoot, routerRoot);\n const mode = options.mode ?? 'development';\n\n this.instanceMetroOptions = {\n isExporting: !!options.isExporting,\n baseUrl,\n mode,\n routerRoot,\n minify: options.minify,\n asyncRoutes,\n // Options that are changing between platforms like engine, platform, and environment aren't set here.\n };\n\n const parsedOptions = {\n port: options.port,\n maxWorkers: options.maxWorkers,\n resetCache: options.resetDevServer,\n };\n\n // Required for symbolication:\n process.env.EXPO_DEV_SERVER_ORIGIN = `http://localhost:${options.port}`;\n\n const { metro, server, middleware, messageSocket } = await instantiateMetroAsync(\n this,\n parsedOptions,\n {\n isExporting: !!options.isExporting,\n }\n );\n\n const manifestMiddleware = await this.getManifestMiddlewareAsync(options);\n\n // Important that we noop source maps for context modules as soon as possible.\n prependMiddleware(middleware, new ContextModuleSourceMapsMiddleware().getHandler());\n\n // We need the manifest handler to be the first middleware to run so our\n // routes take precedence over static files. For example, the manifest is\n // served from '/' and if the user has an index.html file in their project\n // then the manifest handler will never run, the static middleware will run\n // and serve index.html instead of the manifest.\n // https://github.com/expo/expo/issues/13114\n prependMiddleware(middleware, manifestMiddleware.getHandler());\n\n middleware.use(\n new InterstitialPageMiddleware(this.projectRoot, {\n // TODO: Prevent this from becoming stale.\n scheme: options.location.scheme ?? null,\n }).getHandler()\n );\n middleware.use(new ReactDevToolsPageMiddleware(this.projectRoot).getHandler());\n middleware.use(\n new DevToolsPluginMiddleware(this.projectRoot, this.devToolsPluginManager).getHandler()\n );\n\n const deepLinkMiddleware = new RuntimeRedirectMiddleware(this.projectRoot, {\n onDeepLink: getDeepLinkHandler(this.projectRoot),\n getLocation: ({ runtime }) => {\n if (runtime === 'custom') {\n return this.urlCreator?.constructDevClientUrl();\n } else {\n return this.urlCreator?.constructUrl({\n scheme: 'exp',\n });\n }\n },\n });\n middleware.use(deepLinkMiddleware.getHandler());\n\n middleware.use(new CreateFileMiddleware(this.projectRoot).getHandler());\n\n // Append support for redirecting unhandled requests to the index.html page on web.\n if (this.isTargetingWeb()) {\n // This MUST be after the manifest middleware so it doesn't have a chance to serve the template `public/index.html`.\n middleware.use(new ServeStaticMiddleware(this.projectRoot).getHandler());\n\n // This should come after the static middleware so it doesn't serve the favicon from `public/favicon.ico`.\n middleware.use(new FaviconMiddleware(this.projectRoot).getHandler());\n\n if (useServerRendering) {\n middleware.use(\n createRouteHandlerMiddleware(this.projectRoot, {\n appDir,\n routerRoot,\n config,\n bundleApiRoute: (functionFilePath) => this.ssrImportApiRoute(functionFilePath),\n getStaticPageAsync: (pathname) => {\n return this.getStaticPageAsync(pathname);\n },\n })\n );\n\n observeAnyFileChanges(\n {\n metro,\n server,\n },\n (events) => {\n if (exp.web?.output === 'server') {\n // NOTE(EvanBacon): We aren't sure what files the API routes are using so we'll just invalidate\n // aggressively to ensure we always have the latest. The only caching we really get here is for\n // cases where the user is making subsequent requests to the same API route without changing anything.\n // This is useful for testing but pretty suboptimal. Luckily our caching is pretty aggressive so it makes\n // up for a lot of the overhead.\n this.invalidateApiRouteCache();\n } else if (!hasWarnedAboutApiRoutes()) {\n for (const event of events) {\n if (\n // If the user did not delete a file that matches the Expo Router API Route convention, then we should warn that\n // API Routes are not enabled in the project.\n event.metadata?.type !== 'd' &&\n // Ensure the file is in the project's routes directory to prevent false positives in monorepos.\n event.filePath.startsWith(appDir) &&\n isApiRouteConvention(event.filePath)\n ) {\n warnInvalidWebOutput();\n }\n }\n }\n }\n );\n } else {\n // This MUST run last since it's the fallback.\n middleware.use(\n new HistoryFallbackMiddleware(manifestMiddleware.getHandler().internal).getHandler()\n );\n }\n }\n // Extend the close method to ensure that we clean up the local info.\n const originalClose = server.close.bind(server);\n\n server.close = (callback?: (err?: Error) => void) => {\n return originalClose((err?: Error) => {\n this.instance = null;\n this.metro = null;\n callback?.(err);\n });\n };\n\n this.metro = metro;\n return {\n server,\n location: {\n // The port is the main thing we want to send back.\n port: options.port,\n // localhost isn't always correct.\n host: 'localhost',\n // http is the only supported protocol on native.\n url: `http://localhost:${options.port}`,\n protocol: 'http',\n },\n middleware,\n messageSocket,\n };\n }\n\n public async waitForTypeScriptAsync(): Promise<boolean> {\n if (!this.instance) {\n throw new Error('Cannot wait for TypeScript without a running server.');\n }\n\n return new Promise<boolean>((resolve) => {\n if (!this.metro) {\n // This can happen when the run command is used and the server is already running in another\n // process. In this case we can't wait for the TypeScript check to complete because we don't\n // have access to the Metro server.\n debug('Skipping TypeScript check because Metro is not running (headless).');\n return resolve(false);\n }\n\n const off = metroWatchTypeScriptFiles({\n projectRoot: this.projectRoot,\n server: this.instance!.server,\n metro: this.metro,\n tsconfig: true,\n throttle: true,\n eventTypes: ['change', 'add'],\n callback: async () => {\n // Run once, this prevents the TypeScript project prerequisite from running on every file change.\n off();\n const { TypeScriptProjectPrerequisite } = await import(\n '../../doctor/typescript/TypeScriptProjectPrerequisite.js'\n );\n\n try {\n const req = new TypeScriptProjectPrerequisite(this.projectRoot);\n await req.bootstrapAsync();\n resolve(true);\n } catch (error: any) {\n // Ensure the process doesn't fail if the TypeScript check fails.\n // This could happen during the install.\n Log.log();\n Log.error(\n chalk.red`Failed to automatically setup TypeScript for your project. Try restarting the dev server to fix.`\n );\n Log.exception(error);\n resolve(false);\n }\n },\n });\n });\n }\n\n public async startTypeScriptServices() {\n return startTypescriptTypeGenerationAsync({\n server: this.instance?.server,\n metro: this.metro,\n projectRoot: this.projectRoot,\n });\n }\n\n protected getConfigModuleIds(): string[] {\n return ['./metro.config.js', './metro.config.json', './rn-cli.config.js'];\n }\n\n private pendingRouteOperations = new Map<\n string,\n Promise<{ src: string; filename: string; map?: any } | null>\n >();\n\n // API Routes\n\n // Bundle the API Route with Metro and return the string contents to be evaluated in the server.\n private async bundleApiRoute(\n filePath: string\n ): Promise<{ src: string; filename: string; map?: any } | null | undefined> {\n if (this.pendingRouteOperations.has(filePath)) {\n return this.pendingRouteOperations.get(filePath);\n }\n const bundleAsync = async () => {\n try {\n debug('Bundle API route:', this.instanceMetroOptions.routerRoot, filePath);\n return await this.ssrLoadModuleContents(filePath);\n } catch (error: any) {\n if (error instanceof Error) {\n await logMetroErrorAsync({ error, projectRoot: this.projectRoot });\n }\n throw error;\n } finally {\n // pendingRouteOperations.delete(filepath);\n }\n };\n const route = bundleAsync();\n\n this.pendingRouteOperations.set(filePath, route);\n return route;\n }\n\n private async ssrImportApiRoute(\n filePath: string\n ): Promise<null | Record<string, Function> | Response> {\n // TODO: Cache the evaluated function.\n try {\n const apiRoute = await this.bundleApiRoute(filePath);\n\n if (!apiRoute?.src) {\n return null;\n }\n return evalMetroNoHandling(this.projectRoot, apiRoute.src, apiRoute.filename);\n } catch (error) {\n // Format any errors that were thrown in the global scope of the evaluation.\n if (error instanceof Error) {\n try {\n const htmlServerError = await getErrorOverlayHtmlAsync({\n error,\n projectRoot: this.projectRoot,\n routerRoot: this.getExpoLineOptions().routerRoot!,\n });\n\n return new Response(htmlServerError, {\n status: 500,\n headers: {\n 'Content-Type': 'text/html',\n },\n });\n } catch (internalError) {\n debug('Failed to generate Metro server error UI for API Route error:', internalError);\n throw error;\n }\n } else {\n throw error;\n }\n }\n }\n\n private invalidateApiRouteCache() {\n this.pendingRouteOperations.clear();\n }\n}\n\nexport function getDeepLinkHandler(projectRoot: string): DeepLinkHandler {\n return async ({ runtime }) => {\n if (runtime === 'expo') return;\n const { exp } = getConfig(projectRoot);\n await logEventAsync('dev client start command', {\n status: 'started',\n ...getDevClientProperties(projectRoot, exp),\n });\n };\n}\n"],"names":["getDeepLinkHandler","runtimeEnv","ForwardHtmlError","CommandError","constructor","message","html","statusCode","debug","require","EXPO_GO_METRO_PORT","DEV_CLIENT_METRO_PORT","MetroBundlerDevServer","BundlerDevServer","metro","name","resolvePortAsync","options","port","devClient","Number","process","env","RCT_METRO_PORT","getFreePortAsync","exportExpoRouterApiRoutesAsync","includeSourceMaps","outputDir","prerenderManifest","routerRoot","instanceMetroOptions","assert","appDir","path","join","projectRoot","manifest","getExpoRouterRoutesManifestAsync","files","Map","route","apiRoutes","filepath","file","contents","bundleApiRoute","artifactFilename","relative","replace","src","map","artifactBasename","encodeURIComponent","basename","set","JSON","stringify","version","sources","source","startsWith","split","sep","sourcesContent","Array","length","fill","names","mappings","targetDomain","htmlRoutes","fetchManifest","asJson","getStaticRenderFunctionAsync","mode","minify","isExporting","url","getDevServerUrl","getStaticContent","getManifest","getBuildTimeServerManifestAsync","ssrLoadModule","serverManifest","preserveApiRoutes","renderAsync","URL","getStaticResourcesAsync","mainModuleName","data","baseUrl","asyncRoutes","platform","devBundleUrlPathname","createBundleUrlPath","environment","serializerOutput","serializerIncludeMaps","resolveMainModuleName","lazy","shouldEnableAsyncImports","bytecode","bundleUrl","results","fetch","toString","txt","text","parse","error","ok","status","Log","isArray","artifacts","errors","type","match","Error","getStaticPageAsync","pathname","bundleStaticHtml","location","resources","staticHtml","Promise","all","content","serializeHtmlWithAssets","template","devBundleUrl","filePath","specificOptions","getStaticRenderFunctionsForEntry","fn","ssrLoadModuleContents","requireFileContentsWithMetro","watchEnvironmentVariables","instance","envFiles","getFiles","NODE_ENV","fileName","observeFileChanges","server","load","force","getExpoLineOptions","startImplementationAsync","exp","urlCreator","getUrlCreator","config","getConfig","skipSDKVersionRequirement","useServerRendering","includes","web","output","getBaseUrlFromExpoConfig","getAsyncRoutesFromExpoConfig","getRouterDirectoryModuleIdWithManifest","parsedOptions","maxWorkers","resetCache","resetDevServer","EXPO_DEV_SERVER_ORIGIN","middleware","messageSocket","instantiateMetroAsync","manifestMiddleware","getManifestMiddlewareAsync","prependMiddleware","ContextModuleSourceMapsMiddleware","getHandler","use","InterstitialPageMiddleware","scheme","ReactDevToolsPageMiddleware","DevToolsPluginMiddleware","devToolsPluginManager","deepLinkMiddleware","RuntimeRedirectMiddleware","onDeepLink","getLocation","runtime","constructDevClientUrl","constructUrl","CreateFileMiddleware","isTargetingWeb","ServeStaticMiddleware","FaviconMiddleware","createRouteHandlerMiddleware","functionFilePath","ssrImportApiRoute","observeAnyFileChanges","events","invalidateApiRouteCache","hasWarnedAboutApiRoutes","event","metadata","isApiRouteConvention","warnInvalidWebOutput","HistoryFallbackMiddleware","internal","originalClose","close","bind","callback","err","host","protocol","waitForTypeScriptAsync","resolve","off","metroWatchTypeScriptFiles","tsconfig","throttle","eventTypes","TypeScriptProjectPrerequisite","req","bootstrapAsync","log","chalk","red","exception","startTypeScriptServices","startTypescriptTypeGenerationAsync","getConfigModuleIds","pendingRouteOperations","has","get","bundleAsync","logMetroErrorAsync","apiRoute","evalMetroNoHandling","filename","htmlServerError","getErrorOverlayHtmlAsync","Response","headers","internalError","clear","logEventAsync","getDevClientProperties"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../src/start/server/metro/MetroBundlerDevServer.ts"],"sourcesContent":["/**\n * Copyright © 2022 650 Industries.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { getConfig } from '@expo/config';\nimport * as runtimeEnv from '@expo/env';\nimport { SerialAsset } from '@expo/metro-config/build/serializer/serializerAssets';\nimport assert from 'assert';\nimport chalk from 'chalk';\nimport { AssetData } from 'metro';\nimport fetch from 'node-fetch';\nimport path from 'path';\n\nimport { createRouteHandlerMiddleware } from './createServerRouteMiddleware';\nimport { ExpoRouterServerManifestV1, fetchManifest } from './fetchRouterManifest';\nimport { instantiateMetroAsync } from './instantiateMetro';\nimport { getErrorOverlayHtmlAsync, logMetroErrorAsync } from './metroErrorInterface';\nimport { metroWatchTypeScriptFiles } from './metroWatchTypeScriptFiles';\nimport {\n getRouterDirectoryModuleIdWithManifest,\n hasWarnedAboutApiRoutes,\n isApiRouteConvention,\n warnInvalidWebOutput,\n} from './router';\nimport { serializeHtmlWithAssets } from './serializeHtml';\nimport { observeAnyFileChanges, observeFileChanges } from './waitForMetroToObserveTypeScriptFile';\nimport { ExportAssetMap } from '../../../export/saveAssets';\nimport { Log } from '../../../log';\nimport getDevClientProperties from '../../../utils/analytics/getDevClientProperties';\nimport { CommandError } from '../../../utils/errors';\nimport { getFreePortAsync } from '../../../utils/port';\nimport { logEventAsync } from '../../../utils/telemetry';\nimport { BundlerDevServer, BundlerStartOptions, DevServerInstance } from '../BundlerDevServer';\nimport {\n evalMetroNoHandling,\n getStaticRenderFunctionsForEntry,\n requireFileContentsWithMetro,\n} from '../getStaticRenderFunctions';\nimport { ContextModuleSourceMapsMiddleware } from '../middleware/ContextModuleSourceMapsMiddleware';\nimport { CreateFileMiddleware } from '../middleware/CreateFileMiddleware';\nimport { DevToolsPluginMiddleware } from '../middleware/DevToolsPluginMiddleware';\nimport { FaviconMiddleware } from '../middleware/FaviconMiddleware';\nimport { HistoryFallbackMiddleware } from '../middleware/HistoryFallbackMiddleware';\nimport { InterstitialPageMiddleware } from '../middleware/InterstitialPageMiddleware';\nimport { resolveMainModuleName } from '../middleware/ManifestMiddleware';\nimport { ReactDevToolsPageMiddleware } from '../middleware/ReactDevToolsPageMiddleware';\nimport {\n DeepLinkHandler,\n RuntimeRedirectMiddleware,\n} from '../middleware/RuntimeRedirectMiddleware';\nimport { ServeStaticMiddleware } from '../middleware/ServeStaticMiddleware';\nimport {\n ExpoMetroOptions,\n createBundleUrlPath,\n getAsyncRoutesFromExpoConfig,\n getBaseUrlFromExpoConfig,\n shouldEnableAsyncImports,\n} from '../middleware/metroOptions';\nimport { prependMiddleware } from '../middleware/mutations';\nimport { startTypescriptTypeGenerationAsync } from '../type-generation/startTypescriptTypeGeneration';\n\nexport type ExpoRouterRuntimeManifest = Awaited<\n ReturnType<typeof import('expo-router/build/static/renderStaticContent').getManifest>\n>;\n\nexport class ForwardHtmlError extends CommandError {\n constructor(\n message: string,\n public html: string,\n public statusCode: number\n ) {\n super(message);\n }\n}\n\nconst debug = require('debug')('expo:start:server:metro') as typeof console.log;\n\n/** Default port to use for apps running in Expo Go. */\nconst EXPO_GO_METRO_PORT = 8081;\n\n/** Default port to use for apps that run in standard React Native projects or Expo Dev Clients. */\nconst DEV_CLIENT_METRO_PORT = 8081;\n\nexport class MetroBundlerDevServer extends BundlerDevServer {\n private metro: import('metro').Server | null = null;\n\n get name(): string {\n return 'metro';\n }\n\n async resolvePortAsync(options: Partial<BundlerStartOptions> = {}): Promise<number> {\n const port =\n // If the manually defined port is busy then an error should be thrown...\n options.port ??\n // Otherwise use the default port based on the runtime target.\n (options.devClient\n ? // Don't check if the port is busy if we're using the dev client since most clients are hardcoded to 8081.\n Number(process.env.RCT_METRO_PORT) || DEV_CLIENT_METRO_PORT\n : // Otherwise (running in Expo Go) use a free port that falls back on the classic 8081 port.\n await getFreePortAsync(EXPO_GO_METRO_PORT));\n\n return port;\n }\n\n async exportExpoRouterApiRoutesAsync({\n includeSourceMaps,\n outputDir,\n prerenderManifest,\n }: {\n includeSourceMaps?: boolean;\n outputDir: string;\n // This does not contain the API routes info.\n prerenderManifest: ExpoRouterServerManifestV1;\n }): Promise<{ files: ExportAssetMap; manifest: ExpoRouterServerManifestV1<string> }> {\n const { routerRoot } = this.instanceMetroOptions;\n assert(\n routerRoot != null,\n 'The server must be started before calling exportExpoRouterApiRoutesAsync.'\n );\n\n const appDir = path.join(this.projectRoot, routerRoot);\n const manifest = await this.getExpoRouterRoutesManifestAsync({ appDir });\n\n const files: ExportAssetMap = new Map();\n\n for (const route of manifest.apiRoutes) {\n const filepath = path.join(appDir, route.file);\n const contents = await this.bundleApiRoute(filepath);\n const artifactFilename = path.join(\n outputDir,\n path.relative(appDir, filepath.replace(/\\.[tj]sx?$/, '.js'))\n );\n if (contents) {\n let src = contents.src;\n if (includeSourceMaps && contents.map) {\n // TODO(kitten): Merge the source map transformer in the future\n // https://github.com/expo/expo/blob/0dffdb15/packages/%40expo/metro-config/src/serializer/serializeChunks.ts#L422-L439\n // Alternatively, check whether `sourcesRoot` helps here\n const artifactBasename = encodeURIComponent(path.basename(artifactFilename) + '.map');\n src = src.replace(\n /\\/\\/# sourceMappingURL=.*/g,\n `//# sourceMappingURL=${artifactBasename}`\n );\n files.set(artifactFilename + '.map', {\n contents: JSON.stringify({\n version: contents.map.version,\n sources: contents.map.sources.map((source: string) => {\n source =\n typeof source === 'string' && source.startsWith(this.projectRoot)\n ? path.relative(this.projectRoot, source)\n : source;\n return source.split(path.sep).join('/');\n }),\n sourcesContent: new Array(contents.map.sources.length).fill(null),\n names: contents.map.names,\n mappings: contents.map.mappings,\n }),\n targetDomain: 'server',\n });\n }\n files.set(artifactFilename, {\n contents: src,\n targetDomain: 'server',\n });\n }\n // Remap the manifest files to represent the output files.\n route.file = artifactFilename;\n }\n\n return {\n manifest: {\n ...manifest,\n htmlRoutes: prerenderManifest.htmlRoutes,\n },\n files,\n };\n }\n\n async getExpoRouterRoutesManifestAsync({ appDir }: { appDir: string }) {\n // getBuiltTimeServerManifest\n const manifest = await fetchManifest(this.projectRoot, {\n asJson: true,\n appDir,\n });\n\n if (!manifest) {\n throw new CommandError(\n 'EXPO_ROUTER_SERVER_MANIFEST',\n 'Unexpected error: server manifest could not be fetched.'\n );\n }\n\n return manifest;\n }\n\n async getStaticRenderFunctionAsync(): Promise<{\n serverManifest: ExpoRouterServerManifestV1;\n manifest: ExpoRouterRuntimeManifest;\n renderAsync: (path: string) => Promise<string>;\n }> {\n const { mode, minify, isExporting } = this.instanceMetroOptions;\n assert(\n mode != null && minify != null && isExporting != null,\n 'The server must be started before calling ssrLoadModule.'\n );\n\n const url = this.getDevServerUrl()!;\n\n const { getStaticContent, getManifest, getBuildTimeServerManifestAsync } =\n await this.ssrLoadModule<typeof import('expo-router/build/static/renderStaticContent')>(\n 'expo-router/node/render.js',\n {\n minify,\n mode,\n isExporting,\n }\n );\n\n return {\n serverManifest: await getBuildTimeServerManifestAsync(),\n // Get routes from Expo Router.\n manifest: await getManifest({ preserveApiRoutes: false }),\n // Get route generating function\n async renderAsync(path: string) {\n return await getStaticContent(new URL(path, url));\n },\n };\n }\n\n async getStaticResourcesAsync({\n includeSourceMaps,\n mainModuleName,\n }: {\n includeSourceMaps?: boolean;\n mainModuleName?: string;\n } = {}): Promise<{ artifacts: SerialAsset[]; assets?: AssetData[] }> {\n const { mode, minify, isExporting, baseUrl, routerRoot, asyncRoutes } =\n this.instanceMetroOptions;\n assert(\n mode != null &&\n minify != null &&\n isExporting != null &&\n baseUrl != null &&\n routerRoot != null &&\n asyncRoutes != null,\n 'The server must be started before calling getStaticPageAsync.'\n );\n\n const platform = 'web';\n\n const devBundleUrlPathname = createBundleUrlPath({\n platform,\n mode,\n minify,\n environment: 'client',\n serializerOutput: 'static',\n serializerIncludeMaps: includeSourceMaps,\n mainModuleName: mainModuleName ?? resolveMainModuleName(this.projectRoot, { platform }),\n lazy: shouldEnableAsyncImports(this.projectRoot),\n asyncRoutes,\n baseUrl,\n isExporting,\n routerRoot,\n bytecode: false,\n });\n\n const bundleUrl = new URL(devBundleUrlPathname, this.getDevServerUrl()!);\n\n // Fetch the generated HTML from our custom Metro serializer\n const results = await fetch(bundleUrl.toString());\n\n const txt = await results.text();\n\n let data: any;\n try {\n data = JSON.parse(txt);\n } catch (error: any) {\n debug(txt);\n\n // Metro can throw this error when the initial module id cannot be resolved.\n if (!results.ok && txt.startsWith('<!DOCTYPE html>')) {\n throw new ForwardHtmlError(\n `Metro failed to bundle the project. Check the console for more information.`,\n txt,\n results.status\n );\n }\n\n Log.error(\n 'Failed to generate resources with Metro, the Metro config may not be using the correct serializer. Ensure the metro.config.js is extending the expo/metro-config and is not overriding the serializer.'\n );\n throw error;\n }\n\n // NOTE: This could potentially need more validation in the future.\n if ('artifacts' in data && Array.isArray(data.artifacts)) {\n return data;\n }\n\n if (data != null && (data.errors || data.type?.match(/.*Error$/))) {\n // {\n // type: 'InternalError',\n // errors: [],\n // message: 'Metro has encountered an error: While trying to resolve module `stylis` from file `/Users/evanbacon/Documents/GitHub/lab/emotion-error-test/node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js`, the package `/Users/evanbacon/Documents/GitHub/lab/emotion-error-test/node_modules/stylis/package.json` was successfully found. However, this package itself specifies a `main` module field that could not be resolved (`/Users/evanbacon/Documents/GitHub/lab/emotion-error-test/node_modules/stylis/dist/stylis.mjs`. Indeed, none of these files exist:\\n' +\n // '\\n' +\n // ' * /Users/evanbacon/Documents/GitHub/lab/emotion-error-test/node_modules/stylis/dist/stylis.mjs(.web.ts|.ts|.web.tsx|.tsx|.web.js|.js|.web.jsx|.jsx|.web.json|.json|.web.cjs|.cjs|.web.scss|.scss|.web.sass|.sass|.web.css|.css)\\n' +\n // ' * /Users/evanbacon/Documents/GitHub/lab/emotion-error-test/node_modules/stylis/dist/stylis.mjs/index(.web.ts|.ts|.web.tsx|.tsx|.web.js|.js|.web.jsx|.jsx|.web.json|.json|.web.cjs|.cjs|.web.scss|.scss|.web.sass|.sass|.web.css|.css): /Users/evanbacon/Documents/GitHub/lab/emotion-error-test/node_modules/metro/src/node-haste/DependencyGraph.js (289:17)\\n' +\n // '\\n' +\n // '\\x1B[0m \\x1B[90m 287 |\\x1B[39m }\\x1B[0m\\n' +\n // '\\x1B[0m \\x1B[90m 288 |\\x1B[39m \\x1B[36mif\\x1B[39m (error \\x1B[36minstanceof\\x1B[39m \\x1B[33mInvalidPackageError\\x1B[39m) {\\x1B[0m\\n' +\n // '\\x1B[0m\\x1B[31m\\x1B[1m>\\x1B[22m\\x1B[39m\\x1B[90m 289 |\\x1B[39m \\x1B[36mthrow\\x1B[39m \\x1B[36mnew\\x1B[39m \\x1B[33mPackageResolutionError\\x1B[39m({\\x1B[0m\\n' +\n // '\\x1B[0m \\x1B[90m |\\x1B[39m \\x1B[31m\\x1B[1m^\\x1B[22m\\x1B[39m\\x1B[0m\\n' +\n // '\\x1B[0m \\x1B[90m 290 |\\x1B[39m packageError\\x1B[33m:\\x1B[39m error\\x1B[33m,\\x1B[39m\\x1B[0m\\n' +\n // '\\x1B[0m \\x1B[90m 291 |\\x1B[39m originModulePath\\x1B[33m:\\x1B[39m \\x1B[36mfrom\\x1B[39m\\x1B[33m,\\x1B[39m\\x1B[0m\\n' +\n // '\\x1B[0m \\x1B[90m 292 |\\x1B[39m targetModuleName\\x1B[33m:\\x1B[39m to\\x1B[33m,\\x1B[39m\\x1B[0m'\n // }\n // The Metro logger already showed this error.\n throw new Error(data.message);\n }\n\n throw new Error(\n 'Invalid resources returned from the Metro serializer. Expected array, found: ' + data\n );\n }\n\n private async getStaticPageAsync(pathname: string) {\n const { mode, minify, isExporting, baseUrl, routerRoot, asyncRoutes } =\n this.instanceMetroOptions;\n assert(\n mode != null &&\n minify != null &&\n isExporting != null &&\n baseUrl != null &&\n routerRoot != null &&\n asyncRoutes != null,\n 'The server must be started before calling getStaticPageAsync.'\n );\n const platform = 'web';\n\n const devBundleUrlPathname = createBundleUrlPath({\n platform,\n mode,\n environment: 'client',\n mainModuleName: resolveMainModuleName(this.projectRoot, { platform }),\n lazy: shouldEnableAsyncImports(this.projectRoot),\n baseUrl,\n isExporting,\n asyncRoutes,\n routerRoot,\n bytecode: false,\n });\n\n const bundleStaticHtml = async (): Promise<string> => {\n const { getStaticContent } = await this.ssrLoadModule<\n typeof import('expo-router/build/static/renderStaticContent')\n >('expo-router/node/render.js', {\n minify: false,\n mode,\n isExporting,\n platform,\n });\n\n const location = new URL(pathname, this.getDevServerUrl()!);\n return await getStaticContent(location);\n };\n\n const [{ artifacts: resources }, staticHtml] = await Promise.all([\n this.getStaticResourcesAsync(),\n bundleStaticHtml(),\n ]);\n const content = serializeHtmlWithAssets({\n isExporting,\n resources,\n template: staticHtml,\n devBundleUrl: devBundleUrlPathname,\n baseUrl,\n });\n return {\n content,\n resources,\n };\n }\n\n // Set when the server is started.\n private instanceMetroOptions: Partial<ExpoMetroOptions> = {};\n\n async ssrLoadModule<T extends Record<string, any>>(\n filePath: string,\n specificOptions: Partial<ExpoMetroOptions> = {}\n ): Promise<T> {\n const { baseUrl, routerRoot, isExporting } = this.instanceMetroOptions;\n assert(\n baseUrl != null && routerRoot != null && isExporting != null,\n 'The server must be started before calling ssrLoadModule.'\n );\n\n return (\n await getStaticRenderFunctionsForEntry<T>(\n this.projectRoot,\n this.getDevServerUrl()!,\n {\n // Bundle in Node.js mode for SSR.\n environment: 'node',\n platform: 'web',\n mode: 'development',\n bytecode: false,\n\n ...this.instanceMetroOptions,\n baseUrl,\n routerRoot,\n isExporting,\n ...specificOptions,\n },\n filePath\n )\n ).fn;\n }\n\n async ssrLoadModuleContents(\n filePath: string,\n specificOptions: Partial<ExpoMetroOptions> = {}\n ): Promise<{ src: string; filename: string }> {\n const { baseUrl, routerRoot, isExporting } = this.instanceMetroOptions;\n assert(\n baseUrl != null && routerRoot != null && isExporting != null,\n 'The server must be started before calling ssrLoadModule.'\n );\n\n return await requireFileContentsWithMetro(this.projectRoot, this.getDevServerUrl()!, filePath, {\n // Bundle in Node.js mode for SSR.\n environment: 'node',\n platform: 'web',\n mode: 'development',\n bytecode: false,\n\n ...this.instanceMetroOptions,\n baseUrl,\n routerRoot,\n isExporting,\n ...specificOptions,\n });\n }\n\n async watchEnvironmentVariables() {\n if (!this.instance) {\n throw new Error(\n 'Cannot observe environment variable changes without a running Metro instance.'\n );\n }\n if (!this.metro) {\n // This can happen when the run command is used and the server is already running in another\n // process.\n debug('Skipping Environment Variable observation because Metro is not running (headless).');\n return;\n }\n\n const envFiles = runtimeEnv\n .getFiles(process.env.NODE_ENV)\n .map((fileName) => path.join(this.projectRoot, fileName));\n\n observeFileChanges(\n {\n metro: this.metro,\n server: this.instance.server,\n },\n envFiles,\n () => {\n debug('Reloading environment variables...');\n // Force reload the environment variables.\n runtimeEnv.load(this.projectRoot, { force: true });\n }\n );\n }\n\n getExpoLineOptions() {\n return this.instanceMetroOptions;\n }\n\n protected async startImplementationAsync(\n options: BundlerStartOptions\n ): Promise<DevServerInstance> {\n options.port = await this.resolvePortAsync(options);\n this.urlCreator = this.getUrlCreator(options);\n\n const config = getConfig(this.projectRoot, { skipSDKVersionRequirement: true });\n const { exp } = config;\n const useServerRendering = ['static', 'server'].includes(exp.web?.output ?? '');\n const baseUrl = getBaseUrlFromExpoConfig(exp);\n const asyncRoutes = getAsyncRoutesFromExpoConfig(exp, options.mode ?? 'development', 'web');\n const routerRoot = getRouterDirectoryModuleIdWithManifest(this.projectRoot, exp);\n const appDir = path.join(this.projectRoot, routerRoot);\n const mode = options.mode ?? 'development';\n\n this.instanceMetroOptions = {\n isExporting: !!options.isExporting,\n baseUrl,\n mode,\n routerRoot,\n minify: options.minify,\n asyncRoutes,\n // Options that are changing between platforms like engine, platform, and environment aren't set here.\n };\n\n const parsedOptions = {\n port: options.port,\n maxWorkers: options.maxWorkers,\n resetCache: options.resetDevServer,\n };\n\n // Required for symbolication:\n process.env.EXPO_DEV_SERVER_ORIGIN = `http://localhost:${options.port}`;\n\n const { metro, server, middleware, messageSocket } = await instantiateMetroAsync(\n this,\n parsedOptions,\n {\n isExporting: !!options.isExporting,\n }\n );\n\n const manifestMiddleware = await this.getManifestMiddlewareAsync(options);\n\n // Important that we noop source maps for context modules as soon as possible.\n prependMiddleware(middleware, new ContextModuleSourceMapsMiddleware().getHandler());\n\n // We need the manifest handler to be the first middleware to run so our\n // routes take precedence over static files. For example, the manifest is\n // served from '/' and if the user has an index.html file in their project\n // then the manifest handler will never run, the static middleware will run\n // and serve index.html instead of the manifest.\n // https://github.com/expo/expo/issues/13114\n prependMiddleware(middleware, manifestMiddleware.getHandler());\n\n middleware.use(\n new InterstitialPageMiddleware(this.projectRoot, {\n // TODO: Prevent this from becoming stale.\n scheme: options.location.scheme ?? null,\n }).getHandler()\n );\n middleware.use(new ReactDevToolsPageMiddleware(this.projectRoot).getHandler());\n middleware.use(\n new DevToolsPluginMiddleware(this.projectRoot, this.devToolsPluginManager).getHandler()\n );\n\n const deepLinkMiddleware = new RuntimeRedirectMiddleware(this.projectRoot, {\n onDeepLink: getDeepLinkHandler(this.projectRoot),\n getLocation: ({ runtime }) => {\n if (runtime === 'custom') {\n return this.urlCreator?.constructDevClientUrl();\n } else {\n return this.urlCreator?.constructUrl({\n scheme: 'exp',\n });\n }\n },\n });\n middleware.use(deepLinkMiddleware.getHandler());\n\n middleware.use(new CreateFileMiddleware(this.projectRoot).getHandler());\n\n // Append support for redirecting unhandled requests to the index.html page on web.\n if (this.isTargetingWeb()) {\n // This MUST be after the manifest middleware so it doesn't have a chance to serve the template `public/index.html`.\n middleware.use(new ServeStaticMiddleware(this.projectRoot).getHandler());\n\n // This should come after the static middleware so it doesn't serve the favicon from `public/favicon.ico`.\n middleware.use(new FaviconMiddleware(this.projectRoot).getHandler());\n\n if (useServerRendering) {\n middleware.use(\n createRouteHandlerMiddleware(this.projectRoot, {\n appDir,\n routerRoot,\n config,\n bundleApiRoute: (functionFilePath) => this.ssrImportApiRoute(functionFilePath),\n getStaticPageAsync: (pathname) => {\n return this.getStaticPageAsync(pathname);\n },\n })\n );\n\n observeAnyFileChanges(\n {\n metro,\n server,\n },\n (events) => {\n if (exp.web?.output === 'server') {\n // NOTE(EvanBacon): We aren't sure what files the API routes are using so we'll just invalidate\n // aggressively to ensure we always have the latest. The only caching we really get here is for\n // cases where the user is making subsequent requests to the same API route without changing anything.\n // This is useful for testing but pretty suboptimal. Luckily our caching is pretty aggressive so it makes\n // up for a lot of the overhead.\n this.invalidateApiRouteCache();\n } else if (!hasWarnedAboutApiRoutes()) {\n for (const event of events) {\n if (\n // If the user did not delete a file that matches the Expo Router API Route convention, then we should warn that\n // API Routes are not enabled in the project.\n event.metadata?.type !== 'd' &&\n // Ensure the file is in the project's routes directory to prevent false positives in monorepos.\n event.filePath.startsWith(appDir) &&\n isApiRouteConvention(event.filePath)\n ) {\n warnInvalidWebOutput();\n }\n }\n }\n }\n );\n } else {\n // This MUST run last since it's the fallback.\n middleware.use(\n new HistoryFallbackMiddleware(manifestMiddleware.getHandler().internal).getHandler()\n );\n }\n }\n // Extend the close method to ensure that we clean up the local info.\n const originalClose = server.close.bind(server);\n\n server.close = (callback?: (err?: Error) => void) => {\n return originalClose((err?: Error) => {\n this.instance = null;\n this.metro = null;\n callback?.(err);\n });\n };\n\n this.metro = metro;\n return {\n server,\n location: {\n // The port is the main thing we want to send back.\n port: options.port,\n // localhost isn't always correct.\n host: 'localhost',\n // http is the only supported protocol on native.\n url: `http://localhost:${options.port}`,\n protocol: 'http',\n },\n middleware,\n messageSocket,\n };\n }\n\n public async waitForTypeScriptAsync(): Promise<boolean> {\n if (!this.instance) {\n throw new Error('Cannot wait for TypeScript without a running server.');\n }\n\n return new Promise<boolean>((resolve) => {\n if (!this.metro) {\n // This can happen when the run command is used and the server is already running in another\n // process. In this case we can't wait for the TypeScript check to complete because we don't\n // have access to the Metro server.\n debug('Skipping TypeScript check because Metro is not running (headless).');\n return resolve(false);\n }\n\n const off = metroWatchTypeScriptFiles({\n projectRoot: this.projectRoot,\n server: this.instance!.server,\n metro: this.metro,\n tsconfig: true,\n throttle: true,\n eventTypes: ['change', 'add'],\n callback: async () => {\n // Run once, this prevents the TypeScript project prerequisite from running on every file change.\n off();\n const { TypeScriptProjectPrerequisite } = await import(\n '../../doctor/typescript/TypeScriptProjectPrerequisite.js'\n );\n\n try {\n const req = new TypeScriptProjectPrerequisite(this.projectRoot);\n await req.bootstrapAsync();\n resolve(true);\n } catch (error: any) {\n // Ensure the process doesn't fail if the TypeScript check fails.\n // This could happen during the install.\n Log.log();\n Log.error(\n chalk.red`Failed to automatically setup TypeScript for your project. Try restarting the dev server to fix.`\n );\n Log.exception(error);\n resolve(false);\n }\n },\n });\n });\n }\n\n public async startTypeScriptServices() {\n return startTypescriptTypeGenerationAsync({\n server: this.instance?.server,\n metro: this.metro,\n projectRoot: this.projectRoot,\n });\n }\n\n protected getConfigModuleIds(): string[] {\n return ['./metro.config.js', './metro.config.json', './rn-cli.config.js'];\n }\n\n private pendingRouteOperations = new Map<\n string,\n Promise<{ src: string; filename: string; map?: any } | null>\n >();\n\n // API Routes\n\n // Bundle the API Route with Metro and return the string contents to be evaluated in the server.\n private async bundleApiRoute(\n filePath: string\n ): Promise<{ src: string; filename: string; map?: any } | null | undefined> {\n if (this.pendingRouteOperations.has(filePath)) {\n return this.pendingRouteOperations.get(filePath);\n }\n const bundleAsync = async () => {\n try {\n debug('Bundle API route:', this.instanceMetroOptions.routerRoot, filePath);\n return await this.ssrLoadModuleContents(filePath);\n } catch (error: any) {\n if (error instanceof Error) {\n await logMetroErrorAsync({ error, projectRoot: this.projectRoot });\n }\n throw error;\n } finally {\n // pendingRouteOperations.delete(filepath);\n }\n };\n const route = bundleAsync();\n\n this.pendingRouteOperations.set(filePath, route);\n return route;\n }\n\n private async ssrImportApiRoute(\n filePath: string\n ): Promise<null | Record<string, Function> | Response> {\n // TODO: Cache the evaluated function.\n try {\n const apiRoute = await this.bundleApiRoute(filePath);\n\n if (!apiRoute?.src) {\n return null;\n }\n return evalMetroNoHandling(this.projectRoot, apiRoute.src, apiRoute.filename);\n } catch (error) {\n // Format any errors that were thrown in the global scope of the evaluation.\n if (error instanceof Error) {\n try {\n const htmlServerError = await getErrorOverlayHtmlAsync({\n error,\n projectRoot: this.projectRoot,\n routerRoot: this.getExpoLineOptions().routerRoot!,\n });\n\n return new Response(htmlServerError, {\n status: 500,\n headers: {\n 'Content-Type': 'text/html',\n },\n });\n } catch (internalError) {\n debug('Failed to generate Metro server error UI for API Route error:', internalError);\n throw error;\n }\n } else {\n throw error;\n }\n }\n }\n\n private invalidateApiRouteCache() {\n this.pendingRouteOperations.clear();\n }\n}\n\nexport function getDeepLinkHandler(projectRoot: string): DeepLinkHandler {\n return async ({ runtime }) => {\n if (runtime === 'expo') return;\n const { exp } = getConfig(projectRoot);\n await logEventAsync('dev client start command', {\n status: 'started',\n ...getDevClientProperties(projectRoot, exp),\n });\n };\n}\n"],"names":["ForwardHtmlError","MetroBundlerDevServer","getDeepLinkHandler","CommandError","constructor","message","html","statusCode","debug","require","EXPO_GO_METRO_PORT","DEV_CLIENT_METRO_PORT","BundlerDevServer","metro","name","resolvePortAsync","options","port","devClient","Number","process","env","RCT_METRO_PORT","getFreePortAsync","exportExpoRouterApiRoutesAsync","includeSourceMaps","outputDir","prerenderManifest","routerRoot","instanceMetroOptions","assert","appDir","path","join","projectRoot","manifest","getExpoRouterRoutesManifestAsync","files","Map","route","apiRoutes","filepath","file","contents","bundleApiRoute","artifactFilename","relative","replace","src","map","artifactBasename","encodeURIComponent","basename","set","JSON","stringify","version","sources","source","startsWith","split","sep","sourcesContent","Array","length","fill","names","mappings","targetDomain","htmlRoutes","fetchManifest","asJson","getStaticRenderFunctionAsync","mode","minify","isExporting","url","getDevServerUrl","getStaticContent","getManifest","getBuildTimeServerManifestAsync","ssrLoadModule","serverManifest","preserveApiRoutes","renderAsync","URL","getStaticResourcesAsync","mainModuleName","data","baseUrl","asyncRoutes","platform","devBundleUrlPathname","createBundleUrlPath","environment","serializerOutput","serializerIncludeMaps","resolveMainModuleName","lazy","shouldEnableAsyncImports","bytecode","bundleUrl","results","fetch","toString","txt","text","parse","error","ok","status","Log","isArray","artifacts","errors","type","match","Error","getStaticPageAsync","pathname","bundleStaticHtml","location","resources","staticHtml","Promise","all","content","serializeHtmlWithAssets","template","devBundleUrl","filePath","specificOptions","getStaticRenderFunctionsForEntry","fn","ssrLoadModuleContents","requireFileContentsWithMetro","watchEnvironmentVariables","instance","envFiles","runtimeEnv","getFiles","NODE_ENV","fileName","observeFileChanges","server","load","force","getExpoLineOptions","startImplementationAsync","exp","urlCreator","getUrlCreator","config","getConfig","skipSDKVersionRequirement","useServerRendering","includes","web","output","getBaseUrlFromExpoConfig","getAsyncRoutesFromExpoConfig","getRouterDirectoryModuleIdWithManifest","parsedOptions","maxWorkers","resetCache","resetDevServer","EXPO_DEV_SERVER_ORIGIN","middleware","messageSocket","instantiateMetroAsync","manifestMiddleware","getManifestMiddlewareAsync","prependMiddleware","ContextModuleSourceMapsMiddleware","getHandler","use","InterstitialPageMiddleware","scheme","ReactDevToolsPageMiddleware","DevToolsPluginMiddleware","devToolsPluginManager","deepLinkMiddleware","RuntimeRedirectMiddleware","onDeepLink","getLocation","runtime","constructDevClientUrl","constructUrl","CreateFileMiddleware","isTargetingWeb","ServeStaticMiddleware","FaviconMiddleware","createRouteHandlerMiddleware","functionFilePath","ssrImportApiRoute","observeAnyFileChanges","events","invalidateApiRouteCache","hasWarnedAboutApiRoutes","event","metadata","isApiRouteConvention","warnInvalidWebOutput","HistoryFallbackMiddleware","internal","originalClose","close","bind","callback","err","host","protocol","waitForTypeScriptAsync","resolve","off","metroWatchTypeScriptFiles","tsconfig","throttle","eventTypes","TypeScriptProjectPrerequisite","req","bootstrapAsync","log","chalk","red","exception","startTypeScriptServices","startTypescriptTypeGenerationAsync","getConfigModuleIds","pendingRouteOperations","has","get","bundleAsync","logMetroErrorAsync","apiRoute","evalMetroNoHandling","filename","htmlServerError","getErrorOverlayHtmlAsync","Response","headers","internalError","clear","logEventAsync","getDevClientProperties"],"mappings":"AAAA;;;;;CAKC,GACD;;;;;;;;;;;IA6DaA,gBAAgB,MAAhBA,gBAAgB;IAkBhBC,qBAAqB,MAArBA,qBAAqB;IAwrBlBC,kBAAkB,MAAlBA,kBAAkB;;;yBAvwBR,cAAc;;;;;;;+DACZ,WAAW;;;;;;;8DAEpB,QAAQ;;;;;;;8DACT,OAAO;;;;;;;8DAEP,YAAY;;;;;;;8DACb,MAAM;;;;;;6CAEsB,+BAA+B;qCAClB,uBAAuB;kCAC3C,oBAAoB;qCACG,uBAAuB;2CAC1C,6BAA6B;wBAMhE,UAAU;+BACuB,iBAAiB;qDACC,uCAAuC;qBAE7E,cAAc;6EACC,iDAAiD;wBACvD,uBAAuB;sBACnB,qBAAqB;2BACxB,0BAA0B;kCACiB,qBAAqB;0CAKvF,6BAA6B;mDACc,iDAAiD;sCAC9D,oCAAoC;0CAChC,wCAAwC;mCAC/C,iCAAiC;2CACzB,yCAAyC;4CACxC,0CAA0C;oCAC/C,kCAAkC;6CAC5B,2CAA2C;2CAIhF,yCAAyC;uCACV,qCAAqC;8BAOpE,4BAA4B;2BACD,yBAAyB;+CACR,kDAAkD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAM9F,MAAMF,gBAAgB,SAASG,OAAY,aAAA;IAChDC,YACEC,OAAe,EACRC,IAAY,EACZC,UAAkB,CACzB;QACA,KAAK,CAACF,OAAO,CAAC,CAAC;QAHRC,YAAAA,IAAY,CAAA;QACZC,kBAAAA,UAAkB,CAAA;IAG3B;CACD;AAED,MAAMC,KAAK,GAAGC,OAAO,CAAC,OAAO,CAAC,CAAC,yBAAyB,CAAC,AAAsB,AAAC;AAEhF,qDAAqD,GACrD,MAAMC,kBAAkB,GAAG,IAAI,AAAC;AAEhC,iGAAiG,GACjG,MAAMC,qBAAqB,GAAG,IAAI,AAAC;AAE5B,MAAMV,qBAAqB,SAASW,iBAAgB,iBAAA;IACzD,AAAQC,KAAK,GAAkC,IAAI,CAAC;QAEhDC,IAAI,GAAW;QACjB,OAAO,OAAO,CAAC;IACjB;UAEMC,gBAAgB,CAACC,OAAqC,GAAG,EAAE,EAAmB;YAEhF,yEAAyE;QACzEA,MAAY;QAFd,MAAMC,IAAI,GAERD,CAAAA,MAAY,GAAZA,OAAO,CAACC,IAAI,YAAZD,MAAY,GACZ,8DAA8D;QAC9D,CAACA,OAAO,CAACE,SAAS,GAEdC,MAAM,CAACC,OAAO,CAACC,GAAG,CAACC,cAAc,CAAC,IAAIX,qBAAqB,GAE3D,MAAMY,IAAAA,KAAgB,iBAAA,EAACb,kBAAkB,CAAC,CAAC,AAAC;QAElD,OAAOO,IAAI,CAAC;IACd;UAEMO,8BAA8B,CAAC,EACnCC,iBAAiB,CAAA,EACjBC,SAAS,CAAA,EACTC,iBAAiB,CAAA,EAMlB,EAAoF;QACnF,MAAM,EAAEC,UAAU,CAAA,EAAE,GAAG,IAAI,CAACC,oBAAoB,AAAC;QACjDC,IAAAA,OAAM,EAAA,QAAA,EACJF,UAAU,IAAI,IAAI,EAClB,2EAA2E,CAC5E,CAAC;QAEF,MAAMG,MAAM,GAAGC,KAAI,EAAA,QAAA,CAACC,IAAI,CAAC,IAAI,CAACC,WAAW,EAAEN,UAAU,CAAC,AAAC;QACvD,MAAMO,QAAQ,GAAG,MAAM,IAAI,CAACC,gCAAgC,CAAC;YAAEL,MAAM;SAAE,CAAC,AAAC;QAEzE,MAAMM,KAAK,GAAmB,IAAIC,GAAG,EAAE,AAAC;QAExC,KAAK,MAAMC,KAAK,IAAIJ,QAAQ,CAACK,SAAS,CAAE;YACtC,MAAMC,QAAQ,GAAGT,KAAI,EAAA,QAAA,CAACC,IAAI,CAACF,MAAM,EAAEQ,KAAK,CAACG,IAAI,CAAC,AAAC;YAC/C,MAAMC,QAAQ,GAAG,MAAM,IAAI,CAACC,cAAc,CAACH,QAAQ,CAAC,AAAC;YACrD,MAAMI,gBAAgB,GAAGb,KAAI,EAAA,QAAA,CAACC,IAAI,CAChCP,SAAS,EACTM,KAAI,EAAA,QAAA,CAACc,QAAQ,CAACf,MAAM,EAAEU,QAAQ,CAACM,OAAO,eAAe,KAAK,CAAC,CAAC,CAC7D,AAAC;YACF,IAAIJ,QAAQ,EAAE;gBACZ,IAAIK,GAAG,GAAGL,QAAQ,CAACK,GAAG,AAAC;gBACvB,IAAIvB,iBAAiB,IAAIkB,QAAQ,CAACM,GAAG,EAAE;oBACrC,+DAA+D;oBAC/D,uHAAuH;oBACvH,wDAAwD;oBACxD,MAAMC,gBAAgB,GAAGC,kBAAkB,CAACnB,KAAI,EAAA,QAAA,CAACoB,QAAQ,CAACP,gBAAgB,CAAC,GAAG,MAAM,CAAC,AAAC;oBACtFG,GAAG,GAAGA,GAAG,CAACD,OAAO,+BAEf,CAAC,qBAAqB,EAAEG,gBAAgB,CAAC,CAAC,CAC3C,CAAC;oBACFb,KAAK,CAACgB,GAAG,CAACR,gBAAgB,GAAG,MAAM,EAAE;wBACnCF,QAAQ,EAAEW,IAAI,CAACC,SAAS,CAAC;4BACvBC,OAAO,EAAEb,QAAQ,CAACM,GAAG,CAACO,OAAO;4BAC7BC,OAAO,EAAEd,QAAQ,CAACM,GAAG,CAACQ,OAAO,CAACR,GAAG,CAAC,CAACS,MAAc,GAAK;gCACpDA,MAAM,GACJ,OAAOA,MAAM,KAAK,QAAQ,IAAIA,MAAM,CAACC,UAAU,CAAC,IAAI,CAACzB,WAAW,CAAC,GAC7DF,KAAI,EAAA,QAAA,CAACc,QAAQ,CAAC,IAAI,CAACZ,WAAW,EAAEwB,MAAM,CAAC,GACvCA,MAAM,CAAC;gCACb,OAAOA,MAAM,CAACE,KAAK,CAAC5B,KAAI,EAAA,QAAA,CAAC6B,GAAG,CAAC,CAAC5B,IAAI,CAAC,GAAG,CAAC,CAAC;4BAC1C,CAAC,CAAC;4BACF6B,cAAc,EAAE,IAAIC,KAAK,CAACpB,QAAQ,CAACM,GAAG,CAACQ,OAAO,CAACO,MAAM,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC;4BACjEC,KAAK,EAAEvB,QAAQ,CAACM,GAAG,CAACiB,KAAK;4BACzBC,QAAQ,EAAExB,QAAQ,CAACM,GAAG,CAACkB,QAAQ;yBAChC,CAAC;wBACFC,YAAY,EAAE,QAAQ;qBACvB,CAAC,CAAC;gBACL,CAAC;gBACD/B,KAAK,CAACgB,GAAG,CAACR,gBAAgB,EAAE;oBAC1BF,QAAQ,EAAEK,GAAG;oBACboB,YAAY,EAAE,QAAQ;iBACvB,CAAC,CAAC;YACL,CAAC;YACD,0DAA0D;YAC1D7B,KAAK,CAACG,IAAI,GAAGG,gBAAgB,CAAC;QAChC,CAAC;QAED,OAAO;YACLV,QAAQ,EAAE;gBACR,GAAGA,QAAQ;gBACXkC,UAAU,EAAE1C,iBAAiB,CAAC0C,UAAU;aACzC;YACDhC,KAAK;SACN,CAAC;IACJ;UAEMD,gCAAgC,CAAC,EAAEL,MAAM,CAAA,EAAsB,EAAE;QACrE,6BAA6B;QAC7B,MAAMI,QAAQ,GAAG,MAAMmC,IAAAA,oBAAa,cAAA,EAAC,IAAI,CAACpC,WAAW,EAAE;YACrDqC,MAAM,EAAE,IAAI;YACZxC,MAAM;SACP,CAAC,AAAC;QAEH,IAAI,CAACI,QAAQ,EAAE;YACb,MAAM,IAAIhC,OAAY,aAAA,CACpB,6BAA6B,EAC7B,yDAAyD,CAC1D,CAAC;QACJ,CAAC;QAED,OAAOgC,QAAQ,CAAC;IAClB;UAEMqC,4BAA4B,GAI/B;QACD,MAAM,EAAEC,IAAI,CAAA,EAAEC,MAAM,CAAA,EAAEC,WAAW,CAAA,EAAE,GAAG,IAAI,CAAC9C,oBAAoB,AAAC;QAChEC,IAAAA,OAAM,EAAA,QAAA,EACJ2C,IAAI,IAAI,IAAI,IAAIC,MAAM,IAAI,IAAI,IAAIC,WAAW,IAAI,IAAI,EACrD,0DAA0D,CAC3D,CAAC;QAEF,MAAMC,GAAG,GAAG,IAAI,CAACC,eAAe,EAAE,AAAC,AAAC;QAEpC,MAAM,EAAEC,gBAAgB,CAAA,EAAEC,WAAW,CAAA,EAAEC,+BAA+B,CAAA,EAAE,GACtE,MAAM,IAAI,CAACC,aAAa,CACtB,4BAA4B,EAC5B;YACEP,MAAM;YACND,IAAI;YACJE,WAAW;SACZ,CACF,AAAC;QAEJ,OAAO;YACLO,cAAc,EAAE,MAAMF,+BAA+B,EAAE;YACvD,+BAA+B;YAC/B7C,QAAQ,EAAE,MAAM4C,WAAW,CAAC;gBAAEI,iBAAiB,EAAE,KAAK;aAAE,CAAC;YACzD,gCAAgC;YAChC,MAAMC,WAAW,EAACpD,IAAY,EAAE;gBAC9B,OAAO,MAAM8C,gBAAgB,CAAC,IAAIO,GAAG,CAACrD,IAAI,EAAE4C,GAAG,CAAC,CAAC,CAAC;YACpD,CAAC;SACF,CAAC;IACJ;UAEMU,uBAAuB,CAAC,EAC5B7D,iBAAiB,CAAA,EACjB8D,cAAc,CAAA,EAIf,GAAG,EAAE,EAA+D;YAgE/BC,GAAS;QA/D7C,MAAM,EAAEf,IAAI,CAAA,EAAEC,MAAM,CAAA,EAAEC,WAAW,CAAA,EAAEc,OAAO,CAAA,EAAE7D,UAAU,CAAA,EAAE8D,WAAW,CAAA,EAAE,GACnE,IAAI,CAAC7D,oBAAoB,AAAC;QAC5BC,IAAAA,OAAM,EAAA,QAAA,EACJ2C,IAAI,IAAI,IAAI,IACVC,MAAM,IAAI,IAAI,IACdC,WAAW,IAAI,IAAI,IACnBc,OAAO,IAAI,IAAI,IACf7D,UAAU,IAAI,IAAI,IAClB8D,WAAW,IAAI,IAAI,EACrB,+DAA+D,CAChE,CAAC;QAEF,MAAMC,QAAQ,GAAG,KAAK,AAAC;QAEvB,MAAMC,oBAAoB,GAAGC,IAAAA,aAAmB,oBAAA,EAAC;YAC/CF,QAAQ;YACRlB,IAAI;YACJC,MAAM;YACNoB,WAAW,EAAE,QAAQ;YACrBC,gBAAgB,EAAE,QAAQ;YAC1BC,qBAAqB,EAAEvE,iBAAiB;YACxC8D,cAAc,EAAEA,cAAc,WAAdA,cAAc,GAAIU,IAAAA,mBAAqB,sBAAA,EAAC,IAAI,CAAC/D,WAAW,EAAE;gBAAEyD,QAAQ;aAAE,CAAC;YACvFO,IAAI,EAAEC,IAAAA,aAAwB,yBAAA,EAAC,IAAI,CAACjE,WAAW,CAAC;YAChDwD,WAAW;YACXD,OAAO;YACPd,WAAW;YACX/C,UAAU;YACVwE,QAAQ,EAAE,KAAK;SAChB,CAAC,AAAC;QAEH,MAAMC,SAAS,GAAG,IAAIhB,GAAG,CAACO,oBAAoB,EAAE,IAAI,CAACf,eAAe,EAAE,CAAE,AAAC;QAEzE,4DAA4D;QAC5D,MAAMyB,OAAO,GAAG,MAAMC,IAAAA,UAAK,EAAA,QAAA,EAACF,SAAS,CAACG,QAAQ,EAAE,CAAC,AAAC;QAElD,MAAMC,GAAG,GAAG,MAAMH,OAAO,CAACI,IAAI,EAAE,AAAC;QAEjC,IAAIlB,IAAI,AAAK,AAAC;QACd,IAAI;YACFA,IAAI,GAAGlC,IAAI,CAACqD,KAAK,CAACF,GAAG,CAAC,CAAC;QACzB,EAAE,OAAOG,KAAK,EAAO;YACnBpG,KAAK,CAACiG,GAAG,CAAC,CAAC;YAEX,4EAA4E;YAC5E,IAAI,CAACH,OAAO,CAACO,EAAE,IAAIJ,GAAG,CAAC9C,UAAU,CAAC,iBAAiB,CAAC,EAAE;gBACpD,MAAM,IAAI3D,gBAAgB,CACxB,CAAC,2EAA2E,CAAC,EAC7EyG,GAAG,EACHH,OAAO,CAACQ,MAAM,CACf,CAAC;YACJ,CAAC;YAEDC,IAAG,IAAA,CAACH,KAAK,CACP,wMAAwM,CACzM,CAAC;YACF,MAAMA,KAAK,CAAC;QACd,CAAC;QAED,mEAAmE;QACnE,IAAI,WAAW,IAAIpB,IAAI,IAAIzB,KAAK,CAACiD,OAAO,CAACxB,IAAI,CAACyB,SAAS,CAAC,EAAE;YACxD,OAAOzB,IAAI,CAAC;QACd,CAAC;QAED,IAAIA,IAAI,IAAI,IAAI,IAAI,CAACA,IAAI,CAAC0B,MAAM,KAAI1B,CAAAA,GAAS,GAATA,IAAI,CAAC2B,IAAI,SAAO,GAAhB3B,KAAAA,CAAgB,GAAhBA,GAAS,CAAE4B,KAAK,YAAY,CAAA,CAAC,EAAE;YACjE,IAAI;YACJ,2BAA2B;YAC3B,gBAAgB;YAChB,2jBAA2jB;YAC3jB,aAAa;YACb,8OAA8O;YAC9O,4WAA4W;YAC5W,aAAa;YACb,4DAA4D;YAC5D,sJAAsJ;YACtJ,8KAA8K;YAC9K,mGAAmG;YACnG,mHAAmH;YACnH,sIAAsI;YACtI,gHAAgH;YAChH,IAAI;YACJ,8CAA8C;YAC9C,MAAM,IAAIC,KAAK,CAAC7B,IAAI,CAACnF,OAAO,CAAC,CAAC;QAChC,CAAC;QAED,MAAM,IAAIgH,KAAK,CACb,+EAA+E,GAAG7B,IAAI,CACvF,CAAC;IACJ;UAEc8B,kBAAkB,CAACC,QAAgB,EAAE;QACjD,MAAM,EAAE9C,IAAI,CAAA,EAAEC,MAAM,CAAA,EAAEC,WAAW,CAAA,EAAEc,OAAO,CAAA,EAAE7D,UAAU,CAAA,EAAE8D,WAAW,CAAA,EAAE,GACnE,IAAI,CAAC7D,oBAAoB,AAAC;QAC5BC,IAAAA,OAAM,EAAA,QAAA,EACJ2C,IAAI,IAAI,IAAI,IACVC,MAAM,IAAI,IAAI,IACdC,WAAW,IAAI,IAAI,IACnBc,OAAO,IAAI,IAAI,IACf7D,UAAU,IAAI,IAAI,IAClB8D,WAAW,IAAI,IAAI,EACrB,+DAA+D,CAChE,CAAC;QACF,MAAMC,QAAQ,GAAG,KAAK,AAAC;QAEvB,MAAMC,oBAAoB,GAAGC,IAAAA,aAAmB,oBAAA,EAAC;YAC/CF,QAAQ;YACRlB,IAAI;YACJqB,WAAW,EAAE,QAAQ;YACrBP,cAAc,EAAEU,IAAAA,mBAAqB,sBAAA,EAAC,IAAI,CAAC/D,WAAW,EAAE;gBAAEyD,QAAQ;aAAE,CAAC;YACrEO,IAAI,EAAEC,IAAAA,aAAwB,yBAAA,EAAC,IAAI,CAACjE,WAAW,CAAC;YAChDuD,OAAO;YACPd,WAAW;YACXe,WAAW;YACX9D,UAAU;YACVwE,QAAQ,EAAE,KAAK;SAChB,CAAC,AAAC;QAEH,MAAMoB,gBAAgB,GAAG,UAA6B;YACpD,MAAM,EAAE1C,gBAAgB,CAAA,EAAE,GAAG,MAAM,IAAI,CAACG,aAAa,CAEnD,4BAA4B,EAAE;gBAC9BP,MAAM,EAAE,KAAK;gBACbD,IAAI;gBACJE,WAAW;gBACXgB,QAAQ;aACT,CAAC,AAAC;YAEH,MAAM8B,QAAQ,GAAG,IAAIpC,GAAG,CAACkC,QAAQ,EAAE,IAAI,CAAC1C,eAAe,EAAE,CAAE,AAAC;YAC5D,OAAO,MAAMC,gBAAgB,CAAC2C,QAAQ,CAAC,CAAC;QAC1C,CAAC,AAAC;QAEF,MAAM,CAAC,EAAER,SAAS,EAAES,SAAS,CAAA,EAAE,EAAEC,UAAU,CAAC,GAAG,MAAMC,OAAO,CAACC,GAAG,CAAC;YAC/D,IAAI,CAACvC,uBAAuB,EAAE;YAC9BkC,gBAAgB,EAAE;SACnB,CAAC,AAAC;QACH,MAAMM,OAAO,GAAGC,IAAAA,cAAuB,wBAAA,EAAC;YACtCpD,WAAW;YACX+C,SAAS;YACTM,QAAQ,EAAEL,UAAU;YACpBM,YAAY,EAAErC,oBAAoB;YAClCH,OAAO;SACR,CAAC,AAAC;QACH,OAAO;YACLqC,OAAO;YACPJ,SAAS;SACV,CAAC;IACJ;IAEA,kCAAkC;IAClC,AAAQ7F,oBAAoB,GAA8B,EAAE,CAAC;UAEvDoD,aAAa,CACjBiD,QAAgB,EAChBC,eAA0C,GAAG,EAAE,EACnC;QACZ,MAAM,EAAE1C,OAAO,CAAA,EAAE7D,UAAU,CAAA,EAAE+C,WAAW,CAAA,EAAE,GAAG,IAAI,CAAC9C,oBAAoB,AAAC;QACvEC,IAAAA,OAAM,EAAA,QAAA,EACJ2D,OAAO,IAAI,IAAI,IAAI7D,UAAU,IAAI,IAAI,IAAI+C,WAAW,IAAI,IAAI,EAC5D,0DAA0D,CAC3D,CAAC;QAEF,OAAO,CACL,MAAMyD,IAAAA,yBAAgC,iCAAA,EACpC,IAAI,CAAClG,WAAW,EAChB,IAAI,CAAC2C,eAAe,EAAE,EACtB;YACE,kCAAkC;YAClCiB,WAAW,EAAE,MAAM;YACnBH,QAAQ,EAAE,KAAK;YACflB,IAAI,EAAE,aAAa;YACnB2B,QAAQ,EAAE,KAAK;YAEf,GAAG,IAAI,CAACvE,oBAAoB;YAC5B4D,OAAO;YACP7D,UAAU;YACV+C,WAAW;YACX,GAAGwD,eAAe;SACnB,EACDD,QAAQ,CACT,CACF,CAACG,EAAE,CAAC;IACP;UAEMC,qBAAqB,CACzBJ,QAAgB,EAChBC,eAA0C,GAAG,EAAE,EACH;QAC5C,MAAM,EAAE1C,OAAO,CAAA,EAAE7D,UAAU,CAAA,EAAE+C,WAAW,CAAA,EAAE,GAAG,IAAI,CAAC9C,oBAAoB,AAAC;QACvEC,IAAAA,OAAM,EAAA,QAAA,EACJ2D,OAAO,IAAI,IAAI,IAAI7D,UAAU,IAAI,IAAI,IAAI+C,WAAW,IAAI,IAAI,EAC5D,0DAA0D,CAC3D,CAAC;QAEF,OAAO,MAAM4D,IAAAA,yBAA4B,6BAAA,EAAC,IAAI,CAACrG,WAAW,EAAE,IAAI,CAAC2C,eAAe,EAAE,EAAGqD,QAAQ,EAAE;YAC7F,kCAAkC;YAClCpC,WAAW,EAAE,MAAM;YACnBH,QAAQ,EAAE,KAAK;YACflB,IAAI,EAAE,aAAa;YACnB2B,QAAQ,EAAE,KAAK;YAEf,GAAG,IAAI,CAACvE,oBAAoB;YAC5B4D,OAAO;YACP7D,UAAU;YACV+C,WAAW;YACX,GAAGwD,eAAe;SACnB,CAAC,CAAC;IACL;UAEMK,yBAAyB,GAAG;QAChC,IAAI,CAAC,IAAI,CAACC,QAAQ,EAAE;YAClB,MAAM,IAAIpB,KAAK,CACb,+EAA+E,CAChF,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,IAAI,CAACxG,KAAK,EAAE;YACf,4FAA4F;YAC5F,WAAW;YACXL,KAAK,CAAC,oFAAoF,CAAC,CAAC;YAC5F,OAAO;QACT,CAAC;QAED,MAAMkI,QAAQ,GAAGC,IAAU,EAAA,CACxBC,QAAQ,CAACxH,OAAO,CAACC,GAAG,CAACwH,QAAQ,CAAC,CAC9B5F,GAAG,CAAC,CAAC6F,QAAQ,GAAK9G,KAAI,EAAA,QAAA,CAACC,IAAI,CAAC,IAAI,CAACC,WAAW,EAAE4G,QAAQ,CAAC,CAAC,AAAC;QAE5DC,IAAAA,oCAAkB,mBAAA,EAChB;YACElI,KAAK,EAAE,IAAI,CAACA,KAAK;YACjBmI,MAAM,EAAE,IAAI,CAACP,QAAQ,CAACO,MAAM;SAC7B,EACDN,QAAQ,EACR,IAAM;YACJlI,KAAK,CAAC,oCAAoC,CAAC,CAAC;YAC5C,0CAA0C;YAC1CmI,IAAU,EAAA,CAACM,IAAI,CAAC,IAAI,CAAC/G,WAAW,EAAE;gBAAEgH,KAAK,EAAE,IAAI;aAAE,CAAC,CAAC;QACrD,CAAC,CACF,CAAC;IACJ;IAEAC,kBAAkB,GAAG;QACnB,OAAO,IAAI,CAACtH,oBAAoB,CAAC;IACnC;UAEgBuH,wBAAwB,CACtCpI,OAA4B,EACA;YAM6BqI,GAAO;QALhErI,OAAO,CAACC,IAAI,GAAG,MAAM,IAAI,CAACF,gBAAgB,CAACC,OAAO,CAAC,CAAC;QACpD,IAAI,CAACsI,UAAU,GAAG,IAAI,CAACC,aAAa,CAACvI,OAAO,CAAC,CAAC;QAE9C,MAAMwI,MAAM,GAAGC,IAAAA,OAAS,EAAA,UAAA,EAAC,IAAI,CAACvH,WAAW,EAAE;YAAEwH,yBAAyB,EAAE,IAAI;SAAE,CAAC,AAAC;QAChF,MAAM,EAAEL,GAAG,CAAA,EAAE,GAAGG,MAAM,AAAC;YACkCH,IAAe;QAAxE,MAAMM,kBAAkB,GAAG;YAAC,QAAQ;YAAE,QAAQ;SAAC,CAACC,QAAQ,CAACP,CAAAA,IAAe,GAAfA,CAAAA,GAAO,GAAPA,GAAG,CAACQ,GAAG,SAAQ,GAAfR,KAAAA,CAAe,GAAfA,GAAO,CAAES,MAAM,YAAfT,IAAe,GAAI,EAAE,CAAC,AAAC;QAChF,MAAM5D,OAAO,GAAGsE,IAAAA,aAAwB,yBAAA,EAACV,GAAG,CAAC,AAAC;YACQrI,KAAY;QAAlE,MAAM0E,WAAW,GAAGsE,IAAAA,aAA4B,6BAAA,EAACX,GAAG,EAAErI,CAAAA,KAAY,GAAZA,OAAO,CAACyD,IAAI,YAAZzD,KAAY,GAAI,aAAa,EAAE,KAAK,CAAC,AAAC;QAC5F,MAAMY,UAAU,GAAGqI,IAAAA,OAAsC,uCAAA,EAAC,IAAI,CAAC/H,WAAW,EAAEmH,GAAG,CAAC,AAAC;QACjF,MAAMtH,MAAM,GAAGC,KAAI,EAAA,QAAA,CAACC,IAAI,CAAC,IAAI,CAACC,WAAW,EAAEN,UAAU,CAAC,AAAC;YAC1CZ,MAAY;QAAzB,MAAMyD,IAAI,GAAGzD,CAAAA,MAAY,GAAZA,OAAO,CAACyD,IAAI,YAAZzD,MAAY,GAAI,aAAa,AAAC;QAE3C,IAAI,CAACa,oBAAoB,GAAG;YAC1B8C,WAAW,EAAE,CAAC,CAAC3D,OAAO,CAAC2D,WAAW;YAClCc,OAAO;YACPhB,IAAI;YACJ7C,UAAU;YACV8C,MAAM,EAAE1D,OAAO,CAAC0D,MAAM;YACtBgB,WAAW;SAEZ,CAAC;QAEF,MAAMwE,aAAa,GAAG;YACpBjJ,IAAI,EAAED,OAAO,CAACC,IAAI;YAClBkJ,UAAU,EAAEnJ,OAAO,CAACmJ,UAAU;YAC9BC,UAAU,EAAEpJ,OAAO,CAACqJ,cAAc;SACnC,AAAC;QAEF,8BAA8B;QAC9BjJ,OAAO,CAACC,GAAG,CAACiJ,sBAAsB,GAAG,CAAC,iBAAiB,EAAEtJ,OAAO,CAACC,IAAI,CAAC,CAAC,CAAC;QAExE,MAAM,EAAEJ,KAAK,CAAA,EAAEmI,MAAM,CAAA,EAAEuB,UAAU,CAAA,EAAEC,aAAa,CAAA,EAAE,GAAG,MAAMC,IAAAA,iBAAqB,sBAAA,EAC9E,IAAI,EACJP,aAAa,EACb;YACEvF,WAAW,EAAE,CAAC,CAAC3D,OAAO,CAAC2D,WAAW;SACnC,CACF,AAAC;QAEF,MAAM+F,kBAAkB,GAAG,MAAM,IAAI,CAACC,0BAA0B,CAAC3J,OAAO,CAAC,AAAC;QAE1E,8EAA8E;QAC9E4J,IAAAA,UAAiB,kBAAA,EAACL,UAAU,EAAE,IAAIM,kCAAiC,kCAAA,EAAE,CAACC,UAAU,EAAE,CAAC,CAAC;QAEpF,wEAAwE;QACxE,yEAAyE;QACzE,0EAA0E;QAC1E,2EAA2E;QAC3E,gDAAgD;QAChD,4CAA4C;QAC5CF,IAAAA,UAAiB,kBAAA,EAACL,UAAU,EAAEG,kBAAkB,CAACI,UAAU,EAAE,CAAC,CAAC;YAKnD9J,OAAuB;QAHnCuJ,UAAU,CAACQ,GAAG,CACZ,IAAIC,2BAA0B,2BAAA,CAAC,IAAI,CAAC9I,WAAW,EAAE;YAC/C,0CAA0C;YAC1C+I,MAAM,EAAEjK,CAAAA,OAAuB,GAAvBA,OAAO,CAACyG,QAAQ,CAACwD,MAAM,YAAvBjK,OAAuB,GAAI,IAAI;SACxC,CAAC,CAAC8J,UAAU,EAAE,CAChB,CAAC;QACFP,UAAU,CAACQ,GAAG,CAAC,IAAIG,4BAA2B,4BAAA,CAAC,IAAI,CAAChJ,WAAW,CAAC,CAAC4I,UAAU,EAAE,CAAC,CAAC;QAC/EP,UAAU,CAACQ,GAAG,CACZ,IAAII,yBAAwB,yBAAA,CAAC,IAAI,CAACjJ,WAAW,EAAE,IAAI,CAACkJ,qBAAqB,CAAC,CAACN,UAAU,EAAE,CACxF,CAAC;QAEF,MAAMO,kBAAkB,GAAG,IAAIC,0BAAyB,0BAAA,CAAC,IAAI,CAACpJ,WAAW,EAAE;YACzEqJ,UAAU,EAAErL,kBAAkB,CAAC,IAAI,CAACgC,WAAW,CAAC;YAChDsJ,WAAW,EAAE,CAAC,EAAEC,OAAO,CAAA,EAAE,GAAK;gBAC5B,IAAIA,OAAO,KAAK,QAAQ,EAAE;wBACjB,GAAe;oBAAtB,OAAO,CAAA,GAAe,GAAf,IAAI,CAACnC,UAAU,SAAuB,GAAtC,KAAA,CAAsC,GAAtC,GAAe,CAAEoC,qBAAqB,EAAE,CAAC;gBAClD,OAAO;wBACE,IAAe;oBAAtB,OAAO,CAAA,IAAe,GAAf,IAAI,CAACpC,UAAU,SAAc,GAA7B,KAAA,CAA6B,GAA7B,IAAe,CAAEqC,YAAY,CAAC;wBACnCV,MAAM,EAAE,KAAK;qBACd,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;SACF,CAAC,AAAC;QACHV,UAAU,CAACQ,GAAG,CAACM,kBAAkB,CAACP,UAAU,EAAE,CAAC,CAAC;QAEhDP,UAAU,CAACQ,GAAG,CAAC,IAAIa,qBAAoB,qBAAA,CAAC,IAAI,CAAC1J,WAAW,CAAC,CAAC4I,UAAU,EAAE,CAAC,CAAC;QAExE,mFAAmF;QACnF,IAAI,IAAI,CAACe,cAAc,EAAE,EAAE;YACzB,oHAAoH;YACpHtB,UAAU,CAACQ,GAAG,CAAC,IAAIe,sBAAqB,sBAAA,CAAC,IAAI,CAAC5J,WAAW,CAAC,CAAC4I,UAAU,EAAE,CAAC,CAAC;YAEzE,0GAA0G;YAC1GP,UAAU,CAACQ,GAAG,CAAC,IAAIgB,kBAAiB,kBAAA,CAAC,IAAI,CAAC7J,WAAW,CAAC,CAAC4I,UAAU,EAAE,CAAC,CAAC;YAErE,IAAInB,kBAAkB,EAAE;gBACtBY,UAAU,CAACQ,GAAG,CACZiB,IAAAA,4BAA4B,6BAAA,EAAC,IAAI,CAAC9J,WAAW,EAAE;oBAC7CH,MAAM;oBACNH,UAAU;oBACV4H,MAAM;oBACN5G,cAAc,EAAE,CAACqJ,gBAAgB,GAAK,IAAI,CAACC,iBAAiB,CAACD,gBAAgB,CAAC;oBAC9E3E,kBAAkB,EAAE,CAACC,QAAQ,GAAK;wBAChC,OAAO,IAAI,CAACD,kBAAkB,CAACC,QAAQ,CAAC,CAAC;oBAC3C,CAAC;iBACF,CAAC,CACH,CAAC;gBAEF4E,IAAAA,oCAAqB,sBAAA,EACnB;oBACEtL,KAAK;oBACLmI,MAAM;iBACP,EACD,CAACoD,MAAM,GAAK;wBACN/C,GAAO;oBAAX,IAAIA,CAAAA,CAAAA,GAAO,GAAPA,GAAG,CAACQ,GAAG,SAAQ,GAAfR,KAAAA,CAAe,GAAfA,GAAO,CAAES,MAAM,CAAA,KAAK,QAAQ,EAAE;wBAChC,+FAA+F;wBAC/F,+FAA+F;wBAC/F,sGAAsG;wBACtG,yGAAyG;wBACzG,gCAAgC;wBAChC,IAAI,CAACuC,uBAAuB,EAAE,CAAC;oBACjC,OAAO,IAAI,CAACC,IAAAA,OAAuB,wBAAA,GAAE,EAAE;wBACrC,KAAK,MAAMC,KAAK,IAAIH,MAAM,CAAE;gCAExB,gHAAgH;4BAChH,6CAA6C;4BAC7CG,IAAc;4BAHhB,IAGEA,CAAAA,CAAAA,IAAc,GAAdA,KAAK,CAACC,QAAQ,SAAM,GAApBD,KAAAA,CAAoB,GAApBA,IAAc,CAAEpF,IAAI,CAAA,KAAK,GAAG,IAC5B,gGAAgG;4BAChGoF,KAAK,CAACrE,QAAQ,CAACvE,UAAU,CAAC5B,MAAM,CAAC,IACjC0K,IAAAA,OAAoB,qBAAA,EAACF,KAAK,CAACrE,QAAQ,CAAC,EACpC;gCACAwE,IAAAA,OAAoB,qBAAA,GAAE,CAAC;4BACzB,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC,CACF,CAAC;YACJ,OAAO;gBACL,8CAA8C;gBAC9CnC,UAAU,CAACQ,GAAG,CACZ,IAAI4B,0BAAyB,0BAAA,CAACjC,kBAAkB,CAACI,UAAU,EAAE,CAAC8B,QAAQ,CAAC,CAAC9B,UAAU,EAAE,CACrF,CAAC;YACJ,CAAC;QACH,CAAC;QACD,qEAAqE;QACrE,MAAM+B,aAAa,GAAG7D,MAAM,CAAC8D,KAAK,CAACC,IAAI,CAAC/D,MAAM,CAAC,AAAC;QAEhDA,MAAM,CAAC8D,KAAK,GAAG,CAACE,QAAgC,GAAK;YACnD,OAAOH,aAAa,CAAC,CAACI,GAAW,GAAK;gBACpC,IAAI,CAACxE,QAAQ,GAAG,IAAI,CAAC;gBACrB,IAAI,CAAC5H,KAAK,GAAG,IAAI,CAAC;gBAClBmM,QAAQ,QAAO,GAAfA,KAAAA,CAAe,GAAfA,QAAQ,CAAGC,GAAG,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,IAAI,CAACpM,KAAK,GAAGA,KAAK,CAAC;QACnB,OAAO;YACLmI,MAAM;YACNvB,QAAQ,EAAE;gBACR,mDAAmD;gBACnDxG,IAAI,EAAED,OAAO,CAACC,IAAI;gBAClB,kCAAkC;gBAClCiM,IAAI,EAAE,WAAW;gBACjB,iDAAiD;gBACjDtI,GAAG,EAAE,CAAC,iBAAiB,EAAE5D,OAAO,CAACC,IAAI,CAAC,CAAC;gBACvCkM,QAAQ,EAAE,MAAM;aACjB;YACD5C,UAAU;YACVC,aAAa;SACd,CAAC;IACJ;UAEa4C,sBAAsB,GAAqB;QACtD,IAAI,CAAC,IAAI,CAAC3E,QAAQ,EAAE;YAClB,MAAM,IAAIpB,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAC1E,CAAC;QAED,OAAO,IAAIO,OAAO,CAAU,CAACyF,OAAO,GAAK;YACvC,IAAI,CAAC,IAAI,CAACxM,KAAK,EAAE;gBACf,4FAA4F;gBAC5F,4FAA4F;gBAC5F,mCAAmC;gBACnCL,KAAK,CAAC,oEAAoE,CAAC,CAAC;gBAC5E,OAAO6M,OAAO,CAAC,KAAK,CAAC,CAAC;YACxB,CAAC;YAED,MAAMC,GAAG,GAAGC,IAAAA,0BAAyB,0BAAA,EAAC;gBACpCrL,WAAW,EAAE,IAAI,CAACA,WAAW;gBAC7B8G,MAAM,EAAE,IAAI,CAACP,QAAQ,CAAEO,MAAM;gBAC7BnI,KAAK,EAAE,IAAI,CAACA,KAAK;gBACjB2M,QAAQ,EAAE,IAAI;gBACdC,QAAQ,EAAE,IAAI;gBACdC,UAAU,EAAE;oBAAC,QAAQ;oBAAE,KAAK;iBAAC;gBAC7BV,QAAQ,EAAE,UAAY;oBACpB,iGAAiG;oBACjGM,GAAG,EAAE,CAAC;oBACN,MAAM,EAAEK,6BAA6B,CAAA,EAAE,GAAG,MAAM,iEAAA,OAAM,CACpD,0DAA0D,GAC3D,AAAC;oBAEF,IAAI;wBACF,MAAMC,GAAG,GAAG,IAAID,6BAA6B,CAAC,IAAI,CAACzL,WAAW,CAAC,AAAC;wBAChE,MAAM0L,GAAG,CAACC,cAAc,EAAE,CAAC;wBAC3BR,OAAO,CAAC,IAAI,CAAC,CAAC;oBAChB,EAAE,OAAOzG,KAAK,EAAO;wBACnB,iEAAiE;wBACjE,wCAAwC;wBACxCG,IAAG,IAAA,CAAC+G,GAAG,EAAE,CAAC;wBACV/G,IAAG,IAAA,CAACH,KAAK,CACPmH,MAAK,EAAA,QAAA,CAACC,GAAG,CAAC,gGAAgG,CAAC,CAC5G,CAAC;wBACFjH,IAAG,IAAA,CAACkH,SAAS,CAACrH,KAAK,CAAC,CAAC;wBACrByG,OAAO,CAAC,KAAK,CAAC,CAAC;oBACjB,CAAC;gBACH,CAAC;aACF,CAAC,AAAC;QACL,CAAC,CAAC,CAAC;IACL;UAEaa,uBAAuB,GAAG;YAE3B,GAAa;QADvB,OAAOC,IAAAA,8BAAkC,mCAAA,EAAC;YACxCnF,MAAM,EAAE,CAAA,GAAa,GAAb,IAAI,CAACP,QAAQ,SAAQ,GAArB,KAAA,CAAqB,GAArB,GAAa,CAAEO,MAAM;YAC7BnI,KAAK,EAAE,IAAI,CAACA,KAAK;YACjBqB,WAAW,EAAE,IAAI,CAACA,WAAW;SAC9B,CAAC,CAAC;IACL;IAEUkM,kBAAkB,GAAa;QACvC,OAAO;YAAC,mBAAmB;YAAE,qBAAqB;YAAE,oBAAoB;SAAC,CAAC;IAC5E;IAEA,AAAQC,sBAAsB,GAAG,IAAI/L,GAAG,EAGrC,CAAC;IAEJ,aAAa;IAEb,gGAAgG;UAClFM,cAAc,CAC1BsF,QAAgB,EAC0D;QAC1E,IAAI,IAAI,CAACmG,sBAAsB,CAACC,GAAG,CAACpG,QAAQ,CAAC,EAAE;YAC7C,OAAO,IAAI,CAACmG,sBAAsB,CAACE,GAAG,CAACrG,QAAQ,CAAC,CAAC;QACnD,CAAC;QACD,MAAMsG,WAAW,GAAG,UAAY;YAC9B,IAAI;gBACFhO,KAAK,CAAC,mBAAmB,EAAE,IAAI,CAACqB,oBAAoB,CAACD,UAAU,EAAEsG,QAAQ,CAAC,CAAC;gBAC3E,OAAO,MAAM,IAAI,CAACI,qBAAqB,CAACJ,QAAQ,CAAC,CAAC;YACpD,EAAE,OAAOtB,KAAK,EAAO;gBACnB,IAAIA,KAAK,YAAYS,KAAK,EAAE;oBAC1B,MAAMoH,IAAAA,oBAAkB,mBAAA,EAAC;wBAAE7H,KAAK;wBAAE1E,WAAW,EAAE,IAAI,CAACA,WAAW;qBAAE,CAAC,CAAC;gBACrE,CAAC;gBACD,MAAM0E,KAAK,CAAC;YACd,CAAC,QAAS;YACR,2CAA2C;YAC7C,CAAC;QACH,CAAC,AAAC;QACF,MAAMrE,KAAK,GAAGiM,WAAW,EAAE,AAAC;QAE5B,IAAI,CAACH,sBAAsB,CAAChL,GAAG,CAAC6E,QAAQ,EAAE3F,KAAK,CAAC,CAAC;QACjD,OAAOA,KAAK,CAAC;IACf;UAEc2J,iBAAiB,CAC7BhE,QAAgB,EACqC;QACrD,sCAAsC;QACtC,IAAI;YACF,MAAMwG,QAAQ,GAAG,MAAM,IAAI,CAAC9L,cAAc,CAACsF,QAAQ,CAAC,AAAC;YAErD,IAAI,CAACwG,CAAAA,QAAQ,QAAK,GAAbA,KAAAA,CAAa,GAAbA,QAAQ,CAAE1L,GAAG,CAAA,EAAE;gBAClB,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO2L,IAAAA,yBAAmB,oBAAA,EAAC,IAAI,CAACzM,WAAW,EAAEwM,QAAQ,CAAC1L,GAAG,EAAE0L,QAAQ,CAACE,QAAQ,CAAC,CAAC;QAChF,EAAE,OAAOhI,KAAK,EAAE;YACd,4EAA4E;YAC5E,IAAIA,KAAK,YAAYS,KAAK,EAAE;gBAC1B,IAAI;oBACF,MAAMwH,eAAe,GAAG,MAAMC,IAAAA,oBAAwB,yBAAA,EAAC;wBACrDlI,KAAK;wBACL1E,WAAW,EAAE,IAAI,CAACA,WAAW;wBAC7BN,UAAU,EAAE,IAAI,CAACuH,kBAAkB,EAAE,CAACvH,UAAU;qBACjD,CAAC,AAAC;oBAEH,OAAO,IAAImN,QAAQ,CAACF,eAAe,EAAE;wBACnC/H,MAAM,EAAE,GAAG;wBACXkI,OAAO,EAAE;4BACP,cAAc,EAAE,WAAW;yBAC5B;qBACF,CAAC,CAAC;gBACL,EAAE,OAAOC,aAAa,EAAE;oBACtBzO,KAAK,CAAC,+DAA+D,EAAEyO,aAAa,CAAC,CAAC;oBACtF,MAAMrI,KAAK,CAAC;gBACd,CAAC;YACH,OAAO;gBACL,MAAMA,KAAK,CAAC;YACd,CAAC;QACH,CAAC;IACH;IAEQyF,uBAAuB,GAAG;QAChC,IAAI,CAACgC,sBAAsB,CAACa,KAAK,EAAE,CAAC;IACtC;CACD;AAEM,SAAShP,kBAAkB,CAACgC,WAAmB,EAAmB;IACvE,OAAO,OAAO,EAAEuJ,OAAO,CAAA,EAAE,GAAK;QAC5B,IAAIA,OAAO,KAAK,MAAM,EAAE,OAAO;QAC/B,MAAM,EAAEpC,GAAG,CAAA,EAAE,GAAGI,IAAAA,OAAS,EAAA,UAAA,EAACvH,WAAW,CAAC,AAAC;QACvC,MAAMiN,IAAAA,UAAa,cAAA,EAAC,0BAA0B,EAAE;YAC9CrI,MAAM,EAAE,SAAS;YACjB,GAAGsI,IAAAA,uBAAsB,QAAA,EAAClN,WAAW,EAAEmH,GAAG,CAAC;SAC5C,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC"}
@@ -2,34 +2,43 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
- exports.formatUsingNodeStandardLibraryError = formatUsingNodeStandardLibraryError;
6
- exports.isNodeStdLibraryModule = isNodeStdLibraryModule;
7
- exports.stripMetroInfo = stripMetroInfo;
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: all[name]
9
+ });
10
+ }
11
+ _export(exports, {
12
+ MetroTerminalReporter: ()=>MetroTerminalReporter,
13
+ formatUsingNodeStandardLibraryError: ()=>formatUsingNodeStandardLibraryError,
14
+ isNodeStdLibraryModule: ()=>isNodeStdLibraryModule,
15
+ stripMetroInfo: ()=>stripMetroInfo
16
+ });
8
17
  function _chalk() {
9
- const data = _interopRequireDefault(require("chalk"));
18
+ const data = /*#__PURE__*/ _interopRequireDefault(require("chalk"));
10
19
  _chalk = function() {
11
20
  return data;
12
21
  };
13
22
  return data;
14
23
  }
15
24
  function _path() {
16
- const data = _interopRequireDefault(require("path"));
25
+ const data = /*#__PURE__*/ _interopRequireDefault(require("path"));
17
26
  _path = function() {
18
27
  return data;
19
28
  };
20
29
  return data;
21
30
  }
22
- var _terminalReporter = require("./TerminalReporter");
23
- var _externals = require("./externals");
24
- var _link = require("../../../utils/link");
31
+ const _terminalReporter = require("./TerminalReporter");
32
+ const _externals = require("./externals");
33
+ const _link = require("../../../utils/link");
25
34
  function _interopRequireDefault(obj) {
26
35
  return obj && obj.__esModule ? obj : {
27
36
  default: obj
28
37
  };
29
38
  }
30
39
  const MAX_PROGRESS_BAR_CHAR_WIDTH = 16;
31
- const DARK_BLOCK_CHAR = "\u2593";
32
- const LIGHT_BLOCK_CHAR = "\u2591";
40
+ const DARK_BLOCK_CHAR = "";
41
+ const LIGHT_BLOCK_CHAR = "";
33
42
  class MetroTerminalReporter extends _terminalReporter.TerminalReporter {
34
43
  constructor(projectRoot, terminal){
35
44
  super(terminal);
@@ -73,7 +82,7 @@ class MetroTerminalReporter extends _terminalReporter.TerminalReporter {
73
82
  return "bundleDetails" in event && ((ref = event.bundleDetails) == null ? void 0 : ref.bundleType) === "map";
74
83
  }
75
84
  /** Print the cache clear message. */ transformCacheReset() {
76
- (0, _terminalReporter).logWarning(this.terminal, _chalk().default`Bundler cache is empty, rebuilding {dim (this may take a minute)}`);
85
+ (0, _terminalReporter.logWarning)(this.terminal, (0, _chalk().default)`Bundler cache is empty, rebuilding {dim (this may take a minute)}`);
77
86
  }
78
87
  /** One of the first logs that will be printed */ dependencyGraphLoading(hasReducedPerformance) {
79
88
  // this.terminal.log('Dependency graph is loading...');
@@ -101,7 +110,6 @@ class MetroTerminalReporter extends _terminalReporter.TerminalReporter {
101
110
  return super._logBundlingError(error);
102
111
  }
103
112
  }
104
- exports.MetroTerminalReporter = MetroTerminalReporter;
105
113
  function formatUsingNodeStandardLibraryError(projectRoot, error) {
106
114
  if (!error.message) {
107
115
  return null;
@@ -117,13 +125,13 @@ function formatUsingNodeStandardLibraryError(projectRoot, error) {
117
125
  return [
118
126
  `The package at "${_chalk().default.bold(relativePath)}" attempted to import the Node standard library module "${_chalk().default.bold(targetModuleName)}".`,
119
127
  `It failed because the native React runtime does not include the Node standard library.`,
120
- (0, _link).learnMore(DOCS_PAGE_URL),
128
+ (0, _link.learnMore)(DOCS_PAGE_URL),
121
129
  ].join("\n");
122
130
  } else {
123
131
  return [
124
132
  `You attempted to import the Node standard library module "${_chalk().default.bold(targetModuleName)}" from "${_chalk().default.bold(relativePath)}".`,
125
133
  `It failed because the native React runtime does not include the Node standard library.`,
126
- (0, _link).learnMore(DOCS_PAGE_URL),
134
+ (0, _link.learnMore)(DOCS_PAGE_URL),
127
135
  ].join("\n");
128
136
  }
129
137
  }
@@ -145,8 +153,7 @@ function stripMetroInfo(errorMessage) {
145
153
  return null;
146
154
  }
147
155
  const lines = errorMessage.split("\n");
148
- const index = lines.findIndex((line)=>line.includes("4. Remove the cache")
149
- );
156
+ const index = lines.findIndex((line)=>line.includes("4. Remove the cache"));
150
157
  if (index === -1) {
151
158
  return null;
152
159
  }
@@ -174,7 +181,7 @@ function stripMetroInfo(errorMessage) {
174
181
  // Expo CLI will pass `customTransformOptions.environment = 'node'` when bundling for the server.
175
182
  const env = (ref1 = bundleDetails == null ? void 0 : (ref = bundleDetails.customTransformOptions) == null ? void 0 : ref.environment) != null ? ref1 : null;
176
183
  if (env === "node") {
177
- return _chalk().default.bold("\u03BB") + " ";
184
+ return _chalk().default.bold("λ") + " ";
178
185
  } else if (env === "react-server") {
179
186
  return _chalk().default.bold(`RSC(${getPlatformTagForBuildDetails(bundleDetails).trim()})`) + " ";
180
187
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/start/server/metro/MetroTerminalReporter.ts"],"sourcesContent":["import chalk from 'chalk';\nimport { Terminal } from 'metro-core';\nimport path from 'path';\n\nimport { logWarning, TerminalReporter } from './TerminalReporter';\nimport {\n BuildPhase,\n BundleDetails,\n BundleProgress,\n SnippetError,\n TerminalReportableEvent,\n} from './TerminalReporter.types';\nimport { NODE_STDLIB_MODULES } from './externals';\nimport { learnMore } from '../../../utils/link';\n\nconst MAX_PROGRESS_BAR_CHAR_WIDTH = 16;\nconst DARK_BLOCK_CHAR = '\\u2593';\nconst LIGHT_BLOCK_CHAR = '\\u2591';\n/**\n * Extends the default Metro logger and adds some additional features.\n * Also removes the giant Metro logo from the output.\n */\nexport class MetroTerminalReporter extends TerminalReporter {\n constructor(\n public projectRoot: string,\n terminal: Terminal\n ) {\n super(terminal);\n }\n\n // Used for testing\n _getElapsedTime(startTime: number): number {\n return Date.now() - startTime;\n }\n /**\n * Extends the bundle progress to include the current platform that we're bundling.\n *\n * @returns `iOS path/to/bundle.js ▓▓▓▓▓░░░░░░░░░░░ 36.6% (4790/7922)`\n */\n _getBundleStatusMessage(progress: BundleProgress, phase: BuildPhase): string {\n const env = getEnvironmentForBuildDetails(progress.bundleDetails);\n const platform = env || getPlatformTagForBuildDetails(progress.bundleDetails);\n const inProgress = phase === 'in_progress';\n\n const localPath = progress.bundleDetails.entryFile.startsWith(path.sep)\n ? path.relative(this.projectRoot, progress.bundleDetails.entryFile)\n : progress.bundleDetails.entryFile;\n\n if (!inProgress) {\n const status = phase === 'done' ? `Bundled ` : `Bundling failed `;\n const color = phase === 'done' ? chalk.green : chalk.red;\n\n const startTime = this._bundleTimers.get(progress.bundleDetails.buildID!);\n\n const time = startTime != null ? chalk.dim(this._getElapsedTime(startTime) + 'ms') : '';\n // iOS Bundled 150ms\n const plural = progress.totalFileCount === 1 ? '' : 's';\n return (\n color(platform + status) +\n time +\n chalk.reset.dim(` ${localPath} (${progress.totalFileCount} module${plural})`)\n );\n }\n\n const filledBar = Math.floor(progress.ratio * MAX_PROGRESS_BAR_CHAR_WIDTH);\n\n const _progress = inProgress\n ? chalk.green.bgGreen(DARK_BLOCK_CHAR.repeat(filledBar)) +\n chalk.bgWhite.white(LIGHT_BLOCK_CHAR.repeat(MAX_PROGRESS_BAR_CHAR_WIDTH - filledBar)) +\n chalk.bold(` ${(100 * progress.ratio).toFixed(1).padStart(4)}% `) +\n chalk.dim(\n `(${progress.transformedFileCount\n .toString()\n .padStart(progress.totalFileCount.toString().length)}/${progress.totalFileCount})`\n )\n : '';\n\n return (\n platform +\n chalk.reset.dim(`${path.dirname(localPath)}/`) +\n chalk.bold(path.basename(localPath)) +\n ' ' +\n _progress\n );\n }\n\n _logInitializing(port: number, hasReducedPerformance: boolean): void {\n // Don't print a giant logo...\n this.terminal.log('Starting Metro Bundler');\n }\n\n shouldFilterClientLog(event: {\n type: 'client_log';\n level: 'trace' | 'info' | 'warn' | 'log' | 'group' | 'groupCollapsed' | 'groupEnd' | 'debug';\n data: unknown[];\n }): boolean {\n return isAppRegistryStartupMessage(event.data);\n }\n\n shouldFilterBundleEvent(event: TerminalReportableEvent): boolean {\n return 'bundleDetails' in event && event.bundleDetails?.bundleType === 'map';\n }\n\n /** Print the cache clear message. */\n transformCacheReset(): void {\n logWarning(\n this.terminal,\n chalk`Bundler cache is empty, rebuilding {dim (this may take a minute)}`\n );\n }\n\n /** One of the first logs that will be printed */\n dependencyGraphLoading(hasReducedPerformance: boolean): void {\n // this.terminal.log('Dependency graph is loading...');\n if (hasReducedPerformance) {\n // Extends https://github.com/facebook/metro/blob/347b1d7ed87995d7951aaa9fd597c04b06013dac/packages/metro/src/lib/TerminalReporter.js#L283-L290\n this.terminal.log(\n chalk.red(\n [\n 'Metro is operating with reduced performance.',\n 'Please fix the problem above and restart Metro.',\n ].join('\\n')\n )\n );\n }\n }\n\n _logBundlingError(error: SnippetError): void {\n const moduleResolutionError = formatUsingNodeStandardLibraryError(this.projectRoot, error);\n const cause = error.cause as undefined | { _expoImportStack?: string };\n if (moduleResolutionError) {\n let message = maybeAppendCodeFrame(moduleResolutionError, error.message);\n if (cause?._expoImportStack) {\n message += `\\n\\n${cause?._expoImportStack}`;\n }\n return this.terminal.log(message);\n }\n if (cause?._expoImportStack) {\n error.message += `\\n\\n${cause._expoImportStack}`;\n }\n return super._logBundlingError(error);\n }\n}\n\n/**\n * Formats an error where the user is attempting to import a module from the Node.js standard library.\n * Exposed for testing.\n *\n * @param error\n * @returns error message or null if not a module resolution error\n */\nexport function formatUsingNodeStandardLibraryError(\n projectRoot: string,\n error: SnippetError\n): string | null {\n if (!error.message) {\n return null;\n }\n const { targetModuleName, originModulePath } = error;\n if (!targetModuleName || !originModulePath) {\n return null;\n }\n const relativePath = path.relative(projectRoot, originModulePath);\n\n const DOCS_PAGE_URL =\n 'https://docs.expo.dev/workflow/using-libraries/#using-third-party-libraries';\n\n if (isNodeStdLibraryModule(targetModuleName)) {\n if (originModulePath.includes('node_modules')) {\n return [\n `The package at \"${chalk.bold(\n relativePath\n )}\" attempted to import the Node standard library module \"${chalk.bold(\n targetModuleName\n )}\".`,\n `It failed because the native React runtime does not include the Node standard library.`,\n learnMore(DOCS_PAGE_URL),\n ].join('\\n');\n } else {\n return [\n `You attempted to import the Node standard library module \"${chalk.bold(\n targetModuleName\n )}\" from \"${chalk.bold(relativePath)}\".`,\n `It failed because the native React runtime does not include the Node standard library.`,\n learnMore(DOCS_PAGE_URL),\n ].join('\\n');\n }\n }\n return `Unable to resolve \"${targetModuleName}\" from \"${relativePath}\"`;\n}\n\nexport function isNodeStdLibraryModule(moduleName: string): boolean {\n return /^node:/.test(moduleName) || NODE_STDLIB_MODULES.includes(moduleName);\n}\n\n/** If the code frame can be found then append it to the existing message. */\nfunction maybeAppendCodeFrame(message: string, rawMessage: string): string {\n const codeFrame = stripMetroInfo(rawMessage);\n if (codeFrame) {\n message += '\\n' + codeFrame;\n }\n return message;\n}\n\n/**\n * Remove the Metro cache clearing steps if they exist.\n * In future versions we won't need this.\n * Returns the remaining code frame logs.\n */\nexport function stripMetroInfo(errorMessage: string): string | null {\n // Newer versions of Metro don't include the list.\n if (!errorMessage.includes('4. Remove the cache')) {\n return null;\n }\n const lines = errorMessage.split('\\n');\n const index = lines.findIndex((line) => line.includes('4. Remove the cache'));\n if (index === -1) {\n return null;\n }\n return lines.slice(index + 1).join('\\n');\n}\n\n/** @returns if the message matches the initial startup log */\nfunction isAppRegistryStartupMessage(body: any[]): boolean {\n return (\n body.length === 1 &&\n (/^Running application \"main\" with appParams:/.test(body[0]) ||\n /^Running \"main\" with \\{/.test(body[0]))\n );\n}\n\n/** @returns platform specific tag for a `BundleDetails` object */\nfunction getPlatformTagForBuildDetails(bundleDetails?: BundleDetails | null): string {\n const platform = bundleDetails?.platform ?? null;\n if (platform) {\n const formatted = { ios: 'iOS', android: 'Android', web: 'Web' }[platform] || platform;\n return `${chalk.bold(formatted)} `;\n }\n\n return '';\n}\n/** @returns platform specific tag for a `BundleDetails` object */\nfunction getEnvironmentForBuildDetails(bundleDetails?: BundleDetails | null): string {\n // Expo CLI will pass `customTransformOptions.environment = 'node'` when bundling for the server.\n const env = bundleDetails?.customTransformOptions?.environment ?? null;\n if (env === 'node') {\n return chalk.bold('λ') + ' ';\n } else if (env === 'react-server') {\n return chalk.bold(`RSC(${getPlatformTagForBuildDetails(bundleDetails).trim()})`) + ' ';\n }\n\n return '';\n}\n"],"names":["formatUsingNodeStandardLibraryError","isNodeStdLibraryModule","stripMetroInfo","MAX_PROGRESS_BAR_CHAR_WIDTH","DARK_BLOCK_CHAR","LIGHT_BLOCK_CHAR","MetroTerminalReporter","TerminalReporter","constructor","projectRoot","terminal","_getElapsedTime","startTime","Date","now","_getBundleStatusMessage","progress","phase","env","getEnvironmentForBuildDetails","bundleDetails","platform","getPlatformTagForBuildDetails","inProgress","localPath","entryFile","startsWith","path","sep","relative","status","color","chalk","green","red","_bundleTimers","get","buildID","time","dim","plural","totalFileCount","reset","filledBar","Math","floor","ratio","_progress","bgGreen","repeat","bgWhite","white","bold","toFixed","padStart","transformedFileCount","toString","length","dirname","basename","_logInitializing","port","hasReducedPerformance","log","shouldFilterClientLog","event","isAppRegistryStartupMessage","data","shouldFilterBundleEvent","bundleType","transformCacheReset","logWarning","dependencyGraphLoading","join","_logBundlingError","error","moduleResolutionError","cause","message","maybeAppendCodeFrame","_expoImportStack","targetModuleName","originModulePath","relativePath","DOCS_PAGE_URL","includes","learnMore","moduleName","test","NODE_STDLIB_MODULES","rawMessage","codeFrame","errorMessage","lines","split","index","findIndex","line","slice","body","formatted","ios","android","web","customTransformOptions","environment","trim"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../src/start/server/metro/MetroTerminalReporter.ts"],"sourcesContent":["import chalk from 'chalk';\nimport { Terminal } from 'metro-core';\nimport path from 'path';\n\nimport { logWarning, TerminalReporter } from './TerminalReporter';\nimport {\n BuildPhase,\n BundleDetails,\n BundleProgress,\n SnippetError,\n TerminalReportableEvent,\n} from './TerminalReporter.types';\nimport { NODE_STDLIB_MODULES } from './externals';\nimport { learnMore } from '../../../utils/link';\n\nconst MAX_PROGRESS_BAR_CHAR_WIDTH = 16;\nconst DARK_BLOCK_CHAR = '\\u2593';\nconst LIGHT_BLOCK_CHAR = '\\u2591';\n/**\n * Extends the default Metro logger and adds some additional features.\n * Also removes the giant Metro logo from the output.\n */\nexport class MetroTerminalReporter extends TerminalReporter {\n constructor(\n public projectRoot: string,\n terminal: Terminal\n ) {\n super(terminal);\n }\n\n // Used for testing\n _getElapsedTime(startTime: number): number {\n return Date.now() - startTime;\n }\n /**\n * Extends the bundle progress to include the current platform that we're bundling.\n *\n * @returns `iOS path/to/bundle.js ▓▓▓▓▓░░░░░░░░░░░ 36.6% (4790/7922)`\n */\n _getBundleStatusMessage(progress: BundleProgress, phase: BuildPhase): string {\n const env = getEnvironmentForBuildDetails(progress.bundleDetails);\n const platform = env || getPlatformTagForBuildDetails(progress.bundleDetails);\n const inProgress = phase === 'in_progress';\n\n const localPath = progress.bundleDetails.entryFile.startsWith(path.sep)\n ? path.relative(this.projectRoot, progress.bundleDetails.entryFile)\n : progress.bundleDetails.entryFile;\n\n if (!inProgress) {\n const status = phase === 'done' ? `Bundled ` : `Bundling failed `;\n const color = phase === 'done' ? chalk.green : chalk.red;\n\n const startTime = this._bundleTimers.get(progress.bundleDetails.buildID!);\n\n const time = startTime != null ? chalk.dim(this._getElapsedTime(startTime) + 'ms') : '';\n // iOS Bundled 150ms\n const plural = progress.totalFileCount === 1 ? '' : 's';\n return (\n color(platform + status) +\n time +\n chalk.reset.dim(` ${localPath} (${progress.totalFileCount} module${plural})`)\n );\n }\n\n const filledBar = Math.floor(progress.ratio * MAX_PROGRESS_BAR_CHAR_WIDTH);\n\n const _progress = inProgress\n ? chalk.green.bgGreen(DARK_BLOCK_CHAR.repeat(filledBar)) +\n chalk.bgWhite.white(LIGHT_BLOCK_CHAR.repeat(MAX_PROGRESS_BAR_CHAR_WIDTH - filledBar)) +\n chalk.bold(` ${(100 * progress.ratio).toFixed(1).padStart(4)}% `) +\n chalk.dim(\n `(${progress.transformedFileCount\n .toString()\n .padStart(progress.totalFileCount.toString().length)}/${progress.totalFileCount})`\n )\n : '';\n\n return (\n platform +\n chalk.reset.dim(`${path.dirname(localPath)}/`) +\n chalk.bold(path.basename(localPath)) +\n ' ' +\n _progress\n );\n }\n\n _logInitializing(port: number, hasReducedPerformance: boolean): void {\n // Don't print a giant logo...\n this.terminal.log('Starting Metro Bundler');\n }\n\n shouldFilterClientLog(event: {\n type: 'client_log';\n level: 'trace' | 'info' | 'warn' | 'log' | 'group' | 'groupCollapsed' | 'groupEnd' | 'debug';\n data: unknown[];\n }): boolean {\n return isAppRegistryStartupMessage(event.data);\n }\n\n shouldFilterBundleEvent(event: TerminalReportableEvent): boolean {\n return 'bundleDetails' in event && event.bundleDetails?.bundleType === 'map';\n }\n\n /** Print the cache clear message. */\n transformCacheReset(): void {\n logWarning(\n this.terminal,\n chalk`Bundler cache is empty, rebuilding {dim (this may take a minute)}`\n );\n }\n\n /** One of the first logs that will be printed */\n dependencyGraphLoading(hasReducedPerformance: boolean): void {\n // this.terminal.log('Dependency graph is loading...');\n if (hasReducedPerformance) {\n // Extends https://github.com/facebook/metro/blob/347b1d7ed87995d7951aaa9fd597c04b06013dac/packages/metro/src/lib/TerminalReporter.js#L283-L290\n this.terminal.log(\n chalk.red(\n [\n 'Metro is operating with reduced performance.',\n 'Please fix the problem above and restart Metro.',\n ].join('\\n')\n )\n );\n }\n }\n\n _logBundlingError(error: SnippetError): void {\n const moduleResolutionError = formatUsingNodeStandardLibraryError(this.projectRoot, error);\n const cause = error.cause as undefined | { _expoImportStack?: string };\n if (moduleResolutionError) {\n let message = maybeAppendCodeFrame(moduleResolutionError, error.message);\n if (cause?._expoImportStack) {\n message += `\\n\\n${cause?._expoImportStack}`;\n }\n return this.terminal.log(message);\n }\n if (cause?._expoImportStack) {\n error.message += `\\n\\n${cause._expoImportStack}`;\n }\n return super._logBundlingError(error);\n }\n}\n\n/**\n * Formats an error where the user is attempting to import a module from the Node.js standard library.\n * Exposed for testing.\n *\n * @param error\n * @returns error message or null if not a module resolution error\n */\nexport function formatUsingNodeStandardLibraryError(\n projectRoot: string,\n error: SnippetError\n): string | null {\n if (!error.message) {\n return null;\n }\n const { targetModuleName, originModulePath } = error;\n if (!targetModuleName || !originModulePath) {\n return null;\n }\n const relativePath = path.relative(projectRoot, originModulePath);\n\n const DOCS_PAGE_URL =\n 'https://docs.expo.dev/workflow/using-libraries/#using-third-party-libraries';\n\n if (isNodeStdLibraryModule(targetModuleName)) {\n if (originModulePath.includes('node_modules')) {\n return [\n `The package at \"${chalk.bold(\n relativePath\n )}\" attempted to import the Node standard library module \"${chalk.bold(\n targetModuleName\n )}\".`,\n `It failed because the native React runtime does not include the Node standard library.`,\n learnMore(DOCS_PAGE_URL),\n ].join('\\n');\n } else {\n return [\n `You attempted to import the Node standard library module \"${chalk.bold(\n targetModuleName\n )}\" from \"${chalk.bold(relativePath)}\".`,\n `It failed because the native React runtime does not include the Node standard library.`,\n learnMore(DOCS_PAGE_URL),\n ].join('\\n');\n }\n }\n return `Unable to resolve \"${targetModuleName}\" from \"${relativePath}\"`;\n}\n\nexport function isNodeStdLibraryModule(moduleName: string): boolean {\n return /^node:/.test(moduleName) || NODE_STDLIB_MODULES.includes(moduleName);\n}\n\n/** If the code frame can be found then append it to the existing message. */\nfunction maybeAppendCodeFrame(message: string, rawMessage: string): string {\n const codeFrame = stripMetroInfo(rawMessage);\n if (codeFrame) {\n message += '\\n' + codeFrame;\n }\n return message;\n}\n\n/**\n * Remove the Metro cache clearing steps if they exist.\n * In future versions we won't need this.\n * Returns the remaining code frame logs.\n */\nexport function stripMetroInfo(errorMessage: string): string | null {\n // Newer versions of Metro don't include the list.\n if (!errorMessage.includes('4. Remove the cache')) {\n return null;\n }\n const lines = errorMessage.split('\\n');\n const index = lines.findIndex((line) => line.includes('4. Remove the cache'));\n if (index === -1) {\n return null;\n }\n return lines.slice(index + 1).join('\\n');\n}\n\n/** @returns if the message matches the initial startup log */\nfunction isAppRegistryStartupMessage(body: any[]): boolean {\n return (\n body.length === 1 &&\n (/^Running application \"main\" with appParams:/.test(body[0]) ||\n /^Running \"main\" with \\{/.test(body[0]))\n );\n}\n\n/** @returns platform specific tag for a `BundleDetails` object */\nfunction getPlatformTagForBuildDetails(bundleDetails?: BundleDetails | null): string {\n const platform = bundleDetails?.platform ?? null;\n if (platform) {\n const formatted = { ios: 'iOS', android: 'Android', web: 'Web' }[platform] || platform;\n return `${chalk.bold(formatted)} `;\n }\n\n return '';\n}\n/** @returns platform specific tag for a `BundleDetails` object */\nfunction getEnvironmentForBuildDetails(bundleDetails?: BundleDetails | null): string {\n // Expo CLI will pass `customTransformOptions.environment = 'node'` when bundling for the server.\n const env = bundleDetails?.customTransformOptions?.environment ?? null;\n if (env === 'node') {\n return chalk.bold('λ') + ' ';\n } else if (env === 'react-server') {\n return chalk.bold(`RSC(${getPlatformTagForBuildDetails(bundleDetails).trim()})`) + ' ';\n }\n\n return '';\n}\n"],"names":["MetroTerminalReporter","formatUsingNodeStandardLibraryError","isNodeStdLibraryModule","stripMetroInfo","MAX_PROGRESS_BAR_CHAR_WIDTH","DARK_BLOCK_CHAR","LIGHT_BLOCK_CHAR","TerminalReporter","constructor","projectRoot","terminal","_getElapsedTime","startTime","Date","now","_getBundleStatusMessage","progress","phase","env","getEnvironmentForBuildDetails","bundleDetails","platform","getPlatformTagForBuildDetails","inProgress","localPath","entryFile","startsWith","path","sep","relative","status","color","chalk","green","red","_bundleTimers","get","buildID","time","dim","plural","totalFileCount","reset","filledBar","Math","floor","ratio","_progress","bgGreen","repeat","bgWhite","white","bold","toFixed","padStart","transformedFileCount","toString","length","dirname","basename","_logInitializing","port","hasReducedPerformance","log","shouldFilterClientLog","event","isAppRegistryStartupMessage","data","shouldFilterBundleEvent","bundleType","transformCacheReset","logWarning","dependencyGraphLoading","join","_logBundlingError","error","moduleResolutionError","cause","message","maybeAppendCodeFrame","_expoImportStack","targetModuleName","originModulePath","relativePath","DOCS_PAGE_URL","includes","learnMore","moduleName","test","NODE_STDLIB_MODULES","rawMessage","codeFrame","errorMessage","lines","split","index","findIndex","line","slice","body","formatted","ios","android","web","customTransformOptions","environment","trim"],"mappings":"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"}
@@ -1,31 +1,42 @@
1
+ // This file represents an abstraction on the metro TerminalReporter.
2
+ // We use this abstraction to safely extend the TerminalReporter for our own custom logging.
1
3
  "use strict";
2
4
  Object.defineProperty(exports, "__esModule", {
3
5
  value: true
4
6
  });
5
- exports.logWarning = logWarning;
6
- exports.logError = logError;
7
+ function _export(target, all) {
8
+ for(var name in all)Object.defineProperty(target, name, {
9
+ enumerable: true,
10
+ get: all[name]
11
+ });
12
+ }
13
+ _export(exports, {
14
+ logWarning: ()=>logWarning,
15
+ logError: ()=>logError,
16
+ TerminalReporter: ()=>TerminalReporter
17
+ });
7
18
  function _chalk() {
8
- const data = _interopRequireDefault(require("chalk"));
19
+ const data = /*#__PURE__*/ _interopRequireDefault(require("chalk"));
9
20
  _chalk = function() {
10
21
  return data;
11
22
  };
12
23
  return data;
13
24
  }
14
25
  function _terminalReporter() {
15
- const data = _interopRequireDefault(require("metro/src/lib/TerminalReporter"));
26
+ const data = /*#__PURE__*/ _interopRequireDefault(require("metro/src/lib/TerminalReporter"));
16
27
  _terminalReporter = function() {
17
28
  return data;
18
29
  };
19
30
  return data;
20
31
  }
21
32
  function _util() {
22
- const data = _interopRequireDefault(require("util"));
33
+ const data = /*#__PURE__*/ _interopRequireDefault(require("util"));
23
34
  _util = function() {
24
35
  return data;
25
36
  };
26
37
  return data;
27
38
  }
28
- var _ansi = require("../../../utils/ansi");
39
+ const _ansi = require("../../../utils/ansi");
29
40
  function _interopRequireDefault(obj) {
30
41
  return obj && obj.__esModule ? obj : {
31
42
  default: obj
@@ -41,7 +52,7 @@ function logError(terminal, format, ...args) {
41
52
  // in various places outside of where Metro is currently running.
42
53
  // If the current terminal does not support color, we'll strip the colors
43
54
  // here.
44
- _util().default.format(_chalk().default.supportsColor ? format : (0, _ansi).stripAnsi(format), ...args));
55
+ _util().default.format(_chalk().default.supportsColor ? format : (0, _ansi.stripAnsi)(format), ...args));
45
56
  }
46
57
  const XTerminalReporter = _terminalReporter().default;
47
58
  class TerminalReporter extends XTerminalReporter {
@@ -141,6 +152,5 @@ class TerminalReporter extends XTerminalReporter {
141
152
  }
142
153
  }
143
154
  }
144
- exports.TerminalReporter = TerminalReporter;
145
155
 
146
156
  //# sourceMappingURL=TerminalReporter.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/start/server/metro/TerminalReporter.ts"],"sourcesContent":["// This file represents an abstraction on the metro TerminalReporter.\n// We use this abstraction to safely extend the TerminalReporter for our own custom logging.\nimport chalk from 'chalk';\nimport UpstreamTerminalReporter from 'metro/src/lib/TerminalReporter';\nimport { Terminal } from 'metro-core';\nimport util from 'util';\n\nimport {\n BundleDetails,\n BundleProgressUpdate,\n TerminalReportableEvent,\n TerminalReporterInterface,\n} from './TerminalReporter.types';\nimport { stripAnsi } from '../../../utils/ansi';\n\nconst debug = require('debug')('expo:metro:logger') as typeof console.log;\n\n/**\n * A standard way to log a warning to the terminal. This should not be called\n * from some arbitrary Metro logic, only from the reporters. Instead of\n * calling this, add a new type of ReportableEvent instead, and implement a\n * proper handler in the reporter(s).\n */\nexport function logWarning(terminal: Terminal, format: string, ...args: any[]): void {\n const str = util.format(format, ...args);\n terminal.log('%s: %s', chalk.yellow('warning'), str);\n}\n\n/**\n * Similar to `logWarning`, but for messages that require the user to act.\n */\nexport function logError(terminal: Terminal, format: string, ...args: any[]): void {\n terminal.log(\n '%s: %s',\n chalk.red('error'),\n // Syntax errors may have colors applied for displaying code frames\n // in various places outside of where Metro is currently running.\n // If the current terminal does not support color, we'll strip the colors\n // here.\n util.format(chalk.supportsColor ? format : stripAnsi(format), ...args)\n );\n}\n\nconst XTerminalReporter = UpstreamTerminalReporter as unknown as TerminalReporterInterface;\n\n/** Extended TerminalReporter class but with proper types and extra functionality to avoid using the `_log` method directly in subclasses. */\nexport class TerminalReporter extends XTerminalReporter implements TerminalReporterInterface {\n /**\n * A cache of { [buildID]: BundleDetails } which can be used to\n * add more contextual logs. BundleDetails is currently only sent with `bundle_build_started`\n * so we need to cache the details in order to print the platform info with other event types.\n */\n _bundleDetails: Map<string, BundleDetails> = new Map();\n\n /** Keep track of how long a bundle takes to complete */\n _bundleTimers: Map<string, number> = new Map();\n\n /** Keep track of bundle processes that should not be logged. */\n _hiddenBundleEvents: Set<string> = new Set();\n\n _log(event: TerminalReportableEvent): void {\n switch (event.type) {\n case 'transform_cache_reset':\n return this.transformCacheReset();\n case 'dep_graph_loading':\n return this.dependencyGraphLoading(event.hasReducedPerformance);\n case 'client_log':\n if (this.shouldFilterClientLog(event)) {\n return;\n }\n break;\n }\n return super._log(event);\n }\n\n /** Gives subclasses an easy interface for filtering out logs. Return `true` to skip. */\n shouldFilterClientLog(event: {\n type: 'client_log';\n level: 'trace' | 'info' | 'warn' | 'log' | 'group' | 'groupCollapsed' | 'groupEnd' | 'debug';\n data: unknown[];\n }): boolean {\n return false;\n }\n\n /** Gives subclasses an easy interface for filtering out bundle events, specifically for source maps. Return `true` to skip. */\n shouldFilterBundleEvent(event: TerminalReportableEvent): boolean {\n return false;\n }\n\n /** Cache has been reset. */\n transformCacheReset(): void {}\n\n /** One of the first logs that will be printed. */\n dependencyGraphLoading(hasReducedPerformance: boolean): void {}\n\n /**\n * Custom log event representing the end of the bundling.\n *\n * @param event event object.\n * @param duration duration of the build in milliseconds.\n */\n bundleBuildEnded(event: TerminalReportableEvent, duration: number): void {}\n\n /**\n * This function is exclusively concerned with updating the internal state.\n * No logging or status updates should be done at this point.\n */\n _updateState(\n event: TerminalReportableEvent & { bundleDetails?: BundleDetails; buildID?: string }\n ) {\n // Append the buildID to the bundleDetails.\n if (event.bundleDetails) {\n event.bundleDetails.buildID = event.buildID;\n }\n\n const buildID = event.bundleDetails?.buildID ?? event.buildID;\n\n if (buildID && !this._hiddenBundleEvents.has(buildID)) {\n if (this.shouldFilterBundleEvent(event)) {\n debug('skipping bundle events for', buildID, event);\n this._hiddenBundleEvents.add(buildID);\n } else {\n super._updateState(event);\n }\n } else {\n super._updateState(event);\n }\n\n switch (event.type) {\n case 'bundle_build_done':\n case 'bundle_build_failed': {\n const startTime = this._bundleTimers.get(event.buildID);\n // Observed a bug in Metro where the `bundle_build_done` is invoked twice during a static bundle\n // i.e. `expo export`.\n if (startTime == null) {\n break;\n }\n\n this.bundleBuildEnded(event, startTime ? Date.now() - startTime : 0);\n this._bundleTimers.delete(event.buildID);\n break;\n }\n case 'bundle_build_started':\n this._bundleDetails.set(event.buildID, event.bundleDetails);\n this._bundleTimers.set(event.buildID, Date.now());\n break;\n }\n }\n\n /**\n * We use Math.pow(ratio, 2) to as a conservative measure of progress because\n * we know the `totalCount` is going to progressively increase as well. We\n * also prevent the ratio from going backwards.\n */\n _updateBundleProgress(options: BundleProgressUpdate) {\n super._updateBundleProgress(options);\n\n const currentProgress = this._activeBundles.get(options.buildID);\n if (!currentProgress) {\n return;\n }\n\n // Fix an issue where the transformer is faster than the resolver,\n // locking the progress bar at 100% after transforming the first and only resolved file (1/1).\n if (currentProgress.ratio === 1 && options.totalFileCount === 1) {\n Object.assign(currentProgress, { ...currentProgress, ratio: 0 });\n }\n }\n}\n"],"names":["logWarning","logError","debug","require","terminal","format","args","str","util","log","chalk","yellow","red","supportsColor","stripAnsi","XTerminalReporter","UpstreamTerminalReporter","TerminalReporter","_bundleDetails","Map","_bundleTimers","_hiddenBundleEvents","Set","_log","event","type","transformCacheReset","dependencyGraphLoading","hasReducedPerformance","shouldFilterClientLog","shouldFilterBundleEvent","bundleBuildEnded","duration","_updateState","bundleDetails","buildID","has","add","startTime","get","Date","now","delete","set","_updateBundleProgress","options","currentProgress","_activeBundles","ratio","totalFileCount","Object","assign"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../src/start/server/metro/TerminalReporter.ts"],"sourcesContent":["// This file represents an abstraction on the metro TerminalReporter.\n// We use this abstraction to safely extend the TerminalReporter for our own custom logging.\nimport chalk from 'chalk';\nimport UpstreamTerminalReporter from 'metro/src/lib/TerminalReporter';\nimport { Terminal } from 'metro-core';\nimport util from 'util';\n\nimport {\n BundleDetails,\n BundleProgressUpdate,\n TerminalReportableEvent,\n TerminalReporterInterface,\n} from './TerminalReporter.types';\nimport { stripAnsi } from '../../../utils/ansi';\n\nconst debug = require('debug')('expo:metro:logger') as typeof console.log;\n\n/**\n * A standard way to log a warning to the terminal. This should not be called\n * from some arbitrary Metro logic, only from the reporters. Instead of\n * calling this, add a new type of ReportableEvent instead, and implement a\n * proper handler in the reporter(s).\n */\nexport function logWarning(terminal: Terminal, format: string, ...args: any[]): void {\n const str = util.format(format, ...args);\n terminal.log('%s: %s', chalk.yellow('warning'), str);\n}\n\n/**\n * Similar to `logWarning`, but for messages that require the user to act.\n */\nexport function logError(terminal: Terminal, format: string, ...args: any[]): void {\n terminal.log(\n '%s: %s',\n chalk.red('error'),\n // Syntax errors may have colors applied for displaying code frames\n // in various places outside of where Metro is currently running.\n // If the current terminal does not support color, we'll strip the colors\n // here.\n util.format(chalk.supportsColor ? format : stripAnsi(format), ...args)\n );\n}\n\nconst XTerminalReporter = UpstreamTerminalReporter as unknown as TerminalReporterInterface;\n\n/** Extended TerminalReporter class but with proper types and extra functionality to avoid using the `_log` method directly in subclasses. */\nexport class TerminalReporter extends XTerminalReporter implements TerminalReporterInterface {\n /**\n * A cache of { [buildID]: BundleDetails } which can be used to\n * add more contextual logs. BundleDetails is currently only sent with `bundle_build_started`\n * so we need to cache the details in order to print the platform info with other event types.\n */\n _bundleDetails: Map<string, BundleDetails> = new Map();\n\n /** Keep track of how long a bundle takes to complete */\n _bundleTimers: Map<string, number> = new Map();\n\n /** Keep track of bundle processes that should not be logged. */\n _hiddenBundleEvents: Set<string> = new Set();\n\n _log(event: TerminalReportableEvent): void {\n switch (event.type) {\n case 'transform_cache_reset':\n return this.transformCacheReset();\n case 'dep_graph_loading':\n return this.dependencyGraphLoading(event.hasReducedPerformance);\n case 'client_log':\n if (this.shouldFilterClientLog(event)) {\n return;\n }\n break;\n }\n return super._log(event);\n }\n\n /** Gives subclasses an easy interface for filtering out logs. Return `true` to skip. */\n shouldFilterClientLog(event: {\n type: 'client_log';\n level: 'trace' | 'info' | 'warn' | 'log' | 'group' | 'groupCollapsed' | 'groupEnd' | 'debug';\n data: unknown[];\n }): boolean {\n return false;\n }\n\n /** Gives subclasses an easy interface for filtering out bundle events, specifically for source maps. Return `true` to skip. */\n shouldFilterBundleEvent(event: TerminalReportableEvent): boolean {\n return false;\n }\n\n /** Cache has been reset. */\n transformCacheReset(): void {}\n\n /** One of the first logs that will be printed. */\n dependencyGraphLoading(hasReducedPerformance: boolean): void {}\n\n /**\n * Custom log event representing the end of the bundling.\n *\n * @param event event object.\n * @param duration duration of the build in milliseconds.\n */\n bundleBuildEnded(event: TerminalReportableEvent, duration: number): void {}\n\n /**\n * This function is exclusively concerned with updating the internal state.\n * No logging or status updates should be done at this point.\n */\n _updateState(\n event: TerminalReportableEvent & { bundleDetails?: BundleDetails; buildID?: string }\n ) {\n // Append the buildID to the bundleDetails.\n if (event.bundleDetails) {\n event.bundleDetails.buildID = event.buildID;\n }\n\n const buildID = event.bundleDetails?.buildID ?? event.buildID;\n\n if (buildID && !this._hiddenBundleEvents.has(buildID)) {\n if (this.shouldFilterBundleEvent(event)) {\n debug('skipping bundle events for', buildID, event);\n this._hiddenBundleEvents.add(buildID);\n } else {\n super._updateState(event);\n }\n } else {\n super._updateState(event);\n }\n\n switch (event.type) {\n case 'bundle_build_done':\n case 'bundle_build_failed': {\n const startTime = this._bundleTimers.get(event.buildID);\n // Observed a bug in Metro where the `bundle_build_done` is invoked twice during a static bundle\n // i.e. `expo export`.\n if (startTime == null) {\n break;\n }\n\n this.bundleBuildEnded(event, startTime ? Date.now() - startTime : 0);\n this._bundleTimers.delete(event.buildID);\n break;\n }\n case 'bundle_build_started':\n this._bundleDetails.set(event.buildID, event.bundleDetails);\n this._bundleTimers.set(event.buildID, Date.now());\n break;\n }\n }\n\n /**\n * We use Math.pow(ratio, 2) to as a conservative measure of progress because\n * we know the `totalCount` is going to progressively increase as well. We\n * also prevent the ratio from going backwards.\n */\n _updateBundleProgress(options: BundleProgressUpdate) {\n super._updateBundleProgress(options);\n\n const currentProgress = this._activeBundles.get(options.buildID);\n if (!currentProgress) {\n return;\n }\n\n // Fix an issue where the transformer is faster than the resolver,\n // locking the progress bar at 100% after transforming the first and only resolved file (1/1).\n if (currentProgress.ratio === 1 && options.totalFileCount === 1) {\n Object.assign(currentProgress, { ...currentProgress, ratio: 0 });\n }\n }\n}\n"],"names":["logWarning","logError","TerminalReporter","debug","require","terminal","format","args","str","util","log","chalk","yellow","red","supportsColor","stripAnsi","XTerminalReporter","UpstreamTerminalReporter","_bundleDetails","Map","_bundleTimers","_hiddenBundleEvents","Set","_log","event","type","transformCacheReset","dependencyGraphLoading","hasReducedPerformance","shouldFilterClientLog","shouldFilterBundleEvent","bundleBuildEnded","duration","_updateState","bundleDetails","buildID","has","add","startTime","get","Date","now","delete","set","_updateBundleProgress","options","currentProgress","_activeBundles","ratio","totalFileCount","Object","assign"],"mappings":"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"}