@expo/cli 0.0.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (388) hide show
  1. package/README.md +106 -0
  2. package/build/bin/cli +152 -0
  3. package/build/bin/cli.map +1 -0
  4. package/build/src/api/endpoint.js +17 -0
  5. package/build/src/api/endpoint.js.map +1 -0
  6. package/build/src/api/getExpoGoIntermediateCertificate.js +21 -0
  7. package/build/src/api/getExpoGoIntermediateCertificate.js.map +1 -0
  8. package/build/src/api/getExpoSchema.js +69 -0
  9. package/build/src/api/getExpoSchema.js.map +1 -0
  10. package/build/src/api/getNativeModuleVersions.js +31 -0
  11. package/build/src/api/getNativeModuleVersions.js.map +1 -0
  12. package/build/src/api/getProject.js +19 -0
  13. package/build/src/api/getProject.js.map +1 -0
  14. package/build/src/api/getProjectDevelopmentCertificate.js +24 -0
  15. package/build/src/api/getProjectDevelopmentCertificate.js.map +1 -0
  16. package/build/src/api/getVersions.js +37 -0
  17. package/build/src/api/getVersions.js.map +1 -0
  18. package/build/src/api/graphql/client.js +104 -0
  19. package/build/src/api/graphql/client.js.map +1 -0
  20. package/build/src/api/graphql/generated.js +113 -0
  21. package/build/src/api/graphql/generated.js.map +1 -0
  22. package/build/src/api/graphql/queries/UserQuery.js +43 -0
  23. package/build/src/api/graphql/queries/UserQuery.js.map +1 -0
  24. package/build/src/api/rest/cache/FileSystemCache.js +79 -0
  25. package/build/src/api/rest/cache/FileSystemCache.js.map +1 -0
  26. package/build/src/api/rest/cache/response.js +31 -0
  27. package/build/src/api/rest/cache/response.js.map +1 -0
  28. package/build/src/api/rest/cache/wrapFetchWithCache.js +156 -0
  29. package/build/src/api/rest/cache/wrapFetchWithCache.js.map +1 -0
  30. package/build/src/api/rest/client.js +94 -0
  31. package/build/src/api/rest/client.js.map +1 -0
  32. package/build/src/api/rest/client.types.js +6 -0
  33. package/build/src/api/rest/client.types.js.map +1 -0
  34. package/build/src/api/rest/wrapFetchWithBaseUrl.js +20 -0
  35. package/build/src/api/rest/wrapFetchWithBaseUrl.js.map +1 -0
  36. package/build/src/api/rest/wrapFetchWithOffline.js +39 -0
  37. package/build/src/api/rest/wrapFetchWithOffline.js.map +1 -0
  38. package/build/src/api/rest/wrapFetchWithProgress.js +59 -0
  39. package/build/src/api/rest/wrapFetchWithProgress.js.map +1 -0
  40. package/build/src/api/settings.js +11 -0
  41. package/build/src/api/settings.js.map +1 -0
  42. package/build/src/api/signManifest.js +38 -0
  43. package/build/src/api/signManifest.js.map +1 -0
  44. package/build/src/api/updateDevelopmentSession.js +74 -0
  45. package/build/src/api/updateDevelopmentSession.js.map +1 -0
  46. package/build/src/api/user/UserSettings.js +71 -0
  47. package/build/src/api/user/UserSettings.js.map +1 -0
  48. package/build/src/api/user/actions.js +97 -0
  49. package/build/src/api/user/actions.js.map +1 -0
  50. package/build/src/api/user/otp.js +139 -0
  51. package/build/src/api/user/otp.js.map +1 -0
  52. package/build/src/api/user/user.js +114 -0
  53. package/build/src/api/user/user.js.map +1 -0
  54. package/build/src/config/configAsync.js +118 -0
  55. package/build/src/config/configAsync.js.map +1 -0
  56. package/build/src/config/index.js +75 -0
  57. package/build/src/config/index.js.map +1 -0
  58. package/build/src/export/createBundles.js +62 -0
  59. package/build/src/export/createBundles.js.map +1 -0
  60. package/build/src/export/createMetadataJson.js +36 -0
  61. package/build/src/export/createMetadataJson.js.map +1 -0
  62. package/build/src/export/exportApp.js +102 -0
  63. package/build/src/export/exportApp.js.map +1 -0
  64. package/build/src/export/exportAssets.js +106 -0
  65. package/build/src/export/exportAssets.js.map +1 -0
  66. package/build/src/export/exportAsync.js +49 -0
  67. package/build/src/export/exportAsync.js.map +1 -0
  68. package/build/src/export/fork-bundleAsync.js +138 -0
  69. package/build/src/export/fork-bundleAsync.js.map +1 -0
  70. package/build/src/export/getPublicExpoManifest.js +28 -0
  71. package/build/src/export/getPublicExpoManifest.js.map +1 -0
  72. package/build/src/export/getResolvedLocales.js +35 -0
  73. package/build/src/export/getResolvedLocales.js.map +1 -0
  74. package/build/src/export/index.js +77 -0
  75. package/build/src/export/index.js.map +1 -0
  76. package/build/src/export/printBundleSizes.js +122 -0
  77. package/build/src/export/printBundleSizes.js.map +1 -0
  78. package/build/src/export/resolveOptions.js +24 -0
  79. package/build/src/export/resolveOptions.js.map +1 -0
  80. package/build/src/export/saveAssets.js +65 -0
  81. package/build/src/export/saveAssets.js.map +1 -0
  82. package/build/src/export/writeContents.js +108 -0
  83. package/build/src/export/writeContents.js.map +1 -0
  84. package/build/src/install/checkPackages.js +74 -0
  85. package/build/src/install/checkPackages.js.map +1 -0
  86. package/build/src/install/index.js +49 -0
  87. package/build/src/install/index.js.map +1 -0
  88. package/build/src/install/installAsync.js +103 -0
  89. package/build/src/install/installAsync.js.map +1 -0
  90. package/build/src/install/resolveOptions.js +99 -0
  91. package/build/src/install/resolveOptions.js.map +1 -0
  92. package/build/src/install/utils/autoAddConfigPlugins.js +87 -0
  93. package/build/src/install/utils/autoAddConfigPlugins.js.map +1 -0
  94. package/build/src/log.js +74 -0
  95. package/build/src/log.js.map +1 -0
  96. package/build/src/login/index.js +62 -0
  97. package/build/src/login/index.js.map +1 -0
  98. package/build/src/logout/index.js +48 -0
  99. package/build/src/logout/index.js.map +1 -0
  100. package/build/src/prebuild/clearNativeFolder.js +137 -0
  101. package/build/src/prebuild/clearNativeFolder.js.map +1 -0
  102. package/build/src/prebuild/configureProjectAsync.js +68 -0
  103. package/build/src/prebuild/configureProjectAsync.js.map +1 -0
  104. package/build/src/prebuild/copyTemplateFiles.js +124 -0
  105. package/build/src/prebuild/copyTemplateFiles.js.map +1 -0
  106. package/build/src/prebuild/ensureConfigAsync.js +86 -0
  107. package/build/src/prebuild/ensureConfigAsync.js.map +1 -0
  108. package/build/src/prebuild/index.js +90 -0
  109. package/build/src/prebuild/index.js.map +1 -0
  110. package/build/src/prebuild/prebuildAsync.js +112 -0
  111. package/build/src/prebuild/prebuildAsync.js.map +1 -0
  112. package/build/src/prebuild/resolveOptions.js +97 -0
  113. package/build/src/prebuild/resolveOptions.js.map +1 -0
  114. package/build/src/prebuild/resolveTemplate.js +157 -0
  115. package/build/src/prebuild/resolveTemplate.js.map +1 -0
  116. package/build/src/prebuild/updateFromTemplate.js +102 -0
  117. package/build/src/prebuild/updateFromTemplate.js.map +1 -0
  118. package/build/src/prebuild/updatePackageJson.js +236 -0
  119. package/build/src/prebuild/updatePackageJson.js.map +1 -0
  120. package/build/src/prebuild/writeMetroConfig.js +89 -0
  121. package/build/src/prebuild/writeMetroConfig.js.map +1 -0
  122. package/build/src/register/index.js +48 -0
  123. package/build/src/register/index.js.map +1 -0
  124. package/build/src/register/registerAsync.js +37 -0
  125. package/build/src/register/registerAsync.js.map +1 -0
  126. package/build/src/run/android/index.js +97 -0
  127. package/build/src/run/android/index.js.map +1 -0
  128. package/build/src/run/android/resolveDevice.js +23 -0
  129. package/build/src/run/android/resolveDevice.js.map +1 -0
  130. package/build/src/run/android/resolveGradleProps.js +37 -0
  131. package/build/src/run/android/resolveGradleProps.js.map +1 -0
  132. package/build/src/run/android/resolveInstallApkName.js +72 -0
  133. package/build/src/run/android/resolveInstallApkName.js.map +1 -0
  134. package/build/src/run/android/resolveLaunchProps.js +32 -0
  135. package/build/src/run/android/resolveLaunchProps.js.map +1 -0
  136. package/build/src/run/android/resolveOptions.js +25 -0
  137. package/build/src/run/android/resolveOptions.js.map +1 -0
  138. package/build/src/run/android/runAndroidAsync.js +74 -0
  139. package/build/src/run/android/runAndroidAsync.js.map +1 -0
  140. package/build/src/run/ensureNativeProject.js +33 -0
  141. package/build/src/run/ensureNativeProject.js.map +1 -0
  142. package/build/src/run/hints.js +22 -0
  143. package/build/src/run/hints.js.map +1 -0
  144. package/build/src/run/resolveBundlerProps.js +31 -0
  145. package/build/src/run/resolveBundlerProps.js.map +1 -0
  146. package/build/src/run/startBundler.js +76 -0
  147. package/build/src/run/startBundler.js.map +1 -0
  148. package/build/src/start/doctor/Prerequisite.js +47 -0
  149. package/build/src/start/doctor/Prerequisite.js.map +1 -0
  150. package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js +68 -0
  151. package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js.map +1 -0
  152. package/build/src/start/doctor/apple/XcodePrerequisite.js +115 -0
  153. package/build/src/start/doctor/apple/XcodePrerequisite.js.map +1 -0
  154. package/build/src/start/doctor/apple/XcrunPrerequisite.js +65 -0
  155. package/build/src/start/doctor/apple/XcrunPrerequisite.js.map +1 -0
  156. package/build/src/start/doctor/dependencies/bundledNativeModules.js +64 -0
  157. package/build/src/start/doctor/dependencies/bundledNativeModules.js.map +1 -0
  158. package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js +131 -0
  159. package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js.map +1 -0
  160. package/build/src/start/doctor/dependencies/getMissingPackages.js +95 -0
  161. package/build/src/start/doctor/dependencies/getMissingPackages.js.map +1 -0
  162. package/build/src/start/doctor/dependencies/getVersionedPackages.js +119 -0
  163. package/build/src/start/doctor/dependencies/getVersionedPackages.js.map +1 -0
  164. package/build/src/start/doctor/dependencies/validateDependenciesVersions.js +147 -0
  165. package/build/src/start/doctor/dependencies/validateDependenciesVersions.js.map +1 -0
  166. package/build/src/start/doctor/ngrok/ExternalModule.js +164 -0
  167. package/build/src/start/doctor/ngrok/ExternalModule.js.map +1 -0
  168. package/build/src/start/doctor/ngrok/NgrokResolver.js +17 -0
  169. package/build/src/start/doctor/ngrok/NgrokResolver.js.map +1 -0
  170. package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js +142 -0
  171. package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js.map +1 -0
  172. package/build/src/start/doctor/typescript/updateTSConfig.js +92 -0
  173. package/build/src/start/doctor/typescript/updateTSConfig.js.map +1 -0
  174. package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js +112 -0
  175. package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js.map +1 -0
  176. package/build/src/start/index.js +116 -0
  177. package/build/src/start/index.js.map +1 -0
  178. package/build/src/start/interface/KeyPressHandler.js +99 -0
  179. package/build/src/start/interface/KeyPressHandler.js.map +1 -0
  180. package/build/src/start/interface/commandsTable.js +175 -0
  181. package/build/src/start/interface/commandsTable.js.map +1 -0
  182. package/build/src/start/interface/interactiveActions.js +134 -0
  183. package/build/src/start/interface/interactiveActions.js.map +1 -0
  184. package/build/src/start/interface/startInterface.js +217 -0
  185. package/build/src/start/interface/startInterface.js.map +1 -0
  186. package/build/src/start/platforms/AppIdResolver.js +44 -0
  187. package/build/src/start/platforms/AppIdResolver.js.map +1 -0
  188. package/build/src/start/platforms/DeviceManager.js +43 -0
  189. package/build/src/start/platforms/DeviceManager.js.map +1 -0
  190. package/build/src/start/platforms/ExpoGoInstaller.js +111 -0
  191. package/build/src/start/platforms/ExpoGoInstaller.js.map +1 -0
  192. package/build/src/start/platforms/PlatformManager.js +121 -0
  193. package/build/src/start/platforms/PlatformManager.js.map +1 -0
  194. package/build/src/start/platforms/android/ADBServer.js +129 -0
  195. package/build/src/start/platforms/android/ADBServer.js.map +1 -0
  196. package/build/src/start/platforms/android/AndroidAppIdResolver.js +40 -0
  197. package/build/src/start/platforms/android/AndroidAppIdResolver.js.map +1 -0
  198. package/build/src/start/platforms/android/AndroidDeviceManager.js +183 -0
  199. package/build/src/start/platforms/android/AndroidDeviceManager.js.map +1 -0
  200. package/build/src/start/platforms/android/AndroidPlatformManager.js +35 -0
  201. package/build/src/start/platforms/android/AndroidPlatformManager.js.map +1 -0
  202. package/build/src/start/platforms/android/activateWindow.js +80 -0
  203. package/build/src/start/platforms/android/activateWindow.js.map +1 -0
  204. package/build/src/start/platforms/android/adb.js +263 -0
  205. package/build/src/start/platforms/android/adb.js.map +1 -0
  206. package/build/src/start/platforms/android/adbReverse.js +84 -0
  207. package/build/src/start/platforms/android/adbReverse.js.map +1 -0
  208. package/build/src/start/platforms/android/emulator.js +118 -0
  209. package/build/src/start/platforms/android/emulator.js.map +1 -0
  210. package/build/src/start/platforms/android/getDevices.js +36 -0
  211. package/build/src/start/platforms/android/getDevices.js.map +1 -0
  212. package/build/src/start/platforms/android/gradle.js +86 -0
  213. package/build/src/start/platforms/android/gradle.js.map +1 -0
  214. package/build/src/start/platforms/android/promptAndroidDevice.js +60 -0
  215. package/build/src/start/platforms/android/promptAndroidDevice.js.map +1 -0
  216. package/build/src/start/platforms/ios/AppleAppIdResolver.js +46 -0
  217. package/build/src/start/platforms/ios/AppleAppIdResolver.js.map +1 -0
  218. package/build/src/start/platforms/ios/AppleDeviceManager.js +201 -0
  219. package/build/src/start/platforms/ios/AppleDeviceManager.js.map +1 -0
  220. package/build/src/start/platforms/ios/ApplePlatformManager.js +31 -0
  221. package/build/src/start/platforms/ios/ApplePlatformManager.js.map +1 -0
  222. package/build/src/start/platforms/ios/assertSystemRequirements.js +16 -0
  223. package/build/src/start/platforms/ios/assertSystemRequirements.js.map +1 -0
  224. package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js +85 -0
  225. package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js.map +1 -0
  226. package/build/src/start/platforms/ios/getBestSimulator.js +101 -0
  227. package/build/src/start/platforms/ios/getBestSimulator.js.map +1 -0
  228. package/build/src/start/platforms/ios/promptAppleDevice.js +60 -0
  229. package/build/src/start/platforms/ios/promptAppleDevice.js.map +1 -0
  230. package/build/src/start/platforms/ios/simctl.js +229 -0
  231. package/build/src/start/platforms/ios/simctl.js.map +1 -0
  232. package/build/src/start/platforms/ios/xcrun.js +67 -0
  233. package/build/src/start/platforms/ios/xcrun.js.map +1 -0
  234. package/build/src/start/project/devices.js +77 -0
  235. package/build/src/start/project/devices.js.map +1 -0
  236. package/build/src/start/project/dotExpo.js +74 -0
  237. package/build/src/start/project/dotExpo.js.map +1 -0
  238. package/build/src/start/project/settings.js +13 -0
  239. package/build/src/start/project/settings.js.map +1 -0
  240. package/build/src/start/resolveOptions.js +156 -0
  241. package/build/src/start/resolveOptions.js.map +1 -0
  242. package/build/src/start/server/AsyncNgrok.js +173 -0
  243. package/build/src/start/server/AsyncNgrok.js.map +1 -0
  244. package/build/src/start/server/BundlerDevServer.js +312 -0
  245. package/build/src/start/server/BundlerDevServer.js.map +1 -0
  246. package/build/src/start/server/DevServerManager.js +142 -0
  247. package/build/src/start/server/DevServerManager.js.map +1 -0
  248. package/build/src/start/server/DevelopmentSession.js +104 -0
  249. package/build/src/start/server/DevelopmentSession.js.map +1 -0
  250. package/build/src/start/server/UrlCreator.js +159 -0
  251. package/build/src/start/server/UrlCreator.js.map +1 -0
  252. package/build/src/start/server/metro/MetroBundlerDevServer.js +97 -0
  253. package/build/src/start/server/metro/MetroBundlerDevServer.js.map +1 -0
  254. package/build/src/start/server/metro/MetroTerminalReporter.js +178 -0
  255. package/build/src/start/server/metro/MetroTerminalReporter.js.map +1 -0
  256. package/build/src/start/server/metro/TerminalReporter.js +87 -0
  257. package/build/src/start/server/metro/TerminalReporter.js.map +1 -0
  258. package/build/src/start/server/metro/TerminalReporter.types.js +6 -0
  259. package/build/src/start/server/metro/TerminalReporter.types.js.map +1 -0
  260. package/build/src/start/server/metro/instantiateMetro.js +66 -0
  261. package/build/src/start/server/metro/instantiateMetro.js.map +1 -0
  262. package/build/src/start/server/metro/resolveFromProject.js +38 -0
  263. package/build/src/start/server/metro/resolveFromProject.js.map +1 -0
  264. package/build/src/start/server/middleware/ClassicManifestMiddleware.js +145 -0
  265. package/build/src/start/server/middleware/ClassicManifestMiddleware.js.map +1 -0
  266. package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js +185 -0
  267. package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js.map +1 -0
  268. package/build/src/start/server/middleware/ExpoMiddleware.js +78 -0
  269. package/build/src/start/server/middleware/ExpoMiddleware.js.map +1 -0
  270. package/build/src/start/server/middleware/InterstitialPageMiddleware.js +70 -0
  271. package/build/src/start/server/middleware/InterstitialPageMiddleware.js.map +1 -0
  272. package/build/src/start/server/middleware/ManifestMiddleware.js +177 -0
  273. package/build/src/start/server/middleware/ManifestMiddleware.js.map +1 -0
  274. package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js +69 -0
  275. package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js.map +1 -0
  276. package/build/src/start/server/middleware/createDevServerMiddleware.js +24 -0
  277. package/build/src/start/server/middleware/createDevServerMiddleware.js.map +1 -0
  278. package/build/src/start/server/middleware/resolveAssets.js +110 -0
  279. package/build/src/start/server/middleware/resolveAssets.js.map +1 -0
  280. package/build/src/start/server/middleware/resolveEntryPoint.js +37 -0
  281. package/build/src/start/server/middleware/resolveEntryPoint.js.map +1 -0
  282. package/build/src/start/server/middleware/resolvePlatform.js +32 -0
  283. package/build/src/start/server/middleware/resolvePlatform.js.map +1 -0
  284. package/build/src/start/server/middleware/server.types.js +6 -0
  285. package/build/src/start/server/middleware/server.types.js.map +1 -0
  286. package/build/src/start/server/openPlatforms.js +30 -0
  287. package/build/src/start/server/openPlatforms.js.map +1 -0
  288. package/build/src/start/server/webpack/WebpackBundlerDevServer.js +299 -0
  289. package/build/src/start/server/webpack/WebpackBundlerDevServer.js.map +1 -0
  290. package/build/src/start/server/webpack/formatWebpackMessages.js +94 -0
  291. package/build/src/start/server/webpack/formatWebpackMessages.js.map +1 -0
  292. package/build/src/start/server/webpack/resolveFromProject.js +43 -0
  293. package/build/src/start/server/webpack/resolveFromProject.js.map +1 -0
  294. package/build/src/start/server/webpack/tls.js +72 -0
  295. package/build/src/start/server/webpack/tls.js.map +1 -0
  296. package/build/src/start/startAsync.js +150 -0
  297. package/build/src/start/startAsync.js.map +1 -0
  298. package/build/src/utils/FileNotifier.js +71 -0
  299. package/build/src/utils/FileNotifier.js.map +1 -0
  300. package/build/src/utils/analytics/getDevClientProperties.js +41 -0
  301. package/build/src/utils/analytics/getDevClientProperties.js.map +1 -0
  302. package/build/src/utils/analytics/rudderstackClient.js +106 -0
  303. package/build/src/utils/analytics/rudderstackClient.js.map +1 -0
  304. package/build/src/utils/ansi.js +17 -0
  305. package/build/src/utils/ansi.js.map +1 -0
  306. package/build/src/utils/args.js +77 -0
  307. package/build/src/utils/args.js.map +1 -0
  308. package/build/src/utils/array.js +56 -0
  309. package/build/src/utils/array.js.map +1 -0
  310. package/build/src/utils/cocoapods.js +143 -0
  311. package/build/src/utils/cocoapods.js.map +1 -0
  312. package/build/src/utils/codesigning.js +283 -0
  313. package/build/src/utils/codesigning.js.map +1 -0
  314. package/build/src/utils/createFileTransform.js +89 -0
  315. package/build/src/utils/createFileTransform.js.map +1 -0
  316. package/build/src/utils/delay.js +39 -0
  317. package/build/src/utils/delay.js.map +1 -0
  318. package/build/src/utils/dir.js +38 -0
  319. package/build/src/utils/dir.js.map +1 -0
  320. package/build/src/utils/downloadAppAsync.js +74 -0
  321. package/build/src/utils/downloadAppAsync.js.map +1 -0
  322. package/build/src/utils/downloadExpoGoAsync.js +99 -0
  323. package/build/src/utils/downloadExpoGoAsync.js.map +1 -0
  324. package/build/src/utils/editor.js +60 -0
  325. package/build/src/utils/editor.js.map +1 -0
  326. package/build/src/utils/env.js +62 -0
  327. package/build/src/utils/env.js.map +1 -0
  328. package/build/src/utils/errors.js +69 -0
  329. package/build/src/utils/errors.js.map +1 -0
  330. package/build/src/utils/exit.js +90 -0
  331. package/build/src/utils/exit.js.map +1 -0
  332. package/build/src/utils/findUp.js +33 -0
  333. package/build/src/utils/findUp.js.map +1 -0
  334. package/build/src/utils/fn.js +32 -0
  335. package/build/src/utils/fn.js.map +1 -0
  336. package/build/src/utils/getOrPromptApplicationId.js +183 -0
  337. package/build/src/utils/getOrPromptApplicationId.js.map +1 -0
  338. package/build/src/utils/getRunningProcess.js +92 -0
  339. package/build/src/utils/getRunningProcess.js.map +1 -0
  340. package/build/src/utils/git.js +88 -0
  341. package/build/src/utils/git.js.map +1 -0
  342. package/build/src/utils/glob.js +65 -0
  343. package/build/src/utils/glob.js.map +1 -0
  344. package/build/src/utils/ip.js +16 -0
  345. package/build/src/utils/ip.js.map +1 -0
  346. package/build/src/utils/isModuleSymlinked.js +37 -0
  347. package/build/src/utils/isModuleSymlinked.js.map +1 -0
  348. package/build/src/utils/link.js +31 -0
  349. package/build/src/utils/link.js.map +1 -0
  350. package/build/src/utils/mergeGitIgnorePaths.js +112 -0
  351. package/build/src/utils/mergeGitIgnorePaths.js.map +1 -0
  352. package/build/src/utils/modifyConfigAsync.js +68 -0
  353. package/build/src/utils/modifyConfigAsync.js.map +1 -0
  354. package/build/src/utils/modifyConfigPlugins.js +51 -0
  355. package/build/src/utils/modifyConfigPlugins.js.map +1 -0
  356. package/build/src/utils/nodeModules.js +118 -0
  357. package/build/src/utils/nodeModules.js.map +1 -0
  358. package/build/src/utils/npm.js +144 -0
  359. package/build/src/utils/npm.js.map +1 -0
  360. package/build/src/utils/obj.js +45 -0
  361. package/build/src/utils/obj.js.map +1 -0
  362. package/build/src/utils/ora.js +102 -0
  363. package/build/src/utils/ora.js.map +1 -0
  364. package/build/src/utils/port.js +130 -0
  365. package/build/src/utils/port.js.map +1 -0
  366. package/build/src/utils/profile.js +63 -0
  367. package/build/src/utils/profile.js.map +1 -0
  368. package/build/src/utils/progress.js +15 -0
  369. package/build/src/utils/progress.js.map +1 -0
  370. package/build/src/utils/prompts.js +127 -0
  371. package/build/src/utils/prompts.js.map +1 -0
  372. package/build/src/utils/resolveArgs.js +94 -0
  373. package/build/src/utils/resolveArgs.js.map +1 -0
  374. package/build/src/utils/scheme.js +106 -0
  375. package/build/src/utils/scheme.js.map +1 -0
  376. package/build/src/utils/tar.js +59 -0
  377. package/build/src/utils/tar.js.map +1 -0
  378. package/build/src/utils/url.js +67 -0
  379. package/build/src/utils/url.js.map +1 -0
  380. package/build/src/utils/validateApplicationId.js +90 -0
  381. package/build/src/utils/validateApplicationId.js.map +1 -0
  382. package/build/src/whoami/index.js +47 -0
  383. package/build/src/whoami/index.js.map +1 -0
  384. package/build/src/whoami/whoamiAsync.js +44 -0
  385. package/build/src/whoami/whoamiAsync.js.map +1 -0
  386. package/package.json +132 -4
  387. package/static/loading-page/index.html +270 -0
  388. package/index.js +0 -0
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ exports.getAllSpinners = getAllSpinners;
6
+ exports.ora = ora;
7
+ exports.logNewSection = logNewSection;
8
+ var _chalk = _interopRequireDefault(require("chalk"));
9
+ var _ora = _interopRequireDefault(require("ora"));
10
+ var _env = require("./env");
11
+ function _interopRequireDefault(obj) {
12
+ return obj && obj.__esModule ? obj : {
13
+ default: obj
14
+ };
15
+ }
16
+ // eslint-disable-next-line no-console
17
+ const logReal = console.log;
18
+ // eslint-disable-next-line no-console
19
+ const infoReal = console.info;
20
+ // eslint-disable-next-line no-console
21
+ const warnReal = console.warn;
22
+ // eslint-disable-next-line no-console
23
+ const errorReal = console.error;
24
+ const runningSpinners = [];
25
+ function getAllSpinners() {
26
+ return runningSpinners;
27
+ }
28
+ function ora(options1) {
29
+ const inputOptions = typeof options1 === "string" ? {
30
+ text: options1
31
+ } : options1 || {};
32
+ const disabled = _env.env.CI || _env.env.EXPO_DEBUG;
33
+ const spinner = (0, _ora).default({
34
+ // Ensure our non-interactive mode emulates CI mode.
35
+ isEnabled: !disabled,
36
+ // In non-interactive mode, send the stream to stdout so it prevents looking like an error.
37
+ stream: disabled ? process.stdout : process.stderr,
38
+ ...inputOptions
39
+ });
40
+ const oraStart = spinner.start.bind(spinner);
41
+ const oraStop = spinner.stop.bind(spinner);
42
+ const oraStopAndPersist = spinner.stopAndPersist.bind(spinner);
43
+ const logWrap = (method, args)=>{
44
+ oraStop();
45
+ method(...args);
46
+ spinner.start();
47
+ };
48
+ const wrapNativeLogs = ()=>{
49
+ // eslint-disable-next-line no-console
50
+ console.log = (...args)=>logWrap(logReal, args)
51
+ ;
52
+ // eslint-disable-next-line no-console
53
+ console.info = (...args)=>logWrap(infoReal, args)
54
+ ;
55
+ // eslint-disable-next-line no-console
56
+ console.warn = (...args)=>logWrap(warnReal, args)
57
+ ;
58
+ // eslint-disable-next-line no-console
59
+ console.error = (...args)=>logWrap(errorReal, args)
60
+ ;
61
+ runningSpinners.push(spinner);
62
+ };
63
+ const resetNativeLogs = ()=>{
64
+ // eslint-disable-next-line no-console
65
+ console.log = logReal;
66
+ // eslint-disable-next-line no-console
67
+ console.info = logReal;
68
+ // eslint-disable-next-line no-console
69
+ console.warn = warnReal;
70
+ // eslint-disable-next-line no-console
71
+ console.error = errorReal;
72
+ const index = runningSpinners.indexOf(spinner);
73
+ if (index >= 0) {
74
+ runningSpinners.splice(index, 1);
75
+ }
76
+ };
77
+ spinner.start = (text)=>{
78
+ wrapNativeLogs();
79
+ return oraStart(text);
80
+ };
81
+ spinner.stopAndPersist = (options)=>{
82
+ const result = oraStopAndPersist(options);
83
+ resetNativeLogs();
84
+ return result;
85
+ };
86
+ spinner.stop = ()=>{
87
+ const result = oraStop();
88
+ resetNativeLogs();
89
+ return result;
90
+ };
91
+ // Always make the central logging module aware of the current spinner
92
+ // Log.setSpinner(spinner);
93
+ return spinner;
94
+ }
95
+ function logNewSection(title) {
96
+ const spinner = ora(_chalk.default.bold(title));
97
+ // Prevent the spinner from clashing with debug logs
98
+ spinner.start();
99
+ return spinner;
100
+ }
101
+
102
+ //# sourceMappingURL=ora.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/utils/ora.ts"],"sourcesContent":["import chalk from 'chalk';\nimport oraReal, { Ora } from 'ora';\n\n// import * as Log from '../log';\nimport { env } from './env';\n\n// eslint-disable-next-line no-console\nconst logReal = console.log;\n// eslint-disable-next-line no-console\nconst infoReal = console.info;\n// eslint-disable-next-line no-console\nconst warnReal = console.warn;\n// eslint-disable-next-line no-console\nconst errorReal = console.error;\n\nconst runningSpinners: oraReal.Ora[] = [];\n\nexport function getAllSpinners() {\n return runningSpinners;\n}\n\n/**\n * A custom ora spinner that sends the stream to stdout in CI, non-TTY, or expo's non-interactive flag instead of stderr (the default).\n *\n * @param options\n * @returns\n */\nexport function ora(options?: oraReal.Options | string): oraReal.Ora {\n const inputOptions = typeof options === 'string' ? { text: options } : options || {};\n const disabled = env.CI || env.EXPO_DEBUG;\n const spinner = oraReal({\n // Ensure our non-interactive mode emulates CI mode.\n isEnabled: !disabled,\n // In non-interactive mode, send the stream to stdout so it prevents looking like an error.\n stream: disabled ? process.stdout : process.stderr,\n ...inputOptions,\n });\n\n const oraStart = spinner.start.bind(spinner);\n const oraStop = spinner.stop.bind(spinner);\n const oraStopAndPersist = spinner.stopAndPersist.bind(spinner);\n\n const logWrap = (method: any, args: any[]): void => {\n oraStop();\n method(...args);\n spinner.start();\n };\n\n const wrapNativeLogs = (): void => {\n // eslint-disable-next-line no-console\n console.log = (...args: any) => logWrap(logReal, args);\n // eslint-disable-next-line no-console\n console.info = (...args: any) => logWrap(infoReal, args);\n // eslint-disable-next-line no-console\n console.warn = (...args: any) => logWrap(warnReal, args);\n // eslint-disable-next-line no-console\n console.error = (...args: any) => logWrap(errorReal, args);\n\n runningSpinners.push(spinner);\n };\n\n const resetNativeLogs = (): void => {\n // eslint-disable-next-line no-console\n console.log = logReal;\n // eslint-disable-next-line no-console\n console.info = logReal;\n // eslint-disable-next-line no-console\n console.warn = warnReal;\n // eslint-disable-next-line no-console\n console.error = errorReal;\n\n const index = runningSpinners.indexOf(spinner);\n if (index >= 0) {\n runningSpinners.splice(index, 1);\n }\n };\n\n spinner.start = (text): Ora => {\n wrapNativeLogs();\n return oraStart(text);\n };\n\n spinner.stopAndPersist = (options): Ora => {\n const result = oraStopAndPersist(options);\n resetNativeLogs();\n return result;\n };\n\n spinner.stop = (): Ora => {\n const result = oraStop();\n resetNativeLogs();\n return result;\n };\n\n // Always make the central logging module aware of the current spinner\n // Log.setSpinner(spinner);\n\n return spinner;\n}\n\n/**\n * Create a unified section spinner.\n *\n * @param title\n * @returns\n */\nexport function logNewSection(title: string) {\n const spinner = ora(chalk.bold(title));\n // Prevent the spinner from clashing with debug logs\n spinner.start();\n return spinner;\n}\n"],"names":["getAllSpinners","ora","logNewSection","logReal","console","log","infoReal","info","warnReal","warn","errorReal","error","runningSpinners","options","inputOptions","text","disabled","env","CI","EXPO_DEBUG","spinner","oraReal","isEnabled","stream","process","stdout","stderr","oraStart","start","bind","oraStop","stop","oraStopAndPersist","stopAndPersist","logWrap","method","args","wrapNativeLogs","push","resetNativeLogs","index","indexOf","splice","result","title","chalk","bold"],"mappings":"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"}
@@ -0,0 +1,130 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ exports.getFreePortAsync = getFreePortAsync;
6
+ exports.choosePortAsync = choosePortAsync;
7
+ exports.resolvePortAsync = resolvePortAsync;
8
+ var _chalk = _interopRequireDefault(require("chalk"));
9
+ var _freeportAsync = _interopRequireDefault(require("freeport-async"));
10
+ var Log = _interopRequireWildcard(require("../log"));
11
+ var _env = require("./env");
12
+ var _errors = require("./errors");
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 getFreePortAsync(rangeStart) {
40
+ const port = await (0, _freeportAsync).default(rangeStart, {
41
+ hostnames: [
42
+ null,
43
+ "localhost"
44
+ ]
45
+ });
46
+ if (!port) {
47
+ throw new _errors.CommandError("NO_PORT_FOUND", "No available port found");
48
+ }
49
+ return port;
50
+ }
51
+ async function choosePortAsync(projectRoot, { defaultPort , host , reuseExistingPort }) {
52
+ const [{ getRunningProcess }, { confirmAsync }, isRoot, Log1] = await Promise.all([
53
+ Promise.resolve().then(function() {
54
+ return _interopRequireWildcard(require("./getRunningProcess"));
55
+ }),
56
+ Promise.resolve().then(function() {
57
+ return _interopRequireWildcard(require("./prompts"));
58
+ }),
59
+ Promise.resolve().then(function() {
60
+ return _interopRequireWildcard(require("is-root"));
61
+ }),
62
+ Promise.resolve().then(function() {
63
+ return _interopRequireWildcard(require("../log"));
64
+ }),
65
+ ]);
66
+ try {
67
+ const port = await (0, _freeportAsync).default(defaultPort, {
68
+ hostnames: [
69
+ host != null ? host : null
70
+ ]
71
+ });
72
+ if (port === defaultPort) {
73
+ return port;
74
+ }
75
+ const isRestricted = process.platform !== "win32" && defaultPort < 1024 && !isRoot.default();
76
+ let message = isRestricted ? `Admin permissions are required to run a server on a port below 1024` : `Port ${_chalk.default.bold(defaultPort)} is`;
77
+ const runningProcess = isRestricted ? null : getRunningProcess(defaultPort);
78
+ if (runningProcess) {
79
+ const pidTag = _chalk.default.gray(`(pid ${runningProcess.pid})`);
80
+ if (runningProcess.directory === projectRoot) {
81
+ message += ` running this app in another window`;
82
+ if (reuseExistingPort) {
83
+ return null;
84
+ }
85
+ } else {
86
+ message += ` running ${_chalk.default.cyan(runningProcess.command)} in another window`;
87
+ }
88
+ message += "\n" + _chalk.default.gray(` ${runningProcess.directory} ${pidTag}`);
89
+ }
90
+ Log1.log(`\u203A ${message}`);
91
+ const change = await confirmAsync({
92
+ message: `Use port ${port} instead?`,
93
+ initial: true
94
+ });
95
+ return change ? port : null;
96
+ } catch (error) {
97
+ if (error.code === "ABORTED") {
98
+ throw error;
99
+ } else if (error.code === "NON_INTERACTIVE") {
100
+ Log1.warn(_chalk.default.yellow(error.message));
101
+ return null;
102
+ }
103
+ throw error;
104
+ }
105
+ }
106
+ async function resolvePortAsync(projectRoot, { /** Should opt to reuse a port that is running the same project in another window. */ reuseExistingPort , /** Preferred port. */ defaultPort , /** Backup port for when the default isn't available. */ fallbackPort } = {}) {
107
+ let port;
108
+ if (typeof defaultPort === "string") {
109
+ port = parseInt(defaultPort, 10);
110
+ } else if (typeof defaultPort === "number") {
111
+ port = defaultPort;
112
+ } else {
113
+ port = _env.env.RCT_METRO_PORT || fallbackPort || 8081;
114
+ }
115
+ // Only check the port when the bundler is running.
116
+ const resolvedPort = await choosePortAsync(projectRoot, {
117
+ defaultPort: port,
118
+ reuseExistingPort
119
+ });
120
+ if (resolvedPort == null) {
121
+ Log.log("\u203A Skipping dev server");
122
+ // Skip bundling if the port is null
123
+ } else {
124
+ // Use the new or resolved port
125
+ process.env.RCT_METRO_PORT = String(resolvedPort);
126
+ }
127
+ return resolvedPort;
128
+ }
129
+
130
+ //# sourceMappingURL=port.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/utils/port.ts"],"sourcesContent":["import chalk from 'chalk';\nimport freeportAsync from 'freeport-async';\n\nimport * as Log from '../log';\nimport { env } from './env';\nimport { CommandError } from './errors';\n\n/** Get a free port or assert a CLI command error. */\nexport async function getFreePortAsync(rangeStart: number): Promise<number> {\n const port = await freeportAsync(rangeStart, { hostnames: [null, 'localhost'] });\n if (!port) {\n throw new CommandError('NO_PORT_FOUND', 'No available port found');\n }\n\n return port;\n}\n\n// TODO(Bacon): Revisit after all start and run code is merged.\nexport async function choosePortAsync(\n projectRoot: string,\n {\n defaultPort,\n host,\n reuseExistingPort,\n }: {\n defaultPort: number;\n host?: string;\n reuseExistingPort?: boolean;\n }\n): Promise<number | null> {\n const [{ getRunningProcess }, { confirmAsync }, isRoot, Log] = await Promise.all([\n import('./getRunningProcess'),\n import('./prompts'),\n import('is-root'),\n import('../log'),\n ]);\n\n try {\n const port = await freeportAsync(defaultPort, { hostnames: [host ?? null] });\n if (port === defaultPort) {\n return port;\n }\n\n const isRestricted = process.platform !== 'win32' && defaultPort < 1024 && !isRoot.default();\n\n let message = isRestricted\n ? `Admin permissions are required to run a server on a port below 1024`\n : `Port ${chalk.bold(defaultPort)} is`;\n\n const runningProcess = isRestricted ? null : getRunningProcess(defaultPort);\n\n if (runningProcess) {\n const pidTag = chalk.gray(`(pid ${runningProcess.pid})`);\n if (runningProcess.directory === projectRoot) {\n message += ` running this app in another window`;\n if (reuseExistingPort) {\n return null;\n }\n } else {\n message += ` running ${chalk.cyan(runningProcess.command)} in another window`;\n }\n message += '\\n' + chalk.gray(` ${runningProcess.directory} ${pidTag}`);\n }\n\n Log.log(`\\u203A ${message}`);\n const change = await confirmAsync({\n message: `Use port ${port} instead?`,\n initial: true,\n });\n return change ? port : null;\n } catch (error: any) {\n if (error.code === 'ABORTED') {\n throw error;\n } else if (error.code === 'NON_INTERACTIVE') {\n Log.warn(chalk.yellow(error.message));\n return null;\n }\n throw error;\n }\n}\n\n// TODO(Bacon): Revisit after all start and run code is merged.\nexport async function resolvePortAsync(\n projectRoot: string,\n {\n /** Should opt to reuse a port that is running the same project in another window. */\n reuseExistingPort,\n /** Preferred port. */\n defaultPort,\n /** Backup port for when the default isn't available. */\n fallbackPort,\n }: {\n reuseExistingPort?: boolean;\n defaultPort?: string | number;\n fallbackPort?: number;\n } = {}\n): Promise<number | null> {\n let port: number;\n if (typeof defaultPort === 'string') {\n port = parseInt(defaultPort, 10);\n } else if (typeof defaultPort === 'number') {\n port = defaultPort;\n } else {\n port = env.RCT_METRO_PORT || fallbackPort || 8081;\n }\n\n // Only check the port when the bundler is running.\n const resolvedPort = await choosePortAsync(projectRoot, {\n defaultPort: port,\n reuseExistingPort,\n });\n if (resolvedPort == null) {\n Log.log('\\u203A Skipping dev server');\n // Skip bundling if the port is null\n } else {\n // Use the new or resolved port\n process.env.RCT_METRO_PORT = String(resolvedPort);\n }\n\n return resolvedPort;\n}\n"],"names":["getFreePortAsync","choosePortAsync","resolvePortAsync","Log","rangeStart","port","freeportAsync","hostnames","CommandError","projectRoot","defaultPort","host","reuseExistingPort","getRunningProcess","confirmAsync","isRoot","Promise","all","isRestricted","process","platform","default","message","chalk","bold","runningProcess","pidTag","gray","pid","directory","cyan","command","log","change","initial","error","code","warn","yellow","fallbackPort","parseInt","env","RCT_METRO_PORT","resolvedPort","String"],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ exports.profile = profile;
6
+ var _chalk = _interopRequireDefault(require("chalk"));
7
+ var Log = _interopRequireWildcard(require("../log"));
8
+ var _env = require("./env");
9
+ function _interopRequireDefault(obj) {
10
+ return obj && obj.__esModule ? obj : {
11
+ default: obj
12
+ };
13
+ }
14
+ function _interopRequireWildcard(obj) {
15
+ if (obj && obj.__esModule) {
16
+ return obj;
17
+ } else {
18
+ var newObj = {};
19
+ if (obj != null) {
20
+ for(var key in obj){
21
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
22
+ var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};
23
+ if (desc.get || desc.set) {
24
+ Object.defineProperty(newObj, key, desc);
25
+ } else {
26
+ newObj[key] = obj[key];
27
+ }
28
+ }
29
+ }
30
+ }
31
+ newObj.default = obj;
32
+ return newObj;
33
+ }
34
+ }
35
+ function profile(fn, functionName = fn.name) {
36
+ if (!_env.env.EXPO_PROFILE) {
37
+ return fn;
38
+ }
39
+ const name = _chalk.default.dim(`⏱ [profile] ${functionName != null ? functionName : "unknown"}`);
40
+ return (...args)=>{
41
+ // Start the timer.
42
+ Log.time(name);
43
+ // Invoke the method.
44
+ const results1 = fn(...args);
45
+ // If non-promise then return as-is.
46
+ if (!(results1 instanceof Promise)) {
47
+ Log.timeEnd(name);
48
+ return results1;
49
+ }
50
+ // Otherwise await to profile after the promise resolves.
51
+ return new Promise((resolve, reject)=>{
52
+ results1.then((results)=>{
53
+ resolve(results);
54
+ Log.timeEnd(name);
55
+ }, (reason)=>{
56
+ reject(reason);
57
+ Log.timeEnd(name);
58
+ });
59
+ });
60
+ };
61
+ }
62
+
63
+ //# sourceMappingURL=profile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/utils/profile.ts"],"sourcesContent":["import chalk from 'chalk';\n\nimport * as Log from '../log';\nimport { env } from './env';\n\n/**\n * Wrap a method and profile the time it takes to execute the method using `EXPO_PROFILE`.\n * Works best with named functions (i.e. not arrow functions).\n *\n * @param fn function to profile.\n * @param functionName optional name of the function to display in the profile output.\n */\nexport function profile<IArgs extends any[], T extends (...args: IArgs) => any>(\n fn: T,\n functionName: string = fn.name\n): T {\n if (!env.EXPO_PROFILE) {\n return fn;\n }\n\n const name = chalk.dim(`⏱ [profile] ${functionName ?? 'unknown'}`);\n\n return ((...args: IArgs) => {\n // Start the timer.\n Log.time(name);\n\n // Invoke the method.\n const results = fn(...args);\n\n // If non-promise then return as-is.\n if (!(results instanceof Promise)) {\n Log.timeEnd(name);\n return results;\n }\n\n // Otherwise await to profile after the promise resolves.\n return new Promise<Awaited<ReturnType<T>>>((resolve, reject) => {\n results.then(\n (results) => {\n resolve(results);\n Log.timeEnd(name);\n },\n (reason) => {\n reject(reason);\n Log.timeEnd(name);\n }\n );\n });\n }) as T;\n}\n"],"names":["profile","Log","fn","functionName","name","env","EXPO_PROFILE","chalk","dim","args","time","results","Promise","timeEnd","resolve","reject","then","reason"],"mappings":"AAAA;;;;QAYgBA,OAAO,GAAPA,OAAO;AAZL,IAAA,MAAO,kCAAP,OAAO,EAAA;AAEbC,IAAAA,GAAG,mCAAM,QAAQ,EAAd;AACK,IAAA,IAAO,WAAP,OAAO,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;AASpB,SAASD,OAAO,CACrBE,EAAK,EACLC,YAAoB,GAAGD,EAAE,CAACE,IAAI,EAC3B;IACH,IAAI,CAACC,IAAG,IAAA,CAACC,YAAY,EAAE;QACrB,OAAOJ,EAAE,CAAC;KACX;IAED,MAAME,IAAI,GAAGG,MAAK,QAAA,CAACC,GAAG,CAAC,CAAC,eAAa,EAAEL,YAAY,WAAZA,YAAY,GAAI,SAAS,CAAC,CAAC,CAAC,AAAC;IAEpE,OAAQ,CAAC,GAAGM,IAAI,AAAO,GAAK;QAC1B,mBAAmB;QACnBR,GAAG,CAACS,IAAI,CAACN,IAAI,CAAC,CAAC;QAEf,qBAAqB;QACrB,MAAMO,QAAO,GAAGT,EAAE,IAAIO,IAAI,CAAC,AAAC;QAE5B,oCAAoC;QACpC,IAAI,CAAC,CAACE,QAAO,YAAYC,OAAO,CAAC,EAAE;YACjCX,GAAG,CAACY,OAAO,CAACT,IAAI,CAAC,CAAC;YAClB,OAAOO,QAAO,CAAC;SAChB;QAED,yDAAyD;QACzD,OAAO,IAAIC,OAAO,CAAyB,CAACE,OAAO,EAAEC,MAAM,GAAK;YAC9DJ,QAAO,CAACK,IAAI,CACV,CAACL,OAAO,GAAK;gBACXG,OAAO,CAACH,OAAO,CAAC,CAAC;gBACjBV,GAAG,CAACY,OAAO,CAACT,IAAI,CAAC,CAAC;aACnB,EACD,CAACa,MAAM,GAAK;gBACVF,MAAM,CAACE,MAAM,CAAC,CAAC;gBACfhB,GAAG,CAACY,OAAO,CAACT,IAAI,CAAC,CAAC;aACnB,CACF,CAAC;SACH,CAAC,CAAC;KACJ,CAAO;CACT"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ exports.setProgressBar = setProgressBar;
6
+ exports.getProgressBar = getProgressBar;
7
+ let currentProgress = null;
8
+ function setProgressBar(bar) {
9
+ currentProgress = bar;
10
+ }
11
+ function getProgressBar() {
12
+ return currentProgress;
13
+ }
14
+
15
+ //# sourceMappingURL=progress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/utils/progress.ts"],"sourcesContent":["import ProgressBar from 'progress';\n\nlet currentProgress: ProgressBar | null = null;\n\nexport function setProgressBar(bar: ProgressBar | null): void {\n currentProgress = bar;\n}\n\nexport function getProgressBar(): ProgressBar | null {\n return currentProgress;\n}\n"],"names":["setProgressBar","getProgressBar","currentProgress","bar"],"mappings":"AAAA;;;;QAIgBA,cAAc,GAAdA,cAAc;QAIdC,cAAc,GAAdA,cAAc;AAN9B,IAAIC,eAAe,GAAuB,IAAI,AAAC;AAExC,SAASF,cAAc,CAACG,GAAuB,EAAQ;IAC5DD,eAAe,GAAGC,GAAG,CAAC;CACvB;AAEM,SAASF,cAAc,GAAuB;IACnD,OAAOC,eAAe,CAAC;CACxB"}
@@ -0,0 +1,127 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "PromptType", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return _prompts.PromptType;
9
+ }
10
+ });
11
+ exports.default = prompt;
12
+ exports.confirmAsync = confirmAsync;
13
+ exports.selectAsync = selectAsync;
14
+ exports.addInteractionListener = addInteractionListener;
15
+ exports.removeInteractionListener = removeInteractionListener;
16
+ exports.pauseInteractions = pauseInteractions;
17
+ exports.resumeInteractions = resumeInteractions;
18
+ exports.promptAsync = void 0;
19
+ var _assert = _interopRequireDefault(require("assert"));
20
+ var _prompts = _interopRequireWildcard(require("prompts"));
21
+ var Log = _interopRequireWildcard(require("../log"));
22
+ var _env = require("./env");
23
+ var _errors = require("./errors");
24
+ async function prompt(questions, { nonInteractiveHelp , ...options } = {}) {
25
+ questions = Array.isArray(questions) ? questions : [
26
+ questions
27
+ ];
28
+ if (_env.env.CI && questions.length !== 0) {
29
+ let message = `Input is required, but 'npx expo' is in non-interactive mode.\n`;
30
+ if (nonInteractiveHelp) {
31
+ message += nonInteractiveHelp;
32
+ } else {
33
+ const question = questions[0];
34
+ const questionMessage = typeof question.message === "function" ? question.message(undefined, {}, question) : question.message;
35
+ message += `Required input:\n${(questionMessage || "").trim().replace(/^/gm, "> ")}`;
36
+ }
37
+ throw new _errors.CommandError("NON_INTERACTIVE", message);
38
+ }
39
+ pauseInteractions();
40
+ try {
41
+ const results = await (0, _prompts).default(questions, {
42
+ onCancel () {
43
+ throw new _errors.AbortCommandError();
44
+ },
45
+ ...options
46
+ });
47
+ return results;
48
+ } finally{
49
+ resumeInteractions();
50
+ }
51
+ }
52
+ function _interopRequireDefault(obj) {
53
+ return obj && obj.__esModule ? obj : {
54
+ default: obj
55
+ };
56
+ }
57
+ function _interopRequireWildcard(obj) {
58
+ if (obj && obj.__esModule) {
59
+ return obj;
60
+ } else {
61
+ var newObj = {};
62
+ if (obj != null) {
63
+ for(var key in obj){
64
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
65
+ var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};
66
+ if (desc.get || desc.set) {
67
+ Object.defineProperty(newObj, key, desc);
68
+ } else {
69
+ newObj[key] = obj[key];
70
+ }
71
+ }
72
+ }
73
+ }
74
+ newObj.default = obj;
75
+ return newObj;
76
+ }
77
+ }
78
+ /** Interaction observers for detecting when keystroke tracking should pause/resume. */ const listeners = [];
79
+ async function confirmAsync(questions, options) {
80
+ const { value } = await prompt({
81
+ initial: true,
82
+ ...questions,
83
+ name: "value",
84
+ type: "confirm"
85
+ }, options);
86
+ return value != null ? value : null;
87
+ }
88
+ async function selectAsync(message, choices, options) {
89
+ const { value } = await prompt({
90
+ message,
91
+ choices,
92
+ name: "value",
93
+ type: "select"
94
+ }, options);
95
+ return value != null ? value : null;
96
+ }
97
+ const promptAsync = prompt;
98
+ exports.promptAsync = promptAsync;
99
+ function addInteractionListener(callback) {
100
+ listeners.push(callback);
101
+ }
102
+ function removeInteractionListener(callback) {
103
+ const listenerIndex = listeners.findIndex((_callback)=>_callback === callback
104
+ );
105
+ (0, _assert).default(listenerIndex >= 0, "removeInteractionListener(): cannot remove an unregistered event listener.");
106
+ listeners.splice(listenerIndex, 1);
107
+ }
108
+ function pauseInteractions(options = {}) {
109
+ Log.debug("Interaction observers paused");
110
+ for (const listener of listeners){
111
+ listener({
112
+ pause: true,
113
+ ...options
114
+ });
115
+ }
116
+ }
117
+ function resumeInteractions(options = {}) {
118
+ Log.debug("Interaction observers resumed");
119
+ for (const listener of listeners){
120
+ listener({
121
+ pause: false,
122
+ ...options
123
+ });
124
+ }
125
+ }
126
+
127
+ //# sourceMappingURL=prompts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/utils/prompts.ts"],"sourcesContent":["import assert from 'assert';\nimport prompts, { Choice, Options, PromptObject, PromptType } from 'prompts';\n\nimport * as Log from '../log';\nimport { env } from './env';\nimport { AbortCommandError, CommandError } from './errors';\n\nexport type Question<V extends string = string> = PromptObject<V> & {\n optionsPerPage?: number;\n};\n\nexport interface ExpoChoice<T> extends Choice {\n value: T;\n}\n\nexport { PromptType };\n\ntype PromptOptions = { nonInteractiveHelp?: string } & Options;\n\nexport type NamelessQuestion = Omit<Question<'value'>, 'name' | 'type'>;\n\ntype InteractionOptions = { pause: boolean; canEscape?: boolean };\n\ntype InteractionCallback = (options: InteractionOptions) => void;\n\n/** Interaction observers for detecting when keystroke tracking should pause/resume. */\nconst listeners: InteractionCallback[] = [];\n\nexport default async function prompt(\n questions: Question | Question[],\n { nonInteractiveHelp, ...options }: PromptOptions = {}\n) {\n questions = Array.isArray(questions) ? questions : [questions];\n if (env.CI && questions.length !== 0) {\n let message = `Input is required, but 'npx expo' is in non-interactive mode.\\n`;\n if (nonInteractiveHelp) {\n message += nonInteractiveHelp;\n } else {\n const question = questions[0];\n const questionMessage =\n typeof question.message === 'function'\n ? question.message(undefined, {}, question)\n : question.message;\n\n message += `Required input:\\n${(questionMessage || '').trim().replace(/^/gm, '> ')}`;\n }\n throw new CommandError('NON_INTERACTIVE', message);\n }\n\n pauseInteractions();\n try {\n const results = await prompts(questions, {\n onCancel() {\n throw new AbortCommandError();\n },\n ...options,\n });\n\n return results;\n } finally {\n resumeInteractions();\n }\n}\n\n/**\n * Create a standard yes/no confirmation that can be cancelled.\n *\n * @param questions\n * @param options\n */\nexport async function confirmAsync(\n questions: NamelessQuestion,\n options?: PromptOptions\n): Promise<boolean> {\n const { value } = await prompt(\n {\n initial: true,\n ...questions,\n name: 'value',\n type: 'confirm',\n },\n options\n );\n return value ?? null;\n}\n\n/** Select an option from a list of options. */\nexport async function selectAsync<T>(\n message: string,\n choices: ExpoChoice<T>[],\n options?: PromptOptions\n): Promise<T> {\n const { value } = await prompt(\n {\n message,\n choices,\n name: 'value',\n type: 'select',\n },\n options\n );\n return value ?? null;\n}\n\nexport const promptAsync = prompt;\n\n/** Used to pause/resume interaction observers while prompting (made for TerminalUI). */\nexport function addInteractionListener(callback: InteractionCallback) {\n listeners.push(callback);\n}\n\nexport function removeInteractionListener(callback: InteractionCallback) {\n const listenerIndex = listeners.findIndex((_callback) => _callback === callback);\n assert(\n listenerIndex >= 0,\n 'removeInteractionListener(): cannot remove an unregistered event listener.'\n );\n listeners.splice(listenerIndex, 1);\n}\n\n/** Notify all listeners that keypress observations must pause. */\nexport function pauseInteractions(options: Omit<InteractionOptions, 'pause'> = {}) {\n Log.debug('Interaction observers paused');\n for (const listener of listeners) {\n listener({ pause: true, ...options });\n }\n}\n\n/** Notify all listeners that keypress observations can start.. */\nexport function resumeInteractions(options: Omit<InteractionOptions, 'pause'> = {}) {\n Log.debug('Interaction observers resumed');\n for (const listener of listeners) {\n listener({ pause: false, ...options });\n }\n}\n"],"names":["PromptType","prompt","confirmAsync","selectAsync","addInteractionListener","removeInteractionListener","pauseInteractions","resumeInteractions","Log","questions","nonInteractiveHelp","options","Array","isArray","env","CI","length","message","question","questionMessage","undefined","trim","replace","CommandError","results","prompts","onCancel","AbortCommandError","listeners","value","initial","name","type","choices","promptAsync","callback","push","listenerIndex","findIndex","_callback","assert","splice","debug","listener","pause"],"mappings":"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"}
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ exports.resolveStringOrBooleanArgsAsync = resolveStringOrBooleanArgsAsync;
6
+ exports._resolveStringOrBooleanArgs = _resolveStringOrBooleanArgs;
7
+ exports.collapseAliases = collapseAliases;
8
+ exports.assertUnknownArgs = assertUnknownArgs;
9
+ exports.assertDuplicateArgs = assertDuplicateArgs;
10
+ var _array = require("./array");
11
+ var _errors = require("./errors");
12
+ async function resolveStringOrBooleanArgsAsync(args, rawMap, extraArgs) {
13
+ // Assert any missing arguments
14
+ assertUnknownArgs({
15
+ ...rawMap,
16
+ ...extraArgs
17
+ }, args);
18
+ // Collapse aliases into fully qualified arguments.
19
+ args = collapseAliases(extraArgs, args);
20
+ // Resolve all of the string or boolean arguments and the project root.
21
+ return _resolveStringOrBooleanArgs(extraArgs, args);
22
+ }
23
+ function _resolveStringOrBooleanArgs(arg, args) {
24
+ // Default project root, if a custom one is defined then it will overwrite this.
25
+ let projectRoot = ".";
26
+ // The resolved arguments.
27
+ const settings = {};
28
+ // Create a list of possible arguments, this will filter out aliases.
29
+ const possibleArgs = Object.entries(arg).filter(([, value])=>typeof value !== "string"
30
+ ).map(([key])=>key
31
+ );
32
+ // Loop over arguments in reverse order so we can resolve if a value belongs to a flag.
33
+ for(let i = args.length - 1; i > -1; i--){
34
+ const value = args[i];
35
+ // At this point we should have converted all aliases to fully qualified arguments.
36
+ if (value.startsWith("--")) {
37
+ // If we ever find an argument then it must be a boolean because we are checking in reverse
38
+ // and removing arguments from the array if we find a string.
39
+ settings[value] = true;
40
+ } else {
41
+ // Get the previous argument in the array.
42
+ const nextValue = i > 0 ? args[i - 1] : null;
43
+ if (nextValue && possibleArgs.includes(nextValue)) {
44
+ settings[nextValue] = value;
45
+ i--;
46
+ } else if (// If the last value is not a flag and it doesn't have a recognized flag before it (instead having a string value or nothing)
47
+ // then it must be the project root.
48
+ i === args.length - 1) {
49
+ projectRoot = value;
50
+ } else {
51
+ // This will asserts if two strings are passed in a row and not at the end of the line.
52
+ throw new _errors.CommandError("BAD_ARGS", `Unknown argument: ${value}`);
53
+ }
54
+ }
55
+ }
56
+ return {
57
+ args: settings,
58
+ projectRoot
59
+ };
60
+ }
61
+ function collapseAliases(arg, args) {
62
+ const aliasMap = getAliasTuples(arg);
63
+ for (const [arg1, alias] of aliasMap){
64
+ args = (0, _array).replaceValue(args, arg1, alias);
65
+ }
66
+ // Assert if there are duplicate flags after we collapse the aliases.
67
+ assertDuplicateArgs(args, aliasMap);
68
+ return args;
69
+ }
70
+ function assertUnknownArgs(arg2, args) {
71
+ const allowedArgs = Object.keys(arg2);
72
+ const unknownArgs = args.filter((arg)=>!allowedArgs.includes(arg) && arg.startsWith("-")
73
+ );
74
+ if (unknownArgs.length > 0) {
75
+ throw new _errors.CommandError(`Unknown arguments: ${unknownArgs.join(", ")}`);
76
+ }
77
+ }
78
+ function getAliasTuples(arg) {
79
+ return Object.entries(arg).filter(([, value])=>typeof value === "string"
80
+ );
81
+ }
82
+ function assertDuplicateArgs(args, argNameAliasTuple) {
83
+ for (const [argName, argNameAlias] of argNameAliasTuple){
84
+ if (args.filter((a)=>[
85
+ argName,
86
+ argNameAlias
87
+ ].includes(a)
88
+ ).length > 1) {
89
+ throw new _errors.CommandError("BAD_ARGS", `Can only provide one instance of ${argName} or ${argNameAlias}`);
90
+ }
91
+ }
92
+ }
93
+
94
+ //# sourceMappingURL=resolveArgs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/utils/resolveArgs.ts"],"sourcesContent":["import arg, { Spec } from 'arg';\n\nimport { replaceValue } from './array';\nimport { CommandError } from './errors';\n\n/**\n * Enables the resolution of arguments that can either be a string or a boolean.\n *\n * @param args arguments that were passed to the command.\n * @param rawMap raw map of arguments that are passed to the command.\n * @param extraArgs extra arguments and aliases that should be resolved as string or boolean.\n * @returns parsed arguments and project root.\n */\nexport async function resolveStringOrBooleanArgsAsync(\n args: string[],\n rawMap: arg.Spec,\n extraArgs: arg.Spec\n) {\n // Assert any missing arguments\n assertUnknownArgs(\n {\n ...rawMap,\n ...extraArgs,\n },\n args\n );\n\n // Collapse aliases into fully qualified arguments.\n args = collapseAliases(extraArgs, args);\n\n // Resolve all of the string or boolean arguments and the project root.\n return _resolveStringOrBooleanArgs(extraArgs, args);\n}\n\nexport function _resolveStringOrBooleanArgs(arg: Spec, args: string[]) {\n // Default project root, if a custom one is defined then it will overwrite this.\n let projectRoot: string = '.';\n // The resolved arguments.\n const settings: Record<string, string | boolean | undefined> = {};\n\n // Create a list of possible arguments, this will filter out aliases.\n const possibleArgs = Object.entries(arg)\n .filter(([, value]) => typeof value !== 'string')\n .map(([key]) => key);\n\n // Loop over arguments in reverse order so we can resolve if a value belongs to a flag.\n for (let i = args.length - 1; i > -1; i--) {\n const value = args[i];\n // At this point we should have converted all aliases to fully qualified arguments.\n if (value.startsWith('--')) {\n // If we ever find an argument then it must be a boolean because we are checking in reverse\n // and removing arguments from the array if we find a string.\n settings[value] = true;\n } else {\n // Get the previous argument in the array.\n const nextValue = i > 0 ? args[i - 1] : null;\n if (nextValue && possibleArgs.includes(nextValue)) {\n settings[nextValue] = value;\n i--;\n } else if (\n // If the last value is not a flag and it doesn't have a recognized flag before it (instead having a string value or nothing)\n // then it must be the project root.\n i ===\n args.length - 1\n ) {\n projectRoot = value;\n } else {\n // This will asserts if two strings are passed in a row and not at the end of the line.\n throw new CommandError('BAD_ARGS', `Unknown argument: ${value}`);\n }\n }\n }\n\n return {\n args: settings,\n projectRoot,\n };\n}\n\n/** Convert all aliases to fully qualified flag names. */\nexport function collapseAliases(arg: Spec, args: string[]): string[] {\n const aliasMap = getAliasTuples(arg);\n\n for (const [arg, alias] of aliasMap) {\n args = replaceValue(args, arg, alias);\n }\n\n // Assert if there are duplicate flags after we collapse the aliases.\n assertDuplicateArgs(args, aliasMap);\n return args;\n}\n\n/** Assert that the spec has unknown arguments. */\nexport function assertUnknownArgs(arg: Spec, args: string[]) {\n const allowedArgs = Object.keys(arg);\n const unknownArgs = args.filter((arg) => !allowedArgs.includes(arg) && arg.startsWith('-'));\n if (unknownArgs.length > 0) {\n throw new CommandError(`Unknown arguments: ${unknownArgs.join(', ')}`);\n }\n}\n\nfunction getAliasTuples(arg: Spec): [string, string][] {\n return Object.entries(arg).filter(([, value]) => typeof value === 'string') as [string, string][];\n}\n\n/** Asserts that a duplicate flag has been used, this naively throws without knowing if an alias or flag were used as the duplicate. */\nexport function assertDuplicateArgs(args: string[], argNameAliasTuple: [string, string][]) {\n for (const [argName, argNameAlias] of argNameAliasTuple) {\n if (args.filter((a) => [argName, argNameAlias].includes(a)).length > 1) {\n throw new CommandError(\n 'BAD_ARGS',\n `Can only provide one instance of ${argName} or ${argNameAlias}`\n );\n }\n }\n}\n"],"names":["resolveStringOrBooleanArgsAsync","_resolveStringOrBooleanArgs","collapseAliases","assertUnknownArgs","assertDuplicateArgs","args","rawMap","extraArgs","arg","projectRoot","settings","possibleArgs","Object","entries","filter","value","map","key","i","length","startsWith","nextValue","includes","CommandError","aliasMap","getAliasTuples","alias","replaceValue","allowedArgs","keys","unknownArgs","join","argNameAliasTuple","argName","argNameAlias","a"],"mappings":"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"}