@expo/cli 0.22.25 → 0.22.27

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 (724) hide show
  1. package/build/bin/cli +91 -93
  2. package/build/bin/cli.map +1 -1
  3. package/build/metro-require/require.js +52 -53
  4. package/build/src/api/endpoint.js +2 -6
  5. package/build/src/api/endpoint.js.map +1 -1
  6. package/build/src/api/getExpoGoIntermediateCertificate.js +3 -5
  7. package/build/src/api/getExpoGoIntermediateCertificate.js.map +1 -1
  8. package/build/src/api/getExpoSchema.js +12 -16
  9. package/build/src/api/getExpoSchema.js.map +1 -1
  10. package/build/src/api/getNativeModuleVersions.js +4 -6
  11. package/build/src/api/getNativeModuleVersions.js.map +1 -1
  12. package/build/src/api/getProjectDevelopmentCertificate.js +3 -5
  13. package/build/src/api/getProjectDevelopmentCertificate.js.map +1 -1
  14. package/build/src/api/getVersions.js +5 -7
  15. package/build/src/api/getVersions.js.map +1 -1
  16. package/build/src/api/graphql/client.js +26 -32
  17. package/build/src/api/graphql/client.js.map +1 -1
  18. package/build/src/api/graphql/queries/AppQuery.js +4 -6
  19. package/build/src/api/graphql/queries/AppQuery.js.map +1 -1
  20. package/build/src/api/graphql/queries/UserQuery.js +3 -5
  21. package/build/src/api/graphql/queries/UserQuery.js.map +1 -1
  22. package/build/src/api/graphql/types/App.js +1 -3
  23. package/build/src/api/graphql/types/App.js.map +1 -1
  24. package/build/src/api/rest/cache/FileSystemResponseCache.js +8 -10
  25. package/build/src/api/rest/cache/FileSystemResponseCache.js.map +1 -1
  26. package/build/src/api/rest/cache/ResponseCache.js +12 -20
  27. package/build/src/api/rest/cache/ResponseCache.js.map +1 -1
  28. package/build/src/api/rest/cache/wrapFetchWithCache.js +11 -13
  29. package/build/src/api/rest/cache/wrapFetchWithCache.js.map +1 -1
  30. package/build/src/api/rest/client.js +35 -53
  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 +3 -5
  34. package/build/src/api/rest/wrapFetchWithBaseUrl.js.map +1 -1
  35. package/build/src/api/rest/wrapFetchWithOffline.js +3 -5
  36. package/build/src/api/rest/wrapFetchWithOffline.js.map +1 -1
  37. package/build/src/api/rest/wrapFetchWithProgress.js +7 -11
  38. package/build/src/api/rest/wrapFetchWithProgress.js.map +1 -1
  39. package/build/src/api/rest/wrapFetchWithProxy.js +3 -5
  40. package/build/src/api/rest/wrapFetchWithProxy.js.map +1 -1
  41. package/build/src/api/rest/wrapFetchWithUserAgent.js +6 -8
  42. package/build/src/api/rest/wrapFetchWithUserAgent.js.map +1 -1
  43. package/build/src/api/settings.js +5 -7
  44. package/build/src/api/settings.js.map +1 -1
  45. package/build/src/api/updateDevelopmentSession.js +17 -23
  46. package/build/src/api/updateDevelopmentSession.js.map +1 -1
  47. package/build/src/api/user/UserSettings.js +21 -39
  48. package/build/src/api/user/UserSettings.js.map +1 -1
  49. package/build/src/api/user/actions.js +21 -27
  50. package/build/src/api/user/actions.js.map +1 -1
  51. package/build/src/api/user/expoSsoLauncher.js +26 -30
  52. package/build/src/api/user/expoSsoLauncher.js.map +1 -1
  53. package/build/src/api/user/otp.js +29 -35
  54. package/build/src/api/user/otp.js.map +1 -1
  55. package/build/src/api/user/user.js +30 -44
  56. package/build/src/api/user/user.js.map +1 -1
  57. package/build/src/config/configAsync.js +23 -29
  58. package/build/src/config/configAsync.js.map +1 -1
  59. package/build/src/config/index.js +21 -25
  60. package/build/src/config/index.js.map +1 -1
  61. package/build/src/customize/customizeAsync.js +6 -8
  62. package/build/src/customize/customizeAsync.js.map +1 -1
  63. package/build/src/customize/generate.js +16 -20
  64. package/build/src/customize/generate.js.map +1 -1
  65. package/build/src/customize/index.js +12 -14
  66. package/build/src/customize/index.js.map +1 -1
  67. package/build/src/customize/resolveOptions.js +2 -4
  68. package/build/src/customize/resolveOptions.js.map +1 -1
  69. package/build/src/customize/templates.js +54 -58
  70. package/build/src/customize/templates.js.map +1 -1
  71. package/build/src/customize/typescript.js +7 -11
  72. package/build/src/customize/typescript.js.map +1 -1
  73. package/build/src/export/createMetadataJson.js +9 -11
  74. package/build/src/export/createMetadataJson.js.map +1 -1
  75. package/build/src/export/embed/exportEager.js +6 -8
  76. package/build/src/export/embed/exportEager.js.map +1 -1
  77. package/build/src/export/embed/exportEmbedAsync.js +61 -71
  78. package/build/src/export/embed/exportEmbedAsync.js.map +1 -1
  79. package/build/src/export/embed/exportServer.js +55 -57
  80. package/build/src/export/embed/exportServer.js.map +1 -1
  81. package/build/src/export/embed/index.js +40 -44
  82. package/build/src/export/embed/index.js.map +1 -1
  83. package/build/src/export/embed/resolveOptions.js +36 -44
  84. package/build/src/export/embed/resolveOptions.js.map +1 -1
  85. package/build/src/export/embed/xcodeCompilerLogger.js +27 -39
  86. package/build/src/export/embed/xcodeCompilerLogger.js.map +1 -1
  87. package/build/src/export/exportApp.js +63 -67
  88. package/build/src/export/exportApp.js.map +1 -1
  89. package/build/src/export/exportAssets.js +27 -35
  90. package/build/src/export/exportAssets.js.map +1 -1
  91. package/build/src/export/exportAsync.js +9 -13
  92. package/build/src/export/exportAsync.js.map +1 -1
  93. package/build/src/export/exportDomComponents.js +45 -53
  94. package/build/src/export/exportDomComponents.js.map +1 -1
  95. package/build/src/export/exportHermes.js +63 -85
  96. package/build/src/export/exportHermes.js.map +1 -1
  97. package/build/src/export/exportStaticAsync.js +62 -72
  98. package/build/src/export/exportStaticAsync.js.map +1 -1
  99. package/build/src/export/favicon.js +27 -33
  100. package/build/src/export/favicon.js.map +1 -1
  101. package/build/src/export/getPublicExpoManifest.js +5 -7
  102. package/build/src/export/getPublicExpoManifest.js.map +1 -1
  103. package/build/src/export/getResolvedLocales.js +9 -11
  104. package/build/src/export/getResolvedLocales.js.map +1 -1
  105. package/build/src/export/html.js +6 -10
  106. package/build/src/export/html.js.map +1 -1
  107. package/build/src/export/index.js +28 -32
  108. package/build/src/export/index.js.map +1 -1
  109. package/build/src/export/metroAssetLocalPath.js +30 -36
  110. package/build/src/export/metroAssetLocalPath.js.map +1 -1
  111. package/build/src/export/persistMetroAssets.js +34 -42
  112. package/build/src/export/persistMetroAssets.js.map +1 -1
  113. package/build/src/export/publicFolder.js +6 -10
  114. package/build/src/export/publicFolder.js.map +1 -1
  115. package/build/src/export/resolveOptions.js +24 -28
  116. package/build/src/export/resolveOptions.js.map +1 -1
  117. package/build/src/export/saveAssets.js +46 -50
  118. package/build/src/export/saveAssets.js.map +1 -1
  119. package/build/src/export/web/exportWebAsync.js +11 -13
  120. package/build/src/export/web/exportWebAsync.js.map +1 -1
  121. package/build/src/export/web/index.js +15 -19
  122. package/build/src/export/web/index.js.map +1 -1
  123. package/build/src/export/web/resolveOptions.js +3 -5
  124. package/build/src/export/web/resolveOptions.js.map +1 -1
  125. package/build/src/export/writeContents.js +2 -4
  126. package/build/src/export/writeContents.js.map +1 -1
  127. package/build/src/graphql/generated.js +274 -400
  128. package/build/src/graphql/generated.js.map +1 -1
  129. package/build/src/install/applyPlugins.js +8 -11
  130. package/build/src/install/applyPlugins.js.map +1 -1
  131. package/build/src/install/checkPackages.js +22 -26
  132. package/build/src/install/checkPackages.js.map +1 -1
  133. package/build/src/install/fixPackages.js +13 -17
  134. package/build/src/install/fixPackages.js.map +1 -1
  135. package/build/src/install/index.js +16 -18
  136. package/build/src/install/index.js.map +1 -1
  137. package/build/src/install/installAsync.js +26 -32
  138. package/build/src/install/installAsync.js.map +1 -1
  139. package/build/src/install/installExpoPackage.js +18 -22
  140. package/build/src/install/installExpoPackage.js.map +1 -1
  141. package/build/src/install/resolveOptions.js +19 -21
  142. package/build/src/install/resolveOptions.js.map +1 -1
  143. package/build/src/install/utils/autoAddConfigPlugins.js +14 -18
  144. package/build/src/install/utils/autoAddConfigPlugins.js.map +1 -1
  145. package/build/src/install/utils/checkPackagesCompatibility.js +11 -13
  146. package/build/src/install/utils/checkPackagesCompatibility.js.map +1 -1
  147. package/build/src/install/utils/parsePackageSpecifier.js +22 -0
  148. package/build/src/install/utils/parsePackageSpecifier.js.map +1 -0
  149. package/build/src/lint/ESlintPrerequisite.js +44 -50
  150. package/build/src/lint/ESlintPrerequisite.js.map +1 -1
  151. package/build/src/lint/index.js +8 -12
  152. package/build/src/lint/index.js.map +1 -1
  153. package/build/src/lint/lintAsync.js +8 -10
  154. package/build/src/lint/lintAsync.js.map +1 -1
  155. package/build/src/log.js +16 -36
  156. package/build/src/log.js.map +1 -1
  157. package/build/src/login/index.js +20 -24
  158. package/build/src/login/index.js.map +1 -1
  159. package/build/src/logout/index.js +7 -11
  160. package/build/src/logout/index.js.map +1 -1
  161. package/build/src/prebuild/clearNativeFolder.js +26 -38
  162. package/build/src/prebuild/clearNativeFolder.js.map +1 -1
  163. package/build/src/prebuild/configureProjectAsync.js +14 -18
  164. package/build/src/prebuild/configureProjectAsync.js.map +1 -1
  165. package/build/src/prebuild/copyTemplateFiles.js +13 -17
  166. package/build/src/prebuild/copyTemplateFiles.js.map +1 -1
  167. package/build/src/prebuild/ensureConfigAsync.js +4 -6
  168. package/build/src/prebuild/ensureConfigAsync.js.map +1 -1
  169. package/build/src/prebuild/index.js +32 -36
  170. package/build/src/prebuild/index.js.map +1 -1
  171. package/build/src/prebuild/prebuildAsync.js +25 -29
  172. package/build/src/prebuild/prebuildAsync.js.map +1 -1
  173. package/build/src/prebuild/renameTemplateAppName.js +40 -46
  174. package/build/src/prebuild/renameTemplateAppName.js.map +1 -1
  175. package/build/src/prebuild/resolveOptions.js +52 -66
  176. package/build/src/prebuild/resolveOptions.js.map +1 -1
  177. package/build/src/prebuild/resolveTemplate.js +32 -36
  178. package/build/src/prebuild/resolveTemplate.js.map +1 -1
  179. package/build/src/prebuild/updateFromTemplate.js +13 -19
  180. package/build/src/prebuild/updateFromTemplate.js.map +1 -1
  181. package/build/src/prebuild/updatePackageJson.js +39 -53
  182. package/build/src/prebuild/updatePackageJson.js.map +1 -1
  183. package/build/src/prebuild/validateTemplatePlatforms.js +8 -12
  184. package/build/src/prebuild/validateTemplatePlatforms.js.map +1 -1
  185. package/build/src/register/index.js +7 -11
  186. package/build/src/register/index.js.map +1 -1
  187. package/build/src/register/registerAsync.js +3 -5
  188. package/build/src/register/registerAsync.js.map +1 -1
  189. package/build/src/run/android/index.js +32 -36
  190. package/build/src/run/android/index.js.map +1 -1
  191. package/build/src/run/android/resolveDevice.js +8 -10
  192. package/build/src/run/android/resolveDevice.js.map +1 -1
  193. package/build/src/run/android/resolveGradlePropsAsync.js +16 -18
  194. package/build/src/run/android/resolveGradlePropsAsync.js.map +1 -1
  195. package/build/src/run/android/resolveInstallApkName.js +15 -17
  196. package/build/src/run/android/resolveInstallApkName.js.map +1 -1
  197. package/build/src/run/android/resolveLaunchProps.js +10 -12
  198. package/build/src/run/android/resolveLaunchProps.js.map +1 -1
  199. package/build/src/run/android/resolveOptions.js +2 -4
  200. package/build/src/run/android/resolveOptions.js.map +1 -1
  201. package/build/src/run/android/runAndroidAsync.js +21 -23
  202. package/build/src/run/android/runAndroidAsync.js.map +1 -1
  203. package/build/src/run/ensureNativeProject.js +5 -7
  204. package/build/src/run/ensureNativeProject.js.map +1 -1
  205. package/build/src/run/hints.js +7 -13
  206. package/build/src/run/hints.js.map +1 -1
  207. package/build/src/run/index.js +23 -27
  208. package/build/src/run/index.js.map +1 -1
  209. package/build/src/run/ios/XcodeBuild.js +56 -74
  210. package/build/src/run/ios/XcodeBuild.js.map +1 -1
  211. package/build/src/run/ios/XcodeBuild.types.js.map +1 -1
  212. package/build/src/run/ios/appleDevice/AppleDevice.js +63 -69
  213. package/build/src/run/ios/appleDevice/AppleDevice.js.map +1 -1
  214. package/build/src/run/ios/appleDevice/ClientManager.js +26 -29
  215. package/build/src/run/ios/appleDevice/ClientManager.js.map +1 -1
  216. package/build/src/run/ios/appleDevice/client/AFCClient.js +25 -28
  217. package/build/src/run/ios/appleDevice/client/AFCClient.js.map +1 -1
  218. package/build/src/run/ios/appleDevice/client/DebugserverClient.js +26 -29
  219. package/build/src/run/ios/appleDevice/client/DebugserverClient.js.map +1 -1
  220. package/build/src/run/ios/appleDevice/client/InstallationProxyClient.js +21 -22
  221. package/build/src/run/ios/appleDevice/client/InstallationProxyClient.js.map +1 -1
  222. package/build/src/run/ios/appleDevice/client/LockdowndClient.js +29 -32
  223. package/build/src/run/ios/appleDevice/client/LockdowndClient.js.map +1 -1
  224. package/build/src/run/ios/appleDevice/client/MobileImageMounterClient.js +24 -28
  225. package/build/src/run/ios/appleDevice/client/MobileImageMounterClient.js.map +1 -1
  226. package/build/src/run/ios/appleDevice/client/ServiceClient.js +4 -7
  227. package/build/src/run/ios/appleDevice/client/ServiceClient.js.map +1 -1
  228. package/build/src/run/ios/appleDevice/client/UsbmuxdClient.js +27 -28
  229. package/build/src/run/ios/appleDevice/client/UsbmuxdClient.js.map +1 -1
  230. package/build/src/run/ios/appleDevice/installOnDeviceAsync.js +17 -23
  231. package/build/src/run/ios/appleDevice/installOnDeviceAsync.js.map +1 -1
  232. package/build/src/run/ios/appleDevice/protocol/AFCProtocol.js +132 -146
  233. package/build/src/run/ios/appleDevice/protocol/AFCProtocol.js.map +1 -1
  234. package/build/src/run/ios/appleDevice/protocol/AbstractProtocol.js +21 -29
  235. package/build/src/run/ios/appleDevice/protocol/AbstractProtocol.js.map +1 -1
  236. package/build/src/run/ios/appleDevice/protocol/GDBProtocol.js +21 -29
  237. package/build/src/run/ios/appleDevice/protocol/GDBProtocol.js.map +1 -1
  238. package/build/src/run/ios/appleDevice/protocol/LockdownProtocol.js +22 -34
  239. package/build/src/run/ios/appleDevice/protocol/LockdownProtocol.js.map +1 -1
  240. package/build/src/run/ios/appleDevice/protocol/UsbmuxProtocol.js +17 -27
  241. package/build/src/run/ios/appleDevice/protocol/UsbmuxProtocol.js.map +1 -1
  242. package/build/src/run/ios/codeSigning/Security.js +39 -53
  243. package/build/src/run/ios/codeSigning/Security.js.map +1 -1
  244. package/build/src/run/ios/codeSigning/configureCodeSigning.js +9 -13
  245. package/build/src/run/ios/codeSigning/configureCodeSigning.js.map +1 -1
  246. package/build/src/run/ios/codeSigning/resolveCertificateSigningIdentity.js +19 -27
  247. package/build/src/run/ios/codeSigning/resolveCertificateSigningIdentity.js.map +1 -1
  248. package/build/src/run/ios/codeSigning/settings.js +5 -9
  249. package/build/src/run/ios/codeSigning/settings.js.map +1 -1
  250. package/build/src/run/ios/codeSigning/simulatorCodeSigning.js +12 -14
  251. package/build/src/run/ios/codeSigning/simulatorCodeSigning.js.map +1 -1
  252. package/build/src/run/ios/codeSigning/xcodeCodeSigning.js +21 -27
  253. package/build/src/run/ios/codeSigning/xcodeCodeSigning.js.map +1 -1
  254. package/build/src/run/ios/index.js +36 -40
  255. package/build/src/run/ios/index.js.map +1 -1
  256. package/build/src/run/ios/launchApp.js +17 -23
  257. package/build/src/run/ios/launchApp.js.map +1 -1
  258. package/build/src/run/ios/options/appleDestinations.js +36 -38
  259. package/build/src/run/ios/options/appleDestinations.js.map +1 -1
  260. package/build/src/run/ios/options/promptDevice.js +16 -20
  261. package/build/src/run/ios/options/promptDevice.js.map +1 -1
  262. package/build/src/run/ios/options/resolveDevice.js +24 -30
  263. package/build/src/run/ios/options/resolveDevice.js.map +1 -1
  264. package/build/src/run/ios/options/resolveNativeScheme.js +23 -31
  265. package/build/src/run/ios/options/resolveNativeScheme.js.map +1 -1
  266. package/build/src/run/ios/options/resolveOptions.js +5 -7
  267. package/build/src/run/ios/options/resolveOptions.js.map +1 -1
  268. package/build/src/run/ios/options/resolveXcodeProject.js +5 -7
  269. package/build/src/run/ios/options/resolveXcodeProject.js.map +1 -1
  270. package/build/src/run/ios/runIosAsync.js +44 -48
  271. package/build/src/run/ios/runIosAsync.js.map +1 -1
  272. package/build/src/run/ios/validateExternalBinary.js +22 -24
  273. package/build/src/run/ios/validateExternalBinary.js.map +1 -1
  274. package/build/src/run/resolveBundlerProps.js +2 -4
  275. package/build/src/run/resolveBundlerProps.js.map +1 -1
  276. package/build/src/run/startBundler.js +12 -16
  277. package/build/src/run/startBundler.js.map +1 -1
  278. package/build/src/serve/index.js +16 -20
  279. package/build/src/serve/index.js.map +1 -1
  280. package/build/src/serve/serveAsync.js +32 -36
  281. package/build/src/serve/serveAsync.js.map +1 -1
  282. package/build/src/start/detectDevClient.js +9 -13
  283. package/build/src/start/detectDevClient.js.map +1 -1
  284. package/build/src/start/doctor/Prerequisite.js +7 -12
  285. package/build/src/start/doctor/Prerequisite.js.map +1 -1
  286. package/build/src/start/doctor/SecurityBinPrerequisite.js +11 -13
  287. package/build/src/start/doctor/SecurityBinPrerequisite.js.map +1 -1
  288. package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js +19 -23
  289. package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js.map +1 -1
  290. package/build/src/start/doctor/apple/XcodeDeveloperDiskImagePrerequisite.js +19 -23
  291. package/build/src/start/doctor/apple/XcodeDeveloperDiskImagePrerequisite.js.map +1 -1
  292. package/build/src/start/doctor/apple/XcodePrerequisite.js +45 -51
  293. package/build/src/start/doctor/apple/XcodePrerequisite.js.map +1 -1
  294. package/build/src/start/doctor/apple/XcrunPrerequisite.js +16 -18
  295. package/build/src/start/doctor/apple/XcrunPrerequisite.js.map +1 -1
  296. package/build/src/start/doctor/dependencies/bundledNativeModules.js +19 -23
  297. package/build/src/start/doctor/dependencies/bundledNativeModules.js.map +1 -1
  298. package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js +25 -31
  299. package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js.map +1 -1
  300. package/build/src/start/doctor/dependencies/getMissingPackages.js +17 -25
  301. package/build/src/start/doctor/dependencies/getMissingPackages.js.map +1 -1
  302. package/build/src/start/doctor/dependencies/getVersionedPackages.js +32 -40
  303. package/build/src/start/doctor/dependencies/getVersionedPackages.js.map +1 -1
  304. package/build/src/start/doctor/dependencies/resolvePackages.js +26 -32
  305. package/build/src/start/doctor/dependencies/resolvePackages.js.map +1 -1
  306. package/build/src/start/doctor/dependencies/validateDependenciesVersions.js +31 -41
  307. package/build/src/start/doctor/dependencies/validateDependenciesVersions.js.map +1 -1
  308. package/build/src/start/doctor/ngrok/ExternalModule.js +29 -34
  309. package/build/src/start/doctor/ngrok/ExternalModule.js.map +1 -1
  310. package/build/src/start/doctor/ngrok/NgrokResolver.js +8 -12
  311. package/build/src/start/doctor/ngrok/NgrokResolver.js.map +1 -1
  312. package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js +28 -32
  313. package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js.map +1 -1
  314. package/build/src/start/doctor/typescript/updateTSConfig.js +17 -23
  315. package/build/src/start/doctor/typescript/updateTSConfig.js.map +1 -1
  316. package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js +27 -33
  317. package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js.map +1 -1
  318. package/build/src/start/index.js +42 -46
  319. package/build/src/start/index.js.map +1 -1
  320. package/build/src/start/interface/KeyPressHandler.js +14 -18
  321. package/build/src/start/interface/KeyPressHandler.js.map +1 -1
  322. package/build/src/start/interface/commandsTable.js +80 -94
  323. package/build/src/start/interface/commandsTable.js.map +1 -1
  324. package/build/src/start/interface/interactiveActions.js +40 -44
  325. package/build/src/start/interface/interactiveActions.js.map +1 -1
  326. package/build/src/start/interface/startInterface.js +61 -65
  327. package/build/src/start/interface/startInterface.js.map +1 -1
  328. package/build/src/start/platforms/AppIdResolver.js +4 -6
  329. package/build/src/start/platforms/AppIdResolver.js.map +1 -1
  330. package/build/src/start/platforms/DeviceManager.js +6 -10
  331. package/build/src/start/platforms/DeviceManager.js.map +1 -1
  332. package/build/src/start/platforms/ExpoGoInstaller.js +20 -25
  333. package/build/src/start/platforms/ExpoGoInstaller.js.map +1 -1
  334. package/build/src/start/platforms/PlatformManager.js +15 -17
  335. package/build/src/start/platforms/PlatformManager.js.map +1 -1
  336. package/build/src/start/platforms/android/ADBServer.js +35 -39
  337. package/build/src/start/platforms/android/ADBServer.js.map +1 -1
  338. package/build/src/start/platforms/android/AndroidAppIdResolver.js +16 -18
  339. package/build/src/start/platforms/android/AndroidAppIdResolver.js.map +1 -1
  340. package/build/src/start/platforms/android/AndroidDeviceManager.js +20 -24
  341. package/build/src/start/platforms/android/AndroidDeviceManager.js.map +1 -1
  342. package/build/src/start/platforms/android/AndroidPlatformManager.js +17 -17
  343. package/build/src/start/platforms/android/AndroidPlatformManager.js.map +1 -1
  344. package/build/src/start/platforms/android/AndroidSdk.js +9 -11
  345. package/build/src/start/platforms/android/AndroidSdk.js.map +1 -1
  346. package/build/src/start/platforms/android/activateWindow.js +22 -26
  347. package/build/src/start/platforms/android/activateWindow.js.map +1 -1
  348. package/build/src/start/platforms/android/adb.js +83 -121
  349. package/build/src/start/platforms/android/adb.js.map +1 -1
  350. package/build/src/start/platforms/android/adbReverse.js +12 -20
  351. package/build/src/start/platforms/android/adbReverse.js.map +1 -1
  352. package/build/src/start/platforms/android/emulator.js +26 -36
  353. package/build/src/start/platforms/android/emulator.js.map +1 -1
  354. package/build/src/start/platforms/android/getDevices.js +5 -7
  355. package/build/src/start/platforms/android/getDevices.js.map +1 -1
  356. package/build/src/start/platforms/android/gradle.js +28 -36
  357. package/build/src/start/platforms/android/gradle.js.map +1 -1
  358. package/build/src/start/platforms/android/promptAndroidDevice.js +15 -19
  359. package/build/src/start/platforms/android/promptAndroidDevice.js.map +1 -1
  360. package/build/src/start/platforms/ios/AppleAppIdResolver.js +19 -21
  361. package/build/src/start/platforms/ios/AppleAppIdResolver.js.map +1 -1
  362. package/build/src/start/platforms/ios/AppleDeviceManager.js +31 -37
  363. package/build/src/start/platforms/ios/AppleDeviceManager.js.map +1 -1
  364. package/build/src/start/platforms/ios/ApplePlatformManager.js +12 -12
  365. package/build/src/start/platforms/ios/ApplePlatformManager.js.map +1 -1
  366. package/build/src/start/platforms/ios/assertSystemRequirements.js +7 -9
  367. package/build/src/start/platforms/ios/assertSystemRequirements.js.map +1 -1
  368. package/build/src/start/platforms/ios/devicectl.js +73 -87
  369. package/build/src/start/platforms/ios/devicectl.js.map +1 -1
  370. package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js +18 -22
  371. package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js.map +1 -1
  372. package/build/src/start/platforms/ios/getBestSimulator.js +19 -29
  373. package/build/src/start/platforms/ios/getBestSimulator.js.map +1 -1
  374. package/build/src/start/platforms/ios/promptAppleDevice.js +10 -14
  375. package/build/src/start/platforms/ios/promptAppleDevice.js.map +1 -1
  376. package/build/src/start/platforms/ios/simctl.js +74 -102
  377. package/build/src/start/platforms/ios/simctl.js.map +1 -1
  378. package/build/src/start/platforms/ios/simctlLogging.js +52 -57
  379. package/build/src/start/platforms/ios/simctlLogging.js.map +1 -1
  380. package/build/src/start/platforms/ios/xcrun.js +18 -22
  381. package/build/src/start/platforms/ios/xcrun.js.map +1 -1
  382. package/build/src/start/project/devices.js +9 -19
  383. package/build/src/start/project/devices.js.map +1 -1
  384. package/build/src/start/project/dotExpo.js +11 -15
  385. package/build/src/start/project/dotExpo.js.map +1 -1
  386. package/build/src/start/project/settings.js +2 -4
  387. package/build/src/start/project/settings.js.map +1 -1
  388. package/build/src/start/resolveOptions.js +40 -48
  389. package/build/src/start/resolveOptions.js.map +1 -1
  390. package/build/src/start/server/AsyncNgrok.js +51 -55
  391. package/build/src/start/server/AsyncNgrok.js.map +1 -1
  392. package/build/src/start/server/AsyncWsTunnel.js +36 -40
  393. package/build/src/start/server/AsyncWsTunnel.js.map +1 -1
  394. package/build/src/start/server/BundlerDevServer.js +79 -81
  395. package/build/src/start/server/BundlerDevServer.js.map +1 -1
  396. package/build/src/start/server/DevServerManager.js +38 -42
  397. package/build/src/start/server/DevServerManager.js.map +1 -1
  398. package/build/src/start/server/DevToolsPluginManager.js +14 -18
  399. package/build/src/start/server/DevToolsPluginManager.js.map +1 -1
  400. package/build/src/start/server/DevelopmentSession.js +14 -18
  401. package/build/src/start/server/DevelopmentSession.js.map +1 -1
  402. package/build/src/start/server/ReactDevToolsProxy.js +10 -16
  403. package/build/src/start/server/ReactDevToolsProxy.js.map +1 -1
  404. package/build/src/start/server/UrlCreator.js +33 -36
  405. package/build/src/start/server/UrlCreator.js.map +1 -1
  406. package/build/src/start/server/getStaticRenderFunctions.js +21 -29
  407. package/build/src/start/server/getStaticRenderFunctions.js.map +1 -1
  408. package/build/src/start/server/metro/DevToolsPluginWebsocketEndpoint.js +4 -6
  409. package/build/src/start/server/metro/DevToolsPluginWebsocketEndpoint.js.map +1 -1
  410. package/build/src/start/server/metro/MetroBundlerDevServer.js +275 -269
  411. package/build/src/start/server/metro/MetroBundlerDevServer.js.map +1 -1
  412. package/build/src/start/server/metro/MetroTerminalReporter.js +56 -63
  413. package/build/src/start/server/metro/MetroTerminalReporter.js.map +1 -1
  414. package/build/src/start/server/metro/TerminalReporter.js +33 -39
  415. package/build/src/start/server/metro/TerminalReporter.js.map +1 -1
  416. package/build/src/start/server/metro/TerminalReporter.types.js.map +1 -1
  417. package/build/src/start/server/metro/createExpoMetroResolver.js +40 -46
  418. package/build/src/start/server/metro/createExpoMetroResolver.js.map +1 -1
  419. package/build/src/start/server/metro/createJResolver.js +28 -32
  420. package/build/src/start/server/metro/createJResolver.js.map +1 -1
  421. package/build/src/start/server/metro/createServerComponentsMiddleware.js +92 -96
  422. package/build/src/start/server/metro/createServerComponentsMiddleware.js.map +1 -1
  423. package/build/src/start/server/metro/createServerRouteMiddleware.js +30 -32
  424. package/build/src/start/server/metro/createServerRouteMiddleware.js.map +1 -1
  425. package/build/src/start/server/metro/debugging/AtlasPrerequisite.js +11 -13
  426. package/build/src/start/server/metro/debugging/AtlasPrerequisite.js.map +1 -1
  427. package/build/src/start/server/metro/debugging/MessageHandler.js +1 -3
  428. package/build/src/start/server/metro/debugging/MessageHandler.js.map +1 -1
  429. package/build/src/start/server/metro/debugging/attachAtlas.js +22 -26
  430. package/build/src/start/server/metro/debugging/attachAtlas.js.map +1 -1
  431. package/build/src/start/server/metro/debugging/createDebugMiddleware.js +17 -19
  432. package/build/src/start/server/metro/debugging/createDebugMiddleware.js.map +1 -1
  433. package/build/src/start/server/metro/debugging/createHandlersFactory.js +31 -25
  434. package/build/src/start/server/metro/debugging/createHandlersFactory.js.map +1 -1
  435. package/build/src/start/server/metro/debugging/getDebuggerType.js +4 -6
  436. package/build/src/start/server/metro/debugging/getDebuggerType.js.map +1 -1
  437. package/build/src/start/server/metro/debugging/messageHandlers/NetworkResponse.js +8 -14
  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 +5 -7
  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 +6 -8
  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 +5 -7
  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 +12 -14
  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 +10 -14
  448. package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeGetProperties.js.map +1 -1
  449. package/build/src/start/server/metro/debugging/pageIsSupported.js +4 -6
  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 +16 -18
  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 +21 -23
  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 +21 -23
  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 +2 -4
  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 +2 -4
  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 +4 -8
  463. package/build/src/start/server/metro/dev-server/utils/socketMessages.js.map +1 -1
  464. package/build/src/start/server/metro/externals.js +25 -33
  465. package/build/src/start/server/metro/externals.js.map +1 -1
  466. package/build/src/start/server/metro/fetchRouterManifest.js +12 -16
  467. package/build/src/start/server/metro/fetchRouterManifest.js.map +1 -1
  468. package/build/src/start/server/metro/formatFileCandidates.js +9 -11
  469. package/build/src/start/server/metro/formatFileCandidates.js.map +1 -1
  470. package/build/src/start/server/metro/getCssModulesFromBundler.js +18 -22
  471. package/build/src/start/server/metro/getCssModulesFromBundler.js.map +1 -1
  472. package/build/src/start/server/metro/instantiateMetro.js +79 -85
  473. package/build/src/start/server/metro/instantiateMetro.js.map +1 -1
  474. package/build/src/start/server/metro/log-box/LogBoxLog.js +36 -40
  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 +14 -20
  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 +6 -10
  479. package/build/src/start/server/metro/log-box/formatProjectFilePath.js.map +1 -1
  480. package/build/src/start/server/metro/metroErrorInterface.js +78 -88
  481. package/build/src/start/server/metro/metroErrorInterface.js.map +1 -1
  482. package/build/src/start/server/metro/metroErrors.js +4 -8
  483. package/build/src/start/server/metro/metroErrors.js.map +1 -1
  484. package/build/src/start/server/metro/metroPrivateServer.js +7 -9
  485. package/build/src/start/server/metro/metroPrivateServer.js.map +1 -1
  486. package/build/src/start/server/metro/metroVirtualModules.js +8 -10
  487. package/build/src/start/server/metro/metroVirtualModules.js.map +1 -1
  488. package/build/src/start/server/metro/metroWatchTypeScriptFiles.js +22 -24
  489. package/build/src/start/server/metro/metroWatchTypeScriptFiles.js.map +1 -1
  490. package/build/src/start/server/metro/router.js +32 -48
  491. package/build/src/start/server/metro/router.js.map +1 -1
  492. package/build/src/start/server/metro/runServer-fork.js +22 -24
  493. package/build/src/start/server/metro/runServer-fork.js.map +1 -1
  494. package/build/src/start/server/metro/serializeHtml.js +22 -24
  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 +29 -35
  498. package/build/src/start/server/metro/waitForMetroToObserveTypeScriptFile.js.map +1 -1
  499. package/build/src/start/server/metro/withMetroMultiPlatform.js +139 -149
  500. package/build/src/start/server/metro/withMetroMultiPlatform.js.map +1 -1
  501. package/build/src/start/server/metro/withMetroResolvers.js +39 -49
  502. package/build/src/start/server/metro/withMetroResolvers.js.map +1 -1
  503. package/build/src/start/server/middleware/ContextModuleSourceMapsMiddleware.js +6 -8
  504. package/build/src/start/server/middleware/ContextModuleSourceMapsMiddleware.js.map +1 -1
  505. package/build/src/start/server/middleware/CorsMiddleware.js +15 -17
  506. package/build/src/start/server/middleware/CorsMiddleware.js.map +1 -1
  507. package/build/src/start/server/middleware/CreateFileMiddleware.js +90 -52
  508. package/build/src/start/server/middleware/CreateFileMiddleware.js.map +1 -1
  509. package/build/src/start/server/middleware/DevToolsPluginMiddleware.js +19 -22
  510. package/build/src/start/server/middleware/DevToolsPluginMiddleware.js.map +1 -1
  511. package/build/src/start/server/middleware/DomComponentsMiddleware.js +27 -33
  512. package/build/src/start/server/middleware/DomComponentsMiddleware.js.map +1 -1
  513. package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js +60 -64
  514. package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js.map +1 -1
  515. package/build/src/start/server/middleware/ExpoMiddleware.js +9 -15
  516. package/build/src/start/server/middleware/ExpoMiddleware.js.map +1 -1
  517. package/build/src/start/server/middleware/FaviconMiddleware.js +14 -15
  518. package/build/src/start/server/middleware/FaviconMiddleware.js.map +1 -1
  519. package/build/src/start/server/middleware/HistoryFallbackMiddleware.js +2 -4
  520. package/build/src/start/server/middleware/HistoryFallbackMiddleware.js.map +1 -1
  521. package/build/src/start/server/middleware/InterstitialPageMiddleware.js +31 -34
  522. package/build/src/start/server/middleware/InterstitialPageMiddleware.js.map +1 -1
  523. package/build/src/start/server/middleware/ManifestMiddleware.js +56 -64
  524. package/build/src/start/server/middleware/ManifestMiddleware.js.map +1 -1
  525. package/build/src/start/server/middleware/ReactDevToolsPageMiddleware.js +19 -23
  526. package/build/src/start/server/middleware/ReactDevToolsPageMiddleware.js.map +1 -1
  527. package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js +19 -20
  528. package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js.map +1 -1
  529. package/build/src/start/server/middleware/ServeStaticMiddleware.js +9 -11
  530. package/build/src/start/server/middleware/ServeStaticMiddleware.js.map +1 -1
  531. package/build/src/start/server/middleware/createBuiltinAPIRequestHandler.js +11 -17
  532. package/build/src/start/server/middleware/createBuiltinAPIRequestHandler.js.map +1 -1
  533. package/build/src/start/server/middleware/inspector/CdpClient.js +10 -12
  534. package/build/src/start/server/middleware/inspector/CdpClient.js.map +1 -1
  535. package/build/src/start/server/middleware/inspector/JsInspector.js +27 -35
  536. package/build/src/start/server/middleware/inspector/JsInspector.js.map +1 -1
  537. package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js +19 -21
  538. package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js.map +1 -1
  539. package/build/src/start/server/middleware/inspector/middlwareMutations.js +2 -6
  540. package/build/src/start/server/middleware/inspector/middlwareMutations.js.map +1 -1
  541. package/build/src/start/server/middleware/metroOptions.js +96 -120
  542. package/build/src/start/server/middleware/metroOptions.js.map +1 -1
  543. package/build/src/start/server/middleware/mutations.js +3 -7
  544. package/build/src/start/server/middleware/mutations.js.map +1 -1
  545. package/build/src/start/server/middleware/resolveAssets.js +18 -26
  546. package/build/src/start/server/middleware/resolveAssets.js.map +1 -1
  547. package/build/src/start/server/middleware/resolvePlatform.js +15 -23
  548. package/build/src/start/server/middleware/resolvePlatform.js.map +1 -1
  549. package/build/src/start/server/middleware/resolveRuntimeVersionWithExpoUpdatesAsync.js +9 -11
  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 +8 -10
  553. package/build/src/start/server/openPlatforms.js.map +1 -1
  554. package/build/src/start/server/platformBundlers.js +11 -13
  555. package/build/src/start/server/platformBundlers.js.map +1 -1
  556. package/build/src/start/server/serverLogLikeMetro.js +50 -58
  557. package/build/src/start/server/serverLogLikeMetro.js.map +1 -1
  558. package/build/src/start/server/type-generation/expo-env.js +7 -11
  559. package/build/src/start/server/type-generation/expo-env.js.map +1 -1
  560. package/build/src/start/server/type-generation/routes.js +54 -76
  561. package/build/src/start/server/type-generation/routes.js.map +1 -1
  562. package/build/src/start/server/type-generation/startTypescriptTypeGeneration.js +19 -21
  563. package/build/src/start/server/type-generation/startTypescriptTypeGeneration.js.map +1 -1
  564. package/build/src/start/server/type-generation/tsconfig.js +28 -36
  565. package/build/src/start/server/type-generation/tsconfig.js.map +1 -1
  566. package/build/src/start/server/webTemplate.js +24 -28
  567. package/build/src/start/server/webTemplate.js.map +1 -1
  568. package/build/src/start/server/webpack/WebpackBundlerDevServer.js +46 -52
  569. package/build/src/start/server/webpack/WebpackBundlerDevServer.js.map +1 -1
  570. package/build/src/start/server/webpack/compile.js +11 -15
  571. package/build/src/start/server/webpack/compile.js.map +1 -1
  572. package/build/src/start/server/webpack/formatWebpackMessages.js +26 -28
  573. package/build/src/start/server/webpack/formatWebpackMessages.js.map +1 -1
  574. package/build/src/start/server/webpack/resolveFromProject.js +12 -18
  575. package/build/src/start/server/webpack/resolveFromProject.js.map +1 -1
  576. package/build/src/start/server/webpack/tls.js +12 -18
  577. package/build/src/start/server/webpack/tls.js.map +1 -1
  578. package/build/src/start/startAsync.js +27 -31
  579. package/build/src/start/startAsync.js.map +1 -1
  580. package/build/src/utils/FileNotifier.js +17 -20
  581. package/build/src/utils/FileNotifier.js.map +1 -1
  582. package/build/src/utils/ansi.js +5 -7
  583. package/build/src/utils/ansi.js.map +1 -1
  584. package/build/src/utils/args.js +14 -24
  585. package/build/src/utils/args.js.map +1 -1
  586. package/build/src/utils/array.js +6 -18
  587. package/build/src/utils/array.js.map +1 -1
  588. package/build/src/utils/cocoapods.js +46 -54
  589. package/build/src/utils/cocoapods.js.map +1 -1
  590. package/build/src/utils/codesigning.js +68 -78
  591. package/build/src/utils/codesigning.js.map +1 -1
  592. package/build/src/utils/createFileTransform.js +12 -16
  593. package/build/src/utils/createFileTransform.js.map +1 -1
  594. package/build/src/utils/createTempPath.js +13 -17
  595. package/build/src/utils/createTempPath.js.map +1 -1
  596. package/build/src/utils/delay.js +6 -12
  597. package/build/src/utils/delay.js.map +1 -1
  598. package/build/src/utils/dir.js +28 -46
  599. package/build/src/utils/dir.js.map +1 -1
  600. package/build/src/utils/downloadAppAsync.js +8 -10
  601. package/build/src/utils/downloadAppAsync.js.map +1 -1
  602. package/build/src/utils/downloadExpoGoAsync.js +21 -25
  603. package/build/src/utils/downloadExpoGoAsync.js.map +1 -1
  604. package/build/src/utils/editor.js +35 -41
  605. package/build/src/utils/editor.js.map +1 -1
  606. package/build/src/utils/env.js +59 -63
  607. package/build/src/utils/env.js.map +1 -1
  608. package/build/src/utils/errors.js +30 -37
  609. package/build/src/utils/errors.js.map +1 -1
  610. package/build/src/utils/exit.js +31 -35
  611. package/build/src/utils/exit.js.map +1 -1
  612. package/build/src/utils/expoUpdatesCli.js +22 -32
  613. package/build/src/utils/expoUpdatesCli.js.map +1 -1
  614. package/build/src/utils/fetch.js +4 -8
  615. package/build/src/utils/fetch.js.map +1 -1
  616. package/build/src/utils/filePath.js +6 -10
  617. package/build/src/utils/filePath.js.map +1 -1
  618. package/build/src/utils/findUp.js +9 -13
  619. package/build/src/utils/findUp.js.map +1 -1
  620. package/build/src/utils/fn.js +2 -6
  621. package/build/src/utils/fn.js.map +1 -1
  622. package/build/src/utils/getOrPromptApplicationId.js +26 -32
  623. package/build/src/utils/getOrPromptApplicationId.js.map +1 -1
  624. package/build/src/utils/getRunningProcess.js +21 -29
  625. package/build/src/utils/getRunningProcess.js.map +1 -1
  626. package/build/src/utils/git.js +20 -26
  627. package/build/src/utils/git.js.map +1 -1
  628. package/build/src/utils/glob.js +4 -8
  629. package/build/src/utils/glob.js.map +1 -1
  630. package/build/src/utils/interactive.js +1 -3
  631. package/build/src/utils/interactive.js.map +1 -1
  632. package/build/src/utils/ip.js +19 -21
  633. package/build/src/utils/ip.js.map +1 -1
  634. package/build/src/utils/isModuleSymlinked.js +9 -11
  635. package/build/src/utils/isModuleSymlinked.js.map +1 -1
  636. package/build/src/utils/jsonSchemaDeref.js +18 -20
  637. package/build/src/utils/jsonSchemaDeref.js.map +1 -1
  638. package/build/src/utils/link.js +13 -17
  639. package/build/src/utils/link.js.map +1 -1
  640. package/build/src/utils/mergeGitIgnorePaths.js +28 -46
  641. package/build/src/utils/mergeGitIgnorePaths.js.map +1 -1
  642. package/build/src/utils/modifyConfigAsync.js +10 -16
  643. package/build/src/utils/modifyConfigAsync.js.map +1 -1
  644. package/build/src/utils/modifyConfigPlugins.js +6 -10
  645. package/build/src/utils/modifyConfigPlugins.js.map +1 -1
  646. package/build/src/utils/nodeEnv.js +6 -12
  647. package/build/src/utils/nodeEnv.js.map +1 -1
  648. package/build/src/utils/nodeModules.js +8 -10
  649. package/build/src/utils/nodeModules.js.map +1 -1
  650. package/build/src/utils/npm.js +36 -50
  651. package/build/src/utils/npm.js.map +1 -1
  652. package/build/src/utils/obj.js +5 -11
  653. package/build/src/utils/obj.js.map +1 -1
  654. package/build/src/utils/open.js +8 -10
  655. package/build/src/utils/open.js.map +1 -1
  656. package/build/src/utils/ora.js +7 -13
  657. package/build/src/utils/ora.js.map +1 -1
  658. package/build/src/utils/plist.js +15 -21
  659. package/build/src/utils/plist.js.map +1 -1
  660. package/build/src/utils/port.js +33 -43
  661. package/build/src/utils/port.js.map +1 -1
  662. package/build/src/utils/profile.js +7 -11
  663. package/build/src/utils/profile.js.map +1 -1
  664. package/build/src/utils/progress.js +5 -11
  665. package/build/src/utils/progress.js.map +1 -1
  666. package/build/src/utils/prompts.js +29 -47
  667. package/build/src/utils/prompts.js.map +1 -1
  668. package/build/src/utils/resolveArgs.js +24 -36
  669. package/build/src/utils/resolveArgs.js.map +1 -1
  670. package/build/src/utils/scheme.js +32 -40
  671. package/build/src/utils/scheme.js.map +1 -1
  672. package/build/src/utils/stream.js +3 -5
  673. package/build/src/utils/stream.js.map +1 -1
  674. package/build/src/utils/strings.js +4 -6
  675. package/build/src/utils/strings.js.map +1 -1
  676. package/build/src/utils/tar.js +15 -19
  677. package/build/src/utils/tar.js.map +1 -1
  678. package/build/src/utils/telemetry/Telemetry.js +27 -29
  679. package/build/src/utils/telemetry/Telemetry.js.map +1 -1
  680. package/build/src/utils/telemetry/clients/FetchClient.js +13 -15
  681. package/build/src/utils/telemetry/clients/FetchClient.js.map +1 -1
  682. package/build/src/utils/telemetry/clients/FetchDetachedClient.js +22 -26
  683. package/build/src/utils/telemetry/clients/FetchDetachedClient.js.map +1 -1
  684. package/build/src/utils/telemetry/clients/RudderClient.js +8 -10
  685. package/build/src/utils/telemetry/clients/RudderClient.js.map +1 -1
  686. package/build/src/utils/telemetry/clients/RudderDetachedClient.js +22 -26
  687. package/build/src/utils/telemetry/clients/RudderDetachedClient.js.map +1 -1
  688. package/build/src/utils/telemetry/clients/flushFetchDetached.js +10 -10
  689. package/build/src/utils/telemetry/clients/flushFetchDetached.js.map +1 -1
  690. package/build/src/utils/telemetry/clients/flushRudderDetached.js +10 -10
  691. package/build/src/utils/telemetry/clients/flushRudderDetached.js.map +1 -1
  692. package/build/src/utils/telemetry/events.js +2 -4
  693. package/build/src/utils/telemetry/events.js.map +1 -1
  694. package/build/src/utils/telemetry/flushDetached.js.map +1 -1
  695. package/build/src/utils/telemetry/index.js +29 -25
  696. package/build/src/utils/telemetry/index.js.map +1 -1
  697. package/build/src/utils/telemetry/types.js.map +1 -1
  698. package/build/src/utils/telemetry/utils/constants.js +4 -8
  699. package/build/src/utils/telemetry/utils/constants.js.map +1 -1
  700. package/build/src/utils/telemetry/utils/context.js +14 -18
  701. package/build/src/utils/telemetry/utils/context.js.map +1 -1
  702. package/build/src/utils/template.js +4 -6
  703. package/build/src/utils/template.js.map +1 -1
  704. package/build/src/utils/terminal.js +2 -4
  705. package/build/src/utils/terminal.js.map +1 -1
  706. package/build/src/utils/tsconfig/evaluateTsConfig.js +17 -21
  707. package/build/src/utils/tsconfig/evaluateTsConfig.js.map +1 -1
  708. package/build/src/utils/tsconfig/loadTsConfigPaths.js +14 -18
  709. package/build/src/utils/tsconfig/loadTsConfigPaths.js.map +1 -1
  710. package/build/src/utils/tsconfig/matchTsConfigPathAlias.js +5 -7
  711. package/build/src/utils/tsconfig/matchTsConfigPathAlias.js.map +1 -1
  712. package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js +12 -14
  713. package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js.map +1 -1
  714. package/build/src/utils/url.js +13 -23
  715. package/build/src/utils/url.js.map +1 -1
  716. package/build/src/utils/validateApplicationId.js +86 -108
  717. package/build/src/utils/validateApplicationId.js.map +1 -1
  718. package/build/src/utils/variadic.js +16 -22
  719. package/build/src/utils/variadic.js.map +1 -1
  720. package/build/src/whoami/index.js +7 -11
  721. package/build/src/whoami/index.js.map +1 -1
  722. package/build/src/whoami/whoamiAsync.js +7 -11
  723. package/build/src/whoami/whoamiAsync.js.map +1 -1
  724. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/start/server/middleware/DevToolsPluginMiddleware.ts"],"sourcesContent":["import assert from 'assert';\nimport send from 'send';\n\nimport { ExpoMiddleware } from './ExpoMiddleware';\nimport { ServerRequest, ServerResponse } from './server.types';\nimport DevToolsPluginManager, { DevToolsPluginEndpoint } from '../DevToolsPluginManager';\n\nexport { DevToolsPluginEndpoint };\n\nexport class DevToolsPluginMiddleware extends ExpoMiddleware {\n constructor(\n projectRoot: string,\n private readonly pluginManager: DevToolsPluginManager\n ) {\n super(projectRoot, [DevToolsPluginEndpoint]);\n }\n\n override shouldHandleRequest(req: ServerRequest): boolean {\n if (!req.url?.startsWith(DevToolsPluginEndpoint)) {\n return false;\n }\n return true;\n }\n\n async handleRequestAsync(req: ServerRequest, res: ServerResponse): Promise<void> {\n assert(req.headers.host, 'Request headers must include host');\n const { pathname } = new URL(req.url ?? '/', `http://${req.headers.host}`);\n const pluginName = this.queryPossiblePluginName(\n pathname.substring(DevToolsPluginEndpoint.length + 1)\n );\n const webpageRoot = await this.pluginManager.queryPluginWebpageRootAsync(pluginName);\n if (!webpageRoot) {\n res.statusCode = 404;\n res.end();\n return;\n }\n\n const pathInPluginRoot =\n pathname.substring(DevToolsPluginEndpoint.length + pluginName.length + 1) || '/';\n send(req, pathInPluginRoot, { root: webpageRoot }).pipe(res);\n }\n\n private queryPossiblePluginName(pathname: string): string {\n const parts = pathname.split('/');\n if (parts[0][0] === '@' && parts.length > 1) {\n // Scoped package name\n return `${parts[0]}/${parts[1]}`;\n }\n return parts[0];\n }\n}\n"],"names":["DevToolsPluginEndpoint","DevToolsPluginMiddleware","ExpoMiddleware","constructor","projectRoot","pluginManager","shouldHandleRequest","req","url","startsWith","handleRequestAsync","res","assert","headers","host","pathname","URL","pluginName","queryPossiblePluginName","substring","length","webpageRoot","queryPluginWebpageRootAsync","statusCode","end","pathInPluginRoot","send","root","pipe","parts","split"],"mappings":";;;;;;;;;;;IAOSA,sBAAsB;eAAtBA,6CAAsB;;IAElBC,wBAAwB;eAAxBA;;;;gEATM;;;;;;;gEACF;;;;;;gCAEc;uCAE+B;;;;;;AAIvD,MAAMA,iCAAiCC,8BAAc;IAC1DC,YACEC,WAAmB,EACnB,AAAiBC,aAAoC,CACrD;QACA,KAAK,CAACD,aAAa;YAACJ,6CAAsB;SAAC,QAF1BK,gBAAAA;IAGnB;IAESC,oBAAoBC,GAAkB,EAAW;YACnDA;QAAL,IAAI,GAACA,WAAAA,IAAIC,GAAG,qBAAPD,SAASE,UAAU,CAACT,6CAAsB,IAAG;YAChD,OAAO;QACT;QACA,OAAO;IACT;IAEA,MAAMU,mBAAmBH,GAAkB,EAAEI,GAAmB,EAAiB;QAC/EC,IAAAA,iBAAM,EAACL,IAAIM,OAAO,CAACC,IAAI,EAAE;QACzB,MAAM,EAAEC,QAAQ,EAAE,GAAG,IAAIC,IAAIT,IAAIC,GAAG,IAAI,KAAK,CAAC,OAAO,EAAED,IAAIM,OAAO,CAACC,IAAI,EAAE;QACzE,MAAMG,aAAa,IAAI,CAACC,uBAAuB,CAC7CH,SAASI,SAAS,CAACnB,6CAAsB,CAACoB,MAAM,GAAG;QAErD,MAAMC,cAAc,MAAM,IAAI,CAAChB,aAAa,CAACiB,2BAA2B,CAACL;QACzE,IAAI,CAACI,aAAa;YAChBV,IAAIY,UAAU,GAAG;YACjBZ,IAAIa,GAAG;YACP;QACF;QAEA,MAAMC,mBACJV,SAASI,SAAS,CAACnB,6CAAsB,CAACoB,MAAM,GAAGH,WAAWG,MAAM,GAAG,MAAM;QAC/EM,IAAAA,eAAI,EAACnB,KAAKkB,kBAAkB;YAAEE,MAAMN;QAAY,GAAGO,IAAI,CAACjB;IAC1D;IAEQO,wBAAwBH,QAAgB,EAAU;QACxD,MAAMc,QAAQd,SAASe,KAAK,CAAC;QAC7B,IAAID,KAAK,CAAC,EAAE,CAAC,EAAE,KAAK,OAAOA,MAAMT,MAAM,GAAG,GAAG;YAC3C,sBAAsB;YACtB,OAAO,GAAGS,KAAK,CAAC,EAAE,CAAC,CAAC,EAAEA,KAAK,CAAC,EAAE,EAAE;QAClC;QACA,OAAOA,KAAK,CAAC,EAAE;IACjB;AACF"}
1
+ {"version":3,"sources":["../../../../../src/start/server/middleware/DevToolsPluginMiddleware.ts"],"sourcesContent":["import assert from 'assert';\nimport send from 'send';\n\nimport { ExpoMiddleware } from './ExpoMiddleware';\nimport { ServerRequest, ServerResponse } from './server.types';\nimport DevToolsPluginManager, { DevToolsPluginEndpoint } from '../DevToolsPluginManager';\n\nexport { DevToolsPluginEndpoint };\n\nexport class DevToolsPluginMiddleware extends ExpoMiddleware {\n constructor(\n projectRoot: string,\n private readonly pluginManager: DevToolsPluginManager\n ) {\n super(projectRoot, [DevToolsPluginEndpoint]);\n }\n\n override shouldHandleRequest(req: ServerRequest): boolean {\n if (!req.url?.startsWith(DevToolsPluginEndpoint)) {\n return false;\n }\n return true;\n }\n\n async handleRequestAsync(req: ServerRequest, res: ServerResponse): Promise<void> {\n assert(req.headers.host, 'Request headers must include host');\n const { pathname } = new URL(req.url ?? '/', `http://${req.headers.host}`);\n const pluginName = this.queryPossiblePluginName(\n pathname.substring(DevToolsPluginEndpoint.length + 1)\n );\n const webpageRoot = await this.pluginManager.queryPluginWebpageRootAsync(pluginName);\n if (!webpageRoot) {\n res.statusCode = 404;\n res.end();\n return;\n }\n\n const pathInPluginRoot =\n pathname.substring(DevToolsPluginEndpoint.length + pluginName.length + 1) || '/';\n send(req, pathInPluginRoot, { root: webpageRoot }).pipe(res);\n }\n\n private queryPossiblePluginName(pathname: string): string {\n const parts = pathname.split('/');\n if (parts[0][0] === '@' && parts.length > 1) {\n // Scoped package name\n return `${parts[0]}/${parts[1]}`;\n }\n return parts[0];\n }\n}\n"],"names":["DevToolsPluginEndpoint","DevToolsPluginMiddleware","ExpoMiddleware","constructor","projectRoot","pluginManager","shouldHandleRequest","req","url","startsWith","handleRequestAsync","res","assert","headers","host","pathname","URL","pluginName","queryPossiblePluginName","substring","length","webpageRoot","queryPluginWebpageRootAsync","statusCode","end","pathInPluginRoot","send","root","pipe","parts","split"],"mappings":"AAAA;;;;;;;;;;;IAOSA,sBAAsB,MAAtBA,sBAAsB,uBAAA;IAElBC,wBAAwB,MAAxBA,wBAAwB;;;8DATlB,QAAQ;;;;;;;8DACV,MAAM;;;;;;gCAEQ,kBAAkB;uCAEa,0BAA0B;;;;;;AAIjF,MAAMA,wBAAwB,SAASC,eAAc,eAAA;IAC1DC,YACEC,WAAmB,EACFC,aAAoC,CACrD;QACA,KAAK,CAACD,WAAW,EAAE;YAACJ,sBAAsB,uBAAA;SAAC,CAAC,CAAC;QAF5BK,qBAAAA,aAAoC,CAAA;IAGvD;IAESC,mBAAmB,CAACC,GAAkB,EAAW;YACnDA,GAAO;QAAZ,IAAI,EAACA,CAAAA,GAAO,GAAPA,GAAG,CAACC,GAAG,SAAY,GAAnBD,KAAAA,CAAmB,GAAnBA,GAAO,CAAEE,UAAU,CAACT,sBAAsB,uBAAA,CAAC,CAAA,EAAE;YAChD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC;IACd;UAEMU,kBAAkB,CAACH,GAAkB,EAAEI,GAAmB,EAAiB;QAC/EC,IAAAA,OAAM,EAAA,QAAA,EAACL,GAAG,CAACM,OAAO,CAACC,IAAI,EAAE,mCAAmC,CAAC,CAAC;QAC9D,MAAM,EAAEC,QAAQ,CAAA,EAAE,GAAG,IAAIC,GAAG,CAACT,GAAG,CAACC,GAAG,IAAI,GAAG,EAAE,CAAC,OAAO,EAAED,GAAG,CAACM,OAAO,CAACC,IAAI,CAAC,CAAC,CAAC,AAAC;QAC3E,MAAMG,UAAU,GAAG,IAAI,CAACC,uBAAuB,CAC7CH,QAAQ,CAACI,SAAS,CAACnB,sBAAsB,uBAAA,CAACoB,MAAM,GAAG,CAAC,CAAC,CACtD,AAAC;QACF,MAAMC,WAAW,GAAG,MAAM,IAAI,CAAChB,aAAa,CAACiB,2BAA2B,CAACL,UAAU,CAAC,AAAC;QACrF,IAAI,CAACI,WAAW,EAAE;YAChBV,GAAG,CAACY,UAAU,GAAG,GAAG,CAAC;YACrBZ,GAAG,CAACa,GAAG,EAAE,CAAC;YACV,OAAO;QACT,CAAC;QAED,MAAMC,gBAAgB,GACpBV,QAAQ,CAACI,SAAS,CAACnB,sBAAsB,uBAAA,CAACoB,MAAM,GAAGH,UAAU,CAACG,MAAM,GAAG,CAAC,CAAC,IAAI,GAAG,AAAC;QACnFM,IAAAA,KAAI,EAAA,QAAA,EAACnB,GAAG,EAAEkB,gBAAgB,EAAE;YAAEE,IAAI,EAAEN,WAAW;SAAE,CAAC,CAACO,IAAI,CAACjB,GAAG,CAAC,CAAC;IAC/D;IAEQO,uBAAuB,CAACH,QAAgB,EAAU;QACxD,MAAMc,KAAK,GAAGd,QAAQ,CAACe,KAAK,CAAC,GAAG,CAAC,AAAC;QAClC,IAAID,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAIA,KAAK,CAACT,MAAM,GAAG,CAAC,EAAE;YAC3C,sBAAsB;YACtB,OAAO,CAAC,EAAES,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEA,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnC,CAAC;QACD,OAAOA,KAAK,CAAC,CAAC,CAAC,CAAC;IAClB;CACD"}
@@ -9,26 +9,20 @@ function _export(target, all) {
9
9
  });
10
10
  }
11
11
  _export(exports, {
12
- DOM_COMPONENTS_BUNDLE_DIR: function() {
13
- return DOM_COMPONENTS_BUNDLE_DIR;
14
- },
15
- createDomComponentsMiddleware: function() {
16
- return createDomComponentsMiddleware;
17
- },
18
- getDomComponentHtml: function() {
19
- return getDomComponentHtml;
20
- }
12
+ DOM_COMPONENTS_BUNDLE_DIR: ()=>DOM_COMPONENTS_BUNDLE_DIR,
13
+ createDomComponentsMiddleware: ()=>createDomComponentsMiddleware,
14
+ getDomComponentHtml: ()=>getDomComponentHtml
21
15
  });
22
16
  function _path() {
23
- const data = /*#__PURE__*/ _interop_require_default(require("path"));
17
+ const data = /*#__PURE__*/ _interopRequireDefault(require("path"));
24
18
  _path = function() {
25
19
  return data;
26
20
  };
27
21
  return data;
28
22
  }
29
- function _resolvefrom() {
30
- const data = /*#__PURE__*/ _interop_require_default(require("resolve-from"));
31
- _resolvefrom = function() {
23
+ function _resolveFrom() {
24
+ const data = /*#__PURE__*/ _interopRequireDefault(require("resolve-from"));
25
+ _resolveFrom = function() {
32
26
  return data;
33
27
  };
34
28
  return data;
@@ -38,58 +32,58 @@ const _log = require("../../../log");
38
32
  const _filePath = require("../../../utils/filePath");
39
33
  const _fn = require("../../../utils/fn");
40
34
  const _createServerComponentsMiddleware = require("../metro/createServerComponentsMiddleware");
41
- function _interop_require_default(obj) {
35
+ function _interopRequireDefault(obj) {
42
36
  return obj && obj.__esModule ? obj : {
43
37
  default: obj
44
38
  };
45
39
  }
46
- const DOM_COMPONENTS_BUNDLE_DIR = 'www.bundle';
47
- const warnUnstable = (0, _fn.memoize)(()=>_log.Log.warn('Using experimental DOM Components API. Production exports may not work as expected.'));
40
+ const DOM_COMPONENTS_BUNDLE_DIR = "www.bundle";
41
+ const warnUnstable = (0, _fn.memoize)(()=>_log.Log.warn("Using experimental DOM Components API. Production exports may not work as expected."));
48
42
  const checkWebViewInstalled = (0, _fn.memoize)((projectRoot)=>{
49
- const webViewInstalled = _resolvefrom().default.silent(projectRoot, 'react-native-webview') || _resolvefrom().default.silent(projectRoot, '@expo/dom-webview');
43
+ const webViewInstalled = _resolveFrom().default.silent(projectRoot, "react-native-webview") || _resolveFrom().default.silent(projectRoot, "@expo/dom-webview");
50
44
  if (!webViewInstalled) {
51
45
  throw new Error(`To use DOM Components, you must install the 'react-native-webview' package. Run 'npx expo install react-native-webview' to install it.`);
52
46
  }
53
47
  });
54
- function createDomComponentsMiddleware({ metroRoot, projectRoot }, instanceMetroOptions) {
48
+ function createDomComponentsMiddleware({ metroRoot , projectRoot }, instanceMetroOptions) {
55
49
  return (req, res, next)=>{
56
50
  if (!req.url) return next();
57
51
  const url = coerceUrl(req.url);
58
52
  // Match `/_expo/@dom`.
59
53
  // This URL can contain additional paths like `/_expo/@dom/foo.js?file=...` to help the Safari dev tools.
60
- if (!url.pathname.startsWith('/_expo/@dom')) {
54
+ if (!url.pathname.startsWith("/_expo/@dom")) {
61
55
  return next();
62
56
  }
63
- const file = url.searchParams.get('file');
64
- if (!file || !file.startsWith('file://')) {
57
+ const file = url.searchParams.get("file");
58
+ if (!file || !file.startsWith("file://")) {
65
59
  res.statusCode = 400;
66
- res.statusMessage = 'Invalid file path: ' + file;
60
+ res.statusMessage = "Invalid file path: " + file;
67
61
  return res.end();
68
62
  }
69
63
  checkWebViewInstalled(projectRoot);
70
64
  warnUnstable();
71
65
  // Generate a unique entry file for the webview.
72
- const generatedEntry = (0, _filePath.toPosixPath)(file.startsWith('file://') ? (0, _createServerComponentsMiddleware.fileURLToFilePath)(file) : file);
73
- const virtualEntry = (0, _filePath.toPosixPath)((0, _resolvefrom().default)(projectRoot, 'expo/dom/entry.js'));
66
+ const generatedEntry = (0, _filePath.toPosixPath)(file.startsWith("file://") ? (0, _createServerComponentsMiddleware.fileURLToFilePath)(file) : file);
67
+ const virtualEntry = (0, _filePath.toPosixPath)((0, _resolveFrom().default)(projectRoot, "expo/dom/entry.js"));
74
68
  // The relative import path will be used like URI so it must be POSIX.
75
- const relativeImport = './' + _path().default.posix.relative(_path().default.dirname(virtualEntry), generatedEntry);
69
+ const relativeImport = "./" + _path().default.posix.relative(_path().default.dirname(virtualEntry), generatedEntry);
76
70
  // Create the script URL
77
71
  const requestUrlBase = `http://${req.headers.host}`;
78
72
  const metroUrl = new URL((0, _metroOptions.createBundleUrlPath)({
79
73
  ...instanceMetroOptions,
80
74
  domRoot: encodeURI(relativeImport),
81
- baseUrl: '/',
75
+ baseUrl: "/",
82
76
  mainModuleName: _path().default.relative(metroRoot, virtualEntry),
83
77
  bytecode: false,
84
- platform: 'web',
78
+ platform: "web",
85
79
  isExporting: false,
86
- engine: 'hermes',
80
+ engine: "hermes",
87
81
  // Required for ensuring bundler errors are caught in the root entry / async boundary and can be recovered from automatically.
88
82
  lazy: true
89
83
  }), requestUrlBase).toString();
90
84
  res.statusCode = 200;
91
85
  // Return HTML file
92
- res.setHeader('Content-Type', 'text/html');
86
+ res.setHeader("Content-Type", "text/html");
93
87
  res.end(// Create the entry HTML file.
94
88
  getDomComponentHtml(metroUrl, {
95
89
  title: _path().default.basename(file)
@@ -100,10 +94,10 @@ function coerceUrl(url) {
100
94
  try {
101
95
  return new URL(url);
102
96
  } catch {
103
- return new URL(url, 'https://localhost:0');
97
+ return new URL(url, "https://localhost:0");
104
98
  }
105
99
  }
106
- function getDomComponentHtml(src, { title } = {}) {
100
+ function getDomComponentHtml(src, { title } = {}) {
107
101
  // This HTML is not optimized for `react-native-web` since DOM Components are meant for general React DOM web development.
108
102
  return `
109
103
  <!DOCTYPE html>
@@ -112,7 +106,7 @@ function getDomComponentHtml(src, { title } = {}) {
112
106
  <meta charset="utf-8" />
113
107
  <meta httpEquiv="X-UA-Compatible" content="IE=edge" />
114
108
  <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
115
- ${title ? `<title>${title}</title>` : ''}
109
+ ${title ? `<title>${title}</title>` : ""}
116
110
  <style id="expo-dom-component-style">
117
111
  /* These styles make the body full-height */
118
112
  html,
@@ -130,7 +124,7 @@ function getDomComponentHtml(src, { title } = {}) {
130
124
  <noscript>DOM Components require <code>javaScriptEnabled</code></noscript>
131
125
  <!-- Root element for the DOM component. -->
132
126
  <div id="root"></div>
133
- ${src ? `<script crossorigin src="${src.replace(/^https?:/, '')}"></script>` : ''}
127
+ ${src ? `<script crossorigin src="${src.replace(/^https?:/, "")}"></script>` : ""}
134
128
  </body>
135
129
  </html>`;
136
130
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/start/server/middleware/DomComponentsMiddleware.ts"],"sourcesContent":["import path from 'path';\nimport resolveFrom from 'resolve-from';\n\nimport { createBundleUrlPath, ExpoMetroOptions } from './metroOptions';\nimport type { ServerRequest, ServerResponse } from './server.types';\nimport { Log } from '../../../log';\nimport { toPosixPath } from '../../../utils/filePath';\nimport { memoize } from '../../../utils/fn';\nimport { fileURLToFilePath } from '../metro/createServerComponentsMiddleware';\n\nexport type PickPartial<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;\n\nexport const DOM_COMPONENTS_BUNDLE_DIR = 'www.bundle';\n\nconst warnUnstable = memoize(() =>\n Log.warn('Using experimental DOM Components API. Production exports may not work as expected.')\n);\n\nconst checkWebViewInstalled = memoize((projectRoot: string) => {\n const webViewInstalled =\n resolveFrom.silent(projectRoot, 'react-native-webview') ||\n resolveFrom.silent(projectRoot, '@expo/dom-webview');\n if (!webViewInstalled) {\n throw new Error(\n `To use DOM Components, you must install the 'react-native-webview' package. Run 'npx expo install react-native-webview' to install it.`\n );\n }\n});\n\ntype CreateDomComponentsMiddlewareOptions = {\n /** The absolute metro or server root, used to calculate the relative dom entry path */\n metroRoot: string;\n /** The absolute project root, used to resolve the `expo/dom/entry.js` path */\n projectRoot: string;\n};\n\nexport function createDomComponentsMiddleware(\n { metroRoot, projectRoot }: CreateDomComponentsMiddlewareOptions,\n instanceMetroOptions: PickPartial<ExpoMetroOptions, 'mainModuleName' | 'platform' | 'bytecode'>\n) {\n return (req: ServerRequest, res: ServerResponse, next: (err?: Error) => void) => {\n if (!req.url) return next();\n\n const url = coerceUrl(req.url);\n\n // Match `/_expo/@dom`.\n // This URL can contain additional paths like `/_expo/@dom/foo.js?file=...` to help the Safari dev tools.\n if (!url.pathname.startsWith('/_expo/@dom')) {\n return next();\n }\n\n const file = url.searchParams.get('file');\n\n if (!file || !file.startsWith('file://')) {\n res.statusCode = 400;\n res.statusMessage = 'Invalid file path: ' + file;\n return res.end();\n }\n\n checkWebViewInstalled(projectRoot);\n warnUnstable();\n\n // Generate a unique entry file for the webview.\n const generatedEntry = toPosixPath(file.startsWith('file://') ? fileURLToFilePath(file) : file);\n const virtualEntry = toPosixPath(resolveFrom(projectRoot, 'expo/dom/entry.js'));\n // The relative import path will be used like URI so it must be POSIX.\n const relativeImport = './' + path.posix.relative(path.dirname(virtualEntry), generatedEntry);\n // Create the script URL\n const requestUrlBase = `http://${req.headers.host}`;\n const metroUrl = new URL(\n createBundleUrlPath({\n ...instanceMetroOptions,\n domRoot: encodeURI(relativeImport),\n baseUrl: '/',\n mainModuleName: path.relative(metroRoot, virtualEntry),\n bytecode: false,\n platform: 'web',\n isExporting: false,\n engine: 'hermes',\n // Required for ensuring bundler errors are caught in the root entry / async boundary and can be recovered from automatically.\n lazy: true,\n }),\n requestUrlBase\n ).toString();\n\n res.statusCode = 200;\n // Return HTML file\n res.setHeader('Content-Type', 'text/html');\n\n res.end(\n // Create the entry HTML file.\n getDomComponentHtml(metroUrl, { title: path.basename(file) })\n );\n };\n}\n\nfunction coerceUrl(url: string) {\n try {\n return new URL(url);\n } catch {\n return new URL(url, 'https://localhost:0');\n }\n}\n\nexport function getDomComponentHtml(src?: string, { title }: { title?: string } = {}) {\n // This HTML is not optimized for `react-native-web` since DOM Components are meant for general React DOM web development.\n return `\n<!DOCTYPE html>\n<html>\n <head>\n <meta charset=\"utf-8\" />\n <meta httpEquiv=\"X-UA-Compatible\" content=\"IE=edge\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1, user-scalable=no\">\n ${title ? `<title>${title}</title>` : ''}\n <style id=\"expo-dom-component-style\">\n /* These styles make the body full-height */\n html,\n body {\n -webkit-overflow-scrolling: touch; /* Enables smooth momentum scrolling */\n }\n /* These styles make the root element full-height */\n #root {\n display: flex;\n flex: 1;\n }\n </style>\n </head>\n <body>\n <noscript>DOM Components require <code>javaScriptEnabled</code></noscript>\n <!-- Root element for the DOM component. -->\n <div id=\"root\"></div>\n ${src ? `<script crossorigin src=\"${src.replace(/^https?:/, '')}\"></script>` : ''}\n </body>\n</html>`;\n}\n"],"names":["DOM_COMPONENTS_BUNDLE_DIR","createDomComponentsMiddleware","getDomComponentHtml","warnUnstable","memoize","Log","warn","checkWebViewInstalled","projectRoot","webViewInstalled","resolveFrom","silent","Error","metroRoot","instanceMetroOptions","req","res","next","url","coerceUrl","pathname","startsWith","file","searchParams","get","statusCode","statusMessage","end","generatedEntry","toPosixPath","fileURLToFilePath","virtualEntry","relativeImport","path","posix","relative","dirname","requestUrlBase","headers","host","metroUrl","URL","createBundleUrlPath","domRoot","encodeURI","baseUrl","mainModuleName","bytecode","platform","isExporting","engine","lazy","toString","setHeader","title","basename","src","replace"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../src/start/server/middleware/DomComponentsMiddleware.ts"],"sourcesContent":["import path from 'path';\nimport resolveFrom from 'resolve-from';\n\nimport { createBundleUrlPath, ExpoMetroOptions } from './metroOptions';\nimport type { ServerRequest, ServerResponse } from './server.types';\nimport { Log } from '../../../log';\nimport { toPosixPath } from '../../../utils/filePath';\nimport { memoize } from '../../../utils/fn';\nimport { fileURLToFilePath } from '../metro/createServerComponentsMiddleware';\n\nexport type PickPartial<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;\n\nexport const DOM_COMPONENTS_BUNDLE_DIR = 'www.bundle';\n\nconst warnUnstable = memoize(() =>\n Log.warn('Using experimental DOM Components API. Production exports may not work as expected.')\n);\n\nconst checkWebViewInstalled = memoize((projectRoot: string) => {\n const webViewInstalled =\n resolveFrom.silent(projectRoot, 'react-native-webview') ||\n resolveFrom.silent(projectRoot, '@expo/dom-webview');\n if (!webViewInstalled) {\n throw new Error(\n `To use DOM Components, you must install the 'react-native-webview' package. Run 'npx expo install react-native-webview' to install it.`\n );\n }\n});\n\ntype CreateDomComponentsMiddlewareOptions = {\n /** The absolute metro or server root, used to calculate the relative dom entry path */\n metroRoot: string;\n /** The absolute project root, used to resolve the `expo/dom/entry.js` path */\n projectRoot: string;\n};\n\nexport function createDomComponentsMiddleware(\n { metroRoot, projectRoot }: CreateDomComponentsMiddlewareOptions,\n instanceMetroOptions: PickPartial<ExpoMetroOptions, 'mainModuleName' | 'platform' | 'bytecode'>\n) {\n return (req: ServerRequest, res: ServerResponse, next: (err?: Error) => void) => {\n if (!req.url) return next();\n\n const url = coerceUrl(req.url);\n\n // Match `/_expo/@dom`.\n // This URL can contain additional paths like `/_expo/@dom/foo.js?file=...` to help the Safari dev tools.\n if (!url.pathname.startsWith('/_expo/@dom')) {\n return next();\n }\n\n const file = url.searchParams.get('file');\n\n if (!file || !file.startsWith('file://')) {\n res.statusCode = 400;\n res.statusMessage = 'Invalid file path: ' + file;\n return res.end();\n }\n\n checkWebViewInstalled(projectRoot);\n warnUnstable();\n\n // Generate a unique entry file for the webview.\n const generatedEntry = toPosixPath(file.startsWith('file://') ? fileURLToFilePath(file) : file);\n const virtualEntry = toPosixPath(resolveFrom(projectRoot, 'expo/dom/entry.js'));\n // The relative import path will be used like URI so it must be POSIX.\n const relativeImport = './' + path.posix.relative(path.dirname(virtualEntry), generatedEntry);\n // Create the script URL\n const requestUrlBase = `http://${req.headers.host}`;\n const metroUrl = new URL(\n createBundleUrlPath({\n ...instanceMetroOptions,\n domRoot: encodeURI(relativeImport),\n baseUrl: '/',\n mainModuleName: path.relative(metroRoot, virtualEntry),\n bytecode: false,\n platform: 'web',\n isExporting: false,\n engine: 'hermes',\n // Required for ensuring bundler errors are caught in the root entry / async boundary and can be recovered from automatically.\n lazy: true,\n }),\n requestUrlBase\n ).toString();\n\n res.statusCode = 200;\n // Return HTML file\n res.setHeader('Content-Type', 'text/html');\n\n res.end(\n // Create the entry HTML file.\n getDomComponentHtml(metroUrl, { title: path.basename(file) })\n );\n };\n}\n\nfunction coerceUrl(url: string) {\n try {\n return new URL(url);\n } catch {\n return new URL(url, 'https://localhost:0');\n }\n}\n\nexport function getDomComponentHtml(src?: string, { title }: { title?: string } = {}) {\n // This HTML is not optimized for `react-native-web` since DOM Components are meant for general React DOM web development.\n return `\n<!DOCTYPE html>\n<html>\n <head>\n <meta charset=\"utf-8\" />\n <meta httpEquiv=\"X-UA-Compatible\" content=\"IE=edge\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1, user-scalable=no\">\n ${title ? `<title>${title}</title>` : ''}\n <style id=\"expo-dom-component-style\">\n /* These styles make the body full-height */\n html,\n body {\n -webkit-overflow-scrolling: touch; /* Enables smooth momentum scrolling */\n }\n /* These styles make the root element full-height */\n #root {\n display: flex;\n flex: 1;\n }\n </style>\n </head>\n <body>\n <noscript>DOM Components require <code>javaScriptEnabled</code></noscript>\n <!-- Root element for the DOM component. -->\n <div id=\"root\"></div>\n ${src ? `<script crossorigin src=\"${src.replace(/^https?:/, '')}\"></script>` : ''}\n </body>\n</html>`;\n}\n"],"names":["DOM_COMPONENTS_BUNDLE_DIR","createDomComponentsMiddleware","getDomComponentHtml","warnUnstable","memoize","Log","warn","checkWebViewInstalled","projectRoot","webViewInstalled","resolveFrom","silent","Error","metroRoot","instanceMetroOptions","req","res","next","url","coerceUrl","pathname","startsWith","file","searchParams","get","statusCode","statusMessage","end","generatedEntry","toPosixPath","fileURLToFilePath","virtualEntry","relativeImport","path","posix","relative","dirname","requestUrlBase","headers","host","metroUrl","URL","createBundleUrlPath","domRoot","encodeURI","baseUrl","mainModuleName","bytecode","platform","isExporting","engine","lazy","toString","setHeader","title","basename","src","replace"],"mappings":"AAAA;;;;;;;;;;;IAYaA,yBAAyB,MAAzBA,yBAAyB;IAwBtBC,6BAA6B,MAA7BA,6BAA6B;IAoE7BC,mBAAmB,MAAnBA,mBAAmB;;;8DAxGlB,MAAM;;;;;;;8DACC,cAAc;;;;;;8BAEgB,gBAAgB;qBAElD,cAAc;0BACN,yBAAyB;oBAC7B,mBAAmB;kDACT,2CAA2C;;;;;;AAItE,MAAMF,yBAAyB,GAAG,YAAY,AAAC;AAEtD,MAAMG,YAAY,GAAGC,IAAAA,GAAO,QAAA,EAAC,IAC3BC,IAAG,IAAA,CAACC,IAAI,CAAC,qFAAqF,CAAC,CAChG,AAAC;AAEF,MAAMC,qBAAqB,GAAGH,IAAAA,GAAO,QAAA,EAAC,CAACI,WAAmB,GAAK;IAC7D,MAAMC,gBAAgB,GACpBC,YAAW,EAAA,QAAA,CAACC,MAAM,CAACH,WAAW,EAAE,sBAAsB,CAAC,IACvDE,YAAW,EAAA,QAAA,CAACC,MAAM,CAACH,WAAW,EAAE,mBAAmB,CAAC,AAAC;IACvD,IAAI,CAACC,gBAAgB,EAAE;QACrB,MAAM,IAAIG,KAAK,CACb,CAAC,sIAAsI,CAAC,CACzI,CAAC;IACJ,CAAC;AACH,CAAC,CAAC,AAAC;AASI,SAASX,6BAA6B,CAC3C,EAAEY,SAAS,CAAA,EAAEL,WAAW,CAAA,EAAwC,EAChEM,oBAA+F,EAC/F;IACA,OAAO,CAACC,GAAkB,EAAEC,GAAmB,EAAEC,IAA2B,GAAK;QAC/E,IAAI,CAACF,GAAG,CAACG,GAAG,EAAE,OAAOD,IAAI,EAAE,CAAC;QAE5B,MAAMC,GAAG,GAAGC,SAAS,CAACJ,GAAG,CAACG,GAAG,CAAC,AAAC;QAE/B,uBAAuB;QACvB,yGAAyG;QACzG,IAAI,CAACA,GAAG,CAACE,QAAQ,CAACC,UAAU,CAAC,aAAa,CAAC,EAAE;YAC3C,OAAOJ,IAAI,EAAE,CAAC;QAChB,CAAC;QAED,MAAMK,IAAI,GAAGJ,GAAG,CAACK,YAAY,CAACC,GAAG,CAAC,MAAM,CAAC,AAAC;QAE1C,IAAI,CAACF,IAAI,IAAI,CAACA,IAAI,CAACD,UAAU,CAAC,SAAS,CAAC,EAAE;YACxCL,GAAG,CAACS,UAAU,GAAG,GAAG,CAAC;YACrBT,GAAG,CAACU,aAAa,GAAG,qBAAqB,GAAGJ,IAAI,CAAC;YACjD,OAAON,GAAG,CAACW,GAAG,EAAE,CAAC;QACnB,CAAC;QAEDpB,qBAAqB,CAACC,WAAW,CAAC,CAAC;QACnCL,YAAY,EAAE,CAAC;QAEf,gDAAgD;QAChD,MAAMyB,cAAc,GAAGC,IAAAA,SAAW,YAAA,EAACP,IAAI,CAACD,UAAU,CAAC,SAAS,CAAC,GAAGS,IAAAA,iCAAiB,kBAAA,EAACR,IAAI,CAAC,GAAGA,IAAI,CAAC,AAAC;QAChG,MAAMS,YAAY,GAAGF,IAAAA,SAAW,YAAA,EAACnB,IAAAA,YAAW,EAAA,QAAA,EAACF,WAAW,EAAE,mBAAmB,CAAC,CAAC,AAAC;QAChF,sEAAsE;QACtE,MAAMwB,cAAc,GAAG,IAAI,GAAGC,KAAI,EAAA,QAAA,CAACC,KAAK,CAACC,QAAQ,CAACF,KAAI,EAAA,QAAA,CAACG,OAAO,CAACL,YAAY,CAAC,EAAEH,cAAc,CAAC,AAAC;QAC9F,wBAAwB;QACxB,MAAMS,cAAc,GAAG,CAAC,OAAO,EAAEtB,GAAG,CAACuB,OAAO,CAACC,IAAI,CAAC,CAAC,AAAC;QACpD,MAAMC,QAAQ,GAAG,IAAIC,GAAG,CACtBC,IAAAA,aAAmB,oBAAA,EAAC;YAClB,GAAG5B,oBAAoB;YACvB6B,OAAO,EAAEC,SAAS,CAACZ,cAAc,CAAC;YAClCa,OAAO,EAAE,GAAG;YACZC,cAAc,EAAEb,KAAI,EAAA,QAAA,CAACE,QAAQ,CAACtB,SAAS,EAAEkB,YAAY,CAAC;YACtDgB,QAAQ,EAAE,KAAK;YACfC,QAAQ,EAAE,KAAK;YACfC,WAAW,EAAE,KAAK;YAClBC,MAAM,EAAE,QAAQ;YAChB,8HAA8H;YAC9HC,IAAI,EAAE,IAAI;SACX,CAAC,EACFd,cAAc,CACf,CAACe,QAAQ,EAAE,AAAC;QAEbpC,GAAG,CAACS,UAAU,GAAG,GAAG,CAAC;QACrB,mBAAmB;QACnBT,GAAG,CAACqC,SAAS,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;QAE3CrC,GAAG,CAACW,GAAG,CACL,8BAA8B;QAC9BzB,mBAAmB,CAACsC,QAAQ,EAAE;YAAEc,KAAK,EAAErB,KAAI,EAAA,QAAA,CAACsB,QAAQ,CAACjC,IAAI,CAAC;SAAE,CAAC,CAC9D,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAED,SAASH,SAAS,CAACD,GAAW,EAAE;IAC9B,IAAI;QACF,OAAO,IAAIuB,GAAG,CAACvB,GAAG,CAAC,CAAC;IACtB,EAAE,OAAM;QACN,OAAO,IAAIuB,GAAG,CAACvB,GAAG,EAAE,qBAAqB,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC;AAEM,SAAShB,mBAAmB,CAACsD,GAAY,EAAE,EAAEF,KAAK,CAAA,EAAsB,GAAG,EAAE,EAAE;IACpF,0HAA0H;IAC1H,OAAO,CAAC;;;;;;;QAOF,EAAEA,KAAK,GAAG,CAAC,OAAO,EAAEA,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;;;;;;;;;;;;;;;;;;QAkBzC,EAAEE,GAAG,GAAG,CAAC,yBAAyB,EAAEA,GAAG,CAACC,OAAO,aAAa,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;;OAEnF,CAAC,CAAC;AACT,CAAC"}
@@ -9,75 +9,71 @@ function _export(target, all) {
9
9
  });
10
10
  }
11
11
  _export(exports, {
12
- ExpoGoManifestHandlerMiddleware: function() {
13
- return ExpoGoManifestHandlerMiddleware;
14
- },
15
- ResponseContentType: function() {
16
- return ResponseContentType;
17
- }
12
+ ResponseContentType: ()=>ResponseContentType,
13
+ ExpoGoManifestHandlerMiddleware: ()=>ExpoGoManifestHandlerMiddleware
18
14
  });
19
- function _configplugins() {
15
+ function _configPlugins() {
20
16
  const data = require("@expo/config-plugins");
21
- _configplugins = function() {
17
+ _configPlugins = function() {
22
18
  return data;
23
19
  };
24
20
  return data;
25
21
  }
26
22
  function _accepts() {
27
- const data = /*#__PURE__*/ _interop_require_default(require("accepts"));
23
+ const data = /*#__PURE__*/ _interopRequireDefault(require("accepts"));
28
24
  _accepts = function() {
29
25
  return data;
30
26
  };
31
27
  return data;
32
28
  }
33
29
  function _crypto() {
34
- const data = /*#__PURE__*/ _interop_require_default(require("crypto"));
30
+ const data = /*#__PURE__*/ _interopRequireDefault(require("crypto"));
35
31
  _crypto = function() {
36
32
  return data;
37
33
  };
38
34
  return data;
39
35
  }
40
- function _formdata() {
41
- const data = /*#__PURE__*/ _interop_require_default(require("form-data"));
42
- _formdata = function() {
36
+ function _formData() {
37
+ const data = /*#__PURE__*/ _interopRequireDefault(require("form-data"));
38
+ _formData = function() {
43
39
  return data;
44
40
  };
45
41
  return data;
46
42
  }
47
- function _structuredheaders() {
43
+ function _structuredHeaders() {
48
44
  const data = require("structured-headers");
49
- _structuredheaders = function() {
45
+ _structuredHeaders = function() {
50
46
  return data;
51
47
  };
52
48
  return data;
53
49
  }
54
- const _ManifestMiddleware = require("./ManifestMiddleware");
50
+ const _manifestMiddleware = require("./ManifestMiddleware");
55
51
  const _resolvePlatform = require("./resolvePlatform");
56
52
  const _resolveRuntimeVersionWithExpoUpdatesAsync = require("./resolveRuntimeVersionWithExpoUpdatesAsync");
57
- const _UserSettings = require("../../../api/user/UserSettings");
53
+ const _userSettings = require("../../../api/user/UserSettings");
58
54
  const _user = require("../../../api/user/user");
59
55
  const _codesigning = require("../../../utils/codesigning");
60
56
  const _errors = require("../../../utils/errors");
61
57
  const _url = require("../../../utils/url");
62
- function _interop_require_default(obj) {
58
+ function _interopRequireDefault(obj) {
63
59
  return obj && obj.__esModule ? obj : {
64
60
  default: obj
65
61
  };
66
62
  }
67
- const debug = require('debug')('expo:start:server:middleware:ExpoGoManifestHandlerMiddleware');
68
- var ResponseContentType = /*#__PURE__*/ function(ResponseContentType) {
63
+ const debug = require("debug")("expo:start:server:middleware:ExpoGoManifestHandlerMiddleware");
64
+ var ResponseContentType;
65
+ (function(ResponseContentType) {
69
66
  ResponseContentType[ResponseContentType["TEXT_PLAIN"] = 0] = "TEXT_PLAIN";
70
67
  ResponseContentType[ResponseContentType["APPLICATION_JSON"] = 1] = "APPLICATION_JSON";
71
68
  ResponseContentType[ResponseContentType["APPLICATION_EXPO_JSON"] = 2] = "APPLICATION_EXPO_JSON";
72
69
  ResponseContentType[ResponseContentType["MULTIPART_MIXED"] = 3] = "MULTIPART_MIXED";
73
- return ResponseContentType;
74
- }({});
75
- class ExpoGoManifestHandlerMiddleware extends _ManifestMiddleware.ManifestMiddleware {
70
+ })(ResponseContentType || (ResponseContentType = {}));
71
+ class ExpoGoManifestHandlerMiddleware extends _manifestMiddleware.ManifestMiddleware {
76
72
  getParsedHeaders(req) {
77
73
  let platform = (0, _resolvePlatform.parsePlatformHeader)(req);
78
74
  if (!platform) {
79
75
  debug(`No "expo-platform" header or "platform" query parameter specified. Falling back to "ios".`);
80
- platform = 'ios';
76
+ platform = "ios";
81
77
  }
82
78
  (0, _resolvePlatform.assertRuntimePlatform)(platform);
83
79
  // Expo Updates clients explicitly accept "multipart/mixed" responses while browsers implicitly
@@ -86,64 +82,64 @@ class ExpoGoManifestHandlerMiddleware extends _ManifestMiddleware.ManifestMiddle
86
82
  // an Expo Updates client.
87
83
  const accept = (0, _accepts().default)(req);
88
84
  const acceptedType = accept.types([
89
- 'unknown/unknown',
90
- 'multipart/mixed',
91
- 'application/json',
92
- 'application/expo+json',
93
- 'text/plain'
85
+ "unknown/unknown",
86
+ "multipart/mixed",
87
+ "application/json",
88
+ "application/expo+json",
89
+ "text/plain",
94
90
  ]);
95
91
  let responseContentType;
96
92
  switch(acceptedType){
97
- case 'multipart/mixed':
93
+ case "multipart/mixed":
98
94
  responseContentType = 3;
99
95
  break;
100
- case 'application/json':
96
+ case "application/json":
101
97
  responseContentType = 1;
102
98
  break;
103
- case 'application/expo+json':
99
+ case "application/expo+json":
104
100
  responseContentType = 2;
105
101
  break;
106
102
  default:
107
103
  responseContentType = 0;
108
104
  break;
109
105
  }
110
- const expectSignature = req.headers['expo-expect-signature'];
106
+ const expectSignature = req.headers["expo-expect-signature"];
111
107
  return {
112
108
  responseContentType,
113
109
  platform,
114
110
  expectSignature: expectSignature ? String(expectSignature) : null,
115
- hostname: (0, _url.stripPort)(req.headers['host']),
116
- protocol: req.headers['x-forwarded-proto']
111
+ hostname: (0, _url.stripPort)(req.headers["host"]),
112
+ protocol: req.headers["x-forwarded-proto"]
117
113
  };
118
114
  }
119
115
  getDefaultResponseHeaders() {
120
116
  const headers = new Map();
121
117
  // set required headers for Expo Updates manifest specification
122
- headers.set('expo-protocol-version', 0);
123
- headers.set('expo-sfv-version', 0);
124
- headers.set('cache-control', 'private, max-age=0');
118
+ headers.set("expo-protocol-version", 0);
119
+ headers.set("expo-sfv-version", 0);
120
+ headers.set("cache-control", "private, max-age=0");
125
121
  return headers;
126
122
  }
127
123
  async _getManifestResponseAsync(requestOptions) {
128
- var _exp_extra_eas, _exp_extra;
129
- const { exp, hostUri, expoGoConfig, bundleUrl } = await this._resolveProjectSettingsAsync(requestOptions);
124
+ var ref, ref1;
125
+ const { exp , hostUri , expoGoConfig , bundleUrl } = await this._resolveProjectSettingsAsync(requestOptions);
130
126
  const runtimeVersion = await (0, _resolveRuntimeVersionWithExpoUpdatesAsync.resolveRuntimeVersionWithExpoUpdatesAsync)({
131
127
  projectRoot: this.projectRoot,
132
128
  platform: requestOptions.platform
133
129
  }) ?? // if expo-updates can't determine runtime version, fall back to calculation from config-plugin.
134
130
  // this happens when expo-updates is installed but runtimeVersion hasn't yet been configured or when
135
131
  // expo-updates is not installed.
136
- await _configplugins().Updates.getRuntimeVersionAsync(this.projectRoot, {
132
+ (await _configPlugins().Updates.getRuntimeVersionAsync(this.projectRoot, {
137
133
  ...exp,
138
134
  runtimeVersion: exp.runtimeVersion ?? {
139
- policy: 'sdkVersion'
135
+ policy: "sdkVersion"
140
136
  }
141
- }, requestOptions.platform);
137
+ }, requestOptions.platform));
142
138
  if (!runtimeVersion) {
143
- throw new _errors.CommandError('MANIFEST_MIDDLEWARE', `Unable to determine runtime version for platform '${requestOptions.platform}'`);
139
+ throw new _errors.CommandError("MANIFEST_MIDDLEWARE", `Unable to determine runtime version for platform '${requestOptions.platform}'`);
144
140
  }
145
141
  const codeSigningInfo = await (0, _codesigning.getCodeSigningInfoAsync)(exp, requestOptions.expectSignature, this.options.privateKeyPath);
146
- const easProjectId = (_exp_extra = exp.extra) == null ? void 0 : (_exp_extra_eas = _exp_extra.eas) == null ? void 0 : _exp_extra_eas.projectId;
142
+ const easProjectId = (ref = exp.extra) == null ? void 0 : (ref1 = ref.eas) == null ? void 0 : ref1.projectId;
147
143
  const scopeKey = await ExpoGoManifestHandlerMiddleware.getScopeKeyAsync({
148
144
  slug: exp.slug,
149
145
  codeSigningInfo
@@ -153,8 +149,8 @@ class ExpoGoManifestHandlerMiddleware extends _ManifestMiddleware.ManifestMiddle
153
149
  createdAt: new Date().toISOString(),
154
150
  runtimeVersion,
155
151
  launchAsset: {
156
- key: 'bundle',
157
- contentType: 'application/javascript',
152
+ key: "bundle",
153
+ contentType: "application/javascript",
158
154
  url: bundleUrl
159
155
  },
160
156
  assets: [],
@@ -177,13 +173,13 @@ class ExpoGoManifestHandlerMiddleware extends _ManifestMiddleware.ManifestMiddle
177
173
  if (codeSigningInfo) {
178
174
  const signature = (0, _codesigning.signManifestString)(stringifiedManifest, codeSigningInfo);
179
175
  manifestPartHeaders = {
180
- 'expo-signature': (0, _structuredheaders().serializeDictionary)(convertToDictionaryItemsRepresentation({
176
+ "expo-signature": (0, _structuredHeaders().serializeDictionary)(convertToDictionaryItemsRepresentation({
181
177
  keyid: codeSigningInfo.keyId,
182
178
  sig: signature,
183
- alg: 'rsa-v1_5-sha256'
179
+ alg: "rsa-v1_5-sha256"
184
180
  }))
185
181
  };
186
- certificateChainBody = codeSigningInfo.certificateChainForResponse.join('\n');
182
+ certificateChainBody = codeSigningInfo.certificateChainForResponse.join("\n");
187
183
  }
188
184
  const headers = this.getDefaultResponseHeaders();
189
185
  switch(requestOptions.responseContentType){
@@ -194,7 +190,7 @@ class ExpoGoManifestHandlerMiddleware extends _ManifestMiddleware.ManifestMiddle
194
190
  manifestPartHeaders,
195
191
  certificateChainBody
196
192
  });
197
- headers.set('content-type', `multipart/mixed; boundary=${form.getBoundary()}`);
193
+ headers.set("content-type", `multipart/mixed; boundary=${form.getBoundary()}`);
198
194
  return {
199
195
  body: form.getBuffer().toString(),
200
196
  version: runtimeVersion,
@@ -205,7 +201,7 @@ class ExpoGoManifestHandlerMiddleware extends _ManifestMiddleware.ManifestMiddle
205
201
  case 1:
206
202
  case 0:
207
203
  {
208
- headers.set('content-type', ExpoGoManifestHandlerMiddleware.getContentTypeForResponseContentType(requestOptions.responseContentType));
204
+ headers.set("content-type", ExpoGoManifestHandlerMiddleware.getContentTypeForResponseContentType(requestOptions.responseContentType));
209
205
  if (manifestPartHeaders) {
210
206
  Object.entries(manifestPartHeaders).forEach(([key, value])=>{
211
207
  headers.set(key, value);
@@ -222,31 +218,31 @@ class ExpoGoManifestHandlerMiddleware extends _ManifestMiddleware.ManifestMiddle
222
218
  static getContentTypeForResponseContentType(responseContentType) {
223
219
  switch(responseContentType){
224
220
  case 3:
225
- return 'multipart/mixed';
221
+ return "multipart/mixed";
226
222
  case 2:
227
- return 'application/expo+json';
223
+ return "application/expo+json";
228
224
  case 1:
229
- return 'application/json';
225
+ return "application/json";
230
226
  case 0:
231
- return 'text/plain';
227
+ return "text/plain";
232
228
  }
233
229
  }
234
- getFormData({ stringifiedManifest, manifestPartHeaders, certificateChainBody }) {
235
- const form = new (_formdata()).default();
236
- form.append('manifest', stringifiedManifest, {
237
- contentType: 'application/json',
230
+ getFormData({ stringifiedManifest , manifestPartHeaders , certificateChainBody }) {
231
+ const form = new (_formData()).default();
232
+ form.append("manifest", stringifiedManifest, {
233
+ contentType: "application/json",
238
234
  header: {
239
235
  ...manifestPartHeaders
240
236
  }
241
237
  });
242
238
  if (certificateChainBody && certificateChainBody.length > 0) {
243
- form.append('certificate_chain', certificateChainBody, {
244
- contentType: 'application/x-pem-file'
239
+ form.append("certificate_chain", certificateChainBody, {
240
+ contentType: "application/x-pem-file"
245
241
  });
246
242
  }
247
243
  return form;
248
244
  }
249
- static async getScopeKeyAsync({ slug, codeSigningInfo }) {
245
+ static async getScopeKeyAsync({ slug , codeSigningInfo }) {
250
246
  const scopeKeyFromCodeSigningInfo = codeSigningInfo == null ? void 0 : codeSigningInfo.scopeKey;
251
247
  if (scopeKeyFromCodeSigningInfo) {
252
248
  return scopeKeyFromCodeSigningInfo;
@@ -260,7 +256,7 @@ class ExpoGoManifestHandlerMiddleware extends _ManifestMiddleware.ManifestMiddle
260
256
  }
261
257
  }
262
258
  async function getAnonymousScopeKeyAsync(slug) {
263
- const userAnonymousIdentifier = await (0, _UserSettings.getAnonymousIdAsync)();
259
+ const userAnonymousIdentifier = await (0, _userSettings.getAnonymousIdAsync)();
264
260
  return `@${_user.ANONYMOUS_USERNAME}/${slug}-${userAnonymousIdentifier}`;
265
261
  }
266
262
  function convertToDictionaryItemsRepresentation(obj) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/start/server/middleware/ExpoGoManifestHandlerMiddleware.ts"],"sourcesContent":["import { ExpoUpdatesManifest } from '@expo/config';\nimport { Updates } from '@expo/config-plugins';\nimport accepts from 'accepts';\nimport crypto from 'crypto';\nimport FormData from 'form-data';\nimport { serializeDictionary, Dictionary } from 'structured-headers';\n\nimport { ManifestMiddleware, ManifestRequestInfo } from './ManifestMiddleware';\nimport { assertRuntimePlatform, parsePlatformHeader } from './resolvePlatform';\nimport { resolveRuntimeVersionWithExpoUpdatesAsync } from './resolveRuntimeVersionWithExpoUpdatesAsync';\nimport { ServerHeaders, ServerRequest } from './server.types';\nimport { getAnonymousIdAsync } from '../../../api/user/UserSettings';\nimport { ANONYMOUS_USERNAME } from '../../../api/user/user';\nimport {\n CodeSigningInfo,\n getCodeSigningInfoAsync,\n signManifestString,\n} from '../../../utils/codesigning';\nimport { CommandError } from '../../../utils/errors';\nimport { stripPort } from '../../../utils/url';\n\nconst debug = require('debug')('expo:start:server:middleware:ExpoGoManifestHandlerMiddleware');\n\nexport enum ResponseContentType {\n TEXT_PLAIN,\n APPLICATION_JSON,\n APPLICATION_EXPO_JSON,\n MULTIPART_MIXED,\n}\n\ninterface ExpoGoManifestRequestInfo extends ManifestRequestInfo {\n responseContentType: ResponseContentType;\n expectSignature: string | null;\n}\n\nexport class ExpoGoManifestHandlerMiddleware extends ManifestMiddleware<ExpoGoManifestRequestInfo> {\n public getParsedHeaders(req: ServerRequest): ExpoGoManifestRequestInfo {\n let platform = parsePlatformHeader(req);\n\n if (!platform) {\n debug(\n `No \"expo-platform\" header or \"platform\" query parameter specified. Falling back to \"ios\".`\n );\n platform = 'ios';\n }\n\n assertRuntimePlatform(platform);\n\n // Expo Updates clients explicitly accept \"multipart/mixed\" responses while browsers implicitly\n // accept them with \"accept: */*\". To make it easier to debug manifest responses by visiting their\n // URLs in a browser, we denote the response as \"text/plain\" if the user agent appears not to be\n // an Expo Updates client.\n const accept = accepts(req);\n const acceptedType = accept.types([\n 'unknown/unknown',\n 'multipart/mixed',\n 'application/json',\n 'application/expo+json',\n 'text/plain',\n ]);\n\n let responseContentType;\n switch (acceptedType) {\n case 'multipart/mixed':\n responseContentType = ResponseContentType.MULTIPART_MIXED;\n break;\n case 'application/json':\n responseContentType = ResponseContentType.APPLICATION_JSON;\n break;\n case 'application/expo+json':\n responseContentType = ResponseContentType.APPLICATION_EXPO_JSON;\n break;\n default:\n responseContentType = ResponseContentType.TEXT_PLAIN;\n break;\n }\n\n const expectSignature = req.headers['expo-expect-signature'];\n\n return {\n responseContentType,\n platform,\n expectSignature: expectSignature ? String(expectSignature) : null,\n hostname: stripPort(req.headers['host']),\n protocol: req.headers['x-forwarded-proto'] as 'http' | 'https' | undefined,\n };\n }\n\n private getDefaultResponseHeaders(): ServerHeaders {\n const headers = new Map<string, number | string | readonly string[]>();\n // set required headers for Expo Updates manifest specification\n headers.set('expo-protocol-version', 0);\n headers.set('expo-sfv-version', 0);\n headers.set('cache-control', 'private, max-age=0');\n return headers;\n }\n\n public async _getManifestResponseAsync(requestOptions: ExpoGoManifestRequestInfo): Promise<{\n body: string;\n version: string;\n headers: ServerHeaders;\n }> {\n const { exp, hostUri, expoGoConfig, bundleUrl } =\n await this._resolveProjectSettingsAsync(requestOptions);\n\n const runtimeVersion =\n (await resolveRuntimeVersionWithExpoUpdatesAsync({\n projectRoot: this.projectRoot,\n platform: requestOptions.platform,\n })) ??\n // if expo-updates can't determine runtime version, fall back to calculation from config-plugin.\n // this happens when expo-updates is installed but runtimeVersion hasn't yet been configured or when\n // expo-updates is not installed.\n (await Updates.getRuntimeVersionAsync(\n this.projectRoot,\n { ...exp, runtimeVersion: exp.runtimeVersion ?? { policy: 'sdkVersion' } },\n requestOptions.platform\n ));\n if (!runtimeVersion) {\n throw new CommandError(\n 'MANIFEST_MIDDLEWARE',\n `Unable to determine runtime version for platform '${requestOptions.platform}'`\n );\n }\n\n const codeSigningInfo = await getCodeSigningInfoAsync(\n exp,\n requestOptions.expectSignature,\n this.options.privateKeyPath\n );\n\n const easProjectId = exp.extra?.eas?.projectId as string | undefined | null;\n const scopeKey = await ExpoGoManifestHandlerMiddleware.getScopeKeyAsync({\n slug: exp.slug,\n codeSigningInfo,\n });\n\n const expoUpdatesManifest: ExpoUpdatesManifest = {\n id: crypto.randomUUID(),\n createdAt: new Date().toISOString(),\n runtimeVersion,\n launchAsset: {\n key: 'bundle',\n contentType: 'application/javascript',\n url: bundleUrl,\n },\n assets: [], // assets are not used in development\n metadata: {}, // required for the client to detect that this is an expo-updates manifest\n extra: {\n eas: {\n projectId: easProjectId ?? undefined,\n },\n expoClient: {\n ...exp,\n hostUri,\n },\n expoGo: expoGoConfig,\n scopeKey,\n },\n };\n\n const stringifiedManifest = JSON.stringify(expoUpdatesManifest);\n\n let manifestPartHeaders: { 'expo-signature': string } | null = null;\n let certificateChainBody: string | null = null;\n if (codeSigningInfo) {\n const signature = signManifestString(stringifiedManifest, codeSigningInfo);\n manifestPartHeaders = {\n 'expo-signature': serializeDictionary(\n convertToDictionaryItemsRepresentation({\n keyid: codeSigningInfo.keyId,\n sig: signature,\n alg: 'rsa-v1_5-sha256',\n })\n ),\n };\n certificateChainBody = codeSigningInfo.certificateChainForResponse.join('\\n');\n }\n\n const headers = this.getDefaultResponseHeaders();\n\n switch (requestOptions.responseContentType) {\n case ResponseContentType.MULTIPART_MIXED: {\n const form = this.getFormData({\n stringifiedManifest,\n manifestPartHeaders,\n certificateChainBody,\n });\n headers.set('content-type', `multipart/mixed; boundary=${form.getBoundary()}`);\n return {\n body: form.getBuffer().toString(),\n version: runtimeVersion,\n headers,\n };\n }\n case ResponseContentType.APPLICATION_EXPO_JSON:\n case ResponseContentType.APPLICATION_JSON:\n case ResponseContentType.TEXT_PLAIN: {\n headers.set(\n 'content-type',\n ExpoGoManifestHandlerMiddleware.getContentTypeForResponseContentType(\n requestOptions.responseContentType\n )\n );\n if (manifestPartHeaders) {\n Object.entries(manifestPartHeaders).forEach(([key, value]) => {\n headers.set(key, value);\n });\n }\n\n return {\n body: stringifiedManifest,\n version: runtimeVersion,\n headers,\n };\n }\n }\n }\n\n private static getContentTypeForResponseContentType(\n responseContentType: ResponseContentType\n ): string {\n switch (responseContentType) {\n case ResponseContentType.MULTIPART_MIXED:\n return 'multipart/mixed';\n case ResponseContentType.APPLICATION_EXPO_JSON:\n return 'application/expo+json';\n case ResponseContentType.APPLICATION_JSON:\n return 'application/json';\n case ResponseContentType.TEXT_PLAIN:\n return 'text/plain';\n }\n }\n\n private getFormData({\n stringifiedManifest,\n manifestPartHeaders,\n certificateChainBody,\n }: {\n stringifiedManifest: string;\n manifestPartHeaders: { 'expo-signature': string } | null;\n certificateChainBody: string | null;\n }): FormData {\n const form = new FormData();\n form.append('manifest', stringifiedManifest, {\n contentType: 'application/json',\n header: {\n ...manifestPartHeaders,\n },\n });\n if (certificateChainBody && certificateChainBody.length > 0) {\n form.append('certificate_chain', certificateChainBody, {\n contentType: 'application/x-pem-file',\n });\n }\n return form;\n }\n\n private static async getScopeKeyAsync({\n slug,\n codeSigningInfo,\n }: {\n slug: string;\n codeSigningInfo: CodeSigningInfo | null;\n }): Promise<string> {\n const scopeKeyFromCodeSigningInfo = codeSigningInfo?.scopeKey;\n if (scopeKeyFromCodeSigningInfo) {\n return scopeKeyFromCodeSigningInfo;\n }\n\n // Log.warn(\n // env.EXPO_OFFLINE\n // ? 'Using anonymous scope key in manifest for offline mode.'\n // : 'Using anonymous scope key in manifest.'\n // );\n return await getAnonymousScopeKeyAsync(slug);\n }\n}\n\nasync function getAnonymousScopeKeyAsync(slug: string): Promise<string> {\n const userAnonymousIdentifier = await getAnonymousIdAsync();\n return `@${ANONYMOUS_USERNAME}/${slug}-${userAnonymousIdentifier}`;\n}\n\nfunction convertToDictionaryItemsRepresentation(obj: { [key: string]: string }): Dictionary {\n return new Map(\n Object.entries(obj).map(([k, v]) => {\n return [k, [v, new Map()]];\n })\n );\n}\n"],"names":["ExpoGoManifestHandlerMiddleware","ResponseContentType","debug","require","ManifestMiddleware","getParsedHeaders","req","platform","parsePlatformHeader","assertRuntimePlatform","accept","accepts","acceptedType","types","responseContentType","expectSignature","headers","String","hostname","stripPort","protocol","getDefaultResponseHeaders","Map","set","_getManifestResponseAsync","requestOptions","exp","hostUri","expoGoConfig","bundleUrl","_resolveProjectSettingsAsync","runtimeVersion","resolveRuntimeVersionWithExpoUpdatesAsync","projectRoot","Updates","getRuntimeVersionAsync","policy","CommandError","codeSigningInfo","getCodeSigningInfoAsync","options","privateKeyPath","easProjectId","extra","eas","projectId","scopeKey","getScopeKeyAsync","slug","expoUpdatesManifest","id","crypto","randomUUID","createdAt","Date","toISOString","launchAsset","key","contentType","url","assets","metadata","undefined","expoClient","expoGo","stringifiedManifest","JSON","stringify","manifestPartHeaders","certificateChainBody","signature","signManifestString","serializeDictionary","convertToDictionaryItemsRepresentation","keyid","keyId","sig","alg","certificateChainForResponse","join","form","getFormData","getBoundary","body","getBuffer","toString","version","getContentTypeForResponseContentType","Object","entries","forEach","value","FormData","append","header","length","scopeKeyFromCodeSigningInfo","getAnonymousScopeKeyAsync","userAnonymousIdentifier","getAnonymousIdAsync","ANONYMOUS_USERNAME","obj","map","k","v"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../src/start/server/middleware/ExpoGoManifestHandlerMiddleware.ts"],"sourcesContent":["import { ExpoUpdatesManifest } from '@expo/config';\nimport { Updates } from '@expo/config-plugins';\nimport accepts from 'accepts';\nimport crypto from 'crypto';\nimport FormData from 'form-data';\nimport { serializeDictionary, Dictionary } from 'structured-headers';\n\nimport { ManifestMiddleware, ManifestRequestInfo } from './ManifestMiddleware';\nimport { assertRuntimePlatform, parsePlatformHeader } from './resolvePlatform';\nimport { resolveRuntimeVersionWithExpoUpdatesAsync } from './resolveRuntimeVersionWithExpoUpdatesAsync';\nimport { ServerHeaders, ServerRequest } from './server.types';\nimport { getAnonymousIdAsync } from '../../../api/user/UserSettings';\nimport { ANONYMOUS_USERNAME } from '../../../api/user/user';\nimport {\n CodeSigningInfo,\n getCodeSigningInfoAsync,\n signManifestString,\n} from '../../../utils/codesigning';\nimport { CommandError } from '../../../utils/errors';\nimport { stripPort } from '../../../utils/url';\n\nconst debug = require('debug')('expo:start:server:middleware:ExpoGoManifestHandlerMiddleware');\n\nexport enum ResponseContentType {\n TEXT_PLAIN,\n APPLICATION_JSON,\n APPLICATION_EXPO_JSON,\n MULTIPART_MIXED,\n}\n\ninterface ExpoGoManifestRequestInfo extends ManifestRequestInfo {\n responseContentType: ResponseContentType;\n expectSignature: string | null;\n}\n\nexport class ExpoGoManifestHandlerMiddleware extends ManifestMiddleware<ExpoGoManifestRequestInfo> {\n public getParsedHeaders(req: ServerRequest): ExpoGoManifestRequestInfo {\n let platform = parsePlatformHeader(req);\n\n if (!platform) {\n debug(\n `No \"expo-platform\" header or \"platform\" query parameter specified. Falling back to \"ios\".`\n );\n platform = 'ios';\n }\n\n assertRuntimePlatform(platform);\n\n // Expo Updates clients explicitly accept \"multipart/mixed\" responses while browsers implicitly\n // accept them with \"accept: */*\". To make it easier to debug manifest responses by visiting their\n // URLs in a browser, we denote the response as \"text/plain\" if the user agent appears not to be\n // an Expo Updates client.\n const accept = accepts(req);\n const acceptedType = accept.types([\n 'unknown/unknown',\n 'multipart/mixed',\n 'application/json',\n 'application/expo+json',\n 'text/plain',\n ]);\n\n let responseContentType;\n switch (acceptedType) {\n case 'multipart/mixed':\n responseContentType = ResponseContentType.MULTIPART_MIXED;\n break;\n case 'application/json':\n responseContentType = ResponseContentType.APPLICATION_JSON;\n break;\n case 'application/expo+json':\n responseContentType = ResponseContentType.APPLICATION_EXPO_JSON;\n break;\n default:\n responseContentType = ResponseContentType.TEXT_PLAIN;\n break;\n }\n\n const expectSignature = req.headers['expo-expect-signature'];\n\n return {\n responseContentType,\n platform,\n expectSignature: expectSignature ? String(expectSignature) : null,\n hostname: stripPort(req.headers['host']),\n protocol: req.headers['x-forwarded-proto'] as 'http' | 'https' | undefined,\n };\n }\n\n private getDefaultResponseHeaders(): ServerHeaders {\n const headers = new Map<string, number | string | readonly string[]>();\n // set required headers for Expo Updates manifest specification\n headers.set('expo-protocol-version', 0);\n headers.set('expo-sfv-version', 0);\n headers.set('cache-control', 'private, max-age=0');\n return headers;\n }\n\n public async _getManifestResponseAsync(requestOptions: ExpoGoManifestRequestInfo): Promise<{\n body: string;\n version: string;\n headers: ServerHeaders;\n }> {\n const { exp, hostUri, expoGoConfig, bundleUrl } =\n await this._resolveProjectSettingsAsync(requestOptions);\n\n const runtimeVersion =\n (await resolveRuntimeVersionWithExpoUpdatesAsync({\n projectRoot: this.projectRoot,\n platform: requestOptions.platform,\n })) ??\n // if expo-updates can't determine runtime version, fall back to calculation from config-plugin.\n // this happens when expo-updates is installed but runtimeVersion hasn't yet been configured or when\n // expo-updates is not installed.\n (await Updates.getRuntimeVersionAsync(\n this.projectRoot,\n { ...exp, runtimeVersion: exp.runtimeVersion ?? { policy: 'sdkVersion' } },\n requestOptions.platform\n ));\n if (!runtimeVersion) {\n throw new CommandError(\n 'MANIFEST_MIDDLEWARE',\n `Unable to determine runtime version for platform '${requestOptions.platform}'`\n );\n }\n\n const codeSigningInfo = await getCodeSigningInfoAsync(\n exp,\n requestOptions.expectSignature,\n this.options.privateKeyPath\n );\n\n const easProjectId = exp.extra?.eas?.projectId as string | undefined | null;\n const scopeKey = await ExpoGoManifestHandlerMiddleware.getScopeKeyAsync({\n slug: exp.slug,\n codeSigningInfo,\n });\n\n const expoUpdatesManifest: ExpoUpdatesManifest = {\n id: crypto.randomUUID(),\n createdAt: new Date().toISOString(),\n runtimeVersion,\n launchAsset: {\n key: 'bundle',\n contentType: 'application/javascript',\n url: bundleUrl,\n },\n assets: [], // assets are not used in development\n metadata: {}, // required for the client to detect that this is an expo-updates manifest\n extra: {\n eas: {\n projectId: easProjectId ?? undefined,\n },\n expoClient: {\n ...exp,\n hostUri,\n },\n expoGo: expoGoConfig,\n scopeKey,\n },\n };\n\n const stringifiedManifest = JSON.stringify(expoUpdatesManifest);\n\n let manifestPartHeaders: { 'expo-signature': string } | null = null;\n let certificateChainBody: string | null = null;\n if (codeSigningInfo) {\n const signature = signManifestString(stringifiedManifest, codeSigningInfo);\n manifestPartHeaders = {\n 'expo-signature': serializeDictionary(\n convertToDictionaryItemsRepresentation({\n keyid: codeSigningInfo.keyId,\n sig: signature,\n alg: 'rsa-v1_5-sha256',\n })\n ),\n };\n certificateChainBody = codeSigningInfo.certificateChainForResponse.join('\\n');\n }\n\n const headers = this.getDefaultResponseHeaders();\n\n switch (requestOptions.responseContentType) {\n case ResponseContentType.MULTIPART_MIXED: {\n const form = this.getFormData({\n stringifiedManifest,\n manifestPartHeaders,\n certificateChainBody,\n });\n headers.set('content-type', `multipart/mixed; boundary=${form.getBoundary()}`);\n return {\n body: form.getBuffer().toString(),\n version: runtimeVersion,\n headers,\n };\n }\n case ResponseContentType.APPLICATION_EXPO_JSON:\n case ResponseContentType.APPLICATION_JSON:\n case ResponseContentType.TEXT_PLAIN: {\n headers.set(\n 'content-type',\n ExpoGoManifestHandlerMiddleware.getContentTypeForResponseContentType(\n requestOptions.responseContentType\n )\n );\n if (manifestPartHeaders) {\n Object.entries(manifestPartHeaders).forEach(([key, value]) => {\n headers.set(key, value);\n });\n }\n\n return {\n body: stringifiedManifest,\n version: runtimeVersion,\n headers,\n };\n }\n }\n }\n\n private static getContentTypeForResponseContentType(\n responseContentType: ResponseContentType\n ): string {\n switch (responseContentType) {\n case ResponseContentType.MULTIPART_MIXED:\n return 'multipart/mixed';\n case ResponseContentType.APPLICATION_EXPO_JSON:\n return 'application/expo+json';\n case ResponseContentType.APPLICATION_JSON:\n return 'application/json';\n case ResponseContentType.TEXT_PLAIN:\n return 'text/plain';\n }\n }\n\n private getFormData({\n stringifiedManifest,\n manifestPartHeaders,\n certificateChainBody,\n }: {\n stringifiedManifest: string;\n manifestPartHeaders: { 'expo-signature': string } | null;\n certificateChainBody: string | null;\n }): FormData {\n const form = new FormData();\n form.append('manifest', stringifiedManifest, {\n contentType: 'application/json',\n header: {\n ...manifestPartHeaders,\n },\n });\n if (certificateChainBody && certificateChainBody.length > 0) {\n form.append('certificate_chain', certificateChainBody, {\n contentType: 'application/x-pem-file',\n });\n }\n return form;\n }\n\n private static async getScopeKeyAsync({\n slug,\n codeSigningInfo,\n }: {\n slug: string;\n codeSigningInfo: CodeSigningInfo | null;\n }): Promise<string> {\n const scopeKeyFromCodeSigningInfo = codeSigningInfo?.scopeKey;\n if (scopeKeyFromCodeSigningInfo) {\n return scopeKeyFromCodeSigningInfo;\n }\n\n // Log.warn(\n // env.EXPO_OFFLINE\n // ? 'Using anonymous scope key in manifest for offline mode.'\n // : 'Using anonymous scope key in manifest.'\n // );\n return await getAnonymousScopeKeyAsync(slug);\n }\n}\n\nasync function getAnonymousScopeKeyAsync(slug: string): Promise<string> {\n const userAnonymousIdentifier = await getAnonymousIdAsync();\n return `@${ANONYMOUS_USERNAME}/${slug}-${userAnonymousIdentifier}`;\n}\n\nfunction convertToDictionaryItemsRepresentation(obj: { [key: string]: string }): Dictionary {\n return new Map(\n Object.entries(obj).map(([k, v]) => {\n return [k, [v, new Map()]];\n })\n );\n}\n"],"names":["ExpoGoManifestHandlerMiddleware","debug","require","ResponseContentType","TEXT_PLAIN","APPLICATION_JSON","APPLICATION_EXPO_JSON","MULTIPART_MIXED","ManifestMiddleware","getParsedHeaders","req","platform","parsePlatformHeader","assertRuntimePlatform","accept","accepts","acceptedType","types","responseContentType","expectSignature","headers","String","hostname","stripPort","protocol","getDefaultResponseHeaders","Map","set","_getManifestResponseAsync","requestOptions","exp","hostUri","expoGoConfig","bundleUrl","_resolveProjectSettingsAsync","runtimeVersion","resolveRuntimeVersionWithExpoUpdatesAsync","projectRoot","Updates","getRuntimeVersionAsync","policy","CommandError","codeSigningInfo","getCodeSigningInfoAsync","options","privateKeyPath","easProjectId","extra","eas","projectId","scopeKey","getScopeKeyAsync","slug","expoUpdatesManifest","id","crypto","randomUUID","createdAt","Date","toISOString","launchAsset","key","contentType","url","assets","metadata","undefined","expoClient","expoGo","stringifiedManifest","JSON","stringify","manifestPartHeaders","certificateChainBody","signature","signManifestString","serializeDictionary","convertToDictionaryItemsRepresentation","keyid","keyId","sig","alg","certificateChainForResponse","join","form","getFormData","getBoundary","body","getBuffer","toString","version","getContentTypeForResponseContentType","Object","entries","forEach","value","FormData","append","header","length","scopeKeyFromCodeSigningInfo","getAnonymousScopeKeyAsync","userAnonymousIdentifier","getAnonymousIdAsync","ANONYMOUS_USERNAME","obj","map","k","v"],"mappings":"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"}