@expo/cli 0.22.25 → 0.22.26

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 (722) hide show
  1. package/build/bin/cli +91 -93
  2. package/build/bin/cli.map +1 -1
  3. package/build/metro-require/require.js +52 -53
  4. package/build/src/api/endpoint.js +2 -6
  5. package/build/src/api/endpoint.js.map +1 -1
  6. package/build/src/api/getExpoGoIntermediateCertificate.js +3 -5
  7. package/build/src/api/getExpoGoIntermediateCertificate.js.map +1 -1
  8. package/build/src/api/getExpoSchema.js +12 -16
  9. package/build/src/api/getExpoSchema.js.map +1 -1
  10. package/build/src/api/getNativeModuleVersions.js +4 -6
  11. package/build/src/api/getNativeModuleVersions.js.map +1 -1
  12. package/build/src/api/getProjectDevelopmentCertificate.js +3 -5
  13. package/build/src/api/getProjectDevelopmentCertificate.js.map +1 -1
  14. package/build/src/api/getVersions.js +5 -7
  15. package/build/src/api/getVersions.js.map +1 -1
  16. package/build/src/api/graphql/client.js +26 -32
  17. package/build/src/api/graphql/client.js.map +1 -1
  18. package/build/src/api/graphql/queries/AppQuery.js +4 -6
  19. package/build/src/api/graphql/queries/AppQuery.js.map +1 -1
  20. package/build/src/api/graphql/queries/UserQuery.js +3 -5
  21. package/build/src/api/graphql/queries/UserQuery.js.map +1 -1
  22. package/build/src/api/graphql/types/App.js +1 -3
  23. package/build/src/api/graphql/types/App.js.map +1 -1
  24. package/build/src/api/rest/cache/FileSystemResponseCache.js +8 -10
  25. package/build/src/api/rest/cache/FileSystemResponseCache.js.map +1 -1
  26. package/build/src/api/rest/cache/ResponseCache.js +12 -20
  27. package/build/src/api/rest/cache/ResponseCache.js.map +1 -1
  28. package/build/src/api/rest/cache/wrapFetchWithCache.js +11 -13
  29. package/build/src/api/rest/cache/wrapFetchWithCache.js.map +1 -1
  30. package/build/src/api/rest/client.js +35 -53
  31. package/build/src/api/rest/client.js.map +1 -1
  32. package/build/src/api/rest/client.types.js.map +1 -1
  33. package/build/src/api/rest/wrapFetchWithBaseUrl.js +3 -5
  34. package/build/src/api/rest/wrapFetchWithBaseUrl.js.map +1 -1
  35. package/build/src/api/rest/wrapFetchWithOffline.js +3 -5
  36. package/build/src/api/rest/wrapFetchWithOffline.js.map +1 -1
  37. package/build/src/api/rest/wrapFetchWithProgress.js +7 -11
  38. package/build/src/api/rest/wrapFetchWithProgress.js.map +1 -1
  39. package/build/src/api/rest/wrapFetchWithProxy.js +3 -5
  40. package/build/src/api/rest/wrapFetchWithProxy.js.map +1 -1
  41. package/build/src/api/rest/wrapFetchWithUserAgent.js +6 -8
  42. package/build/src/api/rest/wrapFetchWithUserAgent.js.map +1 -1
  43. package/build/src/api/settings.js +5 -7
  44. package/build/src/api/settings.js.map +1 -1
  45. package/build/src/api/updateDevelopmentSession.js +17 -23
  46. package/build/src/api/updateDevelopmentSession.js.map +1 -1
  47. package/build/src/api/user/UserSettings.js +21 -39
  48. package/build/src/api/user/UserSettings.js.map +1 -1
  49. package/build/src/api/user/actions.js +21 -27
  50. package/build/src/api/user/actions.js.map +1 -1
  51. package/build/src/api/user/expoSsoLauncher.js +26 -30
  52. package/build/src/api/user/expoSsoLauncher.js.map +1 -1
  53. package/build/src/api/user/otp.js +29 -35
  54. package/build/src/api/user/otp.js.map +1 -1
  55. package/build/src/api/user/user.js +30 -44
  56. package/build/src/api/user/user.js.map +1 -1
  57. package/build/src/config/configAsync.js +23 -29
  58. package/build/src/config/configAsync.js.map +1 -1
  59. package/build/src/config/index.js +21 -25
  60. package/build/src/config/index.js.map +1 -1
  61. package/build/src/customize/customizeAsync.js +6 -8
  62. package/build/src/customize/customizeAsync.js.map +1 -1
  63. package/build/src/customize/generate.js +16 -20
  64. package/build/src/customize/generate.js.map +1 -1
  65. package/build/src/customize/index.js +12 -14
  66. package/build/src/customize/index.js.map +1 -1
  67. package/build/src/customize/resolveOptions.js +2 -4
  68. package/build/src/customize/resolveOptions.js.map +1 -1
  69. package/build/src/customize/templates.js +54 -58
  70. package/build/src/customize/templates.js.map +1 -1
  71. package/build/src/customize/typescript.js +7 -11
  72. package/build/src/customize/typescript.js.map +1 -1
  73. package/build/src/export/createMetadataJson.js +9 -11
  74. package/build/src/export/createMetadataJson.js.map +1 -1
  75. package/build/src/export/embed/exportEager.js +6 -8
  76. package/build/src/export/embed/exportEager.js.map +1 -1
  77. package/build/src/export/embed/exportEmbedAsync.js +61 -71
  78. package/build/src/export/embed/exportEmbedAsync.js.map +1 -1
  79. package/build/src/export/embed/exportServer.js +55 -57
  80. package/build/src/export/embed/exportServer.js.map +1 -1
  81. package/build/src/export/embed/index.js +40 -44
  82. package/build/src/export/embed/index.js.map +1 -1
  83. package/build/src/export/embed/resolveOptions.js +36 -44
  84. package/build/src/export/embed/resolveOptions.js.map +1 -1
  85. package/build/src/export/embed/xcodeCompilerLogger.js +27 -39
  86. package/build/src/export/embed/xcodeCompilerLogger.js.map +1 -1
  87. package/build/src/export/exportApp.js +63 -67
  88. package/build/src/export/exportApp.js.map +1 -1
  89. package/build/src/export/exportAssets.js +27 -35
  90. package/build/src/export/exportAssets.js.map +1 -1
  91. package/build/src/export/exportAsync.js +9 -13
  92. package/build/src/export/exportAsync.js.map +1 -1
  93. package/build/src/export/exportDomComponents.js +45 -53
  94. package/build/src/export/exportDomComponents.js.map +1 -1
  95. package/build/src/export/exportHermes.js +63 -85
  96. package/build/src/export/exportHermes.js.map +1 -1
  97. package/build/src/export/exportStaticAsync.js +62 -72
  98. package/build/src/export/exportStaticAsync.js.map +1 -1
  99. package/build/src/export/favicon.js +27 -33
  100. package/build/src/export/favicon.js.map +1 -1
  101. package/build/src/export/getPublicExpoManifest.js +5 -7
  102. package/build/src/export/getPublicExpoManifest.js.map +1 -1
  103. package/build/src/export/getResolvedLocales.js +9 -11
  104. package/build/src/export/getResolvedLocales.js.map +1 -1
  105. package/build/src/export/html.js +6 -10
  106. package/build/src/export/html.js.map +1 -1
  107. package/build/src/export/index.js +28 -32
  108. package/build/src/export/index.js.map +1 -1
  109. package/build/src/export/metroAssetLocalPath.js +30 -36
  110. package/build/src/export/metroAssetLocalPath.js.map +1 -1
  111. package/build/src/export/persistMetroAssets.js +34 -42
  112. package/build/src/export/persistMetroAssets.js.map +1 -1
  113. package/build/src/export/publicFolder.js +6 -10
  114. package/build/src/export/publicFolder.js.map +1 -1
  115. package/build/src/export/resolveOptions.js +24 -28
  116. package/build/src/export/resolveOptions.js.map +1 -1
  117. package/build/src/export/saveAssets.js +46 -50
  118. package/build/src/export/saveAssets.js.map +1 -1
  119. package/build/src/export/web/exportWebAsync.js +11 -13
  120. package/build/src/export/web/exportWebAsync.js.map +1 -1
  121. package/build/src/export/web/index.js +15 -19
  122. package/build/src/export/web/index.js.map +1 -1
  123. package/build/src/export/web/resolveOptions.js +3 -5
  124. package/build/src/export/web/resolveOptions.js.map +1 -1
  125. package/build/src/export/writeContents.js +2 -4
  126. package/build/src/export/writeContents.js.map +1 -1
  127. package/build/src/graphql/generated.js +274 -400
  128. package/build/src/graphql/generated.js.map +1 -1
  129. package/build/src/install/applyPlugins.js +7 -11
  130. package/build/src/install/applyPlugins.js.map +1 -1
  131. package/build/src/install/checkPackages.js +22 -26
  132. package/build/src/install/checkPackages.js.map +1 -1
  133. package/build/src/install/fixPackages.js +12 -16
  134. package/build/src/install/fixPackages.js.map +1 -1
  135. package/build/src/install/index.js +16 -18
  136. package/build/src/install/index.js.map +1 -1
  137. package/build/src/install/installAsync.js +26 -32
  138. package/build/src/install/installAsync.js.map +1 -1
  139. package/build/src/install/installExpoPackage.js +18 -22
  140. package/build/src/install/installExpoPackage.js.map +1 -1
  141. package/build/src/install/resolveOptions.js +19 -21
  142. package/build/src/install/resolveOptions.js.map +1 -1
  143. package/build/src/install/utils/autoAddConfigPlugins.js +14 -18
  144. package/build/src/install/utils/autoAddConfigPlugins.js.map +1 -1
  145. package/build/src/install/utils/checkPackagesCompatibility.js +11 -13
  146. package/build/src/install/utils/checkPackagesCompatibility.js.map +1 -1
  147. package/build/src/lint/ESlintPrerequisite.js +44 -50
  148. package/build/src/lint/ESlintPrerequisite.js.map +1 -1
  149. package/build/src/lint/index.js +8 -12
  150. package/build/src/lint/index.js.map +1 -1
  151. package/build/src/lint/lintAsync.js +8 -10
  152. package/build/src/lint/lintAsync.js.map +1 -1
  153. package/build/src/log.js +16 -36
  154. package/build/src/log.js.map +1 -1
  155. package/build/src/login/index.js +20 -24
  156. package/build/src/login/index.js.map +1 -1
  157. package/build/src/logout/index.js +7 -11
  158. package/build/src/logout/index.js.map +1 -1
  159. package/build/src/prebuild/clearNativeFolder.js +26 -38
  160. package/build/src/prebuild/clearNativeFolder.js.map +1 -1
  161. package/build/src/prebuild/configureProjectAsync.js +14 -18
  162. package/build/src/prebuild/configureProjectAsync.js.map +1 -1
  163. package/build/src/prebuild/copyTemplateFiles.js +13 -17
  164. package/build/src/prebuild/copyTemplateFiles.js.map +1 -1
  165. package/build/src/prebuild/ensureConfigAsync.js +4 -6
  166. package/build/src/prebuild/ensureConfigAsync.js.map +1 -1
  167. package/build/src/prebuild/index.js +32 -36
  168. package/build/src/prebuild/index.js.map +1 -1
  169. package/build/src/prebuild/prebuildAsync.js +25 -29
  170. package/build/src/prebuild/prebuildAsync.js.map +1 -1
  171. package/build/src/prebuild/renameTemplateAppName.js +40 -46
  172. package/build/src/prebuild/renameTemplateAppName.js.map +1 -1
  173. package/build/src/prebuild/resolveOptions.js +52 -66
  174. package/build/src/prebuild/resolveOptions.js.map +1 -1
  175. package/build/src/prebuild/resolveTemplate.js +32 -36
  176. package/build/src/prebuild/resolveTemplate.js.map +1 -1
  177. package/build/src/prebuild/updateFromTemplate.js +13 -19
  178. package/build/src/prebuild/updateFromTemplate.js.map +1 -1
  179. package/build/src/prebuild/updatePackageJson.js +39 -53
  180. package/build/src/prebuild/updatePackageJson.js.map +1 -1
  181. package/build/src/prebuild/validateTemplatePlatforms.js +8 -12
  182. package/build/src/prebuild/validateTemplatePlatforms.js.map +1 -1
  183. package/build/src/register/index.js +7 -11
  184. package/build/src/register/index.js.map +1 -1
  185. package/build/src/register/registerAsync.js +3 -5
  186. package/build/src/register/registerAsync.js.map +1 -1
  187. package/build/src/run/android/index.js +32 -36
  188. package/build/src/run/android/index.js.map +1 -1
  189. package/build/src/run/android/resolveDevice.js +8 -10
  190. package/build/src/run/android/resolveDevice.js.map +1 -1
  191. package/build/src/run/android/resolveGradlePropsAsync.js +16 -18
  192. package/build/src/run/android/resolveGradlePropsAsync.js.map +1 -1
  193. package/build/src/run/android/resolveInstallApkName.js +15 -17
  194. package/build/src/run/android/resolveInstallApkName.js.map +1 -1
  195. package/build/src/run/android/resolveLaunchProps.js +10 -12
  196. package/build/src/run/android/resolveLaunchProps.js.map +1 -1
  197. package/build/src/run/android/resolveOptions.js +2 -4
  198. package/build/src/run/android/resolveOptions.js.map +1 -1
  199. package/build/src/run/android/runAndroidAsync.js +21 -23
  200. package/build/src/run/android/runAndroidAsync.js.map +1 -1
  201. package/build/src/run/ensureNativeProject.js +5 -7
  202. package/build/src/run/ensureNativeProject.js.map +1 -1
  203. package/build/src/run/hints.js +7 -13
  204. package/build/src/run/hints.js.map +1 -1
  205. package/build/src/run/index.js +23 -27
  206. package/build/src/run/index.js.map +1 -1
  207. package/build/src/run/ios/XcodeBuild.js +56 -74
  208. package/build/src/run/ios/XcodeBuild.js.map +1 -1
  209. package/build/src/run/ios/XcodeBuild.types.js.map +1 -1
  210. package/build/src/run/ios/appleDevice/AppleDevice.js +63 -69
  211. package/build/src/run/ios/appleDevice/AppleDevice.js.map +1 -1
  212. package/build/src/run/ios/appleDevice/ClientManager.js +26 -29
  213. package/build/src/run/ios/appleDevice/ClientManager.js.map +1 -1
  214. package/build/src/run/ios/appleDevice/client/AFCClient.js +25 -28
  215. package/build/src/run/ios/appleDevice/client/AFCClient.js.map +1 -1
  216. package/build/src/run/ios/appleDevice/client/DebugserverClient.js +26 -29
  217. package/build/src/run/ios/appleDevice/client/DebugserverClient.js.map +1 -1
  218. package/build/src/run/ios/appleDevice/client/InstallationProxyClient.js +21 -22
  219. package/build/src/run/ios/appleDevice/client/InstallationProxyClient.js.map +1 -1
  220. package/build/src/run/ios/appleDevice/client/LockdowndClient.js +29 -32
  221. package/build/src/run/ios/appleDevice/client/LockdowndClient.js.map +1 -1
  222. package/build/src/run/ios/appleDevice/client/MobileImageMounterClient.js +24 -28
  223. package/build/src/run/ios/appleDevice/client/MobileImageMounterClient.js.map +1 -1
  224. package/build/src/run/ios/appleDevice/client/ServiceClient.js +4 -7
  225. package/build/src/run/ios/appleDevice/client/ServiceClient.js.map +1 -1
  226. package/build/src/run/ios/appleDevice/client/UsbmuxdClient.js +27 -28
  227. package/build/src/run/ios/appleDevice/client/UsbmuxdClient.js.map +1 -1
  228. package/build/src/run/ios/appleDevice/installOnDeviceAsync.js +17 -23
  229. package/build/src/run/ios/appleDevice/installOnDeviceAsync.js.map +1 -1
  230. package/build/src/run/ios/appleDevice/protocol/AFCProtocol.js +132 -146
  231. package/build/src/run/ios/appleDevice/protocol/AFCProtocol.js.map +1 -1
  232. package/build/src/run/ios/appleDevice/protocol/AbstractProtocol.js +21 -29
  233. package/build/src/run/ios/appleDevice/protocol/AbstractProtocol.js.map +1 -1
  234. package/build/src/run/ios/appleDevice/protocol/GDBProtocol.js +21 -29
  235. package/build/src/run/ios/appleDevice/protocol/GDBProtocol.js.map +1 -1
  236. package/build/src/run/ios/appleDevice/protocol/LockdownProtocol.js +22 -34
  237. package/build/src/run/ios/appleDevice/protocol/LockdownProtocol.js.map +1 -1
  238. package/build/src/run/ios/appleDevice/protocol/UsbmuxProtocol.js +17 -27
  239. package/build/src/run/ios/appleDevice/protocol/UsbmuxProtocol.js.map +1 -1
  240. package/build/src/run/ios/codeSigning/Security.js +39 -53
  241. package/build/src/run/ios/codeSigning/Security.js.map +1 -1
  242. package/build/src/run/ios/codeSigning/configureCodeSigning.js +9 -13
  243. package/build/src/run/ios/codeSigning/configureCodeSigning.js.map +1 -1
  244. package/build/src/run/ios/codeSigning/resolveCertificateSigningIdentity.js +19 -27
  245. package/build/src/run/ios/codeSigning/resolveCertificateSigningIdentity.js.map +1 -1
  246. package/build/src/run/ios/codeSigning/settings.js +5 -9
  247. package/build/src/run/ios/codeSigning/settings.js.map +1 -1
  248. package/build/src/run/ios/codeSigning/simulatorCodeSigning.js +12 -14
  249. package/build/src/run/ios/codeSigning/simulatorCodeSigning.js.map +1 -1
  250. package/build/src/run/ios/codeSigning/xcodeCodeSigning.js +21 -27
  251. package/build/src/run/ios/codeSigning/xcodeCodeSigning.js.map +1 -1
  252. package/build/src/run/ios/index.js +36 -40
  253. package/build/src/run/ios/index.js.map +1 -1
  254. package/build/src/run/ios/launchApp.js +17 -23
  255. package/build/src/run/ios/launchApp.js.map +1 -1
  256. package/build/src/run/ios/options/appleDestinations.js +36 -38
  257. package/build/src/run/ios/options/appleDestinations.js.map +1 -1
  258. package/build/src/run/ios/options/promptDevice.js +16 -20
  259. package/build/src/run/ios/options/promptDevice.js.map +1 -1
  260. package/build/src/run/ios/options/resolveDevice.js +24 -30
  261. package/build/src/run/ios/options/resolveDevice.js.map +1 -1
  262. package/build/src/run/ios/options/resolveNativeScheme.js +23 -31
  263. package/build/src/run/ios/options/resolveNativeScheme.js.map +1 -1
  264. package/build/src/run/ios/options/resolveOptions.js +5 -7
  265. package/build/src/run/ios/options/resolveOptions.js.map +1 -1
  266. package/build/src/run/ios/options/resolveXcodeProject.js +5 -7
  267. package/build/src/run/ios/options/resolveXcodeProject.js.map +1 -1
  268. package/build/src/run/ios/runIosAsync.js +44 -48
  269. package/build/src/run/ios/runIosAsync.js.map +1 -1
  270. package/build/src/run/ios/validateExternalBinary.js +22 -24
  271. package/build/src/run/ios/validateExternalBinary.js.map +1 -1
  272. package/build/src/run/resolveBundlerProps.js +2 -4
  273. package/build/src/run/resolveBundlerProps.js.map +1 -1
  274. package/build/src/run/startBundler.js +12 -16
  275. package/build/src/run/startBundler.js.map +1 -1
  276. package/build/src/serve/index.js +16 -20
  277. package/build/src/serve/index.js.map +1 -1
  278. package/build/src/serve/serveAsync.js +32 -36
  279. package/build/src/serve/serveAsync.js.map +1 -1
  280. package/build/src/start/detectDevClient.js +9 -13
  281. package/build/src/start/detectDevClient.js.map +1 -1
  282. package/build/src/start/doctor/Prerequisite.js +7 -12
  283. package/build/src/start/doctor/Prerequisite.js.map +1 -1
  284. package/build/src/start/doctor/SecurityBinPrerequisite.js +11 -13
  285. package/build/src/start/doctor/SecurityBinPrerequisite.js.map +1 -1
  286. package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js +19 -23
  287. package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js.map +1 -1
  288. package/build/src/start/doctor/apple/XcodeDeveloperDiskImagePrerequisite.js +19 -23
  289. package/build/src/start/doctor/apple/XcodeDeveloperDiskImagePrerequisite.js.map +1 -1
  290. package/build/src/start/doctor/apple/XcodePrerequisite.js +45 -51
  291. package/build/src/start/doctor/apple/XcodePrerequisite.js.map +1 -1
  292. package/build/src/start/doctor/apple/XcrunPrerequisite.js +16 -18
  293. package/build/src/start/doctor/apple/XcrunPrerequisite.js.map +1 -1
  294. package/build/src/start/doctor/dependencies/bundledNativeModules.js +19 -23
  295. package/build/src/start/doctor/dependencies/bundledNativeModules.js.map +1 -1
  296. package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js +25 -31
  297. package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js.map +1 -1
  298. package/build/src/start/doctor/dependencies/getMissingPackages.js +17 -25
  299. package/build/src/start/doctor/dependencies/getMissingPackages.js.map +1 -1
  300. package/build/src/start/doctor/dependencies/getVersionedPackages.js +32 -40
  301. package/build/src/start/doctor/dependencies/getVersionedPackages.js.map +1 -1
  302. package/build/src/start/doctor/dependencies/resolvePackages.js +26 -32
  303. package/build/src/start/doctor/dependencies/resolvePackages.js.map +1 -1
  304. package/build/src/start/doctor/dependencies/validateDependenciesVersions.js +31 -41
  305. package/build/src/start/doctor/dependencies/validateDependenciesVersions.js.map +1 -1
  306. package/build/src/start/doctor/ngrok/ExternalModule.js +29 -34
  307. package/build/src/start/doctor/ngrok/ExternalModule.js.map +1 -1
  308. package/build/src/start/doctor/ngrok/NgrokResolver.js +8 -12
  309. package/build/src/start/doctor/ngrok/NgrokResolver.js.map +1 -1
  310. package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js +28 -32
  311. package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js.map +1 -1
  312. package/build/src/start/doctor/typescript/updateTSConfig.js +17 -23
  313. package/build/src/start/doctor/typescript/updateTSConfig.js.map +1 -1
  314. package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js +27 -33
  315. package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js.map +1 -1
  316. package/build/src/start/index.js +42 -46
  317. package/build/src/start/index.js.map +1 -1
  318. package/build/src/start/interface/KeyPressHandler.js +14 -18
  319. package/build/src/start/interface/KeyPressHandler.js.map +1 -1
  320. package/build/src/start/interface/commandsTable.js +80 -94
  321. package/build/src/start/interface/commandsTable.js.map +1 -1
  322. package/build/src/start/interface/interactiveActions.js +40 -44
  323. package/build/src/start/interface/interactiveActions.js.map +1 -1
  324. package/build/src/start/interface/startInterface.js +61 -65
  325. package/build/src/start/interface/startInterface.js.map +1 -1
  326. package/build/src/start/platforms/AppIdResolver.js +4 -6
  327. package/build/src/start/platforms/AppIdResolver.js.map +1 -1
  328. package/build/src/start/platforms/DeviceManager.js +6 -10
  329. package/build/src/start/platforms/DeviceManager.js.map +1 -1
  330. package/build/src/start/platforms/ExpoGoInstaller.js +20 -25
  331. package/build/src/start/platforms/ExpoGoInstaller.js.map +1 -1
  332. package/build/src/start/platforms/PlatformManager.js +15 -17
  333. package/build/src/start/platforms/PlatformManager.js.map +1 -1
  334. package/build/src/start/platforms/android/ADBServer.js +35 -39
  335. package/build/src/start/platforms/android/ADBServer.js.map +1 -1
  336. package/build/src/start/platforms/android/AndroidAppIdResolver.js +16 -18
  337. package/build/src/start/platforms/android/AndroidAppIdResolver.js.map +1 -1
  338. package/build/src/start/platforms/android/AndroidDeviceManager.js +20 -24
  339. package/build/src/start/platforms/android/AndroidDeviceManager.js.map +1 -1
  340. package/build/src/start/platforms/android/AndroidPlatformManager.js +17 -17
  341. package/build/src/start/platforms/android/AndroidPlatformManager.js.map +1 -1
  342. package/build/src/start/platforms/android/AndroidSdk.js +9 -11
  343. package/build/src/start/platforms/android/AndroidSdk.js.map +1 -1
  344. package/build/src/start/platforms/android/activateWindow.js +22 -26
  345. package/build/src/start/platforms/android/activateWindow.js.map +1 -1
  346. package/build/src/start/platforms/android/adb.js +83 -121
  347. package/build/src/start/platforms/android/adb.js.map +1 -1
  348. package/build/src/start/platforms/android/adbReverse.js +12 -20
  349. package/build/src/start/platforms/android/adbReverse.js.map +1 -1
  350. package/build/src/start/platforms/android/emulator.js +26 -36
  351. package/build/src/start/platforms/android/emulator.js.map +1 -1
  352. package/build/src/start/platforms/android/getDevices.js +5 -7
  353. package/build/src/start/platforms/android/getDevices.js.map +1 -1
  354. package/build/src/start/platforms/android/gradle.js +28 -36
  355. package/build/src/start/platforms/android/gradle.js.map +1 -1
  356. package/build/src/start/platforms/android/promptAndroidDevice.js +15 -19
  357. package/build/src/start/platforms/android/promptAndroidDevice.js.map +1 -1
  358. package/build/src/start/platforms/ios/AppleAppIdResolver.js +19 -21
  359. package/build/src/start/platforms/ios/AppleAppIdResolver.js.map +1 -1
  360. package/build/src/start/platforms/ios/AppleDeviceManager.js +31 -37
  361. package/build/src/start/platforms/ios/AppleDeviceManager.js.map +1 -1
  362. package/build/src/start/platforms/ios/ApplePlatformManager.js +12 -12
  363. package/build/src/start/platforms/ios/ApplePlatformManager.js.map +1 -1
  364. package/build/src/start/platforms/ios/assertSystemRequirements.js +7 -9
  365. package/build/src/start/platforms/ios/assertSystemRequirements.js.map +1 -1
  366. package/build/src/start/platforms/ios/devicectl.js +73 -87
  367. package/build/src/start/platforms/ios/devicectl.js.map +1 -1
  368. package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js +18 -22
  369. package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js.map +1 -1
  370. package/build/src/start/platforms/ios/getBestSimulator.js +19 -29
  371. package/build/src/start/platforms/ios/getBestSimulator.js.map +1 -1
  372. package/build/src/start/platforms/ios/promptAppleDevice.js +10 -14
  373. package/build/src/start/platforms/ios/promptAppleDevice.js.map +1 -1
  374. package/build/src/start/platforms/ios/simctl.js +74 -102
  375. package/build/src/start/platforms/ios/simctl.js.map +1 -1
  376. package/build/src/start/platforms/ios/simctlLogging.js +52 -57
  377. package/build/src/start/platforms/ios/simctlLogging.js.map +1 -1
  378. package/build/src/start/platforms/ios/xcrun.js +18 -22
  379. package/build/src/start/platforms/ios/xcrun.js.map +1 -1
  380. package/build/src/start/project/devices.js +9 -19
  381. package/build/src/start/project/devices.js.map +1 -1
  382. package/build/src/start/project/dotExpo.js +11 -15
  383. package/build/src/start/project/dotExpo.js.map +1 -1
  384. package/build/src/start/project/settings.js +2 -4
  385. package/build/src/start/project/settings.js.map +1 -1
  386. package/build/src/start/resolveOptions.js +40 -48
  387. package/build/src/start/resolveOptions.js.map +1 -1
  388. package/build/src/start/server/AsyncNgrok.js +51 -55
  389. package/build/src/start/server/AsyncNgrok.js.map +1 -1
  390. package/build/src/start/server/AsyncWsTunnel.js +36 -40
  391. package/build/src/start/server/AsyncWsTunnel.js.map +1 -1
  392. package/build/src/start/server/BundlerDevServer.js +79 -81
  393. package/build/src/start/server/BundlerDevServer.js.map +1 -1
  394. package/build/src/start/server/DevServerManager.js +38 -42
  395. package/build/src/start/server/DevServerManager.js.map +1 -1
  396. package/build/src/start/server/DevToolsPluginManager.js +14 -18
  397. package/build/src/start/server/DevToolsPluginManager.js.map +1 -1
  398. package/build/src/start/server/DevelopmentSession.js +14 -18
  399. package/build/src/start/server/DevelopmentSession.js.map +1 -1
  400. package/build/src/start/server/ReactDevToolsProxy.js +10 -16
  401. package/build/src/start/server/ReactDevToolsProxy.js.map +1 -1
  402. package/build/src/start/server/UrlCreator.js +33 -36
  403. package/build/src/start/server/UrlCreator.js.map +1 -1
  404. package/build/src/start/server/getStaticRenderFunctions.js +21 -29
  405. package/build/src/start/server/getStaticRenderFunctions.js.map +1 -1
  406. package/build/src/start/server/metro/DevToolsPluginWebsocketEndpoint.js +4 -6
  407. package/build/src/start/server/metro/DevToolsPluginWebsocketEndpoint.js.map +1 -1
  408. package/build/src/start/server/metro/MetroBundlerDevServer.js +271 -269
  409. package/build/src/start/server/metro/MetroBundlerDevServer.js.map +1 -1
  410. package/build/src/start/server/metro/MetroTerminalReporter.js +56 -63
  411. package/build/src/start/server/metro/MetroTerminalReporter.js.map +1 -1
  412. package/build/src/start/server/metro/TerminalReporter.js +33 -39
  413. package/build/src/start/server/metro/TerminalReporter.js.map +1 -1
  414. package/build/src/start/server/metro/TerminalReporter.types.js.map +1 -1
  415. package/build/src/start/server/metro/createExpoMetroResolver.js +40 -46
  416. package/build/src/start/server/metro/createExpoMetroResolver.js.map +1 -1
  417. package/build/src/start/server/metro/createJResolver.js +28 -32
  418. package/build/src/start/server/metro/createJResolver.js.map +1 -1
  419. package/build/src/start/server/metro/createServerComponentsMiddleware.js +92 -96
  420. package/build/src/start/server/metro/createServerComponentsMiddleware.js.map +1 -1
  421. package/build/src/start/server/metro/createServerRouteMiddleware.js +30 -32
  422. package/build/src/start/server/metro/createServerRouteMiddleware.js.map +1 -1
  423. package/build/src/start/server/metro/debugging/AtlasPrerequisite.js +11 -13
  424. package/build/src/start/server/metro/debugging/AtlasPrerequisite.js.map +1 -1
  425. package/build/src/start/server/metro/debugging/MessageHandler.js +1 -3
  426. package/build/src/start/server/metro/debugging/MessageHandler.js.map +1 -1
  427. package/build/src/start/server/metro/debugging/attachAtlas.js +22 -26
  428. package/build/src/start/server/metro/debugging/attachAtlas.js.map +1 -1
  429. package/build/src/start/server/metro/debugging/createDebugMiddleware.js +17 -19
  430. package/build/src/start/server/metro/debugging/createDebugMiddleware.js.map +1 -1
  431. package/build/src/start/server/metro/debugging/createHandlersFactory.js +31 -25
  432. package/build/src/start/server/metro/debugging/createHandlersFactory.js.map +1 -1
  433. package/build/src/start/server/metro/debugging/getDebuggerType.js +4 -6
  434. package/build/src/start/server/metro/debugging/getDebuggerType.js.map +1 -1
  435. package/build/src/start/server/metro/debugging/messageHandlers/NetworkResponse.js +8 -14
  436. package/build/src/start/server/metro/debugging/messageHandlers/NetworkResponse.js.map +1 -1
  437. package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerGetPossibleBreakpoints.js +5 -7
  438. package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerGetPossibleBreakpoints.js.map +1 -1
  439. package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerSetBreakpointByUrl.js +6 -8
  440. package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerSetBreakpointByUrl.js.map +1 -1
  441. package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeCallFunctionOn.js +5 -7
  442. package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeCallFunctionOn.js.map +1 -1
  443. package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeEvaluate.js +12 -14
  444. package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeEvaluate.js.map +1 -1
  445. package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeGetProperties.js +10 -14
  446. package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeGetProperties.js.map +1 -1
  447. package/build/src/start/server/metro/debugging/pageIsSupported.js +4 -6
  448. package/build/src/start/server/metro/debugging/pageIsSupported.js.map +1 -1
  449. package/build/src/start/server/metro/debugging/types.js.map +1 -1
  450. package/build/src/start/server/metro/dev-server/createEventSocket.js +16 -18
  451. package/build/src/start/server/metro/dev-server/createEventSocket.js.map +1 -1
  452. package/build/src/start/server/metro/dev-server/createMessageSocket.js +21 -23
  453. package/build/src/start/server/metro/dev-server/createMessageSocket.js.map +1 -1
  454. package/build/src/start/server/metro/dev-server/createMetroMiddleware.js +21 -23
  455. package/build/src/start/server/metro/dev-server/createMetroMiddleware.js.map +1 -1
  456. package/build/src/start/server/metro/dev-server/utils/createSocketBroadcaster.js +2 -4
  457. package/build/src/start/server/metro/dev-server/utils/createSocketBroadcaster.js.map +1 -1
  458. package/build/src/start/server/metro/dev-server/utils/createSocketMap.js +2 -4
  459. package/build/src/start/server/metro/dev-server/utils/createSocketMap.js.map +1 -1
  460. package/build/src/start/server/metro/dev-server/utils/socketMessages.js +4 -8
  461. package/build/src/start/server/metro/dev-server/utils/socketMessages.js.map +1 -1
  462. package/build/src/start/server/metro/externals.js +25 -33
  463. package/build/src/start/server/metro/externals.js.map +1 -1
  464. package/build/src/start/server/metro/fetchRouterManifest.js +12 -16
  465. package/build/src/start/server/metro/fetchRouterManifest.js.map +1 -1
  466. package/build/src/start/server/metro/formatFileCandidates.js +9 -11
  467. package/build/src/start/server/metro/formatFileCandidates.js.map +1 -1
  468. package/build/src/start/server/metro/getCssModulesFromBundler.js +18 -22
  469. package/build/src/start/server/metro/getCssModulesFromBundler.js.map +1 -1
  470. package/build/src/start/server/metro/instantiateMetro.js +79 -85
  471. package/build/src/start/server/metro/instantiateMetro.js.map +1 -1
  472. package/build/src/start/server/metro/log-box/LogBoxLog.js +36 -40
  473. package/build/src/start/server/metro/log-box/LogBoxLog.js.map +1 -1
  474. package/build/src/start/server/metro/log-box/LogBoxSymbolication.js +14 -20
  475. package/build/src/start/server/metro/log-box/LogBoxSymbolication.js.map +1 -1
  476. package/build/src/start/server/metro/log-box/formatProjectFilePath.js +6 -10
  477. package/build/src/start/server/metro/log-box/formatProjectFilePath.js.map +1 -1
  478. package/build/src/start/server/metro/metroErrorInterface.js +78 -88
  479. package/build/src/start/server/metro/metroErrorInterface.js.map +1 -1
  480. package/build/src/start/server/metro/metroErrors.js +4 -8
  481. package/build/src/start/server/metro/metroErrors.js.map +1 -1
  482. package/build/src/start/server/metro/metroPrivateServer.js +7 -9
  483. package/build/src/start/server/metro/metroPrivateServer.js.map +1 -1
  484. package/build/src/start/server/metro/metroVirtualModules.js +8 -10
  485. package/build/src/start/server/metro/metroVirtualModules.js.map +1 -1
  486. package/build/src/start/server/metro/metroWatchTypeScriptFiles.js +22 -24
  487. package/build/src/start/server/metro/metroWatchTypeScriptFiles.js.map +1 -1
  488. package/build/src/start/server/metro/router.js +32 -48
  489. package/build/src/start/server/metro/router.js.map +1 -1
  490. package/build/src/start/server/metro/runServer-fork.js +22 -24
  491. package/build/src/start/server/metro/runServer-fork.js.map +1 -1
  492. package/build/src/start/server/metro/serializeHtml.js +22 -24
  493. package/build/src/start/server/metro/serializeHtml.js.map +1 -1
  494. package/build/src/start/server/metro/symbolicate.js.map +1 -1
  495. package/build/src/start/server/metro/waitForMetroToObserveTypeScriptFile.js +29 -35
  496. package/build/src/start/server/metro/waitForMetroToObserveTypeScriptFile.js.map +1 -1
  497. package/build/src/start/server/metro/withMetroMultiPlatform.js +139 -149
  498. package/build/src/start/server/metro/withMetroMultiPlatform.js.map +1 -1
  499. package/build/src/start/server/metro/withMetroResolvers.js +39 -49
  500. package/build/src/start/server/metro/withMetroResolvers.js.map +1 -1
  501. package/build/src/start/server/middleware/ContextModuleSourceMapsMiddleware.js +6 -8
  502. package/build/src/start/server/middleware/ContextModuleSourceMapsMiddleware.js.map +1 -1
  503. package/build/src/start/server/middleware/CorsMiddleware.js +15 -17
  504. package/build/src/start/server/middleware/CorsMiddleware.js.map +1 -1
  505. package/build/src/start/server/middleware/CreateFileMiddleware.js +31 -32
  506. package/build/src/start/server/middleware/CreateFileMiddleware.js.map +1 -1
  507. package/build/src/start/server/middleware/DevToolsPluginMiddleware.js +19 -22
  508. package/build/src/start/server/middleware/DevToolsPluginMiddleware.js.map +1 -1
  509. package/build/src/start/server/middleware/DomComponentsMiddleware.js +27 -33
  510. package/build/src/start/server/middleware/DomComponentsMiddleware.js.map +1 -1
  511. package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js +60 -64
  512. package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js.map +1 -1
  513. package/build/src/start/server/middleware/ExpoMiddleware.js +9 -15
  514. package/build/src/start/server/middleware/ExpoMiddleware.js.map +1 -1
  515. package/build/src/start/server/middleware/FaviconMiddleware.js +14 -15
  516. package/build/src/start/server/middleware/FaviconMiddleware.js.map +1 -1
  517. package/build/src/start/server/middleware/HistoryFallbackMiddleware.js +2 -4
  518. package/build/src/start/server/middleware/HistoryFallbackMiddleware.js.map +1 -1
  519. package/build/src/start/server/middleware/InterstitialPageMiddleware.js +31 -34
  520. package/build/src/start/server/middleware/InterstitialPageMiddleware.js.map +1 -1
  521. package/build/src/start/server/middleware/ManifestMiddleware.js +56 -64
  522. package/build/src/start/server/middleware/ManifestMiddleware.js.map +1 -1
  523. package/build/src/start/server/middleware/ReactDevToolsPageMiddleware.js +19 -23
  524. package/build/src/start/server/middleware/ReactDevToolsPageMiddleware.js.map +1 -1
  525. package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js +19 -20
  526. package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js.map +1 -1
  527. package/build/src/start/server/middleware/ServeStaticMiddleware.js +9 -11
  528. package/build/src/start/server/middleware/ServeStaticMiddleware.js.map +1 -1
  529. package/build/src/start/server/middleware/createBuiltinAPIRequestHandler.js +11 -17
  530. package/build/src/start/server/middleware/createBuiltinAPIRequestHandler.js.map +1 -1
  531. package/build/src/start/server/middleware/inspector/CdpClient.js +10 -12
  532. package/build/src/start/server/middleware/inspector/CdpClient.js.map +1 -1
  533. package/build/src/start/server/middleware/inspector/JsInspector.js +27 -35
  534. package/build/src/start/server/middleware/inspector/JsInspector.js.map +1 -1
  535. package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js +19 -21
  536. package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js.map +1 -1
  537. package/build/src/start/server/middleware/inspector/middlwareMutations.js +2 -6
  538. package/build/src/start/server/middleware/inspector/middlwareMutations.js.map +1 -1
  539. package/build/src/start/server/middleware/metroOptions.js +96 -120
  540. package/build/src/start/server/middleware/metroOptions.js.map +1 -1
  541. package/build/src/start/server/middleware/mutations.js +3 -7
  542. package/build/src/start/server/middleware/mutations.js.map +1 -1
  543. package/build/src/start/server/middleware/resolveAssets.js +18 -26
  544. package/build/src/start/server/middleware/resolveAssets.js.map +1 -1
  545. package/build/src/start/server/middleware/resolvePlatform.js +15 -23
  546. package/build/src/start/server/middleware/resolvePlatform.js.map +1 -1
  547. package/build/src/start/server/middleware/resolveRuntimeVersionWithExpoUpdatesAsync.js +9 -11
  548. package/build/src/start/server/middleware/resolveRuntimeVersionWithExpoUpdatesAsync.js.map +1 -1
  549. package/build/src/start/server/middleware/server.types.js.map +1 -1
  550. package/build/src/start/server/openPlatforms.js +8 -10
  551. package/build/src/start/server/openPlatforms.js.map +1 -1
  552. package/build/src/start/server/platformBundlers.js +11 -13
  553. package/build/src/start/server/platformBundlers.js.map +1 -1
  554. package/build/src/start/server/serverLogLikeMetro.js +50 -58
  555. package/build/src/start/server/serverLogLikeMetro.js.map +1 -1
  556. package/build/src/start/server/type-generation/expo-env.js +7 -11
  557. package/build/src/start/server/type-generation/expo-env.js.map +1 -1
  558. package/build/src/start/server/type-generation/routes.js +54 -76
  559. package/build/src/start/server/type-generation/routes.js.map +1 -1
  560. package/build/src/start/server/type-generation/startTypescriptTypeGeneration.js +19 -21
  561. package/build/src/start/server/type-generation/startTypescriptTypeGeneration.js.map +1 -1
  562. package/build/src/start/server/type-generation/tsconfig.js +28 -36
  563. package/build/src/start/server/type-generation/tsconfig.js.map +1 -1
  564. package/build/src/start/server/webTemplate.js +24 -28
  565. package/build/src/start/server/webTemplate.js.map +1 -1
  566. package/build/src/start/server/webpack/WebpackBundlerDevServer.js +46 -52
  567. package/build/src/start/server/webpack/WebpackBundlerDevServer.js.map +1 -1
  568. package/build/src/start/server/webpack/compile.js +11 -15
  569. package/build/src/start/server/webpack/compile.js.map +1 -1
  570. package/build/src/start/server/webpack/formatWebpackMessages.js +26 -28
  571. package/build/src/start/server/webpack/formatWebpackMessages.js.map +1 -1
  572. package/build/src/start/server/webpack/resolveFromProject.js +12 -18
  573. package/build/src/start/server/webpack/resolveFromProject.js.map +1 -1
  574. package/build/src/start/server/webpack/tls.js +12 -18
  575. package/build/src/start/server/webpack/tls.js.map +1 -1
  576. package/build/src/start/startAsync.js +27 -31
  577. package/build/src/start/startAsync.js.map +1 -1
  578. package/build/src/utils/FileNotifier.js +17 -20
  579. package/build/src/utils/FileNotifier.js.map +1 -1
  580. package/build/src/utils/ansi.js +5 -7
  581. package/build/src/utils/ansi.js.map +1 -1
  582. package/build/src/utils/args.js +14 -24
  583. package/build/src/utils/args.js.map +1 -1
  584. package/build/src/utils/array.js +6 -18
  585. package/build/src/utils/array.js.map +1 -1
  586. package/build/src/utils/cocoapods.js +46 -54
  587. package/build/src/utils/cocoapods.js.map +1 -1
  588. package/build/src/utils/codesigning.js +68 -78
  589. package/build/src/utils/codesigning.js.map +1 -1
  590. package/build/src/utils/createFileTransform.js +12 -16
  591. package/build/src/utils/createFileTransform.js.map +1 -1
  592. package/build/src/utils/createTempPath.js +13 -17
  593. package/build/src/utils/createTempPath.js.map +1 -1
  594. package/build/src/utils/delay.js +6 -12
  595. package/build/src/utils/delay.js.map +1 -1
  596. package/build/src/utils/dir.js +28 -46
  597. package/build/src/utils/dir.js.map +1 -1
  598. package/build/src/utils/downloadAppAsync.js +8 -10
  599. package/build/src/utils/downloadAppAsync.js.map +1 -1
  600. package/build/src/utils/downloadExpoGoAsync.js +21 -25
  601. package/build/src/utils/downloadExpoGoAsync.js.map +1 -1
  602. package/build/src/utils/editor.js +35 -41
  603. package/build/src/utils/editor.js.map +1 -1
  604. package/build/src/utils/env.js +59 -63
  605. package/build/src/utils/env.js.map +1 -1
  606. package/build/src/utils/errors.js +30 -37
  607. package/build/src/utils/errors.js.map +1 -1
  608. package/build/src/utils/exit.js +31 -35
  609. package/build/src/utils/exit.js.map +1 -1
  610. package/build/src/utils/expoUpdatesCli.js +22 -32
  611. package/build/src/utils/expoUpdatesCli.js.map +1 -1
  612. package/build/src/utils/fetch.js +4 -8
  613. package/build/src/utils/fetch.js.map +1 -1
  614. package/build/src/utils/filePath.js +6 -10
  615. package/build/src/utils/filePath.js.map +1 -1
  616. package/build/src/utils/findUp.js +9 -13
  617. package/build/src/utils/findUp.js.map +1 -1
  618. package/build/src/utils/fn.js +2 -6
  619. package/build/src/utils/fn.js.map +1 -1
  620. package/build/src/utils/getOrPromptApplicationId.js +26 -32
  621. package/build/src/utils/getOrPromptApplicationId.js.map +1 -1
  622. package/build/src/utils/getRunningProcess.js +21 -29
  623. package/build/src/utils/getRunningProcess.js.map +1 -1
  624. package/build/src/utils/git.js +20 -26
  625. package/build/src/utils/git.js.map +1 -1
  626. package/build/src/utils/glob.js +4 -8
  627. package/build/src/utils/glob.js.map +1 -1
  628. package/build/src/utils/interactive.js +1 -3
  629. package/build/src/utils/interactive.js.map +1 -1
  630. package/build/src/utils/ip.js +19 -21
  631. package/build/src/utils/ip.js.map +1 -1
  632. package/build/src/utils/isModuleSymlinked.js +9 -11
  633. package/build/src/utils/isModuleSymlinked.js.map +1 -1
  634. package/build/src/utils/jsonSchemaDeref.js +18 -20
  635. package/build/src/utils/jsonSchemaDeref.js.map +1 -1
  636. package/build/src/utils/link.js +13 -17
  637. package/build/src/utils/link.js.map +1 -1
  638. package/build/src/utils/mergeGitIgnorePaths.js +28 -46
  639. package/build/src/utils/mergeGitIgnorePaths.js.map +1 -1
  640. package/build/src/utils/modifyConfigAsync.js +10 -16
  641. package/build/src/utils/modifyConfigAsync.js.map +1 -1
  642. package/build/src/utils/modifyConfigPlugins.js +6 -10
  643. package/build/src/utils/modifyConfigPlugins.js.map +1 -1
  644. package/build/src/utils/nodeEnv.js +6 -12
  645. package/build/src/utils/nodeEnv.js.map +1 -1
  646. package/build/src/utils/nodeModules.js +8 -10
  647. package/build/src/utils/nodeModules.js.map +1 -1
  648. package/build/src/utils/npm.js +36 -50
  649. package/build/src/utils/npm.js.map +1 -1
  650. package/build/src/utils/obj.js +5 -11
  651. package/build/src/utils/obj.js.map +1 -1
  652. package/build/src/utils/open.js +8 -10
  653. package/build/src/utils/open.js.map +1 -1
  654. package/build/src/utils/ora.js +7 -13
  655. package/build/src/utils/ora.js.map +1 -1
  656. package/build/src/utils/plist.js +15 -21
  657. package/build/src/utils/plist.js.map +1 -1
  658. package/build/src/utils/port.js +33 -43
  659. package/build/src/utils/port.js.map +1 -1
  660. package/build/src/utils/profile.js +7 -11
  661. package/build/src/utils/profile.js.map +1 -1
  662. package/build/src/utils/progress.js +5 -11
  663. package/build/src/utils/progress.js.map +1 -1
  664. package/build/src/utils/prompts.js +29 -47
  665. package/build/src/utils/prompts.js.map +1 -1
  666. package/build/src/utils/resolveArgs.js +24 -36
  667. package/build/src/utils/resolveArgs.js.map +1 -1
  668. package/build/src/utils/scheme.js +32 -40
  669. package/build/src/utils/scheme.js.map +1 -1
  670. package/build/src/utils/stream.js +3 -5
  671. package/build/src/utils/stream.js.map +1 -1
  672. package/build/src/utils/strings.js +4 -6
  673. package/build/src/utils/strings.js.map +1 -1
  674. package/build/src/utils/tar.js +15 -19
  675. package/build/src/utils/tar.js.map +1 -1
  676. package/build/src/utils/telemetry/Telemetry.js +27 -29
  677. package/build/src/utils/telemetry/Telemetry.js.map +1 -1
  678. package/build/src/utils/telemetry/clients/FetchClient.js +13 -15
  679. package/build/src/utils/telemetry/clients/FetchClient.js.map +1 -1
  680. package/build/src/utils/telemetry/clients/FetchDetachedClient.js +22 -26
  681. package/build/src/utils/telemetry/clients/FetchDetachedClient.js.map +1 -1
  682. package/build/src/utils/telemetry/clients/RudderClient.js +8 -10
  683. package/build/src/utils/telemetry/clients/RudderClient.js.map +1 -1
  684. package/build/src/utils/telemetry/clients/RudderDetachedClient.js +22 -26
  685. package/build/src/utils/telemetry/clients/RudderDetachedClient.js.map +1 -1
  686. package/build/src/utils/telemetry/clients/flushFetchDetached.js +10 -10
  687. package/build/src/utils/telemetry/clients/flushFetchDetached.js.map +1 -1
  688. package/build/src/utils/telemetry/clients/flushRudderDetached.js +10 -10
  689. package/build/src/utils/telemetry/clients/flushRudderDetached.js.map +1 -1
  690. package/build/src/utils/telemetry/events.js +2 -4
  691. package/build/src/utils/telemetry/events.js.map +1 -1
  692. package/build/src/utils/telemetry/flushDetached.js.map +1 -1
  693. package/build/src/utils/telemetry/index.js +29 -25
  694. package/build/src/utils/telemetry/index.js.map +1 -1
  695. package/build/src/utils/telemetry/types.js.map +1 -1
  696. package/build/src/utils/telemetry/utils/constants.js +4 -8
  697. package/build/src/utils/telemetry/utils/constants.js.map +1 -1
  698. package/build/src/utils/telemetry/utils/context.js +14 -18
  699. package/build/src/utils/telemetry/utils/context.js.map +1 -1
  700. package/build/src/utils/template.js +4 -6
  701. package/build/src/utils/template.js.map +1 -1
  702. package/build/src/utils/terminal.js +2 -4
  703. package/build/src/utils/terminal.js.map +1 -1
  704. package/build/src/utils/tsconfig/evaluateTsConfig.js +17 -21
  705. package/build/src/utils/tsconfig/evaluateTsConfig.js.map +1 -1
  706. package/build/src/utils/tsconfig/loadTsConfigPaths.js +14 -18
  707. package/build/src/utils/tsconfig/loadTsConfigPaths.js.map +1 -1
  708. package/build/src/utils/tsconfig/matchTsConfigPathAlias.js +5 -7
  709. package/build/src/utils/tsconfig/matchTsConfigPathAlias.js.map +1 -1
  710. package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js +12 -14
  711. package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js.map +1 -1
  712. package/build/src/utils/url.js +13 -23
  713. package/build/src/utils/url.js.map +1 -1
  714. package/build/src/utils/validateApplicationId.js +86 -108
  715. package/build/src/utils/validateApplicationId.js.map +1 -1
  716. package/build/src/utils/variadic.js +16 -22
  717. package/build/src/utils/variadic.js.map +1 -1
  718. package/build/src/whoami/index.js +7 -11
  719. package/build/src/whoami/index.js.map +1 -1
  720. package/build/src/whoami/whoamiAsync.js +7 -11
  721. package/build/src/whoami/whoamiAsync.js.map +1 -1
  722. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/start/doctor/dependencies/validateDependenciesVersions.ts"],"sourcesContent":["import { ExpoConfig, PackageJSONConfig } from '@expo/config';\nimport assert from 'assert';\nimport chalk from 'chalk';\nimport npmPackageArg from 'npm-package-arg';\nimport semver from 'semver';\nimport semverRangeSubset from 'semver/ranges/subset';\n\nimport { BundledNativeModules } from './bundledNativeModules';\nimport { getCombinedKnownVersionsAsync } from './getVersionedPackages';\nimport { resolveAllPackageVersionsAsync } from './resolvePackages';\nimport * as Log from '../../../log';\nimport { env } from '../../../utils/env';\n\nconst debug = require('debug')('expo:doctor:dependencies:validate') as typeof console.log;\n\ntype IncorrectDependency = {\n packageName: string;\n packageType: 'dependencies' | 'devDependencies';\n expectedVersionOrRange: string;\n actualVersion: string;\n};\n\ntype DependenciesToCheck = { known: string[]; unknown: string[] };\n\n/**\n * Print a list of incorrect dependency versions.\n * This only checks dependencies when not running in offline mode.\n *\n * @param projectRoot Expo project root.\n * @param exp Expo project config.\n * @param pkg Project's `package.json`.\n * @param packagesToCheck A list of packages to check, if undefined or empty, all will be checked.\n * @returns `true` if there are no incorrect dependencies.\n */\nexport async function validateDependenciesVersionsAsync(\n projectRoot: string,\n exp: Pick<ExpoConfig, 'sdkVersion'>,\n pkg: PackageJSONConfig,\n packagesToCheck?: string[]\n): Promise<boolean | null> {\n if (env.EXPO_OFFLINE) {\n Log.warn('Skipping dependency validation in offline mode');\n return null;\n }\n\n const incorrectDeps = await getVersionedDependenciesAsync(projectRoot, exp, pkg, packagesToCheck);\n return logIncorrectDependencies(incorrectDeps);\n}\n\nfunction logInvalidDependency({\n packageName,\n expectedVersionOrRange,\n actualVersion,\n}: IncorrectDependency) {\n Log.warn(\n chalk` {bold ${packageName}}{cyan @}{red ${actualVersion}} - expected version: {green ${expectedVersionOrRange}}`\n );\n}\n\nexport function logIncorrectDependencies(incorrectDeps: IncorrectDependency[]) {\n if (!incorrectDeps.length) {\n return true;\n }\n\n Log.warn(\n chalk`The following packages should be updated for best compatibility with the installed {bold expo} version:`\n );\n incorrectDeps.forEach((dep) => logInvalidDependency(dep));\n\n Log.warn(\n 'Your project may not work correctly until you install the expected versions of the packages.'\n );\n\n return false;\n}\n\n/**\n * Return a list of versioned dependencies for the project SDK version.\n *\n * @param projectRoot Expo project root.\n * @param exp Expo project config.\n * @param pkg Project's `package.json`.\n * @param packagesToCheck A list of packages to check, if undefined or empty, all will be checked.\n * @returns A list of incorrect dependencies.\n */\nexport async function getVersionedDependenciesAsync(\n projectRoot: string,\n exp: Pick<ExpoConfig, 'sdkVersion'>,\n pkg: PackageJSONConfig,\n packagesToCheck?: string[]\n): Promise<IncorrectDependency[]> {\n // This should never happen under normal circumstances since\n // the CLI is versioned in the `expo` package.\n assert(exp.sdkVersion, 'SDK Version is missing');\n\n // Get from both endpoints and combine the known package versions.\n const combinedKnownPackages = await getCombinedKnownVersionsAsync({\n projectRoot,\n sdkVersion: exp.sdkVersion,\n });\n // debug(`Known dependencies: %O`, combinedKnownPackages);\n\n const resolvedDependencies = packagesToCheck?.length\n ? // Diff the provided packages to ensure we only check against installed packages.\n getFilteredObject(packagesToCheck, { ...pkg.dependencies, ...pkg.devDependencies })\n : // If no packages are provided, check against the `package.json` `dependencies` + `devDependencies` object.\n { ...pkg.dependencies, ...pkg.devDependencies };\n debug(`Checking dependencies for ${exp.sdkVersion}: %O`, resolvedDependencies);\n\n // intersection of packages from package.json and bundled native modules\n const { known: resolvedPackagesToCheck, unknown } = getPackagesToCheck(\n combinedKnownPackages,\n resolvedDependencies\n );\n debug(`Comparing known versions: %O`, resolvedPackagesToCheck);\n debug(`Skipping packages that cannot be versioned automatically: %O`, unknown);\n // read package versions from the file system (node_modules)\n const packageVersions = await resolveAllPackageVersionsAsync(\n projectRoot,\n resolvedPackagesToCheck\n );\n debug(`Package versions: %O`, packageVersions);\n // find incorrect dependencies by comparing the actual package versions with the bundled native module version ranges\n let incorrectDeps = findIncorrectDependencies(pkg, packageVersions, combinedKnownPackages);\n debug(`Incorrect dependencies: %O`, incorrectDeps);\n\n if (pkg?.expo?.install?.exclude) {\n const packagesToExclude = pkg.expo.install.exclude;\n\n // Parse the exclude list to ensure we can factor in any specified version ranges\n const parsedPackagesToExclude = packagesToExclude.reduce(\n (acc: Record<string, npmPackageArg.Result>, packageName: string) => {\n const npaResult = npmPackageArg(packageName);\n if (typeof npaResult.name === 'string') {\n acc[npaResult.name] = npaResult;\n } else {\n acc[packageName] = npaResult;\n }\n return acc;\n },\n {}\n );\n\n const incorrectAndExcludedDeps = incorrectDeps\n .filter((dep) => {\n if (parsedPackagesToExclude[dep.packageName]) {\n const { name, raw, rawSpec, type } = parsedPackagesToExclude[dep.packageName];\n const suggestedRange = combinedKnownPackages[name];\n\n // If only the package name itself is specified, then we keep it in the exclude list\n if (name === raw) {\n return true;\n } else if (type === 'version') {\n return suggestedRange === rawSpec;\n } else if (type === 'range') {\n // Fall through exclusions if the suggested range is invalid\n if (!semver.validRange(suggestedRange)) {\n debug(\n `Invalid semver range in combined known packages for package ${name} in expo.install.exclude: %O`,\n suggestedRange\n );\n return false;\n }\n\n return semverRangeSubset(suggestedRange, rawSpec);\n } else {\n debug(\n `Unsupported npm package argument type for package ${name} in expo.install.exclude: %O`,\n type\n );\n }\n }\n\n return false;\n })\n .map((dep) => dep.packageName);\n\n debug(\n `Incorrect dependency warnings filtered out by expo.install.exclude: %O`,\n incorrectAndExcludedDeps\n );\n incorrectDeps = incorrectDeps.filter(\n (dep) => !incorrectAndExcludedDeps.includes(dep.packageName)\n );\n }\n\n return incorrectDeps;\n}\n\nfunction getFilteredObject(keys: string[], object: Record<string, string>) {\n return keys.reduce<Record<string, string>>((acc, key) => {\n acc[key] = object[key];\n return acc;\n }, {});\n}\n\nfunction getPackagesToCheck(\n bundledNativeModules: BundledNativeModules,\n dependencies?: Record<string, string> | null\n): DependenciesToCheck {\n const dependencyNames = Object.keys(dependencies ?? {});\n const known: string[] = [];\n const unknown: string[] = [];\n for (const dependencyName of dependencyNames) {\n if (dependencyName in bundledNativeModules) {\n known.push(dependencyName);\n } else {\n unknown.push(dependencyName);\n }\n }\n return { known, unknown };\n}\n\nfunction findIncorrectDependencies(\n pkg: PackageJSONConfig,\n packageVersions: Record<string, string>,\n bundledNativeModules: BundledNativeModules\n): IncorrectDependency[] {\n const packages = Object.keys(packageVersions);\n const incorrectDeps: IncorrectDependency[] = [];\n for (const packageName of packages) {\n const expectedVersionOrRange = bundledNativeModules[packageName];\n const actualVersion = packageVersions[packageName];\n if (isDependencyVersionIncorrect(packageName, actualVersion, expectedVersionOrRange)) {\n incorrectDeps.push({\n packageName,\n packageType: findDependencyType(pkg, packageName),\n expectedVersionOrRange,\n actualVersion,\n });\n }\n }\n return incorrectDeps;\n}\n\nexport function isDependencyVersionIncorrect(\n packageName: string,\n actualVersion: string,\n expectedVersionOrRange?: string\n) {\n if (!expectedVersionOrRange) {\n return false;\n }\n\n // we never want to go backwards with the expo patch version\n if (packageName === 'expo') {\n return semver.ltr(actualVersion, expectedVersionOrRange);\n }\n\n // For all other packages, check if the actual version satisfies the expected range\n const satisfies = semver.satisfies(actualVersion, expectedVersionOrRange, {\n includePrerelease: true,\n });\n\n return !satisfies;\n}\n\nfunction findDependencyType(\n pkg: PackageJSONConfig,\n packageName: string\n): IncorrectDependency['packageType'] {\n if (pkg.devDependencies && packageName in pkg.devDependencies) {\n return 'devDependencies';\n }\n\n return 'dependencies';\n}\n"],"names":["getVersionedDependenciesAsync","isDependencyVersionIncorrect","logIncorrectDependencies","validateDependenciesVersionsAsync","debug","require","projectRoot","exp","pkg","packagesToCheck","env","EXPO_OFFLINE","Log","warn","incorrectDeps","logInvalidDependency","packageName","expectedVersionOrRange","actualVersion","chalk","length","forEach","dep","assert","sdkVersion","combinedKnownPackages","getCombinedKnownVersionsAsync","resolvedDependencies","getFilteredObject","dependencies","devDependencies","known","resolvedPackagesToCheck","unknown","getPackagesToCheck","packageVersions","resolveAllPackageVersionsAsync","findIncorrectDependencies","expo","install","exclude","packagesToExclude","parsedPackagesToExclude","reduce","acc","npaResult","npmPackageArg","name","incorrectAndExcludedDeps","filter","raw","rawSpec","type","suggestedRange","semver","validRange","semverRangeSubset","map","includes","keys","object","key","bundledNativeModules","dependencyNames","Object","dependencyName","push","packages","packageType","findDependencyType","ltr","satisfies","includePrerelease"],"mappings":";;;;;;;;;;;IAqFsBA,6BAA6B;eAA7BA;;IAsJNC,4BAA4B;eAA5BA;;IAhLAC,wBAAwB;eAAxBA;;IAzBMC,iCAAiC;eAAjCA;;;;gEAjCH;;;;;;;gEACD;;;;;;;gEACQ;;;;;;;gEACP;;;;;;;gEACW;;;;;;sCAGgB;iCACC;6DAC1B;qBACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEpB,MAAMC,QAAQC,QAAQ,SAAS;AAqBxB,eAAeF,kCACpBG,WAAmB,EACnBC,GAAmC,EACnCC,GAAsB,EACtBC,eAA0B;IAE1B,IAAIC,QAAG,CAACC,YAAY,EAAE;QACpBC,KAAIC,IAAI,CAAC;QACT,OAAO;IACT;IAEA,MAAMC,gBAAgB,MAAMd,8BAA8BM,aAAaC,KAAKC,KAAKC;IACjF,OAAOP,yBAAyBY;AAClC;AAEA,SAASC,qBAAqB,EAC5BC,WAAW,EACXC,sBAAsB,EACtBC,aAAa,EACO;IACpBN,KAAIC,IAAI,CACNM,IAAAA,gBAAK,CAAA,CAAC,QAAQ,EAAEH,YAAY,cAAc,EAAEE,cAAc,6BAA6B,EAAED,uBAAuB,CAAC,CAAC;AAEtH;AAEO,SAASf,yBAAyBY,aAAoC;IAC3E,IAAI,CAACA,cAAcM,MAAM,EAAE;QACzB,OAAO;IACT;IAEAR,KAAIC,IAAI,CACNM,IAAAA,gBAAK,CAAA,CAAC,uGAAuG,CAAC;IAEhHL,cAAcO,OAAO,CAAC,CAACC,MAAQP,qBAAqBO;IAEpDV,KAAIC,IAAI,CACN;IAGF,OAAO;AACT;AAWO,eAAeb,8BACpBM,WAAmB,EACnBC,GAAmC,EACnCC,GAAsB,EACtBC,eAA0B;QAqCtBD,mBAAAA;IAnCJ,4DAA4D;IAC5D,8CAA8C;IAC9Ce,IAAAA,iBAAM,EAAChB,IAAIiB,UAAU,EAAE;IAEvB,kEAAkE;IAClE,MAAMC,wBAAwB,MAAMC,IAAAA,mDAA6B,EAAC;QAChEpB;QACAkB,YAAYjB,IAAIiB,UAAU;IAC5B;IACA,0DAA0D;IAE1D,MAAMG,uBAAuBlB,CAAAA,mCAAAA,gBAAiBW,MAAM,IAEhDQ,kBAAkBnB,iBAAiB;QAAE,GAAGD,IAAIqB,YAAY;QAAE,GAAGrB,IAAIsB,eAAe;IAAC,KAEjF;QAAE,GAAGtB,IAAIqB,YAAY;QAAE,GAAGrB,IAAIsB,eAAe;IAAC;IAClD1B,MAAM,CAAC,0BAA0B,EAAEG,IAAIiB,UAAU,CAAC,IAAI,CAAC,EAAEG;IAEzD,wEAAwE;IACxE,MAAM,EAAEI,OAAOC,uBAAuB,EAAEC,OAAO,EAAE,GAAGC,mBAClDT,uBACAE;IAEFvB,MAAM,CAAC,4BAA4B,CAAC,EAAE4B;IACtC5B,MAAM,CAAC,4DAA4D,CAAC,EAAE6B;IACtE,4DAA4D;IAC5D,MAAME,kBAAkB,MAAMC,IAAAA,+CAA8B,EAC1D9B,aACA0B;IAEF5B,MAAM,CAAC,oBAAoB,CAAC,EAAE+B;IAC9B,qHAAqH;IACrH,IAAIrB,gBAAgBuB,0BAA0B7B,KAAK2B,iBAAiBV;IACpErB,MAAM,CAAC,0BAA0B,CAAC,EAAEU;IAEpC,IAAIN,wBAAAA,YAAAA,IAAK8B,IAAI,sBAAT9B,oBAAAA,UAAW+B,OAAO,qBAAlB/B,kBAAoBgC,OAAO,EAAE;QAC/B,MAAMC,oBAAoBjC,IAAI8B,IAAI,CAACC,OAAO,CAACC,OAAO;QAElD,iFAAiF;QACjF,MAAME,0BAA0BD,kBAAkBE,MAAM,CACtD,CAACC,KAA2C5B;YAC1C,MAAM6B,YAAYC,IAAAA,wBAAa,EAAC9B;YAChC,IAAI,OAAO6B,UAAUE,IAAI,KAAK,UAAU;gBACtCH,GAAG,CAACC,UAAUE,IAAI,CAAC,GAAGF;YACxB,OAAO;gBACLD,GAAG,CAAC5B,YAAY,GAAG6B;YACrB;YACA,OAAOD;QACT,GACA,CAAC;QAGH,MAAMI,2BAA2BlC,cAC9BmC,MAAM,CAAC,CAAC3B;YACP,IAAIoB,uBAAuB,CAACpB,IAAIN,WAAW,CAAC,EAAE;gBAC5C,MAAM,EAAE+B,IAAI,EAAEG,GAAG,EAAEC,OAAO,EAAEC,IAAI,EAAE,GAAGV,uBAAuB,CAACpB,IAAIN,WAAW,CAAC;gBAC7E,MAAMqC,iBAAiB5B,qBAAqB,CAACsB,KAAK;gBAElD,oFAAoF;gBACpF,IAAIA,SAASG,KAAK;oBAChB,OAAO;gBACT,OAAO,IAAIE,SAAS,WAAW;oBAC7B,OAAOC,mBAAmBF;gBAC5B,OAAO,IAAIC,SAAS,SAAS;oBAC3B,4DAA4D;oBAC5D,IAAI,CAACE,iBAAM,CAACC,UAAU,CAACF,iBAAiB;wBACtCjD,MACE,CAAC,4DAA4D,EAAE2C,KAAK,4BAA4B,CAAC,EACjGM;wBAEF,OAAO;oBACT;oBAEA,OAAOG,IAAAA,iBAAiB,EAACH,gBAAgBF;gBAC3C,OAAO;oBACL/C,MACE,CAAC,kDAAkD,EAAE2C,KAAK,4BAA4B,CAAC,EACvFK;gBAEJ;YACF;YAEA,OAAO;QACT,GACCK,GAAG,CAAC,CAACnC,MAAQA,IAAIN,WAAW;QAE/BZ,MACE,CAAC,sEAAsE,CAAC,EACxE4C;QAEFlC,gBAAgBA,cAAcmC,MAAM,CAClC,CAAC3B,MAAQ,CAAC0B,yBAAyBU,QAAQ,CAACpC,IAAIN,WAAW;IAE/D;IAEA,OAAOF;AACT;AAEA,SAASc,kBAAkB+B,IAAc,EAAEC,MAA8B;IACvE,OAAOD,KAAKhB,MAAM,CAAyB,CAACC,KAAKiB;QAC/CjB,GAAG,CAACiB,IAAI,GAAGD,MAAM,CAACC,IAAI;QACtB,OAAOjB;IACT,GAAG,CAAC;AACN;AAEA,SAASV,mBACP4B,oBAA0C,EAC1CjC,YAA4C;IAE5C,MAAMkC,kBAAkBC,OAAOL,IAAI,CAAC9B,gBAAgB,CAAC;IACrD,MAAME,QAAkB,EAAE;IAC1B,MAAME,UAAoB,EAAE;IAC5B,KAAK,MAAMgC,kBAAkBF,gBAAiB;QAC5C,IAAIE,kBAAkBH,sBAAsB;YAC1C/B,MAAMmC,IAAI,CAACD;QACb,OAAO;YACLhC,QAAQiC,IAAI,CAACD;QACf;IACF;IACA,OAAO;QAAElC;QAAOE;IAAQ;AAC1B;AAEA,SAASI,0BACP7B,GAAsB,EACtB2B,eAAuC,EACvC2B,oBAA0C;IAE1C,MAAMK,WAAWH,OAAOL,IAAI,CAACxB;IAC7B,MAAMrB,gBAAuC,EAAE;IAC/C,KAAK,MAAME,eAAemD,SAAU;QAClC,MAAMlD,yBAAyB6C,oBAAoB,CAAC9C,YAAY;QAChE,MAAME,gBAAgBiB,eAAe,CAACnB,YAAY;QAClD,IAAIf,6BAA6Be,aAAaE,eAAeD,yBAAyB;YACpFH,cAAcoD,IAAI,CAAC;gBACjBlD;gBACAoD,aAAaC,mBAAmB7D,KAAKQ;gBACrCC;gBACAC;YACF;QACF;IACF;IACA,OAAOJ;AACT;AAEO,SAASb,6BACde,WAAmB,EACnBE,aAAqB,EACrBD,sBAA+B;IAE/B,IAAI,CAACA,wBAAwB;QAC3B,OAAO;IACT;IAEA,4DAA4D;IAC5D,IAAID,gBAAgB,QAAQ;QAC1B,OAAOsC,iBAAM,CAACgB,GAAG,CAACpD,eAAeD;IACnC;IAEA,mFAAmF;IACnF,MAAMsD,YAAYjB,iBAAM,CAACiB,SAAS,CAACrD,eAAeD,wBAAwB;QACxEuD,mBAAmB;IACrB;IAEA,OAAO,CAACD;AACV;AAEA,SAASF,mBACP7D,GAAsB,EACtBQ,WAAmB;IAEnB,IAAIR,IAAIsB,eAAe,IAAId,eAAeR,IAAIsB,eAAe,EAAE;QAC7D,OAAO;IACT;IAEA,OAAO;AACT"}
1
+ {"version":3,"sources":["../../../../../src/start/doctor/dependencies/validateDependenciesVersions.ts"],"sourcesContent":["import { ExpoConfig, PackageJSONConfig } from '@expo/config';\nimport assert from 'assert';\nimport chalk from 'chalk';\nimport npmPackageArg from 'npm-package-arg';\nimport semver from 'semver';\nimport semverRangeSubset from 'semver/ranges/subset';\n\nimport { BundledNativeModules } from './bundledNativeModules';\nimport { getCombinedKnownVersionsAsync } from './getVersionedPackages';\nimport { resolveAllPackageVersionsAsync } from './resolvePackages';\nimport * as Log from '../../../log';\nimport { env } from '../../../utils/env';\n\nconst debug = require('debug')('expo:doctor:dependencies:validate') as typeof console.log;\n\ntype IncorrectDependency = {\n packageName: string;\n packageType: 'dependencies' | 'devDependencies';\n expectedVersionOrRange: string;\n actualVersion: string;\n};\n\ntype DependenciesToCheck = { known: string[]; unknown: string[] };\n\n/**\n * Print a list of incorrect dependency versions.\n * This only checks dependencies when not running in offline mode.\n *\n * @param projectRoot Expo project root.\n * @param exp Expo project config.\n * @param pkg Project's `package.json`.\n * @param packagesToCheck A list of packages to check, if undefined or empty, all will be checked.\n * @returns `true` if there are no incorrect dependencies.\n */\nexport async function validateDependenciesVersionsAsync(\n projectRoot: string,\n exp: Pick<ExpoConfig, 'sdkVersion'>,\n pkg: PackageJSONConfig,\n packagesToCheck?: string[]\n): Promise<boolean | null> {\n if (env.EXPO_OFFLINE) {\n Log.warn('Skipping dependency validation in offline mode');\n return null;\n }\n\n const incorrectDeps = await getVersionedDependenciesAsync(projectRoot, exp, pkg, packagesToCheck);\n return logIncorrectDependencies(incorrectDeps);\n}\n\nfunction logInvalidDependency({\n packageName,\n expectedVersionOrRange,\n actualVersion,\n}: IncorrectDependency) {\n Log.warn(\n chalk` {bold ${packageName}}{cyan @}{red ${actualVersion}} - expected version: {green ${expectedVersionOrRange}}`\n );\n}\n\nexport function logIncorrectDependencies(incorrectDeps: IncorrectDependency[]) {\n if (!incorrectDeps.length) {\n return true;\n }\n\n Log.warn(\n chalk`The following packages should be updated for best compatibility with the installed {bold expo} version:`\n );\n incorrectDeps.forEach((dep) => logInvalidDependency(dep));\n\n Log.warn(\n 'Your project may not work correctly until you install the expected versions of the packages.'\n );\n\n return false;\n}\n\n/**\n * Return a list of versioned dependencies for the project SDK version.\n *\n * @param projectRoot Expo project root.\n * @param exp Expo project config.\n * @param pkg Project's `package.json`.\n * @param packagesToCheck A list of packages to check, if undefined or empty, all will be checked.\n * @returns A list of incorrect dependencies.\n */\nexport async function getVersionedDependenciesAsync(\n projectRoot: string,\n exp: Pick<ExpoConfig, 'sdkVersion'>,\n pkg: PackageJSONConfig,\n packagesToCheck?: string[]\n): Promise<IncorrectDependency[]> {\n // This should never happen under normal circumstances since\n // the CLI is versioned in the `expo` package.\n assert(exp.sdkVersion, 'SDK Version is missing');\n\n // Get from both endpoints and combine the known package versions.\n const combinedKnownPackages = await getCombinedKnownVersionsAsync({\n projectRoot,\n sdkVersion: exp.sdkVersion,\n });\n // debug(`Known dependencies: %O`, combinedKnownPackages);\n\n const resolvedDependencies = packagesToCheck?.length\n ? // Diff the provided packages to ensure we only check against installed packages.\n getFilteredObject(packagesToCheck, { ...pkg.dependencies, ...pkg.devDependencies })\n : // If no packages are provided, check against the `package.json` `dependencies` + `devDependencies` object.\n { ...pkg.dependencies, ...pkg.devDependencies };\n debug(`Checking dependencies for ${exp.sdkVersion}: %O`, resolvedDependencies);\n\n // intersection of packages from package.json and bundled native modules\n const { known: resolvedPackagesToCheck, unknown } = getPackagesToCheck(\n combinedKnownPackages,\n resolvedDependencies\n );\n debug(`Comparing known versions: %O`, resolvedPackagesToCheck);\n debug(`Skipping packages that cannot be versioned automatically: %O`, unknown);\n // read package versions from the file system (node_modules)\n const packageVersions = await resolveAllPackageVersionsAsync(\n projectRoot,\n resolvedPackagesToCheck\n );\n debug(`Package versions: %O`, packageVersions);\n // find incorrect dependencies by comparing the actual package versions with the bundled native module version ranges\n let incorrectDeps = findIncorrectDependencies(pkg, packageVersions, combinedKnownPackages);\n debug(`Incorrect dependencies: %O`, incorrectDeps);\n\n if (pkg?.expo?.install?.exclude) {\n const packagesToExclude = pkg.expo.install.exclude;\n\n // Parse the exclude list to ensure we can factor in any specified version ranges\n const parsedPackagesToExclude = packagesToExclude.reduce(\n (acc: Record<string, npmPackageArg.Result>, packageName: string) => {\n const npaResult = npmPackageArg(packageName);\n if (typeof npaResult.name === 'string') {\n acc[npaResult.name] = npaResult;\n } else {\n acc[packageName] = npaResult;\n }\n return acc;\n },\n {}\n );\n\n const incorrectAndExcludedDeps = incorrectDeps\n .filter((dep) => {\n if (parsedPackagesToExclude[dep.packageName]) {\n const { name, raw, rawSpec, type } = parsedPackagesToExclude[dep.packageName];\n const suggestedRange = combinedKnownPackages[name];\n\n // If only the package name itself is specified, then we keep it in the exclude list\n if (name === raw) {\n return true;\n } else if (type === 'version') {\n return suggestedRange === rawSpec;\n } else if (type === 'range') {\n // Fall through exclusions if the suggested range is invalid\n if (!semver.validRange(suggestedRange)) {\n debug(\n `Invalid semver range in combined known packages for package ${name} in expo.install.exclude: %O`,\n suggestedRange\n );\n return false;\n }\n\n return semverRangeSubset(suggestedRange, rawSpec);\n } else {\n debug(\n `Unsupported npm package argument type for package ${name} in expo.install.exclude: %O`,\n type\n );\n }\n }\n\n return false;\n })\n .map((dep) => dep.packageName);\n\n debug(\n `Incorrect dependency warnings filtered out by expo.install.exclude: %O`,\n incorrectAndExcludedDeps\n );\n incorrectDeps = incorrectDeps.filter(\n (dep) => !incorrectAndExcludedDeps.includes(dep.packageName)\n );\n }\n\n return incorrectDeps;\n}\n\nfunction getFilteredObject(keys: string[], object: Record<string, string>) {\n return keys.reduce<Record<string, string>>((acc, key) => {\n acc[key] = object[key];\n return acc;\n }, {});\n}\n\nfunction getPackagesToCheck(\n bundledNativeModules: BundledNativeModules,\n dependencies?: Record<string, string> | null\n): DependenciesToCheck {\n const dependencyNames = Object.keys(dependencies ?? {});\n const known: string[] = [];\n const unknown: string[] = [];\n for (const dependencyName of dependencyNames) {\n if (dependencyName in bundledNativeModules) {\n known.push(dependencyName);\n } else {\n unknown.push(dependencyName);\n }\n }\n return { known, unknown };\n}\n\nfunction findIncorrectDependencies(\n pkg: PackageJSONConfig,\n packageVersions: Record<string, string>,\n bundledNativeModules: BundledNativeModules\n): IncorrectDependency[] {\n const packages = Object.keys(packageVersions);\n const incorrectDeps: IncorrectDependency[] = [];\n for (const packageName of packages) {\n const expectedVersionOrRange = bundledNativeModules[packageName];\n const actualVersion = packageVersions[packageName];\n if (isDependencyVersionIncorrect(packageName, actualVersion, expectedVersionOrRange)) {\n incorrectDeps.push({\n packageName,\n packageType: findDependencyType(pkg, packageName),\n expectedVersionOrRange,\n actualVersion,\n });\n }\n }\n return incorrectDeps;\n}\n\nexport function isDependencyVersionIncorrect(\n packageName: string,\n actualVersion: string,\n expectedVersionOrRange?: string\n) {\n if (!expectedVersionOrRange) {\n return false;\n }\n\n // we never want to go backwards with the expo patch version\n if (packageName === 'expo') {\n return semver.ltr(actualVersion, expectedVersionOrRange);\n }\n\n // For all other packages, check if the actual version satisfies the expected range\n const satisfies = semver.satisfies(actualVersion, expectedVersionOrRange, {\n includePrerelease: true,\n });\n\n return !satisfies;\n}\n\nfunction findDependencyType(\n pkg: PackageJSONConfig,\n packageName: string\n): IncorrectDependency['packageType'] {\n if (pkg.devDependencies && packageName in pkg.devDependencies) {\n return 'devDependencies';\n }\n\n return 'dependencies';\n}\n"],"names":["validateDependenciesVersionsAsync","logIncorrectDependencies","getVersionedDependenciesAsync","isDependencyVersionIncorrect","debug","require","projectRoot","exp","pkg","packagesToCheck","env","EXPO_OFFLINE","Log","warn","incorrectDeps","logInvalidDependency","packageName","expectedVersionOrRange","actualVersion","chalk","length","forEach","dep","assert","sdkVersion","combinedKnownPackages","getCombinedKnownVersionsAsync","resolvedDependencies","getFilteredObject","dependencies","devDependencies","known","resolvedPackagesToCheck","unknown","getPackagesToCheck","packageVersions","resolveAllPackageVersionsAsync","findIncorrectDependencies","expo","install","exclude","packagesToExclude","parsedPackagesToExclude","reduce","acc","npaResult","npmPackageArg","name","incorrectAndExcludedDeps","filter","raw","rawSpec","type","suggestedRange","semver","validRange","semverRangeSubset","map","includes","keys","object","key","bundledNativeModules","dependencyNames","Object","dependencyName","push","packages","packageType","findDependencyType","ltr","satisfies","includePrerelease"],"mappings":"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"}
@@ -9,47 +9,43 @@ function _export(target, all) {
9
9
  });
10
10
  }
11
11
  _export(exports, {
12
- ExternalModule: function() {
13
- return ExternalModule;
14
- },
15
- ExternalModuleVersionError: function() {
16
- return ExternalModuleVersionError;
17
- }
12
+ ExternalModuleVersionError: ()=>ExternalModuleVersionError,
13
+ ExternalModule: ()=>ExternalModule
18
14
  });
19
- function _packagemanager() {
20
- const data = /*#__PURE__*/ _interop_require_wildcard(require("@expo/package-manager"));
21
- _packagemanager = function() {
15
+ function _packageManager() {
16
+ const data = /*#__PURE__*/ _interopRequireWildcard(require("@expo/package-manager"));
17
+ _packageManager = function() {
22
18
  return data;
23
19
  };
24
20
  return data;
25
21
  }
26
22
  function _requireg() {
27
- const data = /*#__PURE__*/ _interop_require_default(require("requireg"));
23
+ const data = /*#__PURE__*/ _interopRequireDefault(require("requireg"));
28
24
  _requireg = function() {
29
25
  return data;
30
26
  };
31
27
  return data;
32
28
  }
33
- function _resolvefrom() {
34
- const data = /*#__PURE__*/ _interop_require_default(require("resolve-from"));
35
- _resolvefrom = function() {
29
+ function _resolveFrom() {
30
+ const data = /*#__PURE__*/ _interopRequireDefault(require("resolve-from"));
31
+ _resolveFrom = function() {
36
32
  return data;
37
33
  };
38
34
  return data;
39
35
  }
40
36
  function _semver() {
41
- const data = /*#__PURE__*/ _interop_require_default(require("semver"));
37
+ const data = /*#__PURE__*/ _interopRequireDefault(require("semver"));
42
38
  _semver = function() {
43
39
  return data;
44
40
  };
45
41
  return data;
46
42
  }
47
- const _log = /*#__PURE__*/ _interop_require_wildcard(require("../../../log"));
43
+ const _log = /*#__PURE__*/ _interopRequireWildcard(require("../../../log"));
48
44
  const _delay = require("../../../utils/delay");
49
45
  const _env = require("../../../utils/env");
50
46
  const _errors = require("../../../utils/errors");
51
47
  const _prompts = require("../../../utils/prompts");
52
- function _interop_require_default(obj) {
48
+ function _interopRequireDefault(obj) {
53
49
  return obj && obj.__esModule ? obj : {
54
50
  default: obj
55
51
  };
@@ -62,7 +58,7 @@ function _getRequireWildcardCache(nodeInterop) {
62
58
  return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
63
59
  })(nodeInterop);
64
60
  }
65
- function _interop_require_wildcard(obj, nodeInterop) {
61
+ function _interopRequireWildcard(obj, nodeInterop) {
66
62
  if (!nodeInterop && obj && obj.__esModule) {
67
63
  return obj;
68
64
  }
@@ -75,9 +71,7 @@ function _interop_require_wildcard(obj, nodeInterop) {
75
71
  if (cache && cache.has(obj)) {
76
72
  return cache.get(obj);
77
73
  }
78
- var newObj = {
79
- __proto__: null
80
- };
74
+ var newObj = {};
81
75
  var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
82
76
  for(var key in obj){
83
77
  if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
@@ -95,20 +89,21 @@ function _interop_require_wildcard(obj, nodeInterop) {
95
89
  }
96
90
  return newObj;
97
91
  }
98
- const debug = require('debug')('expo:doctor:externalModule');
92
+ const debug = require("debug")("expo:doctor:externalModule");
99
93
  class ExternalModuleVersionError extends _errors.CommandError {
100
94
  constructor(message, shouldGloballyInstall){
101
- super('EXTERNAL_MODULE_VERSION', message), this.shouldGloballyInstall = shouldGloballyInstall;
95
+ super("EXTERNAL_MODULE_VERSION", message);
96
+ this.shouldGloballyInstall = shouldGloballyInstall;
102
97
  }
103
98
  }
104
99
  class ExternalModule {
105
- constructor(/** Project root for checking if the package is installed locally. */ projectRoot, /** Info on the external package. */ pkg, /** A function used to create the installation prompt message. */ promptMessage){
100
+ constructor(projectRoot, pkg, promptMessage){
106
101
  this.projectRoot = projectRoot;
107
102
  this.pkg = pkg;
108
103
  this.promptMessage = promptMessage;
109
104
  this.instance = null;
110
105
  }
111
- /** Resolve the globally or locally installed instance, or prompt to install. */ async resolveAsync({ prefersGlobalInstall, ...options } = {}) {
106
+ /** Resolve the globally or locally installed instance, or prompt to install. */ async resolveAsync({ prefersGlobalInstall , ...options } = {}) {
112
107
  try {
113
108
  return this.getVersioned() ?? this.installAsync({
114
109
  ...options,
@@ -126,11 +121,11 @@ class ExternalModule {
126
121
  throw error;
127
122
  }
128
123
  }
129
- /** Prompt the user to install the package and try again. */ async installAsync({ shouldPrompt = true, autoInstall, shouldGloballyInstall } = {}) {
124
+ /** Prompt the user to install the package and try again. */ async installAsync({ shouldPrompt =true , autoInstall , shouldGloballyInstall } = {}) {
130
125
  const packageName = [
131
126
  this.pkg.name,
132
127
  this.pkg.versionRange
133
- ].join('@');
128
+ ].join("@");
134
129
  if (!autoInstall) {
135
130
  // Delay the prompt so it doesn't conflict with other dev tool logs
136
131
  await (0, _delay.delayAsync)(100);
@@ -142,11 +137,11 @@ class ExternalModule {
142
137
  if (answer) {
143
138
  _log.log(`Installing ${packageName}...`);
144
139
  // Always use npm for global installs
145
- const packageManager = shouldGloballyInstall ? new (_packagemanager()).NpmPackageManager({
140
+ const packageManager = shouldGloballyInstall ? new (_packageManager()).NpmPackageManager({
146
141
  cwd: this.projectRoot,
147
142
  log: _log.log,
148
143
  silent: !(_env.env.EXPO_DEBUG || _env.env.CI)
149
- }) : _packagemanager().createForProject(this.projectRoot, {
144
+ }) : _packageManager().createForProject(this.projectRoot, {
150
145
  silent: !(_env.env.EXPO_DEBUG || _env.env.CI)
151
146
  });
152
147
  try {
@@ -161,14 +156,14 @@ class ExternalModule {
161
156
  }
162
157
  _log.log(`Installed ${packageName}`);
163
158
  } catch (error) {
164
- error.message = `Failed to install ${packageName} ${shouldGloballyInstall ? 'globally' : 'locally'}: ${error.message}`;
159
+ error.message = `Failed to install ${packageName} ${shouldGloballyInstall ? "globally" : "locally"}: ${error.message}`;
165
160
  throw error;
166
161
  }
167
162
  return await this.resolveAsync({
168
163
  shouldPrompt: false
169
164
  });
170
165
  }
171
- throw new _errors.CommandError('EXTERNAL_MODULE_AVAILABILITY', `Please install ${packageName} and try again`);
166
+ throw new _errors.CommandError("EXTERNAL_MODULE_AVAILABILITY", `Please install ${packageName} and try again`);
172
167
  }
173
168
  /** Get the module. */ get() {
174
169
  try {
@@ -185,7 +180,7 @@ class ExternalModule {
185
180
  return require(moduleId);
186
181
  }
187
182
  /** Resolve a copy that's installed in the project. Exposed for testing. */ _resolveLocal(moduleId) {
188
- return (0, _resolvefrom().default)(this.projectRoot, moduleId);
183
+ return (0, _resolveFrom().default)(this.projectRoot, moduleId);
189
184
  }
190
185
  /** Resolve a copy that's installed globally. Exposed for testing. */ _resolveGlobal(moduleId) {
191
186
  return _requireg().default.resolve(moduleId);
@@ -200,7 +195,7 @@ class ExternalModule {
200
195
  const modulePath = resolver(this.pkg.name);
201
196
  const requiredModule = this._require(modulePath);
202
197
  if (requiredModule == null) {
203
- throw new _errors.CommandError('EXTERNAL_MODULE_EXPORT', `${this.pkg.name} exports a nullish value, which is not allowed.`);
198
+ throw new _errors.CommandError("EXTERNAL_MODULE_EXPORT", `${this.pkg.name} exports a nullish value, which is not allowed.`);
204
199
  }
205
200
  return requiredModule;
206
201
  }
@@ -209,8 +204,8 @@ class ExternalModule {
209
204
  } catch (error) {
210
205
  if (error instanceof _errors.CommandError) {
211
206
  throw error;
212
- } else if (error.code !== 'MODULE_NOT_FOUND') {
213
- debug('Failed to resolve module', error.message);
207
+ } else if (error.code !== "MODULE_NOT_FOUND") {
208
+ debug("Failed to resolve module", error.message);
214
209
  }
215
210
  }
216
211
  return null;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/start/doctor/ngrok/ExternalModule.ts"],"sourcesContent":["import * as PackageManager from '@expo/package-manager';\nimport requireGlobal from 'requireg';\nimport resolveFrom from 'resolve-from';\nimport semver from 'semver';\n\nimport * as Log from '../../../log';\nimport { delayAsync } from '../../../utils/delay';\nimport { env } from '../../../utils/env';\nimport { CommandError } from '../../../utils/errors';\nimport { confirmAsync } from '../../../utils/prompts';\n\nconst debug = require('debug')('expo:doctor:externalModule') as typeof console.log;\n\n/** An error that is thrown when a package is installed but doesn't meet the version criteria. */\nexport class ExternalModuleVersionError extends CommandError {\n constructor(\n message: string,\n public readonly shouldGloballyInstall: boolean\n ) {\n super('EXTERNAL_MODULE_VERSION', message);\n }\n}\n\ninterface PromptOptions {\n /** Should prompt the user to install, when false the module will just assert on missing packages, default `true`. Ignored when `autoInstall` is true. */\n shouldPrompt?: boolean;\n /** Should automatically install the package without prompting, default `false` */\n autoInstall?: boolean;\n}\n\nexport interface InstallPromptOptions extends PromptOptions {\n /** Should install the package globally, default `false` */\n shouldGloballyInstall?: boolean;\n}\n\nexport interface ResolvePromptOptions extends PromptOptions {\n /**\n * Prefer to install the package globally, this can be overridden if the function\n * detects that a locally installed package simply needs an upgrade, default `false`\n */\n prefersGlobalInstall?: boolean;\n}\n\n/** Resolves a local or globally installed package, prompts to install if missing. */\nexport class ExternalModule<TModule> {\n private instance: TModule | null = null;\n\n constructor(\n /** Project root for checking if the package is installed locally. */\n private projectRoot: string,\n /** Info on the external package. */\n private pkg: {\n /** NPM package name. */\n name: string;\n /** Required semver range, ex: `^1.0.0`. */\n versionRange: string;\n },\n /** A function used to create the installation prompt message. */\n private promptMessage: (pkgName: string) => string\n ) {}\n\n /** Resolve the globally or locally installed instance, or prompt to install. */\n async resolveAsync({\n prefersGlobalInstall,\n ...options\n }: ResolvePromptOptions = {}): Promise<TModule> {\n try {\n return (\n this.getVersioned() ??\n this.installAsync({\n ...options,\n shouldGloballyInstall: prefersGlobalInstall,\n })\n );\n } catch (error: any) {\n if (error instanceof ExternalModuleVersionError) {\n // If the module version in not compliant with the version range,\n // we should prompt the user to install the package where it already exists.\n return this.installAsync({\n ...options,\n shouldGloballyInstall: error.shouldGloballyInstall ?? prefersGlobalInstall,\n });\n }\n throw error;\n }\n }\n\n /** Prompt the user to install the package and try again. */\n async installAsync({\n shouldPrompt = true,\n autoInstall,\n shouldGloballyInstall,\n }: InstallPromptOptions = {}): Promise<TModule> {\n const packageName = [this.pkg.name, this.pkg.versionRange].join('@');\n if (!autoInstall) {\n // Delay the prompt so it doesn't conflict with other dev tool logs\n await delayAsync(100);\n }\n const answer =\n autoInstall ||\n (shouldPrompt &&\n (await confirmAsync({\n message: this.promptMessage(packageName),\n initial: true,\n })));\n if (answer) {\n Log.log(`Installing ${packageName}...`);\n\n // Always use npm for global installs\n const packageManager = shouldGloballyInstall\n ? new PackageManager.NpmPackageManager({\n cwd: this.projectRoot,\n log: Log.log,\n silent: !(env.EXPO_DEBUG || env.CI),\n })\n : PackageManager.createForProject(this.projectRoot, {\n silent: !(env.EXPO_DEBUG || env.CI),\n });\n\n try {\n if (shouldGloballyInstall) {\n await packageManager.addGlobalAsync([packageName]);\n } else {\n await packageManager.addDevAsync([packageName]);\n }\n Log.log(`Installed ${packageName}`);\n } catch (error: any) {\n error.message = `Failed to install ${packageName} ${\n shouldGloballyInstall ? 'globally' : 'locally'\n }: ${error.message}`;\n throw error;\n }\n return await this.resolveAsync({ shouldPrompt: false });\n }\n\n throw new CommandError(\n 'EXTERNAL_MODULE_AVAILABILITY',\n `Please install ${packageName} and try again`\n );\n }\n\n /** Get the module. */\n get(): TModule | null {\n try {\n return this.getVersioned();\n } catch {\n return null;\n }\n }\n\n /** Get the module, throws if the module is not versioned correctly. */\n getVersioned(): TModule | null {\n this.instance ??= this._resolveModule(true) ?? this._resolveModule(false);\n return this.instance;\n }\n\n /** Exposed for testing. */\n _require(moduleId: string): any {\n return require(moduleId);\n }\n\n /** Resolve a copy that's installed in the project. Exposed for testing. */\n _resolveLocal(moduleId: string): string {\n return resolveFrom(this.projectRoot, moduleId);\n }\n\n /** Resolve a copy that's installed globally. Exposed for testing. */\n _resolveGlobal(moduleId: string): string {\n return requireGlobal.resolve(moduleId);\n }\n\n /** Resolve the module and verify the version. Exposed for testing. */\n _resolveModule(isLocal: boolean): TModule | null {\n const resolver = isLocal ? this._resolveLocal.bind(this) : this._resolveGlobal.bind(this);\n try {\n const packageJsonPath = resolver(`${this.pkg.name}/package.json`);\n const packageJson = this._require(packageJsonPath);\n if (packageJson) {\n if (semver.satisfies(packageJson.version, this.pkg.versionRange)) {\n const modulePath = resolver(this.pkg.name);\n const requiredModule = this._require(modulePath);\n if (requiredModule == null) {\n throw new CommandError(\n 'EXTERNAL_MODULE_EXPORT',\n `${this.pkg.name} exports a nullish value, which is not allowed.`\n );\n }\n return requiredModule;\n }\n throw new ExternalModuleVersionError(\n `Required module '${this.pkg.name}@${packageJson.version}' does not satisfy ${this.pkg.versionRange}. Installed at: ${packageJsonPath}`,\n !isLocal\n );\n }\n } catch (error: any) {\n if (error instanceof CommandError) {\n throw error;\n } else if (error.code !== 'MODULE_NOT_FOUND') {\n debug('Failed to resolve module', error.message);\n }\n }\n return null;\n }\n}\n"],"names":["ExternalModule","ExternalModuleVersionError","debug","require","CommandError","constructor","message","shouldGloballyInstall","projectRoot","pkg","promptMessage","instance","resolveAsync","prefersGlobalInstall","options","getVersioned","installAsync","error","shouldPrompt","autoInstall","packageName","name","versionRange","join","delayAsync","answer","confirmAsync","initial","Log","log","packageManager","PackageManager","NpmPackageManager","cwd","silent","env","EXPO_DEBUG","CI","createForProject","addGlobalAsync","addDevAsync","get","_resolveModule","_require","moduleId","_resolveLocal","resolveFrom","_resolveGlobal","requireGlobal","resolve","isLocal","resolver","bind","packageJsonPath","packageJson","semver","satisfies","version","modulePath","requiredModule","code"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../src/start/doctor/ngrok/ExternalModule.ts"],"sourcesContent":["import * as PackageManager from '@expo/package-manager';\nimport requireGlobal from 'requireg';\nimport resolveFrom from 'resolve-from';\nimport semver from 'semver';\n\nimport * as Log from '../../../log';\nimport { delayAsync } from '../../../utils/delay';\nimport { env } from '../../../utils/env';\nimport { CommandError } from '../../../utils/errors';\nimport { confirmAsync } from '../../../utils/prompts';\n\nconst debug = require('debug')('expo:doctor:externalModule') as typeof console.log;\n\n/** An error that is thrown when a package is installed but doesn't meet the version criteria. */\nexport class ExternalModuleVersionError extends CommandError {\n constructor(\n message: string,\n public readonly shouldGloballyInstall: boolean\n ) {\n super('EXTERNAL_MODULE_VERSION', message);\n }\n}\n\ninterface PromptOptions {\n /** Should prompt the user to install, when false the module will just assert on missing packages, default `true`. Ignored when `autoInstall` is true. */\n shouldPrompt?: boolean;\n /** Should automatically install the package without prompting, default `false` */\n autoInstall?: boolean;\n}\n\nexport interface InstallPromptOptions extends PromptOptions {\n /** Should install the package globally, default `false` */\n shouldGloballyInstall?: boolean;\n}\n\nexport interface ResolvePromptOptions extends PromptOptions {\n /**\n * Prefer to install the package globally, this can be overridden if the function\n * detects that a locally installed package simply needs an upgrade, default `false`\n */\n prefersGlobalInstall?: boolean;\n}\n\n/** Resolves a local or globally installed package, prompts to install if missing. */\nexport class ExternalModule<TModule> {\n private instance: TModule | null = null;\n\n constructor(\n /** Project root for checking if the package is installed locally. */\n private projectRoot: string,\n /** Info on the external package. */\n private pkg: {\n /** NPM package name. */\n name: string;\n /** Required semver range, ex: `^1.0.0`. */\n versionRange: string;\n },\n /** A function used to create the installation prompt message. */\n private promptMessage: (pkgName: string) => string\n ) {}\n\n /** Resolve the globally or locally installed instance, or prompt to install. */\n async resolveAsync({\n prefersGlobalInstall,\n ...options\n }: ResolvePromptOptions = {}): Promise<TModule> {\n try {\n return (\n this.getVersioned() ??\n this.installAsync({\n ...options,\n shouldGloballyInstall: prefersGlobalInstall,\n })\n );\n } catch (error: any) {\n if (error instanceof ExternalModuleVersionError) {\n // If the module version in not compliant with the version range,\n // we should prompt the user to install the package where it already exists.\n return this.installAsync({\n ...options,\n shouldGloballyInstall: error.shouldGloballyInstall ?? prefersGlobalInstall,\n });\n }\n throw error;\n }\n }\n\n /** Prompt the user to install the package and try again. */\n async installAsync({\n shouldPrompt = true,\n autoInstall,\n shouldGloballyInstall,\n }: InstallPromptOptions = {}): Promise<TModule> {\n const packageName = [this.pkg.name, this.pkg.versionRange].join('@');\n if (!autoInstall) {\n // Delay the prompt so it doesn't conflict with other dev tool logs\n await delayAsync(100);\n }\n const answer =\n autoInstall ||\n (shouldPrompt &&\n (await confirmAsync({\n message: this.promptMessage(packageName),\n initial: true,\n })));\n if (answer) {\n Log.log(`Installing ${packageName}...`);\n\n // Always use npm for global installs\n const packageManager = shouldGloballyInstall\n ? new PackageManager.NpmPackageManager({\n cwd: this.projectRoot,\n log: Log.log,\n silent: !(env.EXPO_DEBUG || env.CI),\n })\n : PackageManager.createForProject(this.projectRoot, {\n silent: !(env.EXPO_DEBUG || env.CI),\n });\n\n try {\n if (shouldGloballyInstall) {\n await packageManager.addGlobalAsync([packageName]);\n } else {\n await packageManager.addDevAsync([packageName]);\n }\n Log.log(`Installed ${packageName}`);\n } catch (error: any) {\n error.message = `Failed to install ${packageName} ${\n shouldGloballyInstall ? 'globally' : 'locally'\n }: ${error.message}`;\n throw error;\n }\n return await this.resolveAsync({ shouldPrompt: false });\n }\n\n throw new CommandError(\n 'EXTERNAL_MODULE_AVAILABILITY',\n `Please install ${packageName} and try again`\n );\n }\n\n /** Get the module. */\n get(): TModule | null {\n try {\n return this.getVersioned();\n } catch {\n return null;\n }\n }\n\n /** Get the module, throws if the module is not versioned correctly. */\n getVersioned(): TModule | null {\n this.instance ??= this._resolveModule(true) ?? this._resolveModule(false);\n return this.instance;\n }\n\n /** Exposed for testing. */\n _require(moduleId: string): any {\n return require(moduleId);\n }\n\n /** Resolve a copy that's installed in the project. Exposed for testing. */\n _resolveLocal(moduleId: string): string {\n return resolveFrom(this.projectRoot, moduleId);\n }\n\n /** Resolve a copy that's installed globally. Exposed for testing. */\n _resolveGlobal(moduleId: string): string {\n return requireGlobal.resolve(moduleId);\n }\n\n /** Resolve the module and verify the version. Exposed for testing. */\n _resolveModule(isLocal: boolean): TModule | null {\n const resolver = isLocal ? this._resolveLocal.bind(this) : this._resolveGlobal.bind(this);\n try {\n const packageJsonPath = resolver(`${this.pkg.name}/package.json`);\n const packageJson = this._require(packageJsonPath);\n if (packageJson) {\n if (semver.satisfies(packageJson.version, this.pkg.versionRange)) {\n const modulePath = resolver(this.pkg.name);\n const requiredModule = this._require(modulePath);\n if (requiredModule == null) {\n throw new CommandError(\n 'EXTERNAL_MODULE_EXPORT',\n `${this.pkg.name} exports a nullish value, which is not allowed.`\n );\n }\n return requiredModule;\n }\n throw new ExternalModuleVersionError(\n `Required module '${this.pkg.name}@${packageJson.version}' does not satisfy ${this.pkg.versionRange}. Installed at: ${packageJsonPath}`,\n !isLocal\n );\n }\n } catch (error: any) {\n if (error instanceof CommandError) {\n throw error;\n } else if (error.code !== 'MODULE_NOT_FOUND') {\n debug('Failed to resolve module', error.message);\n }\n }\n return null;\n }\n}\n"],"names":["ExternalModuleVersionError","ExternalModule","debug","require","CommandError","constructor","message","shouldGloballyInstall","projectRoot","pkg","promptMessage","instance","resolveAsync","prefersGlobalInstall","options","getVersioned","installAsync","error","shouldPrompt","autoInstall","packageName","name","versionRange","join","delayAsync","answer","confirmAsync","initial","Log","log","packageManager","PackageManager","NpmPackageManager","cwd","silent","env","EXPO_DEBUG","CI","createForProject","addGlobalAsync","addDevAsync","get","_resolveModule","_require","moduleId","_resolveLocal","resolveFrom","_resolveGlobal","requireGlobal","resolve","isLocal","resolver","bind","packageJsonPath","packageJson","semver","satisfies","version","modulePath","requiredModule","code"],"mappings":"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"}
@@ -9,25 +9,21 @@ function _export(target, all) {
9
9
  });
10
10
  }
11
11
  _export(exports, {
12
- NgrokResolver: function() {
13
- return NgrokResolver;
14
- },
15
- isNgrokClientError: function() {
16
- return isNgrokClientError;
17
- }
12
+ NgrokResolver: ()=>NgrokResolver,
13
+ isNgrokClientError: ()=>isNgrokClientError
18
14
  });
19
- const _ExternalModule = require("./ExternalModule");
20
- class NgrokResolver extends _ExternalModule.ExternalModule {
15
+ const _externalModule = require("./ExternalModule");
16
+ class NgrokResolver extends _externalModule.ExternalModule {
21
17
  constructor(projectRoot){
22
18
  super(projectRoot, {
23
- name: '@expo/ngrok',
24
- versionRange: '^4.1.0'
19
+ name: "@expo/ngrok",
20
+ versionRange: "^4.1.0"
25
21
  }, (packageName)=>`The package ${packageName} is required to use tunnels, would you like to install it globally?`);
26
22
  }
27
23
  }
28
24
  function isNgrokClientError(error) {
29
- var _error_body;
30
- return error == null ? void 0 : (_error_body = error.body) == null ? void 0 : _error_body.msg;
25
+ var ref;
26
+ return error == null ? void 0 : (ref = error.body) == null ? void 0 : ref.msg;
31
27
  }
32
28
 
33
29
  //# sourceMappingURL=NgrokResolver.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/start/doctor/ngrok/NgrokResolver.ts"],"sourcesContent":["import { ExternalModule } from './ExternalModule';\n\nexport interface NgrokClientError {\n body: {\n error_code: number;\n status_code: number;\n msg: string;\n details: {\n err: string;\n };\n };\n}\n\nexport interface NgrokOptions {\n authtoken?: string;\n port?: string | number | null;\n host?: string;\n httpauth?: string;\n region?: string;\n configPath?: string;\n\n proto?: 'http' | 'tcp' | 'tls';\n addr?: string;\n inspect?: boolean;\n auth?: string;\n host_header?: string;\n bind_tls?: true | false | 'both';\n subdomain?: string;\n hostname?: string;\n crt?: string;\n key?: string;\n client_cas?: string;\n remote_addr?: string;\n}\n\nexport interface NgrokInstance {\n getActiveProcess(): { pid: number };\n connect(\n props: {\n hostname?: string;\n configPath: string;\n onStatusChange: (status: string) => void;\n } & NgrokOptions\n ): Promise<string>;\n kill(): Promise<void>;\n}\n\n/** Resolves the ngrok instance from local or globally installed package. */\nexport class NgrokResolver extends ExternalModule<NgrokInstance> {\n constructor(projectRoot: string) {\n super(\n projectRoot,\n {\n name: '@expo/ngrok',\n versionRange: '^4.1.0',\n },\n (packageName) =>\n `The package ${packageName} is required to use tunnels, would you like to install it globally?`\n );\n }\n}\n\nexport function isNgrokClientError(error: any): error is NgrokClientError {\n return error?.body?.msg;\n}\n"],"names":["NgrokResolver","isNgrokClientError","ExternalModule","constructor","projectRoot","name","versionRange","packageName","error","body","msg"],"mappings":";;;;;;;;;;;IAgDaA,aAAa;eAAbA;;IAcGC,kBAAkB;eAAlBA;;;gCA9De;AAgDxB,MAAMD,sBAAsBE,8BAAc;IAC/CC,YAAYC,WAAmB,CAAE;QAC/B,KAAK,CACHA,aACA;YACEC,MAAM;YACNC,cAAc;QAChB,GACA,CAACC,cACC,CAAC,YAAY,EAAEA,YAAY,mEAAmE,CAAC;IAErG;AACF;AAEO,SAASN,mBAAmBO,KAAU;QACpCA;IAAP,OAAOA,0BAAAA,cAAAA,MAAOC,IAAI,qBAAXD,YAAaE,GAAG;AACzB"}
1
+ {"version":3,"sources":["../../../../../src/start/doctor/ngrok/NgrokResolver.ts"],"sourcesContent":["import { ExternalModule } from './ExternalModule';\n\nexport interface NgrokClientError {\n body: {\n error_code: number;\n status_code: number;\n msg: string;\n details: {\n err: string;\n };\n };\n}\n\nexport interface NgrokOptions {\n authtoken?: string;\n port?: string | number | null;\n host?: string;\n httpauth?: string;\n region?: string;\n configPath?: string;\n\n proto?: 'http' | 'tcp' | 'tls';\n addr?: string;\n inspect?: boolean;\n auth?: string;\n host_header?: string;\n bind_tls?: true | false | 'both';\n subdomain?: string;\n hostname?: string;\n crt?: string;\n key?: string;\n client_cas?: string;\n remote_addr?: string;\n}\n\nexport interface NgrokInstance {\n getActiveProcess(): { pid: number };\n connect(\n props: {\n hostname?: string;\n configPath: string;\n onStatusChange: (status: string) => void;\n } & NgrokOptions\n ): Promise<string>;\n kill(): Promise<void>;\n}\n\n/** Resolves the ngrok instance from local or globally installed package. */\nexport class NgrokResolver extends ExternalModule<NgrokInstance> {\n constructor(projectRoot: string) {\n super(\n projectRoot,\n {\n name: '@expo/ngrok',\n versionRange: '^4.1.0',\n },\n (packageName) =>\n `The package ${packageName} is required to use tunnels, would you like to install it globally?`\n );\n }\n}\n\nexport function isNgrokClientError(error: any): error is NgrokClientError {\n return error?.body?.msg;\n}\n"],"names":["NgrokResolver","isNgrokClientError","ExternalModule","constructor","projectRoot","name","versionRange","packageName","error","body","msg"],"mappings":"AAAA;;;;;;;;;;;IAgDaA,aAAa,MAAbA,aAAa;IAcVC,kBAAkB,MAAlBA,kBAAkB;;gCA9DH,kBAAkB;AAgD1C,MAAMD,aAAa,SAASE,eAAc,eAAA;IAC/CC,YAAYC,WAAmB,CAAE;QAC/B,KAAK,CACHA,WAAW,EACX;YACEC,IAAI,EAAE,aAAa;YACnBC,YAAY,EAAE,QAAQ;SACvB,EACD,CAACC,WAAW,GACV,CAAC,YAAY,EAAEA,WAAW,CAAC,mEAAmE,CAAC,CAClG,CAAC;IACJ;CACD;AAEM,SAASN,kBAAkB,CAACO,KAAU,EAA6B;QACjEA,GAAW;IAAlB,OAAOA,KAAK,QAAM,GAAXA,KAAAA,CAAW,GAAXA,CAAAA,GAAW,GAAXA,KAAK,CAAEC,IAAI,SAAA,GAAXD,KAAAA,CAAW,GAAXA,GAAW,CAAEE,GAAG,AAAL,CAAM;AAC1B,CAAC"}
@@ -4,33 +4,31 @@ Object.defineProperty(exports, "__esModule", {
4
4
  });
5
5
  Object.defineProperty(exports, "TypeScriptProjectPrerequisite", {
6
6
  enumerable: true,
7
- get: function() {
8
- return TypeScriptProjectPrerequisite;
9
- }
7
+ get: ()=>TypeScriptProjectPrerequisite
10
8
  });
11
9
  function _promises() {
12
- const data = /*#__PURE__*/ _interop_require_default(require("fs/promises"));
10
+ const data = /*#__PURE__*/ _interopRequireDefault(require("fs/promises"));
13
11
  _promises = function() {
14
12
  return data;
15
13
  };
16
14
  return data;
17
15
  }
18
16
  function _path() {
19
- const data = /*#__PURE__*/ _interop_require_default(require("path"));
17
+ const data = /*#__PURE__*/ _interopRequireDefault(require("path"));
20
18
  _path = function() {
21
19
  return data;
22
20
  };
23
21
  return data;
24
22
  }
25
23
  const _updateTSConfig = require("./updateTSConfig");
26
- const _log = /*#__PURE__*/ _interop_require_wildcard(require("../../../log"));
24
+ const _log = /*#__PURE__*/ _interopRequireWildcard(require("../../../log"));
27
25
  const _dir = require("../../../utils/dir");
28
26
  const _env = require("../../../utils/env");
29
27
  const _fn = require("../../../utils/fn");
30
28
  const _glob = require("../../../utils/glob");
31
- const _Prerequisite = require("../Prerequisite");
29
+ const _prerequisite = require("../Prerequisite");
32
30
  const _ensureDependenciesAsync = require("../dependencies/ensureDependenciesAsync");
33
- function _interop_require_default(obj) {
31
+ function _interopRequireDefault(obj) {
34
32
  return obj && obj.__esModule ? obj : {
35
33
  default: obj
36
34
  };
@@ -43,7 +41,7 @@ function _getRequireWildcardCache(nodeInterop) {
43
41
  return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
44
42
  })(nodeInterop);
45
43
  }
46
- function _interop_require_wildcard(obj, nodeInterop) {
44
+ function _interopRequireWildcard(obj, nodeInterop) {
47
45
  if (!nodeInterop && obj && obj.__esModule) {
48
46
  return obj;
49
47
  }
@@ -56,9 +54,7 @@ function _interop_require_wildcard(obj, nodeInterop) {
56
54
  if (cache && cache.has(obj)) {
57
55
  return cache.get(obj);
58
56
  }
59
- var newObj = {
60
- __proto__: null
61
- };
57
+ var newObj = {};
62
58
  var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
63
59
  for(var key in obj){
64
60
  if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
@@ -76,11 +72,11 @@ function _interop_require_wildcard(obj, nodeInterop) {
76
72
  }
77
73
  return newObj;
78
74
  }
79
- const debug = require('debug')('expo:doctor:typescriptSupport');
75
+ const debug = require("debug")("expo:doctor:typescriptSupport");
80
76
  const warnDisabled = (0, _fn.memoize)(()=>{
81
- _log.warn('Skipping TypeScript setup: EXPO_NO_TYPESCRIPT_SETUP is enabled.');
77
+ _log.warn("Skipping TypeScript setup: EXPO_NO_TYPESCRIPT_SETUP is enabled.");
82
78
  });
83
- class TypeScriptProjectPrerequisite extends _Prerequisite.ProjectPrerequisite {
79
+ class TypeScriptProjectPrerequisite extends _prerequisite.ProjectPrerequisite {
84
80
  /**
85
81
  * Ensure a project that hasn't explicitly disabled typescript support has all the required packages for running in the browser.
86
82
  *
@@ -90,8 +86,8 @@ class TypeScriptProjectPrerequisite extends _Prerequisite.ProjectPrerequisite {
90
86
  warnDisabled();
91
87
  return true;
92
88
  }
93
- debug('Ensuring TypeScript support is setup');
94
- const tsConfigPath = _path().default.join(this.projectRoot, 'tsconfig.json');
89
+ debug("Ensuring TypeScript support is setup");
90
+ const tsConfigPath = _path().default.join(this.projectRoot, "tsconfig.json");
95
91
  // Ensure the project is TypeScript before continuing.
96
92
  const intent = await this._getSetupRequirements();
97
93
  if (!intent) {
@@ -115,7 +111,7 @@ class TypeScriptProjectPrerequisite extends _Prerequisite.ProjectPrerequisite {
115
111
  skipPrompt: true,
116
112
  isProjectMutable: true
117
113
  });
118
- const tsConfigPath = _path().default.join(this.projectRoot, 'tsconfig.json');
114
+ const tsConfigPath = _path().default.join(this.projectRoot, "tsconfig.json");
119
115
  // Update the config
120
116
  await (0, _updateTSConfig.updateTSConfigAsync)({
121
117
  tsConfigPath
@@ -126,10 +122,10 @@ class TypeScriptProjectPrerequisite extends _Prerequisite.ProjectPrerequisite {
126
122
  // Enable TS setup if the project has a `tsconfig.json`
127
123
  if (tsConfigPath) {
128
124
  const content = await _promises().default.readFile(tsConfigPath, {
129
- encoding: 'utf8'
125
+ encoding: "utf8"
130
126
  }).then((txt)=>txt.trim(), // null when the file doesn't exist.
131
127
  ()=>null);
132
- const isBlankConfig = content === '' || content === '{}';
128
+ const isBlankConfig = content === "" || content === "{}";
133
129
  return {
134
130
  isBootstrapping: isBlankConfig
135
131
  };
@@ -144,7 +140,7 @@ class TypeScriptProjectPrerequisite extends _Prerequisite.ProjectPrerequisite {
144
140
  }
145
141
  return null;
146
142
  }
147
- /** Exposed for testing. */ async _ensureDependenciesInstalledAsync({ exp, skipPrompt, isProjectMutable } = {}) {
143
+ /** Exposed for testing. */ async _ensureDependenciesInstalledAsync({ exp , skipPrompt , isProjectMutable } = {}) {
148
144
  try {
149
145
  return await (0, _ensureDependenciesAsync.ensureDependenciesAsync)(this.projectRoot, {
150
146
  exp,
@@ -156,15 +152,15 @@ class TypeScriptProjectPrerequisite extends _Prerequisite.ProjectPrerequisite {
156
152
  // use typescript/package.json to skip node module cache issues when the user installs
157
153
  // the package and attempts to resolve the module in the same process.
158
154
  {
159
- file: 'typescript/package.json',
160
- pkg: 'typescript',
155
+ file: "typescript/package.json",
156
+ pkg: "typescript",
161
157
  dev: true
162
158
  },
163
159
  {
164
- file: '@types/react/package.json',
165
- pkg: '@types/react',
160
+ file: "@types/react/package.json",
161
+ pkg: "@types/react",
166
162
  dev: true
167
- }
163
+ },
168
164
  ]
169
165
  });
170
166
  } catch (error) {
@@ -176,25 +172,25 @@ class TypeScriptProjectPrerequisite extends _Prerequisite.ProjectPrerequisite {
176
172
  /** Return the first TypeScript file in the project. */ async _queryFirstTypeScriptFileAsync() {
177
173
  try {
178
174
  // TODO(Bacon): Use `everyMatch` since a bug causes `anyMatch` to return inaccurate results when used multiple times.
179
- const results = await (0, _glob.everyMatchAsync)('**/*.@(ts|tsx)', {
175
+ const results = await (0, _glob.everyMatchAsync)("**/*.@(ts|tsx)", {
180
176
  cwd: this.projectRoot,
181
177
  signal: AbortSignal.timeout(5000),
182
178
  ignore: [
183
- '**/@(Carthage|Pods|node_modules)/**',
184
- '**/*.d.ts',
185
- '@(ios|android|web|web-build|dist)/**'
179
+ "**/@(Carthage|Pods|node_modules)/**",
180
+ "**/*.d.ts",
181
+ "@(ios|android|web|web-build|dist)/**",
186
182
  ]
187
183
  });
188
184
  return results[0] ?? null;
189
185
  } catch (error) {
190
- if (error.name === 'TimeoutError') {
186
+ if (error.name === "TimeoutError") {
191
187
  return null;
192
188
  }
193
189
  throw error;
194
190
  }
195
191
  }
196
192
  async _hasTSConfig() {
197
- const tsConfigPath = _path().default.join(this.projectRoot, 'tsconfig.json');
193
+ const tsConfigPath = _path().default.join(this.projectRoot, "tsconfig.json");
198
194
  if (await (0, _dir.fileExistsAsync)(tsConfigPath)) {
199
195
  return tsConfigPath;
200
196
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/start/doctor/typescript/TypeScriptProjectPrerequisite.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config';\nimport fs from 'fs/promises';\nimport path from 'path';\n\nimport { updateTSConfigAsync } from './updateTSConfig';\nimport * as Log from '../../../log';\nimport { fileExistsAsync } from '../../../utils/dir';\nimport { env } from '../../../utils/env';\nimport { memoize } from '../../../utils/fn';\nimport { everyMatchAsync } from '../../../utils/glob';\nimport { ProjectPrerequisite } from '../Prerequisite';\nimport { ensureDependenciesAsync } from '../dependencies/ensureDependenciesAsync';\n\nconst debug = require('debug')('expo:doctor:typescriptSupport') as typeof console.log;\n\nconst warnDisabled = memoize(() => {\n Log.warn('Skipping TypeScript setup: EXPO_NO_TYPESCRIPT_SETUP is enabled.');\n});\n\n/** Ensure the project has the required TypeScript support settings. */\nexport class TypeScriptProjectPrerequisite extends ProjectPrerequisite<boolean> {\n /**\n * Ensure a project that hasn't explicitly disabled typescript support has all the required packages for running in the browser.\n *\n * @returns `true` if the setup finished and no longer needs to be run again.\n */\n async assertImplementation(): Promise<boolean> {\n if (env.EXPO_NO_TYPESCRIPT_SETUP) {\n warnDisabled();\n return true;\n }\n debug('Ensuring TypeScript support is setup');\n\n const tsConfigPath = path.join(this.projectRoot, 'tsconfig.json');\n\n // Ensure the project is TypeScript before continuing.\n const intent = await this._getSetupRequirements();\n if (!intent) {\n return false;\n }\n\n // Ensure TypeScript packages are installed\n await this._ensureDependenciesInstalledAsync();\n\n // Update the config\n await updateTSConfigAsync({ tsConfigPath });\n\n return true;\n }\n\n async bootstrapAsync(): Promise<void> {\n if (env.EXPO_NO_TYPESCRIPT_SETUP) {\n warnDisabled();\n return;\n }\n // Ensure TypeScript packages are installed\n await this._ensureDependenciesInstalledAsync({\n skipPrompt: true,\n isProjectMutable: true,\n });\n\n const tsConfigPath = path.join(this.projectRoot, 'tsconfig.json');\n\n // Update the config\n await updateTSConfigAsync({ tsConfigPath });\n }\n\n /** Exposed for testing. */\n async _getSetupRequirements(): Promise<{\n /** Indicates that TypeScript support is being bootstrapped. */\n isBootstrapping: boolean;\n } | null> {\n const tsConfigPath = await this._hasTSConfig();\n\n // Enable TS setup if the project has a `tsconfig.json`\n if (tsConfigPath) {\n const content = await fs.readFile(tsConfigPath, { encoding: 'utf8' }).then(\n (txt) => txt.trim(),\n // null when the file doesn't exist.\n () => null\n );\n const isBlankConfig = content === '' || content === '{}';\n return { isBootstrapping: isBlankConfig };\n }\n // This is a somewhat heavy check in larger projects.\n // Test that this is reasonably paced by running expo start in `expo/apps/native-component-list`\n const typescriptFile = await this._queryFirstTypeScriptFileAsync();\n if (typescriptFile) {\n return { isBootstrapping: true };\n }\n\n return null;\n }\n\n /** Exposed for testing. */\n async _ensureDependenciesInstalledAsync({\n exp,\n skipPrompt,\n isProjectMutable,\n }: {\n exp?: ExpoConfig;\n skipPrompt?: boolean;\n isProjectMutable?: boolean;\n } = {}): Promise<boolean> {\n try {\n return await ensureDependenciesAsync(this.projectRoot, {\n exp,\n skipPrompt,\n isProjectMutable,\n installMessage: `It looks like you're trying to use TypeScript but don't have the required dependencies installed.`,\n warningMessage:\n \"If you're not using TypeScript, please remove the TypeScript files from your project\",\n requiredPackages: [\n // use typescript/package.json to skip node module cache issues when the user installs\n // the package and attempts to resolve the module in the same process.\n { file: 'typescript/package.json', pkg: 'typescript', dev: true },\n { file: '@types/react/package.json', pkg: '@types/react', dev: true },\n ],\n });\n } catch (error) {\n // Reset the cached check so we can re-run the check if the user re-runs the command by pressing 'w' in the Terminal UI.\n this.resetAssertion();\n throw error;\n }\n }\n\n /** Return the first TypeScript file in the project. */\n async _queryFirstTypeScriptFileAsync(): Promise<null | string> {\n try {\n // TODO(Bacon): Use `everyMatch` since a bug causes `anyMatch` to return inaccurate results when used multiple times.\n const results = await everyMatchAsync('**/*.@(ts|tsx)', {\n cwd: this.projectRoot,\n signal: AbortSignal.timeout(5000),\n ignore: [\n '**/@(Carthage|Pods|node_modules)/**',\n '**/*.d.ts',\n '@(ios|android|web|web-build|dist)/**',\n ],\n });\n\n return results[0] ?? null;\n } catch (error: any) {\n if (error.name === 'TimeoutError') {\n return null;\n }\n\n throw error;\n }\n }\n\n async _hasTSConfig(): Promise<string | null> {\n const tsConfigPath = path.join(this.projectRoot, 'tsconfig.json');\n if (await fileExistsAsync(tsConfigPath)) {\n return tsConfigPath;\n }\n return null;\n }\n}\n"],"names":["TypeScriptProjectPrerequisite","debug","require","warnDisabled","memoize","Log","warn","ProjectPrerequisite","assertImplementation","env","EXPO_NO_TYPESCRIPT_SETUP","tsConfigPath","path","join","projectRoot","intent","_getSetupRequirements","_ensureDependenciesInstalledAsync","updateTSConfigAsync","bootstrapAsync","skipPrompt","isProjectMutable","_hasTSConfig","content","fs","readFile","encoding","then","txt","trim","isBlankConfig","isBootstrapping","typescriptFile","_queryFirstTypeScriptFileAsync","exp","ensureDependenciesAsync","installMessage","warningMessage","requiredPackages","file","pkg","dev","error","resetAssertion","results","everyMatchAsync","cwd","signal","AbortSignal","timeout","ignore","name","fileExistsAsync"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../src/start/doctor/typescript/TypeScriptProjectPrerequisite.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config';\nimport fs from 'fs/promises';\nimport path from 'path';\n\nimport { updateTSConfigAsync } from './updateTSConfig';\nimport * as Log from '../../../log';\nimport { fileExistsAsync } from '../../../utils/dir';\nimport { env } from '../../../utils/env';\nimport { memoize } from '../../../utils/fn';\nimport { everyMatchAsync } from '../../../utils/glob';\nimport { ProjectPrerequisite } from '../Prerequisite';\nimport { ensureDependenciesAsync } from '../dependencies/ensureDependenciesAsync';\n\nconst debug = require('debug')('expo:doctor:typescriptSupport') as typeof console.log;\n\nconst warnDisabled = memoize(() => {\n Log.warn('Skipping TypeScript setup: EXPO_NO_TYPESCRIPT_SETUP is enabled.');\n});\n\n/** Ensure the project has the required TypeScript support settings. */\nexport class TypeScriptProjectPrerequisite extends ProjectPrerequisite<boolean> {\n /**\n * Ensure a project that hasn't explicitly disabled typescript support has all the required packages for running in the browser.\n *\n * @returns `true` if the setup finished and no longer needs to be run again.\n */\n async assertImplementation(): Promise<boolean> {\n if (env.EXPO_NO_TYPESCRIPT_SETUP) {\n warnDisabled();\n return true;\n }\n debug('Ensuring TypeScript support is setup');\n\n const tsConfigPath = path.join(this.projectRoot, 'tsconfig.json');\n\n // Ensure the project is TypeScript before continuing.\n const intent = await this._getSetupRequirements();\n if (!intent) {\n return false;\n }\n\n // Ensure TypeScript packages are installed\n await this._ensureDependenciesInstalledAsync();\n\n // Update the config\n await updateTSConfigAsync({ tsConfigPath });\n\n return true;\n }\n\n async bootstrapAsync(): Promise<void> {\n if (env.EXPO_NO_TYPESCRIPT_SETUP) {\n warnDisabled();\n return;\n }\n // Ensure TypeScript packages are installed\n await this._ensureDependenciesInstalledAsync({\n skipPrompt: true,\n isProjectMutable: true,\n });\n\n const tsConfigPath = path.join(this.projectRoot, 'tsconfig.json');\n\n // Update the config\n await updateTSConfigAsync({ tsConfigPath });\n }\n\n /** Exposed for testing. */\n async _getSetupRequirements(): Promise<{\n /** Indicates that TypeScript support is being bootstrapped. */\n isBootstrapping: boolean;\n } | null> {\n const tsConfigPath = await this._hasTSConfig();\n\n // Enable TS setup if the project has a `tsconfig.json`\n if (tsConfigPath) {\n const content = await fs.readFile(tsConfigPath, { encoding: 'utf8' }).then(\n (txt) => txt.trim(),\n // null when the file doesn't exist.\n () => null\n );\n const isBlankConfig = content === '' || content === '{}';\n return { isBootstrapping: isBlankConfig };\n }\n // This is a somewhat heavy check in larger projects.\n // Test that this is reasonably paced by running expo start in `expo/apps/native-component-list`\n const typescriptFile = await this._queryFirstTypeScriptFileAsync();\n if (typescriptFile) {\n return { isBootstrapping: true };\n }\n\n return null;\n }\n\n /** Exposed for testing. */\n async _ensureDependenciesInstalledAsync({\n exp,\n skipPrompt,\n isProjectMutable,\n }: {\n exp?: ExpoConfig;\n skipPrompt?: boolean;\n isProjectMutable?: boolean;\n } = {}): Promise<boolean> {\n try {\n return await ensureDependenciesAsync(this.projectRoot, {\n exp,\n skipPrompt,\n isProjectMutable,\n installMessage: `It looks like you're trying to use TypeScript but don't have the required dependencies installed.`,\n warningMessage:\n \"If you're not using TypeScript, please remove the TypeScript files from your project\",\n requiredPackages: [\n // use typescript/package.json to skip node module cache issues when the user installs\n // the package and attempts to resolve the module in the same process.\n { file: 'typescript/package.json', pkg: 'typescript', dev: true },\n { file: '@types/react/package.json', pkg: '@types/react', dev: true },\n ],\n });\n } catch (error) {\n // Reset the cached check so we can re-run the check if the user re-runs the command by pressing 'w' in the Terminal UI.\n this.resetAssertion();\n throw error;\n }\n }\n\n /** Return the first TypeScript file in the project. */\n async _queryFirstTypeScriptFileAsync(): Promise<null | string> {\n try {\n // TODO(Bacon): Use `everyMatch` since a bug causes `anyMatch` to return inaccurate results when used multiple times.\n const results = await everyMatchAsync('**/*.@(ts|tsx)', {\n cwd: this.projectRoot,\n signal: AbortSignal.timeout(5000),\n ignore: [\n '**/@(Carthage|Pods|node_modules)/**',\n '**/*.d.ts',\n '@(ios|android|web|web-build|dist)/**',\n ],\n });\n\n return results[0] ?? null;\n } catch (error: any) {\n if (error.name === 'TimeoutError') {\n return null;\n }\n\n throw error;\n }\n }\n\n async _hasTSConfig(): Promise<string | null> {\n const tsConfigPath = path.join(this.projectRoot, 'tsconfig.json');\n if (await fileExistsAsync(tsConfigPath)) {\n return tsConfigPath;\n }\n return null;\n }\n}\n"],"names":["TypeScriptProjectPrerequisite","debug","require","warnDisabled","memoize","Log","warn","ProjectPrerequisite","assertImplementation","env","EXPO_NO_TYPESCRIPT_SETUP","tsConfigPath","path","join","projectRoot","intent","_getSetupRequirements","_ensureDependenciesInstalledAsync","updateTSConfigAsync","bootstrapAsync","skipPrompt","isProjectMutable","_hasTSConfig","content","fs","readFile","encoding","then","txt","trim","isBlankConfig","isBootstrapping","typescriptFile","_queryFirstTypeScriptFileAsync","exp","ensureDependenciesAsync","installMessage","warningMessage","requiredPackages","file","pkg","dev","error","resetAssertion","results","everyMatchAsync","cwd","signal","AbortSignal","timeout","ignore","name","fileExistsAsync"],"mappings":"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"}