@depup/expo__cli 55.0.22-depup.1 → 57.0.9-depup.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (600) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +13 -18
  3. package/build/bin/cli +4 -4
  4. package/build/bin/cli.map +1 -1
  5. package/build/src/api/endpoint.js +4 -4
  6. package/build/src/api/endpoint.js.map +1 -1
  7. package/build/src/api/getExpoSchema.js +3 -3
  8. package/build/src/api/getExpoSchema.js.map +1 -1
  9. package/build/src/api/graphql/client.js +26 -14
  10. package/build/src/api/graphql/client.js.map +1 -1
  11. package/build/src/api/graphql/mutations/TunnelMutation.js +31 -0
  12. package/build/src/api/graphql/mutations/TunnelMutation.js.map +1 -0
  13. package/build/src/api/rest/cache/FileSystemResponseCache.js.map +1 -1
  14. package/build/src/api/rest/cache/ResponseCache.js +5 -5
  15. package/build/src/api/rest/cache/ResponseCache.js.map +1 -1
  16. package/build/src/api/rest/client.js +35 -20
  17. package/build/src/api/rest/client.js.map +1 -1
  18. package/build/src/api/rest/wrapFetchWithBaseUrl.js.map +1 -1
  19. package/build/src/api/rest/wrapFetchWithOffline.js.map +1 -1
  20. package/build/src/api/rest/wrapFetchWithProgress.js.map +1 -1
  21. package/build/src/api/rest/wrapFetchWithUserAgent.js.map +1 -1
  22. package/build/src/api/updateDevelopmentSession.js +6 -5
  23. package/build/src/api/updateDevelopmentSession.js.map +1 -1
  24. package/build/src/api/user/UserSettings.js +28 -15
  25. package/build/src/api/user/UserSettings.js.map +1 -1
  26. package/build/src/api/user/actions.js +10 -3
  27. package/build/src/api/user/actions.js.map +1 -1
  28. package/build/src/api/user/expoSsoLauncher.js +76 -24
  29. package/build/src/api/user/expoSsoLauncher.js.map +1 -1
  30. package/build/src/api/user/otp.js +4 -4
  31. package/build/src/api/user/otp.js.map +1 -1
  32. package/build/src/api/user/user.js +19 -7
  33. package/build/src/api/user/user.js.map +1 -1
  34. package/build/src/config/configAsync.js +3 -3
  35. package/build/src/config/configAsync.js.map +1 -1
  36. package/build/src/config/index.js.map +1 -1
  37. package/build/src/customize/customizeAsync.js.map +1 -1
  38. package/build/src/customize/generate.js +7 -4
  39. package/build/src/customize/generate.js.map +1 -1
  40. package/build/src/customize/index.js.map +1 -1
  41. package/build/src/customize/templates.js +4 -6
  42. package/build/src/customize/templates.js.map +1 -1
  43. package/build/src/customize/typescript.js.map +1 -1
  44. package/build/src/events/index.js +19 -15
  45. package/build/src/events/index.js.map +1 -1
  46. package/build/src/events/stream.js +94 -24
  47. package/build/src/events/stream.js.map +1 -1
  48. package/build/src/expoUpdatesExports.js +50 -7
  49. package/build/src/expoUpdatesExports.js.map +1 -1
  50. package/build/src/export/createMetadataJson.js +2 -1
  51. package/build/src/export/createMetadataJson.js.map +1 -1
  52. package/build/src/export/embed/exportEmbedAsync.js +58 -24
  53. package/build/src/export/embed/exportEmbedAsync.js.map +1 -1
  54. package/build/src/export/embed/exportServer.js +1 -1
  55. package/build/src/export/embed/exportServer.js.map +1 -1
  56. package/build/src/export/embed/index.js +1 -1
  57. package/build/src/export/embed/index.js.map +1 -1
  58. package/build/src/export/embed/resolveOptions.js +7 -6
  59. package/build/src/export/embed/resolveOptions.js.map +1 -1
  60. package/build/src/export/embed/xcodeCompilerLogger.js +7 -7
  61. package/build/src/export/embed/xcodeCompilerLogger.js.map +1 -1
  62. package/build/src/export/exportApp.js +40 -30
  63. package/build/src/export/exportApp.js.map +1 -1
  64. package/build/src/export/exportAssets.js +5 -5
  65. package/build/src/export/exportAssets.js.map +1 -1
  66. package/build/src/export/exportAsync.js.map +1 -1
  67. package/build/src/export/exportDomComponents.js +16 -9
  68. package/build/src/export/exportDomComponents.js.map +1 -1
  69. package/build/src/export/exportHermes.js +23 -13
  70. package/build/src/export/exportHermes.js.map +1 -1
  71. package/build/src/export/exportStaticAsync.js +30 -21
  72. package/build/src/export/exportStaticAsync.js.map +1 -1
  73. package/build/src/export/favicon.js +26 -34
  74. package/build/src/export/favicon.js.map +1 -1
  75. package/build/src/export/getPublicExpoManifest.js.map +1 -1
  76. package/build/src/export/getResolvedLocales.js.map +1 -1
  77. package/build/src/export/html.js +3 -3
  78. package/build/src/export/html.js.map +1 -1
  79. package/build/src/export/index.js +2 -0
  80. package/build/src/export/index.js.map +1 -1
  81. package/build/src/export/metroAssetLocalPath.js +4 -4
  82. package/build/src/export/metroAssetLocalPath.js.map +1 -1
  83. package/build/src/export/persistMetroAssets.js +6 -6
  84. package/build/src/export/persistMetroAssets.js.map +1 -1
  85. package/build/src/export/publicFolder.js +16 -4
  86. package/build/src/export/publicFolder.js.map +1 -1
  87. package/build/src/export/resolveOptions.js +12 -13
  88. package/build/src/export/resolveOptions.js.map +1 -1
  89. package/build/src/export/saveAssets.js +3 -3
  90. package/build/src/export/saveAssets.js.map +1 -1
  91. package/build/src/export/static.js +6 -0
  92. package/build/src/export/static.js.map +1 -0
  93. package/build/src/export/web/exportWebAsync.js.map +1 -1
  94. package/build/src/export/web/index.js.map +1 -1
  95. package/build/src/export/writeContents.js.map +1 -1
  96. package/build/src/install/checkPackages.js +1 -28
  97. package/build/src/install/checkPackages.js.map +1 -1
  98. package/build/src/install/fixPackages.js.map +1 -1
  99. package/build/src/install/index.js.map +1 -1
  100. package/build/src/install/installAsync.js +3 -3
  101. package/build/src/install/installAsync.js.map +1 -1
  102. package/build/src/install/installExpoPackage.js.map +1 -1
  103. package/build/src/install/resolveOptions.js.map +1 -1
  104. package/build/src/install/utils/autoAddConfigPlugins.js +3 -3
  105. package/build/src/install/utils/autoAddConfigPlugins.js.map +1 -1
  106. package/build/src/install/utils/checkPackagesCompatibility.js +32 -16
  107. package/build/src/install/utils/checkPackagesCompatibility.js.map +1 -1
  108. package/build/src/lint/ESlintPrerequisite.js.map +1 -1
  109. package/build/src/log.js +32 -14
  110. package/build/src/log.js.map +1 -1
  111. package/build/src/login/index.js +25 -5
  112. package/build/src/login/index.js.map +1 -1
  113. package/build/src/logout/index.js.map +1 -1
  114. package/build/src/prebuild/clearNativeFolder.js +49 -14
  115. package/build/src/prebuild/clearNativeFolder.js.map +1 -1
  116. package/build/src/prebuild/configureProjectAsync.js.map +1 -1
  117. package/build/src/prebuild/copyTemplateFiles.js +3 -3
  118. package/build/src/prebuild/copyTemplateFiles.js.map +1 -1
  119. package/build/src/prebuild/ensureConfigAsync.js.map +1 -1
  120. package/build/src/prebuild/index.js +3 -2
  121. package/build/src/prebuild/index.js.map +1 -1
  122. package/build/src/prebuild/prebuildAsync.js +31 -6
  123. package/build/src/prebuild/prebuildAsync.js.map +1 -1
  124. package/build/src/prebuild/renameTemplateAppName.js +8 -5
  125. package/build/src/prebuild/renameTemplateAppName.js.map +1 -1
  126. package/build/src/prebuild/resolveOptions.js +7 -7
  127. package/build/src/prebuild/resolveOptions.js.map +1 -1
  128. package/build/src/prebuild/resolveTemplate.js +10 -5
  129. package/build/src/prebuild/resolveTemplate.js.map +1 -1
  130. package/build/src/prebuild/updateFromTemplate.js +3 -3
  131. package/build/src/prebuild/updateFromTemplate.js.map +1 -1
  132. package/build/src/prebuild/updatePackageJson.js +7 -7
  133. package/build/src/prebuild/updatePackageJson.js.map +1 -1
  134. package/build/src/prebuild/validateTemplatePlatforms.js.map +1 -1
  135. package/build/src/register/index.js.map +1 -1
  136. package/build/src/run/android/index.js.map +1 -1
  137. package/build/src/run/android/resolveGradlePropsAsync.js +3 -4
  138. package/build/src/run/android/resolveGradlePropsAsync.js.map +1 -1
  139. package/build/src/run/android/resolveInstallApkName.js +48 -1
  140. package/build/src/run/android/resolveInstallApkName.js.map +1 -1
  141. package/build/src/run/android/resolveLaunchProps.js +4 -1
  142. package/build/src/run/android/resolveLaunchProps.js.map +1 -1
  143. package/build/src/run/android/resolveOptions.js.map +1 -1
  144. package/build/src/run/android/runAndroidAsync.js.map +1 -1
  145. package/build/src/run/ensureNativeProject.js.map +1 -1
  146. package/build/src/run/hints.js +4 -4
  147. package/build/src/run/hints.js.map +1 -1
  148. package/build/src/run/index.js.map +1 -1
  149. package/build/src/run/ios/XcodeBuild.js +163 -23
  150. package/build/src/run/ios/XcodeBuild.js.map +1 -1
  151. package/build/src/run/ios/appleDevice/AppleDevice.js +6 -5
  152. package/build/src/run/ios/appleDevice/AppleDevice.js.map +1 -1
  153. package/build/src/run/ios/appleDevice/ClientManager.js.map +1 -1
  154. package/build/src/run/ios/appleDevice/client/AFCClient.js +10 -16
  155. package/build/src/run/ios/appleDevice/client/AFCClient.js.map +1 -1
  156. package/build/src/run/ios/appleDevice/client/DebugserverClient.js +1 -1
  157. package/build/src/run/ios/appleDevice/client/DebugserverClient.js.map +1 -1
  158. package/build/src/run/ios/appleDevice/client/InstallationProxyClient.js +2 -1
  159. package/build/src/run/ios/appleDevice/client/InstallationProxyClient.js.map +1 -1
  160. package/build/src/run/ios/appleDevice/client/LockdowndClient.js +1 -1
  161. package/build/src/run/ios/appleDevice/client/LockdowndClient.js.map +1 -1
  162. package/build/src/run/ios/appleDevice/client/MobileImageMounterClient.js.map +1 -1
  163. package/build/src/run/ios/appleDevice/client/ServiceClient.js +3 -3
  164. package/build/src/run/ios/appleDevice/client/ServiceClient.js.map +1 -1
  165. package/build/src/run/ios/appleDevice/client/UsbmuxdClient.js.map +1 -1
  166. package/build/src/run/ios/appleDevice/installOnDeviceAsync.js +3 -3
  167. package/build/src/run/ios/appleDevice/installOnDeviceAsync.js.map +1 -1
  168. package/build/src/run/ios/appleDevice/protocol/AFCProtocol.js +16 -13
  169. package/build/src/run/ios/appleDevice/protocol/AFCProtocol.js.map +1 -1
  170. package/build/src/run/ios/appleDevice/protocol/AbstractProtocol.js +6 -6
  171. package/build/src/run/ios/appleDevice/protocol/AbstractProtocol.js.map +1 -1
  172. package/build/src/run/ios/appleDevice/protocol/GDBProtocol.js +5 -5
  173. package/build/src/run/ios/appleDevice/protocol/GDBProtocol.js.map +1 -1
  174. package/build/src/run/ios/appleDevice/protocol/LockdownProtocol.js +7 -7
  175. package/build/src/run/ios/appleDevice/protocol/LockdownProtocol.js.map +1 -1
  176. package/build/src/run/ios/appleDevice/protocol/UsbmuxProtocol.js +5 -5
  177. package/build/src/run/ios/appleDevice/protocol/UsbmuxProtocol.js.map +1 -1
  178. package/build/src/run/ios/codeSigning/Security.js +8 -8
  179. package/build/src/run/ios/codeSigning/Security.js.map +1 -1
  180. package/build/src/run/ios/codeSigning/configureCodeSigning.js +5 -3
  181. package/build/src/run/ios/codeSigning/configureCodeSigning.js.map +1 -1
  182. package/build/src/run/ios/codeSigning/resolveCertificateSigningIdentity.js +7 -5
  183. package/build/src/run/ios/codeSigning/resolveCertificateSigningIdentity.js.map +1 -1
  184. package/build/src/run/ios/codeSigning/settings.js +3 -3
  185. package/build/src/run/ios/codeSigning/settings.js.map +1 -1
  186. package/build/src/run/ios/codeSigning/xcodeCodeSigning.js +4 -4
  187. package/build/src/run/ios/codeSigning/xcodeCodeSigning.js.map +1 -1
  188. package/build/src/run/ios/index.js +8 -1
  189. package/build/src/run/ios/index.js.map +1 -1
  190. package/build/src/run/ios/launchApp.js +3 -3
  191. package/build/src/run/ios/launchApp.js.map +1 -1
  192. package/build/src/run/ios/options/appleDestinations.js.map +1 -1
  193. package/build/src/run/ios/options/promptDevice.js +3 -3
  194. package/build/src/run/ios/options/promptDevice.js.map +1 -1
  195. package/build/src/run/ios/options/resolveDevice.js +8 -3
  196. package/build/src/run/ios/options/resolveDevice.js.map +1 -1
  197. package/build/src/run/ios/options/resolveNativeScheme.js +4 -4
  198. package/build/src/run/ios/options/resolveNativeScheme.js.map +1 -1
  199. package/build/src/run/ios/options/resolveOptions.js +9 -4
  200. package/build/src/run/ios/options/resolveOptions.js.map +1 -1
  201. package/build/src/run/ios/options/resolveXcodeProject.js.map +1 -1
  202. package/build/src/run/ios/runIosAsync.js +39 -0
  203. package/build/src/run/ios/runIosAsync.js.map +1 -1
  204. package/build/src/run/ios/validateExternalBinary.js.map +1 -1
  205. package/build/src/run/startBundler.js +4 -0
  206. package/build/src/run/startBundler.js.map +1 -1
  207. package/build/src/serve/index.js +4 -1
  208. package/build/src/serve/index.js.map +1 -1
  209. package/build/src/serve/serveAsync.js +23 -11
  210. package/build/src/serve/serveAsync.js.map +1 -1
  211. package/build/src/serve/static.js +69 -0
  212. package/build/src/serve/static.js.map +1 -0
  213. package/build/src/start/checkDependenciesOnStart.js +131 -0
  214. package/build/src/start/checkDependenciesOnStart.js.map +1 -0
  215. package/build/src/start/detectDevClient.js +3 -3
  216. package/build/src/start/detectDevClient.js.map +1 -1
  217. package/build/src/start/doctor/Prerequisite.js +4 -4
  218. package/build/src/start/doctor/Prerequisite.js.map +1 -1
  219. package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js +53 -91
  220. package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js.map +1 -1
  221. package/build/src/start/doctor/apple/XcodePrerequisite.js +3 -3
  222. package/build/src/start/doctor/apple/XcodePrerequisite.js.map +1 -1
  223. package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js +3 -3
  224. package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js.map +1 -1
  225. package/build/src/start/doctor/dependencies/getMissingPackages.js +5 -5
  226. package/build/src/start/doctor/dependencies/getMissingPackages.js.map +1 -1
  227. package/build/src/start/doctor/dependencies/getVersionedPackages.js +5 -5
  228. package/build/src/start/doctor/dependencies/getVersionedPackages.js.map +1 -1
  229. package/build/src/start/doctor/dependencies/reactNativeTv.js +149 -0
  230. package/build/src/start/doctor/dependencies/reactNativeTv.js.map +1 -0
  231. package/build/src/start/doctor/dependencies/resolvePackages.js +4 -4
  232. package/build/src/start/doctor/dependencies/resolvePackages.js.map +1 -1
  233. package/build/src/start/doctor/dependencies/validateDependenciesVersions.js +33 -8
  234. package/build/src/start/doctor/dependencies/validateDependenciesVersions.js.map +1 -1
  235. package/build/src/start/doctor/ngrok/ExternalModule.js +14 -9
  236. package/build/src/start/doctor/ngrok/ExternalModule.js.map +1 -1
  237. package/build/src/start/doctor/ngrok/NgrokResolver.js +3 -3
  238. package/build/src/start/doctor/ngrok/NgrokResolver.js.map +1 -1
  239. package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js.map +1 -1
  240. package/build/src/start/doctor/typescript/updateTSConfig.js +3 -3
  241. package/build/src/start/doctor/typescript/updateTSConfig.js.map +1 -1
  242. package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js +5 -12
  243. package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js.map +1 -1
  244. package/build/src/start/index.js +2 -0
  245. package/build/src/start/index.js.map +1 -1
  246. package/build/src/start/interface/KeyPressHandler.js.map +1 -1
  247. package/build/src/start/interface/cliExtensionMenuItemHandler.js.map +1 -1
  248. package/build/src/start/interface/commandsTable.js +6 -6
  249. package/build/src/start/interface/commandsTable.js.map +1 -1
  250. package/build/src/start/interface/createDevToolsMenuItems.js.map +1 -1
  251. package/build/src/start/interface/interactiveActions.js +49 -6
  252. package/build/src/start/interface/interactiveActions.js.map +1 -1
  253. package/build/src/start/interface/startInterface.js +13 -4
  254. package/build/src/start/interface/startInterface.js.map +1 -1
  255. package/build/src/start/platforms/AppIdResolver.js +4 -0
  256. package/build/src/start/platforms/AppIdResolver.js.map +1 -1
  257. package/build/src/start/platforms/DeviceManager.js.map +1 -1
  258. package/build/src/start/platforms/ExpoGoInstaller.js +13 -4
  259. package/build/src/start/platforms/ExpoGoInstaller.js.map +1 -1
  260. package/build/src/start/platforms/PlatformManager.js.map +1 -1
  261. package/build/src/start/platforms/android/AndroidAppIdResolver.js.map +1 -1
  262. package/build/src/start/platforms/android/AndroidDeviceManager.js.map +1 -1
  263. package/build/src/start/platforms/android/AndroidPlatformManager.js.map +1 -1
  264. package/build/src/start/platforms/android/activateWindow.js.map +1 -1
  265. package/build/src/start/platforms/android/adb.js +36 -34
  266. package/build/src/start/platforms/android/adb.js.map +1 -1
  267. package/build/src/start/platforms/android/adbReverse.js +4 -4
  268. package/build/src/start/platforms/android/adbReverse.js.map +1 -1
  269. package/build/src/start/platforms/android/emulator.js +5 -5
  270. package/build/src/start/platforms/android/emulator.js.map +1 -1
  271. package/build/src/start/platforms/android/getDevices.js.map +1 -1
  272. package/build/src/start/platforms/android/gradle.js +5 -5
  273. package/build/src/start/platforms/android/gradle.js.map +1 -1
  274. package/build/src/start/platforms/android/promptAndroidDevice.js +3 -3
  275. package/build/src/start/platforms/android/promptAndroidDevice.js.map +1 -1
  276. package/build/src/start/platforms/ios/AppleAppIdResolver.js.map +1 -1
  277. package/build/src/start/platforms/ios/AppleDeviceManager.js +20 -6
  278. package/build/src/start/platforms/ios/AppleDeviceManager.js.map +1 -1
  279. package/build/src/start/platforms/ios/ApplePlatformManager.js +11 -0
  280. package/build/src/start/platforms/ios/ApplePlatformManager.js.map +1 -1
  281. package/build/src/start/platforms/ios/devicectl.js +7 -7
  282. package/build/src/start/platforms/ios/devicectl.js.map +1 -1
  283. package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js +26 -11
  284. package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js.map +1 -1
  285. package/build/src/start/platforms/ios/getBestSimulator.js +5 -5
  286. package/build/src/start/platforms/ios/getBestSimulator.js.map +1 -1
  287. package/build/src/start/platforms/ios/promptAppleDevice.js +5 -4
  288. package/build/src/start/platforms/ios/promptAppleDevice.js.map +1 -1
  289. package/build/src/start/platforms/ios/simctl.js +25 -19
  290. package/build/src/start/platforms/ios/simctl.js.map +1 -1
  291. package/build/src/start/platforms/ios/simctlLogging.js +3 -3
  292. package/build/src/start/platforms/ios/simctlLogging.js.map +1 -1
  293. package/build/src/start/platforms/ios/xcrun.js +3 -3
  294. package/build/src/start/platforms/ios/xcrun.js.map +1 -1
  295. package/build/src/start/project/devices.js +6 -6
  296. package/build/src/start/project/devices.js.map +1 -1
  297. package/build/src/start/project/dotExpo.js +4 -3
  298. package/build/src/start/project/dotExpo.js.map +1 -1
  299. package/build/src/start/resolveOptions.js +7 -7
  300. package/build/src/start/resolveOptions.js.map +1 -1
  301. package/build/src/start/server/AsyncNgrok.js +1 -1
  302. package/build/src/start/server/AsyncNgrok.js.map +1 -1
  303. package/build/src/start/server/AsyncWsTunnel.js +120 -35
  304. package/build/src/start/server/AsyncWsTunnel.js.map +1 -1
  305. package/build/src/start/server/Bonjour.js +8 -3
  306. package/build/src/start/server/Bonjour.js.map +1 -1
  307. package/build/src/start/server/BundlerDevServer.js +23 -9
  308. package/build/src/start/server/BundlerDevServer.js.map +1 -1
  309. package/build/src/start/server/DevServerManager.js.map +1 -1
  310. package/build/src/start/server/DevToolsPlugin.js +63 -3
  311. package/build/src/start/server/DevToolsPlugin.js.map +1 -1
  312. package/build/src/start/server/DevToolsPlugin.schema.js +8 -3
  313. package/build/src/start/server/DevToolsPlugin.schema.js.map +1 -1
  314. package/build/src/start/server/DevToolsPluginCliExtensionExecutor.js +58 -23
  315. package/build/src/start/server/DevToolsPluginCliExtensionExecutor.js.map +1 -1
  316. package/build/src/start/server/DevToolsPluginCliExtensionResults.js +29 -0
  317. package/build/src/start/server/DevToolsPluginCliExtensionResults.js.map +1 -1
  318. package/build/src/start/server/DevToolsPluginManager.js +20 -6
  319. package/build/src/start/server/DevToolsPluginManager.js.map +1 -1
  320. package/build/src/start/server/DevToolsPluginServerHelpers.js +83 -0
  321. package/build/src/start/server/DevToolsPluginServerHelpers.js.map +1 -0
  322. package/build/src/start/server/DevelopmentSession.js +41 -24
  323. package/build/src/start/server/DevelopmentSession.js.map +1 -1
  324. package/build/src/start/server/MCP.js +10 -3
  325. package/build/src/start/server/MCP.js.map +1 -1
  326. package/build/src/start/server/MCPDevToolsPluginCLIExtensions.js +15 -5
  327. package/build/src/start/server/MCPDevToolsPluginCLIExtensions.js.map +1 -1
  328. package/build/src/start/server/UrlCreator.js +14 -1
  329. package/build/src/start/server/UrlCreator.js.map +1 -1
  330. package/build/src/start/server/createMCPDevToolsExtensionSchema.js +18 -4
  331. package/build/src/start/server/createMCPDevToolsExtensionSchema.js.map +1 -1
  332. package/build/src/start/server/getStaticRenderFunctions.js +13 -24
  333. package/build/src/start/server/getStaticRenderFunctions.js.map +1 -1
  334. package/build/src/start/server/metro/MetroBundlerDevServer.js +245 -114
  335. package/build/src/start/server/metro/MetroBundlerDevServer.js.map +1 -1
  336. package/build/src/start/server/metro/MetroTerminalReporter.js +67 -16
  337. package/build/src/start/server/metro/MetroTerminalReporter.js.map +1 -1
  338. package/build/src/start/server/metro/TerminalReporter.js +22 -4
  339. package/build/src/start/server/metro/TerminalReporter.js.map +1 -1
  340. package/build/src/start/server/metro/createExpoAutolinkingResolver.js +25 -12
  341. package/build/src/start/server/metro/createExpoAutolinkingResolver.js.map +1 -1
  342. package/build/src/start/server/metro/createExpoFallbackResolver.js +39 -0
  343. package/build/src/start/server/metro/createExpoFallbackResolver.js.map +1 -1
  344. package/build/src/start/server/metro/createFileMap-fork.js +196 -0
  345. package/build/src/start/server/metro/createFileMap-fork.js.map +1 -0
  346. package/build/src/start/server/metro/createServerComponentsMiddleware.js +22 -22
  347. package/build/src/start/server/metro/createServerComponentsMiddleware.js.map +1 -1
  348. package/build/src/start/server/metro/createServerRouteMiddleware.js.map +1 -1
  349. package/build/src/start/server/metro/createTypescriptResolver.js +410 -0
  350. package/build/src/start/server/metro/createTypescriptResolver.js.map +1 -0
  351. package/build/src/start/server/metro/debugging/MessageHandler.js.map +1 -1
  352. package/build/src/start/server/metro/debugging/attachAtlas.js +3 -3
  353. package/build/src/start/server/metro/debugging/attachAtlas.js.map +1 -1
  354. package/build/src/start/server/metro/debugging/createDebugMiddleware.js +6 -5
  355. package/build/src/start/server/metro/debugging/createDebugMiddleware.js.map +1 -1
  356. package/build/src/start/server/metro/debugging/createHandlersFactory.js.map +1 -1
  357. package/build/src/start/server/metro/debugging/messageHandlers/NetworkResponse.js +20 -4
  358. package/build/src/start/server/metro/debugging/messageHandlers/NetworkResponse.js.map +1 -1
  359. package/build/src/start/server/metro/debugging/pageIsSupported.js.map +1 -1
  360. package/build/src/start/server/metro/dev-server/compression.js.map +1 -1
  361. package/build/src/start/server/metro/dev-server/createMessageSocket.js +13 -2
  362. package/build/src/start/server/metro/dev-server/createMessageSocket.js.map +1 -1
  363. package/build/src/start/server/metro/dev-server/createMetroMiddleware.js +9 -2
  364. package/build/src/start/server/metro/dev-server/createMetroMiddleware.js.map +1 -1
  365. package/build/src/start/server/metro/dev-server/utils/socketMessages.js +3 -3
  366. package/build/src/start/server/metro/dev-server/utils/socketMessages.js.map +1 -1
  367. package/build/src/start/server/metro/errors/FailedToResolveNativeOnlyModuleError.js.map +1 -1
  368. package/build/src/start/server/metro/externals.js +4 -4
  369. package/build/src/start/server/metro/externals.js.map +1 -1
  370. package/build/src/start/server/metro/fetchRouterManifest.js +3 -3
  371. package/build/src/start/server/metro/fetchRouterManifest.js.map +1 -1
  372. package/build/src/start/server/metro/getCssModulesFromBundler.js +3 -3
  373. package/build/src/start/server/metro/getCssModulesFromBundler.js.map +1 -1
  374. package/build/src/start/server/metro/instantiateMetro.js +141 -57
  375. package/build/src/start/server/metro/instantiateMetro.js.map +1 -1
  376. package/build/src/start/server/metro/log-box/LogBoxLog.js.map +1 -1
  377. package/build/src/start/server/metro/log-box/LogBoxSymbolication.js +4 -4
  378. package/build/src/start/server/metro/log-box/LogBoxSymbolication.js.map +1 -1
  379. package/build/src/start/server/metro/log-box/formatProjectFilePath.js +3 -3
  380. package/build/src/start/server/metro/log-box/formatProjectFilePath.js.map +1 -1
  381. package/build/src/start/server/metro/metroErrorInterface.js +16 -13
  382. package/build/src/start/server/metro/metroErrorInterface.js.map +1 -1
  383. package/build/src/start/server/metro/metroErrors.js +3 -3
  384. package/build/src/start/server/metro/metroErrors.js.map +1 -1
  385. package/build/src/start/server/metro/metroWatchTypeScriptFiles.js +48 -16
  386. package/build/src/start/server/metro/metroWatchTypeScriptFiles.js.map +1 -1
  387. package/build/src/start/server/metro/resolveLoader.js +3 -3
  388. package/build/src/start/server/metro/resolveLoader.js.map +1 -1
  389. package/build/src/start/server/metro/router.js +23 -14
  390. package/build/src/start/server/metro/router.js.map +1 -1
  391. package/build/src/start/server/metro/runServer-fork.js +13 -10
  392. package/build/src/start/server/metro/runServer-fork.js.map +1 -1
  393. package/build/src/start/server/metro/serializeHtml.js +29 -13
  394. package/build/src/start/server/metro/serializeHtml.js.map +1 -1
  395. package/build/src/start/server/metro/waitForMetroToObserveTypeScriptFile.js +36 -34
  396. package/build/src/start/server/metro/waitForMetroToObserveTypeScriptFile.js.map +1 -1
  397. package/build/src/start/server/metro/withMetroErrorReportingResolver.js +53 -30
  398. package/build/src/start/server/metro/withMetroErrorReportingResolver.js.map +1 -1
  399. package/build/src/start/server/metro/withMetroMultiPlatform.js +187 -126
  400. package/build/src/start/server/metro/withMetroMultiPlatform.js.map +1 -1
  401. package/build/src/start/server/metro/withMetroResolvers.js +4 -4
  402. package/build/src/start/server/metro/withMetroResolvers.js.map +1 -1
  403. package/build/src/start/server/middleware/ContextModuleSourceMapsMiddleware.js.map +1 -1
  404. package/build/src/start/server/middleware/CorsMiddleware.js +3 -3
  405. package/build/src/start/server/middleware/CorsMiddleware.js.map +1 -1
  406. package/build/src/start/server/middleware/CreateFileMiddleware.js.map +1 -1
  407. package/build/src/start/server/middleware/DevToolsPluginMiddleware.js +60 -9
  408. package/build/src/start/server/middleware/DevToolsPluginMiddleware.js.map +1 -1
  409. package/build/src/start/server/middleware/DomComponentsMiddleware.js +30 -17
  410. package/build/src/start/server/middleware/DomComponentsMiddleware.js.map +1 -1
  411. package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js +6 -4
  412. package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js.map +1 -1
  413. package/build/src/start/server/middleware/ExpoMiddleware.js +3 -3
  414. package/build/src/start/server/middleware/ExpoMiddleware.js.map +1 -1
  415. package/build/src/start/server/middleware/FaviconMiddleware.js.map +1 -1
  416. package/build/src/start/server/middleware/HistoryFallbackMiddleware.js.map +1 -1
  417. package/build/src/start/server/middleware/InterstitialPageMiddleware.js +13 -8
  418. package/build/src/start/server/middleware/InterstitialPageMiddleware.js.map +1 -1
  419. package/build/src/start/server/middleware/ManifestMiddleware.js +19 -47
  420. package/build/src/start/server/middleware/ManifestMiddleware.js.map +1 -1
  421. package/build/src/start/server/middleware/OpenMiddleware.js +150 -0
  422. package/build/src/start/server/middleware/OpenMiddleware.js.map +1 -0
  423. package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js +13 -4
  424. package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js.map +1 -1
  425. package/build/src/start/server/middleware/ServeStaticMiddleware.js +2 -9
  426. package/build/src/start/server/middleware/ServeStaticMiddleware.js.map +1 -1
  427. package/build/src/start/server/middleware/domPolyfills.js +60 -0
  428. package/build/src/start/server/middleware/domPolyfills.js.map +1 -0
  429. package/build/src/start/server/middleware/inspector/JsInspector.js +6 -31
  430. package/build/src/start/server/middleware/inspector/JsInspector.js.map +1 -1
  431. package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js +14 -24
  432. package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js.map +1 -1
  433. package/build/src/start/server/middleware/inspector/middlwareMutations.js +3 -3
  434. package/build/src/start/server/middleware/inspector/middlwareMutations.js.map +1 -1
  435. package/build/src/start/server/middleware/metroOptions.js +15 -14
  436. package/build/src/start/server/middleware/metroOptions.js.map +1 -1
  437. package/build/src/start/server/middleware/mutations.js +3 -3
  438. package/build/src/start/server/middleware/mutations.js.map +1 -1
  439. package/build/src/start/server/middleware/openHandlers.js +157 -0
  440. package/build/src/start/server/middleware/openHandlers.js.map +1 -0
  441. package/build/src/start/server/middleware/resolveAssets.js +4 -4
  442. package/build/src/start/server/middleware/resolveAssets.js.map +1 -1
  443. package/build/src/start/server/middleware/resolvePlatform.js +9 -7
  444. package/build/src/start/server/middleware/resolvePlatform.js.map +1 -1
  445. package/build/src/start/server/middleware/resolveRuntimeVersionWithExpoUpdatesAsync.js.map +1 -1
  446. package/build/src/start/server/openPlatforms.js.map +1 -1
  447. package/build/src/start/server/platformBundlers.js +3 -1
  448. package/build/src/start/server/platformBundlers.js.map +1 -1
  449. package/build/src/start/server/serverLogLikeMetro.js +13 -36
  450. package/build/src/start/server/serverLogLikeMetro.js.map +1 -1
  451. package/build/src/start/server/type-generation/expo-env.js +3 -3
  452. package/build/src/start/server/type-generation/expo-env.js.map +1 -1
  453. package/build/src/start/server/type-generation/routes.js +14 -55
  454. package/build/src/start/server/type-generation/routes.js.map +1 -1
  455. package/build/src/start/server/type-generation/startTypescriptTypeGeneration.js.map +1 -1
  456. package/build/src/start/server/type-generation/tsconfig.js +5 -5
  457. package/build/src/start/server/type-generation/tsconfig.js.map +1 -1
  458. package/build/src/start/server/webTemplate.js +12 -10
  459. package/build/src/start/server/webTemplate.js.map +1 -1
  460. package/build/src/start/server/webpack/WebpackBundlerDevServer.js +3 -3
  461. package/build/src/start/server/webpack/WebpackBundlerDevServer.js.map +1 -1
  462. package/build/src/start/server/webpack/formatWebpackMessages.js.map +1 -1
  463. package/build/src/start/server/webpack/resolveFromProject.js +4 -4
  464. package/build/src/start/server/webpack/resolveFromProject.js.map +1 -1
  465. package/build/src/start/server/webpack/tls.js +3 -3
  466. package/build/src/start/server/webpack/tls.js.map +1 -1
  467. package/build/src/start/startAsync.js +21 -11
  468. package/build/src/start/startAsync.js.map +1 -1
  469. package/build/src/types.d.ts +2 -0
  470. package/build/src/utils/FileNotifier.js +1 -1
  471. package/build/src/utils/FileNotifier.js.map +1 -1
  472. package/build/src/utils/args.js +5 -5
  473. package/build/src/utils/args.js.map +1 -1
  474. package/build/src/utils/array.js +8 -8
  475. package/build/src/utils/array.js.map +1 -1
  476. package/build/src/utils/build-cache-providers/helpers.js +4 -4
  477. package/build/src/utils/build-cache-providers/helpers.js.map +1 -1
  478. package/build/src/utils/build-cache-providers/index.js +5 -5
  479. package/build/src/utils/build-cache-providers/index.js.map +1 -1
  480. package/build/src/utils/cocoapods.js +5 -5
  481. package/build/src/utils/cocoapods.js.map +1 -1
  482. package/build/src/utils/codesigning.js +12 -6
  483. package/build/src/utils/codesigning.js.map +1 -1
  484. package/build/src/utils/composeMetroIgnorePatterns.js +69 -0
  485. package/build/src/utils/composeMetroIgnorePatterns.js.map +1 -0
  486. package/build/src/utils/createTempPath.js +3 -3
  487. package/build/src/utils/createTempPath.js.map +1 -1
  488. package/build/src/utils/delay.js +4 -4
  489. package/build/src/utils/delay.js.map +1 -1
  490. package/build/src/utils/dir.js +21 -11
  491. package/build/src/utils/dir.js.map +1 -1
  492. package/build/src/utils/downloadAppAsync.js.map +1 -1
  493. package/build/src/utils/downloadExpoGoAsync.js +4 -4
  494. package/build/src/utils/downloadExpoGoAsync.js.map +1 -1
  495. package/build/src/utils/editor.js +4 -4
  496. package/build/src/utils/editor.js.map +1 -1
  497. package/build/src/utils/env.js +39 -13
  498. package/build/src/utils/env.js.map +1 -1
  499. package/build/src/utils/errors.js +6 -6
  500. package/build/src/utils/errors.js.map +1 -1
  501. package/build/src/utils/exit.js +15 -19
  502. package/build/src/utils/exit.js.map +1 -1
  503. package/build/src/utils/expoUpdatesCli.js +5 -5
  504. package/build/src/utils/expoUpdatesCli.js.map +1 -1
  505. package/build/src/utils/fetch.js +4 -4
  506. package/build/src/utils/fetch.js.map +1 -1
  507. package/build/src/utils/filePath.js +3 -29
  508. package/build/src/utils/filePath.js.map +1 -1
  509. package/build/src/utils/findUp.js +3 -3
  510. package/build/src/utils/findUp.js.map +1 -1
  511. package/build/src/utils/fn.js +3 -3
  512. package/build/src/utils/fn.js.map +1 -1
  513. package/build/src/utils/freeport.js +3 -3
  514. package/build/src/utils/freeport.js.map +1 -1
  515. package/build/src/utils/getOrPromptApplicationId.js +3 -5
  516. package/build/src/utils/getOrPromptApplicationId.js.map +1 -1
  517. package/build/src/utils/getRunningProcess.js +5 -5
  518. package/build/src/utils/getRunningProcess.js.map +1 -1
  519. package/build/src/utils/git.js +3 -3
  520. package/build/src/utils/git.js.map +1 -1
  521. package/build/src/utils/glob.js +3 -3
  522. package/build/src/utils/glob.js.map +1 -1
  523. package/build/src/utils/ip.js +4 -4
  524. package/build/src/utils/ip.js.map +1 -1
  525. package/build/src/utils/link.js +3 -3
  526. package/build/src/utils/link.js.map +1 -1
  527. package/build/src/utils/mergeGitIgnorePaths.js +10 -10
  528. package/build/src/utils/mergeGitIgnorePaths.js.map +1 -1
  529. package/build/src/utils/modifyConfigAsync.js +3 -3
  530. package/build/src/utils/modifyConfigAsync.js.map +1 -1
  531. package/build/src/utils/net.js +23 -4
  532. package/build/src/utils/net.js.map +1 -1
  533. package/build/src/utils/nodeEnv.js +6 -6
  534. package/build/src/utils/nodeEnv.js.map +1 -1
  535. package/build/src/utils/npm.js +10 -9
  536. package/build/src/utils/npm.js.map +1 -1
  537. package/build/src/utils/obj.js +4 -4
  538. package/build/src/utils/obj.js.map +1 -1
  539. package/build/src/utils/open.js +240 -11
  540. package/build/src/utils/open.js.map +1 -1
  541. package/build/src/utils/ora.js +4 -4
  542. package/build/src/utils/ora.js.map +1 -1
  543. package/build/src/utils/plist.js +5 -4
  544. package/build/src/utils/plist.js.map +1 -1
  545. package/build/src/utils/port.js +12 -5
  546. package/build/src/utils/port.js.map +1 -1
  547. package/build/src/utils/progress.js +4 -4
  548. package/build/src/utils/progress.js.map +1 -1
  549. package/build/src/utils/prompts.js +11 -11
  550. package/build/src/utils/prompts.js.map +1 -1
  551. package/build/src/utils/qr.js +5 -4
  552. package/build/src/utils/qr.js.map +1 -1
  553. package/build/src/utils/resolveArgs.js +10 -9
  554. package/build/src/utils/resolveArgs.js.map +1 -1
  555. package/build/src/utils/scheme.js +4 -4
  556. package/build/src/utils/scheme.js.map +1 -1
  557. package/build/src/utils/strings.js.map +1 -1
  558. package/build/src/utils/tar.js +8 -7
  559. package/build/src/utils/tar.js.map +1 -1
  560. package/build/src/utils/telemetry/Telemetry.js +5 -0
  561. package/build/src/utils/telemetry/Telemetry.js.map +1 -1
  562. package/build/src/utils/telemetry/clients/FetchClient.js +1 -1
  563. package/build/src/utils/telemetry/clients/FetchClient.js.map +1 -1
  564. package/build/src/utils/telemetry/clients/flushFetchDetached.js +5 -1
  565. package/build/src/utils/telemetry/clients/flushFetchDetached.js.map +1 -1
  566. package/build/src/utils/telemetry/index.js +4 -4
  567. package/build/src/utils/telemetry/index.js.map +1 -1
  568. package/build/src/utils/telemetry/utils/agent.js +42 -0
  569. package/build/src/utils/telemetry/utils/agent.js.map +1 -0
  570. package/build/src/utils/telemetry/utils/constants.js +3 -3
  571. package/build/src/utils/telemetry/utils/constants.js.map +1 -1
  572. package/build/src/utils/telemetry/utils/context.js +3 -2
  573. package/build/src/utils/telemetry/utils/context.js.map +1 -1
  574. package/build/src/utils/url.js +5 -17
  575. package/build/src/utils/url.js.map +1 -1
  576. package/build/src/utils/validateApplicationId.js +12 -12
  577. package/build/src/utils/validateApplicationId.js.map +1 -1
  578. package/build/src/utils/variadic.js +4 -4
  579. package/build/src/utils/variadic.js.map +1 -1
  580. package/build/src/whoami/index.js.map +1 -1
  581. package/changes.json +16 -36
  582. package/main.js +3 -0
  583. package/package.json +86 -90
  584. package/static/loading-page/index.html +45 -3
  585. package/static/template/+html.tsx +14 -5
  586. package/add-module.js +0 -8
  587. package/build/src/start/server/middleware/inspector/CdpClient.js +0 -81
  588. package/build/src/start/server/middleware/inspector/CdpClient.js.map +0 -1
  589. package/build/src/utils/resolveGlobal.js +0 -195
  590. package/build/src/utils/resolveGlobal.js.map +0 -1
  591. package/build/src/utils/resolveWatchFolders.js +0 -67
  592. package/build/src/utils/resolveWatchFolders.js.map +0 -1
  593. package/build/src/utils/tsconfig/evaluateTsConfig.js +0 -87
  594. package/build/src/utils/tsconfig/evaluateTsConfig.js.map +0 -1
  595. package/build/src/utils/tsconfig/loadTsConfigPaths.js +0 -84
  596. package/build/src/utils/tsconfig/loadTsConfigPaths.js.map +0 -1
  597. package/build/src/utils/tsconfig/matchTsConfigPathAlias.js +0 -94
  598. package/build/src/utils/tsconfig/matchTsConfigPathAlias.js.map +0 -1
  599. package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js +0 -62
  600. package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js.map +0 -1
@@ -5,20 +5,20 @@ Object.defineProperty(exports, "__esModule", {
5
5
  function _export(target, all) {
6
6
  for(var name in all)Object.defineProperty(target, name, {
7
7
  enumerable: true,
8
- get: all[name]
8
+ get: Object.getOwnPropertyDescriptor(all, name).get
9
9
  });
10
10
  }
11
11
  _export(exports, {
12
- event: function() {
12
+ get event () {
13
13
  return event;
14
14
  },
15
- instantiateMetroAsync: function() {
15
+ get instantiateMetroAsync () {
16
16
  return instantiateMetroAsync;
17
17
  },
18
- isWatchEnabled: function() {
18
+ get isWatchEnabled () {
19
19
  return isWatchEnabled;
20
20
  },
21
- loadMetroConfigAsync: function() {
21
+ get loadMetroConfigAsync () {
22
22
  return loadMetroConfigAsync;
23
23
  }
24
24
  });
@@ -50,23 +50,30 @@ function _formatBundlingError() {
50
50
  };
51
51
  return data;
52
52
  }
53
+ function _metrocore() {
54
+ const data = require("@expo/metro/metro-core");
55
+ _metrocore = function() {
56
+ return data;
57
+ };
58
+ return data;
59
+ }
53
60
  function _metroconfig() {
54
- const data = require("@expo/metro/metro-config");
61
+ const data = require("@expo/metro-config");
55
62
  _metroconfig = function() {
56
63
  return data;
57
64
  };
58
65
  return data;
59
66
  }
60
- function _metrocore() {
61
- const data = require("@expo/metro/metro-core");
62
- _metrocore = function() {
67
+ function _packedMap() {
68
+ const data = require("@expo/metro-config/build/serializer/packedMap");
69
+ _packedMap = function() {
63
70
  return data;
64
71
  };
65
72
  return data;
66
73
  }
67
- function _metroconfig1() {
68
- const data = require("@expo/metro-config");
69
- _metroconfig1 = function() {
74
+ function _sourceMap() {
75
+ const data = require("@expo/metro-config/build/serializer/sourceMap");
76
+ _sourceMap = function() {
70
77
  return data;
71
78
  };
72
79
  return data;
@@ -87,6 +94,7 @@ function _path() {
87
94
  }
88
95
  const _DevToolsPluginWebsocketEndpoint = require("./DevToolsPluginWebsocketEndpoint");
89
96
  const _MetroTerminalReporter = require("./MetroTerminalReporter");
97
+ const _createFileMapfork = require("./createFileMap-fork");
90
98
  const _attachAtlas = require("./debugging/attachAtlas");
91
99
  const _createDebugMiddleware = require("./debugging/createDebugMiddleware");
92
100
  const _createMetroMiddleware = require("./dev-server/createMetroMiddleware");
@@ -96,6 +104,7 @@ const _events = require("../../../events");
96
104
  const _log = require("../../../log");
97
105
  const _env = require("../../../utils/env");
98
106
  const _errors = require("../../../utils/errors");
107
+ const _DevToolsPluginManager = require("../DevToolsPluginManager");
99
108
  const _CorsMiddleware = require("../middleware/CorsMiddleware");
100
109
  const _createJsInspectorMiddleware = require("../middleware/inspector/createJsInspectorMiddleware");
101
110
  const _mutations = require("../middleware/mutations");
@@ -112,12 +121,22 @@ const event = (0, _events.events)('metro', (t)=>[
112
121
  function asWritable(input) {
113
122
  return input;
114
123
  }
115
- // Wrap terminal and polyfill console.log so we can log during bundling without breaking the indicator.
116
- class LogRespectingTerminal extends _metrocore().Terminal {
124
+ /**
125
+ * Extends Metro's Terminal to intercept all console methods so they don't
126
+ * corrupt the progress bar status lines.
127
+ *
128
+ * console.log/info are routed through terminal.log() (stdout, managed).
129
+ * console.warn/error are routed through logStderr() which clears the
130
+ * status from stdout before writing to stderr, then restores it.
131
+ * Without this, unmanaged stderr writes shift the cursor and cause
132
+ * progress bars to get stuck as permanent output.
133
+ */ class LogRespectingTerminal extends _metrocore().Terminal {
134
+ #stderrQueue;
135
+ #drainingStderr;
117
136
  constructor(stream){
118
137
  super(stream, {
119
138
  ttyPrint: true
120
- });
139
+ }), this.#stderrQueue = [], this.#drainingStderr = false;
121
140
  const sendLog = (...msg)=>{
122
141
  if (!msg.length) {
123
142
  this.log('');
@@ -128,21 +147,66 @@ class LogRespectingTerminal extends _metrocore().Terminal {
128
147
  // Flush the logs to the terminal immediately so logs at the end of the process are not lost.
129
148
  this.flush();
130
149
  };
150
+ const sendStderr = (...msg)=>{
151
+ if (!msg.length) {
152
+ this.logStderr('');
153
+ } else {
154
+ const [format, ...args] = msg;
155
+ this.logStderr(require('util').format(format, ...args));
156
+ }
157
+ };
131
158
  console.log = sendLog;
132
159
  console.info = sendLog;
160
+ console.warn = sendStderr;
161
+ console.error = sendStderr;
162
+ // NOTE(@kitten): We flush the stderr queue immediately when we're about to exit
163
+ process.on('exit', ()=>{
164
+ if (!this.#drainingStderr && this.#stderrQueue.length) {
165
+ this.#drainingStderr = true;
166
+ this.status('');
167
+ const lines = this.#stderrQueue.splice(0);
168
+ process.stderr.write(lines.join('\n') + '\n');
169
+ }
170
+ });
171
+ }
172
+ /** Write to stderr without corrupting Terminal's cursor tracking. */ logStderr(line) {
173
+ if (!process.stdout.isTTY) {
174
+ process.stderr.write(line + '\n');
175
+ return;
176
+ }
177
+ this.#stderrQueue.push(line);
178
+ this.#drainStderr();
179
+ }
180
+ async #drainStderr() {
181
+ if (this.#drainingStderr) return;
182
+ this.#drainingStderr = true;
183
+ while(this.#stderrQueue.length > 0){
184
+ // Clear status, flush to ensure it's removed from screen
185
+ const prev = this.status('');
186
+ await this.flush();
187
+ // Write to stderr while status is cleared
188
+ const lines = this.#stderrQueue.splice(0);
189
+ process.stderr.write(lines.join('\n') + '\n');
190
+ // Restore status
191
+ this.status(prev);
192
+ }
193
+ this.#drainingStderr = false;
133
194
  }
134
195
  }
135
196
  // Share one instance of Terminal for all instances of Metro.
136
197
  const terminal = new LogRespectingTerminal(process.stdout);
137
198
  async function loadMetroConfigAsync(projectRoot, options, { exp, isExporting, getMetroBundler }) {
138
- var _exp_experiments, _exp_experiments1, _exp_experiments2, _exp_experiments3, _config_resolver, _exp_experiments4, _exp_experiments5;
199
+ var _exp_experiments, _exp_experiments1, _exp_experiments2, _exp_experiments3, _exp_experiments4, _config_resolver, _exp_experiments5, _exp_experiments6;
139
200
  let reportEvent;
140
201
  // We're resolving a monorepo root, higher up than the `projectRoot`. If this
141
202
  // folder is different (presumably a parent) we're in a monorepo
142
203
  const serverRoot = (0, _paths().getMetroServerRoot)(projectRoot);
143
204
  const isWorkspace = serverRoot !== projectRoot;
144
- // Autolinking Module Resolution will be enabled by default when we're in a monorepo
145
- const autolinkingModuleResolutionEnabled = ((_exp_experiments = exp.experiments) == null ? void 0 : _exp_experiments.autolinkingModuleResolution) ?? isWorkspace;
205
+ // Out-of-tree platforms (tvos/macos) rely on the autolinking module resolver to remap the
206
+ // react-native package to their support package, and require autolinking module resolution
207
+ const targetsOutOfTreePlatform = (0, _config().getPlatformsFromConfig)(projectRoot, exp).some((platform)=>platform === 'tvos' || platform === 'macos');
208
+ // Autolinking Module Resolution is enabled by default in a monorepo or for out-of-tree platforms.
209
+ const autolinkingModuleResolutionEnabled = ((_exp_experiments = exp.experiments) == null ? void 0 : _exp_experiments.autolinkingModuleResolution) ?? (isWorkspace || targetsOutOfTreePlatform);
146
210
  const serverActionsEnabled = ((_exp_experiments1 = exp.experiments) == null ? void 0 : _exp_experiments1.reactServerFunctions) ?? _env.env.EXPO_UNSTABLE_SERVER_FUNCTIONS;
147
211
  const serverComponentsEnabled = !!((_exp_experiments2 = exp.experiments) == null ? void 0 : _exp_experiments2.reactServerComponentRoutes);
148
212
  if (serverActionsEnabled) {
@@ -156,13 +220,12 @@ async function loadMetroConfigAsync(projectRoot, options, { exp, isExporting, ge
156
220
  _log.Log.warn(`React 19 is enabled by default. Remove unused experiments.reactCanary flag.`);
157
221
  }
158
222
  const terminalReporter = new _MetroTerminalReporter.MetroTerminalReporter(serverRoot, terminal);
159
- // NOTE: Allow external tools to override the metro config. This is considered internal and unstable
160
- const configPath = _env.env.EXPO_OVERRIDE_METRO_CONFIG ?? undefined;
161
- const resolvedConfig = await (0, _metroconfig().resolveConfig)(configPath, projectRoot);
162
- const defaultConfig = (0, _metroconfig1().getDefaultConfig)(projectRoot);
163
- let config = resolvedConfig.isEmpty ? defaultConfig : await (0, _metroconfig().mergeConfig)(defaultConfig, resolvedConfig.config);
164
- // Set the watchfolders to include the projectRoot, as Metro assumes this
165
- // Force-override the reporter
223
+ let config = await (0, _metroconfig().loadUserConfig)({
224
+ projectRoot,
225
+ serverRoot,
226
+ // NOTE: Allow external tools to override the metro config. This is considered internal and unstable
227
+ overrideConfigPath: _env.env.EXPO_OVERRIDE_METRO_CONFIG ?? undefined
228
+ });
166
229
  config = {
167
230
  ...config,
168
231
  // See: `overrideConfigWithArguments` https://github.com/facebook/metro/blob/5059e26/packages/metro-config/src/loadConfig.js#L274-L339
@@ -173,10 +236,7 @@ async function loadMetroConfigAsync(projectRoot, options, { exp, isExporting, ge
173
236
  ...config.server,
174
237
  port: options.port ?? config.server.port
175
238
  },
176
- watchFolders: !config.watchFolders.includes(config.projectRoot) ? [
177
- config.projectRoot,
178
- ...config.watchFolders
179
- ] : config.watchFolders,
239
+ // Force-override the reporter
180
240
  reporter: {
181
241
  update (event) {
182
242
  terminalReporter.update(event);
@@ -186,25 +246,21 @@ async function loadMetroConfigAsync(projectRoot, options, { exp, isExporting, ge
186
246
  }
187
247
  }
188
248
  };
189
- // NOTE(@kitten): `useWatchman` is currently enabled by default, but it also disables `forceNodeFilesystemAPI`.
190
- // If we instead set it to the special value `null`, it gets enables but also bypasses the "native find" codepath,
191
- // which is slower than just using the Node filesystem API
192
- // See: https://github.com/facebook/metro/blob/b9c243f/packages/metro-file-map/src/index.js#L326
193
- // See: https://github.com/facebook/metro/blob/b9c243f/packages/metro/src/node-haste/DependencyGraph/createFileMap.js#L109
194
- if (config.resolver.useWatchman === true) {
195
- asWritable(config.resolver).useWatchman = null;
196
- }
249
+ // On-Demand Filesystem is enabled by default
250
+ // TODO(@kitten): Add to config-types JSON schema
251
+ const onDemandFilesystem = ((_exp_experiments4 = exp.experiments) == null ? void 0 : _exp_experiments4.onDemandFilesystem) ?? true;
252
+ asWritable(config.resolver).unstable_onDemandFilesystem = onDemandFilesystem;
197
253
  globalThis.__requireCycleIgnorePatterns = (_config_resolver = config.resolver) == null ? void 0 : _config_resolver.requireCycleIgnorePatterns;
198
254
  if (isExporting) {
199
- var _exp_experiments6;
255
+ var _exp_experiments7;
200
256
  // This token will be used in the asset plugin to ensure the path is correct for writing locally.
201
- asWritable(config.transformer).publicPath = `/assets?export_path=${(((_exp_experiments6 = exp.experiments) == null ? void 0 : _exp_experiments6.baseUrl) ?? '') + '/assets'}`;
257
+ asWritable(config.transformer).publicPath = `/assets?export_path=${(((_exp_experiments7 = exp.experiments) == null ? void 0 : _exp_experiments7.baseUrl) ?? '') + '/assets'}`;
202
258
  } else {
203
259
  asWritable(config.transformer).publicPath = '/assets/?unstable_path=.';
204
260
  }
205
261
  const platformBundlers = (0, _platformBundlers.getPlatformBundlers)(projectRoot, exp);
206
262
  const reduceLogs = (0, _events.shouldReduceLogs)();
207
- const reactCompilerEnabled = !!((_exp_experiments4 = exp.experiments) == null ? void 0 : _exp_experiments4.reactCompiler);
263
+ const reactCompilerEnabled = !!((_exp_experiments5 = exp.experiments) == null ? void 0 : _exp_experiments5.reactCompiler);
208
264
  if (!reduceLogs && reactCompilerEnabled) {
209
265
  _log.Log.log(_chalk().default.gray`React Compiler enabled`);
210
266
  }
@@ -224,15 +280,15 @@ async function loadMetroConfigAsync(projectRoot, options, { exp, isExporting, ge
224
280
  _log.Log.warn(`Experimental Expo LogBox is enabled.`);
225
281
  }
226
282
  if (!reduceLogs && serverActionsEnabled) {
227
- var _exp_experiments7;
228
- _log.Log.warn(`React Server Functions (beta) are enabled. Route rendering mode: ${((_exp_experiments7 = exp.experiments) == null ? void 0 : _exp_experiments7.reactServerComponentRoutes) ? 'server' : 'client'}`);
283
+ var _exp_experiments8;
284
+ _log.Log.warn(`React Server Functions (beta) are enabled. Route rendering mode: ${((_exp_experiments8 = exp.experiments) == null ? void 0 : _exp_experiments8.reactServerComponentRoutes) ? 'server' : 'client'}`);
229
285
  }
230
286
  config = await (0, _withMetroMultiPlatform.withMetroMultiPlatformAsync)(projectRoot, {
231
287
  config,
232
288
  exp,
233
289
  platformBundlers,
234
290
  serverRoot,
235
- isTsconfigPathsEnabled: ((_exp_experiments5 = exp.experiments) == null ? void 0 : _exp_experiments5.tsconfigPaths) ?? true,
291
+ isTsconfigPathsEnabled: ((_exp_experiments6 = exp.experiments) == null ? void 0 : _exp_experiments6.tsconfigPaths) ?? true,
236
292
  isAutolinkingResolverEnabled: autolinkingModuleResolutionEnabled,
237
293
  isExporting,
238
294
  isNamedRequiresEnabled: _env.env.EXPO_USE_METRO_REQUIRE,
@@ -261,7 +317,7 @@ async function loadMetroConfigAsync(projectRoot, options, { exp, isExporting, ge
261
317
  }
262
318
  async function instantiateMetroAsync(metroBundler, options, { isExporting, exp = (0, _config().getConfig)(metroBundler.projectRoot, {
263
319
  skipSDKVersionRequirement: true
264
- }).exp }) {
320
+ }).exp, devToolsPluginManager }) {
265
321
  var _metroConfig_server;
266
322
  const projectRoot = metroBundler.projectRoot;
267
323
  const getMetroBundler = ()=>metro.getBundler().getBundler();
@@ -270,15 +326,16 @@ async function instantiateMetroAsync(metroBundler, options, { isExporting, exp =
270
326
  isExporting,
271
327
  getMetroBundler
272
328
  });
273
- // Create the core middleware stack for Metro, including websocket listeners
274
- const { middleware, messagesSocket, eventsSocket, websocketEndpoints } = (0, _createMetroMiddleware.createMetroMiddleware)(metroConfig, {
275
- getMetroBundler
276
- });
277
329
  // Get local URL to Metro bundler server (typically configured as 127.0.0.1:8081)
278
330
  const serverBaseUrl = metroBundler.getUrlCreator().constructUrl({
279
331
  scheme: 'http',
280
332
  hostType: 'localhost'
281
333
  });
334
+ // Create the core middleware stack for Metro, including websocket listeners
335
+ const { middleware, messagesSocket, eventsSocket, websocketEndpoints } = (0, _createMetroMiddleware.createMetroMiddleware)(metroConfig, {
336
+ getMetroBundler,
337
+ serverBaseUrl
338
+ });
282
339
  if (!isExporting) {
283
340
  // Enable correct CORS headers for Expo Router features
284
341
  (0, _mutations.prependMiddleware)(middleware, (0, _CorsMiddleware.createCorsMiddleware)(exp));
@@ -289,7 +346,9 @@ async function instantiateMetroAsync(metroBundler, options, { isExporting, exp =
289
346
  });
290
347
  Object.assign(websocketEndpoints, debugWebsocketEndpoints);
291
348
  middleware.use(debugMiddleware);
292
- middleware.use('/_expo/debugger', (0, _createJsInspectorMiddleware.createJsInspectorMiddleware)());
349
+ middleware.use('/_expo/debugger', (0, _createJsInspectorMiddleware.createJsInspectorMiddleware)({
350
+ serverBaseUrl
351
+ }));
293
352
  // TODO(cedric): `enhanceMiddleware` is deprecated, but is currently used to unify the middleware stacks
294
353
  // See: https://github.com/facebook/metro/commit/22e85fde85ec454792a1b70eba4253747a2587a9
295
354
  // See: https://github.com/facebook/metro/commit/d0d554381f119bb80ab09dbd6a1d310b54737e52
@@ -302,6 +361,22 @@ async function instantiateMetroAsync(metroBundler, options, { isExporting, exp =
302
361
  };
303
362
  const devtoolsWebsocketEndpoints = (0, _DevToolsPluginWebsocketEndpoint.createDevToolsPluginWebsocketEndpoint)();
304
363
  Object.assign(websocketEndpoints, devtoolsWebsocketEndpoints);
364
+ // Register WebSocket endpoints contributed by DevTools plugins. A plugin's `serverEntryPoint`
365
+ // exports a `webSocketHandlers` map (route -> connection handler); each becomes a `ws` server
366
+ // mounted at `/_expo/plugins/<name>/<route>`, reusing Metro's exact-path upgrade dispatch (and
367
+ // its shutdown cleanup). Endpoints must be known before the server starts, so unlike the
368
+ // fetch-based request handler, plugin server modules are loaded eagerly here.
369
+ for (const plugin of (await devToolsPluginManager.queryPluginsAsync())){
370
+ try {
371
+ for (const [route, server] of Object.entries(await plugin.getWebSocketServersAsync())){
372
+ Object.assign(websocketEndpoints, {
373
+ [`${_DevToolsPluginManager.DevToolsPluginEndpoint}/${plugin.packageName}${route}`]: server
374
+ });
375
+ }
376
+ } catch (error) {
377
+ _log.Log.warn(`Skipping WebSocket endpoints for DevTools plugin "${plugin.packageName}": ${error.message ?? error}`);
378
+ }
379
+ }
305
380
  }
306
381
  // Attach Expo Atlas if enabled
307
382
  await (0, _attachAtlas.attachAtlasAsync)({
@@ -322,13 +397,16 @@ async function instantiateMetroAsync(metroBundler, options, { isExporting, exp =
322
397
  ca: tls.ca,
323
398
  requestCert: tls.requestCert
324
399
  } : undefined;
325
- const { address, server, hmrServer, metro } = await (0, _runServerfork.runServer)(metroBundler, metroConfig, {
326
- host: options.host,
327
- websocketEndpoints,
328
- watch: !isExporting && isWatchEnabled(),
329
- secureServerOptions
330
- }, {
331
- mockServer: isExporting
400
+ const watch = !isExporting && isWatchEnabled();
401
+ const { address, server, hmrServer, metro } = await (0, _createFileMapfork.replaceMetroFileMap)(()=>{
402
+ return (0, _runServerfork.runServer)(metroBundler, metroConfig, {
403
+ host: options.host,
404
+ websocketEndpoints,
405
+ watch,
406
+ secureServerOptions
407
+ }, {
408
+ mockServer: isExporting
409
+ });
332
410
  });
333
411
  event('instantiate', {
334
412
  atlas: _env.env.EXPO_ATLAS,
@@ -348,6 +426,11 @@ async function instantiateMetroAsync(metroBundler, options, { isExporting, exp =
348
426
  }
349
427
  }), fileBuffer);
350
428
  };
429
+ // Layered on top of the prune patch above. Both fresh worker results
430
+ // and cache hits flow through `Bundler.transformFile`, so wrapping
431
+ // here covers both.
432
+ (0, _packedMap().patchTransformFileForPackedMaps)(metro.getBundler().getBundler());
433
+ (0, _sourceMap().patchMetroSourceMapStringForPackedMaps)();
351
434
  setEventReporter(eventsSocket.reportMetroEvent);
352
435
  // This function ensures that modules in source maps are sorted in the same
353
436
  // order as in a plain JS bundle.
@@ -445,7 +528,8 @@ async function instantiateMetroAsync(metroBundler, options, { isExporting, exp =
445
528
  hmrServer,
446
529
  server,
447
530
  middleware,
448
- messageSocket: messagesSocket
531
+ messageSocket: messagesSocket,
532
+ address
449
533
  };
450
534
  }
451
535
  // TODO: Fork the entire transform function so we can simply regex the file contents for keywords instead.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/start/server/metro/instantiateMetro.ts"],"sourcesContent":["import { type ExpoConfig, getConfig } from '@expo/config';\nimport { getMetroServerRoot } from '@expo/config/paths';\nimport type { Reporter } from '@expo/metro/metro';\nimport type Bundler from '@expo/metro/metro/Bundler';\nimport type { ReadOnlyGraph } from '@expo/metro/metro/DeltaBundler';\nimport type { TransformOptions } from '@expo/metro/metro/DeltaBundler/Worker';\nimport MetroHmrServer, { Client as MetroHmrClient } from '@expo/metro/metro/HmrServer';\nimport RevisionNotFoundError from '@expo/metro/metro/IncrementalBundler/RevisionNotFoundError';\nimport type MetroServer from '@expo/metro/metro/Server';\nimport formatBundlingError from '@expo/metro/metro/lib/formatBundlingError';\nimport { mergeConfig, resolveConfig, type ConfigT } from '@expo/metro/metro-config';\nimport { Terminal } from '@expo/metro/metro-core';\nimport { createStableModuleIdFactory, getDefaultConfig } from '@expo/metro-config';\nimport chalk from 'chalk';\nimport http from 'http';\nimport path from 'path';\n\nimport { createDevToolsPluginWebsocketEndpoint } from './DevToolsPluginWebsocketEndpoint';\nimport { MetroBundlerDevServer } from './MetroBundlerDevServer';\nimport { MetroTerminalReporter } from './MetroTerminalReporter';\nimport { attachAtlasAsync } from './debugging/attachAtlas';\nimport { createDebugMiddleware } from './debugging/createDebugMiddleware';\nimport { createMetroMiddleware } from './dev-server/createMetroMiddleware';\nimport { runServer, type SecureServerOptions } from './runServer-fork';\nimport { withMetroMultiPlatformAsync } from './withMetroMultiPlatform';\nimport { events, shouldReduceLogs } from '../../../events';\nimport { Log } from '../../../log';\nimport { env } from '../../../utils/env';\nimport { CommandError } from '../../../utils/errors';\nimport { createCorsMiddleware } from '../middleware/CorsMiddleware';\nimport { createJsInspectorMiddleware } from '../middleware/inspector/createJsInspectorMiddleware';\nimport { prependMiddleware } from '../middleware/mutations';\nimport { getPlatformBundlers } from '../platformBundlers';\n\n// prettier-ignore\nexport const event = events('metro', (t) => [\n t.event<'config', {\n serverRoot: string;\n projectRoot: string;\n exporting: boolean;\n flags: {\n autolinkingModuleResolution: boolean;\n serverActions: boolean;\n serverComponents: boolean;\n reactCompiler: boolean;\n optimizeGraph?: boolean;\n treeshaking?: boolean;\n logbox?: boolean;\n };\n }>(),\n t.event<'instantiate', {\n atlas: boolean;\n workers: number | null;\n host: string | null;\n port: number | null;\n }>(),\n]);\n\n// NOTE(@kitten): We pass a custom createStableModuleIdFactory function into the Metro module ID factory sometimes\ninterface MetroServerWithModuleIdMod extends MetroServer {\n _createModuleId: ReturnType<typeof createStableModuleIdFactory> & ((path: string) => number);\n}\ninterface MetroHmrServerWithModuleIdMod extends MetroHmrServer<MetroHmrClient> {\n _createModuleId: ReturnType<typeof createStableModuleIdFactory> & ((path: string) => number);\n}\n\n// From expo/dev-server but with ability to use custom logger.\ntype MessageSocket = {\n broadcast: (method: string, params?: Record<string, any> | undefined) => void;\n};\n\n// TODO(@kitten): We assign this here to run server-side code bundled by metro\n// It's not isolated into a worker thread yet\n// Check `metro-require/require.ts` for how this setting is used\ndeclare namespace globalThis {\n let __requireCycleIgnorePatterns: readonly RegExp[] | undefined;\n}\n\nfunction asWritable<T>(input: T): { -readonly [K in keyof T]: T[K] } {\n return input;\n}\n\n// Wrap terminal and polyfill console.log so we can log during bundling without breaking the indicator.\nclass LogRespectingTerminal extends Terminal {\n constructor(stream: import('node:net').Socket | import('node:stream').Writable) {\n super(stream, { ttyPrint: true });\n\n const sendLog = (...msg: any[]) => {\n if (!msg.length) {\n this.log('');\n } else {\n const [format, ...args] = msg;\n this.log(format, ...args);\n }\n // Flush the logs to the terminal immediately so logs at the end of the process are not lost.\n this.flush();\n };\n\n console.log = sendLog;\n console.info = sendLog;\n }\n}\n\n// Share one instance of Terminal for all instances of Metro.\nconst terminal = new LogRespectingTerminal(process.stdout);\n\ninterface LoadMetroConfigOptions {\n maxWorkers?: number;\n port?: number;\n reporter?: Reporter;\n resetCache?: boolean;\n}\n\nexport async function loadMetroConfigAsync(\n projectRoot: string,\n options: LoadMetroConfigOptions,\n {\n exp,\n isExporting,\n getMetroBundler,\n }: { exp: ExpoConfig; isExporting: boolean; getMetroBundler: () => Bundler }\n) {\n let reportEvent: ((event: any) => void) | undefined;\n\n // We're resolving a monorepo root, higher up than the `projectRoot`. If this\n // folder is different (presumably a parent) we're in a monorepo\n const serverRoot = getMetroServerRoot(projectRoot);\n const isWorkspace = serverRoot !== projectRoot;\n\n // Autolinking Module Resolution will be enabled by default when we're in a monorepo\n const autolinkingModuleResolutionEnabled =\n exp.experiments?.autolinkingModuleResolution ?? isWorkspace;\n\n const serverActionsEnabled =\n exp.experiments?.reactServerFunctions ?? env.EXPO_UNSTABLE_SERVER_FUNCTIONS;\n const serverComponentsEnabled = !!exp.experiments?.reactServerComponentRoutes;\n if (serverActionsEnabled) {\n process.env.EXPO_UNSTABLE_SERVER_FUNCTIONS = '1';\n }\n\n // NOTE: Enable all the experimental Metro flags when RSC is enabled.\n if (serverComponentsEnabled || serverActionsEnabled) {\n process.env.EXPO_USE_METRO_REQUIRE = '1';\n }\n\n if (exp.experiments?.reactCanary) {\n Log.warn(`React 19 is enabled by default. Remove unused experiments.reactCanary flag.`);\n }\n\n const terminalReporter = new MetroTerminalReporter(serverRoot, terminal);\n\n // NOTE: Allow external tools to override the metro config. This is considered internal and unstable\n const configPath = env.EXPO_OVERRIDE_METRO_CONFIG ?? undefined;\n const resolvedConfig = await resolveConfig(configPath, projectRoot);\n const defaultConfig = getDefaultConfig(projectRoot);\n\n let config: ConfigT = resolvedConfig.isEmpty\n ? defaultConfig\n : await mergeConfig(defaultConfig, resolvedConfig.config);\n\n // Set the watchfolders to include the projectRoot, as Metro assumes this\n // Force-override the reporter\n config = {\n ...config,\n\n // See: `overrideConfigWithArguments` https://github.com/facebook/metro/blob/5059e26/packages/metro-config/src/loadConfig.js#L274-L339\n // Compare to `LoadOptions` type (disregard `reporter` as we don't expose this)\n resetCache: !!options.resetCache,\n maxWorkers: options.maxWorkers ?? config.maxWorkers,\n server: {\n ...config.server,\n port: options.port ?? config.server.port,\n },\n\n watchFolders: !config.watchFolders.includes(config.projectRoot)\n ? [config.projectRoot, ...config.watchFolders]\n : config.watchFolders,\n reporter: {\n update(event) {\n terminalReporter.update(event);\n if (reportEvent) {\n reportEvent(event);\n }\n },\n },\n };\n\n // NOTE(@kitten): `useWatchman` is currently enabled by default, but it also disables `forceNodeFilesystemAPI`.\n // If we instead set it to the special value `null`, it gets enables but also bypasses the \"native find\" codepath,\n // which is slower than just using the Node filesystem API\n // See: https://github.com/facebook/metro/blob/b9c243f/packages/metro-file-map/src/index.js#L326\n // See: https://github.com/facebook/metro/blob/b9c243f/packages/metro/src/node-haste/DependencyGraph/createFileMap.js#L109\n if (config.resolver.useWatchman === true) {\n asWritable(config.resolver).useWatchman = null as any;\n }\n\n globalThis.__requireCycleIgnorePatterns = config.resolver?.requireCycleIgnorePatterns;\n\n if (isExporting) {\n // This token will be used in the asset plugin to ensure the path is correct for writing locally.\n asWritable(config.transformer).publicPath = `/assets?export_path=${\n (exp.experiments?.baseUrl ?? '') + '/assets'\n }`;\n } else {\n asWritable(config.transformer).publicPath = '/assets/?unstable_path=.';\n }\n\n const platformBundlers = getPlatformBundlers(projectRoot, exp);\n const reduceLogs = shouldReduceLogs();\n\n const reactCompilerEnabled = !!exp.experiments?.reactCompiler;\n if (!reduceLogs && reactCompilerEnabled) {\n Log.log(chalk.gray`React Compiler enabled`);\n }\n\n if (!reduceLogs && autolinkingModuleResolutionEnabled) {\n Log.log(chalk.gray`Expo Autolinking module resolution enabled`);\n }\n\n if (env.EXPO_UNSTABLE_TREE_SHAKING && !env.EXPO_UNSTABLE_METRO_OPTIMIZE_GRAPH) {\n throw new CommandError(\n 'EXPO_UNSTABLE_TREE_SHAKING requires EXPO_UNSTABLE_METRO_OPTIMIZE_GRAPH to be enabled.'\n );\n }\n\n if (!reduceLogs && env.EXPO_UNSTABLE_METRO_OPTIMIZE_GRAPH) {\n Log.warn(`Experimental bundle optimization is enabled.`);\n }\n if (!reduceLogs && env.EXPO_UNSTABLE_TREE_SHAKING) {\n Log.warn(`Experimental tree shaking is enabled.`);\n }\n if (!reduceLogs && env.EXPO_UNSTABLE_LOG_BOX) {\n Log.warn(`Experimental Expo LogBox is enabled.`);\n }\n\n if (!reduceLogs && serverActionsEnabled) {\n Log.warn(\n `React Server Functions (beta) are enabled. Route rendering mode: ${exp.experiments?.reactServerComponentRoutes ? 'server' : 'client'}`\n );\n }\n\n config = await withMetroMultiPlatformAsync(projectRoot, {\n config,\n exp,\n platformBundlers,\n serverRoot,\n isTsconfigPathsEnabled: exp.experiments?.tsconfigPaths ?? true,\n isAutolinkingResolverEnabled: autolinkingModuleResolutionEnabled,\n isExporting,\n isNamedRequiresEnabled: env.EXPO_USE_METRO_REQUIRE,\n isReactServerComponentsEnabled: serverComponentsEnabled,\n getMetroBundler,\n });\n\n event('config', {\n serverRoot: event.path(serverRoot),\n projectRoot: event.path(projectRoot),\n exporting: isExporting,\n flags: {\n autolinkingModuleResolution: autolinkingModuleResolutionEnabled,\n serverActions: serverActionsEnabled,\n serverComponents: serverComponentsEnabled,\n reactCompiler: reactCompilerEnabled,\n optimizeGraph: env.EXPO_UNSTABLE_METRO_OPTIMIZE_GRAPH,\n treeshaking: env.EXPO_UNSTABLE_TREE_SHAKING,\n logbox: env.EXPO_UNSTABLE_LOG_BOX,\n },\n });\n\n return {\n config,\n setEventReporter: (logger: (event: any) => void) => (reportEvent = logger),\n reporter: terminalReporter,\n };\n}\n\ninterface InstantiateMetroConfigOptions extends LoadMetroConfigOptions {\n host?: string;\n}\n\n/** The most generic possible setup for Metro bundler. */\nexport async function instantiateMetroAsync(\n metroBundler: MetroBundlerDevServer,\n options: InstantiateMetroConfigOptions,\n {\n isExporting,\n exp = getConfig(metroBundler.projectRoot, {\n skipSDKVersionRequirement: true,\n }).exp,\n }: { isExporting: boolean; exp?: ExpoConfig }\n): Promise<{\n metro: MetroServer;\n hmrServer: MetroHmrServer<MetroHmrClient> | null;\n server: http.Server;\n middleware: any;\n messageSocket: MessageSocket;\n}> {\n const projectRoot = metroBundler.projectRoot;\n const getMetroBundler = () => metro.getBundler().getBundler();\n\n const {\n config: metroConfig,\n setEventReporter,\n reporter,\n } = await loadMetroConfigAsync(projectRoot, options, {\n exp,\n isExporting,\n getMetroBundler,\n });\n\n // Create the core middleware stack for Metro, including websocket listeners\n const { middleware, messagesSocket, eventsSocket, websocketEndpoints } = createMetroMiddleware(\n metroConfig,\n { getMetroBundler }\n );\n\n // Get local URL to Metro bundler server (typically configured as 127.0.0.1:8081)\n const serverBaseUrl = metroBundler\n .getUrlCreator()\n .constructUrl({ scheme: 'http', hostType: 'localhost' });\n\n if (!isExporting) {\n // Enable correct CORS headers for Expo Router features\n prependMiddleware(middleware, createCorsMiddleware(exp));\n\n // Enable debug middleware for CDP-related debugging\n const { debugMiddleware, debugWebsocketEndpoints } = createDebugMiddleware({\n serverBaseUrl,\n reporter,\n });\n Object.assign(websocketEndpoints, debugWebsocketEndpoints);\n middleware.use(debugMiddleware);\n middleware.use('/_expo/debugger', createJsInspectorMiddleware());\n\n // TODO(cedric): `enhanceMiddleware` is deprecated, but is currently used to unify the middleware stacks\n // See: https://github.com/facebook/metro/commit/22e85fde85ec454792a1b70eba4253747a2587a9\n // See: https://github.com/facebook/metro/commit/d0d554381f119bb80ab09dbd6a1d310b54737e52\n const customEnhanceMiddleware = metroConfig.server.enhanceMiddleware;\n asWritable(metroConfig.server).enhanceMiddleware = (\n metroMiddleware: any,\n server: MetroServer\n ) => {\n if (customEnhanceMiddleware) {\n metroMiddleware = customEnhanceMiddleware(metroMiddleware, server);\n }\n return middleware.use(metroMiddleware);\n };\n\n const devtoolsWebsocketEndpoints = createDevToolsPluginWebsocketEndpoint();\n Object.assign(websocketEndpoints, devtoolsWebsocketEndpoints);\n }\n\n // Attach Expo Atlas if enabled\n await attachAtlasAsync({\n isExporting,\n exp,\n projectRoot,\n middleware,\n metroConfig,\n // NOTE(cedric): reset the Atlas file once, and reuse it for static exports\n resetAtlasFile: isExporting,\n });\n\n // Support HTTPS based on the metro's tls server config\n // TODO(@kitten): Remove cast once `@expo/metro` is updated to a Metro version that supports the tls config\n const tls = (metroConfig.server as typeof metroConfig.server & { tls?: SecureServerOptions })\n ?.tls;\n const secureServerOptions = tls\n ? {\n key: tls.key,\n cert: tls.cert,\n ca: tls.ca,\n requestCert: tls.requestCert,\n }\n : undefined;\n\n const { address, server, hmrServer, metro } = await runServer(\n metroBundler,\n metroConfig,\n {\n host: options.host,\n websocketEndpoints,\n watch: !isExporting && isWatchEnabled(),\n secureServerOptions,\n },\n {\n mockServer: isExporting,\n }\n );\n\n event('instantiate', {\n atlas: env.EXPO_ATLAS,\n workers: metroConfig.maxWorkers ?? null,\n host: address?.address ?? null,\n port: address?.port ?? null,\n });\n\n // Patch transform file to remove inconvenient customTransformOptions which are only used in single well-known files.\n const originalTransformFile = metro\n .getBundler()\n .getBundler()\n .transformFile.bind(metro.getBundler().getBundler());\n\n metro.getBundler().getBundler().transformFile = async function (\n filePath: string,\n transformOptions: TransformOptions,\n fileBuffer?: Buffer\n ) {\n return originalTransformFile(\n filePath,\n pruneCustomTransformOptions(\n projectRoot,\n filePath,\n // Clone the options so we don't mutate the original.\n {\n ...transformOptions,\n customTransformOptions: {\n __proto__: null,\n ...transformOptions.customTransformOptions,\n },\n }\n ),\n fileBuffer\n );\n };\n\n setEventReporter(eventsSocket.reportMetroEvent);\n\n // This function ensures that modules in source maps are sorted in the same\n // order as in a plain JS bundle.\n metro._getSortedModules = function (this: MetroServerWithModuleIdMod, graph: ReadOnlyGraph) {\n const modules = [...graph.dependencies.values()];\n\n const ctx = {\n // TODO(@kitten): Increase type-safety here\n platform: graph.transformOptions.platform!,\n environment: graph.transformOptions.customTransformOptions?.environment,\n };\n // Assign IDs to modules in a consistent order\n for (const module of modules) {\n this._createModuleId(module.path, ctx);\n }\n // Sort by IDs\n return modules.sort(\n (a, b) => this._createModuleId(a.path, ctx) - this._createModuleId(b.path, ctx)\n );\n };\n\n if (hmrServer) {\n let hmrJSBundle:\n | typeof import('@expo/metro-config/build/serializer/fork/hmrJSBundle').default\n | typeof import('@expo/metro/metro/DeltaBundler/Serializers/hmrJSBundle').default;\n\n try {\n hmrJSBundle = require('@expo/metro-config/build/serializer/fork/hmrJSBundle').default;\n } catch {\n // TODO: Add fallback for monorepo tests up until the fork is merged.\n Log.warn('Failed to load HMR serializer from @expo/metro-config, using fallback version.');\n hmrJSBundle = require('@expo/metro/metro/DeltaBundler/Serializers/hmrJSBundle');\n }\n\n // Patch HMR Server to send more info to the `_createModuleId` function for deterministic module IDs and add support for serializing HMR updates the same as all other bundles.\n hmrServer._prepareMessage = async function (\n this: MetroHmrServerWithModuleIdMod,\n group,\n options,\n changeEvent\n ) {\n // Fork of https://github.com/facebook/metro/blob/3b3e0aaf725cfa6907bf2c8b5fbc0da352d29efe/packages/metro/src/HmrServer.js#L327-L393\n // with patch for `_createModuleId`.\n const logger = !options.isInitialUpdate ? changeEvent?.logger : null;\n try {\n const revPromise = this._bundler.getRevision(group.revisionId);\n if (!revPromise) {\n return {\n type: 'error',\n body: formatBundlingError(new RevisionNotFoundError(group.revisionId)),\n };\n }\n logger?.point('updateGraph_start');\n const { revision, delta } = await this._bundler.updateGraph(await revPromise, false);\n logger?.point('updateGraph_end');\n this._clientGroups.delete(group.revisionId);\n group.revisionId = revision.id;\n for (const client of group.clients) {\n client.revisionIds = client.revisionIds.filter(\n (revisionId) => revisionId !== group.revisionId\n );\n client.revisionIds.push(revision.id);\n }\n this._clientGroups.set(group.revisionId, group);\n logger?.point('serialize_start');\n // NOTE(EvanBacon): This is the patch\n const moduleIdContext = {\n // TODO(@kitten): Increase type-safety here\n platform: revision.graph.transformOptions.platform!,\n environment: revision.graph.transformOptions.customTransformOptions?.environment,\n };\n const hmrUpdate = hmrJSBundle(delta, revision.graph, {\n clientUrl: group.clientUrl,\n // NOTE(EvanBacon): This is also the patch\n createModuleId: (moduleId: string) => {\n return this._createModuleId(moduleId, moduleIdContext);\n },\n includeAsyncPaths: group.graphOptions.lazy,\n projectRoot: this._config.projectRoot,\n serverRoot: this._config.server.unstable_serverRoot ?? this._config.projectRoot,\n });\n logger?.point('serialize_end');\n return {\n type: 'update',\n body: {\n revisionId: revision.id,\n isInitialUpdate: options.isInitialUpdate,\n ...hmrUpdate,\n },\n };\n } catch (error: any) {\n const formattedError = formatBundlingError(error);\n this._config.reporter.update({\n type: 'bundling_error',\n error,\n });\n return {\n type: 'error',\n body: formattedError,\n };\n }\n };\n }\n\n return {\n metro,\n hmrServer,\n server,\n middleware,\n messageSocket: messagesSocket,\n };\n}\n\n// TODO: Fork the entire transform function so we can simply regex the file contents for keywords instead.\nfunction pruneCustomTransformOptions(\n projectRoot: string,\n filePath: string,\n transformOptions: TransformOptions\n): TransformOptions {\n // Normalize the filepath for cross platform checking.\n filePath = filePath.split(path.sep).join('/');\n\n if (\n transformOptions.customTransformOptions?.dom &&\n // The only generated file that needs the dom root is `expo/dom/entry.js`\n !filePath.match(/expo\\/dom\\/entry\\.js$/)\n ) {\n // Clear the dom root option if we aren't transforming the magic entry file, this ensures\n // that cached artifacts from other DOM component bundles can be reused.\n transformOptions.customTransformOptions.dom = 'true';\n }\n\n const routerRoot = transformOptions.customTransformOptions?.routerRoot;\n if (typeof routerRoot === 'string') {\n const isRouterEntry = /\\/expo-router\\/_ctx/.test(filePath);\n // The router root is used all over expo-router (`process.env.EXPO_ROUTER_ABS_APP_ROOT`, `process.env.EXPO_ROUTER_APP_ROOT`) so we'll just ignore the entire package.\n const isRouterModule = /\\/expo-router\\/build\\//.test(filePath);\n // Any page/router inside the expo-router app folder may access the `routerRoot` option to determine whether it's in the app folder\n const resolvedRouterRoot = path.resolve(projectRoot, routerRoot).split(path.sep).join('/');\n const isRouterRoute = path.isAbsolute(filePath) && filePath.startsWith(resolvedRouterRoot);\n\n // In any other file than the above, we enforce that we mustn't use `routerRoot`, and set it to an arbitrary value here (the default)\n // to ensure that the cache never invalidates when this value is changed\n if (!isRouterEntry && !isRouterModule && !isRouterRoute) {\n transformOptions.customTransformOptions!.routerRoot = 'app';\n }\n }\n\n if (\n transformOptions.customTransformOptions?.asyncRoutes &&\n // The async routes settings are also used in `expo-router/_ctx.ios.js` (and other platform variants) via `process.env.EXPO_ROUTER_IMPORT_MODE`\n !(filePath.match(/\\/expo-router\\/_ctx/) || filePath.match(/\\/expo-router\\/build\\//))\n ) {\n delete transformOptions.customTransformOptions.asyncRoutes;\n }\n\n if (\n transformOptions.customTransformOptions?.clientBoundaries &&\n // The client boundaries are only used in `expo/virtual/rsc.js` for production RSC exports.\n !filePath.match(/\\/expo\\/virtual\\/rsc\\.js$/)\n ) {\n delete transformOptions.customTransformOptions.clientBoundaries;\n }\n\n return transformOptions;\n}\n\n/**\n * Simplify and communicate if Metro is running without watching file updates,.\n * Exposed for testing.\n */\nexport function isWatchEnabled() {\n if (env.CI) {\n Log.log(\n chalk`Metro is running in CI mode, reloads are disabled. Remove {bold CI=true} to enable watch mode.`\n );\n }\n\n return !env.CI;\n}\n"],"names":["event","instantiateMetroAsync","isWatchEnabled","loadMetroConfigAsync","events","t","asWritable","input","LogRespectingTerminal","Terminal","constructor","stream","ttyPrint","sendLog","msg","length","log","format","args","flush","console","info","terminal","process","stdout","projectRoot","options","exp","isExporting","getMetroBundler","config","reportEvent","serverRoot","getMetroServerRoot","isWorkspace","autolinkingModuleResolutionEnabled","experiments","autolinkingModuleResolution","serverActionsEnabled","reactServerFunctions","env","EXPO_UNSTABLE_SERVER_FUNCTIONS","serverComponentsEnabled","reactServerComponentRoutes","EXPO_USE_METRO_REQUIRE","reactCanary","Log","warn","terminalReporter","MetroTerminalReporter","configPath","EXPO_OVERRIDE_METRO_CONFIG","undefined","resolvedConfig","resolveConfig","defaultConfig","getDefaultConfig","isEmpty","mergeConfig","resetCache","maxWorkers","server","port","watchFolders","includes","reporter","update","resolver","useWatchman","globalThis","__requireCycleIgnorePatterns","requireCycleIgnorePatterns","transformer","publicPath","baseUrl","platformBundlers","getPlatformBundlers","reduceLogs","shouldReduceLogs","reactCompilerEnabled","reactCompiler","chalk","gray","EXPO_UNSTABLE_TREE_SHAKING","EXPO_UNSTABLE_METRO_OPTIMIZE_GRAPH","CommandError","EXPO_UNSTABLE_LOG_BOX","withMetroMultiPlatformAsync","isTsconfigPathsEnabled","tsconfigPaths","isAutolinkingResolverEnabled","isNamedRequiresEnabled","isReactServerComponentsEnabled","path","exporting","flags","serverActions","serverComponents","optimizeGraph","treeshaking","logbox","setEventReporter","logger","metroBundler","getConfig","skipSDKVersionRequirement","metroConfig","metro","getBundler","middleware","messagesSocket","eventsSocket","websocketEndpoints","createMetroMiddleware","serverBaseUrl","getUrlCreator","constructUrl","scheme","hostType","prependMiddleware","createCorsMiddleware","debugMiddleware","debugWebsocketEndpoints","createDebugMiddleware","Object","assign","use","createJsInspectorMiddleware","customEnhanceMiddleware","enhanceMiddleware","metroMiddleware","devtoolsWebsocketEndpoints","createDevToolsPluginWebsocketEndpoint","attachAtlasAsync","resetAtlasFile","tls","secureServerOptions","key","cert","ca","requestCert","address","hmrServer","runServer","host","watch","mockServer","atlas","EXPO_ATLAS","workers","originalTransformFile","transformFile","bind","filePath","transformOptions","fileBuffer","pruneCustomTransformOptions","customTransformOptions","__proto__","reportMetroEvent","_getSortedModules","graph","modules","dependencies","values","ctx","platform","environment","module","_createModuleId","sort","a","b","hmrJSBundle","require","default","_prepareMessage","group","changeEvent","isInitialUpdate","revision","revPromise","_bundler","getRevision","revisionId","type","body","formatBundlingError","RevisionNotFoundError","point","delta","updateGraph","_clientGroups","delete","id","client","clients","revisionIds","filter","push","set","moduleIdContext","hmrUpdate","clientUrl","createModuleId","moduleId","includeAsyncPaths","graphOptions","lazy","_config","unstable_serverRoot","error","formattedError","messageSocket","split","sep","join","dom","match","routerRoot","isRouterEntry","test","isRouterModule","resolvedRouterRoot","resolve","isRouterRoute","isAbsolute","startsWith","asyncRoutes","clientBoundaries","CI"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../src/start/server/metro/instantiateMetro.ts"],"sourcesContent":["import { type ExpoConfig, getConfig, getPlatformsFromConfig } from '@expo/config';\nimport { getMetroServerRoot } from '@expo/config/paths';\nimport type { Reporter } from '@expo/metro/metro';\nimport type Bundler from '@expo/metro/metro/Bundler';\nimport type { ReadOnlyGraph } from '@expo/metro/metro/DeltaBundler';\nimport type { TransformOptions } from '@expo/metro/metro/DeltaBundler/Worker';\nimport type { Client as MetroHmrClient } from '@expo/metro/metro/HmrServer';\nimport type MetroHmrServer from '@expo/metro/metro/HmrServer';\nimport RevisionNotFoundError from '@expo/metro/metro/IncrementalBundler/RevisionNotFoundError';\nimport type MetroServer from '@expo/metro/metro/Server';\nimport formatBundlingError from '@expo/metro/metro/lib/formatBundlingError';\nimport { Terminal } from '@expo/metro/metro-core';\nimport type { createStableModuleIdFactory } from '@expo/metro-config';\nimport { loadUserConfig } from '@expo/metro-config';\nimport { patchTransformFileForPackedMaps } from '@expo/metro-config/build/serializer/packedMap';\nimport { patchMetroSourceMapStringForPackedMaps } from '@expo/metro-config/build/serializer/sourceMap';\nimport chalk from 'chalk';\nimport type http from 'http';\nimport path from 'path';\n\nimport { createDevToolsPluginWebsocketEndpoint } from './DevToolsPluginWebsocketEndpoint';\nimport type { MetroBundlerDevServer } from './MetroBundlerDevServer';\nimport { MetroTerminalReporter } from './MetroTerminalReporter';\nimport { replaceMetroFileMap } from './createFileMap-fork';\nimport { attachAtlasAsync } from './debugging/attachAtlas';\nimport { createDebugMiddleware } from './debugging/createDebugMiddleware';\nimport { createMetroMiddleware } from './dev-server/createMetroMiddleware';\nimport { runServer, type ServerAddressInfo, type SecureServerOptions } from './runServer-fork';\nimport { withMetroMultiPlatformAsync } from './withMetroMultiPlatform';\nimport { events, shouldReduceLogs } from '../../../events';\nimport { Log } from '../../../log';\nimport { env } from '../../../utils/env';\nimport { CommandError } from '../../../utils/errors';\nimport type DevToolsPluginManager from '../DevToolsPluginManager';\nimport { DevToolsPluginEndpoint } from '../DevToolsPluginManager';\nimport { createCorsMiddleware } from '../middleware/CorsMiddleware';\nimport { createJsInspectorMiddleware } from '../middleware/inspector/createJsInspectorMiddleware';\nimport { prependMiddleware } from '../middleware/mutations';\nimport { getPlatformBundlers } from '../platformBundlers';\n\n// prettier-ignore\nexport const event = events('metro', (t) => [\n t.event<'config', {\n serverRoot: string;\n projectRoot: string;\n exporting: boolean;\n flags: {\n autolinkingModuleResolution: boolean;\n serverActions: boolean;\n serverComponents: boolean;\n reactCompiler: boolean;\n optimizeGraph?: boolean;\n treeshaking?: boolean;\n logbox?: boolean;\n };\n }>(),\n t.event<'instantiate', {\n atlas: boolean;\n workers: number | null;\n host: string | null;\n port: number | null;\n }>(),\n]);\n\n// NOTE(@kitten): We pass a custom createStableModuleIdFactory function into the Metro module ID factory sometimes\ninterface MetroServerWithModuleIdMod extends MetroServer {\n _createModuleId: ReturnType<typeof createStableModuleIdFactory> & ((path: string) => number);\n}\ninterface MetroHmrServerWithModuleIdMod extends MetroHmrServer<MetroHmrClient> {\n _createModuleId: ReturnType<typeof createStableModuleIdFactory> & ((path: string) => number);\n}\n\n// From expo/dev-server but with ability to use custom logger.\ntype MessageSocket = {\n broadcast: (method: string, params?: Record<string, any> | undefined) => void;\n};\n\n// TODO(@kitten): We assign this here to run server-side code bundled by metro\n// It's not isolated into a worker thread yet\n// Check `metro-require/require.ts` for how this setting is used\ndeclare namespace globalThis {\n let __requireCycleIgnorePatterns: readonly RegExp[] | undefined;\n}\n\nfunction asWritable<T>(input: T): { -readonly [K in keyof T]: T[K] } {\n return input;\n}\n\n/**\n * Extends Metro's Terminal to intercept all console methods so they don't\n * corrupt the progress bar status lines.\n *\n * console.log/info are routed through terminal.log() (stdout, managed).\n * console.warn/error are routed through logStderr() which clears the\n * status from stdout before writing to stderr, then restores it.\n * Without this, unmanaged stderr writes shift the cursor and cause\n * progress bars to get stuck as permanent output.\n */\nclass LogRespectingTerminal extends Terminal {\n #stderrQueue: string[] = [];\n #drainingStderr = false;\n\n constructor(stream: import('node:net').Socket | import('node:stream').Writable) {\n super(stream, { ttyPrint: true });\n\n const sendLog = (...msg: any[]) => {\n if (!msg.length) {\n this.log('');\n } else {\n const [format, ...args] = msg;\n this.log(format, ...args);\n }\n // Flush the logs to the terminal immediately so logs at the end of the process are not lost.\n this.flush();\n };\n\n const sendStderr = (...msg: any[]) => {\n if (!msg.length) {\n this.logStderr('');\n } else {\n const [format, ...args] = msg;\n this.logStderr(require('util').format(format, ...args));\n }\n };\n\n console.log = sendLog;\n console.info = sendLog;\n console.warn = sendStderr;\n console.error = sendStderr;\n\n // NOTE(@kitten): We flush the stderr queue immediately when we're about to exit\n process.on('exit', () => {\n if (!this.#drainingStderr && this.#stderrQueue.length) {\n this.#drainingStderr = true;\n this.status('');\n const lines = this.#stderrQueue.splice(0);\n process.stderr.write(lines.join('\\n') + '\\n');\n }\n });\n }\n\n /** Write to stderr without corrupting Terminal's cursor tracking. */\n logStderr(line: string): void {\n if (!(process.stdout as any).isTTY) {\n process.stderr.write(line + '\\n');\n return;\n }\n this.#stderrQueue.push(line);\n this.#drainStderr();\n }\n\n async #drainStderr(): Promise<void> {\n if (this.#drainingStderr) return;\n this.#drainingStderr = true;\n\n while (this.#stderrQueue.length > 0) {\n // Clear status, flush to ensure it's removed from screen\n const prev = this.status('');\n await this.flush();\n\n // Write to stderr while status is cleared\n const lines = this.#stderrQueue.splice(0);\n process.stderr.write(lines.join('\\n') + '\\n');\n\n // Restore status\n this.status(prev);\n }\n\n this.#drainingStderr = false;\n }\n}\n\n// Share one instance of Terminal for all instances of Metro.\nconst terminal = new LogRespectingTerminal(process.stdout);\n\ninterface LoadMetroConfigOptions {\n maxWorkers?: number;\n port?: number;\n reporter?: Reporter;\n resetCache?: boolean;\n}\n\nexport async function loadMetroConfigAsync(\n projectRoot: string,\n options: LoadMetroConfigOptions,\n {\n exp,\n isExporting,\n getMetroBundler,\n }: { exp: ExpoConfig; isExporting: boolean; getMetroBundler: () => Bundler }\n) {\n let reportEvent: ((event: any) => void) | undefined;\n\n // We're resolving a monorepo root, higher up than the `projectRoot`. If this\n // folder is different (presumably a parent) we're in a monorepo\n const serverRoot = getMetroServerRoot(projectRoot);\n const isWorkspace = serverRoot !== projectRoot;\n\n // Out-of-tree platforms (tvos/macos) rely on the autolinking module resolver to remap the\n // react-native package to their support package, and require autolinking module resolution\n const targetsOutOfTreePlatform = getPlatformsFromConfig(projectRoot, exp).some(\n (platform) => platform === 'tvos' || platform === 'macos'\n );\n\n // Autolinking Module Resolution is enabled by default in a monorepo or for out-of-tree platforms.\n const autolinkingModuleResolutionEnabled =\n exp.experiments?.autolinkingModuleResolution ?? (isWorkspace || targetsOutOfTreePlatform);\n\n const serverActionsEnabled =\n exp.experiments?.reactServerFunctions ?? env.EXPO_UNSTABLE_SERVER_FUNCTIONS;\n const serverComponentsEnabled = !!exp.experiments?.reactServerComponentRoutes;\n if (serverActionsEnabled) {\n process.env.EXPO_UNSTABLE_SERVER_FUNCTIONS = '1';\n }\n\n // NOTE: Enable all the experimental Metro flags when RSC is enabled.\n if (serverComponentsEnabled || serverActionsEnabled) {\n process.env.EXPO_USE_METRO_REQUIRE = '1';\n }\n\n if (exp.experiments?.reactCanary) {\n Log.warn(`React 19 is enabled by default. Remove unused experiments.reactCanary flag.`);\n }\n\n const terminalReporter = new MetroTerminalReporter(serverRoot, terminal);\n\n let config = await loadUserConfig({\n projectRoot,\n serverRoot,\n // NOTE: Allow external tools to override the metro config. This is considered internal and unstable\n overrideConfigPath: env.EXPO_OVERRIDE_METRO_CONFIG ?? undefined,\n });\n\n config = {\n ...config,\n // See: `overrideConfigWithArguments` https://github.com/facebook/metro/blob/5059e26/packages/metro-config/src/loadConfig.js#L274-L339\n // Compare to `LoadOptions` type (disregard `reporter` as we don't expose this)\n resetCache: !!options.resetCache,\n maxWorkers: options.maxWorkers ?? config.maxWorkers,\n server: {\n ...config.server,\n port: options.port ?? config.server.port,\n },\n // Force-override the reporter\n reporter: {\n update(event) {\n terminalReporter.update(event);\n if (reportEvent) {\n reportEvent(event);\n }\n },\n },\n };\n\n // On-Demand Filesystem is enabled by default\n // TODO(@kitten): Add to config-types JSON schema\n const onDemandFilesystem = exp.experiments?.onDemandFilesystem ?? true;\n asWritable(config.resolver).unstable_onDemandFilesystem = onDemandFilesystem;\n\n globalThis.__requireCycleIgnorePatterns = config.resolver?.requireCycleIgnorePatterns;\n\n if (isExporting) {\n // This token will be used in the asset plugin to ensure the path is correct for writing locally.\n asWritable(config.transformer).publicPath = `/assets?export_path=${\n (exp.experiments?.baseUrl ?? '') + '/assets'\n }`;\n } else {\n asWritable(config.transformer).publicPath = '/assets/?unstable_path=.';\n }\n\n const platformBundlers = getPlatformBundlers(projectRoot, exp);\n const reduceLogs = shouldReduceLogs();\n\n const reactCompilerEnabled = !!exp.experiments?.reactCompiler;\n if (!reduceLogs && reactCompilerEnabled) {\n Log.log(chalk.gray`React Compiler enabled`);\n }\n\n if (!reduceLogs && autolinkingModuleResolutionEnabled) {\n Log.log(chalk.gray`Expo Autolinking module resolution enabled`);\n }\n\n if (env.EXPO_UNSTABLE_TREE_SHAKING && !env.EXPO_UNSTABLE_METRO_OPTIMIZE_GRAPH) {\n throw new CommandError(\n 'EXPO_UNSTABLE_TREE_SHAKING requires EXPO_UNSTABLE_METRO_OPTIMIZE_GRAPH to be enabled.'\n );\n }\n\n if (!reduceLogs && env.EXPO_UNSTABLE_METRO_OPTIMIZE_GRAPH) {\n Log.warn(`Experimental bundle optimization is enabled.`);\n }\n if (!reduceLogs && env.EXPO_UNSTABLE_TREE_SHAKING) {\n Log.warn(`Experimental tree shaking is enabled.`);\n }\n if (!reduceLogs && env.EXPO_UNSTABLE_LOG_BOX) {\n Log.warn(`Experimental Expo LogBox is enabled.`);\n }\n\n if (!reduceLogs && serverActionsEnabled) {\n Log.warn(\n `React Server Functions (beta) are enabled. Route rendering mode: ${exp.experiments?.reactServerComponentRoutes ? 'server' : 'client'}`\n );\n }\n\n config = await withMetroMultiPlatformAsync(projectRoot, {\n config,\n exp,\n platformBundlers,\n serverRoot,\n isTsconfigPathsEnabled: exp.experiments?.tsconfigPaths ?? true,\n isAutolinkingResolverEnabled: autolinkingModuleResolutionEnabled,\n isExporting,\n isNamedRequiresEnabled: env.EXPO_USE_METRO_REQUIRE,\n isReactServerComponentsEnabled: serverComponentsEnabled,\n getMetroBundler,\n });\n\n event('config', {\n serverRoot: event.path(serverRoot),\n projectRoot: event.path(projectRoot),\n exporting: isExporting,\n flags: {\n autolinkingModuleResolution: autolinkingModuleResolutionEnabled,\n serverActions: serverActionsEnabled,\n serverComponents: serverComponentsEnabled,\n reactCompiler: reactCompilerEnabled,\n optimizeGraph: env.EXPO_UNSTABLE_METRO_OPTIMIZE_GRAPH,\n treeshaking: env.EXPO_UNSTABLE_TREE_SHAKING,\n logbox: env.EXPO_UNSTABLE_LOG_BOX,\n },\n });\n\n return {\n config,\n setEventReporter: (logger: (event: any) => void) => (reportEvent = logger),\n reporter: terminalReporter,\n };\n}\n\ninterface InstantiateMetroConfigOptions extends LoadMetroConfigOptions {\n host?: string;\n}\n\n/** The most generic possible setup for Metro bundler. */\nexport async function instantiateMetroAsync(\n metroBundler: MetroBundlerDevServer,\n options: InstantiateMetroConfigOptions,\n {\n isExporting,\n exp = getConfig(metroBundler.projectRoot, {\n skipSDKVersionRequirement: true,\n }).exp,\n devToolsPluginManager,\n }: {\n isExporting: boolean;\n exp?: ExpoConfig;\n devToolsPluginManager: DevToolsPluginManager;\n }\n): Promise<{\n metro: MetroServer;\n hmrServer: MetroHmrServer<MetroHmrClient> | null;\n server: http.Server;\n address: ServerAddressInfo | null;\n middleware: any;\n messageSocket: MessageSocket;\n}> {\n const projectRoot = metroBundler.projectRoot;\n const getMetroBundler = () => metro.getBundler().getBundler();\n\n const {\n config: metroConfig,\n setEventReporter,\n reporter,\n } = await loadMetroConfigAsync(projectRoot, options, {\n exp,\n isExporting,\n getMetroBundler,\n });\n\n // Get local URL to Metro bundler server (typically configured as 127.0.0.1:8081)\n const serverBaseUrl = metroBundler\n .getUrlCreator()\n .constructUrl({ scheme: 'http', hostType: 'localhost' });\n\n // Create the core middleware stack for Metro, including websocket listeners\n const { middleware, messagesSocket, eventsSocket, websocketEndpoints } = createMetroMiddleware(\n metroConfig,\n { getMetroBundler, serverBaseUrl }\n );\n\n if (!isExporting) {\n // Enable correct CORS headers for Expo Router features\n prependMiddleware(middleware, createCorsMiddleware(exp));\n\n // Enable debug middleware for CDP-related debugging\n const { debugMiddleware, debugWebsocketEndpoints } = createDebugMiddleware({\n serverBaseUrl,\n reporter,\n });\n Object.assign(websocketEndpoints, debugWebsocketEndpoints);\n middleware.use(debugMiddleware);\n middleware.use('/_expo/debugger', createJsInspectorMiddleware({ serverBaseUrl }));\n\n // TODO(cedric): `enhanceMiddleware` is deprecated, but is currently used to unify the middleware stacks\n // See: https://github.com/facebook/metro/commit/22e85fde85ec454792a1b70eba4253747a2587a9\n // See: https://github.com/facebook/metro/commit/d0d554381f119bb80ab09dbd6a1d310b54737e52\n const customEnhanceMiddleware = metroConfig.server.enhanceMiddleware;\n asWritable(metroConfig.server).enhanceMiddleware = (\n metroMiddleware: any,\n server: MetroServer\n ) => {\n if (customEnhanceMiddleware) {\n metroMiddleware = customEnhanceMiddleware(metroMiddleware, server);\n }\n return middleware.use(metroMiddleware);\n };\n\n const devtoolsWebsocketEndpoints = createDevToolsPluginWebsocketEndpoint();\n Object.assign(websocketEndpoints, devtoolsWebsocketEndpoints);\n\n // Register WebSocket endpoints contributed by DevTools plugins. A plugin's `serverEntryPoint`\n // exports a `webSocketHandlers` map (route -> connection handler); each becomes a `ws` server\n // mounted at `/_expo/plugins/<name>/<route>`, reusing Metro's exact-path upgrade dispatch (and\n // its shutdown cleanup). Endpoints must be known before the server starts, so unlike the\n // fetch-based request handler, plugin server modules are loaded eagerly here.\n for (const plugin of await devToolsPluginManager.queryPluginsAsync()) {\n try {\n for (const [route, server] of Object.entries(await plugin.getWebSocketServersAsync())) {\n Object.assign(websocketEndpoints, {\n [`${DevToolsPluginEndpoint}/${plugin.packageName}${route}`]: server,\n });\n }\n } catch (error: any) {\n Log.warn(\n `Skipping WebSocket endpoints for DevTools plugin \"${plugin.packageName}\": ${error.message ?? error}`\n );\n }\n }\n }\n\n // Attach Expo Atlas if enabled\n await attachAtlasAsync({\n isExporting,\n exp,\n projectRoot,\n middleware,\n metroConfig,\n // NOTE(cedric): reset the Atlas file once, and reuse it for static exports\n resetAtlasFile: isExporting,\n });\n\n // Support HTTPS based on the metro's tls server config\n // TODO(@kitten): Remove cast once `@expo/metro` is updated to a Metro version that supports the tls config\n const tls = (metroConfig.server as typeof metroConfig.server & { tls?: SecureServerOptions })\n ?.tls;\n const secureServerOptions = tls\n ? {\n key: tls.key,\n cert: tls.cert,\n ca: tls.ca,\n requestCert: tls.requestCert,\n }\n : undefined;\n\n const watch = !isExporting && isWatchEnabled();\n\n const { address, server, hmrServer, metro } = await replaceMetroFileMap(() => {\n return runServer(\n metroBundler,\n metroConfig,\n {\n host: options.host,\n websocketEndpoints,\n watch,\n secureServerOptions,\n },\n {\n mockServer: isExporting,\n }\n );\n });\n\n event('instantiate', {\n atlas: env.EXPO_ATLAS,\n workers: metroConfig.maxWorkers ?? null,\n host: address?.address ?? null,\n port: address?.port ?? null,\n });\n\n // Patch transform file to remove inconvenient customTransformOptions which are only used in single well-known files.\n const originalTransformFile = metro\n .getBundler()\n .getBundler()\n .transformFile.bind(metro.getBundler().getBundler());\n\n metro.getBundler().getBundler().transformFile = async function (\n filePath: string,\n transformOptions: TransformOptions,\n fileBuffer?: Buffer\n ) {\n return originalTransformFile(\n filePath,\n pruneCustomTransformOptions(\n projectRoot,\n filePath,\n // Clone the options so we don't mutate the original.\n {\n ...transformOptions,\n customTransformOptions: {\n __proto__: null,\n ...transformOptions.customTransformOptions,\n },\n }\n ),\n fileBuffer\n );\n };\n\n // Layered on top of the prune patch above. Both fresh worker results\n // and cache hits flow through `Bundler.transformFile`, so wrapping\n // here covers both.\n patchTransformFileForPackedMaps(metro.getBundler().getBundler());\n patchMetroSourceMapStringForPackedMaps();\n\n setEventReporter(eventsSocket.reportMetroEvent);\n\n // This function ensures that modules in source maps are sorted in the same\n // order as in a plain JS bundle.\n metro._getSortedModules = function (this: MetroServerWithModuleIdMod, graph: ReadOnlyGraph) {\n const modules = [...graph.dependencies.values()];\n\n const ctx = {\n // TODO(@kitten): Increase type-safety here\n platform: graph.transformOptions.platform!,\n environment: graph.transformOptions.customTransformOptions?.environment,\n };\n // Assign IDs to modules in a consistent order\n for (const module of modules) {\n this._createModuleId(module.path, ctx);\n }\n // Sort by IDs\n return modules.sort(\n (a, b) => this._createModuleId(a.path, ctx) - this._createModuleId(b.path, ctx)\n );\n };\n\n if (hmrServer) {\n let hmrJSBundle:\n | typeof import('@expo/metro-config/build/serializer/fork/hmrJSBundle').default\n | typeof import('@expo/metro/metro/DeltaBundler/Serializers/hmrJSBundle').default;\n\n try {\n hmrJSBundle = require('@expo/metro-config/build/serializer/fork/hmrJSBundle').default;\n } catch {\n // TODO: Add fallback for monorepo tests up until the fork is merged.\n Log.warn('Failed to load HMR serializer from @expo/metro-config, using fallback version.');\n hmrJSBundle = require('@expo/metro/metro/DeltaBundler/Serializers/hmrJSBundle');\n }\n\n // Patch HMR Server to send more info to the `_createModuleId` function for deterministic module IDs and add support for serializing HMR updates the same as all other bundles.\n hmrServer._prepareMessage = async function (\n this: MetroHmrServerWithModuleIdMod,\n group,\n options,\n changeEvent\n ) {\n // Fork of https://github.com/facebook/metro/blob/3b3e0aaf725cfa6907bf2c8b5fbc0da352d29efe/packages/metro/src/HmrServer.js#L327-L393\n // with patch for `_createModuleId`.\n const logger = !options.isInitialUpdate ? changeEvent?.logger : null;\n try {\n const revPromise = this._bundler.getRevision(group.revisionId);\n if (!revPromise) {\n return {\n type: 'error',\n body: formatBundlingError(new RevisionNotFoundError(group.revisionId)),\n };\n }\n logger?.point('updateGraph_start');\n const { revision, delta } = await this._bundler.updateGraph(await revPromise, false);\n logger?.point('updateGraph_end');\n this._clientGroups.delete(group.revisionId);\n group.revisionId = revision.id;\n for (const client of group.clients) {\n client.revisionIds = client.revisionIds.filter(\n (revisionId) => revisionId !== group.revisionId\n );\n client.revisionIds.push(revision.id);\n }\n this._clientGroups.set(group.revisionId, group);\n logger?.point('serialize_start');\n // NOTE(EvanBacon): This is the patch\n const moduleIdContext = {\n // TODO(@kitten): Increase type-safety here\n platform: revision.graph.transformOptions.platform!,\n environment: revision.graph.transformOptions.customTransformOptions?.environment,\n };\n const hmrUpdate = hmrJSBundle(delta, revision.graph, {\n clientUrl: group.clientUrl,\n // NOTE(EvanBacon): This is also the patch\n createModuleId: (moduleId: string) => {\n return this._createModuleId(moduleId, moduleIdContext);\n },\n includeAsyncPaths: group.graphOptions.lazy,\n projectRoot: this._config.projectRoot,\n serverRoot: this._config.server.unstable_serverRoot ?? this._config.projectRoot,\n });\n logger?.point('serialize_end');\n return {\n type: 'update',\n body: {\n revisionId: revision.id,\n isInitialUpdate: options.isInitialUpdate,\n ...hmrUpdate,\n },\n };\n } catch (error: any) {\n const formattedError = formatBundlingError(error);\n this._config.reporter.update({\n type: 'bundling_error',\n error,\n });\n return {\n type: 'error',\n body: formattedError,\n };\n }\n };\n }\n\n return {\n metro,\n hmrServer,\n server,\n middleware,\n messageSocket: messagesSocket,\n address,\n };\n}\n\n// TODO: Fork the entire transform function so we can simply regex the file contents for keywords instead.\nfunction pruneCustomTransformOptions(\n projectRoot: string,\n filePath: string,\n transformOptions: TransformOptions\n): TransformOptions {\n // Normalize the filepath for cross platform checking.\n filePath = filePath.split(path.sep).join('/');\n\n if (\n transformOptions.customTransformOptions?.dom &&\n // The only generated file that needs the dom root is `expo/dom/entry.js`\n !filePath.match(/expo\\/dom\\/entry\\.js$/)\n ) {\n // Clear the dom root option if we aren't transforming the magic entry file, this ensures\n // that cached artifacts from other DOM component bundles can be reused.\n transformOptions.customTransformOptions.dom = 'true';\n }\n\n const routerRoot = transformOptions.customTransformOptions?.routerRoot;\n if (typeof routerRoot === 'string') {\n const isRouterEntry = /\\/expo-router\\/_ctx/.test(filePath);\n // The router root is used all over expo-router (`process.env.EXPO_ROUTER_ABS_APP_ROOT`, `process.env.EXPO_ROUTER_APP_ROOT`) so we'll just ignore the entire package.\n const isRouterModule = /\\/expo-router\\/build\\//.test(filePath);\n // Any page/router inside the expo-router app folder may access the `routerRoot` option to determine whether it's in the app folder\n const resolvedRouterRoot = path.resolve(projectRoot, routerRoot).split(path.sep).join('/');\n const isRouterRoute = path.isAbsolute(filePath) && filePath.startsWith(resolvedRouterRoot);\n\n // In any other file than the above, we enforce that we mustn't use `routerRoot`, and set it to an arbitrary value here (the default)\n // to ensure that the cache never invalidates when this value is changed\n if (!isRouterEntry && !isRouterModule && !isRouterRoute) {\n transformOptions.customTransformOptions!.routerRoot = 'app';\n }\n }\n\n if (\n transformOptions.customTransformOptions?.asyncRoutes &&\n // The async routes settings are also used in `expo-router/_ctx.ios.js` (and other platform variants) via `process.env.EXPO_ROUTER_IMPORT_MODE`\n !(filePath.match(/\\/expo-router\\/_ctx/) || filePath.match(/\\/expo-router\\/build\\//))\n ) {\n delete transformOptions.customTransformOptions.asyncRoutes;\n }\n\n if (\n transformOptions.customTransformOptions?.clientBoundaries &&\n // The client boundaries are only used in `expo/virtual/rsc.js` for production RSC exports.\n !filePath.match(/\\/expo\\/virtual\\/rsc\\.js$/)\n ) {\n delete transformOptions.customTransformOptions.clientBoundaries;\n }\n\n return transformOptions;\n}\n\n/**\n * Simplify and communicate if Metro is running without watching file updates,.\n * Exposed for testing.\n */\nexport function isWatchEnabled() {\n if (env.CI) {\n Log.log(\n chalk`Metro is running in CI mode, reloads are disabled. Remove {bold CI=true} to enable watch mode.`\n );\n }\n\n return !env.CI;\n}\n"],"names":["event","instantiateMetroAsync","isWatchEnabled","loadMetroConfigAsync","events","t","asWritable","input","LogRespectingTerminal","Terminal","stream","ttyPrint","sendLog","msg","length","log","format","args","flush","sendStderr","logStderr","require","console","info","warn","error","process","on","status","lines","splice","stderr","write","join","line","stdout","isTTY","push","prev","terminal","projectRoot","options","exp","isExporting","getMetroBundler","config","reportEvent","serverRoot","getMetroServerRoot","isWorkspace","targetsOutOfTreePlatform","getPlatformsFromConfig","some","platform","autolinkingModuleResolutionEnabled","experiments","autolinkingModuleResolution","serverActionsEnabled","reactServerFunctions","env","EXPO_UNSTABLE_SERVER_FUNCTIONS","serverComponentsEnabled","reactServerComponentRoutes","EXPO_USE_METRO_REQUIRE","reactCanary","Log","terminalReporter","MetroTerminalReporter","loadUserConfig","overrideConfigPath","EXPO_OVERRIDE_METRO_CONFIG","undefined","resetCache","maxWorkers","server","port","reporter","update","onDemandFilesystem","resolver","unstable_onDemandFilesystem","globalThis","__requireCycleIgnorePatterns","requireCycleIgnorePatterns","transformer","publicPath","baseUrl","platformBundlers","getPlatformBundlers","reduceLogs","shouldReduceLogs","reactCompilerEnabled","reactCompiler","chalk","gray","EXPO_UNSTABLE_TREE_SHAKING","EXPO_UNSTABLE_METRO_OPTIMIZE_GRAPH","CommandError","EXPO_UNSTABLE_LOG_BOX","withMetroMultiPlatformAsync","isTsconfigPathsEnabled","tsconfigPaths","isAutolinkingResolverEnabled","isNamedRequiresEnabled","isReactServerComponentsEnabled","path","exporting","flags","serverActions","serverComponents","optimizeGraph","treeshaking","logbox","setEventReporter","logger","metroBundler","getConfig","skipSDKVersionRequirement","devToolsPluginManager","metroConfig","metro","getBundler","serverBaseUrl","getUrlCreator","constructUrl","scheme","hostType","middleware","messagesSocket","eventsSocket","websocketEndpoints","createMetroMiddleware","prependMiddleware","createCorsMiddleware","debugMiddleware","debugWebsocketEndpoints","createDebugMiddleware","Object","assign","use","createJsInspectorMiddleware","customEnhanceMiddleware","enhanceMiddleware","metroMiddleware","devtoolsWebsocketEndpoints","createDevToolsPluginWebsocketEndpoint","plugin","queryPluginsAsync","route","entries","getWebSocketServersAsync","DevToolsPluginEndpoint","packageName","message","attachAtlasAsync","resetAtlasFile","tls","secureServerOptions","key","cert","ca","requestCert","watch","address","hmrServer","replaceMetroFileMap","runServer","host","mockServer","atlas","EXPO_ATLAS","workers","originalTransformFile","transformFile","bind","filePath","transformOptions","fileBuffer","pruneCustomTransformOptions","customTransformOptions","__proto__","patchTransformFileForPackedMaps","patchMetroSourceMapStringForPackedMaps","reportMetroEvent","_getSortedModules","graph","modules","dependencies","values","ctx","environment","module","_createModuleId","sort","a","b","hmrJSBundle","default","_prepareMessage","group","changeEvent","isInitialUpdate","revision","revPromise","_bundler","getRevision","revisionId","type","body","formatBundlingError","RevisionNotFoundError","point","delta","updateGraph","_clientGroups","delete","id","client","clients","revisionIds","filter","set","moduleIdContext","hmrUpdate","clientUrl","createModuleId","moduleId","includeAsyncPaths","graphOptions","lazy","_config","unstable_serverRoot","formattedError","messageSocket","split","sep","dom","match","routerRoot","isRouterEntry","test","isRouterModule","resolvedRouterRoot","resolve","isRouterRoute","isAbsolute","startsWith","asyncRoutes","clientBoundaries","CI"],"mappings":"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"}