@expo/cli 0.0.0 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (336) hide show
  1. package/README.md +106 -0
  2. package/build/bin/cli +125 -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 +85 -0
  57. package/build/src/config/index.js.map +1 -0
  58. package/build/src/install/checkPackages.js +74 -0
  59. package/build/src/install/checkPackages.js.map +1 -0
  60. package/build/src/install/index.js +76 -0
  61. package/build/src/install/index.js.map +1 -0
  62. package/build/src/install/installAsync.js +103 -0
  63. package/build/src/install/installAsync.js.map +1 -0
  64. package/build/src/install/resolveOptions.js +99 -0
  65. package/build/src/install/resolveOptions.js.map +1 -0
  66. package/build/src/install/utils/autoAddConfigPlugins.js +87 -0
  67. package/build/src/install/utils/autoAddConfigPlugins.js.map +1 -0
  68. package/build/src/log.js +74 -0
  69. package/build/src/log.js.map +1 -0
  70. package/build/src/login/index.js +76 -0
  71. package/build/src/login/index.js.map +1 -0
  72. package/build/src/logout/index.js +63 -0
  73. package/build/src/logout/index.js.map +1 -0
  74. package/build/src/prebuild/clearNativeFolder.js +137 -0
  75. package/build/src/prebuild/clearNativeFolder.js.map +1 -0
  76. package/build/src/prebuild/configureProjectAsync.js +68 -0
  77. package/build/src/prebuild/configureProjectAsync.js.map +1 -0
  78. package/build/src/prebuild/copyTemplateFiles.js +124 -0
  79. package/build/src/prebuild/copyTemplateFiles.js.map +1 -0
  80. package/build/src/prebuild/ensureConfigAsync.js +86 -0
  81. package/build/src/prebuild/ensureConfigAsync.js.map +1 -0
  82. package/build/src/prebuild/index.js +101 -0
  83. package/build/src/prebuild/index.js.map +1 -0
  84. package/build/src/prebuild/prebuildAsync.js +112 -0
  85. package/build/src/prebuild/prebuildAsync.js.map +1 -0
  86. package/build/src/prebuild/resolveOptions.js +97 -0
  87. package/build/src/prebuild/resolveOptions.js.map +1 -0
  88. package/build/src/prebuild/resolveTemplate.js +157 -0
  89. package/build/src/prebuild/resolveTemplate.js.map +1 -0
  90. package/build/src/prebuild/updateFromTemplate.js +102 -0
  91. package/build/src/prebuild/updateFromTemplate.js.map +1 -0
  92. package/build/src/prebuild/updatePackageJson.js +236 -0
  93. package/build/src/prebuild/updatePackageJson.js.map +1 -0
  94. package/build/src/prebuild/writeMetroConfig.js +89 -0
  95. package/build/src/prebuild/writeMetroConfig.js.map +1 -0
  96. package/build/src/register/index.js +63 -0
  97. package/build/src/register/index.js.map +1 -0
  98. package/build/src/register/registerAsync.js +37 -0
  99. package/build/src/register/registerAsync.js.map +1 -0
  100. package/build/src/start/doctor/Prerequisite.js +47 -0
  101. package/build/src/start/doctor/Prerequisite.js.map +1 -0
  102. package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js +68 -0
  103. package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js.map +1 -0
  104. package/build/src/start/doctor/apple/XcodePrerequisite.js +115 -0
  105. package/build/src/start/doctor/apple/XcodePrerequisite.js.map +1 -0
  106. package/build/src/start/doctor/apple/XcrunPrerequisite.js +65 -0
  107. package/build/src/start/doctor/apple/XcrunPrerequisite.js.map +1 -0
  108. package/build/src/start/doctor/dependencies/bundledNativeModules.js +64 -0
  109. package/build/src/start/doctor/dependencies/bundledNativeModules.js.map +1 -0
  110. package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js +131 -0
  111. package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js.map +1 -0
  112. package/build/src/start/doctor/dependencies/getMissingPackages.js +95 -0
  113. package/build/src/start/doctor/dependencies/getMissingPackages.js.map +1 -0
  114. package/build/src/start/doctor/dependencies/getVersionedPackages.js +119 -0
  115. package/build/src/start/doctor/dependencies/getVersionedPackages.js.map +1 -0
  116. package/build/src/start/doctor/dependencies/validateDependenciesVersions.js +147 -0
  117. package/build/src/start/doctor/dependencies/validateDependenciesVersions.js.map +1 -0
  118. package/build/src/start/doctor/ngrok/ExternalModule.js +164 -0
  119. package/build/src/start/doctor/ngrok/ExternalModule.js.map +1 -0
  120. package/build/src/start/doctor/ngrok/NgrokResolver.js +17 -0
  121. package/build/src/start/doctor/ngrok/NgrokResolver.js.map +1 -0
  122. package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js +142 -0
  123. package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js.map +1 -0
  124. package/build/src/start/doctor/typescript/updateTSConfig.js +92 -0
  125. package/build/src/start/doctor/typescript/updateTSConfig.js.map +1 -0
  126. package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js +112 -0
  127. package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js.map +1 -0
  128. package/build/src/start/index.js +126 -0
  129. package/build/src/start/index.js.map +1 -0
  130. package/build/src/start/interface/KeyPressHandler.js +99 -0
  131. package/build/src/start/interface/KeyPressHandler.js.map +1 -0
  132. package/build/src/start/interface/commandsTable.js +175 -0
  133. package/build/src/start/interface/commandsTable.js.map +1 -0
  134. package/build/src/start/interface/interactiveActions.js +134 -0
  135. package/build/src/start/interface/interactiveActions.js.map +1 -0
  136. package/build/src/start/interface/startInterface.js +217 -0
  137. package/build/src/start/interface/startInterface.js.map +1 -0
  138. package/build/src/start/platforms/AppIdResolver.js +44 -0
  139. package/build/src/start/platforms/AppIdResolver.js.map +1 -0
  140. package/build/src/start/platforms/DeviceManager.js +43 -0
  141. package/build/src/start/platforms/DeviceManager.js.map +1 -0
  142. package/build/src/start/platforms/ExpoGoInstaller.js +108 -0
  143. package/build/src/start/platforms/ExpoGoInstaller.js.map +1 -0
  144. package/build/src/start/platforms/PlatformManager.js +96 -0
  145. package/build/src/start/platforms/PlatformManager.js.map +1 -0
  146. package/build/src/start/platforms/android/ADBServer.js +127 -0
  147. package/build/src/start/platforms/android/ADBServer.js.map +1 -0
  148. package/build/src/start/platforms/android/AndroidAppIdResolver.js +40 -0
  149. package/build/src/start/platforms/android/AndroidAppIdResolver.js.map +1 -0
  150. package/build/src/start/platforms/android/AndroidDeviceManager.js +171 -0
  151. package/build/src/start/platforms/android/AndroidDeviceManager.js.map +1 -0
  152. package/build/src/start/platforms/android/AndroidPlatformManager.js +35 -0
  153. package/build/src/start/platforms/android/AndroidPlatformManager.js.map +1 -0
  154. package/build/src/start/platforms/android/activateWindow.js +78 -0
  155. package/build/src/start/platforms/android/activateWindow.js.map +1 -0
  156. package/build/src/start/platforms/android/adb.js +230 -0
  157. package/build/src/start/platforms/android/adb.js.map +1 -0
  158. package/build/src/start/platforms/android/adbReverse.js +84 -0
  159. package/build/src/start/platforms/android/adbReverse.js.map +1 -0
  160. package/build/src/start/platforms/android/emulator.js +118 -0
  161. package/build/src/start/platforms/android/emulator.js.map +1 -0
  162. package/build/src/start/platforms/android/getDevices.js +36 -0
  163. package/build/src/start/platforms/android/getDevices.js.map +1 -0
  164. package/build/src/start/platforms/android/promptAndroidDevice.js +60 -0
  165. package/build/src/start/platforms/android/promptAndroidDevice.js.map +1 -0
  166. package/build/src/start/platforms/ios/AppleAppIdResolver.js +46 -0
  167. package/build/src/start/platforms/ios/AppleAppIdResolver.js.map +1 -0
  168. package/build/src/start/platforms/ios/AppleDeviceManager.js +201 -0
  169. package/build/src/start/platforms/ios/AppleDeviceManager.js.map +1 -0
  170. package/build/src/start/platforms/ios/ApplePlatformManager.js +31 -0
  171. package/build/src/start/platforms/ios/ApplePlatformManager.js.map +1 -0
  172. package/build/src/start/platforms/ios/assertSystemRequirements.js +16 -0
  173. package/build/src/start/platforms/ios/assertSystemRequirements.js.map +1 -0
  174. package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js +85 -0
  175. package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js.map +1 -0
  176. package/build/src/start/platforms/ios/getBestSimulator.js +101 -0
  177. package/build/src/start/platforms/ios/getBestSimulator.js.map +1 -0
  178. package/build/src/start/platforms/ios/promptAppleDevice.js +60 -0
  179. package/build/src/start/platforms/ios/promptAppleDevice.js.map +1 -0
  180. package/build/src/start/platforms/ios/simctl.js +229 -0
  181. package/build/src/start/platforms/ios/simctl.js.map +1 -0
  182. package/build/src/start/platforms/ios/xcrun.js +67 -0
  183. package/build/src/start/platforms/ios/xcrun.js.map +1 -0
  184. package/build/src/start/project/devices.js +77 -0
  185. package/build/src/start/project/devices.js.map +1 -0
  186. package/build/src/start/project/dotExpo.js +74 -0
  187. package/build/src/start/project/dotExpo.js.map +1 -0
  188. package/build/src/start/project/settings.js +13 -0
  189. package/build/src/start/project/settings.js.map +1 -0
  190. package/build/src/start/resolveOptions.js +156 -0
  191. package/build/src/start/resolveOptions.js.map +1 -0
  192. package/build/src/start/server/AsyncNgrok.js +173 -0
  193. package/build/src/start/server/AsyncNgrok.js.map +1 -0
  194. package/build/src/start/server/BundlerDevServer.js +252 -0
  195. package/build/src/start/server/BundlerDevServer.js.map +1 -0
  196. package/build/src/start/server/DevServerManager.js +142 -0
  197. package/build/src/start/server/DevServerManager.js.map +1 -0
  198. package/build/src/start/server/DevelopmentSession.js +104 -0
  199. package/build/src/start/server/DevelopmentSession.js.map +1 -0
  200. package/build/src/start/server/UrlCreator.js +158 -0
  201. package/build/src/start/server/UrlCreator.js.map +1 -0
  202. package/build/src/start/server/metro/MetroBundlerDevServer.js +100 -0
  203. package/build/src/start/server/metro/MetroBundlerDevServer.js.map +1 -0
  204. package/build/src/start/server/metro/MetroTerminalReporter.js +178 -0
  205. package/build/src/start/server/metro/MetroTerminalReporter.js.map +1 -0
  206. package/build/src/start/server/metro/TerminalReporter.js +87 -0
  207. package/build/src/start/server/metro/TerminalReporter.js.map +1 -0
  208. package/build/src/start/server/metro/TerminalReporter.types.js +6 -0
  209. package/build/src/start/server/metro/TerminalReporter.types.js.map +1 -0
  210. package/build/src/start/server/metro/instantiateMetro.js +53 -0
  211. package/build/src/start/server/metro/instantiateMetro.js.map +1 -0
  212. package/build/src/start/server/metro/resolveFromProject.js +38 -0
  213. package/build/src/start/server/metro/resolveFromProject.js.map +1 -0
  214. package/build/src/start/server/middleware/ClassicManifestMiddleware.js +145 -0
  215. package/build/src/start/server/middleware/ClassicManifestMiddleware.js.map +1 -0
  216. package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js +185 -0
  217. package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js.map +1 -0
  218. package/build/src/start/server/middleware/ExpoMiddleware.js +78 -0
  219. package/build/src/start/server/middleware/ExpoMiddleware.js.map +1 -0
  220. package/build/src/start/server/middleware/InterstitialPageMiddleware.js +70 -0
  221. package/build/src/start/server/middleware/InterstitialPageMiddleware.js.map +1 -0
  222. package/build/src/start/server/middleware/ManifestMiddleware.js +177 -0
  223. package/build/src/start/server/middleware/ManifestMiddleware.js.map +1 -0
  224. package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js +69 -0
  225. package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js.map +1 -0
  226. package/build/src/start/server/middleware/createDevServerMiddleware.js +24 -0
  227. package/build/src/start/server/middleware/createDevServerMiddleware.js.map +1 -0
  228. package/build/src/start/server/middleware/resolveAssets.js +107 -0
  229. package/build/src/start/server/middleware/resolveAssets.js.map +1 -0
  230. package/build/src/start/server/middleware/resolveEntryPoint.js +37 -0
  231. package/build/src/start/server/middleware/resolveEntryPoint.js.map +1 -0
  232. package/build/src/start/server/middleware/resolvePlatform.js +32 -0
  233. package/build/src/start/server/middleware/resolvePlatform.js.map +1 -0
  234. package/build/src/start/server/middleware/server.types.js +6 -0
  235. package/build/src/start/server/middleware/server.types.js.map +1 -0
  236. package/build/src/start/server/openPlatforms.js +30 -0
  237. package/build/src/start/server/openPlatforms.js.map +1 -0
  238. package/build/src/start/server/webpack/WebpackBundlerDevServer.js +303 -0
  239. package/build/src/start/server/webpack/WebpackBundlerDevServer.js.map +1 -0
  240. package/build/src/start/server/webpack/formatWebpackMessages.js +94 -0
  241. package/build/src/start/server/webpack/formatWebpackMessages.js.map +1 -0
  242. package/build/src/start/server/webpack/resolveFromProject.js +43 -0
  243. package/build/src/start/server/webpack/resolveFromProject.js.map +1 -0
  244. package/build/src/start/server/webpack/tls.js +72 -0
  245. package/build/src/start/server/webpack/tls.js.map +1 -0
  246. package/build/src/start/startAsync.js +150 -0
  247. package/build/src/start/startAsync.js.map +1 -0
  248. package/build/src/utils/FileNotifier.js +71 -0
  249. package/build/src/utils/FileNotifier.js.map +1 -0
  250. package/build/src/utils/analytics/getDevClientProperties.js +41 -0
  251. package/build/src/utils/analytics/getDevClientProperties.js.map +1 -0
  252. package/build/src/utils/analytics/rudderstackClient.js +106 -0
  253. package/build/src/utils/analytics/rudderstackClient.js.map +1 -0
  254. package/build/src/utils/ansi.js +17 -0
  255. package/build/src/utils/ansi.js.map +1 -0
  256. package/build/src/utils/args.js +63 -0
  257. package/build/src/utils/args.js.map +1 -0
  258. package/build/src/utils/array.js +27 -0
  259. package/build/src/utils/array.js.map +1 -0
  260. package/build/src/utils/cocoapods.js +143 -0
  261. package/build/src/utils/cocoapods.js.map +1 -0
  262. package/build/src/utils/codesigning.js +283 -0
  263. package/build/src/utils/codesigning.js.map +1 -0
  264. package/build/src/utils/createFileTransform.js +89 -0
  265. package/build/src/utils/createFileTransform.js.map +1 -0
  266. package/build/src/utils/delay.js +39 -0
  267. package/build/src/utils/delay.js.map +1 -0
  268. package/build/src/utils/dir.js +34 -0
  269. package/build/src/utils/dir.js.map +1 -0
  270. package/build/src/utils/downloadAppAsync.js +71 -0
  271. package/build/src/utils/downloadAppAsync.js.map +1 -0
  272. package/build/src/utils/downloadExpoGoAsync.js +93 -0
  273. package/build/src/utils/downloadExpoGoAsync.js.map +1 -0
  274. package/build/src/utils/editor.js +60 -0
  275. package/build/src/utils/editor.js.map +1 -0
  276. package/build/src/utils/env.js +59 -0
  277. package/build/src/utils/env.js.map +1 -0
  278. package/build/src/utils/errors.js +69 -0
  279. package/build/src/utils/errors.js.map +1 -0
  280. package/build/src/utils/exit.js +90 -0
  281. package/build/src/utils/exit.js.map +1 -0
  282. package/build/src/utils/findUp.js +33 -0
  283. package/build/src/utils/findUp.js.map +1 -0
  284. package/build/src/utils/fn.js +32 -0
  285. package/build/src/utils/fn.js.map +1 -0
  286. package/build/src/utils/getOrPromptApplicationId.js +183 -0
  287. package/build/src/utils/getOrPromptApplicationId.js.map +1 -0
  288. package/build/src/utils/getRunningProcess.js +92 -0
  289. package/build/src/utils/getRunningProcess.js.map +1 -0
  290. package/build/src/utils/git.js +88 -0
  291. package/build/src/utils/git.js.map +1 -0
  292. package/build/src/utils/glob.js +65 -0
  293. package/build/src/utils/glob.js.map +1 -0
  294. package/build/src/utils/ip.js +16 -0
  295. package/build/src/utils/ip.js.map +1 -0
  296. package/build/src/utils/isModuleSymlinked.js +37 -0
  297. package/build/src/utils/isModuleSymlinked.js.map +1 -0
  298. package/build/src/utils/link.js +31 -0
  299. package/build/src/utils/link.js.map +1 -0
  300. package/build/src/utils/mergeGitIgnorePaths.js +112 -0
  301. package/build/src/utils/mergeGitIgnorePaths.js.map +1 -0
  302. package/build/src/utils/modifyConfigAsync.js +68 -0
  303. package/build/src/utils/modifyConfigAsync.js.map +1 -0
  304. package/build/src/utils/modifyConfigPlugins.js +51 -0
  305. package/build/src/utils/modifyConfigPlugins.js.map +1 -0
  306. package/build/src/utils/nodeModules.js +118 -0
  307. package/build/src/utils/nodeModules.js.map +1 -0
  308. package/build/src/utils/npm.js +144 -0
  309. package/build/src/utils/npm.js.map +1 -0
  310. package/build/src/utils/obj.js +45 -0
  311. package/build/src/utils/obj.js.map +1 -0
  312. package/build/src/utils/ora.js +102 -0
  313. package/build/src/utils/ora.js.map +1 -0
  314. package/build/src/utils/port.js +130 -0
  315. package/build/src/utils/port.js.map +1 -0
  316. package/build/src/utils/profile.js +63 -0
  317. package/build/src/utils/profile.js.map +1 -0
  318. package/build/src/utils/progress.js +15 -0
  319. package/build/src/utils/progress.js.map +1 -0
  320. package/build/src/utils/prompts.js +127 -0
  321. package/build/src/utils/prompts.js.map +1 -0
  322. package/build/src/utils/scheme.js +106 -0
  323. package/build/src/utils/scheme.js.map +1 -0
  324. package/build/src/utils/tar.js +59 -0
  325. package/build/src/utils/tar.js.map +1 -0
  326. package/build/src/utils/url.js +67 -0
  327. package/build/src/utils/url.js.map +1 -0
  328. package/build/src/utils/validateApplicationId.js +90 -0
  329. package/build/src/utils/validateApplicationId.js.map +1 -0
  330. package/build/src/whoami/index.js +63 -0
  331. package/build/src/whoami/index.js.map +1 -0
  332. package/build/src/whoami/whoamiAsync.js +44 -0
  333. package/build/src/whoami/whoamiAsync.js.map +1 -0
  334. package/package.json +128 -4
  335. package/static/loading-page/index.html +270 -0
  336. package/index.js +0 -0
@@ -0,0 +1,139 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ exports.retryUsernamePasswordAuthWithOTPAsync = retryUsernamePasswordAuthWithOTPAsync;
6
+ exports.UserSecondFactorDeviceMethod = void 0;
7
+ var _assert = _interopRequireDefault(require("assert"));
8
+ var _chalk = _interopRequireDefault(require("chalk"));
9
+ var Log = _interopRequireWildcard(require("../../log"));
10
+ var _errors = require("../../utils/errors");
11
+ var _link = require("../../utils/link");
12
+ var _prompts = require("../../utils/prompts");
13
+ var _client = require("../rest/client");
14
+ var _user = require("./user");
15
+ function _interopRequireDefault(obj) {
16
+ return obj && obj.__esModule ? obj : {
17
+ default: obj
18
+ };
19
+ }
20
+ function _interopRequireWildcard(obj) {
21
+ if (obj && obj.__esModule) {
22
+ return obj;
23
+ } else {
24
+ var newObj = {};
25
+ if (obj != null) {
26
+ for(var key in obj){
27
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
28
+ var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};
29
+ if (desc.get || desc.set) {
30
+ Object.defineProperty(newObj, key, desc);
31
+ } else {
32
+ newObj[key] = obj[key];
33
+ }
34
+ }
35
+ }
36
+ }
37
+ newObj.default = obj;
38
+ return newObj;
39
+ }
40
+ }
41
+ var UserSecondFactorDeviceMethod;
42
+ exports.UserSecondFactorDeviceMethod = UserSecondFactorDeviceMethod;
43
+ (function(UserSecondFactorDeviceMethod) {
44
+ UserSecondFactorDeviceMethod["AUTHENTICATOR"] = "authenticator";
45
+ UserSecondFactorDeviceMethod["SMS"] = "sms";
46
+ })(UserSecondFactorDeviceMethod || (exports.UserSecondFactorDeviceMethod = UserSecondFactorDeviceMethod = {}));
47
+ const nonInteractiveHelp = `Use the EXPO_TOKEN environment variable to authenticate in CI (${(0, _link).learnMore("https://docs.expo.dev/accounts/programmatic-access/")})`;
48
+ /**
49
+ * Prompt for an OTP with the option to cancel the question by answering empty (pressing return key).
50
+ */ async function promptForOTPAsync(cancelBehavior) {
51
+ const enterMessage = cancelBehavior === "cancel" ? _chalk.default`press {bold Enter} to cancel` : _chalk.default`press {bold Enter} for more options`;
52
+ const { otp } = await (0, _prompts).promptAsync({
53
+ type: "text",
54
+ name: "otp",
55
+ message: `One-time password or backup code (${enterMessage}):`
56
+ }, {
57
+ nonInteractiveHelp
58
+ });
59
+ return otp || null;
60
+ }
61
+ /**
62
+ * Prompt for user to choose a backup OTP method. If selected method is SMS, a request
63
+ * for a new OTP will be sent to that method. Then, prompt for the OTP, and retry the user login.
64
+ */ async function promptForBackupOTPAsync(username, password, secondFactorDevices) {
65
+ const nonPrimarySecondFactorDevices = secondFactorDevices.filter((device)=>!device.is_primary
66
+ );
67
+ if (nonPrimarySecondFactorDevices.length === 0) {
68
+ throw new _errors.CommandError("No other second-factor devices set up. Ensure you have set up and certified a backup device.");
69
+ }
70
+ const hasAuthenticatorSecondFactorDevice = nonPrimarySecondFactorDevices.find((device)=>device.method === "authenticator"
71
+ );
72
+ const smsNonPrimarySecondFactorDevices = nonPrimarySecondFactorDevices.filter((device)=>device.method === "sms"
73
+ );
74
+ const authenticatorChoiceSentinel = -1;
75
+ const cancelChoiceSentinel = -2;
76
+ const deviceChoices = smsNonPrimarySecondFactorDevices.map((device, idx)=>({
77
+ title: device.sms_phone_number,
78
+ value: idx
79
+ })
80
+ );
81
+ if (hasAuthenticatorSecondFactorDevice) {
82
+ deviceChoices.push({
83
+ title: "Authenticator",
84
+ value: authenticatorChoiceSentinel
85
+ });
86
+ }
87
+ deviceChoices.push({
88
+ title: "Cancel",
89
+ value: cancelChoiceSentinel
90
+ });
91
+ const selectedValue = await (0, _prompts).selectAsync("Select a second-factor device:", deviceChoices, {
92
+ nonInteractiveHelp
93
+ });
94
+ if (selectedValue === cancelChoiceSentinel) {
95
+ return null;
96
+ } else if (selectedValue === authenticatorChoiceSentinel) {
97
+ return await promptForOTPAsync("cancel");
98
+ }
99
+ const device1 = smsNonPrimarySecondFactorDevices[selectedValue];
100
+ await (0, _client).fetchAsync("auth/send-sms-otp", {
101
+ method: "POST",
102
+ body: JSON.stringify({
103
+ username,
104
+ password,
105
+ secondFactorDeviceID: device1.id
106
+ })
107
+ });
108
+ return await promptForOTPAsync("cancel");
109
+ }
110
+ async function retryUsernamePasswordAuthWithOTPAsync(username, password, metadata) {
111
+ const { secondFactorDevices , smsAutomaticallySent } = metadata;
112
+ (0, _assert).default(secondFactorDevices !== undefined && smsAutomaticallySent !== undefined, `Malformed OTP error metadata: ${metadata}`);
113
+ const primaryDevice = secondFactorDevices.find((device)=>device.is_primary
114
+ );
115
+ let otp = null;
116
+ if (smsAutomaticallySent) {
117
+ (0, _assert).default(primaryDevice, "OTP should only automatically be sent when there is a primary device");
118
+ Log.log(`One-time password was sent to the phone number ending in ${primaryDevice.sms_phone_number}.`);
119
+ otp = await promptForOTPAsync("menu");
120
+ }
121
+ if ((primaryDevice == null ? void 0 : primaryDevice.method) === "authenticator") {
122
+ Log.log("One-time password from authenticator required.");
123
+ otp = await promptForOTPAsync("menu");
124
+ }
125
+ // user bailed on case 1 or 2, wants to move to case 3
126
+ if (!otp) {
127
+ otp = await promptForBackupOTPAsync(username, password, secondFactorDevices);
128
+ }
129
+ if (!otp) {
130
+ throw new _errors.AbortCommandError();
131
+ }
132
+ await (0, _user).loginAsync({
133
+ username,
134
+ password,
135
+ otp
136
+ });
137
+ }
138
+
139
+ //# sourceMappingURL=otp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/api/user/otp.ts"],"sourcesContent":["import assert from 'assert';\nimport chalk from 'chalk';\n\nimport * as Log from '../../log';\nimport { AbortCommandError, CommandError } from '../../utils/errors';\nimport { learnMore } from '../../utils/link';\nimport { promptAsync, selectAsync } from '../../utils/prompts';\nimport { fetchAsync } from '../rest/client';\nimport { loginAsync } from './user';\n\nexport enum UserSecondFactorDeviceMethod {\n AUTHENTICATOR = 'authenticator',\n SMS = 'sms',\n}\n\n/** Device properties for 2FA */\nexport type SecondFactorDevice = {\n id: string;\n method: UserSecondFactorDeviceMethod;\n sms_phone_number: string | null;\n is_primary: boolean;\n};\n\nconst nonInteractiveHelp = `Use the EXPO_TOKEN environment variable to authenticate in CI (${learnMore(\n 'https://docs.expo.dev/accounts/programmatic-access/'\n)})`;\n\n/**\n * Prompt for an OTP with the option to cancel the question by answering empty (pressing return key).\n */\nasync function promptForOTPAsync(cancelBehavior: 'cancel' | 'menu'): Promise<string | null> {\n const enterMessage =\n cancelBehavior === 'cancel'\n ? chalk`press {bold Enter} to cancel`\n : chalk`press {bold Enter} for more options`;\n const { otp } = await promptAsync(\n {\n type: 'text',\n name: 'otp',\n message: `One-time password or backup code (${enterMessage}):`,\n },\n { nonInteractiveHelp }\n );\n return otp || null;\n}\n\n/**\n * Prompt for user to choose a backup OTP method. If selected method is SMS, a request\n * for a new OTP will be sent to that method. Then, prompt for the OTP, and retry the user login.\n */\nasync function promptForBackupOTPAsync(\n username: string,\n password: string,\n secondFactorDevices: SecondFactorDevice[]\n): Promise<string | null> {\n const nonPrimarySecondFactorDevices = secondFactorDevices.filter((device) => !device.is_primary);\n\n if (nonPrimarySecondFactorDevices.length === 0) {\n throw new CommandError(\n 'No other second-factor devices set up. Ensure you have set up and certified a backup device.'\n );\n }\n\n const hasAuthenticatorSecondFactorDevice = nonPrimarySecondFactorDevices.find(\n (device) => device.method === UserSecondFactorDeviceMethod.AUTHENTICATOR\n );\n\n const smsNonPrimarySecondFactorDevices = nonPrimarySecondFactorDevices.filter(\n (device) => device.method === UserSecondFactorDeviceMethod.SMS\n );\n\n const authenticatorChoiceSentinel = -1;\n const cancelChoiceSentinel = -2;\n\n const deviceChoices = smsNonPrimarySecondFactorDevices.map((device, idx) => ({\n title: device.sms_phone_number!,\n value: idx,\n }));\n\n if (hasAuthenticatorSecondFactorDevice) {\n deviceChoices.push({\n title: 'Authenticator',\n value: authenticatorChoiceSentinel,\n });\n }\n\n deviceChoices.push({\n title: 'Cancel',\n value: cancelChoiceSentinel,\n });\n\n const selectedValue = await selectAsync('Select a second-factor device:', deviceChoices, {\n nonInteractiveHelp,\n });\n if (selectedValue === cancelChoiceSentinel) {\n return null;\n } else if (selectedValue === authenticatorChoiceSentinel) {\n return await promptForOTPAsync('cancel');\n }\n\n const device = smsNonPrimarySecondFactorDevices[selectedValue];\n\n await fetchAsync('auth/send-sms-otp', {\n method: 'POST',\n body: JSON.stringify({\n username,\n password,\n secondFactorDeviceID: device.id,\n }),\n });\n\n return await promptForOTPAsync('cancel');\n}\n\n/**\n * Handle the special case error indicating that a second-factor is required for\n * authentication.\n *\n * There are three cases we need to handle:\n * 1. User's primary second-factor device was SMS, OTP was automatically sent by the server to that\n * device already. In this case we should just prompt for the SMS OTP (or backup code), which the\n * user should be receiving shortly. We should give the user a way to cancel and the prompt and move\n * to case 3 below.\n * 2. User's primary second-factor device is authenticator. In this case we should prompt for authenticator\n * OTP (or backup code) and also give the user a way to cancel and move to case 3 below.\n * 3. User doesn't have a primary device or doesn't have access to their primary device. In this case\n * we should show a picker of the SMS devices that they can have an OTP code sent to, and when\n * the user picks one we show a prompt() for the sent OTP.\n */\nexport async function retryUsernamePasswordAuthWithOTPAsync(\n username: string,\n password: string,\n metadata: {\n secondFactorDevices?: SecondFactorDevice[];\n smsAutomaticallySent?: boolean;\n }\n): Promise<void> {\n const { secondFactorDevices, smsAutomaticallySent } = metadata;\n assert(\n secondFactorDevices !== undefined && smsAutomaticallySent !== undefined,\n `Malformed OTP error metadata: ${metadata}`\n );\n\n const primaryDevice = secondFactorDevices.find((device) => device.is_primary);\n let otp: string | null = null;\n\n if (smsAutomaticallySent) {\n assert(primaryDevice, 'OTP should only automatically be sent when there is a primary device');\n Log.log(\n `One-time password was sent to the phone number ending in ${primaryDevice.sms_phone_number}.`\n );\n otp = await promptForOTPAsync('menu');\n }\n\n if (primaryDevice?.method === UserSecondFactorDeviceMethod.AUTHENTICATOR) {\n Log.log('One-time password from authenticator required.');\n otp = await promptForOTPAsync('menu');\n }\n\n // user bailed on case 1 or 2, wants to move to case 3\n if (!otp) {\n otp = await promptForBackupOTPAsync(username, password, secondFactorDevices);\n }\n\n if (!otp) {\n throw new AbortCommandError();\n }\n\n await loginAsync({\n username,\n password,\n otp,\n });\n}\n"],"names":["retryUsernamePasswordAuthWithOTPAsync","Log","UserSecondFactorDeviceMethod","AUTHENTICATOR","SMS","nonInteractiveHelp","learnMore","promptForOTPAsync","cancelBehavior","enterMessage","chalk","otp","promptAsync","type","name","message","promptForBackupOTPAsync","username","password","secondFactorDevices","nonPrimarySecondFactorDevices","filter","device","is_primary","length","CommandError","hasAuthenticatorSecondFactorDevice","find","method","smsNonPrimarySecondFactorDevices","authenticatorChoiceSentinel","cancelChoiceSentinel","deviceChoices","map","idx","title","sms_phone_number","value","push","selectedValue","selectAsync","fetchAsync","body","JSON","stringify","secondFactorDeviceID","id","metadata","smsAutomaticallySent","assert","undefined","primaryDevice","log","AbortCommandError","loginAsync"],"mappings":"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"}
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ exports.getActorDisplayName = getActorDisplayName;
6
+ exports.getUserAsync = getUserAsync;
7
+ exports.loginAsync = loginAsync;
8
+ exports.logoutAsync = logoutAsync;
9
+ exports.ANONYMOUS_USERNAME = void 0;
10
+ var _fs = require("fs");
11
+ var _graphqlTag = _interopRequireDefault(require("graphql-tag"));
12
+ var Log = _interopRequireWildcard(require("../../log"));
13
+ var Analytics = _interopRequireWildcard(require("../../utils/analytics/rudderstackClient"));
14
+ var _codesigning = require("../../utils/codesigning");
15
+ var _client = require("../graphql/client");
16
+ var _userQuery = require("../graphql/queries/UserQuery");
17
+ var _client1 = require("../rest/client");
18
+ var _userSettings = _interopRequireDefault(require("./UserSettings"));
19
+ function _interopRequireDefault(obj) {
20
+ return obj && obj.__esModule ? obj : {
21
+ default: obj
22
+ };
23
+ }
24
+ function _interopRequireWildcard(obj) {
25
+ if (obj && obj.__esModule) {
26
+ return obj;
27
+ } else {
28
+ var newObj = {};
29
+ if (obj != null) {
30
+ for(var key in obj){
31
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
32
+ var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};
33
+ if (desc.get || desc.set) {
34
+ Object.defineProperty(newObj, key, desc);
35
+ } else {
36
+ newObj[key] = obj[key];
37
+ }
38
+ }
39
+ }
40
+ }
41
+ newObj.default = obj;
42
+ return newObj;
43
+ }
44
+ }
45
+ let currentUser;
46
+ const ANONYMOUS_USERNAME = "anonymous";
47
+ exports.ANONYMOUS_USERNAME = ANONYMOUS_USERNAME;
48
+ function getActorDisplayName(user) {
49
+ switch(user == null ? void 0 : user.__typename){
50
+ case "User":
51
+ return user.username;
52
+ case "Robot":
53
+ return user.firstName ? `${user.firstName} (robot)` : "robot";
54
+ default:
55
+ return ANONYMOUS_USERNAME;
56
+ }
57
+ }
58
+ async function getUserAsync() {
59
+ var ref;
60
+ if (!currentUser && (_userSettings.default.getAccessToken() || ((ref = _userSettings.default.getSession()) == null ? void 0 : ref.sessionSecret))) {
61
+ const user = await _userQuery.UserQuery.currentUserAsync();
62
+ currentUser = user != null ? user : undefined;
63
+ if (user) {
64
+ await Analytics.setUserDataAsync(user.id, {
65
+ username: getActorDisplayName(user),
66
+ user_id: user.id,
67
+ user_type: user.__typename
68
+ });
69
+ }
70
+ }
71
+ return currentUser;
72
+ }
73
+ async function loginAsync(json) {
74
+ const res = await (0, _client1).fetchAsync("auth/loginAsync", {
75
+ method: "POST",
76
+ body: JSON.stringify(json)
77
+ });
78
+ const { data: { sessionSecret } , } = await res.json();
79
+ const result = await _client.graphqlClient.query(_graphqlTag.default`
80
+ query UserQuery {
81
+ viewer {
82
+ id
83
+ username
84
+ }
85
+ }
86
+ `, {}, {
87
+ fetchOptions: {
88
+ headers: {
89
+ "expo-session": sessionSecret
90
+ }
91
+ },
92
+ additionalTypenames: []
93
+ }).toPromise();
94
+ const { data: { viewer } , } = result;
95
+ await _userSettings.default.setSessionAsync({
96
+ sessionSecret,
97
+ userId: viewer.id,
98
+ username: viewer.username,
99
+ currentConnection: "Username-Password-Authentication"
100
+ });
101
+ }
102
+ async function logoutAsync() {
103
+ currentUser = undefined;
104
+ await Promise.all([
105
+ _fs.promises.rm((0, _codesigning).getDevelopmentCodeSigningDirectory(), {
106
+ recursive: true,
107
+ force: true
108
+ }),
109
+ _userSettings.default.setSessionAsync(undefined),
110
+ ]);
111
+ Log.log("Logged out");
112
+ }
113
+
114
+ //# sourceMappingURL=user.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/api/user/user.ts"],"sourcesContent":["import { promises as fs } from 'fs';\nimport gql from 'graphql-tag';\n\nimport * as Log from '../../log';\nimport * as Analytics from '../../utils/analytics/rudderstackClient';\nimport { getDevelopmentCodeSigningDirectory } from '../../utils/codesigning';\nimport { graphqlClient } from '../graphql/client';\nimport { CurrentUserQuery } from '../graphql/generated';\nimport { UserQuery } from '../graphql/queries/UserQuery';\nimport { fetchAsync } from '../rest/client';\nimport UserSettings from './UserSettings';\n\nexport type Actor = NonNullable<CurrentUserQuery['meActor']>;\n\nlet currentUser: Actor | undefined;\n\nexport const ANONYMOUS_USERNAME = 'anonymous';\n\n/**\n * Resolve the name of the actor, either normal user or robot user.\n * This should be used whenever the \"current user\" needs to be displayed.\n * The display name CANNOT be used as project owner.\n */\nexport function getActorDisplayName(user?: Actor): string {\n switch (user?.__typename) {\n case 'User':\n return user.username;\n case 'Robot':\n return user.firstName ? `${user.firstName} (robot)` : 'robot';\n default:\n return ANONYMOUS_USERNAME;\n }\n}\n\nexport async function getUserAsync(): Promise<Actor | undefined> {\n if (!currentUser && (UserSettings.getAccessToken() || UserSettings.getSession()?.sessionSecret)) {\n const user = await UserQuery.currentUserAsync();\n currentUser = user ?? undefined;\n if (user) {\n await Analytics.setUserDataAsync(user.id, {\n username: getActorDisplayName(user),\n user_id: user.id,\n user_type: user.__typename,\n });\n }\n }\n return currentUser;\n}\n\nexport async function loginAsync(json: {\n username: string;\n password: string;\n otp?: string;\n}): Promise<void> {\n const res = await fetchAsync('auth/loginAsync', {\n method: 'POST',\n body: JSON.stringify(json),\n });\n const {\n data: { sessionSecret },\n } = await res.json();\n const result = await graphqlClient\n .query(\n gql`\n query UserQuery {\n viewer {\n id\n username\n }\n }\n `,\n {},\n {\n fetchOptions: {\n headers: {\n 'expo-session': sessionSecret,\n },\n },\n additionalTypenames: [] /* UserQuery has immutable fields */,\n }\n )\n .toPromise();\n const {\n data: { viewer },\n } = result;\n await UserSettings.setSessionAsync({\n sessionSecret,\n userId: viewer.id,\n username: viewer.username,\n currentConnection: 'Username-Password-Authentication',\n });\n}\n\nexport async function logoutAsync(): Promise<void> {\n currentUser = undefined;\n await Promise.all([\n fs.rm(getDevelopmentCodeSigningDirectory(), { recursive: true, force: true }),\n UserSettings.setSessionAsync(undefined),\n ]);\n Log.log('Logged out');\n}\n"],"names":["getActorDisplayName","getUserAsync","loginAsync","logoutAsync","Log","Analytics","currentUser","ANONYMOUS_USERNAME","user","__typename","username","firstName","UserSettings","getAccessToken","getSession","sessionSecret","UserQuery","currentUserAsync","undefined","setUserDataAsync","id","user_id","user_type","json","res","fetchAsync","method","body","JSON","stringify","data","result","graphqlClient","query","gql","fetchOptions","headers","additionalTypenames","toPromise","viewer","setSessionAsync","userId","currentConnection","Promise","all","fs","rm","getDevelopmentCodeSigningDirectory","recursive","force","log"],"mappings":"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"}
@@ -0,0 +1,118 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ exports.logConfig = logConfig;
6
+ exports.configAsync = configAsync;
7
+ var _config = require("@expo/config");
8
+ var _assert = _interopRequireDefault(require("assert"));
9
+ var _util = _interopRequireDefault(require("util"));
10
+ var Log = _interopRequireWildcard(require("../log"));
11
+ var _errors = require("../utils/errors");
12
+ var _profile = require("../utils/profile");
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
+ function logConfig(config) {
40
+ const isObjStr = (str)=>/^\w+: {/g.test(str)
41
+ ;
42
+ Log.log(_util.default.inspect(config, {
43
+ colors: true,
44
+ compact: false,
45
+ // Sort objects to the end so that smaller values aren't hidden between large objects.
46
+ sorted (a, b) {
47
+ if (isObjStr(a)) return 1;
48
+ if (isObjStr(b)) return -1;
49
+ return 0;
50
+ },
51
+ showHidden: false,
52
+ depth: null
53
+ }));
54
+ }
55
+ async function configAsync(projectRoot, options) {
56
+ if (options.type) {
57
+ _assert.default.match(options.type, /^(public|prebuild|introspect)$/);
58
+ }
59
+ let config;
60
+ if (options.type === "prebuild") {
61
+ const { getPrebuildConfigAsync } = await Promise.resolve().then(function() {
62
+ return _interopRequireWildcard(require("@expo/prebuild-config"));
63
+ });
64
+ config = await (0, _profile).profile(getPrebuildConfigAsync)(projectRoot, {
65
+ platforms: [
66
+ "ios",
67
+ "android"
68
+ ]
69
+ });
70
+ } else if (options.type === "introspect") {
71
+ const { getPrebuildConfigAsync } = await Promise.resolve().then(function() {
72
+ return _interopRequireWildcard(require("@expo/prebuild-config"));
73
+ });
74
+ const { compileModsAsync } = await Promise.resolve().then(function() {
75
+ return _interopRequireWildcard(require("@expo/config-plugins/build/plugins/mod-compiler"));
76
+ });
77
+ config = await (0, _profile).profile(getPrebuildConfigAsync)(projectRoot, {
78
+ platforms: [
79
+ "ios",
80
+ "android"
81
+ ]
82
+ });
83
+ await compileModsAsync(config.exp, {
84
+ projectRoot,
85
+ introspect: true,
86
+ platforms: [
87
+ "ios",
88
+ "android"
89
+ ],
90
+ assertMissingModProviders: false
91
+ });
92
+ // @ts-ignore
93
+ delete config.modRequest;
94
+ // @ts-ignore
95
+ delete config.modResults;
96
+ } else if (options.type === "public") {
97
+ config = (0, _profile).profile(_config.getConfig)(projectRoot, {
98
+ skipSDKVersionRequirement: true,
99
+ isPublicConfig: true
100
+ });
101
+ } else if (options.type) {
102
+ throw new _errors.CommandError(`Invalid option: --type ${options.type}. Valid options are: public, prebuild`);
103
+ } else {
104
+ config = (0, _profile).profile(_config.getConfig)(projectRoot, {
105
+ skipSDKVersionRequirement: true
106
+ });
107
+ }
108
+ const configOutput = options.full ? config : config.exp;
109
+ if (!options.json) {
110
+ Log.log();
111
+ logConfig(configOutput);
112
+ Log.log();
113
+ } else {
114
+ Log.log(JSON.stringify(configOutput));
115
+ }
116
+ }
117
+
118
+ //# sourceMappingURL=configAsync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/config/configAsync.ts"],"sourcesContent":["import { ExpoConfig, getConfig, ProjectConfig } from '@expo/config';\nimport assert from 'assert';\nimport util from 'util';\n\nimport * as Log from '../log';\nimport { CommandError } from '../utils/errors';\nimport { profile } from '../utils/profile';\n\ntype Options = {\n type?: string;\n full?: boolean;\n json?: boolean;\n};\n\nexport function logConfig(config: ExpoConfig | ProjectConfig) {\n const isObjStr = (str: string): boolean => /^\\w+: {/g.test(str);\n Log.log(\n util.inspect(config, {\n colors: true,\n compact: false,\n // Sort objects to the end so that smaller values aren't hidden between large objects.\n sorted(a: string, b: string) {\n if (isObjStr(a)) return 1;\n if (isObjStr(b)) return -1;\n return 0;\n },\n showHidden: false,\n depth: null,\n })\n );\n}\n\nexport async function configAsync(projectRoot: string, options: Options) {\n if (options.type) {\n assert.match(options.type, /^(public|prebuild|introspect)$/);\n }\n\n let config: ProjectConfig;\n\n if (options.type === 'prebuild') {\n const { getPrebuildConfigAsync } = await import('@expo/prebuild-config');\n\n config = await profile(getPrebuildConfigAsync)(projectRoot, {\n platforms: ['ios', 'android'],\n });\n } else if (options.type === 'introspect') {\n const { getPrebuildConfigAsync } = await import('@expo/prebuild-config');\n const { compileModsAsync } = await import('@expo/config-plugins/build/plugins/mod-compiler');\n\n config = await profile(getPrebuildConfigAsync)(projectRoot, {\n platforms: ['ios', 'android'],\n });\n\n await compileModsAsync(config.exp, {\n projectRoot,\n introspect: true,\n platforms: ['ios', 'android'],\n assertMissingModProviders: false,\n });\n // @ts-ignore\n delete config.modRequest;\n // @ts-ignore\n delete config.modResults;\n } else if (options.type === 'public') {\n config = profile(getConfig)(projectRoot, {\n skipSDKVersionRequirement: true,\n isPublicConfig: true,\n });\n } else if (options.type) {\n throw new CommandError(\n `Invalid option: --type ${options.type}. Valid options are: public, prebuild`\n );\n } else {\n config = profile(getConfig)(projectRoot, {\n skipSDKVersionRequirement: true,\n });\n }\n\n const configOutput = options.full ? config : config.exp;\n\n if (!options.json) {\n Log.log();\n logConfig(configOutput);\n Log.log();\n } else {\n Log.log(JSON.stringify(configOutput));\n }\n}\n"],"names":["logConfig","configAsync","Log","config","isObjStr","str","test","log","util","inspect","colors","compact","sorted","a","b","showHidden","depth","projectRoot","options","type","assert","match","getPrebuildConfigAsync","profile","platforms","compileModsAsync","exp","introspect","assertMissingModProviders","modRequest","modResults","getConfig","skipSDKVersionRequirement","isPublicConfig","CommandError","configOutput","full","json","JSON","stringify"],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.expoConfig = void 0;
7
+ var _chalk = _interopRequireDefault(require("chalk"));
8
+ var Log = _interopRequireWildcard(require("../log"));
9
+ var _args = require("../utils/args");
10
+ function _interopRequireDefault(obj) {
11
+ return obj && obj.__esModule ? obj : {
12
+ default: obj
13
+ };
14
+ }
15
+ function _interopRequireWildcard(obj) {
16
+ if (obj && obj.__esModule) {
17
+ return obj;
18
+ } else {
19
+ var newObj = {};
20
+ if (obj != null) {
21
+ for(var key in obj){
22
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
23
+ var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};
24
+ if (desc.get || desc.set) {
25
+ Object.defineProperty(newObj, key, desc);
26
+ } else {
27
+ newObj[key] = obj[key];
28
+ }
29
+ }
30
+ }
31
+ }
32
+ newObj.default = obj;
33
+ return newObj;
34
+ }
35
+ }
36
+ const expoConfig = async (argv)=>{
37
+ const args = (0, _args).assertArgs({
38
+ // Types
39
+ "--help": Boolean,
40
+ "--full": Boolean,
41
+ "--json": Boolean,
42
+ "--type": String,
43
+ // Aliases
44
+ "-h": "--help",
45
+ "-t": "--type"
46
+ }, argv);
47
+ if (args["--help"]) {
48
+ Log.exit(_chalk.default`
49
+ {bold Description}
50
+ Show the project config
51
+
52
+ {bold Usage}
53
+ $ npx expo config <dir>
54
+
55
+ <dir> is the directory of the Expo project.
56
+ Defaults to the current working directory.
57
+
58
+ Options
59
+ --full Include all project config data
60
+ --json Output in JSON format
61
+ -t, --type <public|prebuild|introspect> Type of config to show
62
+ -h, --help Output usage information
63
+ `, 0);
64
+ }
65
+ // Load modules after the help prompt so `npx expo config -h` shows as fast as possible.
66
+ const [// ./configAsync
67
+ { configAsync }, // ../utils/errors
68
+ { logCmdError }, ] = await Promise.all([
69
+ Promise.resolve().then(function() {
70
+ return _interopRequireWildcard(require("./configAsync"));
71
+ }),
72
+ Promise.resolve().then(function() {
73
+ return _interopRequireWildcard(require("../utils/errors"));
74
+ })
75
+ ]);
76
+ return configAsync((0, _args).getProjectRoot(args), {
77
+ // Parsed options
78
+ full: args["--full"],
79
+ json: args["--json"],
80
+ type: args["--type"]
81
+ }).catch(logCmdError);
82
+ };
83
+ exports.expoConfig = expoConfig;
84
+
85
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/config/index.ts"],"sourcesContent":["#!/usr/bin/env node\nimport chalk from 'chalk';\n\nimport { Command } from '../../bin/cli';\nimport * as Log from '../log';\nimport { assertArgs, getProjectRoot } from '../utils/args';\n\nexport const expoConfig: Command = async (argv) => {\n const args = assertArgs(\n {\n // Types\n '--help': Boolean,\n '--full': Boolean,\n '--json': Boolean,\n '--type': String,\n // Aliases\n '-h': '--help',\n '-t': '--type',\n },\n argv\n );\n\n if (args['--help']) {\n Log.exit(\n chalk`\n {bold Description}\n Show the project config\n\n {bold Usage}\n $ npx expo config <dir>\n\n <dir> is the directory of the Expo project.\n Defaults to the current working directory.\n\n Options\n --full Include all project config data\n --json Output in JSON format\n -t, --type <public|prebuild|introspect> Type of config to show\n -h, --help Output usage information\n `,\n 0\n );\n }\n\n // Load modules after the help prompt so `npx expo config -h` shows as fast as possible.\n const [\n // ./configAsync\n { configAsync },\n // ../utils/errors\n { logCmdError },\n ] = await Promise.all([import('./configAsync'), import('../utils/errors')]);\n\n return configAsync(getProjectRoot(args), {\n // Parsed options\n full: args['--full'],\n json: args['--json'],\n type: args['--type'],\n }).catch(logCmdError);\n};\n"],"names":["Log","expoConfig","argv","args","assertArgs","Boolean","String","exit","chalk","configAsync","logCmdError","Promise","all","getProjectRoot","full","json","type","catch"],"mappings":"AAAA;;;;;;AACkB,IAAA,MAAO,kCAAP,OAAO,EAAA;AAGbA,IAAAA,GAAG,mCAAM,QAAQ,EAAd;AAC4B,IAAA,KAAe,WAAf,eAAe,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEnD,MAAMC,UAAU,GAAY,OAAOC,IAAI,GAAK;IACjD,MAAMC,IAAI,GAAGC,CAAAA,GAAAA,KAAU,AAYtB,CAAA,WAZsB,CACrB;QACE,QAAQ;QACR,QAAQ,EAAEC,OAAO;QACjB,QAAQ,EAAEA,OAAO;QACjB,QAAQ,EAAEA,OAAO;QACjB,QAAQ,EAAEC,MAAM;QAChB,UAAU;QACV,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,QAAQ;KACf,EACDJ,IAAI,CACL,AAAC;IAEF,IAAIC,IAAI,CAAC,QAAQ,CAAC,EAAE;QAClBH,GAAG,CAACO,IAAI,CACNC,MAAK,QAAA,CAAC;;;;;;;;;;;;;;;IAeR,CAAC,EACC,CAAC,CACF,CAAC;KACH;IAED,wFAAwF;IACxF,MAAM,CACJ,gBAAgB;IAChB,EAAEC,WAAW,CAAA,EAAE,EACf,kBAAkB;IAClB,EAAEC,WAAW,CAAA,EAAE,GAChB,GAAG,MAAMC,OAAO,CAACC,GAAG,CAAC;QAAC;mDAAO,eAAe;UAAC;QAAE;mDAAO,iBAAiB;UAAC;KAAC,CAAC,AAAC;IAE5E,OAAOH,WAAW,CAACI,CAAAA,GAAAA,KAAc,AAAM,CAAA,eAAN,CAACV,IAAI,CAAC,EAAE;QACvC,iBAAiB;QACjBW,IAAI,EAAEX,IAAI,CAAC,QAAQ,CAAC;QACpBY,IAAI,EAAEZ,IAAI,CAAC,QAAQ,CAAC;QACpBa,IAAI,EAAEb,IAAI,CAAC,QAAQ,CAAC;KACrB,CAAC,CAACc,KAAK,CAACP,WAAW,CAAC,CAAC;CACvB,AAAC;QAnDWT,UAAU,GAAVA,UAAU"}
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ exports.checkPackagesAsync = checkPackagesAsync;
6
+ var _config = require("@expo/config");
7
+ var _chalk = _interopRequireDefault(require("chalk"));
8
+ var Log = _interopRequireWildcard(require("../log"));
9
+ var _validateDependenciesVersions = require("../start/doctor/dependencies/validateDependenciesVersions");
10
+ var _env = require("../utils/env");
11
+ var _prompts = require("../utils/prompts");
12
+ var _installAsync = require("./installAsync");
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
+ async function checkPackagesAsync(projectRoot, { packages , packageManager , options: { fix } , packageManagerArguments }) {
40
+ // Read the project Expo config without plugins.
41
+ const { exp , pkg } = (0, _config).getConfig(projectRoot, {
42
+ // Sometimes users will add a plugin to the config before installing the library,
43
+ // this wouldn't work unless we dangerously disable plugin serialization.
44
+ skipPlugins: true
45
+ });
46
+ const dependencies = await (0, _validateDependenciesVersions).getVersionedDependenciesAsync(projectRoot, exp, pkg, packages);
47
+ if (!dependencies.length) {
48
+ Log.exit(_chalk.default.greenBright("Dependencies are up to date"), 0);
49
+ }
50
+ (0, _validateDependenciesVersions).logIncorrectDependencies(dependencies);
51
+ const value = // If `--fix` then always fix.
52
+ fix || // Otherwise prompt to fix when not running in CI.
53
+ (!_env.env.CI && await (0, _prompts).confirmAsync({
54
+ message: "Fix dependencies?"
55
+ }).catch(()=>false
56
+ ));
57
+ if (value) {
58
+ // Just pass in the names, the install function will resolve the versions again.
59
+ const fixedDependencies = dependencies.map((dependency)=>dependency.packageName
60
+ );
61
+ Log.debug("Installing fixed dependencies:", fixedDependencies);
62
+ // Install the corrected dependencies.
63
+ return (0, _installAsync).installPackagesAsync(projectRoot, {
64
+ packageManager,
65
+ packages: fixedDependencies,
66
+ packageManagerArguments,
67
+ sdkVersion: exp.sdkVersion
68
+ });
69
+ }
70
+ // Exit with non-zero exit code if any of the dependencies are out of date.
71
+ Log.exit(_chalk.default.red("Found outdated dependencies"), 1);
72
+ }
73
+
74
+ //# sourceMappingURL=checkPackages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/install/checkPackages.ts"],"sourcesContent":["import { getConfig } from '@expo/config';\nimport * as PackageManager from '@expo/package-manager';\nimport chalk from 'chalk';\n\nimport * as Log from '../log';\nimport {\n getVersionedDependenciesAsync,\n logIncorrectDependencies,\n} from '../start/doctor/dependencies/validateDependenciesVersions';\nimport { env } from '../utils/env';\nimport { confirmAsync } from '../utils/prompts';\nimport { installPackagesAsync } from './installAsync';\nimport { Options } from './resolveOptions';\n\n// Exposed for testing.\nexport async function checkPackagesAsync(\n projectRoot: string,\n {\n packages,\n packageManager,\n options: { fix },\n packageManagerArguments,\n }: {\n /**\n * List of packages to version\n * @example ['uuid', 'react-native-reanimated@latest']\n */\n packages: string[];\n /** Package manager to use when installing the versioned packages. */\n packageManager: PackageManager.NpmPackageManager | PackageManager.YarnPackageManager;\n\n /** How the check should resolve */\n options: Pick<Options, 'fix'>;\n /**\n * Extra parameters to pass to the `packageManager` when installing versioned packages.\n * @example ['--no-save']\n */\n packageManagerArguments: string[];\n }\n) {\n // Read the project Expo config without plugins.\n const { exp, pkg } = getConfig(projectRoot, {\n // Sometimes users will add a plugin to the config before installing the library,\n // this wouldn't work unless we dangerously disable plugin serialization.\n skipPlugins: true,\n });\n\n const dependencies = await getVersionedDependenciesAsync(projectRoot, exp, pkg, packages);\n\n if (!dependencies.length) {\n Log.exit(chalk.greenBright('Dependencies are up to date'), 0);\n }\n\n logIncorrectDependencies(dependencies);\n\n const value =\n // If `--fix` then always fix.\n fix ||\n // Otherwise prompt to fix when not running in CI.\n (!env.CI && (await confirmAsync({ message: 'Fix dependencies?' }).catch(() => false)));\n\n if (value) {\n // Just pass in the names, the install function will resolve the versions again.\n const fixedDependencies = dependencies.map((dependency) => dependency.packageName);\n Log.debug('Installing fixed dependencies:', fixedDependencies);\n // Install the corrected dependencies.\n return installPackagesAsync(projectRoot, {\n packageManager,\n packages: fixedDependencies,\n packageManagerArguments,\n sdkVersion: exp.sdkVersion!,\n });\n }\n // Exit with non-zero exit code if any of the dependencies are out of date.\n Log.exit(chalk.red('Found outdated dependencies'), 1);\n}\n"],"names":["checkPackagesAsync","Log","projectRoot","packages","packageManager","options","fix","packageManagerArguments","exp","pkg","getConfig","skipPlugins","dependencies","getVersionedDependenciesAsync","length","exit","chalk","greenBright","logIncorrectDependencies","value","env","CI","confirmAsync","message","catch","fixedDependencies","map","dependency","packageName","debug","installPackagesAsync","sdkVersion","red"],"mappings":"AAAA;;;;QAesBA,kBAAkB,GAAlBA,kBAAkB;AAfd,IAAA,OAAc,WAAd,cAAc,CAAA;AAEtB,IAAA,MAAO,kCAAP,OAAO,EAAA;AAEbC,IAAAA,GAAG,mCAAM,QAAQ,EAAd;AAIR,IAAA,6BAA2D,WAA3D,2DAA2D,CAAA;AAC9C,IAAA,IAAc,WAAd,cAAc,CAAA;AACL,IAAA,QAAkB,WAAlB,kBAAkB,CAAA;AACV,IAAA,aAAgB,WAAhB,gBAAgB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAI9C,eAAeD,kBAAkB,CACtCE,WAAmB,EACnB,EACEC,QAAQ,CAAA,EACRC,cAAc,CAAA,EACdC,OAAO,EAAE,EAAEC,GAAG,CAAA,EAAE,CAAA,EAChBC,uBAAuB,CAAA,EAiBxB,EACD;IACA,gDAAgD;IAChD,MAAM,EAAEC,GAAG,CAAA,EAAEC,GAAG,CAAA,EAAE,GAAGC,CAAAA,GAAAA,OAAS,AAI5B,CAAA,UAJ4B,CAACR,WAAW,EAAE;QAC1C,iFAAiF;QACjF,yEAAyE;QACzES,WAAW,EAAE,IAAI;KAClB,CAAC,AAAC;IAEH,MAAMC,YAAY,GAAG,MAAMC,CAAAA,GAAAA,6BAA6B,AAAiC,CAAA,8BAAjC,CAACX,WAAW,EAAEM,GAAG,EAAEC,GAAG,EAAEN,QAAQ,CAAC,AAAC;IAE1F,IAAI,CAACS,YAAY,CAACE,MAAM,EAAE;QACxBb,GAAG,CAACc,IAAI,CAACC,MAAK,QAAA,CAACC,WAAW,CAAC,6BAA6B,CAAC,EAAE,CAAC,CAAC,CAAC;KAC/D;IAEDC,CAAAA,GAAAA,6BAAwB,AAAc,CAAA,yBAAd,CAACN,YAAY,CAAC,CAAC;IAEvC,MAAMO,KAAK,GACT,8BAA8B;IAC9Bb,GAAG,IACH,kDAAkD;IAClD,CAAC,CAACc,IAAG,IAAA,CAACC,EAAE,IAAK,MAAMC,CAAAA,GAAAA,QAAY,AAAkC,CAAA,aAAlC,CAAC;QAAEC,OAAO,EAAE,mBAAmB;KAAE,CAAC,CAACC,KAAK,CAAC,IAAM,KAAK;IAAA,CAAC,AAAC,CAAC,AAAC;IAEzF,IAAIL,KAAK,EAAE;QACT,gFAAgF;QAChF,MAAMM,iBAAiB,GAAGb,YAAY,CAACc,GAAG,CAAC,CAACC,UAAU,GAAKA,UAAU,CAACC,WAAW;QAAA,CAAC,AAAC;QACnF3B,GAAG,CAAC4B,KAAK,CAAC,gCAAgC,EAAEJ,iBAAiB,CAAC,CAAC;QAC/D,sCAAsC;QACtC,OAAOK,CAAAA,GAAAA,aAAoB,AAKzB,CAAA,qBALyB,CAAC5B,WAAW,EAAE;YACvCE,cAAc;YACdD,QAAQ,EAAEsB,iBAAiB;YAC3BlB,uBAAuB;YACvBwB,UAAU,EAAEvB,GAAG,CAACuB,UAAU;SAC3B,CAAC,CAAC;KACJ;IACD,2EAA2E;IAC3E9B,GAAG,CAACc,IAAI,CAACC,MAAK,QAAA,CAACgB,GAAG,CAAC,6BAA6B,CAAC,EAAE,CAAC,CAAC,CAAC;CACvD"}