@expo/cli 0.0.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (388) hide show
  1. package/README.md +106 -0
  2. package/build/bin/cli +152 -0
  3. package/build/bin/cli.map +1 -0
  4. package/build/src/api/endpoint.js +17 -0
  5. package/build/src/api/endpoint.js.map +1 -0
  6. package/build/src/api/getExpoGoIntermediateCertificate.js +21 -0
  7. package/build/src/api/getExpoGoIntermediateCertificate.js.map +1 -0
  8. package/build/src/api/getExpoSchema.js +69 -0
  9. package/build/src/api/getExpoSchema.js.map +1 -0
  10. package/build/src/api/getNativeModuleVersions.js +31 -0
  11. package/build/src/api/getNativeModuleVersions.js.map +1 -0
  12. package/build/src/api/getProject.js +19 -0
  13. package/build/src/api/getProject.js.map +1 -0
  14. package/build/src/api/getProjectDevelopmentCertificate.js +24 -0
  15. package/build/src/api/getProjectDevelopmentCertificate.js.map +1 -0
  16. package/build/src/api/getVersions.js +37 -0
  17. package/build/src/api/getVersions.js.map +1 -0
  18. package/build/src/api/graphql/client.js +104 -0
  19. package/build/src/api/graphql/client.js.map +1 -0
  20. package/build/src/api/graphql/generated.js +113 -0
  21. package/build/src/api/graphql/generated.js.map +1 -0
  22. package/build/src/api/graphql/queries/UserQuery.js +43 -0
  23. package/build/src/api/graphql/queries/UserQuery.js.map +1 -0
  24. package/build/src/api/rest/cache/FileSystemCache.js +79 -0
  25. package/build/src/api/rest/cache/FileSystemCache.js.map +1 -0
  26. package/build/src/api/rest/cache/response.js +31 -0
  27. package/build/src/api/rest/cache/response.js.map +1 -0
  28. package/build/src/api/rest/cache/wrapFetchWithCache.js +156 -0
  29. package/build/src/api/rest/cache/wrapFetchWithCache.js.map +1 -0
  30. package/build/src/api/rest/client.js +94 -0
  31. package/build/src/api/rest/client.js.map +1 -0
  32. package/build/src/api/rest/client.types.js +6 -0
  33. package/build/src/api/rest/client.types.js.map +1 -0
  34. package/build/src/api/rest/wrapFetchWithBaseUrl.js +20 -0
  35. package/build/src/api/rest/wrapFetchWithBaseUrl.js.map +1 -0
  36. package/build/src/api/rest/wrapFetchWithOffline.js +39 -0
  37. package/build/src/api/rest/wrapFetchWithOffline.js.map +1 -0
  38. package/build/src/api/rest/wrapFetchWithProgress.js +59 -0
  39. package/build/src/api/rest/wrapFetchWithProgress.js.map +1 -0
  40. package/build/src/api/settings.js +11 -0
  41. package/build/src/api/settings.js.map +1 -0
  42. package/build/src/api/signManifest.js +38 -0
  43. package/build/src/api/signManifest.js.map +1 -0
  44. package/build/src/api/updateDevelopmentSession.js +74 -0
  45. package/build/src/api/updateDevelopmentSession.js.map +1 -0
  46. package/build/src/api/user/UserSettings.js +71 -0
  47. package/build/src/api/user/UserSettings.js.map +1 -0
  48. package/build/src/api/user/actions.js +97 -0
  49. package/build/src/api/user/actions.js.map +1 -0
  50. package/build/src/api/user/otp.js +139 -0
  51. package/build/src/api/user/otp.js.map +1 -0
  52. package/build/src/api/user/user.js +114 -0
  53. package/build/src/api/user/user.js.map +1 -0
  54. package/build/src/config/configAsync.js +118 -0
  55. package/build/src/config/configAsync.js.map +1 -0
  56. package/build/src/config/index.js +75 -0
  57. package/build/src/config/index.js.map +1 -0
  58. package/build/src/export/createBundles.js +62 -0
  59. package/build/src/export/createBundles.js.map +1 -0
  60. package/build/src/export/createMetadataJson.js +36 -0
  61. package/build/src/export/createMetadataJson.js.map +1 -0
  62. package/build/src/export/exportApp.js +102 -0
  63. package/build/src/export/exportApp.js.map +1 -0
  64. package/build/src/export/exportAssets.js +106 -0
  65. package/build/src/export/exportAssets.js.map +1 -0
  66. package/build/src/export/exportAsync.js +49 -0
  67. package/build/src/export/exportAsync.js.map +1 -0
  68. package/build/src/export/fork-bundleAsync.js +138 -0
  69. package/build/src/export/fork-bundleAsync.js.map +1 -0
  70. package/build/src/export/getPublicExpoManifest.js +28 -0
  71. package/build/src/export/getPublicExpoManifest.js.map +1 -0
  72. package/build/src/export/getResolvedLocales.js +35 -0
  73. package/build/src/export/getResolvedLocales.js.map +1 -0
  74. package/build/src/export/index.js +77 -0
  75. package/build/src/export/index.js.map +1 -0
  76. package/build/src/export/printBundleSizes.js +122 -0
  77. package/build/src/export/printBundleSizes.js.map +1 -0
  78. package/build/src/export/resolveOptions.js +24 -0
  79. package/build/src/export/resolveOptions.js.map +1 -0
  80. package/build/src/export/saveAssets.js +65 -0
  81. package/build/src/export/saveAssets.js.map +1 -0
  82. package/build/src/export/writeContents.js +108 -0
  83. package/build/src/export/writeContents.js.map +1 -0
  84. package/build/src/install/checkPackages.js +74 -0
  85. package/build/src/install/checkPackages.js.map +1 -0
  86. package/build/src/install/index.js +49 -0
  87. package/build/src/install/index.js.map +1 -0
  88. package/build/src/install/installAsync.js +103 -0
  89. package/build/src/install/installAsync.js.map +1 -0
  90. package/build/src/install/resolveOptions.js +99 -0
  91. package/build/src/install/resolveOptions.js.map +1 -0
  92. package/build/src/install/utils/autoAddConfigPlugins.js +87 -0
  93. package/build/src/install/utils/autoAddConfigPlugins.js.map +1 -0
  94. package/build/src/log.js +74 -0
  95. package/build/src/log.js.map +1 -0
  96. package/build/src/login/index.js +62 -0
  97. package/build/src/login/index.js.map +1 -0
  98. package/build/src/logout/index.js +48 -0
  99. package/build/src/logout/index.js.map +1 -0
  100. package/build/src/prebuild/clearNativeFolder.js +137 -0
  101. package/build/src/prebuild/clearNativeFolder.js.map +1 -0
  102. package/build/src/prebuild/configureProjectAsync.js +68 -0
  103. package/build/src/prebuild/configureProjectAsync.js.map +1 -0
  104. package/build/src/prebuild/copyTemplateFiles.js +124 -0
  105. package/build/src/prebuild/copyTemplateFiles.js.map +1 -0
  106. package/build/src/prebuild/ensureConfigAsync.js +86 -0
  107. package/build/src/prebuild/ensureConfigAsync.js.map +1 -0
  108. package/build/src/prebuild/index.js +90 -0
  109. package/build/src/prebuild/index.js.map +1 -0
  110. package/build/src/prebuild/prebuildAsync.js +112 -0
  111. package/build/src/prebuild/prebuildAsync.js.map +1 -0
  112. package/build/src/prebuild/resolveOptions.js +97 -0
  113. package/build/src/prebuild/resolveOptions.js.map +1 -0
  114. package/build/src/prebuild/resolveTemplate.js +157 -0
  115. package/build/src/prebuild/resolveTemplate.js.map +1 -0
  116. package/build/src/prebuild/updateFromTemplate.js +102 -0
  117. package/build/src/prebuild/updateFromTemplate.js.map +1 -0
  118. package/build/src/prebuild/updatePackageJson.js +236 -0
  119. package/build/src/prebuild/updatePackageJson.js.map +1 -0
  120. package/build/src/prebuild/writeMetroConfig.js +89 -0
  121. package/build/src/prebuild/writeMetroConfig.js.map +1 -0
  122. package/build/src/register/index.js +48 -0
  123. package/build/src/register/index.js.map +1 -0
  124. package/build/src/register/registerAsync.js +37 -0
  125. package/build/src/register/registerAsync.js.map +1 -0
  126. package/build/src/run/android/index.js +97 -0
  127. package/build/src/run/android/index.js.map +1 -0
  128. package/build/src/run/android/resolveDevice.js +23 -0
  129. package/build/src/run/android/resolveDevice.js.map +1 -0
  130. package/build/src/run/android/resolveGradleProps.js +37 -0
  131. package/build/src/run/android/resolveGradleProps.js.map +1 -0
  132. package/build/src/run/android/resolveInstallApkName.js +72 -0
  133. package/build/src/run/android/resolveInstallApkName.js.map +1 -0
  134. package/build/src/run/android/resolveLaunchProps.js +32 -0
  135. package/build/src/run/android/resolveLaunchProps.js.map +1 -0
  136. package/build/src/run/android/resolveOptions.js +25 -0
  137. package/build/src/run/android/resolveOptions.js.map +1 -0
  138. package/build/src/run/android/runAndroidAsync.js +74 -0
  139. package/build/src/run/android/runAndroidAsync.js.map +1 -0
  140. package/build/src/run/ensureNativeProject.js +33 -0
  141. package/build/src/run/ensureNativeProject.js.map +1 -0
  142. package/build/src/run/hints.js +22 -0
  143. package/build/src/run/hints.js.map +1 -0
  144. package/build/src/run/resolveBundlerProps.js +31 -0
  145. package/build/src/run/resolveBundlerProps.js.map +1 -0
  146. package/build/src/run/startBundler.js +76 -0
  147. package/build/src/run/startBundler.js.map +1 -0
  148. package/build/src/start/doctor/Prerequisite.js +47 -0
  149. package/build/src/start/doctor/Prerequisite.js.map +1 -0
  150. package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js +68 -0
  151. package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js.map +1 -0
  152. package/build/src/start/doctor/apple/XcodePrerequisite.js +115 -0
  153. package/build/src/start/doctor/apple/XcodePrerequisite.js.map +1 -0
  154. package/build/src/start/doctor/apple/XcrunPrerequisite.js +65 -0
  155. package/build/src/start/doctor/apple/XcrunPrerequisite.js.map +1 -0
  156. package/build/src/start/doctor/dependencies/bundledNativeModules.js +64 -0
  157. package/build/src/start/doctor/dependencies/bundledNativeModules.js.map +1 -0
  158. package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js +131 -0
  159. package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js.map +1 -0
  160. package/build/src/start/doctor/dependencies/getMissingPackages.js +95 -0
  161. package/build/src/start/doctor/dependencies/getMissingPackages.js.map +1 -0
  162. package/build/src/start/doctor/dependencies/getVersionedPackages.js +119 -0
  163. package/build/src/start/doctor/dependencies/getVersionedPackages.js.map +1 -0
  164. package/build/src/start/doctor/dependencies/validateDependenciesVersions.js +147 -0
  165. package/build/src/start/doctor/dependencies/validateDependenciesVersions.js.map +1 -0
  166. package/build/src/start/doctor/ngrok/ExternalModule.js +164 -0
  167. package/build/src/start/doctor/ngrok/ExternalModule.js.map +1 -0
  168. package/build/src/start/doctor/ngrok/NgrokResolver.js +17 -0
  169. package/build/src/start/doctor/ngrok/NgrokResolver.js.map +1 -0
  170. package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js +142 -0
  171. package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js.map +1 -0
  172. package/build/src/start/doctor/typescript/updateTSConfig.js +92 -0
  173. package/build/src/start/doctor/typescript/updateTSConfig.js.map +1 -0
  174. package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js +112 -0
  175. package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js.map +1 -0
  176. package/build/src/start/index.js +116 -0
  177. package/build/src/start/index.js.map +1 -0
  178. package/build/src/start/interface/KeyPressHandler.js +99 -0
  179. package/build/src/start/interface/KeyPressHandler.js.map +1 -0
  180. package/build/src/start/interface/commandsTable.js +175 -0
  181. package/build/src/start/interface/commandsTable.js.map +1 -0
  182. package/build/src/start/interface/interactiveActions.js +134 -0
  183. package/build/src/start/interface/interactiveActions.js.map +1 -0
  184. package/build/src/start/interface/startInterface.js +217 -0
  185. package/build/src/start/interface/startInterface.js.map +1 -0
  186. package/build/src/start/platforms/AppIdResolver.js +44 -0
  187. package/build/src/start/platforms/AppIdResolver.js.map +1 -0
  188. package/build/src/start/platforms/DeviceManager.js +43 -0
  189. package/build/src/start/platforms/DeviceManager.js.map +1 -0
  190. package/build/src/start/platforms/ExpoGoInstaller.js +111 -0
  191. package/build/src/start/platforms/ExpoGoInstaller.js.map +1 -0
  192. package/build/src/start/platforms/PlatformManager.js +121 -0
  193. package/build/src/start/platforms/PlatformManager.js.map +1 -0
  194. package/build/src/start/platforms/android/ADBServer.js +129 -0
  195. package/build/src/start/platforms/android/ADBServer.js.map +1 -0
  196. package/build/src/start/platforms/android/AndroidAppIdResolver.js +40 -0
  197. package/build/src/start/platforms/android/AndroidAppIdResolver.js.map +1 -0
  198. package/build/src/start/platforms/android/AndroidDeviceManager.js +183 -0
  199. package/build/src/start/platforms/android/AndroidDeviceManager.js.map +1 -0
  200. package/build/src/start/platforms/android/AndroidPlatformManager.js +35 -0
  201. package/build/src/start/platforms/android/AndroidPlatformManager.js.map +1 -0
  202. package/build/src/start/platforms/android/activateWindow.js +80 -0
  203. package/build/src/start/platforms/android/activateWindow.js.map +1 -0
  204. package/build/src/start/platforms/android/adb.js +263 -0
  205. package/build/src/start/platforms/android/adb.js.map +1 -0
  206. package/build/src/start/platforms/android/adbReverse.js +84 -0
  207. package/build/src/start/platforms/android/adbReverse.js.map +1 -0
  208. package/build/src/start/platforms/android/emulator.js +118 -0
  209. package/build/src/start/platforms/android/emulator.js.map +1 -0
  210. package/build/src/start/platforms/android/getDevices.js +36 -0
  211. package/build/src/start/platforms/android/getDevices.js.map +1 -0
  212. package/build/src/start/platforms/android/gradle.js +86 -0
  213. package/build/src/start/platforms/android/gradle.js.map +1 -0
  214. package/build/src/start/platforms/android/promptAndroidDevice.js +60 -0
  215. package/build/src/start/platforms/android/promptAndroidDevice.js.map +1 -0
  216. package/build/src/start/platforms/ios/AppleAppIdResolver.js +46 -0
  217. package/build/src/start/platforms/ios/AppleAppIdResolver.js.map +1 -0
  218. package/build/src/start/platforms/ios/AppleDeviceManager.js +201 -0
  219. package/build/src/start/platforms/ios/AppleDeviceManager.js.map +1 -0
  220. package/build/src/start/platforms/ios/ApplePlatformManager.js +31 -0
  221. package/build/src/start/platforms/ios/ApplePlatformManager.js.map +1 -0
  222. package/build/src/start/platforms/ios/assertSystemRequirements.js +16 -0
  223. package/build/src/start/platforms/ios/assertSystemRequirements.js.map +1 -0
  224. package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js +85 -0
  225. package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js.map +1 -0
  226. package/build/src/start/platforms/ios/getBestSimulator.js +101 -0
  227. package/build/src/start/platforms/ios/getBestSimulator.js.map +1 -0
  228. package/build/src/start/platforms/ios/promptAppleDevice.js +60 -0
  229. package/build/src/start/platforms/ios/promptAppleDevice.js.map +1 -0
  230. package/build/src/start/platforms/ios/simctl.js +229 -0
  231. package/build/src/start/platforms/ios/simctl.js.map +1 -0
  232. package/build/src/start/platforms/ios/xcrun.js +67 -0
  233. package/build/src/start/platforms/ios/xcrun.js.map +1 -0
  234. package/build/src/start/project/devices.js +77 -0
  235. package/build/src/start/project/devices.js.map +1 -0
  236. package/build/src/start/project/dotExpo.js +74 -0
  237. package/build/src/start/project/dotExpo.js.map +1 -0
  238. package/build/src/start/project/settings.js +13 -0
  239. package/build/src/start/project/settings.js.map +1 -0
  240. package/build/src/start/resolveOptions.js +156 -0
  241. package/build/src/start/resolveOptions.js.map +1 -0
  242. package/build/src/start/server/AsyncNgrok.js +173 -0
  243. package/build/src/start/server/AsyncNgrok.js.map +1 -0
  244. package/build/src/start/server/BundlerDevServer.js +312 -0
  245. package/build/src/start/server/BundlerDevServer.js.map +1 -0
  246. package/build/src/start/server/DevServerManager.js +142 -0
  247. package/build/src/start/server/DevServerManager.js.map +1 -0
  248. package/build/src/start/server/DevelopmentSession.js +104 -0
  249. package/build/src/start/server/DevelopmentSession.js.map +1 -0
  250. package/build/src/start/server/UrlCreator.js +159 -0
  251. package/build/src/start/server/UrlCreator.js.map +1 -0
  252. package/build/src/start/server/metro/MetroBundlerDevServer.js +97 -0
  253. package/build/src/start/server/metro/MetroBundlerDevServer.js.map +1 -0
  254. package/build/src/start/server/metro/MetroTerminalReporter.js +178 -0
  255. package/build/src/start/server/metro/MetroTerminalReporter.js.map +1 -0
  256. package/build/src/start/server/metro/TerminalReporter.js +87 -0
  257. package/build/src/start/server/metro/TerminalReporter.js.map +1 -0
  258. package/build/src/start/server/metro/TerminalReporter.types.js +6 -0
  259. package/build/src/start/server/metro/TerminalReporter.types.js.map +1 -0
  260. package/build/src/start/server/metro/instantiateMetro.js +66 -0
  261. package/build/src/start/server/metro/instantiateMetro.js.map +1 -0
  262. package/build/src/start/server/metro/resolveFromProject.js +38 -0
  263. package/build/src/start/server/metro/resolveFromProject.js.map +1 -0
  264. package/build/src/start/server/middleware/ClassicManifestMiddleware.js +145 -0
  265. package/build/src/start/server/middleware/ClassicManifestMiddleware.js.map +1 -0
  266. package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js +185 -0
  267. package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js.map +1 -0
  268. package/build/src/start/server/middleware/ExpoMiddleware.js +78 -0
  269. package/build/src/start/server/middleware/ExpoMiddleware.js.map +1 -0
  270. package/build/src/start/server/middleware/InterstitialPageMiddleware.js +70 -0
  271. package/build/src/start/server/middleware/InterstitialPageMiddleware.js.map +1 -0
  272. package/build/src/start/server/middleware/ManifestMiddleware.js +177 -0
  273. package/build/src/start/server/middleware/ManifestMiddleware.js.map +1 -0
  274. package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js +69 -0
  275. package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js.map +1 -0
  276. package/build/src/start/server/middleware/createDevServerMiddleware.js +24 -0
  277. package/build/src/start/server/middleware/createDevServerMiddleware.js.map +1 -0
  278. package/build/src/start/server/middleware/resolveAssets.js +110 -0
  279. package/build/src/start/server/middleware/resolveAssets.js.map +1 -0
  280. package/build/src/start/server/middleware/resolveEntryPoint.js +37 -0
  281. package/build/src/start/server/middleware/resolveEntryPoint.js.map +1 -0
  282. package/build/src/start/server/middleware/resolvePlatform.js +32 -0
  283. package/build/src/start/server/middleware/resolvePlatform.js.map +1 -0
  284. package/build/src/start/server/middleware/server.types.js +6 -0
  285. package/build/src/start/server/middleware/server.types.js.map +1 -0
  286. package/build/src/start/server/openPlatforms.js +30 -0
  287. package/build/src/start/server/openPlatforms.js.map +1 -0
  288. package/build/src/start/server/webpack/WebpackBundlerDevServer.js +299 -0
  289. package/build/src/start/server/webpack/WebpackBundlerDevServer.js.map +1 -0
  290. package/build/src/start/server/webpack/formatWebpackMessages.js +94 -0
  291. package/build/src/start/server/webpack/formatWebpackMessages.js.map +1 -0
  292. package/build/src/start/server/webpack/resolveFromProject.js +43 -0
  293. package/build/src/start/server/webpack/resolveFromProject.js.map +1 -0
  294. package/build/src/start/server/webpack/tls.js +72 -0
  295. package/build/src/start/server/webpack/tls.js.map +1 -0
  296. package/build/src/start/startAsync.js +150 -0
  297. package/build/src/start/startAsync.js.map +1 -0
  298. package/build/src/utils/FileNotifier.js +71 -0
  299. package/build/src/utils/FileNotifier.js.map +1 -0
  300. package/build/src/utils/analytics/getDevClientProperties.js +41 -0
  301. package/build/src/utils/analytics/getDevClientProperties.js.map +1 -0
  302. package/build/src/utils/analytics/rudderstackClient.js +106 -0
  303. package/build/src/utils/analytics/rudderstackClient.js.map +1 -0
  304. package/build/src/utils/ansi.js +17 -0
  305. package/build/src/utils/ansi.js.map +1 -0
  306. package/build/src/utils/args.js +77 -0
  307. package/build/src/utils/args.js.map +1 -0
  308. package/build/src/utils/array.js +56 -0
  309. package/build/src/utils/array.js.map +1 -0
  310. package/build/src/utils/cocoapods.js +143 -0
  311. package/build/src/utils/cocoapods.js.map +1 -0
  312. package/build/src/utils/codesigning.js +283 -0
  313. package/build/src/utils/codesigning.js.map +1 -0
  314. package/build/src/utils/createFileTransform.js +89 -0
  315. package/build/src/utils/createFileTransform.js.map +1 -0
  316. package/build/src/utils/delay.js +39 -0
  317. package/build/src/utils/delay.js.map +1 -0
  318. package/build/src/utils/dir.js +38 -0
  319. package/build/src/utils/dir.js.map +1 -0
  320. package/build/src/utils/downloadAppAsync.js +74 -0
  321. package/build/src/utils/downloadAppAsync.js.map +1 -0
  322. package/build/src/utils/downloadExpoGoAsync.js +99 -0
  323. package/build/src/utils/downloadExpoGoAsync.js.map +1 -0
  324. package/build/src/utils/editor.js +60 -0
  325. package/build/src/utils/editor.js.map +1 -0
  326. package/build/src/utils/env.js +62 -0
  327. package/build/src/utils/env.js.map +1 -0
  328. package/build/src/utils/errors.js +69 -0
  329. package/build/src/utils/errors.js.map +1 -0
  330. package/build/src/utils/exit.js +90 -0
  331. package/build/src/utils/exit.js.map +1 -0
  332. package/build/src/utils/findUp.js +33 -0
  333. package/build/src/utils/findUp.js.map +1 -0
  334. package/build/src/utils/fn.js +32 -0
  335. package/build/src/utils/fn.js.map +1 -0
  336. package/build/src/utils/getOrPromptApplicationId.js +183 -0
  337. package/build/src/utils/getOrPromptApplicationId.js.map +1 -0
  338. package/build/src/utils/getRunningProcess.js +92 -0
  339. package/build/src/utils/getRunningProcess.js.map +1 -0
  340. package/build/src/utils/git.js +88 -0
  341. package/build/src/utils/git.js.map +1 -0
  342. package/build/src/utils/glob.js +65 -0
  343. package/build/src/utils/glob.js.map +1 -0
  344. package/build/src/utils/ip.js +16 -0
  345. package/build/src/utils/ip.js.map +1 -0
  346. package/build/src/utils/isModuleSymlinked.js +37 -0
  347. package/build/src/utils/isModuleSymlinked.js.map +1 -0
  348. package/build/src/utils/link.js +31 -0
  349. package/build/src/utils/link.js.map +1 -0
  350. package/build/src/utils/mergeGitIgnorePaths.js +112 -0
  351. package/build/src/utils/mergeGitIgnorePaths.js.map +1 -0
  352. package/build/src/utils/modifyConfigAsync.js +68 -0
  353. package/build/src/utils/modifyConfigAsync.js.map +1 -0
  354. package/build/src/utils/modifyConfigPlugins.js +51 -0
  355. package/build/src/utils/modifyConfigPlugins.js.map +1 -0
  356. package/build/src/utils/nodeModules.js +118 -0
  357. package/build/src/utils/nodeModules.js.map +1 -0
  358. package/build/src/utils/npm.js +144 -0
  359. package/build/src/utils/npm.js.map +1 -0
  360. package/build/src/utils/obj.js +45 -0
  361. package/build/src/utils/obj.js.map +1 -0
  362. package/build/src/utils/ora.js +102 -0
  363. package/build/src/utils/ora.js.map +1 -0
  364. package/build/src/utils/port.js +130 -0
  365. package/build/src/utils/port.js.map +1 -0
  366. package/build/src/utils/profile.js +63 -0
  367. package/build/src/utils/profile.js.map +1 -0
  368. package/build/src/utils/progress.js +15 -0
  369. package/build/src/utils/progress.js.map +1 -0
  370. package/build/src/utils/prompts.js +127 -0
  371. package/build/src/utils/prompts.js.map +1 -0
  372. package/build/src/utils/resolveArgs.js +94 -0
  373. package/build/src/utils/resolveArgs.js.map +1 -0
  374. package/build/src/utils/scheme.js +106 -0
  375. package/build/src/utils/scheme.js.map +1 -0
  376. package/build/src/utils/tar.js +59 -0
  377. package/build/src/utils/tar.js.map +1 -0
  378. package/build/src/utils/url.js +67 -0
  379. package/build/src/utils/url.js.map +1 -0
  380. package/build/src/utils/validateApplicationId.js +90 -0
  381. package/build/src/utils/validateApplicationId.js.map +1 -0
  382. package/build/src/whoami/index.js +47 -0
  383. package/build/src/whoami/index.js.map +1 -0
  384. package/build/src/whoami/whoamiAsync.js +44 -0
  385. package/build/src/whoami/whoamiAsync.js.map +1 -0
  386. package/package.json +132 -4
  387. package/static/loading-page/index.html +270 -0
  388. package/index.js +0 -0
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ exports.ensureDependenciesAsync = ensureDependenciesAsync;
6
+ exports.createInstallCommand = createInstallCommand;
7
+ var _config = require("@expo/config");
8
+ var PackageManager = _interopRequireWildcard(require("@expo/package-manager"));
9
+ var _chalk = _interopRequireDefault(require("chalk"));
10
+ var _wrapAnsi = _interopRequireDefault(require("wrap-ansi"));
11
+ var Log = _interopRequireWildcard(require("../../../log"));
12
+ var _env = require("../../../utils/env");
13
+ var _errors = require("../../../utils/errors");
14
+ var _ora = require("../../../utils/ora");
15
+ var _prompts = require("../../../utils/prompts");
16
+ var _getMissingPackages = require("./getMissingPackages");
17
+ function _interopRequireDefault(obj) {
18
+ return obj && obj.__esModule ? obj : {
19
+ default: obj
20
+ };
21
+ }
22
+ function _interopRequireWildcard(obj) {
23
+ if (obj && obj.__esModule) {
24
+ return obj;
25
+ } else {
26
+ var newObj = {};
27
+ if (obj != null) {
28
+ for(var key in obj){
29
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
30
+ var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};
31
+ if (desc.get || desc.set) {
32
+ Object.defineProperty(newObj, key, desc);
33
+ } else {
34
+ newObj[key] = obj[key];
35
+ }
36
+ }
37
+ }
38
+ }
39
+ newObj.default = obj;
40
+ return newObj;
41
+ }
42
+ }
43
+ async function ensureDependenciesAsync(projectRoot, { exp =(0, _config).getConfig(projectRoot).exp , requiredPackages , warningMessage , installMessage , // Don't prompt in CI
44
+ skipPrompt =_env.env.CI }) {
45
+ const { missing } = await (0, _getMissingPackages).getMissingPackagesAsync(projectRoot, {
46
+ sdkVersion: exp.sdkVersion,
47
+ requiredPackages
48
+ });
49
+ if (!missing.length) {
50
+ return true;
51
+ }
52
+ // Prompt to install or bail out...
53
+ const readableMissingPackages = missing.map(({ pkg , version })=>version ? [
54
+ pkg,
55
+ version
56
+ ].join("@") : pkg
57
+ ).join(", ");
58
+ const isYarn = PackageManager.isUsingYarn(projectRoot);
59
+ let title = installMessage;
60
+ if (skipPrompt) {
61
+ title += "\n\n";
62
+ } else {
63
+ const confirm = await (0, _prompts).confirmAsync({
64
+ message: wrapForTerminal(title + ` Would you like to install ${_chalk.default.cyan(readableMissingPackages)}?`),
65
+ initial: true
66
+ });
67
+ if (confirm) {
68
+ // Format with version if available.
69
+ const packages = missing.map(({ pkg , version })=>version ? [
70
+ pkg,
71
+ version
72
+ ].join("@") : pkg
73
+ );
74
+ // Install packages with versions
75
+ await installPackagesAsync(projectRoot, {
76
+ isYarn,
77
+ packages
78
+ });
79
+ // Try again but skip prompting twice, simply fail if the packages didn't install correctly.
80
+ return await ensureDependenciesAsync(projectRoot, {
81
+ skipPrompt: true,
82
+ installMessage,
83
+ warningMessage,
84
+ requiredPackages
85
+ });
86
+ }
87
+ // Reset the title so it doesn't print twice in interactive mode.
88
+ title = "";
89
+ }
90
+ const installCommand = createInstallCommand({
91
+ isYarn,
92
+ packages: missing
93
+ });
94
+ const disableMessage = warningMessage;
95
+ const solution = `Please install ${_chalk.default.bold(readableMissingPackages)} by running:\n\n ${_chalk.default.reset.bold(installCommand)}\n\n`;
96
+ // This prevents users from starting a misconfigured JS or TS project by default.
97
+ throw new _errors.CommandError(wrapForTerminal(title + solution + disableMessage + "\n"));
98
+ }
99
+ /** Wrap long messages to fit smaller terminals. */ function wrapForTerminal(message) {
100
+ return (0, _wrapAnsi).default(message, process.stdout.columns || 80);
101
+ }
102
+ function createInstallCommand({ isYarn , packages }) {
103
+ return (isYarn ? "yarn add" : "npm install") + " " + packages.map(({ pkg , version })=>{
104
+ if (version) {
105
+ return [
106
+ pkg,
107
+ version
108
+ ].join("@");
109
+ }
110
+ return pkg;
111
+ }).join(" ");
112
+ }
113
+ /** Install packages in the project. */ async function installPackagesAsync(projectRoot, { isYarn , packages }) {
114
+ const packageManager = PackageManager.createForProject(projectRoot, {
115
+ yarn: isYarn,
116
+ log: Log.log,
117
+ silent: !_env.env.EXPO_DEBUG
118
+ });
119
+ const packagesStr = _chalk.default.bold(packages.join(", "));
120
+ Log.log();
121
+ const installingPackageStep = (0, _ora).logNewSection(`Installing ${packagesStr}`);
122
+ try {
123
+ await packageManager.addAsync(...packages);
124
+ } catch (e) {
125
+ installingPackageStep.fail(`Failed to install ${packagesStr} with error: ${e.message}`);
126
+ throw e;
127
+ }
128
+ installingPackageStep.succeed(`Installed ${packagesStr}`);
129
+ }
130
+
131
+ //# sourceMappingURL=ensureDependenciesAsync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/start/doctor/dependencies/ensureDependenciesAsync.ts"],"sourcesContent":["import { ExpoConfig, getConfig } from '@expo/config';\nimport * as PackageManager from '@expo/package-manager';\nimport chalk from 'chalk';\nimport wrapAnsi from 'wrap-ansi';\n\nimport * as Log from '../../../log';\nimport { env } from '../../../utils/env';\nimport { CommandError } from '../../../utils/errors';\nimport { logNewSection } from '../../../utils/ora';\nimport { confirmAsync } from '../../../utils/prompts';\nimport { getMissingPackagesAsync, ResolvedPackage } from './getMissingPackages';\n\nexport async function ensureDependenciesAsync(\n projectRoot: string,\n {\n exp = getConfig(projectRoot).exp,\n requiredPackages,\n warningMessage,\n installMessage,\n // Don't prompt in CI\n skipPrompt = env.CI,\n }: {\n exp?: ExpoConfig;\n installMessage: string;\n warningMessage: string;\n requiredPackages: ResolvedPackage[];\n skipPrompt?: boolean;\n }\n): Promise<boolean> {\n const { missing } = await getMissingPackagesAsync(projectRoot, {\n sdkVersion: exp.sdkVersion,\n requiredPackages,\n });\n if (!missing.length) {\n return true;\n }\n\n // Prompt to install or bail out...\n const readableMissingPackages = missing\n .map(({ pkg, version }) => (version ? [pkg, version].join('@') : pkg))\n .join(', ');\n\n const isYarn = PackageManager.isUsingYarn(projectRoot);\n\n let title = installMessage;\n\n if (skipPrompt) {\n title += '\\n\\n';\n } else {\n const confirm = await confirmAsync({\n message: wrapForTerminal(\n title + ` Would you like to install ${chalk.cyan(readableMissingPackages)}?`\n ),\n initial: true,\n });\n\n if (confirm) {\n // Format with version if available.\n const packages = missing.map(({ pkg, version }) =>\n version ? [pkg, version].join('@') : pkg\n );\n // Install packages with versions\n await installPackagesAsync(projectRoot, {\n isYarn,\n packages,\n });\n // Try again but skip prompting twice, simply fail if the packages didn't install correctly.\n return await ensureDependenciesAsync(projectRoot, {\n skipPrompt: true,\n installMessage,\n warningMessage,\n requiredPackages,\n });\n }\n\n // Reset the title so it doesn't print twice in interactive mode.\n title = '';\n }\n\n const installCommand = createInstallCommand({ isYarn, packages: missing });\n\n const disableMessage = warningMessage;\n\n const solution = `Please install ${chalk.bold(\n readableMissingPackages\n )} by running:\\n\\n ${chalk.reset.bold(installCommand)}\\n\\n`;\n\n // This prevents users from starting a misconfigured JS or TS project by default.\n throw new CommandError(wrapForTerminal(title + solution + disableMessage + '\\n'));\n}\n\n/** Wrap long messages to fit smaller terminals. */\nfunction wrapForTerminal(message: string): string {\n return wrapAnsi(message, process.stdout.columns || 80);\n}\n\n/** Create the bash install command from a given set of packages and settings. */\nexport function createInstallCommand({\n isYarn,\n packages,\n}: {\n isYarn: boolean;\n packages: {\n file: string;\n pkg: string;\n version?: string | undefined;\n }[];\n}) {\n return (\n (isYarn ? 'yarn add' : 'npm install') +\n ' ' +\n packages\n .map(({ pkg, version }) => {\n if (version) {\n return [pkg, version].join('@');\n }\n return pkg;\n })\n .join(' ')\n );\n}\n\n/** Install packages in the project. */\nasync function installPackagesAsync(\n projectRoot: string,\n { isYarn, packages }: { isYarn: boolean; packages: string[] }\n) {\n const packageManager = PackageManager.createForProject(projectRoot, {\n yarn: isYarn,\n log: Log.log,\n silent: !env.EXPO_DEBUG,\n });\n\n const packagesStr = chalk.bold(packages.join(', '));\n Log.log();\n const installingPackageStep = logNewSection(`Installing ${packagesStr}`);\n try {\n await packageManager.addAsync(...packages);\n } catch (e: any) {\n installingPackageStep.fail(`Failed to install ${packagesStr} with error: ${e.message}`);\n throw e;\n }\n installingPackageStep.succeed(`Installed ${packagesStr}`);\n}\n"],"names":["ensureDependenciesAsync","createInstallCommand","PackageManager","Log","projectRoot","exp","getConfig","requiredPackages","warningMessage","installMessage","skipPrompt","env","CI","missing","getMissingPackagesAsync","sdkVersion","length","readableMissingPackages","map","pkg","version","join","isYarn","isUsingYarn","title","confirm","confirmAsync","message","wrapForTerminal","chalk","cyan","initial","packages","installPackagesAsync","installCommand","disableMessage","solution","bold","reset","CommandError","wrapAnsi","process","stdout","columns","packageManager","createForProject","yarn","log","silent","EXPO_DEBUG","packagesStr","installingPackageStep","logNewSection","addAsync","e","fail","succeed"],"mappings":"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"}
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ exports.collectMissingPackages = collectMissingPackages;
6
+ exports.versionSatisfiesRequiredPackage = versionSatisfiesRequiredPackage;
7
+ exports.getMissingPackagesAsync = getMissingPackagesAsync;
8
+ exports.mutatePackagesWithKnownVersionsAsync = mutatePackagesWithKnownVersionsAsync;
9
+ var _jsonFile = _interopRequireDefault(require("@expo/json-file"));
10
+ var _resolveFrom = _interopRequireDefault(require("resolve-from"));
11
+ var _semver = _interopRequireDefault(require("semver"));
12
+ var Log = _interopRequireWildcard(require("../../../log"));
13
+ var _getVersionedPackages = require("./getVersionedPackages");
14
+ function _interopRequireDefault(obj) {
15
+ return obj && obj.__esModule ? obj : {
16
+ default: obj
17
+ };
18
+ }
19
+ function _interopRequireWildcard(obj) {
20
+ if (obj && obj.__esModule) {
21
+ return obj;
22
+ } else {
23
+ var newObj = {};
24
+ if (obj != null) {
25
+ for(var key in obj){
26
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
27
+ var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};
28
+ if (desc.get || desc.set) {
29
+ Object.defineProperty(newObj, key, desc);
30
+ } else {
31
+ newObj[key] = obj[key];
32
+ }
33
+ }
34
+ }
35
+ }
36
+ newObj.default = obj;
37
+ return newObj;
38
+ }
39
+ }
40
+ function collectMissingPackages(projectRoot, requiredPackages) {
41
+ const resolutions = {};
42
+ const missingPackages = requiredPackages.filter((p)=>{
43
+ const resolved = _resolveFrom.default.silent(projectRoot, p.file);
44
+ if (!resolved || !versionSatisfiesRequiredPackage(resolved, p)) {
45
+ return true;
46
+ }
47
+ resolutions[p.pkg] = resolved;
48
+ return false;
49
+ });
50
+ return {
51
+ missing: missingPackages,
52
+ resolutions
53
+ };
54
+ }
55
+ function versionSatisfiesRequiredPackage(packageJsonFilePath, resolvedPackage) {
56
+ // If the version is specified, check that it satisfies the installed version.
57
+ if (!resolvedPackage.version) {
58
+ Log.debug(`Required package "${resolvedPackage.pkg}" found (no version constraint specified).`);
59
+ return true;
60
+ }
61
+ const pkgJson = _jsonFile.default.read(packageJsonFilePath);
62
+ if (// package.json has version.
63
+ typeof pkgJson.version === "string" && // semver satisfaction.
64
+ _semver.default.satisfies(pkgJson.version, resolvedPackage.version)) {
65
+ return true;
66
+ }
67
+ Log.debug(`Installed package "${resolvedPackage.pkg}" does not satisfy version constraint "${resolvedPackage.version}" (version: "${pkgJson.version}")`);
68
+ return false;
69
+ }
70
+ async function getMissingPackagesAsync(projectRoot, { sdkVersion , requiredPackages }) {
71
+ const results = collectMissingPackages(projectRoot, requiredPackages);
72
+ if (!results.missing.length) {
73
+ return results;
74
+ }
75
+ // Ensure the versions are right for the SDK that the project is currently using.
76
+ await mutatePackagesWithKnownVersionsAsync(projectRoot, sdkVersion, results.missing);
77
+ return results;
78
+ }
79
+ async function mutatePackagesWithKnownVersionsAsync(projectRoot, sdkVersion, packages) {
80
+ // Ensure the versions are right for the SDK that the project is currently using.
81
+ const relatedPackages = await (0, _getVersionedPackages).getCombinedKnownVersionsAsync({
82
+ projectRoot,
83
+ sdkVersion
84
+ });
85
+ for (const pkg of packages){
86
+ if (// Only use the SDK versions if the package does not already have a hardcoded version.
87
+ // We do this because some packages have API coded into the CLI which expects an exact version.
88
+ !pkg.version && pkg.pkg in relatedPackages) {
89
+ pkg.version = relatedPackages[pkg.pkg];
90
+ }
91
+ }
92
+ return packages;
93
+ }
94
+
95
+ //# sourceMappingURL=getMissingPackages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/start/doctor/dependencies/getMissingPackages.ts"],"sourcesContent":["import JsonFile from '@expo/json-file';\nimport resolveFrom from 'resolve-from';\nimport semver from 'semver';\n\nimport * as Log from '../../../log';\nimport { getCombinedKnownVersionsAsync } from './getVersionedPackages';\n\nexport type ResolvedPackage = {\n /** Module ID pointing to the library `package.json`. */\n file: string;\n /** NPM package name. */\n pkg: string;\n /** Required version range. */\n version?: string;\n /** If the dependency should be installed as a `devDependency` */\n dev?: boolean;\n};\n\n/** Given a set of required packages, this method returns a list of missing packages. */\nexport function collectMissingPackages(\n projectRoot: string,\n requiredPackages: ResolvedPackage[]\n): {\n missing: ResolvedPackage[];\n resolutions: Record<string, string>;\n} {\n const resolutions: Record<string, string> = {};\n\n const missingPackages = requiredPackages.filter((p) => {\n const resolved = resolveFrom.silent(projectRoot, p.file);\n if (!resolved || !versionSatisfiesRequiredPackage(resolved, p)) {\n return true;\n }\n resolutions[p.pkg] = resolved;\n return false;\n });\n\n return { missing: missingPackages, resolutions };\n}\n\nexport function versionSatisfiesRequiredPackage(\n packageJsonFilePath: string,\n resolvedPackage: Pick<ResolvedPackage, 'version' | 'pkg'>\n): boolean {\n // If the version is specified, check that it satisfies the installed version.\n if (!resolvedPackage.version) {\n Log.debug(`Required package \"${resolvedPackage.pkg}\" found (no version constraint specified).`);\n return true;\n }\n\n const pkgJson = JsonFile.read(packageJsonFilePath);\n if (\n // package.json has version.\n typeof pkgJson.version === 'string' &&\n // semver satisfaction.\n semver.satisfies(pkgJson.version, resolvedPackage.version)\n ) {\n return true;\n }\n Log.debug(\n `Installed package \"${resolvedPackage.pkg}\" does not satisfy version constraint \"${resolvedPackage.version}\" (version: \"${pkgJson.version}\")`\n );\n return false;\n}\n\n/**\n * Collect missing packages given a list of required packages.\n * Any missing packages will be versioned to the known versions for the current SDK.\n *\n * @param projectRoot\n * @param props.requiredPackages list of required packages to check for\n * @returns list of missing packages and resolutions to existing packages.\n */\nexport async function getMissingPackagesAsync(\n projectRoot: string,\n {\n sdkVersion,\n requiredPackages,\n }: {\n sdkVersion?: string;\n requiredPackages: ResolvedPackage[];\n }\n): Promise<{\n missing: ResolvedPackage[];\n resolutions: Record<string, string>;\n}> {\n const results = collectMissingPackages(projectRoot, requiredPackages);\n if (!results.missing.length) {\n return results;\n }\n\n // Ensure the versions are right for the SDK that the project is currently using.\n await mutatePackagesWithKnownVersionsAsync(projectRoot, sdkVersion, results.missing);\n\n return results;\n}\n\nexport async function mutatePackagesWithKnownVersionsAsync(\n projectRoot: string,\n sdkVersion: string | undefined,\n packages: ResolvedPackage[]\n) {\n // Ensure the versions are right for the SDK that the project is currently using.\n const relatedPackages = await getCombinedKnownVersionsAsync({ projectRoot, sdkVersion });\n for (const pkg of packages) {\n if (\n // Only use the SDK versions if the package does not already have a hardcoded version.\n // We do this because some packages have API coded into the CLI which expects an exact version.\n !pkg.version &&\n pkg.pkg in relatedPackages\n ) {\n pkg.version = relatedPackages[pkg.pkg];\n }\n }\n return packages;\n}\n"],"names":["collectMissingPackages","versionSatisfiesRequiredPackage","getMissingPackagesAsync","mutatePackagesWithKnownVersionsAsync","Log","projectRoot","requiredPackages","resolutions","missingPackages","filter","p","resolved","resolveFrom","silent","file","pkg","missing","packageJsonFilePath","resolvedPackage","version","debug","pkgJson","JsonFile","read","semver","satisfies","sdkVersion","results","length","packages","relatedPackages","getCombinedKnownVersionsAsync"],"mappings":"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"}
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ exports.getCombinedKnownVersionsAsync = getCombinedKnownVersionsAsync;
6
+ exports.getRemoteVersionsForSdkAsync = getRemoteVersionsForSdkAsync;
7
+ exports.getVersionedPackagesAsync = getVersionedPackagesAsync;
8
+ exports.getOperationLog = getOperationLog;
9
+ var _npmPackageArg = _interopRequireDefault(require("npm-package-arg"));
10
+ var _getVersions = require("../../../api/getVersions");
11
+ var Log = _interopRequireWildcard(require("../../../log"));
12
+ var _bundledNativeModules = require("./bundledNativeModules");
13
+ function _interopRequireDefault(obj) {
14
+ return obj && obj.__esModule ? obj : {
15
+ default: obj
16
+ };
17
+ }
18
+ function _interopRequireWildcard(obj) {
19
+ if (obj && obj.__esModule) {
20
+ return obj;
21
+ } else {
22
+ var newObj = {};
23
+ if (obj != null) {
24
+ for(var key in obj){
25
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
26
+ var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};
27
+ if (desc.get || desc.set) {
28
+ Object.defineProperty(newObj, key, desc);
29
+ } else {
30
+ newObj[key] = obj[key];
31
+ }
32
+ }
33
+ }
34
+ }
35
+ newObj.default = obj;
36
+ return newObj;
37
+ }
38
+ }
39
+ /** Adds `react-dom`, `react`, and `react-native` to the list of known package versions (`relatedPackages`) */ function normalizeSdkVersionObject(version) {
40
+ if (!version) {
41
+ return {};
42
+ }
43
+ const { relatedPackages , facebookReactVersion , facebookReactNativeVersion } = version;
44
+ const reactVersion = facebookReactVersion ? {
45
+ react: facebookReactVersion,
46
+ "react-dom": facebookReactVersion
47
+ } : undefined;
48
+ return {
49
+ ...relatedPackages,
50
+ ...reactVersion,
51
+ "react-native": facebookReactNativeVersion
52
+ };
53
+ }
54
+ async function getCombinedKnownVersionsAsync({ projectRoot , sdkVersion , skipCache }) {
55
+ const bundledNativeModules = sdkVersion ? await (0, _bundledNativeModules).getVersionedNativeModulesAsync(projectRoot, sdkVersion) : {};
56
+ const versionsForSdk = await getRemoteVersionsForSdkAsync({
57
+ sdkVersion,
58
+ skipCache
59
+ });
60
+ return {
61
+ ...versionsForSdk,
62
+ ...bundledNativeModules
63
+ };
64
+ }
65
+ async function getRemoteVersionsForSdkAsync({ sdkVersion , skipCache } = {}) {
66
+ const sdkVersions = await (0, _getVersions).getReleasedVersionsAsync({
67
+ skipCache
68
+ });
69
+ // We only want versioned dependencies so skip if they cannot be found.
70
+ if (!sdkVersion || !(sdkVersion in sdkVersions)) {
71
+ Log.debug(`Skipping versioned dependencies because the SDK version is not found. (sdkVersion: ${sdkVersion}, available: ${Object.keys(sdkVersions).join(", ")})`);
72
+ return {};
73
+ }
74
+ const version = sdkVersions[sdkVersion];
75
+ return normalizeSdkVersionObject(version);
76
+ }
77
+ async function getVersionedPackagesAsync(projectRoot, { packages , sdkVersion }) {
78
+ const versionsForSdk = await getCombinedKnownVersionsAsync({
79
+ projectRoot,
80
+ sdkVersion,
81
+ skipCache: true
82
+ });
83
+ let nativeModulesCount = 0;
84
+ let othersCount = 0;
85
+ const versionedPackages = packages.map((arg)=>{
86
+ const { name , type , raw } = (0, _npmPackageArg).default(arg);
87
+ if ([
88
+ "tag",
89
+ "version",
90
+ "range"
91
+ ].includes(type) && name && versionsForSdk[name]) {
92
+ // Unimodule packages from npm registry are modified to use the bundled version.
93
+ // Some packages have the recommended version listed in https://exp.host/--/api/v2/versions.
94
+ nativeModulesCount++;
95
+ return `${name}@${versionsForSdk[name]}`;
96
+ } else {
97
+ // Other packages are passed through unmodified.
98
+ othersCount++;
99
+ return raw;
100
+ }
101
+ });
102
+ const messages = getOperationLog({
103
+ othersCount,
104
+ nativeModulesCount,
105
+ sdkVersion
106
+ });
107
+ return {
108
+ packages: versionedPackages,
109
+ messages
110
+ };
111
+ }
112
+ function getOperationLog({ nativeModulesCount , sdkVersion , othersCount }) {
113
+ return [
114
+ nativeModulesCount > 0 && `${nativeModulesCount} SDK ${sdkVersion} compatible native ${nativeModulesCount === 1 ? "module" : "modules"}`,
115
+ othersCount > 0 && `${othersCount} other ${othersCount === 1 ? "package" : "packages"}`,
116
+ ].filter(Boolean);
117
+ }
118
+
119
+ //# sourceMappingURL=getVersionedPackages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/start/doctor/dependencies/getVersionedPackages.ts"],"sourcesContent":["import npmPackageArg from 'npm-package-arg';\n\nimport { getReleasedVersionsAsync, SDKVersion } from '../../../api/getVersions';\nimport * as Log from '../../../log';\nimport { getVersionedNativeModulesAsync } from './bundledNativeModules';\n\nexport type DependencyList = Record<string, string>;\n\n/** Adds `react-dom`, `react`, and `react-native` to the list of known package versions (`relatedPackages`) */\nfunction normalizeSdkVersionObject(version?: SDKVersion): Record<string, string> {\n if (!version) {\n return {};\n }\n const { relatedPackages, facebookReactVersion, facebookReactNativeVersion } = version;\n\n const reactVersion = facebookReactVersion\n ? {\n react: facebookReactVersion,\n 'react-dom': facebookReactVersion,\n }\n : undefined;\n\n return {\n ...relatedPackages,\n ...reactVersion,\n 'react-native': facebookReactNativeVersion,\n };\n}\n\n/** Get the known versions for a given SDK, combines all sources. */\nexport async function getCombinedKnownVersionsAsync({\n projectRoot,\n sdkVersion,\n skipCache,\n}: {\n projectRoot: string;\n sdkVersion?: string;\n skipCache?: boolean;\n}) {\n const bundledNativeModules = sdkVersion\n ? await getVersionedNativeModulesAsync(projectRoot, sdkVersion)\n : {};\n const versionsForSdk = await getRemoteVersionsForSdkAsync({ sdkVersion, skipCache });\n return {\n ...versionsForSdk,\n ...bundledNativeModules,\n };\n}\n\n/** @returns a key/value list of known dependencies and their version (including range). */\nexport async function getRemoteVersionsForSdkAsync({\n sdkVersion,\n skipCache,\n}: { sdkVersion?: string; skipCache?: boolean } = {}): Promise<DependencyList> {\n const sdkVersions = await getReleasedVersionsAsync({ skipCache });\n\n // We only want versioned dependencies so skip if they cannot be found.\n if (!sdkVersion || !(sdkVersion in sdkVersions)) {\n Log.debug(\n `Skipping versioned dependencies because the SDK version is not found. (sdkVersion: ${sdkVersion}, available: ${Object.keys(\n sdkVersions\n ).join(', ')})`\n );\n return {};\n }\n\n const version = sdkVersions[sdkVersion as keyof typeof sdkVersions] as unknown as SDKVersion;\n\n return normalizeSdkVersionObject(version);\n}\n\n/**\n * Versions a list of `packages` against a given `sdkVersion` based on local and remote versioning resources.\n *\n * @param projectRoot\n * @param param1\n * @returns\n */\nexport async function getVersionedPackagesAsync(\n projectRoot: string,\n {\n packages,\n sdkVersion,\n }: {\n /** List of npm packages to process. */\n packages: string[];\n /** Target SDK Version number to version the `packages` for. */\n sdkVersion: string;\n }\n): Promise<{ packages: string[]; messages: string[] }> {\n const versionsForSdk = await getCombinedKnownVersionsAsync({\n projectRoot,\n sdkVersion,\n skipCache: true,\n });\n\n let nativeModulesCount = 0;\n let othersCount = 0;\n\n const versionedPackages = packages.map((arg) => {\n const { name, type, raw } = npmPackageArg(arg);\n\n if (['tag', 'version', 'range'].includes(type) && name && versionsForSdk[name]) {\n // Unimodule packages from npm registry are modified to use the bundled version.\n // Some packages have the recommended version listed in https://exp.host/--/api/v2/versions.\n nativeModulesCount++;\n return `${name}@${versionsForSdk[name]}`;\n } else {\n // Other packages are passed through unmodified.\n othersCount++;\n return raw;\n }\n });\n\n const messages = getOperationLog({\n othersCount,\n nativeModulesCount,\n sdkVersion,\n });\n\n return {\n packages: versionedPackages,\n messages,\n };\n}\n\n/** Craft a set of messages regarding the install operations. */\nexport function getOperationLog({\n nativeModulesCount,\n sdkVersion,\n othersCount,\n}: {\n nativeModulesCount: number;\n othersCount: number;\n sdkVersion: string;\n}): string[] {\n return [\n nativeModulesCount > 0 &&\n `${nativeModulesCount} SDK ${sdkVersion} compatible native ${\n nativeModulesCount === 1 ? 'module' : 'modules'\n }`,\n othersCount > 0 && `${othersCount} other ${othersCount === 1 ? 'package' : 'packages'}`,\n ].filter(Boolean) as string[];\n}\n"],"names":["getCombinedKnownVersionsAsync","getRemoteVersionsForSdkAsync","getVersionedPackagesAsync","getOperationLog","Log","normalizeSdkVersionObject","version","relatedPackages","facebookReactVersion","facebookReactNativeVersion","reactVersion","react","undefined","projectRoot","sdkVersion","skipCache","bundledNativeModules","getVersionedNativeModulesAsync","versionsForSdk","sdkVersions","getReleasedVersionsAsync","debug","Object","keys","join","packages","nativeModulesCount","othersCount","versionedPackages","map","arg","name","type","raw","npmPackageArg","includes","messages","filter","Boolean"],"mappings":"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"}
@@ -0,0 +1,147 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ exports.validateDependenciesVersionsAsync = validateDependenciesVersionsAsync;
6
+ exports.logIncorrectDependencies = logIncorrectDependencies;
7
+ exports.getVersionedDependenciesAsync = getVersionedDependenciesAsync;
8
+ var _jsonFile = _interopRequireDefault(require("@expo/json-file"));
9
+ var _assert = _interopRequireDefault(require("assert"));
10
+ var _chalk = _interopRequireDefault(require("chalk"));
11
+ var _resolveFrom = _interopRequireDefault(require("resolve-from"));
12
+ var _semver = _interopRequireDefault(require("semver"));
13
+ var Log = _interopRequireWildcard(require("../../../log"));
14
+ var _errors = require("../../../utils/errors");
15
+ var _getVersionedPackages = require("./getVersionedPackages");
16
+ function _interopRequireDefault(obj) {
17
+ return obj && obj.__esModule ? obj : {
18
+ default: obj
19
+ };
20
+ }
21
+ function _interopRequireWildcard(obj) {
22
+ if (obj && obj.__esModule) {
23
+ return obj;
24
+ } else {
25
+ var newObj = {};
26
+ if (obj != null) {
27
+ for(var key in obj){
28
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
29
+ var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};
30
+ if (desc.get || desc.set) {
31
+ Object.defineProperty(newObj, key, desc);
32
+ } else {
33
+ newObj[key] = obj[key];
34
+ }
35
+ }
36
+ }
37
+ }
38
+ newObj.default = obj;
39
+ return newObj;
40
+ }
41
+ }
42
+ async function validateDependenciesVersionsAsync(projectRoot, exp, pkg, packagesToCheck) {
43
+ const incorrectDeps = await getVersionedDependenciesAsync(projectRoot, exp, pkg, packagesToCheck);
44
+ return logIncorrectDependencies(incorrectDeps);
45
+ }
46
+ function logInvalidDependency({ packageName , expectedVersionOrRange , actualVersion }) {
47
+ Log.warn(// chalk` - {underline ${packageName}} - expected version: {underline ${expectedVersionOrRange}} - actual version installed: {underline ${actualVersion}}`
48
+ _chalk.default` {bold ${packageName}}{cyan @}{red ${actualVersion}} - expected version: {green ${expectedVersionOrRange}}`);
49
+ }
50
+ function logIncorrectDependencies(incorrectDeps) {
51
+ if (!incorrectDeps.length) {
52
+ return true;
53
+ }
54
+ Log.warn(_chalk.default`Some dependencies are incompatible with the installed {bold expo} version:`);
55
+ incorrectDeps.forEach((dep)=>logInvalidDependency(dep)
56
+ );
57
+ const requiredVersions = incorrectDeps.map(({ packageName , expectedVersionOrRange })=>`${packageName}@${expectedVersionOrRange}`
58
+ );
59
+ Log.warn("Your project may not work correctly until you install the correct versions of the packages.\n" + _chalk.default`Install individual packages by running {inverse npx expo install ${requiredVersions.join(" ")}}`);
60
+ return false;
61
+ }
62
+ async function getVersionedDependenciesAsync(projectRoot, exp, pkg, packagesToCheck) {
63
+ // This should never happen under normal circumstances since
64
+ // the CLI is versioned in the `expo` package.
65
+ (0, _assert).default(exp.sdkVersion, "SDK Version is missing");
66
+ // Get from both endpoints and combine the known package versions.
67
+ const combinedKnownPackages = await (0, _getVersionedPackages).getCombinedKnownVersionsAsync({
68
+ projectRoot,
69
+ sdkVersion: exp.sdkVersion
70
+ });
71
+ Log.debug(`Known dependencies: %O`, combinedKnownPackages);
72
+ const resolvedDependencies = (packagesToCheck == null ? void 0 : packagesToCheck.length) ? getFilteredObject(packagesToCheck, {
73
+ ...pkg.dependencies,
74
+ ...pkg.devDependencies
75
+ }) : pkg.dependencies;
76
+ Log.debug(`Checking dependencies for ${exp.sdkVersion}: %O`, resolvedDependencies);
77
+ // intersection of packages from package.json and bundled native modules
78
+ const resolvedPackagesToCheck = getPackagesToCheck(resolvedDependencies, combinedKnownPackages);
79
+ Log.debug(`Comparing known versions: %O`, resolvedPackagesToCheck);
80
+ // read package versions from the file system (node_modules)
81
+ const packageVersions = await resolvePackageVersionsAsync(projectRoot, resolvedPackagesToCheck);
82
+ Log.debug(`Package versions: %O`, packageVersions);
83
+ // find incorrect dependencies by comparing the actual package versions with the bundled native module version ranges
84
+ const incorrectDeps = findIncorrectDependencies(packageVersions, combinedKnownPackages);
85
+ Log.debug(`Incorrect dependencies: %O`, incorrectDeps);
86
+ return incorrectDeps;
87
+ }
88
+ function getFilteredObject(keys, object) {
89
+ return keys.reduce((acc, key)=>{
90
+ acc[key] = object[key];
91
+ return acc;
92
+ }, {});
93
+ }
94
+ function getPackagesToCheck(dependencies, bundledNativeModules) {
95
+ const dependencyNames = Object.keys(dependencies != null ? dependencies : {});
96
+ const result = [];
97
+ for (const dependencyName of dependencyNames){
98
+ if (dependencyName in bundledNativeModules) {
99
+ result.push(dependencyName);
100
+ }
101
+ }
102
+ return result;
103
+ }
104
+ async function resolvePackageVersionsAsync(projectRoot, packages) {
105
+ const packageVersionsFromPackageJSON = await Promise.all(packages.map((packageName)=>getPackageVersionAsync(projectRoot, packageName)
106
+ ));
107
+ return packages.reduce((acc, packageName, idx)=>{
108
+ acc[packageName] = packageVersionsFromPackageJSON[idx];
109
+ return acc;
110
+ }, {});
111
+ }
112
+ async function getPackageVersionAsync(projectRoot, packageName) {
113
+ let packageJsonPath;
114
+ try {
115
+ packageJsonPath = (0, _resolveFrom).default(projectRoot, `${packageName}/package.json`);
116
+ } catch (error) {
117
+ // This is a workaround for packages using `exports`. If this doesn't
118
+ // include `package.json`, we have to use the error message to get the location.
119
+ if (error.code === "ERR_PACKAGE_PATH_NOT_EXPORTED") {
120
+ var ref;
121
+ packageJsonPath = (ref = error.message.match(/("exports"|defined) in (.*)$/i)) == null ? void 0 : ref[2];
122
+ }
123
+ }
124
+ if (!packageJsonPath) {
125
+ throw new _errors.CommandError(`"${packageName}" is added as a dependency in your project's package.json but it doesn't seem to be installed. Please run "yarn" or "npm install" to fix this issue.`);
126
+ }
127
+ const packageJson = await _jsonFile.default.readAsync(packageJsonPath);
128
+ return packageJson.version;
129
+ }
130
+ function findIncorrectDependencies(packageVersions, bundledNativeModules) {
131
+ const packages = Object.keys(packageVersions);
132
+ const incorrectDeps = [];
133
+ for (const packageName of packages){
134
+ const expectedVersionOrRange = bundledNativeModules[packageName];
135
+ const actualVersion = packageVersions[packageName];
136
+ if (typeof expectedVersionOrRange === "string" && !_semver.default.intersects(expectedVersionOrRange, actualVersion)) {
137
+ incorrectDeps.push({
138
+ packageName,
139
+ expectedVersionOrRange,
140
+ actualVersion
141
+ });
142
+ }
143
+ }
144
+ return incorrectDeps;
145
+ }
146
+
147
+ //# sourceMappingURL=validateDependenciesVersions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/start/doctor/dependencies/validateDependenciesVersions.ts"],"sourcesContent":["import { ExpoConfig, PackageJSONConfig } from '@expo/config';\nimport JsonFile from '@expo/json-file';\nimport assert from 'assert';\nimport chalk from 'chalk';\nimport resolveFrom from 'resolve-from';\nimport semver from 'semver';\n\nimport * as Log from '../../../log';\nimport { CommandError } from '../../../utils/errors';\nimport { BundledNativeModules } from './bundledNativeModules';\nimport { getCombinedKnownVersionsAsync } from './getVersionedPackages';\n\ninterface IncorrectDependency {\n packageName: string;\n expectedVersionOrRange: string;\n actualVersion: string;\n}\n\n/**\n * Print a list of incorrect dependency versions.\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> {\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` - {underline ${packageName}} - expected version: {underline ${expectedVersionOrRange}} - actual version installed: {underline ${actualVersion}}`\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(chalk`Some dependencies are incompatible with the installed {bold expo} version:`);\n incorrectDeps.forEach((dep) => logInvalidDependency(dep));\n\n const requiredVersions = incorrectDeps.map(\n ({ packageName, expectedVersionOrRange }) => `${packageName}@${expectedVersionOrRange}`\n );\n\n Log.warn(\n 'Your project may not work correctly until you install the correct versions of the packages.\\n' +\n chalk`Install individual packages by running {inverse npx expo install ${requiredVersions.join(\n ' '\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 Log.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` object.\n pkg.dependencies;\n Log.debug(`Checking dependencies for ${exp.sdkVersion}: %O`, resolvedDependencies);\n\n // intersection of packages from package.json and bundled native modules\n const resolvedPackagesToCheck = getPackagesToCheck(resolvedDependencies, combinedKnownPackages);\n Log.debug(`Comparing known versions: %O`, resolvedPackagesToCheck);\n // read package versions from the file system (node_modules)\n const packageVersions = await resolvePackageVersionsAsync(projectRoot, resolvedPackagesToCheck);\n Log.debug(`Package versions: %O`, packageVersions);\n // find incorrect dependencies by comparing the actual package versions with the bundled native module version ranges\n const incorrectDeps = findIncorrectDependencies(packageVersions, combinedKnownPackages);\n Log.debug(`Incorrect dependencies: %O`, incorrectDeps);\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 dependencies: Record<string, string> | null | undefined,\n bundledNativeModules: BundledNativeModules\n): string[] {\n const dependencyNames = Object.keys(dependencies ?? {});\n const result: string[] = [];\n for (const dependencyName of dependencyNames) {\n if (dependencyName in bundledNativeModules) {\n result.push(dependencyName);\n }\n }\n return result;\n}\n\nasync function resolvePackageVersionsAsync(\n projectRoot: string,\n packages: string[]\n): Promise<Record<string, string>> {\n const packageVersionsFromPackageJSON = await Promise.all(\n packages.map((packageName) => getPackageVersionAsync(projectRoot, packageName))\n );\n return packages.reduce((acc, packageName, idx) => {\n acc[packageName] = packageVersionsFromPackageJSON[idx];\n return acc;\n }, {} as Record<string, string>);\n}\n\nasync function getPackageVersionAsync(projectRoot: string, packageName: string): Promise<string> {\n let packageJsonPath: string | undefined;\n try {\n packageJsonPath = resolveFrom(projectRoot, `${packageName}/package.json`);\n } catch (error: any) {\n // This is a workaround for packages using `exports`. If this doesn't\n // include `package.json`, we have to use the error message to get the location.\n if (error.code === 'ERR_PACKAGE_PATH_NOT_EXPORTED') {\n packageJsonPath = error.message.match(/(\"exports\"|defined) in (.*)$/i)?.[2];\n }\n }\n if (!packageJsonPath) {\n throw new CommandError(\n `\"${packageName}\" is added as a dependency in your project's package.json but it doesn't seem to be installed. Please run \"yarn\" or \"npm install\" to fix this issue.`\n );\n }\n const packageJson = await JsonFile.readAsync<BundledNativeModules>(packageJsonPath);\n return packageJson.version;\n}\n\nfunction findIncorrectDependencies(\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 (\n typeof expectedVersionOrRange === 'string' &&\n !semver.intersects(expectedVersionOrRange, actualVersion)\n ) {\n incorrectDeps.push({\n packageName,\n expectedVersionOrRange,\n actualVersion,\n });\n }\n }\n return incorrectDeps;\n}\n"],"names":["validateDependenciesVersionsAsync","logIncorrectDependencies","getVersionedDependenciesAsync","Log","projectRoot","exp","pkg","packagesToCheck","incorrectDeps","logInvalidDependency","packageName","expectedVersionOrRange","actualVersion","warn","chalk","length","forEach","dep","requiredVersions","map","join","assert","sdkVersion","combinedKnownPackages","getCombinedKnownVersionsAsync","debug","resolvedDependencies","getFilteredObject","dependencies","devDependencies","resolvedPackagesToCheck","getPackagesToCheck","packageVersions","resolvePackageVersionsAsync","findIncorrectDependencies","keys","object","reduce","acc","key","bundledNativeModules","dependencyNames","Object","result","dependencyName","push","packages","packageVersionsFromPackageJSON","Promise","all","getPackageVersionAsync","idx","packageJsonPath","resolveFrom","error","code","message","match","CommandError","packageJson","JsonFile","readAsync","version","semver","intersects"],"mappings":"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"}