@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,94 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ exports.wrapFetchWithCredentials = wrapFetchWithCredentials;
6
+ exports.createCachedFetch = createCachedFetch;
7
+ exports.fetchAsync = void 0;
8
+ var _getUserState = require("@expo/config/build/getUserState");
9
+ var _nodeFetch = _interopRequireDefault(require("node-fetch"));
10
+ var _path = _interopRequireDefault(require("path"));
11
+ var _env = require("../../utils/env");
12
+ var _endpoint = require("../endpoint");
13
+ var _userSettings = _interopRequireDefault(require("../user/UserSettings"));
14
+ var _fileSystemCache = require("./cache/FileSystemCache");
15
+ var _wrapFetchWithCache = require("./cache/wrapFetchWithCache");
16
+ var _wrapFetchWithBaseUrl = require("./wrapFetchWithBaseUrl");
17
+ var _wrapFetchWithOffline = require("./wrapFetchWithOffline");
18
+ function _interopRequireDefault(obj) {
19
+ return obj && obj.__esModule ? obj : {
20
+ default: obj
21
+ };
22
+ }
23
+ class ApiV2Error extends Error {
24
+ name = "ApiV2Error";
25
+ constructor(response){
26
+ super(response.message);
27
+ this.expoApiV2ErrorCode = response.code;
28
+ this.expoApiV2ErrorDetails = response.details;
29
+ this.expoApiV2ErrorServerStack = response.stack;
30
+ this.expoApiV2ErrorMetadata = response.metadata;
31
+ }
32
+ }
33
+ exports.ApiV2Error = ApiV2Error;
34
+ class UnexpectedServerError extends Error {
35
+ name = "UnexpectedServerError";
36
+ }
37
+ exports.UnexpectedServerError = UnexpectedServerError;
38
+ function wrapFetchWithCredentials(fetchFunction) {
39
+ return async function fetchWithCredentials(url, options = {}) {
40
+ if (Array.isArray(options.headers)) {
41
+ throw new Error("request headers must be in object form");
42
+ }
43
+ var _headers;
44
+ const resolvedHeaders = (_headers = options.headers) != null ? _headers : {};
45
+ const token = _userSettings.default.getAccessToken();
46
+ if (token) {
47
+ resolvedHeaders.authorization = `Bearer ${token}`;
48
+ } else {
49
+ var ref;
50
+ const sessionSecret = (ref = _userSettings.default.getSession()) == null ? void 0 : ref.sessionSecret;
51
+ if (sessionSecret) {
52
+ resolvedHeaders["expo-session"] = sessionSecret;
53
+ }
54
+ }
55
+ const results = await fetchFunction(url, {
56
+ ...options,
57
+ headers: resolvedHeaders
58
+ });
59
+ if (results.status >= 400 && results.status < 500) {
60
+ const body = await results.text();
61
+ try {
62
+ var ref1;
63
+ const data = JSON.parse(body);
64
+ if (data == null ? void 0 : (ref1 = data.errors) == null ? void 0 : ref1.length) {
65
+ throw new ApiV2Error(data.errors[0]);
66
+ }
67
+ } catch (error) {
68
+ // Server returned non-json response.
69
+ if (error.message.includes("in JSON at position")) {
70
+ throw new UnexpectedServerError(body);
71
+ }
72
+ throw error;
73
+ }
74
+ }
75
+ return results;
76
+ };
77
+ }
78
+ const fetchWithOffline = (0, _wrapFetchWithOffline).wrapFetchWithOffline(_nodeFetch.default);
79
+ const fetchWithBaseUrl = (0, _wrapFetchWithBaseUrl).wrapFetchWithBaseUrl(fetchWithOffline, (0, _endpoint).getExpoApiBaseUrl() + "/v2/");
80
+ const fetchWithCredentials = wrapFetchWithCredentials(fetchWithBaseUrl);
81
+ function createCachedFetch({ fetch , cacheDirectory , ttl , skipCache }) {
82
+ // Disable all caching in EXPO_BETA.
83
+ if (skipCache || _env.env.EXPO_BETA || _env.env.EXPO_NO_CACHE) {
84
+ return fetch != null ? fetch : fetchWithCredentials;
85
+ }
86
+ return (0, _wrapFetchWithCache).wrapFetchWithCache(fetch != null ? fetch : fetchWithCredentials, new _fileSystemCache.FileSystemCache({
87
+ cacheDirectory: _path.default.join((0, _getUserState).getExpoHomeDirectory(), cacheDirectory),
88
+ ttl
89
+ }));
90
+ }
91
+ const fetchAsync = wrapFetchWithCredentials(fetchWithBaseUrl);
92
+ exports.fetchAsync = fetchAsync;
93
+
94
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/api/rest/client.ts"],"sourcesContent":["import { getExpoHomeDirectory } from '@expo/config/build/getUserState';\nimport { JSONValue } from '@expo/json-file';\nimport fetchInstance from 'node-fetch';\nimport path from 'path';\n\nimport { env } from '../../utils/env';\nimport { getExpoApiBaseUrl } from '../endpoint';\nimport UserSettings from '../user/UserSettings';\nimport { FileSystemCache } from './cache/FileSystemCache';\nimport { wrapFetchWithCache } from './cache/wrapFetchWithCache';\nimport { FetchLike } from './client.types';\nimport { wrapFetchWithBaseUrl } from './wrapFetchWithBaseUrl';\nimport { wrapFetchWithOffline } from './wrapFetchWithOffline';\n\nexport class ApiV2Error extends Error {\n readonly name = 'ApiV2Error';\n readonly expoApiV2ErrorCode: string;\n readonly expoApiV2ErrorDetails?: JSONValue;\n readonly expoApiV2ErrorServerStack?: string;\n readonly expoApiV2ErrorMetadata?: object;\n\n constructor(response: {\n message: string;\n code: string;\n stack?: string;\n details?: JSONValue;\n metadata?: object;\n }) {\n super(response.message);\n this.expoApiV2ErrorCode = response.code;\n this.expoApiV2ErrorDetails = response.details;\n this.expoApiV2ErrorServerStack = response.stack;\n this.expoApiV2ErrorMetadata = response.metadata;\n }\n}\n\n/**\n * An Expo server error that didn't return the expected error JSON information.\n * The only 'expected' place for this is in testing, all other cases are bugs with the server.\n */\nexport class UnexpectedServerError extends Error {\n readonly name = 'UnexpectedServerError';\n}\n\n/**\n * @returns a `fetch` function that will inject user authentication information and handle errors from the Expo API.\n */\nexport function wrapFetchWithCredentials(fetchFunction: FetchLike): FetchLike {\n return async function fetchWithCredentials(url, options = {}) {\n if (Array.isArray(options.headers)) {\n throw new Error('request headers must be in object form');\n }\n\n const resolvedHeaders = options.headers ?? ({} as any);\n\n const token = UserSettings.getAccessToken();\n if (token) {\n resolvedHeaders.authorization = `Bearer ${token}`;\n } else {\n const sessionSecret = UserSettings.getSession()?.sessionSecret;\n if (sessionSecret) {\n resolvedHeaders['expo-session'] = sessionSecret;\n }\n }\n\n const results = await fetchFunction(url, {\n ...options,\n headers: resolvedHeaders,\n });\n\n if (results.status >= 400 && results.status < 500) {\n const body = await results.text();\n try {\n const data = JSON.parse(body);\n if (data?.errors?.length) {\n throw new ApiV2Error(data.errors[0]);\n }\n } catch (error: any) {\n // Server returned non-json response.\n if (error.message.includes('in JSON at position')) {\n throw new UnexpectedServerError(body);\n }\n throw error;\n }\n }\n return results;\n };\n}\n\nconst fetchWithOffline = wrapFetchWithOffline(fetchInstance);\n\nconst fetchWithBaseUrl = wrapFetchWithBaseUrl(fetchWithOffline, getExpoApiBaseUrl() + '/v2/');\n\nconst fetchWithCredentials = wrapFetchWithCredentials(fetchWithBaseUrl);\n\n/**\n * Create an instance of the fully qualified fetch command (auto authentication and api) but with caching in the '~/.expo' directory.\n * Caching is disabled automatically if the EXPO_NO_CACHE or EXPO_BETA environment variables are enabled.\n */\nexport function createCachedFetch({\n fetch,\n cacheDirectory,\n ttl,\n skipCache,\n}: {\n fetch?: FetchLike;\n cacheDirectory: string;\n ttl?: number;\n skipCache?: boolean;\n}): FetchLike {\n // Disable all caching in EXPO_BETA.\n if (skipCache || env.EXPO_BETA || env.EXPO_NO_CACHE) {\n return fetch ?? fetchWithCredentials;\n }\n\n return wrapFetchWithCache(\n fetch ?? fetchWithCredentials,\n new FileSystemCache({\n cacheDirectory: path.join(getExpoHomeDirectory(), cacheDirectory),\n ttl,\n })\n );\n}\n\n/** Instance of fetch with automatic base URL pointing to the Expo API, user credential injection, and API error handling. Caching not included. */\nexport const fetchAsync = wrapFetchWithCredentials(fetchWithBaseUrl);\n"],"names":["wrapFetchWithCredentials","createCachedFetch","ApiV2Error","Error","name","constructor","response","message","expoApiV2ErrorCode","code","expoApiV2ErrorDetails","details","expoApiV2ErrorServerStack","stack","expoApiV2ErrorMetadata","metadata","UnexpectedServerError","fetchFunction","fetchWithCredentials","url","options","Array","isArray","headers","resolvedHeaders","token","UserSettings","getAccessToken","authorization","sessionSecret","getSession","results","status","body","text","data","JSON","parse","errors","length","error","includes","fetchWithOffline","wrapFetchWithOffline","fetchInstance","fetchWithBaseUrl","wrapFetchWithBaseUrl","getExpoApiBaseUrl","fetch","cacheDirectory","ttl","skipCache","env","EXPO_BETA","EXPO_NO_CACHE","wrapFetchWithCache","FileSystemCache","path","join","getExpoHomeDirectory","fetchAsync"],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+
6
+ //# sourceMappingURL=client.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/api/rest/client.types.ts"],"sourcesContent":["import { RequestInfo, RequestInit, Response } from 'node-fetch';\nimport { URLSearchParams } from 'url';\n\nexport type ProgressCallback = (props: {\n /** Number ranging from 0 to 1 representing the download percentage. */\n progress: number;\n /** Total size of the download, in bytes. */\n total: number;\n /** Current amount of data downloaded, in bytes. */\n loaded: number;\n}) => void;\n\n/**\n * Represents a `fetch`-like function. Used since `typeof fetch` has statics we don't\n * use and aren't interested in hoisting every time we wrap fetch with extra features.\n */\nexport type FetchLike = (\n url: RequestInfo,\n init?: RequestInit & {\n searchParams?: URLSearchParams;\n /** Progress callback, only implemented when `wrapFetchWithProgress` is used. */\n onProgress?: ProgressCallback;\n }\n) => Promise<Response>;\n"],"names":[],"mappings":"AAAA"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ exports.wrapFetchWithBaseUrl = wrapFetchWithBaseUrl;
6
+ var _url = require("url");
7
+ function wrapFetchWithBaseUrl(fetch, baseUrl) {
8
+ return (url, init)=>{
9
+ if (typeof url !== "string") {
10
+ throw new TypeError("Custom fetch function only accepts a string URL as the first parameter");
11
+ }
12
+ const parsed = new _url.URL(url, baseUrl);
13
+ if (init == null ? void 0 : init.searchParams) {
14
+ parsed.search = init.searchParams.toString();
15
+ }
16
+ return fetch(parsed.toString(), init);
17
+ };
18
+ }
19
+
20
+ //# sourceMappingURL=wrapFetchWithBaseUrl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/api/rest/wrapFetchWithBaseUrl.ts"],"sourcesContent":["import { URL } from 'url';\n\nimport { FetchLike } from './client.types';\n\n/**\n * Wrap a fetch function with support for a predefined base URL.\n * This implementation works like the browser fetch, applying the input to a prefix base URL.\n */\nexport function wrapFetchWithBaseUrl(fetch: FetchLike, baseUrl: string): FetchLike {\n return (url, init) => {\n if (typeof url !== 'string') {\n throw new TypeError('Custom fetch function only accepts a string URL as the first parameter');\n }\n const parsed = new URL(url, baseUrl);\n if (init?.searchParams) {\n parsed.search = init.searchParams.toString();\n }\n return fetch(parsed.toString(), init);\n };\n}\n"],"names":["wrapFetchWithBaseUrl","fetch","baseUrl","url","init","TypeError","parsed","URL","searchParams","search","toString"],"mappings":"AAAA;;;;QAQgBA,oBAAoB,GAApBA,oBAAoB;AARhB,IAAA,IAAK,WAAL,KAAK,CAAA;AAQlB,SAASA,oBAAoB,CAACC,KAAgB,EAAEC,OAAe,EAAa;IACjF,OAAO,CAACC,GAAG,EAAEC,IAAI,GAAK;QACpB,IAAI,OAAOD,GAAG,KAAK,QAAQ,EAAE;YAC3B,MAAM,IAAIE,SAAS,CAAC,wEAAwE,CAAC,CAAC;SAC/F;QACD,MAAMC,MAAM,GAAG,IAAIC,IAAG,IAAA,CAACJ,GAAG,EAAED,OAAO,CAAC,AAAC;QACrC,IAAIE,IAAI,QAAc,GAAlBA,KAAAA,CAAkB,GAAlBA,IAAI,CAAEI,YAAY,EAAE;YACtBF,MAAM,CAACG,MAAM,GAAGL,IAAI,CAACI,YAAY,CAACE,QAAQ,EAAE,CAAC;SAC9C;QACD,OAAOT,KAAK,CAACK,MAAM,CAACI,QAAQ,EAAE,EAAEN,IAAI,CAAC,CAAC;KACvC,CAAC;CACH"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ exports.wrapFetchWithOffline = wrapFetchWithOffline;
6
+ var Log = _interopRequireWildcard(require("../../log"));
7
+ var _settings = require("../settings");
8
+ function _interopRequireWildcard(obj) {
9
+ if (obj && obj.__esModule) {
10
+ return obj;
11
+ } else {
12
+ var newObj = {};
13
+ if (obj != null) {
14
+ for(var key in obj){
15
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
16
+ var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};
17
+ if (desc.get || desc.set) {
18
+ Object.defineProperty(newObj, key, desc);
19
+ } else {
20
+ newObj[key] = obj[key];
21
+ }
22
+ }
23
+ }
24
+ }
25
+ newObj.default = obj;
26
+ return newObj;
27
+ }
28
+ }
29
+ function wrapFetchWithOffline(fetchFunction) {
30
+ return async function fetchWithOffline(url, options = {}) {
31
+ if (_settings.APISettings.isOffline) {
32
+ Log.debug("[fetch] Offline: Skipping network request: " + url);
33
+ options.timeout = 1;
34
+ }
35
+ return fetchFunction(url, options);
36
+ };
37
+ }
38
+
39
+ //# sourceMappingURL=wrapFetchWithOffline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/api/rest/wrapFetchWithOffline.ts"],"sourcesContent":["import * as Log from '../../log';\nimport { APISettings } from '../settings';\nimport { FetchLike } from './client.types';\n\n/** Wrap fetch with support for APISettings offline mode. */\nexport function wrapFetchWithOffline(fetchFunction: FetchLike): FetchLike {\n return async function fetchWithOffline(url, options = {}) {\n if (APISettings.isOffline) {\n Log.debug('[fetch] Offline: Skipping network request: ' + url);\n options.timeout = 1;\n }\n return fetchFunction(url, options);\n };\n}\n"],"names":["wrapFetchWithOffline","Log","fetchFunction","fetchWithOffline","url","options","APISettings","isOffline","debug","timeout"],"mappings":"AAAA;;;;QAKgBA,oBAAoB,GAApBA,oBAAoB;AALxBC,IAAAA,GAAG,mCAAM,WAAW,EAAjB;AACa,IAAA,SAAa,WAAb,aAAa,CAAA;;;;;;;;;;;;;;;;;;;;;;AAIlC,SAASD,oBAAoB,CAACE,aAAwB,EAAa;IACxE,OAAO,eAAeC,gBAAgB,CAACC,GAAG,EAAEC,OAAO,GAAG,EAAE,EAAE;QACxD,IAAIC,SAAW,YAAA,CAACC,SAAS,EAAE;YACzBN,GAAG,CAACO,KAAK,CAAC,6CAA6C,GAAGJ,GAAG,CAAC,CAAC;YAC/DC,OAAO,CAACI,OAAO,GAAG,CAAC,CAAC;SACrB;QACD,OAAOP,aAAa,CAACE,GAAG,EAAEC,OAAO,CAAC,CAAC;KACpC,CAAC;CACH"}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ exports.wrapFetchWithProgress = wrapFetchWithProgress;
6
+ var Log = _interopRequireWildcard(require("../../log"));
7
+ function _interopRequireWildcard(obj) {
8
+ if (obj && obj.__esModule) {
9
+ return obj;
10
+ } else {
11
+ var newObj = {};
12
+ if (obj != null) {
13
+ for(var key in obj){
14
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
15
+ var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};
16
+ if (desc.get || desc.set) {
17
+ Object.defineProperty(newObj, key, desc);
18
+ } else {
19
+ newObj[key] = obj[key];
20
+ }
21
+ }
22
+ }
23
+ }
24
+ newObj.default = obj;
25
+ return newObj;
26
+ }
27
+ }
28
+ function wrapFetchWithProgress(fetch) {
29
+ return async (url, init)=>{
30
+ const res = await fetch(url, init);
31
+ if (res.ok && (init == null ? void 0 : init.onProgress)) {
32
+ const totalDownloadSize = res.headers.get("Content-Length");
33
+ const total = Number(totalDownloadSize);
34
+ if (!totalDownloadSize || isNaN(total) || total < 0) {
35
+ Log.warn('Progress callback not supported for network request because "Content-Length" header missing or invalid in response from URL:', url.toString());
36
+ return res;
37
+ }
38
+ let length = 0;
39
+ res.body.on("data", (chunk)=>{
40
+ length += chunk.length;
41
+ onProgress();
42
+ });
43
+ res.body.on("end", ()=>{
44
+ onProgress();
45
+ });
46
+ const onProgress = ()=>{
47
+ const progress = length / total;
48
+ init.onProgress == null ? void 0 : init.onProgress({
49
+ progress,
50
+ total,
51
+ loaded: length
52
+ });
53
+ };
54
+ }
55
+ return res;
56
+ };
57
+ }
58
+
59
+ //# sourceMappingURL=wrapFetchWithProgress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/api/rest/wrapFetchWithProgress.ts"],"sourcesContent":["import * as Log from '../../log';\nimport { FetchLike } from './client.types';\n\nexport function wrapFetchWithProgress(fetch: FetchLike): FetchLike {\n return async (url, init) => {\n const res = await fetch(url, init);\n if (res.ok && init?.onProgress) {\n const totalDownloadSize = res.headers.get('Content-Length');\n const total = Number(totalDownloadSize);\n\n if (!totalDownloadSize || isNaN(total) || total < 0) {\n Log.warn(\n 'Progress callback not supported for network request because \"Content-Length\" header missing or invalid in response from URL:',\n url.toString()\n );\n return res;\n }\n\n let length = 0;\n\n res.body.on('data', (chunk) => {\n length += chunk.length;\n onProgress();\n });\n\n res.body.on('end', () => {\n onProgress();\n });\n\n const onProgress = () => {\n const progress = length / total;\n\n init.onProgress?.({\n progress,\n total,\n loaded: length,\n });\n };\n }\n return res;\n };\n}\n"],"names":["wrapFetchWithProgress","Log","fetch","url","init","res","ok","onProgress","totalDownloadSize","headers","get","total","Number","isNaN","warn","toString","length","body","on","chunk","progress","loaded"],"mappings":"AAAA;;;;QAGgBA,qBAAqB,GAArBA,qBAAqB;AAHzBC,IAAAA,GAAG,mCAAM,WAAW,EAAjB;;;;;;;;;;;;;;;;;;;;;;AAGR,SAASD,qBAAqB,CAACE,KAAgB,EAAa;IACjE,OAAO,OAAOC,GAAG,EAAEC,IAAI,GAAK;QAC1B,MAAMC,GAAG,GAAG,MAAMH,KAAK,CAACC,GAAG,EAAEC,IAAI,CAAC,AAAC;QACnC,IAAIC,GAAG,CAACC,EAAE,IAAIF,CAAAA,IAAI,QAAY,GAAhBA,KAAAA,CAAgB,GAAhBA,IAAI,CAAEG,UAAU,CAAA,EAAE;YAC9B,MAAMC,iBAAiB,GAAGH,GAAG,CAACI,OAAO,CAACC,GAAG,CAAC,gBAAgB,CAAC,AAAC;YAC5D,MAAMC,KAAK,GAAGC,MAAM,CAACJ,iBAAiB,CAAC,AAAC;YAExC,IAAI,CAACA,iBAAiB,IAAIK,KAAK,CAACF,KAAK,CAAC,IAAIA,KAAK,GAAG,CAAC,EAAE;gBACnDV,GAAG,CAACa,IAAI,CACN,8HAA8H,EAC9HX,GAAG,CAACY,QAAQ,EAAE,CACf,CAAC;gBACF,OAAOV,GAAG,CAAC;aACZ;YAED,IAAIW,MAAM,GAAG,CAAC,AAAC;YAEfX,GAAG,CAACY,IAAI,CAACC,EAAE,CAAC,MAAM,EAAE,CAACC,KAAK,GAAK;gBAC7BH,MAAM,IAAIG,KAAK,CAACH,MAAM,CAAC;gBACvBT,UAAU,EAAE,CAAC;aACd,CAAC,CAAC;YAEHF,GAAG,CAACY,IAAI,CAACC,EAAE,CAAC,KAAK,EAAE,IAAM;gBACvBX,UAAU,EAAE,CAAC;aACd,CAAC,CAAC;YAEH,MAAMA,UAAU,GAAG,IAAM;gBACvB,MAAMa,QAAQ,GAAGJ,MAAM,GAAGL,KAAK,AAAC;gBAEhCP,IAAI,CAACG,UAAU,QAIb,GAJFH,KAAAA,CAIE,GAJFA,IAAI,CAACG,UAAU,CAAG;oBAChBa,QAAQ;oBACRT,KAAK;oBACLU,MAAM,EAAEL,MAAM;iBACf,CAAC,AApCV,CAoCW;aACJ,AAAC;SACH;QACD,OAAOX,GAAG,CAAC;KACZ,CAAC;CACH"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ exports.APISettings = void 0;
6
+ const APISettings = {
7
+ isOffline: false
8
+ };
9
+ exports.APISettings = APISettings;
10
+
11
+ //# sourceMappingURL=settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/api/settings.ts"],"sourcesContent":["// This file represents temporary globals for the CLI when using the API.\n// Settings should be as minimal as possible since they are globals.\n\nexport const APISettings: {\n /** Should the CLI skip making network requests. */\n isOffline: boolean;\n} = {\n isOffline: false,\n};\n"],"names":["APISettings","isOffline"],"mappings":"AAGA;;;;;AAAO,MAAMA,WAAW,GAGpB;IACFC,SAAS,EAAE,KAAK;CACjB,AAAC;QALWD,WAAW,GAAXA,WAAW"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ exports.signExpoGoManifestAsync = signExpoGoManifestAsync;
6
+ exports.signClassicExpoGoManifestAsync = signClassicExpoGoManifestAsync;
7
+ var _client = require("./rest/client");
8
+ var _actions = require("./user/actions");
9
+ var _user = require("./user/user");
10
+ async function signExpoGoManifestAsync(manifest) {
11
+ await (0, _actions).ensureLoggedInAsync();
12
+ const response = await (0, _client).fetchAsync(`manifest/eas/sign`, {
13
+ method: "POST",
14
+ body: JSON.stringify({
15
+ manifest
16
+ })
17
+ });
18
+ const { data } = await response.json();
19
+ return data.signature;
20
+ }
21
+ async function signClassicExpoGoManifestAsync(manifest) {
22
+ await (0, _actions).ensureLoggedInAsync();
23
+ var _owner;
24
+ const res = await (0, _client).fetchAsync("manifest/sign", {
25
+ method: "POST",
26
+ body: JSON.stringify({
27
+ args: {
28
+ remoteUsername: (_owner = manifest.owner) != null ? _owner : (0, _user).getActorDisplayName(await (0, _user).getUserAsync()),
29
+ remotePackageName: manifest.slug
30
+ },
31
+ manifest: manifest
32
+ })
33
+ });
34
+ const { data } = await res.json();
35
+ return data.response;
36
+ }
37
+
38
+ //# sourceMappingURL=signManifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/api/signManifest.ts"],"sourcesContent":["import { ExpoAppManifest, ExpoUpdatesManifest } from '@expo/config';\nimport { JSONObject } from '@expo/json-file';\n\nimport { fetchAsync } from './rest/client';\nimport { ensureLoggedInAsync } from './user/actions';\nimport { getActorDisplayName, getUserAsync } from './user/user';\n\n/** Sign an Expo Updates manifest to access secure features in sandboxed environments like Expo Go. */\nexport async function signExpoGoManifestAsync(manifest: ExpoUpdatesManifest): Promise<string> {\n await ensureLoggedInAsync();\n const response = await fetchAsync(`manifest/eas/sign`, {\n method: 'POST',\n body: JSON.stringify({\n manifest,\n }),\n });\n const { data } = await response.json();\n return data.signature;\n}\n\n/** Sign a classic manifest to access secure features in sandboxed environments like Expo Go. */\nexport async function signClassicExpoGoManifestAsync(\n manifest: Partial<ExpoAppManifest>\n): Promise<string> {\n await ensureLoggedInAsync();\n const res = await fetchAsync('manifest/sign', {\n method: 'POST',\n body: JSON.stringify({\n args: {\n remoteUsername: manifest.owner ?? getActorDisplayName(await getUserAsync()),\n remotePackageName: manifest.slug,\n },\n manifest: manifest as JSONObject,\n }),\n });\n const { data } = await res.json();\n return data.response;\n}\n"],"names":["signExpoGoManifestAsync","signClassicExpoGoManifestAsync","manifest","ensureLoggedInAsync","response","fetchAsync","method","body","JSON","stringify","data","json","signature","res","args","remoteUsername","owner","getActorDisplayName","getUserAsync","remotePackageName","slug"],"mappings":"AAAA;;;;QAQsBA,uBAAuB,GAAvBA,uBAAuB;QAavBC,8BAA8B,GAA9BA,8BAA8B;AAlBzB,IAAA,OAAe,WAAf,eAAe,CAAA;AACN,IAAA,QAAgB,WAAhB,gBAAgB,CAAA;AACF,IAAA,KAAa,WAAb,aAAa,CAAA;AAGxD,eAAeD,uBAAuB,CAACE,QAA6B,EAAmB;IAC5F,MAAMC,CAAAA,GAAAA,QAAmB,AAAE,CAAA,oBAAF,EAAE,CAAC;IAC5B,MAAMC,QAAQ,GAAG,MAAMC,CAAAA,GAAAA,OAAU,AAK/B,CAAA,WAL+B,CAAC,CAAC,iBAAiB,CAAC,EAAE;QACrDC,MAAM,EAAE,MAAM;QACdC,IAAI,EAAEC,IAAI,CAACC,SAAS,CAAC;YACnBP,QAAQ;SACT,CAAC;KACH,CAAC,AAAC;IACH,MAAM,EAAEQ,IAAI,CAAA,EAAE,GAAG,MAAMN,QAAQ,CAACO,IAAI,EAAE,AAAC;IACvC,OAAOD,IAAI,CAACE,SAAS,CAAC;CACvB;AAGM,eAAeX,8BAA8B,CAClDC,QAAkC,EACjB;IACjB,MAAMC,CAAAA,GAAAA,QAAmB,AAAE,CAAA,oBAAF,EAAE,CAAC;QAKND,MAAc;IAJpC,MAAMW,GAAG,GAAG,MAAMR,CAAAA,GAAAA,OAAU,AAS1B,CAAA,WAT0B,CAAC,eAAe,EAAE;QAC5CC,MAAM,EAAE,MAAM;QACdC,IAAI,EAAEC,IAAI,CAACC,SAAS,CAAC;YACnBK,IAAI,EAAE;gBACJC,cAAc,EAAEb,CAAAA,MAAc,GAAdA,QAAQ,CAACc,KAAK,YAAdd,MAAc,GAAIe,CAAAA,GAAAA,KAAmB,AAAsB,CAAA,oBAAtB,CAAC,MAAMC,CAAAA,GAAAA,KAAY,AAAE,CAAA,aAAF,EAAE,CAAC;gBAC3EC,iBAAiB,EAAEjB,QAAQ,CAACkB,IAAI;aACjC;YACDlB,QAAQ,EAAEA,QAAQ;SACnB,CAAC;KACH,CAAC,AAAC;IACH,MAAM,EAAEQ,IAAI,CAAA,EAAE,GAAG,MAAMG,GAAG,CAACF,IAAI,EAAE,AAAC;IAClC,OAAOD,IAAI,CAACN,QAAQ,CAAC;CACtB"}
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ exports.createSessionInfo = createSessionInfo;
6
+ exports.updateDevelopmentSessionAsync = updateDevelopmentSessionAsync;
7
+ exports.closeDevelopmentSessionAsync = closeDevelopmentSessionAsync;
8
+ var _os = _interopRequireDefault(require("os"));
9
+ var _url = require("url");
10
+ var _errors = require("../utils/errors");
11
+ var _client = require("./rest/client");
12
+ function _interopRequireDefault(obj) {
13
+ return obj && obj.__esModule ? obj : {
14
+ default: obj
15
+ };
16
+ }
17
+ function createSessionInfo({ exp , runtime , url }) {
18
+ return {
19
+ session: {
20
+ description: `${exp.name} on ${_os.default.hostname()}`,
21
+ hostname: _os.default.hostname(),
22
+ platform: runtime,
23
+ config: {
24
+ // TODO: if icons are specified, upload a url for them too so people can distinguish
25
+ description: exp.description,
26
+ name: exp.name,
27
+ slug: exp.slug,
28
+ primaryColor: exp.primaryColor
29
+ },
30
+ url,
31
+ source: "desktop"
32
+ }
33
+ };
34
+ }
35
+ async function updateDevelopmentSessionAsync({ deviceIds , exp , runtime , url }) {
36
+ const searchParams = new _url.URLSearchParams();
37
+ deviceIds.forEach((id)=>{
38
+ searchParams.append("deviceId", id);
39
+ });
40
+ const results = await (0, _client).fetchAsync("development-sessions/notify-alive", {
41
+ searchParams,
42
+ method: "POST",
43
+ body: JSON.stringify({
44
+ data: createSessionInfo({
45
+ exp,
46
+ runtime,
47
+ url
48
+ })
49
+ })
50
+ });
51
+ if (!results.ok) {
52
+ throw new _errors.CommandError("API", `Unexpected response when updating the development session on Expo servers: ${results.statusText}.`);
53
+ }
54
+ }
55
+ async function closeDevelopmentSessionAsync({ deviceIds , url }) {
56
+ const searchParams = new _url.URLSearchParams();
57
+ deviceIds.forEach((id)=>{
58
+ searchParams.append("deviceId", id);
59
+ });
60
+ const results = await (0, _client).fetchAsync("development-sessions/notify-close", {
61
+ searchParams,
62
+ method: "POST",
63
+ body: JSON.stringify({
64
+ session: {
65
+ url
66
+ }
67
+ })
68
+ });
69
+ if (!results.ok) {
70
+ throw new _errors.CommandError("API", `Unexpected response when closing the development session on Expo servers: ${results.statusText}.`);
71
+ }
72
+ }
73
+
74
+ //# sourceMappingURL=updateDevelopmentSession.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/api/updateDevelopmentSession.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config';\nimport os from 'os';\nimport { URLSearchParams } from 'url';\n\nimport { CommandError } from '../utils/errors';\nimport { fetchAsync } from './rest/client';\n\n/** Create the expected session info. */\nexport function createSessionInfo({\n exp,\n runtime,\n url,\n}: {\n exp: Pick<ExpoConfig, 'name' | 'description' | 'slug' | 'primaryColor'>;\n runtime: 'native' | 'web';\n url: string;\n}) {\n return {\n session: {\n description: `${exp.name} on ${os.hostname()}`,\n hostname: os.hostname(),\n platform: runtime,\n config: {\n // TODO: if icons are specified, upload a url for them too so people can distinguish\n description: exp.description,\n name: exp.name,\n slug: exp.slug,\n primaryColor: exp.primaryColor,\n },\n url,\n source: 'desktop',\n },\n };\n}\n\n/** Send a request to Expo API to keep the 'development session' alive for the provided devices. */\nexport async function updateDevelopmentSessionAsync({\n deviceIds,\n exp,\n runtime,\n url,\n}: {\n deviceIds: string[];\n exp: Pick<ExpoConfig, 'name' | 'description' | 'slug' | 'primaryColor'>;\n runtime: 'native' | 'web';\n url: string;\n}) {\n const searchParams = new URLSearchParams();\n deviceIds.forEach((id) => {\n searchParams.append('deviceId', id);\n });\n\n const results = await fetchAsync('development-sessions/notify-alive', {\n searchParams,\n method: 'POST',\n body: JSON.stringify({\n data: createSessionInfo({ exp, runtime, url }),\n }),\n });\n\n if (!results.ok) {\n throw new CommandError(\n 'API',\n `Unexpected response when updating the development session on Expo servers: ${results.statusText}.`\n );\n }\n}\n\n/** Send a request to Expo API to close the 'development session' for the provided devices. */\nexport async function closeDevelopmentSessionAsync({\n deviceIds,\n url,\n}: {\n deviceIds: string[];\n url: string;\n}) {\n const searchParams = new URLSearchParams();\n deviceIds.forEach((id) => {\n searchParams.append('deviceId', id);\n });\n\n const results = await fetchAsync('development-sessions/notify-close', {\n searchParams,\n method: 'POST',\n body: JSON.stringify({\n session: { url },\n }),\n });\n\n if (!results.ok) {\n throw new CommandError(\n 'API',\n `Unexpected response when closing the development session on Expo servers: ${results.statusText}.`\n );\n }\n}\n"],"names":["createSessionInfo","updateDevelopmentSessionAsync","closeDevelopmentSessionAsync","exp","runtime","url","session","description","name","os","hostname","platform","config","slug","primaryColor","source","deviceIds","searchParams","URLSearchParams","forEach","id","append","results","fetchAsync","method","body","JSON","stringify","data","ok","CommandError","statusText"],"mappings":"AAAA;;;;QAQgBA,iBAAiB,GAAjBA,iBAAiB;QA4BXC,6BAA6B,GAA7BA,6BAA6B;QAiC7BC,4BAA4B,GAA5BA,4BAA4B;AApEnC,IAAA,GAAI,kCAAJ,IAAI,EAAA;AACa,IAAA,IAAK,WAAL,KAAK,CAAA;AAER,IAAA,OAAiB,WAAjB,iBAAiB,CAAA;AACnB,IAAA,OAAe,WAAf,eAAe,CAAA;;;;;;AAGnC,SAASF,iBAAiB,CAAC,EAChCG,GAAG,CAAA,EACHC,OAAO,CAAA,EACPC,GAAG,CAAA,EAKJ,EAAE;IACD,OAAO;QACLC,OAAO,EAAE;YACPC,WAAW,EAAE,CAAC,EAAEJ,GAAG,CAACK,IAAI,CAAC,IAAI,EAAEC,GAAE,QAAA,CAACC,QAAQ,EAAE,CAAC,CAAC;YAC9CA,QAAQ,EAAED,GAAE,QAAA,CAACC,QAAQ,EAAE;YACvBC,QAAQ,EAAEP,OAAO;YACjBQ,MAAM,EAAE;gBACN,oFAAoF;gBACpFL,WAAW,EAAEJ,GAAG,CAACI,WAAW;gBAC5BC,IAAI,EAAEL,GAAG,CAACK,IAAI;gBACdK,IAAI,EAAEV,GAAG,CAACU,IAAI;gBACdC,YAAY,EAAEX,GAAG,CAACW,YAAY;aAC/B;YACDT,GAAG;YACHU,MAAM,EAAE,SAAS;SAClB;KACF,CAAC;CACH;AAGM,eAAed,6BAA6B,CAAC,EAClDe,SAAS,CAAA,EACTb,GAAG,CAAA,EACHC,OAAO,CAAA,EACPC,GAAG,CAAA,EAMJ,EAAE;IACD,MAAMY,YAAY,GAAG,IAAIC,IAAe,gBAAA,EAAE,AAAC;IAC3CF,SAAS,CAACG,OAAO,CAAC,CAACC,EAAE,GAAK;QACxBH,YAAY,CAACI,MAAM,CAAC,UAAU,EAAED,EAAE,CAAC,CAAC;KACrC,CAAC,CAAC;IAEH,MAAME,OAAO,GAAG,MAAMC,CAAAA,GAAAA,OAAU,AAM9B,CAAA,WAN8B,CAAC,mCAAmC,EAAE;QACpEN,YAAY;QACZO,MAAM,EAAE,MAAM;QACdC,IAAI,EAAEC,IAAI,CAACC,SAAS,CAAC;YACnBC,IAAI,EAAE5B,iBAAiB,CAAC;gBAAEG,GAAG;gBAAEC,OAAO;gBAAEC,GAAG;aAAE,CAAC;SAC/C,CAAC;KACH,CAAC,AAAC;IAEH,IAAI,CAACiB,OAAO,CAACO,EAAE,EAAE;QACf,MAAM,IAAIC,OAAY,aAAA,CACpB,KAAK,EACL,CAAC,2EAA2E,EAAER,OAAO,CAACS,UAAU,CAAC,CAAC,CAAC,CACpG,CAAC;KACH;CACF;AAGM,eAAe7B,4BAA4B,CAAC,EACjDc,SAAS,CAAA,EACTX,GAAG,CAAA,EAIJ,EAAE;IACD,MAAMY,YAAY,GAAG,IAAIC,IAAe,gBAAA,EAAE,AAAC;IAC3CF,SAAS,CAACG,OAAO,CAAC,CAACC,EAAE,GAAK;QACxBH,YAAY,CAACI,MAAM,CAAC,UAAU,EAAED,EAAE,CAAC,CAAC;KACrC,CAAC,CAAC;IAEH,MAAME,OAAO,GAAG,MAAMC,CAAAA,GAAAA,OAAU,AAM9B,CAAA,WAN8B,CAAC,mCAAmC,EAAE;QACpEN,YAAY;QACZO,MAAM,EAAE,MAAM;QACdC,IAAI,EAAEC,IAAI,CAACC,SAAS,CAAC;YACnBrB,OAAO,EAAE;gBAAED,GAAG;aAAE;SACjB,CAAC;KACH,CAAC,AAAC;IAEH,IAAI,CAACiB,OAAO,CAACO,EAAE,EAAE;QACf,MAAM,IAAIC,OAAY,aAAA,CACpB,KAAK,EACL,CAAC,0EAA0E,EAAER,OAAO,CAACS,UAAU,CAAC,CAAC,CAAC,CACnG,CAAC;KACH;CACF"}
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ exports.default = void 0;
6
+ var _getUserState = require("@expo/config/build/getUserState");
7
+ var _jsonFile = _interopRequireDefault(require("@expo/json-file"));
8
+ var _uuid = require("uuid");
9
+ function _interopRequireDefault(obj) {
10
+ return obj && obj.__esModule ? obj : {
11
+ default: obj
12
+ };
13
+ }
14
+ /** Return the user cache directory. */ function getDirectory() {
15
+ return (0, _getUserState).getExpoHomeDirectory();
16
+ }
17
+ function getFilePath() {
18
+ return (0, _getUserState).getUserStatePath();
19
+ }
20
+ function userSettingsJsonFile() {
21
+ return new _jsonFile.default(getFilePath(), {
22
+ ensureDir: true,
23
+ jsonParseErrorDefault: {},
24
+ cantReadFileDefault: {}
25
+ });
26
+ }
27
+ async function setSessionAsync(sessionData) {
28
+ await UserSettings.setAsync("auth", sessionData, {
29
+ default: {},
30
+ ensureDir: true
31
+ });
32
+ }
33
+ function getSession() {
34
+ try {
35
+ var ref;
36
+ var ref1;
37
+ return (ref1 = (ref = _jsonFile.default.read((0, _getUserState).getUserStatePath())) == null ? void 0 : ref.auth) != null ? ref1 : null;
38
+ } catch (error) {
39
+ if (error.code === "ENOENT") {
40
+ return null;
41
+ }
42
+ throw error;
43
+ }
44
+ }
45
+ function getAccessToken() {
46
+ var _EXPO_TOKEN;
47
+ return (_EXPO_TOKEN = process.env.EXPO_TOKEN) != null ? _EXPO_TOKEN : null;
48
+ }
49
+ // returns an anonymous, unique identifier for a user on the current computer
50
+ async function getAnonymousIdentifierAsync() {
51
+ const settings = await userSettingsJsonFile();
52
+ let id = await settings.getAsync("uuid", null);
53
+ if (!id) {
54
+ id = (0, _uuid).v4();
55
+ await settings.setAsync("uuid", id);
56
+ }
57
+ return id;
58
+ }
59
+ const UserSettings = Object.assign(userSettingsJsonFile(), {
60
+ getSession,
61
+ setSessionAsync,
62
+ getAccessToken,
63
+ getDirectory,
64
+ getFilePath,
65
+ userSettingsJsonFile,
66
+ getAnonymousIdentifierAsync
67
+ });
68
+ var _default = UserSettings;
69
+ exports.default = _default;
70
+
71
+ //# sourceMappingURL=UserSettings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/api/user/UserSettings.ts"],"sourcesContent":["import { getExpoHomeDirectory, getUserStatePath } from '@expo/config/build/getUserState';\nimport JsonFile from '@expo/json-file';\nimport { v4 as uuidv4 } from 'uuid';\n\ntype SessionData = {\n sessionSecret: string;\n // These fields are potentially used by Expo CLI.\n userId: string;\n username: string;\n currentConnection: 'Username-Password-Authentication';\n};\n\nexport type UserSettingsData = {\n auth?: SessionData | null;\n ignoreBundledBinaries?: string[];\n PATH?: string;\n /** Last development code signing ID used for `expo run:ios`. */\n developmentCodeSigningId?: string;\n /** Unique user ID which is generated anonymously and can be cleared locally. */\n uuid?: string;\n};\n\n/** Return the user cache directory. */\nfunction getDirectory() {\n return getExpoHomeDirectory();\n}\n\nfunction getFilePath(): string {\n return getUserStatePath();\n}\n\nfunction userSettingsJsonFile(): JsonFile<UserSettingsData> {\n return new JsonFile<UserSettingsData>(getFilePath(), {\n ensureDir: true,\n jsonParseErrorDefault: {},\n cantReadFileDefault: {},\n });\n}\n\nasync function setSessionAsync(sessionData?: SessionData): Promise<void> {\n await UserSettings.setAsync('auth', sessionData, {\n default: {},\n ensureDir: true,\n });\n}\n\nfunction getSession(): SessionData | null {\n try {\n return JsonFile.read<UserSettingsData>(getUserStatePath())?.auth ?? null;\n } catch (error: any) {\n if (error.code === 'ENOENT') {\n return null;\n }\n throw error;\n }\n}\n\nfunction getAccessToken(): string | null {\n return process.env.EXPO_TOKEN ?? null;\n}\n\n// returns an anonymous, unique identifier for a user on the current computer\nasync function getAnonymousIdentifierAsync(): Promise<string> {\n const settings = await userSettingsJsonFile();\n let id = await settings.getAsync('uuid', null);\n\n if (!id) {\n id = uuidv4();\n await settings.setAsync('uuid', id);\n }\n\n return id;\n}\n\nconst UserSettings = Object.assign(userSettingsJsonFile(), {\n getSession,\n setSessionAsync,\n getAccessToken,\n getDirectory,\n getFilePath,\n userSettingsJsonFile,\n getAnonymousIdentifierAsync,\n});\n\nexport default UserSettings;\n"],"names":["getDirectory","getExpoHomeDirectory","getFilePath","getUserStatePath","userSettingsJsonFile","JsonFile","ensureDir","jsonParseErrorDefault","cantReadFileDefault","setSessionAsync","sessionData","UserSettings","setAsync","default","getSession","read","auth","error","code","getAccessToken","process","env","EXPO_TOKEN","getAnonymousIdentifierAsync","settings","id","getAsync","uuidv4","Object","assign"],"mappings":"AAAA;;;;;AAAuD,IAAA,aAAiC,WAAjC,iCAAiC,CAAA;AACnE,IAAA,SAAiB,kCAAjB,iBAAiB,EAAA;AACT,IAAA,KAAM,WAAN,MAAM,CAAA;;;;;;AAoBnC,uCAAuC,CACvC,SAASA,YAAY,GAAG;IACtB,OAAOC,CAAAA,GAAAA,aAAoB,AAAE,CAAA,qBAAF,EAAE,CAAC;CAC/B;AAED,SAASC,WAAW,GAAW;IAC7B,OAAOC,CAAAA,GAAAA,aAAgB,AAAE,CAAA,iBAAF,EAAE,CAAC;CAC3B;AAED,SAASC,oBAAoB,GAA+B;IAC1D,OAAO,IAAIC,SAAQ,QAAA,CAAmBH,WAAW,EAAE,EAAE;QACnDI,SAAS,EAAE,IAAI;QACfC,qBAAqB,EAAE,EAAE;QACzBC,mBAAmB,EAAE,EAAE;KACxB,CAAC,CAAC;CACJ;AAED,eAAeC,eAAe,CAACC,WAAyB,EAAiB;IACvE,MAAMC,YAAY,CAACC,QAAQ,CAAC,MAAM,EAAEF,WAAW,EAAE;QAC/CG,OAAO,EAAE,EAAE;QACXP,SAAS,EAAE,IAAI;KAChB,CAAC,CAAC;CACJ;AAED,SAASQ,UAAU,GAAuB;IACxC,IAAI;YACKT,GAAmD;YAAnDA,IAAyD;QAAhE,OAAOA,CAAAA,IAAyD,GAAzDA,CAAAA,GAAmD,GAAnDA,SAAQ,QAAA,CAACU,IAAI,CAAmBZ,CAAAA,GAAAA,aAAgB,AAAE,CAAA,iBAAF,EAAE,CAAC,SAAM,GAAzDE,KAAAA,CAAyD,GAAzDA,GAAmD,CAAEW,IAAI,YAAzDX,IAAyD,GAAI,IAAI,CAAC;KAC1E,CAAC,OAAOY,KAAK,EAAO;QACnB,IAAIA,KAAK,CAACC,IAAI,KAAK,QAAQ,EAAE;YAC3B,OAAO,IAAI,CAAC;SACb;QACD,MAAMD,KAAK,CAAC;KACb;CACF;AAED,SAASE,cAAc,GAAkB;QAChCC,WAAsB;IAA7B,OAAOA,CAAAA,WAAsB,GAAtBA,OAAO,CAACC,GAAG,CAACC,UAAU,YAAtBF,WAAsB,GAAI,IAAI,CAAC;CACvC;AAED,6EAA6E;AAC7E,eAAeG,2BAA2B,GAAoB;IAC5D,MAAMC,QAAQ,GAAG,MAAMpB,oBAAoB,EAAE,AAAC;IAC9C,IAAIqB,EAAE,GAAG,MAAMD,QAAQ,CAACE,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,AAAC;IAE/C,IAAI,CAACD,EAAE,EAAE;QACPA,EAAE,GAAGE,CAAAA,GAAAA,KAAM,AAAE,CAAA,GAAF,EAAE,CAAC;QACd,MAAMH,QAAQ,CAACZ,QAAQ,CAAC,MAAM,EAAEa,EAAE,CAAC,CAAC;KACrC;IAED,OAAOA,EAAE,CAAC;CACX;AAED,MAAMd,YAAY,GAAGiB,MAAM,CAACC,MAAM,CAACzB,oBAAoB,EAAE,EAAE;IACzDU,UAAU;IACVL,eAAe;IACfU,cAAc;IACdnB,YAAY;IACZE,WAAW;IACXE,oBAAoB;IACpBmB,2BAA2B;CAC5B,CAAC,AAAC;eAEYZ,YAAY"}
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ exports.showLoginPromptAsync = showLoginPromptAsync;
6
+ exports.ensureLoggedInAsync = ensureLoggedInAsync;
7
+ var _assert = _interopRequireDefault(require("assert"));
8
+ var _chalk = _interopRequireDefault(require("chalk"));
9
+ var Log = _interopRequireWildcard(require("../../log"));
10
+ var _link = require("../../utils/link");
11
+ var _prompts = _interopRequireDefault(require("../../utils/prompts"));
12
+ var _client = require("../rest/client");
13
+ var _otp = require("./otp");
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
+ async function showLoginPromptAsync({ printNewLine =false , otp , ...options } = {}) {
42
+ const hasCredentials = options.username && options.password;
43
+ if (printNewLine) {
44
+ Log.log();
45
+ }
46
+ Log.log(hasCredentials ? "Logging in to EAS" : "Log in to EAS");
47
+ let username = options.username;
48
+ let password = options.password;
49
+ if (!hasCredentials) {
50
+ const resolved = await (0, _prompts).default([
51
+ !options.username && {
52
+ type: "text",
53
+ name: "username",
54
+ message: "Email or username"
55
+ },
56
+ !options.password && {
57
+ type: "password",
58
+ name: "password",
59
+ message: "Password"
60
+ },
61
+ ].filter(Boolean), {
62
+ nonInteractiveHelp: `Use the EXPO_TOKEN environment variable to authenticate in CI (${(0, _link).learnMore("https://docs.expo.dev/accounts/programmatic-access/")})`
63
+ });
64
+ username != null ? username : username = resolved.username;
65
+ password != null ? password : password = resolved.password;
66
+ }
67
+ // This is just for the types.
68
+ (0, _assert).default(username && password);
69
+ try {
70
+ await (0, _user).loginAsync({
71
+ username,
72
+ password,
73
+ otp
74
+ });
75
+ } catch (e) {
76
+ if (e instanceof _client.ApiV2Error && e.expoApiV2ErrorCode === "ONE_TIME_PASSWORD_REQUIRED") {
77
+ await (0, _otp).retryUsernamePasswordAuthWithOTPAsync(username, password, e.expoApiV2ErrorMetadata);
78
+ } else {
79
+ throw e;
80
+ }
81
+ }
82
+ }
83
+ async function ensureLoggedInAsync() {
84
+ let user = await (0, _user).getUserAsync().catch(()=>null
85
+ );
86
+ if (!user) {
87
+ Log.warn(_chalk.default.yellow`An Expo user account is required to proceed.`);
88
+ await showLoginPromptAsync({
89
+ printNewLine: true
90
+ });
91
+ user = await (0, _user).getUserAsync();
92
+ }
93
+ (0, _assert).default(user, "User should be logged in");
94
+ return user;
95
+ }
96
+
97
+ //# sourceMappingURL=actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/api/user/actions.ts"],"sourcesContent":["import assert from 'assert';\nimport chalk from 'chalk';\n\nimport * as Log from '../../log';\nimport { learnMore } from '../../utils/link';\nimport promptAsync, { Question } from '../../utils/prompts';\nimport { ApiV2Error } from '../rest/client';\nimport { retryUsernamePasswordAuthWithOTPAsync } from './otp';\nimport { Actor, getUserAsync, loginAsync } from './user';\n\n/** Show login prompt while prompting for missing credentials. */\nexport async function showLoginPromptAsync({\n printNewLine = false,\n otp,\n ...options\n}: {\n printNewLine?: boolean;\n username?: string;\n password?: string;\n otp?: string;\n} = {}): Promise<void> {\n const hasCredentials = options.username && options.password;\n\n if (printNewLine) {\n Log.log();\n }\n\n Log.log(hasCredentials ? 'Logging in to EAS' : 'Log in to EAS');\n\n let username = options.username;\n let password = options.password;\n\n if (!hasCredentials) {\n const resolved = await promptAsync(\n [\n !options.username && {\n type: 'text',\n name: 'username',\n message: 'Email or username',\n },\n !options.password && {\n type: 'password',\n name: 'password',\n message: 'Password',\n },\n ].filter(Boolean) as Question<string>[],\n {\n nonInteractiveHelp: `Use the EXPO_TOKEN environment variable to authenticate in CI (${learnMore(\n 'https://docs.expo.dev/accounts/programmatic-access/'\n )})`,\n }\n );\n username ??= resolved.username;\n password ??= resolved.password;\n }\n // This is just for the types.\n assert(username && password);\n\n try {\n await loginAsync({\n username,\n password,\n otp,\n });\n } catch (e) {\n if (e instanceof ApiV2Error && e.expoApiV2ErrorCode === 'ONE_TIME_PASSWORD_REQUIRED') {\n await retryUsernamePasswordAuthWithOTPAsync(\n username,\n password,\n e.expoApiV2ErrorMetadata as any\n );\n } else {\n throw e;\n }\n }\n}\n\n/** Ensure the user is logged in, if not, prompt to login. */\nexport async function ensureLoggedInAsync(): Promise<Actor> {\n let user = await getUserAsync().catch(() => null);\n\n if (!user) {\n Log.warn(chalk.yellow`An Expo user account is required to proceed.`);\n await showLoginPromptAsync({ printNewLine: true });\n user = await getUserAsync();\n }\n\n assert(user, 'User should be logged in');\n return user;\n}\n"],"names":["showLoginPromptAsync","ensureLoggedInAsync","Log","printNewLine","otp","options","hasCredentials","username","password","log","resolved","promptAsync","type","name","message","filter","Boolean","nonInteractiveHelp","learnMore","assert","loginAsync","e","ApiV2Error","expoApiV2ErrorCode","retryUsernamePasswordAuthWithOTPAsync","expoApiV2ErrorMetadata","user","getUserAsync","catch","warn","chalk","yellow"],"mappings":"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"}