@expo/cli 1.0.0-canary-20250320-7a205d3 → 1.0.0-canary-20250402-161f57b

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 (719) hide show
  1. package/build/bin/cli +93 -91
  2. package/build/bin/cli.map +1 -1
  3. package/build/metro-require/require.js +53 -52
  4. package/build/src/api/endpoint.js +6 -2
  5. package/build/src/api/endpoint.js.map +1 -1
  6. package/build/src/api/getExpoGoIntermediateCertificate.js +5 -3
  7. package/build/src/api/getExpoGoIntermediateCertificate.js.map +1 -1
  8. package/build/src/api/getExpoSchema.js +16 -12
  9. package/build/src/api/getExpoSchema.js.map +1 -1
  10. package/build/src/api/getNativeModuleVersions.js +6 -4
  11. package/build/src/api/getNativeModuleVersions.js.map +1 -1
  12. package/build/src/api/getProjectDevelopmentCertificate.js +5 -3
  13. package/build/src/api/getProjectDevelopmentCertificate.js.map +1 -1
  14. package/build/src/api/getVersions.js +7 -5
  15. package/build/src/api/getVersions.js.map +1 -1
  16. package/build/src/api/graphql/client.js +32 -26
  17. package/build/src/api/graphql/client.js.map +1 -1
  18. package/build/src/api/graphql/queries/AppQuery.js +6 -4
  19. package/build/src/api/graphql/queries/AppQuery.js.map +1 -1
  20. package/build/src/api/graphql/queries/UserQuery.js +5 -3
  21. package/build/src/api/graphql/queries/UserQuery.js.map +1 -1
  22. package/build/src/api/graphql/types/App.js +3 -1
  23. package/build/src/api/graphql/types/App.js.map +1 -1
  24. package/build/src/api/rest/cache/FileSystemResponseCache.js +36 -32
  25. package/build/src/api/rest/cache/FileSystemResponseCache.js.map +1 -1
  26. package/build/src/api/rest/cache/ResponseCache.js +20 -12
  27. package/build/src/api/rest/cache/ResponseCache.js.map +1 -1
  28. package/build/src/api/rest/cache/wrapFetchWithCache.js +13 -11
  29. package/build/src/api/rest/cache/wrapFetchWithCache.js.map +1 -1
  30. package/build/src/api/rest/client.js +55 -37
  31. package/build/src/api/rest/client.js.map +1 -1
  32. package/build/src/api/rest/client.types.js.map +1 -1
  33. package/build/src/api/rest/wrapFetchWithBaseUrl.js +5 -3
  34. package/build/src/api/rest/wrapFetchWithBaseUrl.js.map +1 -1
  35. package/build/src/api/rest/wrapFetchWithOffline.js +5 -3
  36. package/build/src/api/rest/wrapFetchWithOffline.js.map +1 -1
  37. package/build/src/api/rest/wrapFetchWithProgress.js +11 -7
  38. package/build/src/api/rest/wrapFetchWithProgress.js.map +1 -1
  39. package/build/src/api/rest/wrapFetchWithProxy.js +5 -3
  40. package/build/src/api/rest/wrapFetchWithProxy.js.map +1 -1
  41. package/build/src/api/rest/wrapFetchWithUserAgent.js +8 -6
  42. package/build/src/api/rest/wrapFetchWithUserAgent.js.map +1 -1
  43. package/build/src/api/settings.js +7 -5
  44. package/build/src/api/settings.js.map +1 -1
  45. package/build/src/api/updateDevelopmentSession.js +23 -17
  46. package/build/src/api/updateDevelopmentSession.js.map +1 -1
  47. package/build/src/api/user/UserSettings.js +53 -31
  48. package/build/src/api/user/UserSettings.js.map +1 -1
  49. package/build/src/api/user/actions.js +27 -21
  50. package/build/src/api/user/actions.js.map +1 -1
  51. package/build/src/api/user/expoSsoLauncher.js +30 -26
  52. package/build/src/api/user/expoSsoLauncher.js.map +1 -1
  53. package/build/src/api/user/otp.js +35 -29
  54. package/build/src/api/user/otp.js.map +1 -1
  55. package/build/src/api/user/user.js +44 -30
  56. package/build/src/api/user/user.js.map +1 -1
  57. package/build/src/config/configAsync.js +29 -23
  58. package/build/src/config/configAsync.js.map +1 -1
  59. package/build/src/config/index.js +25 -21
  60. package/build/src/config/index.js.map +1 -1
  61. package/build/src/customize/customizeAsync.js +8 -6
  62. package/build/src/customize/customizeAsync.js.map +1 -1
  63. package/build/src/customize/generate.js +20 -16
  64. package/build/src/customize/generate.js.map +1 -1
  65. package/build/src/customize/index.js +14 -12
  66. package/build/src/customize/index.js.map +1 -1
  67. package/build/src/customize/resolveOptions.js +4 -2
  68. package/build/src/customize/resolveOptions.js.map +1 -1
  69. package/build/src/customize/templates.js +58 -54
  70. package/build/src/customize/templates.js.map +1 -1
  71. package/build/src/customize/typescript.js +11 -7
  72. package/build/src/customize/typescript.js.map +1 -1
  73. package/build/src/export/createMetadataJson.js +11 -9
  74. package/build/src/export/createMetadataJson.js.map +1 -1
  75. package/build/src/export/embed/exportEager.js +8 -6
  76. package/build/src/export/embed/exportEager.js.map +1 -1
  77. package/build/src/export/embed/exportEmbedAsync.js +72 -62
  78. package/build/src/export/embed/exportEmbedAsync.js.map +1 -1
  79. package/build/src/export/embed/exportServer.js +57 -55
  80. package/build/src/export/embed/exportServer.js.map +1 -1
  81. package/build/src/export/embed/index.js +44 -40
  82. package/build/src/export/embed/index.js.map +1 -1
  83. package/build/src/export/embed/resolveOptions.js +44 -36
  84. package/build/src/export/embed/resolveOptions.js.map +1 -1
  85. package/build/src/export/embed/xcodeCompilerLogger.js +39 -27
  86. package/build/src/export/embed/xcodeCompilerLogger.js.map +1 -1
  87. package/build/src/export/exportApp.js +68 -64
  88. package/build/src/export/exportApp.js.map +1 -1
  89. package/build/src/export/exportAssets.js +34 -26
  90. package/build/src/export/exportAssets.js.map +1 -1
  91. package/build/src/export/exportAsync.js +13 -9
  92. package/build/src/export/exportAsync.js.map +1 -1
  93. package/build/src/export/exportDomComponents.js +53 -45
  94. package/build/src/export/exportDomComponents.js.map +1 -1
  95. package/build/src/export/exportHermes.js +75 -53
  96. package/build/src/export/exportHermes.js.map +1 -1
  97. package/build/src/export/exportStaticAsync.js +73 -62
  98. package/build/src/export/exportStaticAsync.js.map +1 -1
  99. package/build/src/export/favicon.js +33 -27
  100. package/build/src/export/favicon.js.map +1 -1
  101. package/build/src/export/getPublicExpoManifest.js +7 -5
  102. package/build/src/export/getPublicExpoManifest.js.map +1 -1
  103. package/build/src/export/getResolvedLocales.js +11 -9
  104. package/build/src/export/getResolvedLocales.js.map +1 -1
  105. package/build/src/export/html.js +10 -6
  106. package/build/src/export/html.js.map +1 -1
  107. package/build/src/export/index.js +32 -28
  108. package/build/src/export/index.js.map +1 -1
  109. package/build/src/export/metroAssetLocalPath.js +36 -30
  110. package/build/src/export/metroAssetLocalPath.js.map +1 -1
  111. package/build/src/export/persistMetroAssets.js +64 -34
  112. package/build/src/export/persistMetroAssets.js.map +1 -1
  113. package/build/src/export/publicFolder.js +10 -6
  114. package/build/src/export/publicFolder.js.map +1 -1
  115. package/build/src/export/resolveOptions.js +28 -24
  116. package/build/src/export/resolveOptions.js.map +1 -1
  117. package/build/src/export/saveAssets.js +50 -46
  118. package/build/src/export/saveAssets.js.map +1 -1
  119. package/build/src/export/web/exportWebAsync.js +13 -11
  120. package/build/src/export/web/exportWebAsync.js.map +1 -1
  121. package/build/src/export/web/index.js +19 -15
  122. package/build/src/export/web/index.js.map +1 -1
  123. package/build/src/export/web/resolveOptions.js +5 -3
  124. package/build/src/export/web/resolveOptions.js.map +1 -1
  125. package/build/src/export/writeContents.js +4 -2
  126. package/build/src/export/writeContents.js.map +1 -1
  127. package/build/src/graphql/generated.js +705 -479
  128. package/build/src/graphql/generated.js.map +1 -1
  129. package/build/src/install/applyPlugins.js +11 -7
  130. package/build/src/install/applyPlugins.js.map +1 -1
  131. package/build/src/install/checkPackages.js +26 -22
  132. package/build/src/install/checkPackages.js.map +1 -1
  133. package/build/src/install/fixPackages.js +16 -12
  134. package/build/src/install/fixPackages.js.map +1 -1
  135. package/build/src/install/index.js +18 -16
  136. package/build/src/install/index.js.map +1 -1
  137. package/build/src/install/installAsync.js +32 -26
  138. package/build/src/install/installAsync.js.map +1 -1
  139. package/build/src/install/installExpoPackage.js +22 -18
  140. package/build/src/install/installExpoPackage.js.map +1 -1
  141. package/build/src/install/resolveOptions.js +21 -19
  142. package/build/src/install/resolveOptions.js.map +1 -1
  143. package/build/src/install/utils/autoAddConfigPlugins.js +18 -14
  144. package/build/src/install/utils/autoAddConfigPlugins.js.map +1 -1
  145. package/build/src/install/utils/checkPackagesCompatibility.js +14 -12
  146. package/build/src/install/utils/checkPackagesCompatibility.js.map +1 -1
  147. package/build/src/lint/ESlintPrerequisite.js +50 -44
  148. package/build/src/lint/ESlintPrerequisite.js.map +1 -1
  149. package/build/src/lint/index.js +12 -8
  150. package/build/src/lint/index.js.map +1 -1
  151. package/build/src/lint/lintAsync.js +10 -8
  152. package/build/src/lint/lintAsync.js.map +1 -1
  153. package/build/src/log.js +36 -16
  154. package/build/src/log.js.map +1 -1
  155. package/build/src/login/index.js +24 -20
  156. package/build/src/login/index.js.map +1 -1
  157. package/build/src/logout/index.js +11 -7
  158. package/build/src/logout/index.js.map +1 -1
  159. package/build/src/prebuild/clearNativeFolder.js +38 -26
  160. package/build/src/prebuild/clearNativeFolder.js.map +1 -1
  161. package/build/src/prebuild/configureProjectAsync.js +18 -14
  162. package/build/src/prebuild/configureProjectAsync.js.map +1 -1
  163. package/build/src/prebuild/copyTemplateFiles.js +17 -13
  164. package/build/src/prebuild/copyTemplateFiles.js.map +1 -1
  165. package/build/src/prebuild/ensureConfigAsync.js +6 -4
  166. package/build/src/prebuild/ensureConfigAsync.js.map +1 -1
  167. package/build/src/prebuild/index.js +36 -32
  168. package/build/src/prebuild/index.js.map +1 -1
  169. package/build/src/prebuild/prebuildAsync.js +29 -25
  170. package/build/src/prebuild/prebuildAsync.js.map +1 -1
  171. package/build/src/prebuild/renameTemplateAppName.js +43 -37
  172. package/build/src/prebuild/renameTemplateAppName.js.map +1 -1
  173. package/build/src/prebuild/resolveOptions.js +70 -53
  174. package/build/src/prebuild/resolveOptions.js.map +1 -1
  175. package/build/src/prebuild/resolveTemplate.js +36 -32
  176. package/build/src/prebuild/resolveTemplate.js.map +1 -1
  177. package/build/src/prebuild/updateFromTemplate.js +19 -13
  178. package/build/src/prebuild/updateFromTemplate.js.map +1 -1
  179. package/build/src/prebuild/updatePackageJson.js +53 -39
  180. package/build/src/prebuild/updatePackageJson.js.map +1 -1
  181. package/build/src/prebuild/validateTemplatePlatforms.js +12 -8
  182. package/build/src/prebuild/validateTemplatePlatforms.js.map +1 -1
  183. package/build/src/register/index.js +11 -7
  184. package/build/src/register/index.js.map +1 -1
  185. package/build/src/register/registerAsync.js +5 -3
  186. package/build/src/register/registerAsync.js.map +1 -1
  187. package/build/src/run/android/index.js +36 -32
  188. package/build/src/run/android/index.js.map +1 -1
  189. package/build/src/run/android/resolveDevice.js +10 -8
  190. package/build/src/run/android/resolveDevice.js.map +1 -1
  191. package/build/src/run/android/resolveGradlePropsAsync.js +18 -16
  192. package/build/src/run/android/resolveGradlePropsAsync.js.map +1 -1
  193. package/build/src/run/android/resolveInstallApkName.js +17 -15
  194. package/build/src/run/android/resolveInstallApkName.js.map +1 -1
  195. package/build/src/run/android/resolveLaunchProps.js +12 -10
  196. package/build/src/run/android/resolveLaunchProps.js.map +1 -1
  197. package/build/src/run/android/resolveOptions.js +4 -2
  198. package/build/src/run/android/resolveOptions.js.map +1 -1
  199. package/build/src/run/android/runAndroidAsync.js +23 -21
  200. package/build/src/run/android/runAndroidAsync.js.map +1 -1
  201. package/build/src/run/ensureNativeProject.js +7 -5
  202. package/build/src/run/ensureNativeProject.js.map +1 -1
  203. package/build/src/run/hints.js +13 -7
  204. package/build/src/run/hints.js.map +1 -1
  205. package/build/src/run/index.js +27 -23
  206. package/build/src/run/index.js.map +1 -1
  207. package/build/src/run/ios/XcodeBuild.js +80 -60
  208. package/build/src/run/ios/XcodeBuild.js.map +1 -1
  209. package/build/src/run/ios/XcodeBuild.types.js.map +1 -1
  210. package/build/src/run/ios/appleDevice/AppleDevice.js +69 -63
  211. package/build/src/run/ios/appleDevice/AppleDevice.js.map +1 -1
  212. package/build/src/run/ios/appleDevice/ClientManager.js +29 -26
  213. package/build/src/run/ios/appleDevice/ClientManager.js.map +1 -1
  214. package/build/src/run/ios/appleDevice/client/AFCClient.js +28 -25
  215. package/build/src/run/ios/appleDevice/client/AFCClient.js.map +1 -1
  216. package/build/src/run/ios/appleDevice/client/DebugserverClient.js +29 -26
  217. package/build/src/run/ios/appleDevice/client/DebugserverClient.js.map +1 -1
  218. package/build/src/run/ios/appleDevice/client/InstallationProxyClient.js +22 -21
  219. package/build/src/run/ios/appleDevice/client/InstallationProxyClient.js.map +1 -1
  220. package/build/src/run/ios/appleDevice/client/LockdowndClient.js +32 -29
  221. package/build/src/run/ios/appleDevice/client/LockdowndClient.js.map +1 -1
  222. package/build/src/run/ios/appleDevice/client/MobileImageMounterClient.js +28 -24
  223. package/build/src/run/ios/appleDevice/client/MobileImageMounterClient.js.map +1 -1
  224. package/build/src/run/ios/appleDevice/client/ServiceClient.js +7 -4
  225. package/build/src/run/ios/appleDevice/client/ServiceClient.js.map +1 -1
  226. package/build/src/run/ios/appleDevice/client/UsbmuxdClient.js +28 -27
  227. package/build/src/run/ios/appleDevice/client/UsbmuxdClient.js.map +1 -1
  228. package/build/src/run/ios/appleDevice/installOnDeviceAsync.js +23 -17
  229. package/build/src/run/ios/appleDevice/installOnDeviceAsync.js.map +1 -1
  230. package/build/src/run/ios/appleDevice/protocol/AFCProtocol.js +146 -132
  231. package/build/src/run/ios/appleDevice/protocol/AFCProtocol.js.map +1 -1
  232. package/build/src/run/ios/appleDevice/protocol/AbstractProtocol.js +29 -21
  233. package/build/src/run/ios/appleDevice/protocol/AbstractProtocol.js.map +1 -1
  234. package/build/src/run/ios/appleDevice/protocol/GDBProtocol.js +29 -21
  235. package/build/src/run/ios/appleDevice/protocol/GDBProtocol.js.map +1 -1
  236. package/build/src/run/ios/appleDevice/protocol/LockdownProtocol.js +34 -22
  237. package/build/src/run/ios/appleDevice/protocol/LockdownProtocol.js.map +1 -1
  238. package/build/src/run/ios/appleDevice/protocol/UsbmuxProtocol.js +27 -17
  239. package/build/src/run/ios/appleDevice/protocol/UsbmuxProtocol.js.map +1 -1
  240. package/build/src/run/ios/codeSigning/Security.js +53 -39
  241. package/build/src/run/ios/codeSigning/Security.js.map +1 -1
  242. package/build/src/run/ios/codeSigning/configureCodeSigning.js +13 -9
  243. package/build/src/run/ios/codeSigning/configureCodeSigning.js.map +1 -1
  244. package/build/src/run/ios/codeSigning/resolveCertificateSigningIdentity.js +27 -19
  245. package/build/src/run/ios/codeSigning/resolveCertificateSigningIdentity.js.map +1 -1
  246. package/build/src/run/ios/codeSigning/settings.js +9 -5
  247. package/build/src/run/ios/codeSigning/settings.js.map +1 -1
  248. package/build/src/run/ios/codeSigning/simulatorCodeSigning.js +14 -12
  249. package/build/src/run/ios/codeSigning/simulatorCodeSigning.js.map +1 -1
  250. package/build/src/run/ios/codeSigning/xcodeCodeSigning.js +27 -21
  251. package/build/src/run/ios/codeSigning/xcodeCodeSigning.js.map +1 -1
  252. package/build/src/run/ios/index.js +40 -36
  253. package/build/src/run/ios/index.js.map +1 -1
  254. package/build/src/run/ios/launchApp.js +23 -17
  255. package/build/src/run/ios/launchApp.js.map +1 -1
  256. package/build/src/run/ios/options/appleDestinations.js +38 -36
  257. package/build/src/run/ios/options/appleDestinations.js.map +1 -1
  258. package/build/src/run/ios/options/promptDevice.js +20 -16
  259. package/build/src/run/ios/options/promptDevice.js.map +1 -1
  260. package/build/src/run/ios/options/resolveDevice.js +30 -24
  261. package/build/src/run/ios/options/resolveDevice.js.map +1 -1
  262. package/build/src/run/ios/options/resolveNativeScheme.js +31 -23
  263. package/build/src/run/ios/options/resolveNativeScheme.js.map +1 -1
  264. package/build/src/run/ios/options/resolveOptions.js +7 -5
  265. package/build/src/run/ios/options/resolveOptions.js.map +1 -1
  266. package/build/src/run/ios/options/resolveXcodeProject.js +7 -5
  267. package/build/src/run/ios/options/resolveXcodeProject.js.map +1 -1
  268. package/build/src/run/ios/runIosAsync.js +48 -44
  269. package/build/src/run/ios/runIosAsync.js.map +1 -1
  270. package/build/src/run/ios/validateExternalBinary.js +24 -22
  271. package/build/src/run/ios/validateExternalBinary.js.map +1 -1
  272. package/build/src/run/resolveBundlerProps.js +4 -2
  273. package/build/src/run/resolveBundlerProps.js.map +1 -1
  274. package/build/src/run/startBundler.js +16 -12
  275. package/build/src/run/startBundler.js.map +1 -1
  276. package/build/src/serve/index.js +20 -16
  277. package/build/src/serve/index.js.map +1 -1
  278. package/build/src/serve/serveAsync.js +36 -32
  279. package/build/src/serve/serveAsync.js.map +1 -1
  280. package/build/src/start/detectDevClient.js +13 -9
  281. package/build/src/start/detectDevClient.js.map +1 -1
  282. package/build/src/start/doctor/Prerequisite.js +12 -7
  283. package/build/src/start/doctor/Prerequisite.js.map +1 -1
  284. package/build/src/start/doctor/SecurityBinPrerequisite.js +13 -11
  285. package/build/src/start/doctor/SecurityBinPrerequisite.js.map +1 -1
  286. package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js +23 -19
  287. package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js.map +1 -1
  288. package/build/src/start/doctor/apple/XcodeDeveloperDiskImagePrerequisite.js +23 -19
  289. package/build/src/start/doctor/apple/XcodeDeveloperDiskImagePrerequisite.js.map +1 -1
  290. package/build/src/start/doctor/apple/XcodePrerequisite.js +51 -45
  291. package/build/src/start/doctor/apple/XcodePrerequisite.js.map +1 -1
  292. package/build/src/start/doctor/apple/XcrunPrerequisite.js +18 -16
  293. package/build/src/start/doctor/apple/XcrunPrerequisite.js.map +1 -1
  294. package/build/src/start/doctor/dependencies/bundledNativeModules.js +23 -19
  295. package/build/src/start/doctor/dependencies/bundledNativeModules.js.map +1 -1
  296. package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js +31 -25
  297. package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js.map +1 -1
  298. package/build/src/start/doctor/dependencies/getMissingPackages.js +25 -17
  299. package/build/src/start/doctor/dependencies/getMissingPackages.js.map +1 -1
  300. package/build/src/start/doctor/dependencies/getVersionedPackages.js +40 -32
  301. package/build/src/start/doctor/dependencies/getVersionedPackages.js.map +1 -1
  302. package/build/src/start/doctor/dependencies/resolvePackages.js +32 -26
  303. package/build/src/start/doctor/dependencies/resolvePackages.js.map +1 -1
  304. package/build/src/start/doctor/dependencies/validateDependenciesVersions.js +41 -31
  305. package/build/src/start/doctor/dependencies/validateDependenciesVersions.js.map +1 -1
  306. package/build/src/start/doctor/ngrok/ExternalModule.js +34 -29
  307. package/build/src/start/doctor/ngrok/ExternalModule.js.map +1 -1
  308. package/build/src/start/doctor/ngrok/NgrokResolver.js +12 -8
  309. package/build/src/start/doctor/ngrok/NgrokResolver.js.map +1 -1
  310. package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js +32 -28
  311. package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js.map +1 -1
  312. package/build/src/start/doctor/typescript/updateTSConfig.js +23 -17
  313. package/build/src/start/doctor/typescript/updateTSConfig.js.map +1 -1
  314. package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js +33 -27
  315. package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js.map +1 -1
  316. package/build/src/start/index.js +46 -42
  317. package/build/src/start/index.js.map +1 -1
  318. package/build/src/start/interface/KeyPressHandler.js +18 -14
  319. package/build/src/start/interface/KeyPressHandler.js.map +1 -1
  320. package/build/src/start/interface/commandsTable.js +94 -80
  321. package/build/src/start/interface/commandsTable.js.map +1 -1
  322. package/build/src/start/interface/interactiveActions.js +44 -40
  323. package/build/src/start/interface/interactiveActions.js.map +1 -1
  324. package/build/src/start/interface/startInterface.js +65 -61
  325. package/build/src/start/interface/startInterface.js.map +1 -1
  326. package/build/src/start/platforms/AppIdResolver.js +6 -4
  327. package/build/src/start/platforms/AppIdResolver.js.map +1 -1
  328. package/build/src/start/platforms/DeviceManager.js +10 -6
  329. package/build/src/start/platforms/DeviceManager.js.map +1 -1
  330. package/build/src/start/platforms/ExpoGoInstaller.js +25 -20
  331. package/build/src/start/platforms/ExpoGoInstaller.js.map +1 -1
  332. package/build/src/start/platforms/PlatformManager.js +17 -15
  333. package/build/src/start/platforms/PlatformManager.js.map +1 -1
  334. package/build/src/start/platforms/android/ADBServer.js +39 -35
  335. package/build/src/start/platforms/android/ADBServer.js.map +1 -1
  336. package/build/src/start/platforms/android/AndroidAppIdResolver.js +18 -16
  337. package/build/src/start/platforms/android/AndroidAppIdResolver.js.map +1 -1
  338. package/build/src/start/platforms/android/AndroidDeviceManager.js +24 -20
  339. package/build/src/start/platforms/android/AndroidDeviceManager.js.map +1 -1
  340. package/build/src/start/platforms/android/AndroidPlatformManager.js +17 -17
  341. package/build/src/start/platforms/android/AndroidPlatformManager.js.map +1 -1
  342. package/build/src/start/platforms/android/AndroidSdk.js +11 -9
  343. package/build/src/start/platforms/android/AndroidSdk.js.map +1 -1
  344. package/build/src/start/platforms/android/activateWindow.js +26 -22
  345. package/build/src/start/platforms/android/activateWindow.js.map +1 -1
  346. package/build/src/start/platforms/android/adb.js +121 -83
  347. package/build/src/start/platforms/android/adb.js.map +1 -1
  348. package/build/src/start/platforms/android/adbReverse.js +20 -12
  349. package/build/src/start/platforms/android/adbReverse.js.map +1 -1
  350. package/build/src/start/platforms/android/emulator.js +36 -26
  351. package/build/src/start/platforms/android/emulator.js.map +1 -1
  352. package/build/src/start/platforms/android/getDevices.js +7 -5
  353. package/build/src/start/platforms/android/getDevices.js.map +1 -1
  354. package/build/src/start/platforms/android/gradle.js +36 -28
  355. package/build/src/start/platforms/android/gradle.js.map +1 -1
  356. package/build/src/start/platforms/android/promptAndroidDevice.js +19 -15
  357. package/build/src/start/platforms/android/promptAndroidDevice.js.map +1 -1
  358. package/build/src/start/platforms/ios/AppleAppIdResolver.js +21 -19
  359. package/build/src/start/platforms/ios/AppleAppIdResolver.js.map +1 -1
  360. package/build/src/start/platforms/ios/AppleDeviceManager.js +37 -31
  361. package/build/src/start/platforms/ios/AppleDeviceManager.js.map +1 -1
  362. package/build/src/start/platforms/ios/ApplePlatformManager.js +12 -12
  363. package/build/src/start/platforms/ios/ApplePlatformManager.js.map +1 -1
  364. package/build/src/start/platforms/ios/assertSystemRequirements.js +9 -7
  365. package/build/src/start/platforms/ios/assertSystemRequirements.js.map +1 -1
  366. package/build/src/start/platforms/ios/devicectl.js +88 -74
  367. package/build/src/start/platforms/ios/devicectl.js.map +1 -1
  368. package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js +22 -18
  369. package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js.map +1 -1
  370. package/build/src/start/platforms/ios/getBestSimulator.js +29 -19
  371. package/build/src/start/platforms/ios/getBestSimulator.js.map +1 -1
  372. package/build/src/start/platforms/ios/promptAppleDevice.js +14 -10
  373. package/build/src/start/platforms/ios/promptAppleDevice.js.map +1 -1
  374. package/build/src/start/platforms/ios/simctl.js +102 -74
  375. package/build/src/start/platforms/ios/simctl.js.map +1 -1
  376. package/build/src/start/platforms/ios/simctlLogging.js +57 -52
  377. package/build/src/start/platforms/ios/simctlLogging.js.map +1 -1
  378. package/build/src/start/platforms/ios/xcrun.js +22 -18
  379. package/build/src/start/platforms/ios/xcrun.js.map +1 -1
  380. package/build/src/start/project/devices.js +19 -9
  381. package/build/src/start/project/devices.js.map +1 -1
  382. package/build/src/start/project/dotExpo.js +15 -11
  383. package/build/src/start/project/dotExpo.js.map +1 -1
  384. package/build/src/start/project/settings.js +4 -2
  385. package/build/src/start/project/settings.js.map +1 -1
  386. package/build/src/start/resolveOptions.js +48 -40
  387. package/build/src/start/resolveOptions.js.map +1 -1
  388. package/build/src/start/server/AsyncNgrok.js +55 -51
  389. package/build/src/start/server/AsyncNgrok.js.map +1 -1
  390. package/build/src/start/server/AsyncWsTunnel.js +37 -33
  391. package/build/src/start/server/AsyncWsTunnel.js.map +1 -1
  392. package/build/src/start/server/BundlerDevServer.js +81 -79
  393. package/build/src/start/server/BundlerDevServer.js.map +1 -1
  394. package/build/src/start/server/DevServerManager.js +42 -38
  395. package/build/src/start/server/DevServerManager.js.map +1 -1
  396. package/build/src/start/server/DevToolsPluginManager.js +18 -14
  397. package/build/src/start/server/DevToolsPluginManager.js.map +1 -1
  398. package/build/src/start/server/DevelopmentSession.js +18 -14
  399. package/build/src/start/server/DevelopmentSession.js.map +1 -1
  400. package/build/src/start/server/ReactDevToolsProxy.js +16 -10
  401. package/build/src/start/server/ReactDevToolsProxy.js.map +1 -1
  402. package/build/src/start/server/UrlCreator.js +36 -33
  403. package/build/src/start/server/UrlCreator.js.map +1 -1
  404. package/build/src/start/server/getStaticRenderFunctions.js +30 -22
  405. package/build/src/start/server/getStaticRenderFunctions.js.map +1 -1
  406. package/build/src/start/server/metro/DevToolsPluginWebsocketEndpoint.js +9 -5
  407. package/build/src/start/server/metro/DevToolsPluginWebsocketEndpoint.js.map +1 -1
  408. package/build/src/start/server/metro/MetroBundlerDevServer.js +293 -280
  409. package/build/src/start/server/metro/MetroBundlerDevServer.js.map +1 -1
  410. package/build/src/start/server/metro/MetroTerminalReporter.js +63 -56
  411. package/build/src/start/server/metro/MetroTerminalReporter.js.map +1 -1
  412. package/build/src/start/server/metro/TerminalReporter.js +39 -33
  413. package/build/src/start/server/metro/TerminalReporter.js.map +1 -1
  414. package/build/src/start/server/metro/TerminalReporter.types.js.map +1 -1
  415. package/build/src/start/server/metro/createExpoFallbackResolver.js +13 -11
  416. package/build/src/start/server/metro/createExpoFallbackResolver.js.map +1 -1
  417. package/build/src/start/server/metro/createExpoMetroResolver.js +47 -41
  418. package/build/src/start/server/metro/createExpoMetroResolver.js.map +1 -1
  419. package/build/src/start/server/metro/createJResolver.js +31 -27
  420. package/build/src/start/server/metro/createJResolver.js.map +1 -1
  421. package/build/src/start/server/metro/createServerComponentsMiddleware.js +110 -98
  422. package/build/src/start/server/metro/createServerComponentsMiddleware.js.map +1 -1
  423. package/build/src/start/server/metro/createServerRouteMiddleware.js +34 -30
  424. package/build/src/start/server/metro/createServerRouteMiddleware.js.map +1 -1
  425. package/build/src/start/server/metro/debugging/AtlasPrerequisite.js +13 -11
  426. package/build/src/start/server/metro/debugging/AtlasPrerequisite.js.map +1 -1
  427. package/build/src/start/server/metro/debugging/MessageHandler.js +3 -1
  428. package/build/src/start/server/metro/debugging/MessageHandler.js.map +1 -1
  429. package/build/src/start/server/metro/debugging/attachAtlas.js +26 -22
  430. package/build/src/start/server/metro/debugging/attachAtlas.js.map +1 -1
  431. package/build/src/start/server/metro/debugging/createDebugMiddleware.js +19 -17
  432. package/build/src/start/server/metro/debugging/createDebugMiddleware.js.map +1 -1
  433. package/build/src/start/server/metro/debugging/createHandlersFactory.js +25 -31
  434. package/build/src/start/server/metro/debugging/createHandlersFactory.js.map +1 -1
  435. package/build/src/start/server/metro/debugging/getDebuggerType.js +6 -4
  436. package/build/src/start/server/metro/debugging/getDebuggerType.js.map +1 -1
  437. package/build/src/start/server/metro/debugging/messageHandlers/NetworkResponse.js +14 -8
  438. package/build/src/start/server/metro/debugging/messageHandlers/NetworkResponse.js.map +1 -1
  439. package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerGetPossibleBreakpoints.js +7 -5
  440. package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerGetPossibleBreakpoints.js.map +1 -1
  441. package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerSetBreakpointByUrl.js +8 -6
  442. package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerSetBreakpointByUrl.js.map +1 -1
  443. package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeCallFunctionOn.js +7 -5
  444. package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeCallFunctionOn.js.map +1 -1
  445. package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeEvaluate.js +14 -12
  446. package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeEvaluate.js.map +1 -1
  447. package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeGetProperties.js +14 -10
  448. package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeGetProperties.js.map +1 -1
  449. package/build/src/start/server/metro/debugging/pageIsSupported.js +6 -4
  450. package/build/src/start/server/metro/debugging/pageIsSupported.js.map +1 -1
  451. package/build/src/start/server/metro/debugging/types.js.map +1 -1
  452. package/build/src/start/server/metro/dev-server/createEventSocket.js +18 -16
  453. package/build/src/start/server/metro/dev-server/createEventSocket.js.map +1 -1
  454. package/build/src/start/server/metro/dev-server/createMessageSocket.js +23 -21
  455. package/build/src/start/server/metro/dev-server/createMessageSocket.js.map +1 -1
  456. package/build/src/start/server/metro/dev-server/createMetroMiddleware.js +23 -21
  457. package/build/src/start/server/metro/dev-server/createMetroMiddleware.js.map +1 -1
  458. package/build/src/start/server/metro/dev-server/utils/createSocketBroadcaster.js +4 -2
  459. package/build/src/start/server/metro/dev-server/utils/createSocketBroadcaster.js.map +1 -1
  460. package/build/src/start/server/metro/dev-server/utils/createSocketMap.js +4 -2
  461. package/build/src/start/server/metro/dev-server/utils/createSocketMap.js.map +1 -1
  462. package/build/src/start/server/metro/dev-server/utils/socketMessages.js +8 -4
  463. package/build/src/start/server/metro/dev-server/utils/socketMessages.js.map +1 -1
  464. package/build/src/start/server/metro/externals.js +33 -25
  465. package/build/src/start/server/metro/externals.js.map +1 -1
  466. package/build/src/start/server/metro/fetchRouterManifest.js +28 -12
  467. package/build/src/start/server/metro/fetchRouterManifest.js.map +1 -1
  468. package/build/src/start/server/metro/formatFileCandidates.js +11 -9
  469. package/build/src/start/server/metro/formatFileCandidates.js.map +1 -1
  470. package/build/src/start/server/metro/getCssModulesFromBundler.js +24 -20
  471. package/build/src/start/server/metro/getCssModulesFromBundler.js.map +1 -1
  472. package/build/src/start/server/metro/instantiateMetro.js +87 -81
  473. package/build/src/start/server/metro/instantiateMetro.js.map +1 -1
  474. package/build/src/start/server/metro/log-box/LogBoxLog.js +40 -36
  475. package/build/src/start/server/metro/log-box/LogBoxLog.js.map +1 -1
  476. package/build/src/start/server/metro/log-box/LogBoxSymbolication.js +20 -14
  477. package/build/src/start/server/metro/log-box/LogBoxSymbolication.js.map +1 -1
  478. package/build/src/start/server/metro/log-box/formatProjectFilePath.js +10 -6
  479. package/build/src/start/server/metro/log-box/formatProjectFilePath.js.map +1 -1
  480. package/build/src/start/server/metro/metroErrorInterface.js +88 -78
  481. package/build/src/start/server/metro/metroErrorInterface.js.map +1 -1
  482. package/build/src/start/server/metro/metroErrors.js +8 -4
  483. package/build/src/start/server/metro/metroErrors.js.map +1 -1
  484. package/build/src/start/server/metro/metroPrivateServer.js +9 -7
  485. package/build/src/start/server/metro/metroPrivateServer.js.map +1 -1
  486. package/build/src/start/server/metro/metroVirtualModules.js +10 -8
  487. package/build/src/start/server/metro/metroVirtualModules.js.map +1 -1
  488. package/build/src/start/server/metro/metroWatchTypeScriptFiles.js +24 -22
  489. package/build/src/start/server/metro/metroWatchTypeScriptFiles.js.map +1 -1
  490. package/build/src/start/server/metro/router.js +48 -32
  491. package/build/src/start/server/metro/router.js.map +1 -1
  492. package/build/src/start/server/metro/runServer-fork.js +24 -22
  493. package/build/src/start/server/metro/runServer-fork.js.map +1 -1
  494. package/build/src/start/server/metro/serializeHtml.js +24 -22
  495. package/build/src/start/server/metro/serializeHtml.js.map +1 -1
  496. package/build/src/start/server/metro/symbolicate.js.map +1 -1
  497. package/build/src/start/server/metro/waitForMetroToObserveTypeScriptFile.js +35 -29
  498. package/build/src/start/server/metro/waitForMetroToObserveTypeScriptFile.js.map +1 -1
  499. package/build/src/start/server/metro/withMetroMultiPlatform.js +150 -140
  500. package/build/src/start/server/metro/withMetroMultiPlatform.js.map +1 -1
  501. package/build/src/start/server/metro/withMetroResolvers.js +49 -39
  502. package/build/src/start/server/metro/withMetroResolvers.js.map +1 -1
  503. package/build/src/start/server/middleware/ContextModuleSourceMapsMiddleware.js +8 -6
  504. package/build/src/start/server/middleware/ContextModuleSourceMapsMiddleware.js.map +1 -1
  505. package/build/src/start/server/middleware/CorsMiddleware.js +17 -15
  506. package/build/src/start/server/middleware/CorsMiddleware.js.map +1 -1
  507. package/build/src/start/server/middleware/CreateFileMiddleware.js +32 -31
  508. package/build/src/start/server/middleware/CreateFileMiddleware.js.map +1 -1
  509. package/build/src/start/server/middleware/DevToolsPluginMiddleware.js +22 -19
  510. package/build/src/start/server/middleware/DevToolsPluginMiddleware.js.map +1 -1
  511. package/build/src/start/server/middleware/DomComponentsMiddleware.js +33 -27
  512. package/build/src/start/server/middleware/DomComponentsMiddleware.js.map +1 -1
  513. package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js +61 -57
  514. package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js.map +1 -1
  515. package/build/src/start/server/middleware/ExpoMiddleware.js +15 -9
  516. package/build/src/start/server/middleware/ExpoMiddleware.js.map +1 -1
  517. package/build/src/start/server/middleware/FaviconMiddleware.js +16 -15
  518. package/build/src/start/server/middleware/FaviconMiddleware.js.map +1 -1
  519. package/build/src/start/server/middleware/HistoryFallbackMiddleware.js +4 -2
  520. package/build/src/start/server/middleware/HistoryFallbackMiddleware.js.map +1 -1
  521. package/build/src/start/server/middleware/InterstitialPageMiddleware.js +34 -31
  522. package/build/src/start/server/middleware/InterstitialPageMiddleware.js.map +1 -1
  523. package/build/src/start/server/middleware/ManifestMiddleware.js +64 -56
  524. package/build/src/start/server/middleware/ManifestMiddleware.js.map +1 -1
  525. package/build/src/start/server/middleware/ReactDevToolsPageMiddleware.js +23 -19
  526. package/build/src/start/server/middleware/ReactDevToolsPageMiddleware.js.map +1 -1
  527. package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js +20 -19
  528. package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js.map +1 -1
  529. package/build/src/start/server/middleware/ServeStaticMiddleware.js +11 -9
  530. package/build/src/start/server/middleware/ServeStaticMiddleware.js.map +1 -1
  531. package/build/src/start/server/middleware/createBuiltinAPIRequestHandler.js +17 -11
  532. package/build/src/start/server/middleware/createBuiltinAPIRequestHandler.js.map +1 -1
  533. package/build/src/start/server/middleware/inspector/CdpClient.js +12 -10
  534. package/build/src/start/server/middleware/inspector/CdpClient.js.map +1 -1
  535. package/build/src/start/server/middleware/inspector/JsInspector.js +35 -27
  536. package/build/src/start/server/middleware/inspector/JsInspector.js.map +1 -1
  537. package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js +21 -19
  538. package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js.map +1 -1
  539. package/build/src/start/server/middleware/inspector/middlwareMutations.js +6 -2
  540. package/build/src/start/server/middleware/inspector/middlwareMutations.js.map +1 -1
  541. package/build/src/start/server/middleware/metroOptions.js +120 -96
  542. package/build/src/start/server/middleware/metroOptions.js.map +1 -1
  543. package/build/src/start/server/middleware/mutations.js +7 -3
  544. package/build/src/start/server/middleware/mutations.js.map +1 -1
  545. package/build/src/start/server/middleware/resolveAssets.js +26 -18
  546. package/build/src/start/server/middleware/resolveAssets.js.map +1 -1
  547. package/build/src/start/server/middleware/resolvePlatform.js +23 -15
  548. package/build/src/start/server/middleware/resolvePlatform.js.map +1 -1
  549. package/build/src/start/server/middleware/resolveRuntimeVersionWithExpoUpdatesAsync.js +11 -9
  550. package/build/src/start/server/middleware/resolveRuntimeVersionWithExpoUpdatesAsync.js.map +1 -1
  551. package/build/src/start/server/middleware/server.types.js.map +1 -1
  552. package/build/src/start/server/openPlatforms.js +10 -8
  553. package/build/src/start/server/openPlatforms.js.map +1 -1
  554. package/build/src/start/server/platformBundlers.js +13 -11
  555. package/build/src/start/server/platformBundlers.js.map +1 -1
  556. package/build/src/start/server/serverLogLikeMetro.js +58 -50
  557. package/build/src/start/server/serverLogLikeMetro.js.map +1 -1
  558. package/build/src/start/server/type-generation/expo-env.js +11 -7
  559. package/build/src/start/server/type-generation/expo-env.js.map +1 -1
  560. package/build/src/start/server/type-generation/routes.js +72 -50
  561. package/build/src/start/server/type-generation/routes.js.map +1 -1
  562. package/build/src/start/server/type-generation/startTypescriptTypeGeneration.js +21 -19
  563. package/build/src/start/server/type-generation/startTypescriptTypeGeneration.js.map +1 -1
  564. package/build/src/start/server/type-generation/tsconfig.js +36 -28
  565. package/build/src/start/server/type-generation/tsconfig.js.map +1 -1
  566. package/build/src/start/server/webTemplate.js +28 -24
  567. package/build/src/start/server/webTemplate.js.map +1 -1
  568. package/build/src/start/server/webpack/WebpackBundlerDevServer.js +52 -46
  569. package/build/src/start/server/webpack/WebpackBundlerDevServer.js.map +1 -1
  570. package/build/src/start/server/webpack/compile.js +15 -11
  571. package/build/src/start/server/webpack/compile.js.map +1 -1
  572. package/build/src/start/server/webpack/formatWebpackMessages.js +28 -26
  573. package/build/src/start/server/webpack/formatWebpackMessages.js.map +1 -1
  574. package/build/src/start/server/webpack/resolveFromProject.js +18 -12
  575. package/build/src/start/server/webpack/resolveFromProject.js.map +1 -1
  576. package/build/src/start/server/webpack/tls.js +18 -12
  577. package/build/src/start/server/webpack/tls.js.map +1 -1
  578. package/build/src/start/startAsync.js +31 -27
  579. package/build/src/start/startAsync.js.map +1 -1
  580. package/build/src/utils/FileNotifier.js +20 -17
  581. package/build/src/utils/FileNotifier.js.map +1 -1
  582. package/build/src/utils/ansi.js +7 -5
  583. package/build/src/utils/ansi.js.map +1 -1
  584. package/build/src/utils/args.js +24 -14
  585. package/build/src/utils/args.js.map +1 -1
  586. package/build/src/utils/array.js +18 -6
  587. package/build/src/utils/array.js.map +1 -1
  588. package/build/src/utils/cocoapods.js +54 -46
  589. package/build/src/utils/cocoapods.js.map +1 -1
  590. package/build/src/utils/codesigning.js +79 -69
  591. package/build/src/utils/codesigning.js.map +1 -1
  592. package/build/src/utils/createFileTransform.js +16 -12
  593. package/build/src/utils/createFileTransform.js.map +1 -1
  594. package/build/src/utils/createTempPath.js +12 -8
  595. package/build/src/utils/createTempPath.js.map +1 -1
  596. package/build/src/utils/delay.js +12 -6
  597. package/build/src/utils/delay.js.map +1 -1
  598. package/build/src/utils/dir.js +40 -22
  599. package/build/src/utils/dir.js.map +1 -1
  600. package/build/src/utils/downloadAppAsync.js +10 -8
  601. package/build/src/utils/downloadAppAsync.js.map +1 -1
  602. package/build/src/utils/downloadExpoGoAsync.js +27 -23
  603. package/build/src/utils/downloadExpoGoAsync.js.map +1 -1
  604. package/build/src/utils/editor.js +41 -35
  605. package/build/src/utils/editor.js.map +1 -1
  606. package/build/src/utils/env.js +63 -59
  607. package/build/src/utils/env.js.map +1 -1
  608. package/build/src/utils/errors.js +37 -30
  609. package/build/src/utils/errors.js.map +1 -1
  610. package/build/src/utils/exit.js +35 -31
  611. package/build/src/utils/exit.js.map +1 -1
  612. package/build/src/utils/expoUpdatesCli.js +32 -22
  613. package/build/src/utils/expoUpdatesCli.js.map +1 -1
  614. package/build/src/utils/fetch.js +8 -4
  615. package/build/src/utils/fetch.js.map +1 -1
  616. package/build/src/utils/filePath.js +10 -6
  617. package/build/src/utils/filePath.js.map +1 -1
  618. package/build/src/utils/findUp.js +13 -9
  619. package/build/src/utils/findUp.js.map +1 -1
  620. package/build/src/utils/fn.js +6 -2
  621. package/build/src/utils/fn.js.map +1 -1
  622. package/build/src/utils/getOrPromptApplicationId.js +41 -35
  623. package/build/src/utils/getOrPromptApplicationId.js.map +1 -1
  624. package/build/src/utils/getRunningProcess.js +29 -21
  625. package/build/src/utils/getRunningProcess.js.map +1 -1
  626. package/build/src/utils/git.js +26 -20
  627. package/build/src/utils/git.js.map +1 -1
  628. package/build/src/utils/glob.js +8 -4
  629. package/build/src/utils/glob.js.map +1 -1
  630. package/build/src/utils/interactive.js +3 -1
  631. package/build/src/utils/interactive.js.map +1 -1
  632. package/build/src/utils/ip.js +21 -19
  633. package/build/src/utils/ip.js.map +1 -1
  634. package/build/src/utils/isModuleSymlinked.js +11 -9
  635. package/build/src/utils/isModuleSymlinked.js.map +1 -1
  636. package/build/src/utils/jsonSchemaDeref.js +20 -18
  637. package/build/src/utils/jsonSchemaDeref.js.map +1 -1
  638. package/build/src/utils/link.js +17 -13
  639. package/build/src/utils/link.js.map +1 -1
  640. package/build/src/utils/mergeGitIgnorePaths.js +46 -28
  641. package/build/src/utils/mergeGitIgnorePaths.js.map +1 -1
  642. package/build/src/utils/modifyConfigAsync.js +16 -10
  643. package/build/src/utils/modifyConfigAsync.js.map +1 -1
  644. package/build/src/utils/modifyConfigPlugins.js +10 -6
  645. package/build/src/utils/modifyConfigPlugins.js.map +1 -1
  646. package/build/src/utils/multipartMixed.js +13 -11
  647. package/build/src/utils/multipartMixed.js.map +1 -1
  648. package/build/src/utils/nodeEnv.js +12 -6
  649. package/build/src/utils/nodeEnv.js.map +1 -1
  650. package/build/src/utils/nodeModules.js +10 -8
  651. package/build/src/utils/nodeModules.js.map +1 -1
  652. package/build/src/utils/npm.js +49 -35
  653. package/build/src/utils/npm.js.map +1 -1
  654. package/build/src/utils/obj.js +11 -5
  655. package/build/src/utils/obj.js.map +1 -1
  656. package/build/src/utils/open.js +10 -8
  657. package/build/src/utils/open.js.map +1 -1
  658. package/build/src/utils/ora.js +13 -7
  659. package/build/src/utils/ora.js.map +1 -1
  660. package/build/src/utils/plist.js +21 -15
  661. package/build/src/utils/plist.js.map +1 -1
  662. package/build/src/utils/port.js +43 -33
  663. package/build/src/utils/port.js.map +1 -1
  664. package/build/src/utils/profile.js +11 -7
  665. package/build/src/utils/profile.js.map +1 -1
  666. package/build/src/utils/progress.js +11 -5
  667. package/build/src/utils/progress.js.map +1 -1
  668. package/build/src/utils/prompts.js +47 -29
  669. package/build/src/utils/prompts.js.map +1 -1
  670. package/build/src/utils/resolveArgs.js +36 -24
  671. package/build/src/utils/resolveArgs.js.map +1 -1
  672. package/build/src/utils/scheme.js +40 -32
  673. package/build/src/utils/scheme.js.map +1 -1
  674. package/build/src/utils/stream.js +5 -3
  675. package/build/src/utils/stream.js.map +1 -1
  676. package/build/src/utils/strings.js +6 -4
  677. package/build/src/utils/strings.js.map +1 -1
  678. package/build/src/utils/tar.js +18 -14
  679. package/build/src/utils/tar.js.map +1 -1
  680. package/build/src/utils/telemetry/Telemetry.js +29 -27
  681. package/build/src/utils/telemetry/Telemetry.js.map +1 -1
  682. package/build/src/utils/telemetry/clients/FetchClient.js +15 -13
  683. package/build/src/utils/telemetry/clients/FetchClient.js.map +1 -1
  684. package/build/src/utils/telemetry/clients/FetchDetachedClient.js +26 -22
  685. package/build/src/utils/telemetry/clients/FetchDetachedClient.js.map +1 -1
  686. package/build/src/utils/telemetry/clients/flushFetchDetached.js +10 -10
  687. package/build/src/utils/telemetry/clients/flushFetchDetached.js.map +1 -1
  688. package/build/src/utils/telemetry/events.js +4 -2
  689. package/build/src/utils/telemetry/events.js.map +1 -1
  690. package/build/src/utils/telemetry/index.js +25 -29
  691. package/build/src/utils/telemetry/index.js.map +1 -1
  692. package/build/src/utils/telemetry/types.js.map +1 -1
  693. package/build/src/utils/telemetry/utils/constants.js +8 -4
  694. package/build/src/utils/telemetry/utils/constants.js.map +1 -1
  695. package/build/src/utils/telemetry/utils/context.js +18 -14
  696. package/build/src/utils/telemetry/utils/context.js.map +1 -1
  697. package/build/src/utils/template.js +6 -4
  698. package/build/src/utils/template.js.map +1 -1
  699. package/build/src/utils/terminal.js +4 -2
  700. package/build/src/utils/terminal.js.map +1 -1
  701. package/build/src/utils/tsconfig/evaluateTsConfig.js +21 -17
  702. package/build/src/utils/tsconfig/evaluateTsConfig.js.map +1 -1
  703. package/build/src/utils/tsconfig/loadTsConfigPaths.js +18 -14
  704. package/build/src/utils/tsconfig/loadTsConfigPaths.js.map +1 -1
  705. package/build/src/utils/tsconfig/matchTsConfigPathAlias.js +7 -5
  706. package/build/src/utils/tsconfig/matchTsConfigPathAlias.js.map +1 -1
  707. package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js +14 -12
  708. package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js.map +1 -1
  709. package/build/src/utils/url.js +23 -13
  710. package/build/src/utils/url.js.map +1 -1
  711. package/build/src/utils/validateApplicationId.js +108 -86
  712. package/build/src/utils/validateApplicationId.js.map +1 -1
  713. package/build/src/utils/variadic.js +22 -16
  714. package/build/src/utils/variadic.js.map +1 -1
  715. package/build/src/whoami/index.js +11 -7
  716. package/build/src/whoami/index.js.map +1 -1
  717. package/build/src/whoami/whoamiAsync.js +11 -7
  718. package/build/src/whoami/whoamiAsync.js.map +1 -1
  719. package/package.json +17 -16
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/utils/tsconfig/resolveWithTsConfigPaths.ts"],"sourcesContent":["import { Resolution } from 'metro-resolver';\nimport path from 'path';\n\nimport { matchTsConfigPathAlias } from './matchTsConfigPathAlias';\n\ntype Paths = { [match: string]: string[] };\n\nconst debug = require('debug')('expo:metro:tsconfig-paths') as typeof console.log;\n\nconst isAbsolute = process.platform === 'win32' ? path.win32.isAbsolute : path.posix.isAbsolute;\n\nexport function resolveWithTsConfigPaths(\n config: { paths: Paths; baseUrl: string; hasBaseUrl: boolean },\n request: {\n /** Import request */\n moduleName: string;\n /** Originating file path */\n originModulePath: string;\n },\n resolve: (moduleName: string) => Resolution | null\n): Resolution | null {\n const aliases = Object.keys(config.paths);\n\n if (\n // If no aliases are added bail out\n (!aliases.length && !config.hasBaseUrl) ||\n // Library authors cannot utilize this feature in userspace.\n /node_modules/.test(request.originModulePath) ||\n // Absolute paths are not supported\n isAbsolute(request.moduleName) ||\n // Relative paths are not supported\n /^\\.\\.?($|[\\\\/])/.test(request.moduleName)\n ) {\n return null;\n }\n\n const matched = matchTsConfigPathAlias(aliases, request.moduleName);\n if (matched) {\n for (const alias of config.paths[matched.text]) {\n const nextModuleName = matched.star ? alias.replace('*', matched.star) : alias;\n\n if (/\\.d\\.ts$/.test(nextModuleName)) continue;\n\n const possibleResult = path.join(config.baseUrl, nextModuleName);\n\n const result = resolve(possibleResult);\n if (result) {\n debug(`${request.moduleName} -> ${possibleResult}`);\n return result;\n }\n }\n } else {\n // Only resolve against baseUrl if no `paths` groups were matched.\n // Base URL is resolved after paths, and before node_modules.\n if (config.hasBaseUrl) {\n const possibleResult = path.join(config.baseUrl, request.moduleName);\n const result = resolve(possibleResult);\n if (result) {\n debug(`baseUrl: ${request.moduleName} -> ${possibleResult}`);\n return result;\n }\n }\n }\n\n return null;\n}\n"],"names":["resolveWithTsConfigPaths","debug","require","isAbsolute","process","platform","path","win32","posix","config","request","resolve","aliases","Object","keys","paths","length","hasBaseUrl","test","originModulePath","moduleName","matched","matchTsConfigPathAlias","alias","text","nextModuleName","star","replace","possibleResult","join","baseUrl","result"],"mappings":"AAAA;;;;+BAWgBA,0BAAwB;;aAAxBA,wBAAwB;;;8DAVvB,MAAM;;;;;;wCAEgB,0BAA0B;;;;;;AAIjE,MAAMC,KAAK,GAAGC,OAAO,CAAC,OAAO,CAAC,CAAC,2BAA2B,CAAC,AAAsB,AAAC;AAElF,MAAMC,UAAU,GAAGC,OAAO,CAACC,QAAQ,KAAK,OAAO,GAAGC,KAAI,EAAA,QAAA,CAACC,KAAK,CAACJ,UAAU,GAAGG,KAAI,EAAA,QAAA,CAACE,KAAK,CAACL,UAAU,AAAC;AAEzF,SAASH,wBAAwB,CACtCS,MAA8D,EAC9DC,OAKC,EACDC,OAAkD,EAC/B;IACnB,MAAMC,OAAO,GAAGC,MAAM,CAACC,IAAI,CAACL,MAAM,CAACM,KAAK,CAAC,AAAC;IAE1C,IACE,mCAAmC;IACnC,CAAC,CAACH,OAAO,CAACI,MAAM,IAAI,CAACP,MAAM,CAACQ,UAAU,CAAC,IACvC,4DAA4D;IAC5D,eAAeC,IAAI,CAACR,OAAO,CAACS,gBAAgB,CAAC,IAC7C,mCAAmC;IACnChB,UAAU,CAACO,OAAO,CAACU,UAAU,CAAC,IAC9B,mCAAmC;IACnC,kBAAkBF,IAAI,CAACR,OAAO,CAACU,UAAU,CAAC,EAC1C;QACA,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAMC,OAAO,GAAGC,IAAAA,uBAAsB,uBAAA,EAACV,OAAO,EAAEF,OAAO,CAACU,UAAU,CAAC,AAAC;IACpE,IAAIC,OAAO,EAAE;QACX,KAAK,MAAME,KAAK,IAAId,MAAM,CAACM,KAAK,CAACM,OAAO,CAACG,IAAI,CAAC,CAAE;YAC9C,MAAMC,cAAc,GAAGJ,OAAO,CAACK,IAAI,GAAGH,KAAK,CAACI,OAAO,CAAC,GAAG,EAAEN,OAAO,CAACK,IAAI,CAAC,GAAGH,KAAK,AAAC;YAE/E,IAAI,WAAWL,IAAI,CAACO,cAAc,CAAC,EAAE,SAAS;YAE9C,MAAMG,cAAc,GAAGtB,KAAI,EAAA,QAAA,CAACuB,IAAI,CAACpB,MAAM,CAACqB,OAAO,EAAEL,cAAc,CAAC,AAAC;YAEjE,MAAMM,MAAM,GAAGpB,OAAO,CAACiB,cAAc,CAAC,AAAC;YACvC,IAAIG,MAAM,EAAE;gBACV9B,KAAK,CAAC,CAAC,EAAES,OAAO,CAACU,UAAU,CAAC,IAAI,EAAEQ,cAAc,CAAC,CAAC,CAAC,CAAC;gBACpD,OAAOG,MAAM,CAAC;YAChB,CAAC;QACH,CAAC;IACH,OAAO;QACL,kEAAkE;QAClE,6DAA6D;QAC7D,IAAItB,MAAM,CAACQ,UAAU,EAAE;YACrB,MAAMW,eAAc,GAAGtB,KAAI,EAAA,QAAA,CAACuB,IAAI,CAACpB,MAAM,CAACqB,OAAO,EAAEpB,OAAO,CAACU,UAAU,CAAC,AAAC;YACrE,MAAMW,OAAM,GAAGpB,OAAO,CAACiB,eAAc,CAAC,AAAC;YACvC,IAAIG,OAAM,EAAE;gBACV9B,KAAK,CAAC,CAAC,SAAS,EAAES,OAAO,CAACU,UAAU,CAAC,IAAI,EAAEQ,eAAc,CAAC,CAAC,CAAC,CAAC;gBAC7D,OAAOG,OAAM,CAAC;YAChB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"sources":["../../../../src/utils/tsconfig/resolveWithTsConfigPaths.ts"],"sourcesContent":["import { Resolution } from 'metro-resolver';\nimport path from 'path';\n\nimport { matchTsConfigPathAlias } from './matchTsConfigPathAlias';\n\ntype Paths = { [match: string]: string[] };\n\nconst debug = require('debug')('expo:metro:tsconfig-paths') as typeof console.log;\n\nconst isAbsolute = process.platform === 'win32' ? path.win32.isAbsolute : path.posix.isAbsolute;\n\nexport function resolveWithTsConfigPaths(\n config: { paths: Paths; baseUrl: string; hasBaseUrl: boolean },\n request: {\n /** Import request */\n moduleName: string;\n /** Originating file path */\n originModulePath: string;\n },\n resolve: (moduleName: string) => Resolution | null\n): Resolution | null {\n const aliases = Object.keys(config.paths);\n\n if (\n // If no aliases are added bail out\n (!aliases.length && !config.hasBaseUrl) ||\n // Library authors cannot utilize this feature in userspace.\n /node_modules/.test(request.originModulePath) ||\n // Absolute paths are not supported\n isAbsolute(request.moduleName) ||\n // Relative paths are not supported\n /^\\.\\.?($|[\\\\/])/.test(request.moduleName)\n ) {\n return null;\n }\n\n const matched = matchTsConfigPathAlias(aliases, request.moduleName);\n if (matched) {\n for (const alias of config.paths[matched.text]) {\n const nextModuleName = matched.star ? alias.replace('*', matched.star) : alias;\n\n if (/\\.d\\.ts$/.test(nextModuleName)) continue;\n\n const possibleResult = path.join(config.baseUrl, nextModuleName);\n\n const result = resolve(possibleResult);\n if (result) {\n debug(`${request.moduleName} -> ${possibleResult}`);\n return result;\n }\n }\n } else {\n // Only resolve against baseUrl if no `paths` groups were matched.\n // Base URL is resolved after paths, and before node_modules.\n if (config.hasBaseUrl) {\n const possibleResult = path.join(config.baseUrl, request.moduleName);\n const result = resolve(possibleResult);\n if (result) {\n debug(`baseUrl: ${request.moduleName} -> ${possibleResult}`);\n return result;\n }\n }\n }\n\n return null;\n}\n"],"names":["resolveWithTsConfigPaths","debug","require","isAbsolute","process","platform","path","win32","posix","config","request","resolve","aliases","Object","keys","paths","length","hasBaseUrl","test","originModulePath","moduleName","matched","matchTsConfigPathAlias","alias","text","nextModuleName","star","replace","possibleResult","join","baseUrl","result"],"mappings":";;;;+BAWgBA;;;eAAAA;;;;gEAVC;;;;;;wCAEsB;;;;;;AAIvC,MAAMC,QAAQC,QAAQ,SAAS;AAE/B,MAAMC,aAAaC,QAAQC,QAAQ,KAAK,UAAUC,eAAI,CAACC,KAAK,CAACJ,UAAU,GAAGG,eAAI,CAACE,KAAK,CAACL,UAAU;AAExF,SAASH,yBACdS,MAA8D,EAC9DC,OAKC,EACDC,OAAkD;IAElD,MAAMC,UAAUC,OAAOC,IAAI,CAACL,OAAOM,KAAK;IAExC,IAEE,AADA,mCAAmC;IAClC,CAACH,QAAQI,MAAM,IAAI,CAACP,OAAOQ,UAAU,IACtC,4DAA4D;IAC5D,eAAeC,IAAI,CAACR,QAAQS,gBAAgB,KAC5C,mCAAmC;IACnChB,WAAWO,QAAQU,UAAU,KAC7B,mCAAmC;IACnC,kBAAkBF,IAAI,CAACR,QAAQU,UAAU,GACzC;QACA,OAAO;IACT;IAEA,MAAMC,UAAUC,IAAAA,8CAAsB,EAACV,SAASF,QAAQU,UAAU;IAClE,IAAIC,SAAS;QACX,KAAK,MAAME,SAASd,OAAOM,KAAK,CAACM,QAAQG,IAAI,CAAC,CAAE;YAC9C,MAAMC,iBAAiBJ,QAAQK,IAAI,GAAGH,MAAMI,OAAO,CAAC,KAAKN,QAAQK,IAAI,IAAIH;YAEzE,IAAI,WAAWL,IAAI,CAACO,iBAAiB;YAErC,MAAMG,iBAAiBtB,eAAI,CAACuB,IAAI,CAACpB,OAAOqB,OAAO,EAAEL;YAEjD,MAAMM,SAASpB,QAAQiB;YACvB,IAAIG,QAAQ;gBACV9B,MAAM,GAAGS,QAAQU,UAAU,CAAC,IAAI,EAAEQ,gBAAgB;gBAClD,OAAOG;YACT;QACF;IACF,OAAO;QACL,kEAAkE;QAClE,6DAA6D;QAC7D,IAAItB,OAAOQ,UAAU,EAAE;YACrB,MAAMW,iBAAiBtB,eAAI,CAACuB,IAAI,CAACpB,OAAOqB,OAAO,EAAEpB,QAAQU,UAAU;YACnE,MAAMW,SAASpB,QAAQiB;YACvB,IAAIG,QAAQ;gBACV9B,MAAM,CAAC,SAAS,EAAES,QAAQU,UAAU,CAAC,IAAI,EAAEQ,gBAAgB;gBAC3D,OAAOG;YACT;QACF;IACF;IAEA,OAAO;AACT"}
@@ -9,14 +9,24 @@ function _export(target, all) {
9
9
  });
10
10
  }
11
11
  _export(exports, {
12
- isUrlAvailableAsync: ()=>isUrlAvailableAsync,
13
- isUrlOk: ()=>isUrlOk,
14
- validateUrl: ()=>validateUrl,
15
- stripPort: ()=>stripPort,
16
- stripExtension: ()=>stripExtension
12
+ isUrlAvailableAsync: function() {
13
+ return isUrlAvailableAsync;
14
+ },
15
+ isUrlOk: function() {
16
+ return isUrlOk;
17
+ },
18
+ stripExtension: function() {
19
+ return stripExtension;
20
+ },
21
+ stripPort: function() {
22
+ return stripPort;
23
+ },
24
+ validateUrl: function() {
25
+ return validateUrl;
26
+ }
17
27
  });
18
28
  function _dns() {
19
- const data = /*#__PURE__*/ _interopRequireDefault(require("dns"));
29
+ const data = /*#__PURE__*/ _interop_require_default(require("dns"));
20
30
  _dns = function() {
21
31
  return data;
22
32
  };
@@ -30,7 +40,7 @@ function _url() {
30
40
  return data;
31
41
  }
32
42
  const _client = require("../api/rest/client");
33
- function _interopRequireDefault(obj) {
43
+ function _interop_require_default(obj) {
34
44
  return obj && obj.__esModule ? obj : {
35
45
  default: obj
36
46
  };
@@ -50,7 +60,7 @@ async function isUrlOk(url) {
50
60
  return false;
51
61
  }
52
62
  }
53
- function validateUrl(urlString, { protocols , requireProtocol } = {}) {
63
+ function validateUrl(urlString, { protocols, requireProtocol } = {}) {
54
64
  try {
55
65
  const results = new (_url()).URL(urlString);
56
66
  if (!results.protocol && !requireProtocol) {
@@ -62,21 +72,21 @@ function validateUrl(urlString, { protocols , requireProtocol } = {}) {
62
72
  }
63
73
  }
64
74
  function stripPort(host) {
65
- var ref;
66
- return ((ref = coerceUrl(host)) == null ? void 0 : ref.hostname) ?? null;
75
+ var _coerceUrl;
76
+ return ((_coerceUrl = coerceUrl(host)) == null ? void 0 : _coerceUrl.hostname) ?? null;
67
77
  }
68
78
  function coerceUrl(urlString) {
69
79
  if (!urlString) {
70
80
  return null;
71
81
  }
72
82
  try {
73
- return new (_url()).URL("/", urlString);
83
+ return new (_url()).URL('/', urlString);
74
84
  } catch {
75
- return new (_url()).URL("/", `http://${urlString}`);
85
+ return new (_url()).URL('/', `http://${urlString}`);
76
86
  }
77
87
  }
78
88
  function stripExtension(url, extension) {
79
- return url.replace(new RegExp(`.${extension}$`), "");
89
+ return url.replace(new RegExp(`.${extension}$`), '');
80
90
  }
81
91
 
82
92
  //# sourceMappingURL=url.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/url.ts"],"sourcesContent":["import dns from 'dns';\nimport { URL } from 'url';\n\nimport { fetchAsync } from '../api/rest/client';\n\n/** Check if a server is available based on the URL. */\nexport function isUrlAvailableAsync(url: string): Promise<boolean> {\n return new Promise<boolean>((resolve) => {\n dns.lookup(url, (err) => {\n resolve(!err);\n });\n });\n}\n\n/** Check if a request to the given URL is `ok` (status 200). */\nexport async function isUrlOk(url: string): Promise<boolean> {\n try {\n const res = await fetchAsync(url);\n return res.ok;\n } catch {\n return false;\n }\n}\n\n/** Determine if a string is a valid URL, can optionally ensure certain protocols (like `https` or `exp`) are adhered to. */\nexport function validateUrl(\n urlString: string,\n {\n protocols,\n requireProtocol,\n }: {\n /** Set of allowed protocols for the string to adhere to. @example ['exp', 'https'] */\n protocols?: string[];\n /** Ensure the URL has a protocol component (prefix before `://`). */\n requireProtocol?: boolean;\n } = {}\n) {\n try {\n const results = new URL(urlString);\n if (!results.protocol && !requireProtocol) {\n return true;\n }\n return protocols\n ? results.protocol\n ? protocols.map((x) => `${x.toLowerCase()}:`).includes(results.protocol)\n : false\n : true;\n } catch {\n return false;\n }\n}\n\n/** Remove the port from a given `host` URL string. */\nexport function stripPort(host?: string): string | null {\n return coerceUrl(host)?.hostname ?? null;\n}\n\nfunction coerceUrl(urlString?: string): URL | null {\n if (!urlString) {\n return null;\n }\n try {\n return new URL('/', urlString);\n } catch {\n return new URL('/', `http://${urlString}`);\n }\n}\n\n/** Strip a given extension from a URL string. */\nexport function stripExtension(url: string, extension: string): string {\n return url.replace(new RegExp(`.${extension}$`), '');\n}\n"],"names":["isUrlAvailableAsync","isUrlOk","validateUrl","stripPort","stripExtension","url","Promise","resolve","dns","lookup","err","res","fetchAsync","ok","urlString","protocols","requireProtocol","results","URL","protocol","map","x","toLowerCase","includes","host","coerceUrl","hostname","extension","replace","RegExp"],"mappings":"AAAA;;;;;;;;;;;IAMgBA,mBAAmB,MAAnBA,mBAAmB;IASbC,OAAO,MAAPA,OAAO;IAUbC,WAAW,MAAXA,WAAW;IA4BXC,SAAS,MAATA,SAAS;IAgBTC,cAAc,MAAdA,cAAc;;;8DArEd,KAAK;;;;;;;yBACD,KAAK;;;;;;wBAEE,oBAAoB;;;;;;AAGxC,SAASJ,mBAAmB,CAACK,GAAW,EAAoB;IACjE,OAAO,IAAIC,OAAO,CAAU,CAACC,OAAO,GAAK;QACvCC,IAAG,EAAA,QAAA,CAACC,MAAM,CAACJ,GAAG,EAAE,CAACK,GAAG,GAAK;YACvBH,OAAO,CAAC,CAACG,GAAG,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAGM,eAAeT,OAAO,CAACI,GAAW,EAAoB;IAC3D,IAAI;QACF,MAAMM,GAAG,GAAG,MAAMC,IAAAA,OAAU,WAAA,EAACP,GAAG,CAAC,AAAC;QAClC,OAAOM,GAAG,CAACE,EAAE,CAAC;IAChB,EAAE,OAAM;QACN,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAGM,SAASX,WAAW,CACzBY,SAAiB,EACjB,EACEC,SAAS,CAAA,EACTC,eAAe,CAAA,EAMhB,GAAG,EAAE,EACN;IACA,IAAI;QACF,MAAMC,OAAO,GAAG,IAAIC,CAAAA,IAAG,EAAA,CAAA,IAAA,CAACJ,SAAS,CAAC,AAAC;QACnC,IAAI,CAACG,OAAO,CAACE,QAAQ,IAAI,CAACH,eAAe,EAAE;YACzC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAOD,SAAS,GACZE,OAAO,CAACE,QAAQ,GACdJ,SAAS,CAACK,GAAG,CAAC,CAACC,CAAC,GAAK,CAAC,EAAEA,CAAC,CAACC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAACC,QAAQ,CAACN,OAAO,CAACE,QAAQ,CAAC,GACtE,KAAK,GACP,IAAI,CAAC;IACX,EAAE,OAAM;QACN,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAGM,SAAShB,SAAS,CAACqB,IAAa,EAAiB;QAC/CC,GAAe;IAAtB,OAAOA,CAAAA,CAAAA,GAAe,GAAfA,SAAS,CAACD,IAAI,CAAC,SAAU,GAAzBC,KAAAA,CAAyB,GAAzBA,GAAe,CAAEC,QAAQ,CAAA,IAAI,IAAI,CAAC;AAC3C,CAAC;AAED,SAASD,SAAS,CAACX,SAAkB,EAAc;IACjD,IAAI,CAACA,SAAS,EAAE;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI;QACF,OAAO,IAAII,CAAAA,IAAG,EAAA,CAAA,IAAA,CAAC,GAAG,EAAEJ,SAAS,CAAC,CAAC;IACjC,EAAE,OAAM;QACN,OAAO,IAAII,CAAAA,IAAG,EAAA,CAAA,IAAA,CAAC,GAAG,EAAE,CAAC,OAAO,EAAEJ,SAAS,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC;AAGM,SAASV,cAAc,CAACC,GAAW,EAAEsB,SAAiB,EAAU;IACrE,OAAOtB,GAAG,CAACuB,OAAO,CAAC,IAAIC,MAAM,CAAC,CAAC,CAAC,EAAEF,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACvD,CAAC"}
1
+ {"version":3,"sources":["../../../src/utils/url.ts"],"sourcesContent":["import dns from 'dns';\nimport { URL } from 'url';\n\nimport { fetchAsync } from '../api/rest/client';\n\n/** Check if a server is available based on the URL. */\nexport function isUrlAvailableAsync(url: string): Promise<boolean> {\n return new Promise<boolean>((resolve) => {\n dns.lookup(url, (err) => {\n resolve(!err);\n });\n });\n}\n\n/** Check if a request to the given URL is `ok` (status 200). */\nexport async function isUrlOk(url: string): Promise<boolean> {\n try {\n const res = await fetchAsync(url);\n return res.ok;\n } catch {\n return false;\n }\n}\n\n/** Determine if a string is a valid URL, can optionally ensure certain protocols (like `https` or `exp`) are adhered to. */\nexport function validateUrl(\n urlString: string,\n {\n protocols,\n requireProtocol,\n }: {\n /** Set of allowed protocols for the string to adhere to. @example ['exp', 'https'] */\n protocols?: string[];\n /** Ensure the URL has a protocol component (prefix before `://`). */\n requireProtocol?: boolean;\n } = {}\n) {\n try {\n const results = new URL(urlString);\n if (!results.protocol && !requireProtocol) {\n return true;\n }\n return protocols\n ? results.protocol\n ? protocols.map((x) => `${x.toLowerCase()}:`).includes(results.protocol)\n : false\n : true;\n } catch {\n return false;\n }\n}\n\n/** Remove the port from a given `host` URL string. */\nexport function stripPort(host?: string): string | null {\n return coerceUrl(host)?.hostname ?? null;\n}\n\nfunction coerceUrl(urlString?: string): URL | null {\n if (!urlString) {\n return null;\n }\n try {\n return new URL('/', urlString);\n } catch {\n return new URL('/', `http://${urlString}`);\n }\n}\n\n/** Strip a given extension from a URL string. */\nexport function stripExtension(url: string, extension: string): string {\n return url.replace(new RegExp(`.${extension}$`), '');\n}\n"],"names":["isUrlAvailableAsync","isUrlOk","stripExtension","stripPort","validateUrl","url","Promise","resolve","dns","lookup","err","res","fetchAsync","ok","urlString","protocols","requireProtocol","results","URL","protocol","map","x","toLowerCase","includes","host","coerceUrl","hostname","extension","replace","RegExp"],"mappings":";;;;;;;;;;;IAMgBA,mBAAmB;eAAnBA;;IASMC,OAAO;eAAPA;;IAsDNC,cAAc;eAAdA;;IAhBAC,SAAS;eAATA;;IA5BAC,WAAW;eAAXA;;;;gEAzBA;;;;;;;yBACI;;;;;;wBAEO;;;;;;AAGpB,SAASJ,oBAAoBK,GAAW;IAC7C,OAAO,IAAIC,QAAiB,CAACC;QAC3BC,cAAG,CAACC,MAAM,CAACJ,KAAK,CAACK;YACfH,QAAQ,CAACG;QACX;IACF;AACF;AAGO,eAAeT,QAAQI,GAAW;IACvC,IAAI;QACF,MAAMM,MAAM,MAAMC,IAAAA,kBAAU,EAACP;QAC7B,OAAOM,IAAIE,EAAE;IACf,EAAE,OAAM;QACN,OAAO;IACT;AACF;AAGO,SAAST,YACdU,SAAiB,EACjB,EACEC,SAAS,EACTC,eAAe,EAMhB,GAAG,CAAC,CAAC;IAEN,IAAI;QACF,MAAMC,UAAU,IAAIC,CAAAA,MAAE,KAAC,CAACJ;QACxB,IAAI,CAACG,QAAQE,QAAQ,IAAI,CAACH,iBAAiB;YACzC,OAAO;QACT;QACA,OAAOD,YACHE,QAAQE,QAAQ,GACdJ,UAAUK,GAAG,CAAC,CAACC,IAAM,GAAGA,EAAEC,WAAW,GAAG,CAAC,CAAC,EAAEC,QAAQ,CAACN,QAAQE,QAAQ,IACrE,QACF;IACN,EAAE,OAAM;QACN,OAAO;IACT;AACF;AAGO,SAAShB,UAAUqB,IAAa;QAC9BC;IAAP,OAAOA,EAAAA,aAAAA,UAAUD,0BAAVC,WAAiBC,QAAQ,KAAI;AACtC;AAEA,SAASD,UAAUX,SAAkB;IACnC,IAAI,CAACA,WAAW;QACd,OAAO;IACT;IACA,IAAI;QACF,OAAO,IAAII,CAAAA,MAAE,KAAC,CAAC,KAAKJ;IACtB,EAAE,OAAM;QACN,OAAO,IAAII,CAAAA,MAAE,KAAC,CAAC,KAAK,CAAC,OAAO,EAAEJ,WAAW;IAC3C;AACF;AAGO,SAASZ,eAAeG,GAAW,EAAEsB,SAAiB;IAC3D,OAAOtB,IAAIuB,OAAO,CAAC,IAAIC,OAAO,CAAC,CAAC,EAAEF,UAAU,CAAC,CAAC,GAAG;AACnD"}
@@ -9,27 +9,49 @@ function _export(target, all) {
9
9
  });
10
10
  }
11
11
  _export(exports, {
12
- validateBundleId: ()=>validateBundleId,
13
- validatePackage: ()=>validatePackage,
14
- validatePackageWithWarning: ()=>validatePackageWithWarning,
15
- getSanitizedPackage: ()=>getSanitizedPackage,
16
- getSanitizedBundleIdentifier: ()=>getSanitizedBundleIdentifier,
17
- assertValidBundleId: ()=>assertValidBundleId,
18
- assertValidPackage: ()=>assertValidPackage,
19
- getBundleIdWarningInternalAsync: ()=>getBundleIdWarningInternalAsync,
20
- getBundleIdWarningAsync: ()=>getBundleIdWarningAsync,
21
- getPackageNameWarningInternalAsync: ()=>getPackageNameWarningInternalAsync,
22
- getPackageNameWarningAsync: ()=>getPackageNameWarningAsync
12
+ assertValidBundleId: function() {
13
+ return assertValidBundleId;
14
+ },
15
+ assertValidPackage: function() {
16
+ return assertValidPackage;
17
+ },
18
+ getBundleIdWarningAsync: function() {
19
+ return getBundleIdWarningAsync;
20
+ },
21
+ getBundleIdWarningInternalAsync: function() {
22
+ return getBundleIdWarningInternalAsync;
23
+ },
24
+ getPackageNameWarningAsync: function() {
25
+ return getPackageNameWarningAsync;
26
+ },
27
+ getPackageNameWarningInternalAsync: function() {
28
+ return getPackageNameWarningInternalAsync;
29
+ },
30
+ getSanitizedBundleIdentifier: function() {
31
+ return getSanitizedBundleIdentifier;
32
+ },
33
+ getSanitizedPackage: function() {
34
+ return getSanitizedPackage;
35
+ },
36
+ validateBundleId: function() {
37
+ return validateBundleId;
38
+ },
39
+ validatePackage: function() {
40
+ return validatePackage;
41
+ },
42
+ validatePackageWithWarning: function() {
43
+ return validatePackageWithWarning;
44
+ }
23
45
  });
24
46
  function _assert() {
25
- const data = /*#__PURE__*/ _interopRequireDefault(require("assert"));
47
+ const data = /*#__PURE__*/ _interop_require_default(require("assert"));
26
48
  _assert = function() {
27
49
  return data;
28
50
  };
29
51
  return data;
30
52
  }
31
53
  function _chalk() {
32
- const data = /*#__PURE__*/ _interopRequireDefault(require("chalk"));
54
+ const data = /*#__PURE__*/ _interop_require_default(require("chalk"));
33
55
  _chalk = function() {
34
56
  return data;
35
57
  };
@@ -40,12 +62,12 @@ const _fn = require("./fn");
40
62
  const _link = require("./link");
41
63
  const _url = require("./url");
42
64
  const _log = require("../log");
43
- function _interopRequireDefault(obj) {
65
+ function _interop_require_default(obj) {
44
66
  return obj && obj.__esModule ? obj : {
45
67
  default: obj
46
68
  };
47
69
  }
48
- const debug = require("debug")("expo:utils:validateApplicationId");
70
+ const debug = require('debug')('expo:utils:validateApplicationId');
49
71
  // TODO: Adjust to indicate that the bundle identifier must start with a letter, period, or hyphen.
50
72
  const IOS_BUNDLE_ID_REGEX = /^[a-zA-Z0-9-.]+$/;
51
73
  const ANDROID_PACKAGE_REGEX = /^[a-zA-Z][a-zA-Z0-9_]*(\.[a-zA-Z][a-zA-Z0-9_]*)+$/;
@@ -56,7 +78,7 @@ function validatePackage(value) {
56
78
  return validatePackageWithWarning(value) === true;
57
79
  }
58
80
  function validatePackageWithWarning(value) {
59
- const parts = value.split(".");
81
+ const parts = value.split('.');
60
82
  for (const segment of parts){
61
83
  if (RESERVED_ANDROID_PACKAGE_NAME_SEGMENTS.includes(segment)) {
62
84
  return `"${segment}" is a reserved Java keyword.`;
@@ -76,24 +98,24 @@ function getSanitizedPackage(value) {
76
98
  // https://docs.oracle.com/javase/tutorial/java/package/namingpkgs.html
77
99
  // However, life is much nicer when the bundle identifier and package name are the same and iOS has the inverse rule— converting underscores to hyphens.
78
100
  // So we'll simply remove hyphens and illegal characters for Android.
79
- .replace(/[^a-zA-Z0-9_.]/g, "")// Prevent multiple '.' in a row (e.g. no zero-length segments).
80
- .replace(/\.+/g, ".")// Prevent '.' from the start or end.
81
- .replace(/^\.|\.$/g, "");
82
- output ||= "app";
101
+ .replace(/[^a-zA-Z0-9_.]/g, '')// Prevent multiple '.' in a row (e.g. no zero-length segments).
102
+ .replace(/\.+/g, '.')// Prevent '.' from the start or end.
103
+ .replace(/^\.|\.$/g, '');
104
+ output ||= 'app';
83
105
  // Prepend extra segments
84
- let segments = output.split(".").length;
106
+ let segments = output.split('.').length;
85
107
  while(segments < 2){
86
108
  output = `com.${output}`;
87
109
  segments += 1;
88
110
  }
89
111
  // Ensure each dot has a letter or number after it
90
- output = output.split(".").map((segment)=>{
91
- segment = /^[a-zA-Z]/.test(segment) ? segment : "x" + segment;
112
+ output = output.split('.').map((segment)=>{
113
+ segment = /^[a-zA-Z]/.test(segment) ? segment : 'x' + segment;
92
114
  if (RESERVED_ANDROID_PACKAGE_NAME_SEGMENTS.includes(segment)) {
93
- segment = "x" + segment;
115
+ segment = 'x' + segment;
94
116
  }
95
117
  return segment;
96
- }).join(".");
118
+ }).join('.');
97
119
  return output;
98
120
  }
99
121
  function getSanitizedBundleIdentifier(value) {
@@ -101,71 +123,71 @@ function getSanitizedBundleIdentifier(value) {
101
123
  // Must start with a letter, period, or hyphen (not number).
102
124
  // Can only contain alphanumeric characters, periods, and hyphens.
103
125
  // Can have empty segments (e.g. com.example..app).
104
- return value.replace(/(^[^a-zA-Z.-]|[^a-zA-Z0-9-.])/g, "-");
126
+ return value.replace(/(^[^a-zA-Z.-]|[^a-zA-Z0-9-.])/g, '-');
105
127
  }
106
128
  // https://en.wikipedia.org/wiki/List_of_Java_keywords
107
129
  // Running the following in the console and pruning the "Reserved Identifiers" section:
108
130
  // [...document.querySelectorAll('dl > dt > code')].map(node => node.innerText)
109
131
  const RESERVED_ANDROID_PACKAGE_NAME_SEGMENTS = [
110
132
  // List of Java keywords
111
- "_",
112
- "abstract",
113
- "assert",
114
- "boolean",
115
- "break",
116
- "byte",
117
- "case",
118
- "catch",
119
- "char",
120
- "class",
121
- "const",
122
- "continue",
123
- "default",
124
- "do",
125
- "double",
126
- "else",
127
- "enum",
128
- "extends",
129
- "final",
130
- "finally",
131
- "float",
132
- "for",
133
- "goto",
134
- "if",
135
- "implements",
136
- "import",
137
- "instanceof",
138
- "int",
139
- "interface",
140
- "long",
141
- "native",
142
- "new",
143
- "package",
144
- "private",
145
- "protected",
146
- "public",
147
- "return",
148
- "short",
149
- "static",
150
- "super",
151
- "switch",
152
- "synchronized",
153
- "this",
154
- "throw",
155
- "throws",
156
- "transient",
157
- "try",
158
- "void",
159
- "volatile",
160
- "while",
133
+ '_',
134
+ 'abstract',
135
+ 'assert',
136
+ 'boolean',
137
+ 'break',
138
+ 'byte',
139
+ 'case',
140
+ 'catch',
141
+ 'char',
142
+ 'class',
143
+ 'const',
144
+ 'continue',
145
+ 'default',
146
+ 'do',
147
+ 'double',
148
+ 'else',
149
+ 'enum',
150
+ 'extends',
151
+ 'final',
152
+ 'finally',
153
+ 'float',
154
+ 'for',
155
+ 'goto',
156
+ 'if',
157
+ 'implements',
158
+ 'import',
159
+ 'instanceof',
160
+ 'int',
161
+ 'interface',
162
+ 'long',
163
+ 'native',
164
+ 'new',
165
+ 'package',
166
+ 'private',
167
+ 'protected',
168
+ 'public',
169
+ 'return',
170
+ 'short',
171
+ 'static',
172
+ 'super',
173
+ 'switch',
174
+ 'synchronized',
175
+ 'this',
176
+ 'throw',
177
+ 'throws',
178
+ 'transient',
179
+ 'try',
180
+ 'void',
181
+ 'volatile',
182
+ 'while',
161
183
  // Reserved words for literal values
162
- "true",
163
- "false",
164
- "null",
184
+ 'true',
185
+ 'false',
186
+ 'null',
165
187
  // Unused
166
- "const",
167
- "goto",
168
- "strictfp",
188
+ 'const',
189
+ 'goto',
190
+ 'strictfp'
169
191
  ];
170
192
  function assertValidBundleId(value) {
171
193
  _assert().default.match(value, IOS_BUNDLE_ID_REGEX, `The ios.bundleIdentifier defined in your Expo config is not formatted properly. Only alphanumeric characters, '.', '-', and '_' are allowed, and each '.' must be followed by a letter.`);
@@ -175,10 +197,10 @@ function assertValidPackage(value) {
175
197
  }
176
198
  async function getBundleIdWarningInternalAsync(bundleId) {
177
199
  if (_env.env.EXPO_OFFLINE) {
178
- _log.Log.warn("Skipping Apple bundle identifier reservation validation in offline-mode.");
200
+ _log.Log.warn('Skipping Apple bundle identifier reservation validation in offline-mode.');
179
201
  return null;
180
202
  }
181
- if (!await (0, _url.isUrlAvailableAsync)("itunes.apple.com")) {
203
+ if (!await (0, _url.isUrlAvailableAsync)('itunes.apple.com')) {
182
204
  debug(`Couldn't connect to iTunes Store to check bundle ID ${bundleId}. itunes.apple.com may be down.`);
183
205
  // If no network, simply skip the warnings since they'll just lead to more confusion.
184
206
  return null;
@@ -201,10 +223,10 @@ async function getBundleIdWarningInternalAsync(bundleId) {
201
223
  const getBundleIdWarningAsync = (0, _fn.memoize)(getBundleIdWarningInternalAsync);
202
224
  async function getPackageNameWarningInternalAsync(packageName) {
203
225
  if (_env.env.EXPO_OFFLINE) {
204
- _log.Log.warn("Skipping Android package name reservation validation in offline-mode.");
226
+ _log.Log.warn('Skipping Android package name reservation validation in offline-mode.');
205
227
  return null;
206
228
  }
207
- if (!await (0, _url.isUrlAvailableAsync)("play.google.com")) {
229
+ if (!await (0, _url.isUrlAvailableAsync)('play.google.com')) {
208
230
  debug(`Couldn't connect to Play Store to check package name ${packageName}. play.google.com may be down.`);
209
231
  // If no network, simply skip the warnings since they'll just lead to more confusion.
210
232
  return null;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/validateApplicationId.ts"],"sourcesContent":["import assert from 'assert';\nimport chalk from 'chalk';\n\nimport { env } from './env';\nimport { memoize } from './fn';\nimport { learnMore } from './link';\nimport { isUrlAvailableAsync } from './url';\nimport { Log } from '../log';\n\nconst debug = require('debug')('expo:utils:validateApplicationId') as typeof console.log;\n\n// TODO: Adjust to indicate that the bundle identifier must start with a letter, period, or hyphen.\nconst IOS_BUNDLE_ID_REGEX = /^[a-zA-Z0-9-.]+$/;\nconst ANDROID_PACKAGE_REGEX = /^[a-zA-Z][a-zA-Z0-9_]*(\\.[a-zA-Z][a-zA-Z0-9_]*)+$/;\n\n/** Validate an iOS bundle identifier. */\nexport function validateBundleId(value: string): boolean {\n return IOS_BUNDLE_ID_REGEX.test(value);\n}\n\n/** Validate an Android package name. */\nexport function validatePackage(value: string): boolean {\n return validatePackageWithWarning(value) === true;\n}\n\n/** Validate an Android package name and return the reason if invalid. */\nexport function validatePackageWithWarning(value: string): true | string {\n const parts = value.split('.');\n for (const segment of parts) {\n if (RESERVED_ANDROID_PACKAGE_NAME_SEGMENTS.includes(segment)) {\n return `\"${segment}\" is a reserved Java keyword.`;\n }\n }\n if (parts.length < 2) {\n return `Package name must contain more than one segment, separated by \".\", e.g. com.${value}`;\n }\n if (!ANDROID_PACKAGE_REGEX.test(value)) {\n return 'Invalid characters in Android package name. Only alphanumeric characters, \".\" and \"_\" are allowed, and each segment start with a letter.';\n }\n\n return true;\n}\n\nexport function getSanitizedPackage(value: string) {\n // It's common to use dashes in your node project name, strip them from the suggested package name.\n let output = value\n // Oracle recommends package names are \"legalized\" by converting hyphen to an underscore and removing unsupported characters\n // https://docs.oracle.com/javase/tutorial/java/package/namingpkgs.html\n // However, life is much nicer when the bundle identifier and package name are the same and iOS has the inverse rule— converting underscores to hyphens.\n // So we'll simply remove hyphens and illegal characters for Android.\n .replace(/[^a-zA-Z0-9_.]/g, '')\n // Prevent multiple '.' in a row (e.g. no zero-length segments).\n .replace(/\\.+/g, '.')\n // Prevent '.' from the start or end.\n .replace(/^\\.|\\.$/g, '');\n\n output ||= 'app';\n\n // Prepend extra segments\n let segments = output.split('.').length;\n while (segments < 2) {\n output = `com.${output}`;\n segments += 1;\n }\n\n // Ensure each dot has a letter or number after it\n output = output\n .split('.')\n .map((segment) => {\n segment = /^[a-zA-Z]/.test(segment) ? segment : 'x' + segment;\n\n if (RESERVED_ANDROID_PACKAGE_NAME_SEGMENTS.includes(segment)) {\n segment = 'x' + segment;\n }\n return segment;\n })\n .join('.');\n\n return output;\n}\n\nexport function getSanitizedBundleIdentifier(value: string) {\n // According to the behavior observed when using the UI in Xcode.\n // Must start with a letter, period, or hyphen (not number).\n // Can only contain alphanumeric characters, periods, and hyphens.\n // Can have empty segments (e.g. com.example..app).\n return value.replace(/(^[^a-zA-Z.-]|[^a-zA-Z0-9-.])/g, '-');\n}\n\n// https://en.wikipedia.org/wiki/List_of_Java_keywords\n// Running the following in the console and pruning the \"Reserved Identifiers\" section:\n// [...document.querySelectorAll('dl > dt > code')].map(node => node.innerText)\nconst RESERVED_ANDROID_PACKAGE_NAME_SEGMENTS = [\n // List of Java keywords\n '_',\n 'abstract',\n 'assert',\n 'boolean',\n 'break',\n 'byte',\n 'case',\n 'catch',\n 'char',\n 'class',\n 'const',\n 'continue',\n 'default',\n 'do',\n 'double',\n 'else',\n 'enum',\n 'extends',\n 'final',\n 'finally',\n 'float',\n 'for',\n 'goto',\n 'if',\n 'implements',\n 'import',\n 'instanceof',\n 'int',\n 'interface',\n 'long',\n 'native',\n 'new',\n 'package',\n 'private',\n 'protected',\n 'public',\n 'return',\n 'short',\n 'static',\n 'super',\n 'switch',\n 'synchronized',\n 'this',\n 'throw',\n 'throws',\n 'transient',\n 'try',\n 'void',\n 'volatile',\n 'while',\n // Reserved words for literal values\n 'true',\n 'false',\n 'null',\n // Unused\n 'const',\n 'goto',\n 'strictfp',\n];\n\nexport function assertValidBundleId(value: string) {\n assert.match(\n value,\n IOS_BUNDLE_ID_REGEX,\n `The ios.bundleIdentifier defined in your Expo config is not formatted properly. Only alphanumeric characters, '.', '-', and '_' are allowed, and each '.' must be followed by a letter.`\n );\n}\n\nexport function assertValidPackage(value: string) {\n assert.match(\n value,\n ANDROID_PACKAGE_REGEX,\n `Invalid format of Android package name. Only alphanumeric characters, '.' and '_' are allowed, and each '.' must be followed by a letter. Reserved Java keywords are not allowed.`\n );\n}\n\n/** @private */\nexport async function getBundleIdWarningInternalAsync(bundleId: string): Promise<string | null> {\n if (env.EXPO_OFFLINE) {\n Log.warn('Skipping Apple bundle identifier reservation validation in offline-mode.');\n return null;\n }\n\n if (!(await isUrlAvailableAsync('itunes.apple.com'))) {\n debug(\n `Couldn't connect to iTunes Store to check bundle ID ${bundleId}. itunes.apple.com may be down.`\n );\n // If no network, simply skip the warnings since they'll just lead to more confusion.\n return null;\n }\n\n const url = `http://itunes.apple.com/lookup?bundleId=${bundleId}`;\n try {\n debug(`Checking iOS bundle ID '${bundleId}' at: ${url}`);\n const response = await fetch(url);\n const json: any = await response.json();\n if (json.resultCount > 0) {\n const firstApp = json.results[0];\n return formatInUseWarning(firstApp.trackName, firstApp.sellerName, bundleId);\n }\n } catch (error: any) {\n debug(`Error checking bundle ID ${bundleId}: ${error.message}`);\n // Error fetching itunes data.\n }\n return null;\n}\n\n/** Returns a warning message if an iOS bundle identifier is potentially already in use. */\nexport const getBundleIdWarningAsync = memoize(getBundleIdWarningInternalAsync);\n\n/** @private */\nexport async function getPackageNameWarningInternalAsync(\n packageName: string\n): Promise<string | null> {\n if (env.EXPO_OFFLINE) {\n Log.warn('Skipping Android package name reservation validation in offline-mode.');\n return null;\n }\n\n if (!(await isUrlAvailableAsync('play.google.com'))) {\n debug(\n `Couldn't connect to Play Store to check package name ${packageName}. play.google.com may be down.`\n );\n // If no network, simply skip the warnings since they'll just lead to more confusion.\n return null;\n }\n\n const url = `https://play.google.com/store/apps/details?id=${packageName}`;\n try {\n debug(`Checking Android package name '${packageName}' at: ${url}`);\n const response = await fetch(url);\n // If the page exists, then warn the user.\n if (response.status === 200) {\n // There is no JSON API for the Play Store so we can't concisely\n // locate the app name and developer to match the iOS warning.\n return `⚠️ The package ${chalk.bold(packageName)} is already in use. ${chalk.dim(\n learnMore(url)\n )}`;\n }\n } catch (error: any) {\n // Error fetching play store data or the page doesn't exist.\n debug(`Error checking package name ${packageName}: ${error.message}`);\n }\n return null;\n}\n\nfunction formatInUseWarning(appName: string, author: string, id: string): string {\n return `⚠️ The app ${chalk.bold(appName)} by ${chalk.italic(\n author\n )} is already using ${chalk.bold(id)}`;\n}\n\n/** Returns a warning message if an Android package name is potentially already in use. */\nexport const getPackageNameWarningAsync = memoize(getPackageNameWarningInternalAsync);\n"],"names":["validateBundleId","validatePackage","validatePackageWithWarning","getSanitizedPackage","getSanitizedBundleIdentifier","assertValidBundleId","assertValidPackage","getBundleIdWarningInternalAsync","getBundleIdWarningAsync","getPackageNameWarningInternalAsync","getPackageNameWarningAsync","debug","require","IOS_BUNDLE_ID_REGEX","ANDROID_PACKAGE_REGEX","value","test","parts","split","segment","RESERVED_ANDROID_PACKAGE_NAME_SEGMENTS","includes","length","output","replace","segments","map","join","assert","match","bundleId","env","EXPO_OFFLINE","Log","warn","isUrlAvailableAsync","url","response","fetch","json","resultCount","firstApp","results","formatInUseWarning","trackName","sellerName","error","message","memoize","packageName","status","chalk","bold","dim","learnMore","appName","author","id","italic"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/utils/validateApplicationId.ts"],"sourcesContent":["import assert from 'assert';\nimport chalk from 'chalk';\n\nimport { env } from './env';\nimport { memoize } from './fn';\nimport { learnMore } from './link';\nimport { isUrlAvailableAsync } from './url';\nimport { Log } from '../log';\n\nconst debug = require('debug')('expo:utils:validateApplicationId') as typeof console.log;\n\n// TODO: Adjust to indicate that the bundle identifier must start with a letter, period, or hyphen.\nconst IOS_BUNDLE_ID_REGEX = /^[a-zA-Z0-9-.]+$/;\nconst ANDROID_PACKAGE_REGEX = /^[a-zA-Z][a-zA-Z0-9_]*(\\.[a-zA-Z][a-zA-Z0-9_]*)+$/;\n\n/** Validate an iOS bundle identifier. */\nexport function validateBundleId(value: string): boolean {\n return IOS_BUNDLE_ID_REGEX.test(value);\n}\n\n/** Validate an Android package name. */\nexport function validatePackage(value: string): boolean {\n return validatePackageWithWarning(value) === true;\n}\n\n/** Validate an Android package name and return the reason if invalid. */\nexport function validatePackageWithWarning(value: string): true | string {\n const parts = value.split('.');\n for (const segment of parts) {\n if (RESERVED_ANDROID_PACKAGE_NAME_SEGMENTS.includes(segment)) {\n return `\"${segment}\" is a reserved Java keyword.`;\n }\n }\n if (parts.length < 2) {\n return `Package name must contain more than one segment, separated by \".\", e.g. com.${value}`;\n }\n if (!ANDROID_PACKAGE_REGEX.test(value)) {\n return 'Invalid characters in Android package name. Only alphanumeric characters, \".\" and \"_\" are allowed, and each segment start with a letter.';\n }\n\n return true;\n}\n\nexport function getSanitizedPackage(value: string) {\n // It's common to use dashes in your node project name, strip them from the suggested package name.\n let output = value\n // Oracle recommends package names are \"legalized\" by converting hyphen to an underscore and removing unsupported characters\n // https://docs.oracle.com/javase/tutorial/java/package/namingpkgs.html\n // However, life is much nicer when the bundle identifier and package name are the same and iOS has the inverse rule— converting underscores to hyphens.\n // So we'll simply remove hyphens and illegal characters for Android.\n .replace(/[^a-zA-Z0-9_.]/g, '')\n // Prevent multiple '.' in a row (e.g. no zero-length segments).\n .replace(/\\.+/g, '.')\n // Prevent '.' from the start or end.\n .replace(/^\\.|\\.$/g, '');\n\n output ||= 'app';\n\n // Prepend extra segments\n let segments = output.split('.').length;\n while (segments < 2) {\n output = `com.${output}`;\n segments += 1;\n }\n\n // Ensure each dot has a letter or number after it\n output = output\n .split('.')\n .map((segment) => {\n segment = /^[a-zA-Z]/.test(segment) ? segment : 'x' + segment;\n\n if (RESERVED_ANDROID_PACKAGE_NAME_SEGMENTS.includes(segment)) {\n segment = 'x' + segment;\n }\n return segment;\n })\n .join('.');\n\n return output;\n}\n\nexport function getSanitizedBundleIdentifier(value: string) {\n // According to the behavior observed when using the UI in Xcode.\n // Must start with a letter, period, or hyphen (not number).\n // Can only contain alphanumeric characters, periods, and hyphens.\n // Can have empty segments (e.g. com.example..app).\n return value.replace(/(^[^a-zA-Z.-]|[^a-zA-Z0-9-.])/g, '-');\n}\n\n// https://en.wikipedia.org/wiki/List_of_Java_keywords\n// Running the following in the console and pruning the \"Reserved Identifiers\" section:\n// [...document.querySelectorAll('dl > dt > code')].map(node => node.innerText)\nconst RESERVED_ANDROID_PACKAGE_NAME_SEGMENTS = [\n // List of Java keywords\n '_',\n 'abstract',\n 'assert',\n 'boolean',\n 'break',\n 'byte',\n 'case',\n 'catch',\n 'char',\n 'class',\n 'const',\n 'continue',\n 'default',\n 'do',\n 'double',\n 'else',\n 'enum',\n 'extends',\n 'final',\n 'finally',\n 'float',\n 'for',\n 'goto',\n 'if',\n 'implements',\n 'import',\n 'instanceof',\n 'int',\n 'interface',\n 'long',\n 'native',\n 'new',\n 'package',\n 'private',\n 'protected',\n 'public',\n 'return',\n 'short',\n 'static',\n 'super',\n 'switch',\n 'synchronized',\n 'this',\n 'throw',\n 'throws',\n 'transient',\n 'try',\n 'void',\n 'volatile',\n 'while',\n // Reserved words for literal values\n 'true',\n 'false',\n 'null',\n // Unused\n 'const',\n 'goto',\n 'strictfp',\n];\n\nexport function assertValidBundleId(value: string) {\n assert.match(\n value,\n IOS_BUNDLE_ID_REGEX,\n `The ios.bundleIdentifier defined in your Expo config is not formatted properly. Only alphanumeric characters, '.', '-', and '_' are allowed, and each '.' must be followed by a letter.`\n );\n}\n\nexport function assertValidPackage(value: string) {\n assert.match(\n value,\n ANDROID_PACKAGE_REGEX,\n `Invalid format of Android package name. Only alphanumeric characters, '.' and '_' are allowed, and each '.' must be followed by a letter. Reserved Java keywords are not allowed.`\n );\n}\n\n/** @private */\nexport async function getBundleIdWarningInternalAsync(bundleId: string): Promise<string | null> {\n if (env.EXPO_OFFLINE) {\n Log.warn('Skipping Apple bundle identifier reservation validation in offline-mode.');\n return null;\n }\n\n if (!(await isUrlAvailableAsync('itunes.apple.com'))) {\n debug(\n `Couldn't connect to iTunes Store to check bundle ID ${bundleId}. itunes.apple.com may be down.`\n );\n // If no network, simply skip the warnings since they'll just lead to more confusion.\n return null;\n }\n\n const url = `http://itunes.apple.com/lookup?bundleId=${bundleId}`;\n try {\n debug(`Checking iOS bundle ID '${bundleId}' at: ${url}`);\n const response = await fetch(url);\n const json: any = await response.json();\n if (json.resultCount > 0) {\n const firstApp = json.results[0];\n return formatInUseWarning(firstApp.trackName, firstApp.sellerName, bundleId);\n }\n } catch (error: any) {\n debug(`Error checking bundle ID ${bundleId}: ${error.message}`);\n // Error fetching itunes data.\n }\n return null;\n}\n\n/** Returns a warning message if an iOS bundle identifier is potentially already in use. */\nexport const getBundleIdWarningAsync = memoize(getBundleIdWarningInternalAsync);\n\n/** @private */\nexport async function getPackageNameWarningInternalAsync(\n packageName: string\n): Promise<string | null> {\n if (env.EXPO_OFFLINE) {\n Log.warn('Skipping Android package name reservation validation in offline-mode.');\n return null;\n }\n\n if (!(await isUrlAvailableAsync('play.google.com'))) {\n debug(\n `Couldn't connect to Play Store to check package name ${packageName}. play.google.com may be down.`\n );\n // If no network, simply skip the warnings since they'll just lead to more confusion.\n return null;\n }\n\n const url = `https://play.google.com/store/apps/details?id=${packageName}`;\n try {\n debug(`Checking Android package name '${packageName}' at: ${url}`);\n const response = await fetch(url);\n // If the page exists, then warn the user.\n if (response.status === 200) {\n // There is no JSON API for the Play Store so we can't concisely\n // locate the app name and developer to match the iOS warning.\n return `⚠️ The package ${chalk.bold(packageName)} is already in use. ${chalk.dim(\n learnMore(url)\n )}`;\n }\n } catch (error: any) {\n // Error fetching play store data or the page doesn't exist.\n debug(`Error checking package name ${packageName}: ${error.message}`);\n }\n return null;\n}\n\nfunction formatInUseWarning(appName: string, author: string, id: string): string {\n return `⚠️ The app ${chalk.bold(appName)} by ${chalk.italic(\n author\n )} is already using ${chalk.bold(id)}`;\n}\n\n/** Returns a warning message if an Android package name is potentially already in use. */\nexport const getPackageNameWarningAsync = memoize(getPackageNameWarningInternalAsync);\n"],"names":["assertValidBundleId","assertValidPackage","getBundleIdWarningAsync","getBundleIdWarningInternalAsync","getPackageNameWarningAsync","getPackageNameWarningInternalAsync","getSanitizedBundleIdentifier","getSanitizedPackage","validateBundleId","validatePackage","validatePackageWithWarning","debug","require","IOS_BUNDLE_ID_REGEX","ANDROID_PACKAGE_REGEX","value","test","parts","split","segment","RESERVED_ANDROID_PACKAGE_NAME_SEGMENTS","includes","length","output","replace","segments","map","join","assert","match","bundleId","env","EXPO_OFFLINE","Log","warn","isUrlAvailableAsync","url","response","fetch","json","resultCount","firstApp","results","formatInUseWarning","trackName","sellerName","error","message","memoize","packageName","status","chalk","bold","dim","learnMore","appName","author","id","italic"],"mappings":"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"}
@@ -9,19 +9,25 @@ function _export(target, all) {
9
9
  });
10
10
  }
11
11
  _export(exports, {
12
- parseVariadicArguments: ()=>parseVariadicArguments,
13
- assertUnexpectedObjectKeys: ()=>assertUnexpectedObjectKeys,
14
- assertUnexpectedVariadicFlags: ()=>assertUnexpectedVariadicFlags
12
+ assertUnexpectedObjectKeys: function() {
13
+ return assertUnexpectedObjectKeys;
14
+ },
15
+ assertUnexpectedVariadicFlags: function() {
16
+ return assertUnexpectedVariadicFlags;
17
+ },
18
+ parseVariadicArguments: function() {
19
+ return parseVariadicArguments;
20
+ }
15
21
  });
16
22
  const _errors = require("../utils/errors");
17
- const debug = require("debug")("expo:utils:variadic");
23
+ const debug = require('debug')('expo:utils:variadic');
18
24
  function parseVariadicArguments(argv) {
19
25
  const variadic = [];
20
26
  const flags = {};
21
27
  for (const arg of argv){
22
- if (!arg.startsWith("-")) {
28
+ if (!arg.startsWith('-')) {
23
29
  variadic.push(arg);
24
- } else if (arg === "--") {
30
+ } else if (arg === '--') {
25
31
  break;
26
32
  } else {
27
33
  flags[arg] = true;
@@ -29,14 +35,14 @@ function parseVariadicArguments(argv) {
29
35
  }
30
36
  // Everything after `--` that is not an option is passed to the underlying install command.
31
37
  const extras = [];
32
- const extraOperator = argv.indexOf("--");
38
+ const extraOperator = argv.indexOf('--');
33
39
  if (extraOperator > -1 && argv.length > extraOperator + 1) {
34
40
  const extraArgs = argv.slice(extraOperator + 1);
35
- if (extraArgs.includes("--")) {
36
- throw new _errors.CommandError("BAD_ARGS", "Unexpected multiple --");
41
+ if (extraArgs.includes('--')) {
42
+ throw new _errors.CommandError('BAD_ARGS', 'Unexpected multiple --');
37
43
  }
38
44
  extras.push(...extraArgs);
39
- debug("Extra arguments: " + extras.join(", "));
45
+ debug('Extra arguments: ' + extras.join(', '));
40
46
  }
41
47
  debug(`Parsed arguments (variadic: %O, flags: %O, extra: %O)`, variadic, flags, extras);
42
48
  return {
@@ -48,10 +54,10 @@ function parseVariadicArguments(argv) {
48
54
  function assertUnexpectedObjectKeys(keys, obj) {
49
55
  const unexpectedKeys = Object.keys(obj).filter((key)=>!keys.includes(key));
50
56
  if (unexpectedKeys.length > 0) {
51
- throw new _errors.CommandError("BAD_ARGS", `Unexpected: ${unexpectedKeys.join(", ")}`);
57
+ throw new _errors.CommandError('BAD_ARGS', `Unexpected: ${unexpectedKeys.join(', ')}`);
52
58
  }
53
59
  }
54
- function assertUnexpectedVariadicFlags(expectedFlags, { extras , flags , variadic }, prefixCommand = "") {
60
+ function assertUnexpectedVariadicFlags(expectedFlags, { extras, flags, variadic }, prefixCommand = '') {
55
61
  const unexpectedFlags = Object.keys(flags).filter((key)=>!expectedFlags.includes(key));
56
62
  if (unexpectedFlags.length > 0) {
57
63
  const intendedFlags = Object.entries(flags).filter(([key])=>expectedFlags.includes(key)).map(([key])=>key);
@@ -59,10 +65,10 @@ function assertUnexpectedVariadicFlags(expectedFlags, { extras , flags , variadi
59
65
  prefixCommand,
60
66
  ...variadic,
61
67
  ...intendedFlags,
62
- "--",
63
- ...extras.concat(unexpectedFlags),
64
- ].join(" ");
65
- throw new _errors.CommandError("BAD_ARGS", `Unexpected: ${unexpectedFlags.join(", ")}\nDid you mean: ${cmd.trim()}`);
68
+ '--',
69
+ ...extras.concat(unexpectedFlags)
70
+ ].join(' ');
71
+ throw new _errors.CommandError('BAD_ARGS', `Unexpected: ${unexpectedFlags.join(', ')}\nDid you mean: ${cmd.trim()}`);
66
72
  }
67
73
  }
68
74
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/variadic.ts"],"sourcesContent":["import { CommandError } from '../utils/errors';\n\nconst debug = require('debug')('expo:utils:variadic') as typeof console.log;\n\n/** Given a list of CLI args, return a sorted set of args based on categories used in a complex command. */\nexport function parseVariadicArguments(argv: string[]): {\n variadic: string[];\n extras: string[];\n flags: Record<string, boolean | undefined>;\n} {\n const variadic: string[] = [];\n const flags: Record<string, boolean> = {};\n\n for (const arg of argv) {\n if (!arg.startsWith('-')) {\n variadic.push(arg);\n } else if (arg === '--') {\n break;\n } else {\n flags[arg] = true;\n }\n }\n\n // Everything after `--` that is not an option is passed to the underlying install command.\n const extras: string[] = [];\n\n const extraOperator = argv.indexOf('--');\n if (extraOperator > -1 && argv.length > extraOperator + 1) {\n const extraArgs = argv.slice(extraOperator + 1);\n if (extraArgs.includes('--')) {\n throw new CommandError('BAD_ARGS', 'Unexpected multiple --');\n }\n extras.push(...extraArgs);\n debug('Extra arguments: ' + extras.join(', '));\n }\n\n debug(`Parsed arguments (variadic: %O, flags: %O, extra: %O)`, variadic, flags, extras);\n\n return {\n variadic,\n flags,\n extras,\n };\n}\n\nexport function assertUnexpectedObjectKeys(keys: string[], obj: Record<string, any>): void {\n const unexpectedKeys = Object.keys(obj).filter((key) => !keys.includes(key));\n if (unexpectedKeys.length > 0) {\n throw new CommandError('BAD_ARGS', `Unexpected: ${unexpectedKeys.join(', ')}`);\n }\n}\n\nexport function assertUnexpectedVariadicFlags(\n expectedFlags: string[],\n { extras, flags, variadic }: ReturnType<typeof parseVariadicArguments>,\n prefixCommand = ''\n) {\n const unexpectedFlags = Object.keys(flags).filter((key) => !expectedFlags.includes(key));\n\n if (unexpectedFlags.length > 0) {\n const intendedFlags = Object.entries(flags)\n .filter(([key]) => expectedFlags.includes(key))\n .map(([key]) => key);\n\n const cmd = [\n prefixCommand,\n ...variadic,\n ...intendedFlags,\n '--',\n ...extras.concat(unexpectedFlags),\n ].join(' ');\n\n throw new CommandError(\n 'BAD_ARGS',\n `Unexpected: ${unexpectedFlags.join(', ')}\\nDid you mean: ${cmd.trim()}`\n );\n }\n}\n"],"names":["parseVariadicArguments","assertUnexpectedObjectKeys","assertUnexpectedVariadicFlags","debug","require","argv","variadic","flags","arg","startsWith","push","extras","extraOperator","indexOf","length","extraArgs","slice","includes","CommandError","join","keys","obj","unexpectedKeys","Object","filter","key","expectedFlags","prefixCommand","unexpectedFlags","intendedFlags","entries","map","cmd","concat","trim"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/utils/variadic.ts"],"sourcesContent":["import { CommandError } from '../utils/errors';\n\nconst debug = require('debug')('expo:utils:variadic') as typeof console.log;\n\n/** Given a list of CLI args, return a sorted set of args based on categories used in a complex command. */\nexport function parseVariadicArguments(argv: string[]): {\n variadic: string[];\n extras: string[];\n flags: Record<string, boolean | undefined>;\n} {\n const variadic: string[] = [];\n const flags: Record<string, boolean> = {};\n\n for (const arg of argv) {\n if (!arg.startsWith('-')) {\n variadic.push(arg);\n } else if (arg === '--') {\n break;\n } else {\n flags[arg] = true;\n }\n }\n\n // Everything after `--` that is not an option is passed to the underlying install command.\n const extras: string[] = [];\n\n const extraOperator = argv.indexOf('--');\n if (extraOperator > -1 && argv.length > extraOperator + 1) {\n const extraArgs = argv.slice(extraOperator + 1);\n if (extraArgs.includes('--')) {\n throw new CommandError('BAD_ARGS', 'Unexpected multiple --');\n }\n extras.push(...extraArgs);\n debug('Extra arguments: ' + extras.join(', '));\n }\n\n debug(`Parsed arguments (variadic: %O, flags: %O, extra: %O)`, variadic, flags, extras);\n\n return {\n variadic,\n flags,\n extras,\n };\n}\n\nexport function assertUnexpectedObjectKeys(keys: string[], obj: Record<string, any>): void {\n const unexpectedKeys = Object.keys(obj).filter((key) => !keys.includes(key));\n if (unexpectedKeys.length > 0) {\n throw new CommandError('BAD_ARGS', `Unexpected: ${unexpectedKeys.join(', ')}`);\n }\n}\n\nexport function assertUnexpectedVariadicFlags(\n expectedFlags: string[],\n { extras, flags, variadic }: ReturnType<typeof parseVariadicArguments>,\n prefixCommand = ''\n) {\n const unexpectedFlags = Object.keys(flags).filter((key) => !expectedFlags.includes(key));\n\n if (unexpectedFlags.length > 0) {\n const intendedFlags = Object.entries(flags)\n .filter(([key]) => expectedFlags.includes(key))\n .map(([key]) => key);\n\n const cmd = [\n prefixCommand,\n ...variadic,\n ...intendedFlags,\n '--',\n ...extras.concat(unexpectedFlags),\n ].join(' ');\n\n throw new CommandError(\n 'BAD_ARGS',\n `Unexpected: ${unexpectedFlags.join(', ')}\\nDid you mean: ${cmd.trim()}`\n );\n }\n}\n"],"names":["assertUnexpectedObjectKeys","assertUnexpectedVariadicFlags","parseVariadicArguments","debug","require","argv","variadic","flags","arg","startsWith","push","extras","extraOperator","indexOf","length","extraArgs","slice","includes","CommandError","join","keys","obj","unexpectedKeys","Object","filter","key","expectedFlags","prefixCommand","unexpectedFlags","intendedFlags","entries","map","cmd","concat","trim"],"mappings":";;;;;;;;;;;IA6CgBA,0BAA0B;eAA1BA;;IAOAC,6BAA6B;eAA7BA;;IA/CAC,sBAAsB;eAAtBA;;;wBALa;AAE7B,MAAMC,QAAQC,QAAQ,SAAS;AAGxB,SAASF,uBAAuBG,IAAc;IAKnD,MAAMC,WAAqB,EAAE;IAC7B,MAAMC,QAAiC,CAAC;IAExC,KAAK,MAAMC,OAAOH,KAAM;QACtB,IAAI,CAACG,IAAIC,UAAU,CAAC,MAAM;YACxBH,SAASI,IAAI,CAACF;QAChB,OAAO,IAAIA,QAAQ,MAAM;YACvB;QACF,OAAO;YACLD,KAAK,CAACC,IAAI,GAAG;QACf;IACF;IAEA,2FAA2F;IAC3F,MAAMG,SAAmB,EAAE;IAE3B,MAAMC,gBAAgBP,KAAKQ,OAAO,CAAC;IACnC,IAAID,gBAAgB,CAAC,KAAKP,KAAKS,MAAM,GAAGF,gBAAgB,GAAG;QACzD,MAAMG,YAAYV,KAAKW,KAAK,CAACJ,gBAAgB;QAC7C,IAAIG,UAAUE,QAAQ,CAAC,OAAO;YAC5B,MAAM,IAAIC,oBAAY,CAAC,YAAY;QACrC;QACAP,OAAOD,IAAI,IAAIK;QACfZ,MAAM,sBAAsBQ,OAAOQ,IAAI,CAAC;IAC1C;IAEAhB,MAAM,CAAC,qDAAqD,CAAC,EAAEG,UAAUC,OAAOI;IAEhF,OAAO;QACLL;QACAC;QACAI;IACF;AACF;AAEO,SAASX,2BAA2BoB,IAAc,EAAEC,GAAwB;IACjF,MAAMC,iBAAiBC,OAAOH,IAAI,CAACC,KAAKG,MAAM,CAAC,CAACC,MAAQ,CAACL,KAAKH,QAAQ,CAACQ;IACvE,IAAIH,eAAeR,MAAM,GAAG,GAAG;QAC7B,MAAM,IAAII,oBAAY,CAAC,YAAY,CAAC,YAAY,EAAEI,eAAeH,IAAI,CAAC,OAAO;IAC/E;AACF;AAEO,SAASlB,8BACdyB,aAAuB,EACvB,EAAEf,MAAM,EAAEJ,KAAK,EAAED,QAAQ,EAA6C,EACtEqB,gBAAgB,EAAE;IAElB,MAAMC,kBAAkBL,OAAOH,IAAI,CAACb,OAAOiB,MAAM,CAAC,CAACC,MAAQ,CAACC,cAAcT,QAAQ,CAACQ;IAEnF,IAAIG,gBAAgBd,MAAM,GAAG,GAAG;QAC9B,MAAMe,gBAAgBN,OAAOO,OAAO,CAACvB,OAClCiB,MAAM,CAAC,CAAC,CAACC,IAAI,GAAKC,cAAcT,QAAQ,CAACQ,MACzCM,GAAG,CAAC,CAAC,CAACN,IAAI,GAAKA;QAElB,MAAMO,MAAM;YACVL;eACGrB;eACAuB;YACH;eACGlB,OAAOsB,MAAM,CAACL;SAClB,CAACT,IAAI,CAAC;QAEP,MAAM,IAAID,oBAAY,CACpB,YACA,CAAC,YAAY,EAAEU,gBAAgBT,IAAI,CAAC,MAAM,gBAAgB,EAAEa,IAAIE,IAAI,IAAI;IAE5E;AACF"}