@depup/expo__cli 55.0.23-depup.0 → 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 (594) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +13 -15
  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 +4 -4
  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 +45 -20
  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.map +1 -1
  57. package/build/src/export/embed/resolveOptions.js +7 -6
  58. package/build/src/export/embed/resolveOptions.js.map +1 -1
  59. package/build/src/export/embed/xcodeCompilerLogger.js +7 -7
  60. package/build/src/export/embed/xcodeCompilerLogger.js.map +1 -1
  61. package/build/src/export/exportApp.js +32 -28
  62. package/build/src/export/exportApp.js.map +1 -1
  63. package/build/src/export/exportAssets.js +5 -5
  64. package/build/src/export/exportAssets.js.map +1 -1
  65. package/build/src/export/exportAsync.js.map +1 -1
  66. package/build/src/export/exportDomComponents.js +5 -5
  67. package/build/src/export/exportDomComponents.js.map +1 -1
  68. package/build/src/export/exportHermes.js +23 -13
  69. package/build/src/export/exportHermes.js.map +1 -1
  70. package/build/src/export/exportStaticAsync.js +30 -21
  71. package/build/src/export/exportStaticAsync.js.map +1 -1
  72. package/build/src/export/favicon.js +26 -34
  73. package/build/src/export/favicon.js.map +1 -1
  74. package/build/src/export/getPublicExpoManifest.js.map +1 -1
  75. package/build/src/export/getResolvedLocales.js.map +1 -1
  76. package/build/src/export/html.js +3 -3
  77. package/build/src/export/html.js.map +1 -1
  78. package/build/src/export/index.js +2 -0
  79. package/build/src/export/index.js.map +1 -1
  80. package/build/src/export/metroAssetLocalPath.js +4 -4
  81. package/build/src/export/metroAssetLocalPath.js.map +1 -1
  82. package/build/src/export/persistMetroAssets.js +6 -6
  83. package/build/src/export/persistMetroAssets.js.map +1 -1
  84. package/build/src/export/publicFolder.js +16 -4
  85. package/build/src/export/publicFolder.js.map +1 -1
  86. package/build/src/export/resolveOptions.js +12 -13
  87. package/build/src/export/resolveOptions.js.map +1 -1
  88. package/build/src/export/saveAssets.js +3 -3
  89. package/build/src/export/saveAssets.js.map +1 -1
  90. package/build/src/export/static.js +6 -0
  91. package/build/src/export/static.js.map +1 -0
  92. package/build/src/export/web/exportWebAsync.js.map +1 -1
  93. package/build/src/export/web/index.js.map +1 -1
  94. package/build/src/export/writeContents.js.map +1 -1
  95. package/build/src/install/checkPackages.js +1 -28
  96. package/build/src/install/checkPackages.js.map +1 -1
  97. package/build/src/install/fixPackages.js.map +1 -1
  98. package/build/src/install/index.js.map +1 -1
  99. package/build/src/install/installAsync.js +3 -3
  100. package/build/src/install/installAsync.js.map +1 -1
  101. package/build/src/install/installExpoPackage.js.map +1 -1
  102. package/build/src/install/resolveOptions.js.map +1 -1
  103. package/build/src/install/utils/autoAddConfigPlugins.js +3 -3
  104. package/build/src/install/utils/autoAddConfigPlugins.js.map +1 -1
  105. package/build/src/install/utils/checkPackagesCompatibility.js +32 -16
  106. package/build/src/install/utils/checkPackagesCompatibility.js.map +1 -1
  107. package/build/src/lint/ESlintPrerequisite.js.map +1 -1
  108. package/build/src/log.js +32 -14
  109. package/build/src/log.js.map +1 -1
  110. package/build/src/login/index.js +25 -5
  111. package/build/src/login/index.js.map +1 -1
  112. package/build/src/logout/index.js.map +1 -1
  113. package/build/src/prebuild/clearNativeFolder.js +49 -14
  114. package/build/src/prebuild/clearNativeFolder.js.map +1 -1
  115. package/build/src/prebuild/configureProjectAsync.js.map +1 -1
  116. package/build/src/prebuild/copyTemplateFiles.js +3 -3
  117. package/build/src/prebuild/copyTemplateFiles.js.map +1 -1
  118. package/build/src/prebuild/ensureConfigAsync.js.map +1 -1
  119. package/build/src/prebuild/index.js +3 -2
  120. package/build/src/prebuild/index.js.map +1 -1
  121. package/build/src/prebuild/prebuildAsync.js +31 -6
  122. package/build/src/prebuild/prebuildAsync.js.map +1 -1
  123. package/build/src/prebuild/renameTemplateAppName.js +8 -5
  124. package/build/src/prebuild/renameTemplateAppName.js.map +1 -1
  125. package/build/src/prebuild/resolveOptions.js +7 -7
  126. package/build/src/prebuild/resolveOptions.js.map +1 -1
  127. package/build/src/prebuild/resolveTemplate.js +10 -5
  128. package/build/src/prebuild/resolveTemplate.js.map +1 -1
  129. package/build/src/prebuild/updateFromTemplate.js +3 -3
  130. package/build/src/prebuild/updateFromTemplate.js.map +1 -1
  131. package/build/src/prebuild/updatePackageJson.js +7 -7
  132. package/build/src/prebuild/updatePackageJson.js.map +1 -1
  133. package/build/src/prebuild/validateTemplatePlatforms.js.map +1 -1
  134. package/build/src/register/index.js.map +1 -1
  135. package/build/src/run/android/index.js.map +1 -1
  136. package/build/src/run/android/resolveGradlePropsAsync.js +3 -4
  137. package/build/src/run/android/resolveGradlePropsAsync.js.map +1 -1
  138. package/build/src/run/android/resolveInstallApkName.js +48 -1
  139. package/build/src/run/android/resolveInstallApkName.js.map +1 -1
  140. package/build/src/run/android/resolveLaunchProps.js +4 -1
  141. package/build/src/run/android/resolveLaunchProps.js.map +1 -1
  142. package/build/src/run/android/resolveOptions.js.map +1 -1
  143. package/build/src/run/android/runAndroidAsync.js.map +1 -1
  144. package/build/src/run/ensureNativeProject.js.map +1 -1
  145. package/build/src/run/hints.js +4 -4
  146. package/build/src/run/hints.js.map +1 -1
  147. package/build/src/run/index.js.map +1 -1
  148. package/build/src/run/ios/XcodeBuild.js +163 -23
  149. package/build/src/run/ios/XcodeBuild.js.map +1 -1
  150. package/build/src/run/ios/appleDevice/AppleDevice.js +6 -5
  151. package/build/src/run/ios/appleDevice/AppleDevice.js.map +1 -1
  152. package/build/src/run/ios/appleDevice/ClientManager.js.map +1 -1
  153. package/build/src/run/ios/appleDevice/client/AFCClient.js +10 -16
  154. package/build/src/run/ios/appleDevice/client/AFCClient.js.map +1 -1
  155. package/build/src/run/ios/appleDevice/client/DebugserverClient.js +1 -1
  156. package/build/src/run/ios/appleDevice/client/DebugserverClient.js.map +1 -1
  157. package/build/src/run/ios/appleDevice/client/InstallationProxyClient.js +2 -1
  158. package/build/src/run/ios/appleDevice/client/InstallationProxyClient.js.map +1 -1
  159. package/build/src/run/ios/appleDevice/client/LockdowndClient.js +1 -1
  160. package/build/src/run/ios/appleDevice/client/LockdowndClient.js.map +1 -1
  161. package/build/src/run/ios/appleDevice/client/MobileImageMounterClient.js.map +1 -1
  162. package/build/src/run/ios/appleDevice/client/ServiceClient.js +3 -3
  163. package/build/src/run/ios/appleDevice/client/ServiceClient.js.map +1 -1
  164. package/build/src/run/ios/appleDevice/client/UsbmuxdClient.js.map +1 -1
  165. package/build/src/run/ios/appleDevice/installOnDeviceAsync.js +3 -3
  166. package/build/src/run/ios/appleDevice/installOnDeviceAsync.js.map +1 -1
  167. package/build/src/run/ios/appleDevice/protocol/AFCProtocol.js +16 -13
  168. package/build/src/run/ios/appleDevice/protocol/AFCProtocol.js.map +1 -1
  169. package/build/src/run/ios/appleDevice/protocol/AbstractProtocol.js +6 -6
  170. package/build/src/run/ios/appleDevice/protocol/AbstractProtocol.js.map +1 -1
  171. package/build/src/run/ios/appleDevice/protocol/GDBProtocol.js +5 -5
  172. package/build/src/run/ios/appleDevice/protocol/GDBProtocol.js.map +1 -1
  173. package/build/src/run/ios/appleDevice/protocol/LockdownProtocol.js +7 -7
  174. package/build/src/run/ios/appleDevice/protocol/LockdownProtocol.js.map +1 -1
  175. package/build/src/run/ios/appleDevice/protocol/UsbmuxProtocol.js +5 -5
  176. package/build/src/run/ios/appleDevice/protocol/UsbmuxProtocol.js.map +1 -1
  177. package/build/src/run/ios/codeSigning/Security.js +8 -8
  178. package/build/src/run/ios/codeSigning/Security.js.map +1 -1
  179. package/build/src/run/ios/codeSigning/configureCodeSigning.js +5 -3
  180. package/build/src/run/ios/codeSigning/configureCodeSigning.js.map +1 -1
  181. package/build/src/run/ios/codeSigning/resolveCertificateSigningIdentity.js +7 -5
  182. package/build/src/run/ios/codeSigning/resolveCertificateSigningIdentity.js.map +1 -1
  183. package/build/src/run/ios/codeSigning/settings.js +3 -3
  184. package/build/src/run/ios/codeSigning/settings.js.map +1 -1
  185. package/build/src/run/ios/codeSigning/xcodeCodeSigning.js +4 -4
  186. package/build/src/run/ios/codeSigning/xcodeCodeSigning.js.map +1 -1
  187. package/build/src/run/ios/index.js +8 -1
  188. package/build/src/run/ios/index.js.map +1 -1
  189. package/build/src/run/ios/launchApp.js +3 -3
  190. package/build/src/run/ios/launchApp.js.map +1 -1
  191. package/build/src/run/ios/options/appleDestinations.js.map +1 -1
  192. package/build/src/run/ios/options/promptDevice.js +3 -3
  193. package/build/src/run/ios/options/promptDevice.js.map +1 -1
  194. package/build/src/run/ios/options/resolveDevice.js +8 -3
  195. package/build/src/run/ios/options/resolveDevice.js.map +1 -1
  196. package/build/src/run/ios/options/resolveNativeScheme.js +4 -4
  197. package/build/src/run/ios/options/resolveNativeScheme.js.map +1 -1
  198. package/build/src/run/ios/options/resolveOptions.js +9 -4
  199. package/build/src/run/ios/options/resolveOptions.js.map +1 -1
  200. package/build/src/run/ios/options/resolveXcodeProject.js.map +1 -1
  201. package/build/src/run/ios/runIosAsync.js +39 -0
  202. package/build/src/run/ios/runIosAsync.js.map +1 -1
  203. package/build/src/run/ios/validateExternalBinary.js.map +1 -1
  204. package/build/src/run/startBundler.js +4 -0
  205. package/build/src/run/startBundler.js.map +1 -1
  206. package/build/src/serve/index.js +4 -1
  207. package/build/src/serve/index.js.map +1 -1
  208. package/build/src/serve/serveAsync.js +23 -11
  209. package/build/src/serve/serveAsync.js.map +1 -1
  210. package/build/src/serve/static.js +69 -0
  211. package/build/src/serve/static.js.map +1 -0
  212. package/build/src/start/checkDependenciesOnStart.js +131 -0
  213. package/build/src/start/checkDependenciesOnStart.js.map +1 -0
  214. package/build/src/start/detectDevClient.js +3 -3
  215. package/build/src/start/detectDevClient.js.map +1 -1
  216. package/build/src/start/doctor/Prerequisite.js +4 -4
  217. package/build/src/start/doctor/Prerequisite.js.map +1 -1
  218. package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js +53 -91
  219. package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js.map +1 -1
  220. package/build/src/start/doctor/apple/XcodePrerequisite.js +3 -3
  221. package/build/src/start/doctor/apple/XcodePrerequisite.js.map +1 -1
  222. package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js +3 -3
  223. package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js.map +1 -1
  224. package/build/src/start/doctor/dependencies/getMissingPackages.js +5 -5
  225. package/build/src/start/doctor/dependencies/getMissingPackages.js.map +1 -1
  226. package/build/src/start/doctor/dependencies/getVersionedPackages.js +5 -5
  227. package/build/src/start/doctor/dependencies/getVersionedPackages.js.map +1 -1
  228. package/build/src/start/doctor/dependencies/reactNativeTv.js +149 -0
  229. package/build/src/start/doctor/dependencies/reactNativeTv.js.map +1 -0
  230. package/build/src/start/doctor/dependencies/resolvePackages.js +4 -4
  231. package/build/src/start/doctor/dependencies/resolvePackages.js.map +1 -1
  232. package/build/src/start/doctor/dependencies/validateDependenciesVersions.js +33 -8
  233. package/build/src/start/doctor/dependencies/validateDependenciesVersions.js.map +1 -1
  234. package/build/src/start/doctor/ngrok/ExternalModule.js +3 -3
  235. package/build/src/start/doctor/ngrok/ExternalModule.js.map +1 -1
  236. package/build/src/start/doctor/ngrok/NgrokResolver.js +3 -3
  237. package/build/src/start/doctor/ngrok/NgrokResolver.js.map +1 -1
  238. package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js.map +1 -1
  239. package/build/src/start/doctor/typescript/updateTSConfig.js +3 -3
  240. package/build/src/start/doctor/typescript/updateTSConfig.js.map +1 -1
  241. package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js +5 -12
  242. package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js.map +1 -1
  243. package/build/src/start/index.js +2 -0
  244. package/build/src/start/index.js.map +1 -1
  245. package/build/src/start/interface/KeyPressHandler.js.map +1 -1
  246. package/build/src/start/interface/cliExtensionMenuItemHandler.js.map +1 -1
  247. package/build/src/start/interface/commandsTable.js +6 -6
  248. package/build/src/start/interface/commandsTable.js.map +1 -1
  249. package/build/src/start/interface/createDevToolsMenuItems.js.map +1 -1
  250. package/build/src/start/interface/interactiveActions.js +49 -6
  251. package/build/src/start/interface/interactiveActions.js.map +1 -1
  252. package/build/src/start/interface/startInterface.js +13 -4
  253. package/build/src/start/interface/startInterface.js.map +1 -1
  254. package/build/src/start/platforms/AppIdResolver.js +4 -0
  255. package/build/src/start/platforms/AppIdResolver.js.map +1 -1
  256. package/build/src/start/platforms/DeviceManager.js.map +1 -1
  257. package/build/src/start/platforms/ExpoGoInstaller.js +13 -4
  258. package/build/src/start/platforms/ExpoGoInstaller.js.map +1 -1
  259. package/build/src/start/platforms/PlatformManager.js.map +1 -1
  260. package/build/src/start/platforms/android/AndroidAppIdResolver.js.map +1 -1
  261. package/build/src/start/platforms/android/AndroidDeviceManager.js.map +1 -1
  262. package/build/src/start/platforms/android/AndroidPlatformManager.js.map +1 -1
  263. package/build/src/start/platforms/android/activateWindow.js.map +1 -1
  264. package/build/src/start/platforms/android/adb.js +36 -34
  265. package/build/src/start/platforms/android/adb.js.map +1 -1
  266. package/build/src/start/platforms/android/adbReverse.js +4 -4
  267. package/build/src/start/platforms/android/adbReverse.js.map +1 -1
  268. package/build/src/start/platforms/android/emulator.js +5 -5
  269. package/build/src/start/platforms/android/emulator.js.map +1 -1
  270. package/build/src/start/platforms/android/getDevices.js.map +1 -1
  271. package/build/src/start/platforms/android/gradle.js +5 -5
  272. package/build/src/start/platforms/android/gradle.js.map +1 -1
  273. package/build/src/start/platforms/android/promptAndroidDevice.js +3 -3
  274. package/build/src/start/platforms/android/promptAndroidDevice.js.map +1 -1
  275. package/build/src/start/platforms/ios/AppleAppIdResolver.js.map +1 -1
  276. package/build/src/start/platforms/ios/AppleDeviceManager.js +20 -6
  277. package/build/src/start/platforms/ios/AppleDeviceManager.js.map +1 -1
  278. package/build/src/start/platforms/ios/ApplePlatformManager.js +11 -0
  279. package/build/src/start/platforms/ios/ApplePlatformManager.js.map +1 -1
  280. package/build/src/start/platforms/ios/devicectl.js +7 -7
  281. package/build/src/start/platforms/ios/devicectl.js.map +1 -1
  282. package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js +26 -11
  283. package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js.map +1 -1
  284. package/build/src/start/platforms/ios/getBestSimulator.js +5 -5
  285. package/build/src/start/platforms/ios/getBestSimulator.js.map +1 -1
  286. package/build/src/start/platforms/ios/promptAppleDevice.js +5 -4
  287. package/build/src/start/platforms/ios/promptAppleDevice.js.map +1 -1
  288. package/build/src/start/platforms/ios/simctl.js +25 -19
  289. package/build/src/start/platforms/ios/simctl.js.map +1 -1
  290. package/build/src/start/platforms/ios/simctlLogging.js +3 -3
  291. package/build/src/start/platforms/ios/simctlLogging.js.map +1 -1
  292. package/build/src/start/platforms/ios/xcrun.js +3 -3
  293. package/build/src/start/platforms/ios/xcrun.js.map +1 -1
  294. package/build/src/start/project/devices.js +6 -6
  295. package/build/src/start/project/devices.js.map +1 -1
  296. package/build/src/start/project/dotExpo.js +4 -3
  297. package/build/src/start/project/dotExpo.js.map +1 -1
  298. package/build/src/start/resolveOptions.js +7 -7
  299. package/build/src/start/resolveOptions.js.map +1 -1
  300. package/build/src/start/server/AsyncNgrok.js +1 -1
  301. package/build/src/start/server/AsyncNgrok.js.map +1 -1
  302. package/build/src/start/server/AsyncWsTunnel.js +120 -35
  303. package/build/src/start/server/AsyncWsTunnel.js.map +1 -1
  304. package/build/src/start/server/Bonjour.js +8 -3
  305. package/build/src/start/server/Bonjour.js.map +1 -1
  306. package/build/src/start/server/BundlerDevServer.js +23 -9
  307. package/build/src/start/server/BundlerDevServer.js.map +1 -1
  308. package/build/src/start/server/DevServerManager.js.map +1 -1
  309. package/build/src/start/server/DevToolsPlugin.js +63 -3
  310. package/build/src/start/server/DevToolsPlugin.js.map +1 -1
  311. package/build/src/start/server/DevToolsPlugin.schema.js +8 -3
  312. package/build/src/start/server/DevToolsPlugin.schema.js.map +1 -1
  313. package/build/src/start/server/DevToolsPluginCliExtensionExecutor.js +58 -23
  314. package/build/src/start/server/DevToolsPluginCliExtensionExecutor.js.map +1 -1
  315. package/build/src/start/server/DevToolsPluginCliExtensionResults.js +29 -0
  316. package/build/src/start/server/DevToolsPluginCliExtensionResults.js.map +1 -1
  317. package/build/src/start/server/DevToolsPluginManager.js +20 -6
  318. package/build/src/start/server/DevToolsPluginManager.js.map +1 -1
  319. package/build/src/start/server/DevToolsPluginServerHelpers.js +83 -0
  320. package/build/src/start/server/DevToolsPluginServerHelpers.js.map +1 -0
  321. package/build/src/start/server/DevelopmentSession.js +41 -24
  322. package/build/src/start/server/DevelopmentSession.js.map +1 -1
  323. package/build/src/start/server/MCP.js +10 -3
  324. package/build/src/start/server/MCP.js.map +1 -1
  325. package/build/src/start/server/MCPDevToolsPluginCLIExtensions.js +15 -5
  326. package/build/src/start/server/MCPDevToolsPluginCLIExtensions.js.map +1 -1
  327. package/build/src/start/server/UrlCreator.js +14 -1
  328. package/build/src/start/server/UrlCreator.js.map +1 -1
  329. package/build/src/start/server/createMCPDevToolsExtensionSchema.js +18 -4
  330. package/build/src/start/server/createMCPDevToolsExtensionSchema.js.map +1 -1
  331. package/build/src/start/server/getStaticRenderFunctions.js +13 -24
  332. package/build/src/start/server/getStaticRenderFunctions.js.map +1 -1
  333. package/build/src/start/server/metro/MetroBundlerDevServer.js +239 -108
  334. package/build/src/start/server/metro/MetroBundlerDevServer.js.map +1 -1
  335. package/build/src/start/server/metro/MetroTerminalReporter.js +67 -16
  336. package/build/src/start/server/metro/MetroTerminalReporter.js.map +1 -1
  337. package/build/src/start/server/metro/TerminalReporter.js +22 -4
  338. package/build/src/start/server/metro/TerminalReporter.js.map +1 -1
  339. package/build/src/start/server/metro/createExpoAutolinkingResolver.js +25 -12
  340. package/build/src/start/server/metro/createExpoAutolinkingResolver.js.map +1 -1
  341. package/build/src/start/server/metro/createExpoFallbackResolver.js.map +1 -1
  342. package/build/src/start/server/metro/createFileMap-fork.js +196 -0
  343. package/build/src/start/server/metro/createFileMap-fork.js.map +1 -0
  344. package/build/src/start/server/metro/createServerComponentsMiddleware.js +22 -22
  345. package/build/src/start/server/metro/createServerComponentsMiddleware.js.map +1 -1
  346. package/build/src/start/server/metro/createServerRouteMiddleware.js.map +1 -1
  347. package/build/src/start/server/metro/createTypescriptResolver.js +410 -0
  348. package/build/src/start/server/metro/createTypescriptResolver.js.map +1 -0
  349. package/build/src/start/server/metro/debugging/MessageHandler.js.map +1 -1
  350. package/build/src/start/server/metro/debugging/attachAtlas.js +3 -3
  351. package/build/src/start/server/metro/debugging/attachAtlas.js.map +1 -1
  352. package/build/src/start/server/metro/debugging/createDebugMiddleware.js +6 -5
  353. package/build/src/start/server/metro/debugging/createDebugMiddleware.js.map +1 -1
  354. package/build/src/start/server/metro/debugging/createHandlersFactory.js.map +1 -1
  355. package/build/src/start/server/metro/debugging/messageHandlers/NetworkResponse.js +20 -4
  356. package/build/src/start/server/metro/debugging/messageHandlers/NetworkResponse.js.map +1 -1
  357. package/build/src/start/server/metro/debugging/pageIsSupported.js.map +1 -1
  358. package/build/src/start/server/metro/dev-server/compression.js.map +1 -1
  359. package/build/src/start/server/metro/dev-server/createMessageSocket.js +13 -2
  360. package/build/src/start/server/metro/dev-server/createMessageSocket.js.map +1 -1
  361. package/build/src/start/server/metro/dev-server/createMetroMiddleware.js +9 -2
  362. package/build/src/start/server/metro/dev-server/createMetroMiddleware.js.map +1 -1
  363. package/build/src/start/server/metro/dev-server/utils/socketMessages.js +3 -3
  364. package/build/src/start/server/metro/dev-server/utils/socketMessages.js.map +1 -1
  365. package/build/src/start/server/metro/errors/FailedToResolveNativeOnlyModuleError.js.map +1 -1
  366. package/build/src/start/server/metro/externals.js +4 -4
  367. package/build/src/start/server/metro/externals.js.map +1 -1
  368. package/build/src/start/server/metro/fetchRouterManifest.js +3 -3
  369. package/build/src/start/server/metro/fetchRouterManifest.js.map +1 -1
  370. package/build/src/start/server/metro/getCssModulesFromBundler.js +3 -3
  371. package/build/src/start/server/metro/getCssModulesFromBundler.js.map +1 -1
  372. package/build/src/start/server/metro/instantiateMetro.js +141 -57
  373. package/build/src/start/server/metro/instantiateMetro.js.map +1 -1
  374. package/build/src/start/server/metro/log-box/LogBoxLog.js.map +1 -1
  375. package/build/src/start/server/metro/log-box/LogBoxSymbolication.js +4 -4
  376. package/build/src/start/server/metro/log-box/LogBoxSymbolication.js.map +1 -1
  377. package/build/src/start/server/metro/log-box/formatProjectFilePath.js +3 -3
  378. package/build/src/start/server/metro/log-box/formatProjectFilePath.js.map +1 -1
  379. package/build/src/start/server/metro/metroErrorInterface.js +16 -13
  380. package/build/src/start/server/metro/metroErrorInterface.js.map +1 -1
  381. package/build/src/start/server/metro/metroErrors.js +3 -3
  382. package/build/src/start/server/metro/metroErrors.js.map +1 -1
  383. package/build/src/start/server/metro/metroWatchTypeScriptFiles.js +48 -16
  384. package/build/src/start/server/metro/metroWatchTypeScriptFiles.js.map +1 -1
  385. package/build/src/start/server/metro/resolveLoader.js +3 -3
  386. package/build/src/start/server/metro/resolveLoader.js.map +1 -1
  387. package/build/src/start/server/metro/router.js +23 -14
  388. package/build/src/start/server/metro/router.js.map +1 -1
  389. package/build/src/start/server/metro/runServer-fork.js +13 -10
  390. package/build/src/start/server/metro/runServer-fork.js.map +1 -1
  391. package/build/src/start/server/metro/serializeHtml.js +29 -13
  392. package/build/src/start/server/metro/serializeHtml.js.map +1 -1
  393. package/build/src/start/server/metro/waitForMetroToObserveTypeScriptFile.js +36 -34
  394. package/build/src/start/server/metro/waitForMetroToObserveTypeScriptFile.js.map +1 -1
  395. package/build/src/start/server/metro/withMetroErrorReportingResolver.js +53 -30
  396. package/build/src/start/server/metro/withMetroErrorReportingResolver.js.map +1 -1
  397. package/build/src/start/server/metro/withMetroMultiPlatform.js +187 -126
  398. package/build/src/start/server/metro/withMetroMultiPlatform.js.map +1 -1
  399. package/build/src/start/server/metro/withMetroResolvers.js +4 -4
  400. package/build/src/start/server/metro/withMetroResolvers.js.map +1 -1
  401. package/build/src/start/server/middleware/ContextModuleSourceMapsMiddleware.js.map +1 -1
  402. package/build/src/start/server/middleware/CorsMiddleware.js +3 -3
  403. package/build/src/start/server/middleware/CorsMiddleware.js.map +1 -1
  404. package/build/src/start/server/middleware/CreateFileMiddleware.js.map +1 -1
  405. package/build/src/start/server/middleware/DevToolsPluginMiddleware.js +60 -9
  406. package/build/src/start/server/middleware/DevToolsPluginMiddleware.js.map +1 -1
  407. package/build/src/start/server/middleware/DomComponentsMiddleware.js +16 -12
  408. package/build/src/start/server/middleware/DomComponentsMiddleware.js.map +1 -1
  409. package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js +6 -4
  410. package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js.map +1 -1
  411. package/build/src/start/server/middleware/ExpoMiddleware.js +3 -3
  412. package/build/src/start/server/middleware/ExpoMiddleware.js.map +1 -1
  413. package/build/src/start/server/middleware/FaviconMiddleware.js.map +1 -1
  414. package/build/src/start/server/middleware/HistoryFallbackMiddleware.js.map +1 -1
  415. package/build/src/start/server/middleware/InterstitialPageMiddleware.js +13 -8
  416. package/build/src/start/server/middleware/InterstitialPageMiddleware.js.map +1 -1
  417. package/build/src/start/server/middleware/ManifestMiddleware.js +15 -6
  418. package/build/src/start/server/middleware/ManifestMiddleware.js.map +1 -1
  419. package/build/src/start/server/middleware/OpenMiddleware.js +150 -0
  420. package/build/src/start/server/middleware/OpenMiddleware.js.map +1 -0
  421. package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js +13 -4
  422. package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js.map +1 -1
  423. package/build/src/start/server/middleware/ServeStaticMiddleware.js +2 -9
  424. package/build/src/start/server/middleware/ServeStaticMiddleware.js.map +1 -1
  425. package/build/src/start/server/middleware/domPolyfills.js +60 -0
  426. package/build/src/start/server/middleware/domPolyfills.js.map +1 -0
  427. package/build/src/start/server/middleware/inspector/JsInspector.js +6 -31
  428. package/build/src/start/server/middleware/inspector/JsInspector.js.map +1 -1
  429. package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js +14 -24
  430. package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js.map +1 -1
  431. package/build/src/start/server/middleware/inspector/middlwareMutations.js +3 -3
  432. package/build/src/start/server/middleware/inspector/middlwareMutations.js.map +1 -1
  433. package/build/src/start/server/middleware/metroOptions.js +15 -14
  434. package/build/src/start/server/middleware/metroOptions.js.map +1 -1
  435. package/build/src/start/server/middleware/mutations.js +3 -3
  436. package/build/src/start/server/middleware/mutations.js.map +1 -1
  437. package/build/src/start/server/middleware/openHandlers.js +157 -0
  438. package/build/src/start/server/middleware/openHandlers.js.map +1 -0
  439. package/build/src/start/server/middleware/resolveAssets.js +4 -4
  440. package/build/src/start/server/middleware/resolveAssets.js.map +1 -1
  441. package/build/src/start/server/middleware/resolvePlatform.js +9 -7
  442. package/build/src/start/server/middleware/resolvePlatform.js.map +1 -1
  443. package/build/src/start/server/middleware/resolveRuntimeVersionWithExpoUpdatesAsync.js.map +1 -1
  444. package/build/src/start/server/openPlatforms.js.map +1 -1
  445. package/build/src/start/server/platformBundlers.js +3 -1
  446. package/build/src/start/server/platformBundlers.js.map +1 -1
  447. package/build/src/start/server/serverLogLikeMetro.js +13 -36
  448. package/build/src/start/server/serverLogLikeMetro.js.map +1 -1
  449. package/build/src/start/server/type-generation/expo-env.js +3 -3
  450. package/build/src/start/server/type-generation/expo-env.js.map +1 -1
  451. package/build/src/start/server/type-generation/routes.js +14 -55
  452. package/build/src/start/server/type-generation/routes.js.map +1 -1
  453. package/build/src/start/server/type-generation/startTypescriptTypeGeneration.js.map +1 -1
  454. package/build/src/start/server/type-generation/tsconfig.js +5 -5
  455. package/build/src/start/server/type-generation/tsconfig.js.map +1 -1
  456. package/build/src/start/server/webTemplate.js +12 -10
  457. package/build/src/start/server/webTemplate.js.map +1 -1
  458. package/build/src/start/server/webpack/WebpackBundlerDevServer.js +3 -3
  459. package/build/src/start/server/webpack/WebpackBundlerDevServer.js.map +1 -1
  460. package/build/src/start/server/webpack/formatWebpackMessages.js.map +1 -1
  461. package/build/src/start/server/webpack/resolveFromProject.js +4 -4
  462. package/build/src/start/server/webpack/resolveFromProject.js.map +1 -1
  463. package/build/src/start/server/webpack/tls.js +3 -3
  464. package/build/src/start/server/webpack/tls.js.map +1 -1
  465. package/build/src/start/startAsync.js +21 -11
  466. package/build/src/start/startAsync.js.map +1 -1
  467. package/build/src/types.d.ts +2 -0
  468. package/build/src/utils/FileNotifier.js +1 -1
  469. package/build/src/utils/FileNotifier.js.map +1 -1
  470. package/build/src/utils/args.js +5 -5
  471. package/build/src/utils/args.js.map +1 -1
  472. package/build/src/utils/array.js +8 -8
  473. package/build/src/utils/array.js.map +1 -1
  474. package/build/src/utils/build-cache-providers/helpers.js +4 -4
  475. package/build/src/utils/build-cache-providers/helpers.js.map +1 -1
  476. package/build/src/utils/build-cache-providers/index.js +5 -5
  477. package/build/src/utils/build-cache-providers/index.js.map +1 -1
  478. package/build/src/utils/cocoapods.js +5 -5
  479. package/build/src/utils/cocoapods.js.map +1 -1
  480. package/build/src/utils/codesigning.js +12 -6
  481. package/build/src/utils/codesigning.js.map +1 -1
  482. package/build/src/utils/composeMetroIgnorePatterns.js +69 -0
  483. package/build/src/utils/composeMetroIgnorePatterns.js.map +1 -0
  484. package/build/src/utils/createTempPath.js +3 -3
  485. package/build/src/utils/createTempPath.js.map +1 -1
  486. package/build/src/utils/delay.js +4 -4
  487. package/build/src/utils/delay.js.map +1 -1
  488. package/build/src/utils/dir.js +21 -11
  489. package/build/src/utils/dir.js.map +1 -1
  490. package/build/src/utils/downloadAppAsync.js.map +1 -1
  491. package/build/src/utils/downloadExpoGoAsync.js +4 -4
  492. package/build/src/utils/downloadExpoGoAsync.js.map +1 -1
  493. package/build/src/utils/editor.js +4 -4
  494. package/build/src/utils/editor.js.map +1 -1
  495. package/build/src/utils/env.js +39 -13
  496. package/build/src/utils/env.js.map +1 -1
  497. package/build/src/utils/errors.js +6 -6
  498. package/build/src/utils/errors.js.map +1 -1
  499. package/build/src/utils/exit.js +15 -19
  500. package/build/src/utils/exit.js.map +1 -1
  501. package/build/src/utils/expoUpdatesCli.js +5 -5
  502. package/build/src/utils/expoUpdatesCli.js.map +1 -1
  503. package/build/src/utils/fetch.js +4 -4
  504. package/build/src/utils/fetch.js.map +1 -1
  505. package/build/src/utils/findUp.js +3 -3
  506. package/build/src/utils/findUp.js.map +1 -1
  507. package/build/src/utils/fn.js +3 -3
  508. package/build/src/utils/fn.js.map +1 -1
  509. package/build/src/utils/freeport.js +3 -3
  510. package/build/src/utils/freeport.js.map +1 -1
  511. package/build/src/utils/getOrPromptApplicationId.js +3 -5
  512. package/build/src/utils/getOrPromptApplicationId.js.map +1 -1
  513. package/build/src/utils/getRunningProcess.js +5 -5
  514. package/build/src/utils/getRunningProcess.js.map +1 -1
  515. package/build/src/utils/git.js +3 -3
  516. package/build/src/utils/git.js.map +1 -1
  517. package/build/src/utils/glob.js +3 -3
  518. package/build/src/utils/glob.js.map +1 -1
  519. package/build/src/utils/ip.js +4 -4
  520. package/build/src/utils/ip.js.map +1 -1
  521. package/build/src/utils/link.js +3 -3
  522. package/build/src/utils/link.js.map +1 -1
  523. package/build/src/utils/mergeGitIgnorePaths.js +10 -10
  524. package/build/src/utils/mergeGitIgnorePaths.js.map +1 -1
  525. package/build/src/utils/modifyConfigAsync.js +3 -3
  526. package/build/src/utils/modifyConfigAsync.js.map +1 -1
  527. package/build/src/utils/net.js +23 -4
  528. package/build/src/utils/net.js.map +1 -1
  529. package/build/src/utils/nodeEnv.js +6 -6
  530. package/build/src/utils/nodeEnv.js.map +1 -1
  531. package/build/src/utils/npm.js +10 -9
  532. package/build/src/utils/npm.js.map +1 -1
  533. package/build/src/utils/obj.js +4 -4
  534. package/build/src/utils/obj.js.map +1 -1
  535. package/build/src/utils/open.js +240 -11
  536. package/build/src/utils/open.js.map +1 -1
  537. package/build/src/utils/ora.js +4 -4
  538. package/build/src/utils/ora.js.map +1 -1
  539. package/build/src/utils/plist.js +5 -4
  540. package/build/src/utils/plist.js.map +1 -1
  541. package/build/src/utils/port.js +12 -5
  542. package/build/src/utils/port.js.map +1 -1
  543. package/build/src/utils/progress.js +4 -4
  544. package/build/src/utils/progress.js.map +1 -1
  545. package/build/src/utils/prompts.js +11 -11
  546. package/build/src/utils/prompts.js.map +1 -1
  547. package/build/src/utils/qr.js +5 -4
  548. package/build/src/utils/qr.js.map +1 -1
  549. package/build/src/utils/resolveArgs.js +10 -9
  550. package/build/src/utils/resolveArgs.js.map +1 -1
  551. package/build/src/utils/scheme.js +4 -4
  552. package/build/src/utils/scheme.js.map +1 -1
  553. package/build/src/utils/strings.js.map +1 -1
  554. package/build/src/utils/tar.js +8 -7
  555. package/build/src/utils/tar.js.map +1 -1
  556. package/build/src/utils/telemetry/Telemetry.js +5 -0
  557. package/build/src/utils/telemetry/Telemetry.js.map +1 -1
  558. package/build/src/utils/telemetry/clients/FetchClient.js +1 -1
  559. package/build/src/utils/telemetry/clients/FetchClient.js.map +1 -1
  560. package/build/src/utils/telemetry/clients/flushFetchDetached.js +5 -1
  561. package/build/src/utils/telemetry/clients/flushFetchDetached.js.map +1 -1
  562. package/build/src/utils/telemetry/index.js +4 -4
  563. package/build/src/utils/telemetry/index.js.map +1 -1
  564. package/build/src/utils/telemetry/utils/agent.js +42 -0
  565. package/build/src/utils/telemetry/utils/agent.js.map +1 -0
  566. package/build/src/utils/telemetry/utils/constants.js +3 -3
  567. package/build/src/utils/telemetry/utils/constants.js.map +1 -1
  568. package/build/src/utils/telemetry/utils/context.js +3 -2
  569. package/build/src/utils/telemetry/utils/context.js.map +1 -1
  570. package/build/src/utils/url.js +5 -17
  571. package/build/src/utils/url.js.map +1 -1
  572. package/build/src/utils/validateApplicationId.js +12 -12
  573. package/build/src/utils/validateApplicationId.js.map +1 -1
  574. package/build/src/utils/variadic.js +4 -4
  575. package/build/src/utils/variadic.js.map +1 -1
  576. package/build/src/whoami/index.js.map +1 -1
  577. package/changes.json +18 -26
  578. package/main.js +3 -0
  579. package/package.json +88 -80
  580. package/static/loading-page/index.html +45 -3
  581. package/static/template/+html.tsx +14 -5
  582. package/add-module.js +0 -8
  583. package/build/src/start/server/middleware/inspector/CdpClient.js +0 -81
  584. package/build/src/start/server/middleware/inspector/CdpClient.js.map +0 -1
  585. package/build/src/utils/resolveWatchFolders.js +0 -67
  586. package/build/src/utils/resolveWatchFolders.js.map +0 -1
  587. package/build/src/utils/tsconfig/evaluateTsConfig.js +0 -87
  588. package/build/src/utils/tsconfig/evaluateTsConfig.js.map +0 -1
  589. package/build/src/utils/tsconfig/loadTsConfigPaths.js +0 -84
  590. package/build/src/utils/tsconfig/loadTsConfigPaths.js.map +0 -1
  591. package/build/src/utils/tsconfig/matchTsConfigPathAlias.js +0 -94
  592. package/build/src/utils/tsconfig/matchTsConfigPathAlias.js.map +0 -1
  593. package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js +0 -62
  594. package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/obj.ts"],"sourcesContent":["/** `lodash.get` */\nexport function get(obj: any, key: string): any | null {\n const branches = key.split('.');\n let current: any = obj;\n let branch: string | undefined;\n while ((branch = branches.shift())) {\n if (!(branch in current)) {\n return null;\n }\n current = current[branch];\n }\n return current;\n}\n\n/** `lodash.set` */\nexport function set(obj: any, key: string, value: any): any | null {\n const branches = key.split('.');\n let current: any = obj;\n let branch: string | undefined;\n while ((branch = branches.shift())) {\n if (branches.length === 0) {\n current[branch] = value;\n return obj;\n }\n\n if (!(branch in current)) {\n current[branch] = {};\n }\n\n current = current[branch];\n }\n return null;\n}\n\n/** `lodash.pickBy` */\nexport function pickBy<T>(\n obj: { [key: string]: T },\n predicate: (value: T, key: string) => boolean | undefined\n) {\n return Object.entries(obj).reduce(\n (acc, [key, value]) => {\n if (predicate(value, key)) {\n acc[key] = value;\n }\n return acc;\n },\n {} as { [key: string]: T }\n );\n}\n"],"names":["get","pickBy","set","obj","key","branches","split","current","branch","shift","value","length","predicate","Object","entries","reduce","acc"],"mappings":"AAAA,iBAAiB;;;;;;;;;;;IACDA,GAAG;eAAHA;;IAkCAC,MAAM;eAANA;;IApBAC,GAAG;eAAHA;;;AAdT,SAASF,IAAIG,GAAQ,EAAEC,GAAW;IACvC,MAAMC,WAAWD,IAAIE,KAAK,CAAC;IAC3B,IAAIC,UAAeJ;IACnB,IAAIK;IACJ,MAAQA,SAASH,SAASI,KAAK,GAAK;QAClC,IAAI,CAAED,CAAAA,UAAUD,OAAM,GAAI;YACxB,OAAO;QACT;QACAA,UAAUA,OAAO,CAACC,OAAO;IAC3B;IACA,OAAOD;AACT;AAGO,SAASL,IAAIC,GAAQ,EAAEC,GAAW,EAAEM,KAAU;IACnD,MAAML,WAAWD,IAAIE,KAAK,CAAC;IAC3B,IAAIC,UAAeJ;IACnB,IAAIK;IACJ,MAAQA,SAASH,SAASI,KAAK,GAAK;QAClC,IAAIJ,SAASM,MAAM,KAAK,GAAG;YACzBJ,OAAO,CAACC,OAAO,GAAGE;YAClB,OAAOP;QACT;QAEA,IAAI,CAAEK,CAAAA,UAAUD,OAAM,GAAI;YACxBA,OAAO,CAACC,OAAO,GAAG,CAAC;QACrB;QAEAD,UAAUA,OAAO,CAACC,OAAO;IAC3B;IACA,OAAO;AACT;AAGO,SAASP,OACdE,GAAyB,EACzBS,SAAyD;IAEzD,OAAOC,OAAOC,OAAO,CAACX,KAAKY,MAAM,CAC/B,CAACC,KAAK,CAACZ,KAAKM,MAAM;QAChB,IAAIE,UAAUF,OAAON,MAAM;YACzBY,GAAG,CAACZ,IAAI,GAAGM;QACb;QACA,OAAOM;IACT,GACA,CAAC;AAEL"}
1
+ {"version":3,"sources":["../../../src/utils/obj.ts"],"sourcesContent":["/** `lodash.get` */\nexport function get(obj: any, key: string): any | null {\n const branches = key.split('.');\n let current: any = obj;\n let branch: string | undefined;\n while ((branch = branches.shift())) {\n if (!(branch in current)) {\n return null;\n }\n current = current[branch];\n }\n return current;\n}\n\n/** `lodash.set` */\nexport function set(obj: any, key: string, value: any): any | null {\n const branches = key.split('.');\n let current: any = obj;\n let branch: string | undefined;\n while ((branch = branches.shift())) {\n if (branches.length === 0) {\n current[branch] = value;\n return obj;\n }\n\n if (!(branch in current)) {\n current[branch] = {};\n }\n\n current = current[branch];\n }\n return null;\n}\n\n/** `lodash.pickBy` */\nexport function pickBy<T>(\n obj: { [key: string]: T },\n predicate: (value: T, key: string) => boolean | undefined\n) {\n return Object.entries(obj).reduce(\n (acc, [key, value]) => {\n if (predicate(value, key)) {\n acc[key] = value;\n }\n return acc;\n },\n {} as { [key: string]: T }\n );\n}\n"],"names":["get","pickBy","set","obj","key","branches","split","current","branch","shift","value","length","predicate","Object","entries","reduce","acc"],"mappings":"AAAA,iBAAiB;;;;;;;;;;;QACDA;eAAAA;;QAkCAC;eAAAA;;QApBAC;eAAAA;;;AAdT,SAASF,IAAIG,GAAQ,EAAEC,GAAW;IACvC,MAAMC,WAAWD,IAAIE,KAAK,CAAC;IAC3B,IAAIC,UAAeJ;IACnB,IAAIK;IACJ,MAAQA,SAASH,SAASI,KAAK,GAAK;QAClC,IAAI,CAAED,CAAAA,UAAUD,OAAM,GAAI;YACxB,OAAO;QACT;QACAA,UAAUA,OAAO,CAACC,OAAO;IAC3B;IACA,OAAOD;AACT;AAGO,SAASL,IAAIC,GAAQ,EAAEC,GAAW,EAAEM,KAAU;IACnD,MAAML,WAAWD,IAAIE,KAAK,CAAC;IAC3B,IAAIC,UAAeJ;IACnB,IAAIK;IACJ,MAAQA,SAASH,SAASI,KAAK,GAAK;QAClC,IAAIJ,SAASM,MAAM,KAAK,GAAG;YACzBJ,OAAO,CAACC,OAAO,GAAGE;YAClB,OAAOP;QACT;QAEA,IAAI,CAAEK,CAAAA,UAAUD,OAAM,GAAI;YACxBA,OAAO,CAACC,OAAO,GAAG,CAAC;QACrB;QAEAD,UAAUA,OAAO,CAACC,OAAO;IAC3B;IACA,OAAO;AACT;AAGO,SAASP,OACdE,GAAyB,EACzBS,SAAyD;IAEzD,OAAOC,OAAOC,OAAO,CAACX,KAAKY,MAAM,CAC/B,CAACC,KAAK,CAACZ,KAAKM,MAAM;QAChB,IAAIE,UAAUF,OAAON,MAAM;YACzBY,GAAG,CAACZ,IAAI,GAAGM;QACb;QACA,OAAOM;IACT,GACA,CAAC;AAEL"}
@@ -8,9 +8,30 @@ Object.defineProperty(exports, "openBrowserAsync", {
8
8
  return openBrowserAsync;
9
9
  }
10
10
  });
11
- function _betteropn() {
12
- const data = /*#__PURE__*/ _interop_require_default(require("better-opn"));
13
- _betteropn = function() {
11
+ function _osascript() {
12
+ const data = /*#__PURE__*/ _interop_require_wildcard(require("@expo/osascript"));
13
+ _osascript = function() {
14
+ return data;
15
+ };
16
+ return data;
17
+ }
18
+ function _spawnasync() {
19
+ const data = /*#__PURE__*/ _interop_require_default(require("@expo/spawn-async"));
20
+ _spawnasync = function() {
21
+ return data;
22
+ };
23
+ return data;
24
+ }
25
+ function _os() {
26
+ const data = /*#__PURE__*/ _interop_require_default(require("os"));
27
+ _os = function() {
28
+ return data;
29
+ };
30
+ return data;
31
+ }
32
+ function _path() {
33
+ const data = /*#__PURE__*/ _interop_require_default(require("path"));
34
+ _path = function() {
14
35
  return data;
15
36
  };
16
37
  return data;
@@ -20,17 +41,225 @@ function _interop_require_default(obj) {
20
41
  default: obj
21
42
  };
22
43
  }
23
- async function openBrowserAsync(target, options) {
24
- if (process.platform !== 'win32') {
25
- return await (0, _betteropn().default)(target, options);
44
+ function _getRequireWildcardCache(nodeInterop) {
45
+ if (typeof WeakMap !== "function") return null;
46
+ var cacheBabelInterop = new WeakMap();
47
+ var cacheNodeInterop = new WeakMap();
48
+ return (_getRequireWildcardCache = function(nodeInterop) {
49
+ return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
50
+ })(nodeInterop);
51
+ }
52
+ function _interop_require_wildcard(obj, nodeInterop) {
53
+ if (!nodeInterop && obj && obj.__esModule) {
54
+ return obj;
55
+ }
56
+ if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
57
+ return {
58
+ default: obj
59
+ };
60
+ }
61
+ var cache = _getRequireWildcardCache(nodeInterop);
62
+ if (cache && cache.has(obj)) {
63
+ return cache.get(obj);
64
+ }
65
+ var newObj = {
66
+ __proto__: null
67
+ };
68
+ var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
69
+ for(var key in obj){
70
+ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
71
+ var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
72
+ if (desc && (desc.get || desc.set)) {
73
+ Object.defineProperty(newObj, key, desc);
74
+ } else {
75
+ newObj[key] = obj[key];
76
+ }
77
+ }
78
+ }
79
+ newObj.default = obj;
80
+ if (cache) {
81
+ cache.set(obj, newObj);
26
82
  }
27
- const oldSystemRoot = process.env.SYSTEMROOT;
83
+ return newObj;
84
+ }
85
+ /** Splits an inline script into trimmed, non-empty lines for `osascript -e <line>`. */ function applescript(strings, ...values) {
86
+ let raw = strings[0];
87
+ for(let i = 0; i < values.length; i++){
88
+ raw += String(values[i]) + strings[i + 1];
89
+ }
90
+ return raw.split('\n').map((line)=>line.trim()).filter((line)=>line.length > 0);
91
+ }
92
+ function buildOpenChromiumTabScript(target, matchUrl) {
93
+ const theURL = _osascript().escapeString(target);
94
+ const matchURL = _osascript().escapeString(matchUrl);
95
+ return applescript`
96
+ property targetTab: null
97
+ property targetTabIndex: -1
98
+ property targetWindow: null
99
+ property theProgram: ""
100
+
101
+ on run
102
+ set theProgram to my findRunningChromium()
103
+ if theProgram is "" then error "No Chromium browser is running."
104
+ set theURL to "${theURL}"
105
+ set matchURL to "${matchURL}"
106
+ using terms from application "Google Chrome"
107
+ tell application theProgram
108
+ if (count every window) = 0 then
109
+ make new window
110
+ end if
111
+ set found to my lookupTabWithUrl(matchURL)
112
+ if found then
113
+ set targetWindow's active tab index to targetTabIndex
114
+ tell targetTab to reload
115
+ tell targetWindow to activate
116
+ set index of targetWindow to 1
117
+ return
118
+ end if
119
+ set found to my lookupTabWithUrl("chrome://newtab/")
120
+ if found then
121
+ set targetWindow's active tab index to targetTabIndex
122
+ set URL of targetTab to theURL
123
+ tell targetWindow to activate
124
+ return
125
+ end if
126
+ tell window 1
127
+ activate
128
+ make new tab with properties {URL:theURL}
129
+ end tell
130
+ end tell
131
+ end using terms from
132
+ end run
133
+
134
+ on findRunningChromium()
135
+ set candidates to {"Google Chrome Canary", "Google Chrome", "Microsoft Edge", "Brave Browser", "Vivaldi", "Chromium"}
136
+ tell application "System Events"
137
+ set runningNames to name of every process
138
+ end tell
139
+ repeat with candidate in candidates
140
+ set candidateName to candidate as string
141
+ if candidateName is in runningNames then return candidateName
142
+ end repeat
143
+ return ""
144
+ end findRunningChromium
145
+
146
+ on lookupTabWithUrl(lookupUrl)
147
+ using terms from application "Google Chrome"
148
+ tell application theProgram
149
+ set found to false
150
+ set theTabIndex to -1
151
+ repeat with theWindow in every window
152
+ set theTabIndex to 0
153
+ repeat with theTab in every tab of theWindow
154
+ set theTabIndex to theTabIndex + 1
155
+ if (theTab's URL as string) contains lookupUrl then
156
+ set targetTab to theTab
157
+ set targetTabIndex to theTabIndex
158
+ set targetWindow to theWindow
159
+ set found to true
160
+ exit repeat
161
+ end if
162
+ end repeat
163
+ if found then exit repeat
164
+ end repeat
165
+ end tell
166
+ end using terms from
167
+ return found
168
+ end lookupTabWithUrl
169
+ `;
170
+ }
171
+ function safeOrigin(target) {
28
172
  try {
29
- process.env.SYSTEMROOT = process.env.SYSTEMROOT ?? process.env.SystemRoot;
30
- return await (0, _betteropn().default)(target, options);
31
- } finally{
32
- process.env.SYSTEMROOT = oldSystemRoot;
173
+ return new URL(target).origin;
174
+ } catch {
175
+ return target;
33
176
  }
34
177
  }
178
+ async function tryOpenInChromiumTabAsync(target) {
179
+ const matchUrl = process.env.OPEN_MATCH_HOST_ONLY === 'true' ? safeOrigin(target) : target;
180
+ try {
181
+ await _osascript().spawnAsync(buildOpenChromiumTabScript(target, matchUrl), {
182
+ stdio: 'ignore'
183
+ });
184
+ return true;
185
+ } catch {
186
+ return false;
187
+ }
188
+ }
189
+ async function openBrowserAsync(target) {
190
+ var _process_env_BROWSER;
191
+ const browserEnv = (_process_env_BROWSER = process.env.BROWSER) == null ? void 0 : _process_env_BROWSER.trim();
192
+ if ((browserEnv == null ? void 0 : browserEnv.toLowerCase()) === 'none') {
193
+ return false;
194
+ }
195
+ // On macOS, `BROWSER=open` historically meant "use the default handler" rather than
196
+ // "launch an app called open" — treat it as if BROWSER were unset.
197
+ const browserApp = browserEnv && !(process.platform === 'darwin' && browserEnv.toLowerCase() === 'open') ? browserEnv : undefined;
198
+ const browserArgs = process.env.BROWSER_ARGS ? process.env.BROWSER_ARGS.split(' ') : [];
199
+ if (process.platform === 'darwin') {
200
+ const isDefaultOrChrome = !browserApp || browserApp.toLowerCase() === 'google chrome';
201
+ if (isDefaultOrChrome && await tryOpenInChromiumTabAsync(target)) {
202
+ return true;
203
+ }
204
+ const openArgs = [];
205
+ if (browserApp) openArgs.push('-a', browserApp);
206
+ // Per `open(1)`, everything following `--args` is forwarded to the launched app,
207
+ // so the target URL must come after the args block to reach the app alongside them.
208
+ if (browserArgs.length > 0) openArgs.push('--args', ...browserArgs);
209
+ openArgs.push(target);
210
+ await (0, _spawnasync().default)('open', openArgs, {
211
+ stdio: 'ignore'
212
+ });
213
+ return true;
214
+ }
215
+ if (process.platform === 'win32') {
216
+ await spawnWindowsStartAsync(target, browserApp, browserArgs);
217
+ return true;
218
+ }
219
+ // WSL: when the user hasn't overridden BROWSER, route through Windows `cmd.exe` so
220
+ // the URL opens in the user's Windows browser. Falls through to `xdg-open` otherwise.
221
+ if (!browserApp && isWsl()) {
222
+ await (0, _spawnasync().default)('/mnt/c/Windows/System32/cmd.exe', [
223
+ '/c',
224
+ 'start',
225
+ '""',
226
+ target
227
+ ], {
228
+ stdio: 'ignore'
229
+ });
230
+ return true;
231
+ }
232
+ const command = browserApp ?? 'xdg-open';
233
+ await (0, _spawnasync().default)(command, [
234
+ ...browserArgs,
235
+ target
236
+ ], {
237
+ stdio: 'ignore'
238
+ });
239
+ return true;
240
+ }
241
+ async function spawnWindowsStartAsync(target, browserApp, browserArgs) {
242
+ // Windows preserves env var case in Node, but the OS variable is `SystemRoot`.
243
+ const systemRoot = process.env.SYSTEMROOT ?? process.env.SystemRoot ?? 'C:\\Windows';
244
+ const cmd = _path().default.join(systemRoot, 'System32', 'cmd.exe');
245
+ // `start ""` — the empty quoted string is the window title, so the URL isn't
246
+ // interpreted as a title argument.
247
+ const startArgs = [
248
+ '/c',
249
+ 'start',
250
+ '""'
251
+ ];
252
+ if (browserApp) startArgs.push(browserApp);
253
+ startArgs.push(target, ...browserArgs);
254
+ await (0, _spawnasync().default)(cmd, startArgs, {
255
+ stdio: 'ignore'
256
+ });
257
+ }
258
+ function isWsl() {
259
+ if (process.platform !== 'linux') return false;
260
+ if (process.env.WSL_DISTRO_NAME) return true;
261
+ const release = _os().default.release().toLowerCase();
262
+ return release.includes('microsoft') || release.includes('wsl');
263
+ }
35
264
 
36
265
  //# sourceMappingURL=open.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/open.ts"],"sourcesContent":["import betterOpenBrowserAsync from 'better-opn';\n\n/**\n * Due to a bug in `open`, which is used as fallback on Windows, we need to ensure `process.env.SYSTEMROOT` is set.\n * This environment variable is set by Windows on `SystemRoot`, causing `open` to execute a command with an \"unknown\" drive letter.\n *\n * @see https://github.com/sindresorhus/open/issues/205\n */\nexport async function openBrowserAsync(\n target: string,\n options?: any\n): Promise<import('child_process').ChildProcess | false> {\n if (process.platform !== 'win32') {\n return await betterOpenBrowserAsync(target, options);\n }\n\n const oldSystemRoot = process.env.SYSTEMROOT;\n try {\n process.env.SYSTEMROOT = process.env.SYSTEMROOT ?? process.env.SystemRoot;\n return await betterOpenBrowserAsync(target, options);\n } finally {\n process.env.SYSTEMROOT = oldSystemRoot;\n }\n}\n"],"names":["openBrowserAsync","target","options","process","platform","betterOpenBrowserAsync","oldSystemRoot","env","SYSTEMROOT","SystemRoot"],"mappings":";;;;+BAQsBA;;;eAAAA;;;;gEARa;;;;;;;;;;;AAQ5B,eAAeA,iBACpBC,MAAc,EACdC,OAAa;IAEb,IAAIC,QAAQC,QAAQ,KAAK,SAAS;QAChC,OAAO,MAAMC,IAAAA,oBAAsB,EAACJ,QAAQC;IAC9C;IAEA,MAAMI,gBAAgBH,QAAQI,GAAG,CAACC,UAAU;IAC5C,IAAI;QACFL,QAAQI,GAAG,CAACC,UAAU,GAAGL,QAAQI,GAAG,CAACC,UAAU,IAAIL,QAAQI,GAAG,CAACE,UAAU;QACzE,OAAO,MAAMJ,IAAAA,oBAAsB,EAACJ,QAAQC;IAC9C,SAAU;QACRC,QAAQI,GAAG,CAACC,UAAU,GAAGF;IAC3B;AACF"}
1
+ {"version":3,"sources":["../../../src/utils/open.ts"],"sourcesContent":["import * as osascript from '@expo/osascript';\nimport spawnAsync from '@expo/spawn-async';\nimport os from 'os';\nimport path from 'path';\n\n/** Splits an inline script into trimmed, non-empty lines for `osascript -e <line>`. */\nfunction applescript(strings: TemplateStringsArray, ...values: unknown[]): string[] {\n let raw = strings[0]!;\n for (let i = 0; i < values.length; i++) {\n raw += String(values[i]) + strings[i + 1];\n }\n return raw\n .split('\\n')\n .map((line) => line.trim())\n .filter((line) => line.length > 0);\n}\n\nfunction buildOpenChromiumTabScript(target: string, matchUrl: string): string[] {\n const theURL = osascript.escapeString(target);\n const matchURL = osascript.escapeString(matchUrl);\n return applescript`\n property targetTab: null\n property targetTabIndex: -1\n property targetWindow: null\n property theProgram: \"\"\n\n on run\n set theProgram to my findRunningChromium()\n if theProgram is \"\" then error \"No Chromium browser is running.\"\n set theURL to \"${theURL}\"\n set matchURL to \"${matchURL}\"\n using terms from application \"Google Chrome\"\n tell application theProgram\n if (count every window) = 0 then\n make new window\n end if\n set found to my lookupTabWithUrl(matchURL)\n if found then\n set targetWindow's active tab index to targetTabIndex\n tell targetTab to reload\n tell targetWindow to activate\n set index of targetWindow to 1\n return\n end if\n set found to my lookupTabWithUrl(\"chrome://newtab/\")\n if found then\n set targetWindow's active tab index to targetTabIndex\n set URL of targetTab to theURL\n tell targetWindow to activate\n return\n end if\n tell window 1\n activate\n make new tab with properties {URL:theURL}\n end tell\n end tell\n end using terms from\n end run\n\n on findRunningChromium()\n set candidates to {\"Google Chrome Canary\", \"Google Chrome\", \"Microsoft Edge\", \"Brave Browser\", \"Vivaldi\", \"Chromium\"}\n tell application \"System Events\"\n set runningNames to name of every process\n end tell\n repeat with candidate in candidates\n set candidateName to candidate as string\n if candidateName is in runningNames then return candidateName\n end repeat\n return \"\"\n end findRunningChromium\n\n on lookupTabWithUrl(lookupUrl)\n using terms from application \"Google Chrome\"\n tell application theProgram\n set found to false\n set theTabIndex to -1\n repeat with theWindow in every window\n set theTabIndex to 0\n repeat with theTab in every tab of theWindow\n set theTabIndex to theTabIndex + 1\n if (theTab's URL as string) contains lookupUrl then\n set targetTab to theTab\n set targetTabIndex to theTabIndex\n set targetWindow to theWindow\n set found to true\n exit repeat\n end if\n end repeat\n if found then exit repeat\n end repeat\n end tell\n end using terms from\n return found\n end lookupTabWithUrl\n `;\n}\n\nfunction safeOrigin(target: string): string {\n try {\n return new URL(target).origin;\n } catch {\n return target;\n }\n}\n\nasync function tryOpenInChromiumTabAsync(target: string): Promise<boolean> {\n const matchUrl = process.env.OPEN_MATCH_HOST_ONLY === 'true' ? safeOrigin(target) : target;\n try {\n await osascript.spawnAsync(buildOpenChromiumTabScript(target, matchUrl), {\n stdio: 'ignore',\n });\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Opens a URL in the user's browser. Honors `BROWSER` (set to `none` to disable) and\n * `BROWSER_ARGS` environment variables. On macOS, reuses an existing tab in a running\n * Chromium-based browser when possible.\n *\n * @returns `true` when a browser was launched, `false` when `BROWSER=none`.\n */\nexport async function openBrowserAsync(target: string): Promise<boolean> {\n const browserEnv = process.env.BROWSER?.trim();\n if (browserEnv?.toLowerCase() === 'none') {\n return false;\n }\n\n // On macOS, `BROWSER=open` historically meant \"use the default handler\" rather than\n // \"launch an app called open\" — treat it as if BROWSER were unset.\n const browserApp =\n browserEnv && !(process.platform === 'darwin' && browserEnv.toLowerCase() === 'open')\n ? browserEnv\n : undefined;\n const browserArgs = process.env.BROWSER_ARGS ? process.env.BROWSER_ARGS.split(' ') : [];\n\n if (process.platform === 'darwin') {\n const isDefaultOrChrome = !browserApp || browserApp.toLowerCase() === 'google chrome';\n if (isDefaultOrChrome && (await tryOpenInChromiumTabAsync(target))) {\n return true;\n }\n const openArgs: string[] = [];\n if (browserApp) openArgs.push('-a', browserApp);\n // Per `open(1)`, everything following `--args` is forwarded to the launched app,\n // so the target URL must come after the args block to reach the app alongside them.\n if (browserArgs.length > 0) openArgs.push('--args', ...browserArgs);\n openArgs.push(target);\n await spawnAsync('open', openArgs, { stdio: 'ignore' });\n return true;\n }\n\n if (process.platform === 'win32') {\n await spawnWindowsStartAsync(target, browserApp, browserArgs);\n return true;\n }\n\n // WSL: when the user hasn't overridden BROWSER, route through Windows `cmd.exe` so\n // the URL opens in the user's Windows browser. Falls through to `xdg-open` otherwise.\n if (!browserApp && isWsl()) {\n await spawnAsync('/mnt/c/Windows/System32/cmd.exe', ['/c', 'start', '\"\"', target], {\n stdio: 'ignore',\n });\n return true;\n }\n\n const command = browserApp ?? 'xdg-open';\n await spawnAsync(command, [...browserArgs, target], { stdio: 'ignore' });\n return true;\n}\n\nasync function spawnWindowsStartAsync(\n target: string,\n browserApp: string | undefined,\n browserArgs: string[]\n): Promise<void> {\n // Windows preserves env var case in Node, but the OS variable is `SystemRoot`.\n const systemRoot = process.env.SYSTEMROOT ?? process.env.SystemRoot ?? 'C:\\\\Windows';\n const cmd = path.join(systemRoot, 'System32', 'cmd.exe');\n // `start \"\"` — the empty quoted string is the window title, so the URL isn't\n // interpreted as a title argument.\n const startArgs = ['/c', 'start', '\"\"'];\n if (browserApp) startArgs.push(browserApp);\n startArgs.push(target, ...browserArgs);\n await spawnAsync(cmd, startArgs, { stdio: 'ignore' });\n}\n\nfunction isWsl(): boolean {\n if (process.platform !== 'linux') return false;\n if (process.env.WSL_DISTRO_NAME) return true;\n const release = os.release().toLowerCase();\n return release.includes('microsoft') || release.includes('wsl');\n}\n"],"names":["openBrowserAsync","applescript","strings","values","raw","i","length","String","split","map","line","trim","filter","buildOpenChromiumTabScript","target","matchUrl","theURL","osascript","escapeString","matchURL","safeOrigin","URL","origin","tryOpenInChromiumTabAsync","process","env","OPEN_MATCH_HOST_ONLY","spawnAsync","stdio","browserEnv","BROWSER","toLowerCase","browserApp","platform","undefined","browserArgs","BROWSER_ARGS","isDefaultOrChrome","openArgs","push","spawnWindowsStartAsync","isWsl","command","systemRoot","SYSTEMROOT","SystemRoot","cmd","path","join","startArgs","WSL_DISTRO_NAME","release","os","includes"],"mappings":"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"}
@@ -5,17 +5,17 @@ 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
- getAllSpinners: function() {
12
+ get getAllSpinners () {
13
13
  return getAllSpinners;
14
14
  },
15
- logNewSection: function() {
15
+ get logNewSection () {
16
16
  return logNewSection;
17
17
  },
18
- ora: function() {
18
+ get ora () {
19
19
  return ora;
20
20
  }
21
21
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/ora.ts"],"sourcesContent":["import chalk from 'chalk';\nimport oraReal, { Ora } from 'ora';\n\n// import * as Log from '../log';\nimport { env } from './env';\nimport { isInteractive } from './interactive';\n\nconst logReal = console.log;\nconst infoReal = console.info;\nconst warnReal = console.warn;\nconst errorReal = console.error;\n\nconst runningSpinners: oraReal.Ora[] = [];\n\nexport function getAllSpinners() {\n return runningSpinners;\n}\n\n/**\n * A custom ora spinner that sends the stream to stdout in CI, non-TTY, or expo's non-interactive flag instead of stderr (the default).\n *\n * @param options\n * @returns\n */\nexport function ora(options?: oraReal.Options | string): oraReal.Ora {\n const inputOptions = typeof options === 'string' ? { text: options } : options || {};\n const disabled = !isInteractive() || env.EXPO_DEBUG;\n const spinner = oraReal({\n // Ensure our non-interactive mode emulates CI mode.\n isEnabled: !disabled,\n // In non-interactive mode, send the stream to stdout so it prevents looking like an error.\n stream: disabled ? process.stdout : process.stderr,\n ...inputOptions,\n });\n\n const oraStart = spinner.start.bind(spinner);\n const oraStop = spinner.stop.bind(spinner);\n const oraStopAndPersist = spinner.stopAndPersist.bind(spinner);\n\n const logWrap = (method: any, args: any[]): void => {\n oraStop();\n method(...args);\n spinner.start();\n };\n\n const wrapNativeLogs = (): void => {\n console.log = (...args: any) => logWrap(logReal, args);\n console.info = (...args: any) => logWrap(infoReal, args);\n console.warn = (...args: any) => logWrap(warnReal, args);\n console.error = (...args: any) => logWrap(errorReal, args);\n\n runningSpinners.push(spinner);\n };\n\n const resetNativeLogs = (): void => {\n console.log = logReal;\n console.info = infoReal;\n console.warn = warnReal;\n console.error = errorReal;\n\n const index = runningSpinners.indexOf(spinner);\n if (index >= 0) {\n runningSpinners.splice(index, 1);\n }\n };\n\n spinner.start = (text): Ora => {\n wrapNativeLogs();\n return oraStart(text);\n };\n\n spinner.stopAndPersist = (options): Ora => {\n const result = oraStopAndPersist(options);\n resetNativeLogs();\n return result;\n };\n\n spinner.stop = (): Ora => {\n const result = oraStop();\n resetNativeLogs();\n return result;\n };\n\n // Always make the central logging module aware of the current spinner\n // Log.setSpinner(spinner);\n\n return spinner;\n}\n\n/**\n * Create a unified section spinner.\n *\n * @param title\n * @returns\n */\nexport function logNewSection(title: string) {\n const spinner = ora(chalk.bold(title));\n // Prevent the spinner from clashing with debug logs\n spinner.start();\n return spinner;\n}\n"],"names":["getAllSpinners","logNewSection","ora","logReal","console","log","infoReal","info","warnReal","warn","errorReal","error","runningSpinners","options","inputOptions","text","disabled","isInteractive","env","EXPO_DEBUG","spinner","oraReal","isEnabled","stream","process","stdout","stderr","oraStart","start","bind","oraStop","stop","oraStopAndPersist","stopAndPersist","logWrap","method","args","wrapNativeLogs","push","resetNativeLogs","index","indexOf","splice","result","title","chalk","bold"],"mappings":";;;;;;;;;;;IAcgBA,cAAc;eAAdA;;IAiFAC,aAAa;eAAbA;;IAvEAC,GAAG;eAAHA;;;;gEAxBE;;;;;;;gEACW;;;;;;qBAGT;6BACU;;;;;;AAE9B,MAAMC,UAAUC,QAAQC,GAAG;AAC3B,MAAMC,WAAWF,QAAQG,IAAI;AAC7B,MAAMC,WAAWJ,QAAQK,IAAI;AAC7B,MAAMC,YAAYN,QAAQO,KAAK;AAE/B,MAAMC,kBAAiC,EAAE;AAElC,SAASZ;IACd,OAAOY;AACT;AAQO,SAASV,IAAIW,OAAkC;IACpD,MAAMC,eAAe,OAAOD,YAAY,WAAW;QAAEE,MAAMF;IAAQ,IAAIA,WAAW,CAAC;IACnF,MAAMG,WAAW,CAACC,IAAAA,0BAAa,OAAMC,QAAG,CAACC,UAAU;IACnD,MAAMC,UAAUC,IAAAA,cAAO,EAAC;QACtB,oDAAoD;QACpDC,WAAW,CAACN;QACZ,2FAA2F;QAC3FO,QAAQP,WAAWQ,QAAQC,MAAM,GAAGD,QAAQE,MAAM;QAClD,GAAGZ,YAAY;IACjB;IAEA,MAAMa,WAAWP,QAAQQ,KAAK,CAACC,IAAI,CAACT;IACpC,MAAMU,UAAUV,QAAQW,IAAI,CAACF,IAAI,CAACT;IAClC,MAAMY,oBAAoBZ,QAAQa,cAAc,CAACJ,IAAI,CAACT;IAEtD,MAAMc,UAAU,CAACC,QAAaC;QAC5BN;QACAK,UAAUC;QACVhB,QAAQQ,KAAK;IACf;IAEA,MAAMS,iBAAiB;QACrBjC,QAAQC,GAAG,GAAG,CAAC,GAAG+B,OAAcF,QAAQ/B,SAASiC;QACjDhC,QAAQG,IAAI,GAAG,CAAC,GAAG6B,OAAcF,QAAQ5B,UAAU8B;QACnDhC,QAAQK,IAAI,GAAG,CAAC,GAAG2B,OAAcF,QAAQ1B,UAAU4B;QACnDhC,QAAQO,KAAK,GAAG,CAAC,GAAGyB,OAAcF,QAAQxB,WAAW0B;QAErDxB,gBAAgB0B,IAAI,CAAClB;IACvB;IAEA,MAAMmB,kBAAkB;QACtBnC,QAAQC,GAAG,GAAGF;QACdC,QAAQG,IAAI,GAAGD;QACfF,QAAQK,IAAI,GAAGD;QACfJ,QAAQO,KAAK,GAAGD;QAEhB,MAAM8B,QAAQ5B,gBAAgB6B,OAAO,CAACrB;QACtC,IAAIoB,SAAS,GAAG;YACd5B,gBAAgB8B,MAAM,CAACF,OAAO;QAChC;IACF;IAEApB,QAAQQ,KAAK,GAAG,CAACb;QACfsB;QACA,OAAOV,SAASZ;IAClB;IAEAK,QAAQa,cAAc,GAAG,CAACpB;QACxB,MAAM8B,SAASX,kBAAkBnB;QACjC0B;QACA,OAAOI;IACT;IAEAvB,QAAQW,IAAI,GAAG;QACb,MAAMY,SAASb;QACfS;QACA,OAAOI;IACT;IAEA,sEAAsE;IACtE,2BAA2B;IAE3B,OAAOvB;AACT;AAQO,SAASnB,cAAc2C,KAAa;IACzC,MAAMxB,UAAUlB,IAAI2C,gBAAK,CAACC,IAAI,CAACF;IAC/B,oDAAoD;IACpDxB,QAAQQ,KAAK;IACb,OAAOR;AACT"}
1
+ {"version":3,"sources":["../../../src/utils/ora.ts"],"sourcesContent":["import chalk from 'chalk';\nimport type { Ora } from 'ora';\nimport oraReal from 'ora';\n\n// import * as Log from '../log';\nimport { env } from './env';\nimport { isInteractive } from './interactive';\n\nconst logReal = console.log;\nconst infoReal = console.info;\nconst warnReal = console.warn;\nconst errorReal = console.error;\n\nconst runningSpinners: oraReal.Ora[] = [];\n\nexport function getAllSpinners() {\n return runningSpinners;\n}\n\n/**\n * A custom ora spinner that sends the stream to stdout in CI, non-TTY, or expo's non-interactive flag instead of stderr (the default).\n *\n * @param options\n * @returns\n */\nexport function ora(options?: oraReal.Options | string): oraReal.Ora {\n const inputOptions = typeof options === 'string' ? { text: options } : options || {};\n const disabled = !isInteractive() || env.EXPO_DEBUG;\n const spinner = oraReal({\n // Ensure our non-interactive mode emulates CI mode.\n isEnabled: !disabled,\n // In non-interactive mode, send the stream to stdout so it prevents looking like an error.\n stream: disabled ? process.stdout : process.stderr,\n ...inputOptions,\n });\n\n const oraStart = spinner.start.bind(spinner);\n const oraStop = spinner.stop.bind(spinner);\n const oraStopAndPersist = spinner.stopAndPersist.bind(spinner);\n\n const logWrap = (method: any, args: any[]): void => {\n oraStop();\n method(...args);\n spinner.start();\n };\n\n const wrapNativeLogs = (): void => {\n console.log = (...args: any) => logWrap(logReal, args);\n console.info = (...args: any) => logWrap(infoReal, args);\n console.warn = (...args: any) => logWrap(warnReal, args);\n console.error = (...args: any) => logWrap(errorReal, args);\n\n runningSpinners.push(spinner);\n };\n\n const resetNativeLogs = (): void => {\n console.log = logReal;\n console.info = infoReal;\n console.warn = warnReal;\n console.error = errorReal;\n\n const index = runningSpinners.indexOf(spinner);\n if (index >= 0) {\n runningSpinners.splice(index, 1);\n }\n };\n\n spinner.start = (text): Ora => {\n wrapNativeLogs();\n return oraStart(text);\n };\n\n spinner.stopAndPersist = (options): Ora => {\n const result = oraStopAndPersist(options);\n resetNativeLogs();\n return result;\n };\n\n spinner.stop = (): Ora => {\n const result = oraStop();\n resetNativeLogs();\n return result;\n };\n\n // Always make the central logging module aware of the current spinner\n // Log.setSpinner(spinner);\n\n return spinner;\n}\n\n/**\n * Create a unified section spinner.\n *\n * @param title\n * @returns\n */\nexport function logNewSection(title: string) {\n const spinner = ora(chalk.bold(title));\n // Prevent the spinner from clashing with debug logs\n spinner.start();\n return spinner;\n}\n"],"names":["getAllSpinners","logNewSection","ora","logReal","console","log","infoReal","info","warnReal","warn","errorReal","error","runningSpinners","options","inputOptions","text","disabled","isInteractive","env","EXPO_DEBUG","spinner","oraReal","isEnabled","stream","process","stdout","stderr","oraStart","start","bind","oraStop","stop","oraStopAndPersist","stopAndPersist","logWrap","method","args","wrapNativeLogs","push","resetNativeLogs","index","indexOf","splice","result","title","chalk","bold"],"mappings":";;;;;;;;;;;QAegBA;eAAAA;;QAiFAC;eAAAA;;QAvEAC;eAAAA;;;;gEAzBE;;;;;;;gEAEE;;;;;;qBAGA;6BACU;;;;;;AAE9B,MAAMC,UAAUC,QAAQC,GAAG;AAC3B,MAAMC,WAAWF,QAAQG,IAAI;AAC7B,MAAMC,WAAWJ,QAAQK,IAAI;AAC7B,MAAMC,YAAYN,QAAQO,KAAK;AAE/B,MAAMC,kBAAiC,EAAE;AAElC,SAASZ;IACd,OAAOY;AACT;AAQO,SAASV,IAAIW,OAAkC;IACpD,MAAMC,eAAe,OAAOD,YAAY,WAAW;QAAEE,MAAMF;IAAQ,IAAIA,WAAW,CAAC;IACnF,MAAMG,WAAW,CAACC,IAAAA,0BAAa,OAAMC,QAAG,CAACC,UAAU;IACnD,MAAMC,UAAUC,IAAAA,cAAO,EAAC;QACtB,oDAAoD;QACpDC,WAAW,CAACN;QACZ,2FAA2F;QAC3FO,QAAQP,WAAWQ,QAAQC,MAAM,GAAGD,QAAQE,MAAM;QAClD,GAAGZ,YAAY;IACjB;IAEA,MAAMa,WAAWP,QAAQQ,KAAK,CAACC,IAAI,CAACT;IACpC,MAAMU,UAAUV,QAAQW,IAAI,CAACF,IAAI,CAACT;IAClC,MAAMY,oBAAoBZ,QAAQa,cAAc,CAACJ,IAAI,CAACT;IAEtD,MAAMc,UAAU,CAACC,QAAaC;QAC5BN;QACAK,UAAUC;QACVhB,QAAQQ,KAAK;IACf;IAEA,MAAMS,iBAAiB;QACrBjC,QAAQC,GAAG,GAAG,CAAC,GAAG+B,OAAcF,QAAQ/B,SAASiC;QACjDhC,QAAQG,IAAI,GAAG,CAAC,GAAG6B,OAAcF,QAAQ5B,UAAU8B;QACnDhC,QAAQK,IAAI,GAAG,CAAC,GAAG2B,OAAcF,QAAQ1B,UAAU4B;QACnDhC,QAAQO,KAAK,GAAG,CAAC,GAAGyB,OAAcF,QAAQxB,WAAW0B;QAErDxB,gBAAgB0B,IAAI,CAAClB;IACvB;IAEA,MAAMmB,kBAAkB;QACtBnC,QAAQC,GAAG,GAAGF;QACdC,QAAQG,IAAI,GAAGD;QACfF,QAAQK,IAAI,GAAGD;QACfJ,QAAQO,KAAK,GAAGD;QAEhB,MAAM8B,QAAQ5B,gBAAgB6B,OAAO,CAACrB;QACtC,IAAIoB,SAAS,GAAG;YACd5B,gBAAgB8B,MAAM,CAACF,OAAO;QAChC;IACF;IAEApB,QAAQQ,KAAK,GAAG,CAACb;QACfsB;QACA,OAAOV,SAASZ;IAClB;IAEAK,QAAQa,cAAc,GAAG,CAACpB;QACxB,MAAM8B,SAASX,kBAAkBnB;QACjC0B;QACA,OAAOI;IACT;IAEAvB,QAAQW,IAAI,GAAG;QACb,MAAMY,SAASb;QACfS;QACA,OAAOI;IACT;IAEA,sEAAsE;IACtE,2BAA2B;IAE3B,OAAOvB;AACT;AAQO,SAASnB,cAAc2C,KAAa;IACzC,MAAMxB,UAAUlB,IAAI2C,gBAAK,CAACC,IAAI,CAACF;IAC/B,oDAAoD;IACpDxB,QAAQQ,KAAK;IACb,OAAOR;AACT"}
@@ -5,14 +5,14 @@ Object.defineProperty(exports, "__esModule", {
5
5
  function _export(target, all) {
6
6
  for(var name in all)Object.defineProperty(target, name, {
7
7
  enumerable: true,
8
- get: all[name]
8
+ get: Object.getOwnPropertyDescriptor(all, name).get
9
9
  });
10
10
  }
11
11
  _export(exports, {
12
- parsePlistAsync: function() {
12
+ get parsePlistAsync () {
13
13
  return parsePlistAsync;
14
14
  },
15
- parsePlistBuffer: function() {
15
+ get parsePlistBuffer () {
16
16
  return parsePlistBuffer;
17
17
  }
18
18
  });
@@ -101,7 +101,8 @@ function parsePlistBuffer(contents) {
101
101
  if (Array.isArray(info)) return info[0];
102
102
  return info;
103
103
  } else {
104
- throw new _errors.CommandError('PLIST', `Cannot parse plist of type byte (0x${contents[0].toString(16)})`);
104
+ const hex = contents[0] ? `0x${contents[0].toString(16) ?? '00'}` : '<EOF>';
105
+ throw new _errors.CommandError('PLIST', `Cannot parse plist of type byte (${hex})`);
105
106
  }
106
107
  }
107
108
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/plist.ts"],"sourcesContent":["import plist from '@expo/plist';\nimport binaryPlist from 'bplist-parser';\nimport fs from 'fs/promises';\n\nimport { CommandError } from './errors';\nimport * as Log from '../log';\n\nconst CHAR_CHEVRON_OPEN = 60;\nconst CHAR_B_LOWER = 98;\n// .mobileprovision\n// const CHAR_ZERO = 30;\n\ndeclare module 'bplist-parser' {\n export function parseBuffer<T = any>(buffer: Buffer): Promise<[T]>;\n}\n\nexport async function parsePlistAsync(plistPath: string) {\n Log.debug(`Parse plist: ${plistPath}`);\n\n return parsePlistBuffer(await fs.readFile(plistPath));\n}\n\nexport function parsePlistBuffer(contents: Buffer) {\n if (contents[0] === CHAR_CHEVRON_OPEN) {\n const info = plist.parse(contents.toString());\n if (Array.isArray(info)) return info[0];\n return info;\n } else if (contents[0] === CHAR_B_LOWER) {\n const info = binaryPlist.parseBuffer(contents);\n if (Array.isArray(info)) return info[0];\n return info;\n } else {\n throw new CommandError(\n 'PLIST',\n `Cannot parse plist of type byte (0x${contents[0].toString(16)})`\n );\n }\n}\n"],"names":["parsePlistAsync","parsePlistBuffer","CHAR_CHEVRON_OPEN","CHAR_B_LOWER","plistPath","Log","debug","fs","readFile","contents","info","plist","parse","toString","Array","isArray","binaryPlist","parseBuffer","CommandError"],"mappings":";;;;;;;;;;;IAgBsBA,eAAe;eAAfA;;IAMNC,gBAAgB;eAAhBA;;;;gEAtBE;;;;;;;gEACM;;;;;;;gEACT;;;;;;wBAEc;6DACR;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAErB,MAAMC,oBAAoB;AAC1B,MAAMC,eAAe;AAQd,eAAeH,gBAAgBI,SAAiB;IACrDC,KAAIC,KAAK,CAAC,CAAC,aAAa,EAAEF,WAAW;IAErC,OAAOH,iBAAiB,MAAMM,mBAAE,CAACC,QAAQ,CAACJ;AAC5C;AAEO,SAASH,iBAAiBQ,QAAgB;IAC/C,IAAIA,QAAQ,CAAC,EAAE,KAAKP,mBAAmB;QACrC,MAAMQ,OAAOC,gBAAK,CAACC,KAAK,CAACH,SAASI,QAAQ;QAC1C,IAAIC,MAAMC,OAAO,CAACL,OAAO,OAAOA,IAAI,CAAC,EAAE;QACvC,OAAOA;IACT,OAAO,IAAID,QAAQ,CAAC,EAAE,KAAKN,cAAc;QACvC,MAAMO,OAAOM,uBAAW,CAACC,WAAW,CAACR;QACrC,IAAIK,MAAMC,OAAO,CAACL,OAAO,OAAOA,IAAI,CAAC,EAAE;QACvC,OAAOA;IACT,OAAO;QACL,MAAM,IAAIQ,oBAAY,CACpB,SACA,CAAC,mCAAmC,EAAET,QAAQ,CAAC,EAAE,CAACI,QAAQ,CAAC,IAAI,CAAC,CAAC;IAErE;AACF"}
1
+ {"version":3,"sources":["../../../src/utils/plist.ts"],"sourcesContent":["import plist from '@expo/plist';\nimport binaryPlist from 'bplist-parser';\nimport fs from 'fs/promises';\n\nimport { CommandError } from './errors';\nimport * as Log from '../log';\n\nconst CHAR_CHEVRON_OPEN = 60;\nconst CHAR_B_LOWER = 98;\n// .mobileprovision\n// const CHAR_ZERO = 30;\n\ndeclare module 'bplist-parser' {\n export function parseBuffer<T = any>(buffer: Buffer): Promise<[T]>;\n}\n\nexport async function parsePlistAsync(plistPath: string) {\n Log.debug(`Parse plist: ${plistPath}`);\n\n return parsePlistBuffer(await fs.readFile(plistPath));\n}\n\nexport function parsePlistBuffer(contents: Buffer) {\n if (contents[0] === CHAR_CHEVRON_OPEN) {\n const info = plist.parse(contents.toString());\n if (Array.isArray(info)) return info[0];\n return info;\n } else if (contents[0] === CHAR_B_LOWER) {\n const info = binaryPlist.parseBuffer(contents);\n if (Array.isArray(info)) return info[0];\n return info;\n } else {\n const hex = contents[0] ? `0x${contents[0].toString(16) ?? '00'}` : '<EOF>';\n throw new CommandError('PLIST', `Cannot parse plist of type byte (${hex})`);\n }\n}\n"],"names":["parsePlistAsync","parsePlistBuffer","CHAR_CHEVRON_OPEN","CHAR_B_LOWER","plistPath","Log","debug","fs","readFile","contents","info","plist","parse","toString","Array","isArray","binaryPlist","parseBuffer","hex","CommandError"],"mappings":";;;;;;;;;;;QAgBsBA;eAAAA;;QAMNC;eAAAA;;;;gEAtBE;;;;;;;gEACM;;;;;;;gEACT;;;;;;wBAEc;6DACR;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAErB,MAAMC,oBAAoB;AAC1B,MAAMC,eAAe;AAQd,eAAeH,gBAAgBI,SAAiB;IACrDC,KAAIC,KAAK,CAAC,CAAC,aAAa,EAAEF,WAAW;IAErC,OAAOH,iBAAiB,MAAMM,mBAAE,CAACC,QAAQ,CAACJ;AAC5C;AAEO,SAASH,iBAAiBQ,QAAgB;IAC/C,IAAIA,QAAQ,CAAC,EAAE,KAAKP,mBAAmB;QACrC,MAAMQ,OAAOC,gBAAK,CAACC,KAAK,CAACH,SAASI,QAAQ;QAC1C,IAAIC,MAAMC,OAAO,CAACL,OAAO,OAAOA,IAAI,CAAC,EAAE;QACvC,OAAOA;IACT,OAAO,IAAID,QAAQ,CAAC,EAAE,KAAKN,cAAc;QACvC,MAAMO,OAAOM,uBAAW,CAACC,WAAW,CAACR;QACrC,IAAIK,MAAMC,OAAO,CAACL,OAAO,OAAOA,IAAI,CAAC,EAAE;QACvC,OAAOA;IACT,OAAO;QACL,MAAMQ,MAAMT,QAAQ,CAAC,EAAE,GAAG,CAAC,EAAE,EAAEA,QAAQ,CAAC,EAAE,CAACI,QAAQ,CAAC,OAAO,MAAM,GAAG;QACpE,MAAM,IAAIM,oBAAY,CAAC,SAAS,CAAC,iCAAiC,EAAED,IAAI,CAAC,CAAC;IAC5E;AACF"}
@@ -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
- choosePortAsync: function() {
12
+ get choosePortAsync () {
13
13
  return choosePortAsync;
14
14
  },
15
- ensurePortAvailabilityAsync: function() {
15
+ get ensurePortAvailabilityAsync () {
16
16
  return ensurePortAvailabilityAsync;
17
17
  },
18
- getFreePortAsync: function() {
18
+ get getFreePortAsync () {
19
19
  return getFreePortAsync;
20
20
  },
21
- resolvePortAsync: function() {
21
+ get resolvePortAsync () {
22
22
  return resolvePortAsync;
23
23
  }
24
24
  });
@@ -178,6 +178,13 @@ async function resolvePortAsync(projectRoot, { /** Should opt to reuse a port th
178
178
  } else {
179
179
  port = _env.env.RCT_METRO_PORT || fallbackPort || 8081;
180
180
  }
181
+ // Port 0 means "pick any available port" — scan from the fallback port without prompting.
182
+ if (port === 0) {
183
+ const scanFrom = _env.env.RCT_METRO_PORT || fallbackPort || 8081;
184
+ const resolvedPort = await getFreePortAsync(scanFrom);
185
+ process.env.RCT_METRO_PORT = String(resolvedPort);
186
+ return resolvedPort;
187
+ }
181
188
  // Only check the port when the bundler is running.
182
189
  const resolvedPort = await choosePortAsync(projectRoot, {
183
190
  defaultPort: port,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/port.ts"],"sourcesContent":["import chalk from 'chalk';\n\nimport { env } from './env';\nimport { CommandError } from './errors';\nimport { testPortAsync, freePortAsync } from './freeport';\nimport * as Log from '../log';\n\n/** Get a free port or assert a CLI command error. */\nexport async function getFreePortAsync(rangeStart: number): Promise<number> {\n const port = await freePortAsync(rangeStart, [null, 'localhost']);\n if (!port) {\n throw new CommandError('NO_PORT_FOUND', 'No available port found');\n }\n\n return port;\n}\n\n/** @return `true` if the port can still be used to start the dev server, `false` if the dev server should be skipped, and asserts if the port is now taken. */\nexport async function ensurePortAvailabilityAsync(\n projectRoot: string,\n { port }: { port: number }\n): Promise<boolean> {\n const isFreePort = await testPortAsync(port, [null]);\n // Check if port has become busy during the build.\n if (isFreePort) {\n return true;\n }\n\n const isBusy = await isBusyPortRunningSameProcessAsync(projectRoot, { port });\n if (!isBusy) {\n throw new CommandError(\n `Port \"${port}\" became busy running another process while the app was compiling. Re-run command to use a new port.`\n );\n }\n\n // Log that the dev server will not be started and that the logs will appear in another window.\n Log.log(\n '› The dev server for this app is already running in another window. Logs will appear there.'\n );\n return false;\n}\n\nfunction isRestrictedPort(port: number) {\n if (process.platform !== 'win32' && port < 1024) {\n const isRoot = process.getuid && process.getuid() === 0;\n return !isRoot;\n }\n return false;\n}\n\nasync function isBusyPortRunningSameProcessAsync(projectRoot: string, { port }: { port: number }) {\n const { getRunningProcess } =\n require('./getRunningProcess') as typeof import('./getRunningProcess');\n const runningProcess = isRestrictedPort(port) ? null : await getRunningProcess(port);\n if (runningProcess) {\n if (runningProcess.directory === projectRoot) {\n return true;\n } else {\n return false;\n }\n }\n\n return null;\n}\n\n// TODO(Bacon): Revisit after all start and run code is merged.\nexport async function choosePortAsync(\n projectRoot: string,\n {\n defaultPort,\n host,\n reuseExistingPort,\n }: {\n defaultPort: number;\n host?: string;\n reuseExistingPort?: boolean;\n }\n): Promise<number | null> {\n try {\n const port = await freePortAsync(defaultPort, [host ?? null]);\n if (port === defaultPort || defaultPort === 0) {\n return port;\n }\n\n const isRestricted = port && isRestrictedPort(port);\n\n let message = isRestricted\n ? `Admin permissions are required to run a server on a port below 1024`\n : `Port ${chalk.bold(defaultPort)} is`;\n\n const { getRunningProcess } =\n require('./getRunningProcess') as typeof import('./getRunningProcess');\n const runningProcess = isRestricted ? null : await getRunningProcess(defaultPort);\n\n if (runningProcess) {\n const pidTag = chalk.gray(`(pid ${runningProcess.pid})`);\n if (runningProcess.directory === projectRoot) {\n message += ` running this app in another window`;\n if (reuseExistingPort) {\n return null;\n }\n } else {\n message += ` running ${chalk.cyan(runningProcess.command)} in another window`;\n }\n message += '\\n' + chalk.gray(` ${runningProcess.directory} ${pidTag}`);\n } else {\n message += ' being used by another process';\n }\n\n Log.log(`\\u203A ${message}`);\n const { confirmAsync } = require('./prompts') as typeof import('./prompts');\n const change = await confirmAsync({\n message: `Use port ${port} instead?`,\n initial: true,\n });\n return change ? port : null;\n } catch (error: any) {\n if (error.code === 'ABORTED') {\n throw error;\n } else if (error.code === 'NON_INTERACTIVE') {\n Log.warn(chalk.yellow(error.message));\n return null;\n }\n throw error;\n }\n}\n\n// TODO(Bacon): Revisit after all start and run code is merged.\nexport async function resolvePortAsync(\n projectRoot: string,\n {\n /** Should opt to reuse a port that is running the same project in another window. */\n reuseExistingPort,\n /** Preferred port. */\n defaultPort,\n /** Backup port for when the default isn't available. */\n fallbackPort,\n }: {\n reuseExistingPort?: boolean;\n defaultPort?: string | number;\n fallbackPort?: number;\n } = {}\n): Promise<number | null> {\n let port: number;\n if (typeof defaultPort === 'string') {\n port = parseInt(defaultPort, 10);\n } else if (typeof defaultPort === 'number') {\n port = defaultPort;\n } else {\n port = env.RCT_METRO_PORT || fallbackPort || 8081;\n }\n\n // Only check the port when the bundler is running.\n const resolvedPort = await choosePortAsync(projectRoot, {\n defaultPort: port,\n reuseExistingPort,\n });\n if (resolvedPort == null) {\n Log.log('\\u203A Skipping dev server');\n // Skip bundling if the port is null\n } else {\n // Use the new or resolved port\n process.env.RCT_METRO_PORT = String(resolvedPort);\n }\n\n return resolvedPort;\n}\n"],"names":["choosePortAsync","ensurePortAvailabilityAsync","getFreePortAsync","resolvePortAsync","rangeStart","port","freePortAsync","CommandError","projectRoot","isFreePort","testPortAsync","isBusy","isBusyPortRunningSameProcessAsync","Log","log","isRestrictedPort","process","platform","isRoot","getuid","getRunningProcess","require","runningProcess","directory","defaultPort","host","reuseExistingPort","isRestricted","message","chalk","bold","pidTag","gray","pid","cyan","command","confirmAsync","change","initial","error","code","warn","yellow","fallbackPort","parseInt","env","RCT_METRO_PORT","resolvedPort","String"],"mappings":";;;;;;;;;;;IAkEsBA,eAAe;eAAfA;;IAhDAC,2BAA2B;eAA3BA;;IAVAC,gBAAgB;eAAhBA;;IAwHAC,gBAAgB;eAAhBA;;;;gEAhIJ;;;;;;qBAEE;wBACS;0BACgB;6DACxB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGd,eAAeD,iBAAiBE,UAAkB;IACvD,MAAMC,OAAO,MAAMC,IAAAA,uBAAa,EAACF,YAAY;QAAC;QAAM;KAAY;IAChE,IAAI,CAACC,MAAM;QACT,MAAM,IAAIE,oBAAY,CAAC,iBAAiB;IAC1C;IAEA,OAAOF;AACT;AAGO,eAAeJ,4BACpBO,WAAmB,EACnB,EAAEH,IAAI,EAAoB;IAE1B,MAAMI,aAAa,MAAMC,IAAAA,uBAAa,EAACL,MAAM;QAAC;KAAK;IACnD,kDAAkD;IAClD,IAAII,YAAY;QACd,OAAO;IACT;IAEA,MAAME,SAAS,MAAMC,kCAAkCJ,aAAa;QAAEH;IAAK;IAC3E,IAAI,CAACM,QAAQ;QACX,MAAM,IAAIJ,oBAAY,CACpB,CAAC,MAAM,EAAEF,KAAK,oGAAoG,CAAC;IAEvH;IAEA,+FAA+F;IAC/FQ,KAAIC,GAAG,CACL;IAEF,OAAO;AACT;AAEA,SAASC,iBAAiBV,IAAY;IACpC,IAAIW,QAAQC,QAAQ,KAAK,WAAWZ,OAAO,MAAM;QAC/C,MAAMa,SAASF,QAAQG,MAAM,IAAIH,QAAQG,MAAM,OAAO;QACtD,OAAO,CAACD;IACV;IACA,OAAO;AACT;AAEA,eAAeN,kCAAkCJ,WAAmB,EAAE,EAAEH,IAAI,EAAoB;IAC9F,MAAM,EAAEe,iBAAiB,EAAE,GACzBC,QAAQ;IACV,MAAMC,iBAAiBP,iBAAiBV,QAAQ,OAAO,MAAMe,kBAAkBf;IAC/E,IAAIiB,gBAAgB;QAClB,IAAIA,eAAeC,SAAS,KAAKf,aAAa;YAC5C,OAAO;QACT,OAAO;YACL,OAAO;QACT;IACF;IAEA,OAAO;AACT;AAGO,eAAeR,gBACpBQ,WAAmB,EACnB,EACEgB,WAAW,EACXC,IAAI,EACJC,iBAAiB,EAKlB;IAED,IAAI;QACF,MAAMrB,OAAO,MAAMC,IAAAA,uBAAa,EAACkB,aAAa;YAACC,QAAQ;SAAK;QAC5D,IAAIpB,SAASmB,eAAeA,gBAAgB,GAAG;YAC7C,OAAOnB;QACT;QAEA,MAAMsB,eAAetB,QAAQU,iBAAiBV;QAE9C,IAAIuB,UAAUD,eACV,CAAC,mEAAmE,CAAC,GACrE,CAAC,KAAK,EAAEE,gBAAK,CAACC,IAAI,CAACN,aAAa,GAAG,CAAC;QAExC,MAAM,EAAEJ,iBAAiB,EAAE,GACzBC,QAAQ;QACV,MAAMC,iBAAiBK,eAAe,OAAO,MAAMP,kBAAkBI;QAErE,IAAIF,gBAAgB;YAClB,MAAMS,SAASF,gBAAK,CAACG,IAAI,CAAC,CAAC,KAAK,EAAEV,eAAeW,GAAG,CAAC,CAAC,CAAC;YACvD,IAAIX,eAAeC,SAAS,KAAKf,aAAa;gBAC5CoB,WAAW,CAAC,mCAAmC,CAAC;gBAChD,IAAIF,mBAAmB;oBACrB,OAAO;gBACT;YACF,OAAO;gBACLE,WAAW,CAAC,SAAS,EAAEC,gBAAK,CAACK,IAAI,CAACZ,eAAea,OAAO,EAAE,kBAAkB,CAAC;YAC/E;YACAP,WAAW,OAAOC,gBAAK,CAACG,IAAI,CAAC,CAAC,EAAE,EAAEV,eAAeC,SAAS,CAAC,CAAC,EAAEQ,QAAQ;QACxE,OAAO;YACLH,WAAW;QACb;QAEAf,KAAIC,GAAG,CAAC,CAAC,OAAO,EAAEc,SAAS;QAC3B,MAAM,EAAEQ,YAAY,EAAE,GAAGf,QAAQ;QACjC,MAAMgB,SAAS,MAAMD,aAAa;YAChCR,SAAS,CAAC,SAAS,EAAEvB,KAAK,SAAS,CAAC;YACpCiC,SAAS;QACX;QACA,OAAOD,SAAShC,OAAO;IACzB,EAAE,OAAOkC,OAAY;QACnB,IAAIA,MAAMC,IAAI,KAAK,WAAW;YAC5B,MAAMD;QACR,OAAO,IAAIA,MAAMC,IAAI,KAAK,mBAAmB;YAC3C3B,KAAI4B,IAAI,CAACZ,gBAAK,CAACa,MAAM,CAACH,MAAMX,OAAO;YACnC,OAAO;QACT;QACA,MAAMW;IACR;AACF;AAGO,eAAepC,iBACpBK,WAAmB,EACnB,EACE,mFAAmF,GACnFkB,iBAAiB,EACjB,oBAAoB,GACpBF,WAAW,EACX,sDAAsD,GACtDmB,YAAY,EAKb,GAAG,CAAC,CAAC;IAEN,IAAItC;IACJ,IAAI,OAAOmB,gBAAgB,UAAU;QACnCnB,OAAOuC,SAASpB,aAAa;IAC/B,OAAO,IAAI,OAAOA,gBAAgB,UAAU;QAC1CnB,OAAOmB;IACT,OAAO;QACLnB,OAAOwC,QAAG,CAACC,cAAc,IAAIH,gBAAgB;IAC/C;IAEA,mDAAmD;IACnD,MAAMI,eAAe,MAAM/C,gBAAgBQ,aAAa;QACtDgB,aAAanB;QACbqB;IACF;IACA,IAAIqB,gBAAgB,MAAM;QACxBlC,KAAIC,GAAG,CAAC;IACR,oCAAoC;IACtC,OAAO;QACL,+BAA+B;QAC/BE,QAAQ6B,GAAG,CAACC,cAAc,GAAGE,OAAOD;IACtC;IAEA,OAAOA;AACT"}
1
+ {"version":3,"sources":["../../../src/utils/port.ts"],"sourcesContent":["import chalk from 'chalk';\n\nimport { env } from './env';\nimport { CommandError } from './errors';\nimport { testPortAsync, freePortAsync } from './freeport';\nimport * as Log from '../log';\n\n/** Get a free port or assert a CLI command error. */\nexport async function getFreePortAsync(rangeStart: number): Promise<number> {\n const port = await freePortAsync(rangeStart, [null, 'localhost']);\n if (!port) {\n throw new CommandError('NO_PORT_FOUND', 'No available port found');\n }\n\n return port;\n}\n\n/** @return `true` if the port can still be used to start the dev server, `false` if the dev server should be skipped, and asserts if the port is now taken. */\nexport async function ensurePortAvailabilityAsync(\n projectRoot: string,\n { port }: { port: number }\n): Promise<boolean> {\n const isFreePort = await testPortAsync(port, [null]);\n // Check if port has become busy during the build.\n if (isFreePort) {\n return true;\n }\n\n const isBusy = await isBusyPortRunningSameProcessAsync(projectRoot, { port });\n if (!isBusy) {\n throw new CommandError(\n `Port \"${port}\" became busy running another process while the app was compiling. Re-run command to use a new port.`\n );\n }\n\n // Log that the dev server will not be started and that the logs will appear in another window.\n Log.log(\n '› The dev server for this app is already running in another window. Logs will appear there.'\n );\n return false;\n}\n\nfunction isRestrictedPort(port: number) {\n if (process.platform !== 'win32' && port < 1024) {\n const isRoot = process.getuid && process.getuid() === 0;\n return !isRoot;\n }\n return false;\n}\n\nasync function isBusyPortRunningSameProcessAsync(projectRoot: string, { port }: { port: number }) {\n const { getRunningProcess } =\n require('./getRunningProcess') as typeof import('./getRunningProcess');\n const runningProcess = isRestrictedPort(port) ? null : await getRunningProcess(port);\n if (runningProcess) {\n if (runningProcess.directory === projectRoot) {\n return true;\n } else {\n return false;\n }\n }\n\n return null;\n}\n\n// TODO(Bacon): Revisit after all start and run code is merged.\nexport async function choosePortAsync(\n projectRoot: string,\n {\n defaultPort,\n host,\n reuseExistingPort,\n }: {\n defaultPort: number;\n host?: string;\n reuseExistingPort?: boolean;\n }\n): Promise<number | null> {\n try {\n const port = await freePortAsync(defaultPort, [host ?? null]);\n if (port === defaultPort || defaultPort === 0) {\n return port;\n }\n\n const isRestricted = port && isRestrictedPort(port);\n\n let message = isRestricted\n ? `Admin permissions are required to run a server on a port below 1024`\n : `Port ${chalk.bold(defaultPort)} is`;\n\n const { getRunningProcess } =\n require('./getRunningProcess') as typeof import('./getRunningProcess');\n const runningProcess = isRestricted ? null : await getRunningProcess(defaultPort);\n\n if (runningProcess) {\n const pidTag = chalk.gray(`(pid ${runningProcess.pid})`);\n if (runningProcess.directory === projectRoot) {\n message += ` running this app in another window`;\n if (reuseExistingPort) {\n return null;\n }\n } else {\n message += ` running ${chalk.cyan(runningProcess.command)} in another window`;\n }\n message += '\\n' + chalk.gray(` ${runningProcess.directory} ${pidTag}`);\n } else {\n message += ' being used by another process';\n }\n\n Log.log(`\\u203A ${message}`);\n const { confirmAsync } = require('./prompts') as typeof import('./prompts');\n const change = await confirmAsync({\n message: `Use port ${port} instead?`,\n initial: true,\n });\n return change ? port : null;\n } catch (error: any) {\n if (error.code === 'ABORTED') {\n throw error;\n } else if (error.code === 'NON_INTERACTIVE') {\n Log.warn(chalk.yellow(error.message));\n return null;\n }\n throw error;\n }\n}\n\n// TODO(Bacon): Revisit after all start and run code is merged.\nexport async function resolvePortAsync(\n projectRoot: string,\n {\n /** Should opt to reuse a port that is running the same project in another window. */\n reuseExistingPort,\n /** Preferred port. */\n defaultPort,\n /** Backup port for when the default isn't available. */\n fallbackPort,\n }: {\n reuseExistingPort?: boolean;\n defaultPort?: string | number;\n fallbackPort?: number;\n } = {}\n): Promise<number | null> {\n let port: number;\n if (typeof defaultPort === 'string') {\n port = parseInt(defaultPort, 10);\n } else if (typeof defaultPort === 'number') {\n port = defaultPort;\n } else {\n port = env.RCT_METRO_PORT || fallbackPort || 8081;\n }\n\n // Port 0 means \"pick any available port\" — scan from the fallback port without prompting.\n if (port === 0) {\n const scanFrom = env.RCT_METRO_PORT || fallbackPort || 8081;\n const resolvedPort = await getFreePortAsync(scanFrom);\n process.env.RCT_METRO_PORT = String(resolvedPort);\n return resolvedPort;\n }\n\n // Only check the port when the bundler is running.\n const resolvedPort = await choosePortAsync(projectRoot, {\n defaultPort: port,\n reuseExistingPort,\n });\n if (resolvedPort == null) {\n Log.log('\\u203A Skipping dev server');\n // Skip bundling if the port is null\n } else {\n // Use the new or resolved port\n process.env.RCT_METRO_PORT = String(resolvedPort);\n }\n\n return resolvedPort;\n}\n"],"names":["choosePortAsync","ensurePortAvailabilityAsync","getFreePortAsync","resolvePortAsync","rangeStart","port","freePortAsync","CommandError","projectRoot","isFreePort","testPortAsync","isBusy","isBusyPortRunningSameProcessAsync","Log","log","isRestrictedPort","process","platform","isRoot","getuid","getRunningProcess","require","runningProcess","directory","defaultPort","host","reuseExistingPort","isRestricted","message","chalk","bold","pidTag","gray","pid","cyan","command","confirmAsync","change","initial","error","code","warn","yellow","fallbackPort","parseInt","env","RCT_METRO_PORT","scanFrom","resolvedPort","String"],"mappings":"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"}
@@ -5,17 +5,17 @@ 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
- createProgressBar: function() {
12
+ get createProgressBar () {
13
13
  return createProgressBar;
14
14
  },
15
- getProgressBar: function() {
15
+ get getProgressBar () {
16
16
  return getProgressBar;
17
17
  },
18
- setProgressBar: function() {
18
+ get setProgressBar () {
19
19
  return setProgressBar;
20
20
  }
21
21
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/progress.ts"],"sourcesContent":["import ProgressBar from 'progress';\n\nlet currentProgress: ProgressBar | null = null;\n\nexport function setProgressBar(bar: ProgressBar | null): void {\n currentProgress = bar;\n}\n\nexport function getProgressBar(): ProgressBar | null {\n return currentProgress;\n}\n\nexport function createProgressBar(barFormat: string, options: ProgressBar.ProgressBarOptions) {\n if (process.stderr.clearLine == null) {\n return null;\n }\n\n const bar = new ProgressBar(barFormat, options);\n\n const logReal = console.log;\n const infoReal = console.info;\n const warnReal = console.warn;\n const errorReal = console.error;\n\n const wrapNativeLogs = (): void => {\n // TODO(@kitten): This was a spread-passthrough since this code was added, but typings indicate\n // this isn't correct and we're discarding output here. If we could have a better stdout redirection\n // in the future here, that'd be preferable\n console.log = (...args: any[]) => bar.interrupt(...(args as [string]));\n console.info = (...args: any[]) => bar.interrupt(...(args as [string]));\n console.warn = (...args: any[]) => bar.interrupt(...(args as [string]));\n console.error = (...args: any[]) => bar.interrupt(...(args as [string]));\n };\n\n const resetNativeLogs = (): void => {\n console.log = logReal;\n console.info = infoReal;\n console.warn = warnReal;\n console.error = errorReal;\n };\n\n const originalTerminate = bar.terminate.bind(bar);\n bar.terminate = () => {\n resetNativeLogs();\n setProgressBar(null);\n originalTerminate();\n };\n\n wrapNativeLogs();\n setProgressBar(bar);\n return bar;\n}\n"],"names":["createProgressBar","getProgressBar","setProgressBar","currentProgress","bar","barFormat","options","process","stderr","clearLine","ProgressBar","logReal","console","log","infoReal","info","warnReal","warn","errorReal","error","wrapNativeLogs","args","interrupt","resetNativeLogs","originalTerminate","terminate","bind"],"mappings":";;;;;;;;;;;IAYgBA,iBAAiB;eAAjBA;;IAJAC,cAAc;eAAdA;;IAJAC,cAAc;eAAdA;;;;gEAJQ;;;;;;;;;;;AAExB,IAAIC,kBAAsC;AAEnC,SAASD,eAAeE,GAAuB;IACpDD,kBAAkBC;AACpB;AAEO,SAASH;IACd,OAAOE;AACT;AAEO,SAASH,kBAAkBK,SAAiB,EAAEC,OAAuC;IAC1F,IAAIC,QAAQC,MAAM,CAACC,SAAS,IAAI,MAAM;QACpC,OAAO;IACT;IAEA,MAAML,MAAM,IAAIM,CAAAA,WAAU,SAAC,CAACL,WAAWC;IAEvC,MAAMK,UAAUC,QAAQC,GAAG;IAC3B,MAAMC,WAAWF,QAAQG,IAAI;IAC7B,MAAMC,WAAWJ,QAAQK,IAAI;IAC7B,MAAMC,YAAYN,QAAQO,KAAK;IAE/B,MAAMC,iBAAiB;QACrB,+FAA+F;QAC/F,oGAAoG;QACpG,2CAA2C;QAC3CR,QAAQC,GAAG,GAAG,CAAC,GAAGQ,OAAgBjB,IAAIkB,SAAS,IAAKD;QACpDT,QAAQG,IAAI,GAAG,CAAC,GAAGM,OAAgBjB,IAAIkB,SAAS,IAAKD;QACrDT,QAAQK,IAAI,GAAG,CAAC,GAAGI,OAAgBjB,IAAIkB,SAAS,IAAKD;QACrDT,QAAQO,KAAK,GAAG,CAAC,GAAGE,OAAgBjB,IAAIkB,SAAS,IAAKD;IACxD;IAEA,MAAME,kBAAkB;QACtBX,QAAQC,GAAG,GAAGF;QACdC,QAAQG,IAAI,GAAGD;QACfF,QAAQK,IAAI,GAAGD;QACfJ,QAAQO,KAAK,GAAGD;IAClB;IAEA,MAAMM,oBAAoBpB,IAAIqB,SAAS,CAACC,IAAI,CAACtB;IAC7CA,IAAIqB,SAAS,GAAG;QACdF;QACArB,eAAe;QACfsB;IACF;IAEAJ;IACAlB,eAAeE;IACf,OAAOA;AACT"}
1
+ {"version":3,"sources":["../../../src/utils/progress.ts"],"sourcesContent":["import ProgressBar from 'progress';\n\nlet currentProgress: ProgressBar | null = null;\n\nexport function setProgressBar(bar: ProgressBar | null): void {\n currentProgress = bar;\n}\n\nexport function getProgressBar(): ProgressBar | null {\n return currentProgress;\n}\n\nexport function createProgressBar(barFormat: string, options: ProgressBar.ProgressBarOptions) {\n if (process.stderr.clearLine == null) {\n return null;\n }\n\n const bar = new ProgressBar(barFormat, options);\n\n const logReal = console.log;\n const infoReal = console.info;\n const warnReal = console.warn;\n const errorReal = console.error;\n\n const wrapNativeLogs = (): void => {\n // TODO(@kitten): This was a spread-passthrough since this code was added, but typings indicate\n // this isn't correct and we're discarding output here. If we could have a better stdout redirection\n // in the future here, that'd be preferable\n console.log = (...args: any[]) => bar.interrupt(...(args as [string]));\n console.info = (...args: any[]) => bar.interrupt(...(args as [string]));\n console.warn = (...args: any[]) => bar.interrupt(...(args as [string]));\n console.error = (...args: any[]) => bar.interrupt(...(args as [string]));\n };\n\n const resetNativeLogs = (): void => {\n console.log = logReal;\n console.info = infoReal;\n console.warn = warnReal;\n console.error = errorReal;\n };\n\n const originalTerminate = bar.terminate.bind(bar);\n bar.terminate = () => {\n resetNativeLogs();\n setProgressBar(null);\n originalTerminate();\n };\n\n wrapNativeLogs();\n setProgressBar(bar);\n return bar;\n}\n"],"names":["createProgressBar","getProgressBar","setProgressBar","currentProgress","bar","barFormat","options","process","stderr","clearLine","ProgressBar","logReal","console","log","infoReal","info","warnReal","warn","errorReal","error","wrapNativeLogs","args","interrupt","resetNativeLogs","originalTerminate","terminate","bind"],"mappings":";;;;;;;;;;;QAYgBA;eAAAA;;QAJAC;eAAAA;;QAJAC;eAAAA;;;;gEAJQ;;;;;;;;;;;AAExB,IAAIC,kBAAsC;AAEnC,SAASD,eAAeE,GAAuB;IACpDD,kBAAkBC;AACpB;AAEO,SAASH;IACd,OAAOE;AACT;AAEO,SAASH,kBAAkBK,SAAiB,EAAEC,OAAuC;IAC1F,IAAIC,QAAQC,MAAM,CAACC,SAAS,IAAI,MAAM;QACpC,OAAO;IACT;IAEA,MAAML,MAAM,IAAIM,CAAAA,WAAU,SAAC,CAACL,WAAWC;IAEvC,MAAMK,UAAUC,QAAQC,GAAG;IAC3B,MAAMC,WAAWF,QAAQG,IAAI;IAC7B,MAAMC,WAAWJ,QAAQK,IAAI;IAC7B,MAAMC,YAAYN,QAAQO,KAAK;IAE/B,MAAMC,iBAAiB;QACrB,+FAA+F;QAC/F,oGAAoG;QACpG,2CAA2C;QAC3CR,QAAQC,GAAG,GAAG,CAAC,GAAGQ,OAAgBjB,IAAIkB,SAAS,IAAKD;QACpDT,QAAQG,IAAI,GAAG,CAAC,GAAGM,OAAgBjB,IAAIkB,SAAS,IAAKD;QACrDT,QAAQK,IAAI,GAAG,CAAC,GAAGI,OAAgBjB,IAAIkB,SAAS,IAAKD;QACrDT,QAAQO,KAAK,GAAG,CAAC,GAAGE,OAAgBjB,IAAIkB,SAAS,IAAKD;IACxD;IAEA,MAAME,kBAAkB;QACtBX,QAAQC,GAAG,GAAGF;QACdC,QAAQG,IAAI,GAAGD;QACfF,QAAQK,IAAI,GAAGD;QACfJ,QAAQO,KAAK,GAAGD;IAClB;IAEA,MAAMM,oBAAoBpB,IAAIqB,SAAS,CAACC,IAAI,CAACtB;IAC7CA,IAAIqB,SAAS,GAAG;QACdF;QACArB,eAAe;QACfsB;IACF;IAEAJ;IACAlB,eAAeE;IACf,OAAOA;AACT"}
@@ -5,35 +5,35 @@ 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
- addInteractionListener: function() {
12
+ get addInteractionListener () {
13
13
  return addInteractionListener;
14
14
  },
15
- confirmAsync: function() {
15
+ get confirmAsync () {
16
16
  return confirmAsync;
17
17
  },
18
- createSelectionFilter: function() {
18
+ get createSelectionFilter () {
19
19
  return createSelectionFilter;
20
20
  },
21
- default: function() {
21
+ get default () {
22
22
  return prompt;
23
23
  },
24
- pauseInteractions: function() {
24
+ get pauseInteractions () {
25
25
  return pauseInteractions;
26
26
  },
27
- promptAsync: function() {
27
+ get promptAsync () {
28
28
  return promptAsync;
29
29
  },
30
- removeInteractionListener: function() {
30
+ get removeInteractionListener () {
31
31
  return removeInteractionListener;
32
32
  },
33
- resumeInteractions: function() {
33
+ get resumeInteractions () {
34
34
  return resumeInteractions;
35
35
  },
36
- selectAsync: function() {
36
+ get selectAsync () {
37
37
  return selectAsync;
38
38
  }
39
39
  });
@@ -64,7 +64,7 @@ async function prompt(questions, { nonInteractiveHelp, ...options } = {}) {
64
64
  questions = Array.isArray(questions) ? questions : [
65
65
  questions
66
66
  ];
67
- if (!(0, _interactive.isInteractive)() && questions.length !== 0) {
67
+ if (!(0, _interactive.isInteractive)() && questions.length) {
68
68
  let message = `Input is required, but 'npx expo' is in non-interactive mode.\n`;
69
69
  if (nonInteractiveHelp) {
70
70
  message += nonInteractiveHelp;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/prompts.ts"],"sourcesContent":["import assert from 'assert';\nimport prompts, { Choice, Options, PromptObject } from 'prompts';\n\nimport { AbortCommandError, CommandError } from './errors';\nimport { isInteractive } from './interactive';\n\nconst debug = require('debug')('expo:utils:prompts') as typeof console.log;\n\nexport type Question<V extends string = string> = PromptObject<V> & {\n optionsPerPage?: number;\n};\n\nexport interface ExpoChoice<T> extends Choice {\n value: T;\n}\n\ntype PromptOptions = { nonInteractiveHelp?: string } & Options;\n\nexport type NamelessQuestion = Omit<Question<'value'>, 'name' | 'type'>;\n\ntype InteractionOptions = { pause: boolean; canEscape?: boolean };\n\ntype InteractionCallback = (options: InteractionOptions) => void;\n\n/** Interaction observers for detecting when keystroke tracking should pause/resume. */\nconst listeners: InteractionCallback[] = [];\n\nexport default async function prompt(\n questions: Question | Question[],\n { nonInteractiveHelp, ...options }: PromptOptions = {}\n) {\n questions = Array.isArray(questions) ? questions : [questions];\n if (!isInteractive() && questions.length !== 0) {\n let message = `Input is required, but 'npx expo' is in non-interactive mode.\\n`;\n if (nonInteractiveHelp) {\n message += nonInteractiveHelp;\n } else {\n const question = questions[0];\n const questionMessage =\n typeof question.message === 'function'\n ? question.message(undefined, {}, question)\n : question.message;\n\n message += `Required input:\\n${(questionMessage || '').trim().replace(/^/gm, '> ')}`;\n }\n throw new CommandError('NON_INTERACTIVE', message);\n }\n\n pauseInteractions();\n try {\n const results = await prompts(questions, {\n onCancel() {\n throw new AbortCommandError();\n },\n ...options,\n });\n\n return results;\n } finally {\n resumeInteractions();\n }\n}\n\n/**\n * Create a standard yes/no confirmation that can be cancelled.\n *\n * @param questions\n * @param options\n */\nexport async function confirmAsync(\n questions: NamelessQuestion,\n options?: PromptOptions\n): Promise<boolean> {\n const { value } = await prompt(\n {\n initial: true,\n ...questions,\n name: 'value',\n type: 'confirm',\n },\n options\n );\n return value ?? null;\n}\n\n/** Select an option from a list of options. */\nexport async function selectAsync<T>(\n message: string,\n choices: ExpoChoice<T>[],\n options?: PromptOptions\n): Promise<T> {\n const { value } = await prompt(\n {\n message,\n choices,\n name: 'value',\n type: 'select',\n },\n options\n );\n return value ?? null;\n}\n\nexport const promptAsync = prompt;\n\n/** Used to pause/resume interaction observers while prompting (made for TerminalUI). */\nexport function addInteractionListener(callback: InteractionCallback) {\n listeners.push(callback);\n}\n\nexport function removeInteractionListener(callback: InteractionCallback) {\n const listenerIndex = listeners.findIndex((_callback) => _callback === callback);\n assert(\n listenerIndex >= 0,\n 'removeInteractionListener(): cannot remove an unregistered event listener.'\n );\n listeners.splice(listenerIndex, 1);\n}\n\n/** Notify all listeners that keypress observations must pause. */\nexport function pauseInteractions(options: Omit<InteractionOptions, 'pause'> = {}) {\n debug('Interaction observers paused');\n for (const listener of listeners) {\n listener({ pause: true, ...options });\n }\n}\n\n/** Notify all listeners that keypress observations can start.. */\nexport function resumeInteractions(options: Omit<InteractionOptions, 'pause'> = {}) {\n debug('Interaction observers resumed');\n for (const listener of listeners) {\n listener({ pause: false, ...options });\n }\n}\n\nexport function createSelectionFilter(): (input: any, choices: Choice[]) => Promise<any> {\n function escapeRegex(string: string) {\n return string.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n return async (input: any, choices: Choice[]) => {\n try {\n const regex = new RegExp(escapeRegex(input), 'i');\n return choices.filter((choice: any) => regex.test(choice.title));\n } catch (error: any) {\n debug('Error filtering choices', error);\n return [];\n }\n };\n}\n"],"names":["addInteractionListener","confirmAsync","createSelectionFilter","prompt","pauseInteractions","promptAsync","removeInteractionListener","resumeInteractions","selectAsync","debug","require","listeners","questions","nonInteractiveHelp","options","Array","isArray","isInteractive","length","message","question","questionMessage","undefined","trim","replace","CommandError","results","prompts","onCancel","AbortCommandError","value","initial","name","type","choices","callback","push","listenerIndex","findIndex","_callback","assert","splice","listener","pause","escapeRegex","string","input","regex","RegExp","filter","choice","test","title","error"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/utils/prompts.ts"],"sourcesContent":["import assert from 'assert';\nimport type { Choice, Options, PromptObject } from 'prompts';\nimport prompts from 'prompts';\n\nimport { AbortCommandError, CommandError } from './errors';\nimport { isInteractive } from './interactive';\n\nconst debug = require('debug')('expo:utils:prompts') as typeof console.log;\n\nexport type Question<V extends string = string> = PromptObject<V> & {\n optionsPerPage?: number;\n};\n\nexport interface ExpoChoice<T> extends Choice {\n value: T;\n}\n\ntype PromptOptions = { nonInteractiveHelp?: string } & Options;\n\nexport type NamelessQuestion = Omit<Question<'value'>, 'name' | 'type'>;\n\ntype InteractionOptions = { pause: boolean; canEscape?: boolean };\n\ntype InteractionCallback = (options: InteractionOptions) => void;\n\n/** Interaction observers for detecting when keystroke tracking should pause/resume. */\nconst listeners: InteractionCallback[] = [];\n\nexport default async function prompt(\n questions: Question | Question[],\n { nonInteractiveHelp, ...options }: PromptOptions = {}\n) {\n questions = Array.isArray(questions) ? questions : [questions];\n if (!isInteractive() && questions.length) {\n let message = `Input is required, but 'npx expo' is in non-interactive mode.\\n`;\n if (nonInteractiveHelp) {\n message += nonInteractiveHelp;\n } else {\n const question = questions[0]!;\n const questionMessage =\n typeof question.message === 'function'\n ? question.message(undefined, {}, question)\n : question.message;\n\n message += `Required input:\\n${(questionMessage || '').trim().replace(/^/gm, '> ')}`;\n }\n throw new CommandError('NON_INTERACTIVE', message);\n }\n\n pauseInteractions();\n try {\n const results = await prompts(questions, {\n onCancel() {\n throw new AbortCommandError();\n },\n ...options,\n });\n\n return results;\n } finally {\n resumeInteractions();\n }\n}\n\n/**\n * Create a standard yes/no confirmation that can be cancelled.\n *\n * @param questions\n * @param options\n */\nexport async function confirmAsync(\n questions: NamelessQuestion,\n options?: PromptOptions\n): Promise<boolean> {\n const { value } = await prompt(\n {\n initial: true,\n ...questions,\n name: 'value',\n type: 'confirm',\n },\n options\n );\n return value ?? null;\n}\n\n/** Select an option from a list of options. */\nexport async function selectAsync<T>(\n message: string,\n choices: ExpoChoice<T>[],\n options?: PromptOptions\n): Promise<T> {\n const { value } = await prompt(\n {\n message,\n choices,\n name: 'value',\n type: 'select',\n },\n options\n );\n return value ?? null;\n}\n\nexport const promptAsync = prompt;\n\n/** Used to pause/resume interaction observers while prompting (made for TerminalUI). */\nexport function addInteractionListener(callback: InteractionCallback) {\n listeners.push(callback);\n}\n\nexport function removeInteractionListener(callback: InteractionCallback) {\n const listenerIndex = listeners.findIndex((_callback) => _callback === callback);\n assert(\n listenerIndex >= 0,\n 'removeInteractionListener(): cannot remove an unregistered event listener.'\n );\n listeners.splice(listenerIndex, 1);\n}\n\n/** Notify all listeners that keypress observations must pause. */\nexport function pauseInteractions(options: Omit<InteractionOptions, 'pause'> = {}) {\n debug('Interaction observers paused');\n for (const listener of listeners) {\n listener({ pause: true, ...options });\n }\n}\n\n/** Notify all listeners that keypress observations can start.. */\nexport function resumeInteractions(options: Omit<InteractionOptions, 'pause'> = {}) {\n debug('Interaction observers resumed');\n for (const listener of listeners) {\n listener({ pause: false, ...options });\n }\n}\n\nexport function createSelectionFilter(): (input: any, choices: Choice[]) => Promise<any> {\n function escapeRegex(string: string) {\n return string.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n return async (input: any, choices: Choice[]) => {\n try {\n const regex = new RegExp(escapeRegex(input), 'i');\n return choices.filter((choice: any) => regex.test(choice.title));\n } catch (error: any) {\n debug('Error filtering choices', error);\n return [];\n }\n };\n}\n"],"names":["addInteractionListener","confirmAsync","createSelectionFilter","prompt","pauseInteractions","promptAsync","removeInteractionListener","resumeInteractions","selectAsync","debug","require","listeners","questions","nonInteractiveHelp","options","Array","isArray","isInteractive","length","message","question","questionMessage","undefined","trim","replace","CommandError","results","prompts","onCancel","AbortCommandError","value","initial","name","type","choices","callback","push","listenerIndex","findIndex","_callback","assert","splice","listener","pause","escapeRegex","string","input","regex","RegExp","filter","choice","test","title","error"],"mappings":"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"}