@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/metro/withMetroResolvers.ts"],"sourcesContent":["/**\n * Copyright © 2022 650 Industries.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport chalk from 'chalk';\nimport { ConfigT as MetroConfig } from 'metro-config';\nimport type { ResolutionContext, CustomResolutionContext } from 'metro-resolver';\nimport * as metroResolver from 'metro-resolver';\nimport path from 'path';\n\nimport { isFailedToResolveNameError, isFailedToResolvePathError } from './metroErrors';\nimport { env } from '../../../utils/env';\n\nconst debug = require('debug')('expo:metro:withMetroResolvers') as typeof console.log;\n\nexport type MetroResolver = NonNullable<MetroConfig['resolver']['resolveRequest']>;\n\n/** Expo Metro Resolvers can return `null` to skip without throwing an error. Metro Resolvers will throw either a `FailedToResolveNameError` or `FailedToResolvePathError`. */\nexport type ExpoCustomMetroResolver = (\n ...args: Parameters<MetroResolver>\n) => ReturnType<MetroResolver> | null;\n\n/** @returns `MetroResolver` utilizing the upstream `resolve` method. */\nexport function getDefaultMetroResolver(projectRoot: string): MetroResolver {\n return (context: ResolutionContext, moduleName: string, platform: string | null) => {\n return metroResolver.resolve(context, moduleName, platform);\n };\n}\n\nfunction optionsKeyForContext(context: ResolutionContext) {\n const canonicalize = require('metro-core/src/canonicalize');\n\n // Compound key for the resolver cache\n return JSON.stringify(context.customResolverOptions ?? {}, canonicalize) ?? '';\n}\n\n/**\n * Extend the Metro config `resolver.resolveRequest` method with additional resolvers that can\n * exit early by returning a `Resolution` or skip to the next resolver by returning `null`.\n *\n * @param config Metro config.\n * @param resolvers custom MetroResolver to chain.\n * @returns a new `MetroConfig` with the `resolver.resolveRequest` method chained.\n */\nexport function withMetroResolvers(\n config: MetroConfig,\n resolvers: ExpoCustomMetroResolver[]\n): MetroConfig {\n debug(\n `Appending ${\n resolvers.length\n } custom resolvers to Metro config. (has custom resolver: ${!!config.resolver?.resolveRequest})`\n );\n // const hasUserDefinedResolver = !!config.resolver?.resolveRequest;\n // const defaultResolveRequest = getDefaultMetroResolver(projectRoot);\n const originalResolveRequest = config.resolver?.resolveRequest;\n\n return {\n ...config,\n resolver: {\n ...config.resolver,\n resolveRequest(context, moduleName, platform) {\n const upstreamResolveRequest = context.resolveRequest;\n\n const universalContext = {\n ...context,\n resolveRequest(\n ctx: CustomResolutionContext,\n moduleName: string,\n platform: string | null\n ) {\n for (const resolver of resolvers) {\n try {\n const res = resolver(ctx, moduleName, platform);\n if (res) {\n return res;\n }\n } catch (error: any) {\n // If the error is directly related to a resolver not being able to resolve a module, then\n // we can ignore the error and try the next resolver. Otherwise, we should throw the error.\n const isResolutionError =\n isFailedToResolveNameError(error) || isFailedToResolvePathError(error);\n if (!isResolutionError) {\n throw error;\n }\n debug(\n `Custom resolver threw: ${error.constructor.name}. (module: ${moduleName}, platform: ${platform}, env: ${ctx.customResolverOptions?.environment}, origin: ${ctx.originModulePath})`\n );\n }\n }\n // If we haven't returned by now, use the original resolver or upstream resolver.\n return upstreamResolveRequest(ctx, moduleName, platform);\n },\n };\n\n // If the user defined a resolver, run it first and depend on the documented\n // chaining logic: https://facebook.github.io/metro/docs/resolution/#resolution-algorithm\n //\n // config.resolver.resolveRequest = (context, moduleName, platform) => {\n //\n // // Do work...\n //\n // return context.resolveRequest(context, moduleName, platform);\n // };\n const firstResolver = originalResolveRequest ?? universalContext.resolveRequest;\n return firstResolver(universalContext, moduleName, platform);\n },\n },\n };\n}\n\n/**\n * Hook into the Metro resolver chain and mutate the context so users can resolve against our custom assumptions.\n * For example, this will set `preferNativePlatform` to false when bundling for web.\n * */\nexport function withMetroMutatedResolverContext(\n config: MetroConfig,\n getContext: (\n ctx: CustomResolutionContext,\n moduleName: string,\n platform: string | null\n ) => CustomResolutionContext\n): MetroConfig {\n const defaultResolveRequest = getDefaultMetroResolver(config.projectRoot);\n const originalResolveRequest = config.resolver?.resolveRequest;\n\n return {\n ...config,\n resolver: {\n ...config.resolver,\n resolveRequest(context, moduleName, platform) {\n const universalContext = getContext(context, moduleName, platform);\n const firstResolver =\n originalResolveRequest ?? universalContext.resolveRequest ?? defaultResolveRequest;\n return firstResolver(universalContext, moduleName, platform);\n },\n },\n };\n}\n\nexport function withMetroErrorReportingResolver(config: MetroConfig): MetroConfig {\n if (!env.EXPO_METRO_UNSTABLE_ERRORS) {\n return config;\n }\n\n const originalResolveRequest = config.resolver?.resolveRequest;\n\n function mutateResolutionError(\n error: Error,\n context: ResolutionContext,\n moduleName: string,\n platform: string | null\n ) {\n const inputPlatform = platform ?? 'null';\n\n const mapByOrigin = depGraph.get(optionsKeyForContext(context));\n const mapByPlatform = mapByOrigin?.get(inputPlatform);\n\n if (!mapByPlatform) {\n return error;\n }\n\n // collect all references inversely using some expensive lookup\n\n const getReferences = (origin: string) => {\n const inverseOrigin: { origin: string; previous: string; request: string }[] = [];\n\n if (!mapByPlatform) {\n return inverseOrigin;\n }\n\n for (const [originKey, mapByTarget] of mapByPlatform) {\n // search comparing origin to path\n\n const found = [...mapByTarget.values()].find((resolution) => resolution.path === origin);\n if (found) {\n inverseOrigin.push({\n origin,\n previous: originKey,\n request: found.request,\n });\n }\n }\n\n return inverseOrigin;\n };\n\n const pad = (num: number) => {\n return new Array(num).fill(' ').join('');\n };\n\n const root = config.server?.unstable_serverRoot ?? config.projectRoot;\n\n type InverseDepResult = {\n origin: string;\n request: string;\n previous: InverseDepResult[];\n };\n const recurseBackWithLimit = (\n req: { origin: string; request: string },\n limit: number,\n count: number = 0\n ) => {\n const results: InverseDepResult = {\n origin: req.origin,\n request: req.request,\n previous: [],\n };\n\n if (count >= limit) {\n return results;\n }\n\n const inverse = getReferences(req.origin);\n for (const match of inverse) {\n // Use more qualified name if possible\n // results.origin = match.origin;\n // Found entry point\n if (req.origin === match.previous) {\n continue;\n }\n results.previous.push(\n recurseBackWithLimit({ origin: match.previous, request: match.request }, limit, count + 1)\n );\n }\n return results;\n };\n\n const inverseTree = recurseBackWithLimit(\n { origin: context.originModulePath, request: moduleName },\n // TODO: Do we need to expose this?\n 35\n );\n\n if (inverseTree.previous.length > 0) {\n debug('Found inverse graph:', JSON.stringify(inverseTree, null, 2));\n let extraMessage = chalk.bold('Import stack:');\n const printRecursive = (tree: InverseDepResult, depth: number = 0) => {\n let filename = path.relative(root, tree.origin);\n if (filename.match(/\\?ctx=[\\w\\d]+$/)) {\n filename = filename.replace(/\\?ctx=[\\w\\d]+$/, chalk.dim(' (require.context)'));\n } else {\n let formattedRequest = chalk.green(`\"${tree.request}\"`);\n\n if (\n // If bundling for web and the import is pulling internals from outside of react-native\n // then mark it as an invalid import.\n inputPlatform === 'web' &&\n !/^(node_modules\\/)?react-native\\//.test(filename) &&\n tree.request.match(/^react-native\\/.*/)\n ) {\n formattedRequest =\n formattedRequest +\n chalk`\\n {yellow Importing react-native internals is not supported on web.}`;\n }\n\n filename = filename + chalk`\\n{gray |} {cyan import} ${formattedRequest}\\n`;\n }\n let line = '\\n' + pad(depth) + chalk.gray(' ') + filename;\n if (filename.match(/node_modules/)) {\n line = chalk.gray(\n // Bold the node module name\n line.replace(/node_modules\\/([^/]+)/, (_match, p1) => {\n return 'node_modules/' + chalk.bold(p1);\n })\n );\n }\n extraMessage += line;\n for (const child of tree.previous) {\n printRecursive(\n child,\n // Only add depth if there are multiple children\n tree.previous.length > 1 ? depth + 1 : depth\n );\n }\n };\n printRecursive(inverseTree);\n\n debug('inverse graph message:', extraMessage);\n\n // @ts-expect-error\n error._expoImportStack = extraMessage;\n } else {\n debug('Found no inverse tree for:', context.originModulePath);\n }\n\n return error;\n }\n\n const depGraph: Map<\n // custom options\n string,\n Map<\n // platform\n string,\n Map<\n // origin module name\n string,\n Set<{\n // required module name\n path: string;\n // This isn't entirely accurate since a module can be imported multiple times in a file,\n // and use different names. But it's good enough for now.\n request: string;\n }>\n >\n >\n > = new Map();\n\n return {\n ...config,\n resolver: {\n ...config.resolver,\n resolveRequest(context, moduleName, platform) {\n const storeResult = (res: NonNullable<ReturnType<ExpoCustomMetroResolver>>) => {\n const inputPlatform = platform ?? 'null';\n\n const key = optionsKeyForContext(context);\n if (!depGraph.has(key)) depGraph.set(key, new Map());\n const mapByTarget = depGraph.get(key);\n if (!mapByTarget!.has(inputPlatform)) mapByTarget!.set(inputPlatform, new Map());\n const mapByPlatform = mapByTarget!.get(inputPlatform);\n if (!mapByPlatform!.has(context.originModulePath))\n mapByPlatform!.set(context.originModulePath, new Set());\n const setForModule = mapByPlatform!.get(context.originModulePath)!;\n\n const qualifiedModuleName = res?.type === 'sourceFile' ? res.filePath : moduleName;\n setForModule.add({ path: qualifiedModuleName, request: moduleName });\n };\n\n // If the user defined a resolver, run it first and depend on the documented\n // chaining logic: https://facebook.github.io/metro/docs/resolution/#resolution-algorithm\n //\n // config.resolver.resolveRequest = (context, moduleName, platform) => {\n //\n // // Do work...\n //\n // return context.resolveRequest(context, moduleName, platform);\n // };\n try {\n const firstResolver = originalResolveRequest ?? context.resolveRequest;\n const res = firstResolver(context, moduleName, platform);\n storeResult(res);\n return res;\n } catch (error: any) {\n throw mutateResolutionError(error, context, moduleName, platform);\n }\n },\n },\n };\n}\n"],"names":["getDefaultMetroResolver","withMetroErrorReportingResolver","withMetroMutatedResolverContext","withMetroResolvers","debug","require","projectRoot","context","moduleName","platform","metroResolver","resolve","optionsKeyForContext","canonicalize","JSON","stringify","customResolverOptions","config","resolvers","length","resolver","resolveRequest","originalResolveRequest","upstreamResolveRequest","universalContext","ctx","res","error","isResolutionError","isFailedToResolveNameError","isFailedToResolvePathError","constructor","name","environment","originModulePath","firstResolver","getContext","defaultResolveRequest","env","EXPO_METRO_UNSTABLE_ERRORS","mutateResolutionError","inputPlatform","mapByOrigin","depGraph","get","mapByPlatform","getReferences","origin","inverseOrigin","originKey","mapByTarget","found","values","find","resolution","path","push","previous","request","pad","num","Array","fill","join","root","server","unstable_serverRoot","recurseBackWithLimit","req","limit","count","results","inverse","match","inverseTree","extraMessage","chalk","bold","printRecursive","tree","depth","filename","relative","replace","dim","formattedRequest","green","test","line","gray","_match","p1","child","_expoImportStack","Map","storeResult","key","has","set","Set","setForModule","qualifiedModuleName","type","filePath","add"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../src/start/server/metro/withMetroResolvers.ts"],"sourcesContent":["/**\n * Copyright © 2022 650 Industries.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport chalk from 'chalk';\nimport { ConfigT as MetroConfig } from 'metro-config';\nimport type { ResolutionContext, CustomResolutionContext } from 'metro-resolver';\nimport * as metroResolver from 'metro-resolver';\nimport path from 'path';\n\nimport { isFailedToResolveNameError, isFailedToResolvePathError } from './metroErrors';\nimport { env } from '../../../utils/env';\n\nconst debug = require('debug')('expo:metro:withMetroResolvers') as typeof console.log;\n\nexport type MetroResolver = NonNullable<MetroConfig['resolver']['resolveRequest']>;\n\n/** Expo Metro Resolvers can return `null` to skip without throwing an error. Metro Resolvers will throw either a `FailedToResolveNameError` or `FailedToResolvePathError`. */\nexport type ExpoCustomMetroResolver = (\n ...args: Parameters<MetroResolver>\n) => ReturnType<MetroResolver> | null;\n\n/** @returns `MetroResolver` utilizing the upstream `resolve` method. */\nexport function getDefaultMetroResolver(projectRoot: string): MetroResolver {\n return (context: ResolutionContext, moduleName: string, platform: string | null) => {\n return metroResolver.resolve(context, moduleName, platform);\n };\n}\n\nfunction optionsKeyForContext(context: ResolutionContext) {\n const canonicalize = require('metro-core/src/canonicalize');\n\n // Compound key for the resolver cache\n return JSON.stringify(context.customResolverOptions ?? {}, canonicalize) ?? '';\n}\n\n/**\n * Extend the Metro config `resolver.resolveRequest` method with additional resolvers that can\n * exit early by returning a `Resolution` or skip to the next resolver by returning `null`.\n *\n * @param config Metro config.\n * @param resolvers custom MetroResolver to chain.\n * @returns a new `MetroConfig` with the `resolver.resolveRequest` method chained.\n */\nexport function withMetroResolvers(\n config: MetroConfig,\n resolvers: ExpoCustomMetroResolver[]\n): MetroConfig {\n debug(\n `Appending ${\n resolvers.length\n } custom resolvers to Metro config. (has custom resolver: ${!!config.resolver?.resolveRequest})`\n );\n // const hasUserDefinedResolver = !!config.resolver?.resolveRequest;\n // const defaultResolveRequest = getDefaultMetroResolver(projectRoot);\n const originalResolveRequest = config.resolver?.resolveRequest;\n\n return {\n ...config,\n resolver: {\n ...config.resolver,\n resolveRequest(context, moduleName, platform) {\n const upstreamResolveRequest = context.resolveRequest;\n\n const universalContext = {\n ...context,\n resolveRequest(\n ctx: CustomResolutionContext,\n moduleName: string,\n platform: string | null\n ) {\n for (const resolver of resolvers) {\n try {\n const res = resolver(ctx, moduleName, platform);\n if (res) {\n return res;\n }\n } catch (error: any) {\n // If the error is directly related to a resolver not being able to resolve a module, then\n // we can ignore the error and try the next resolver. Otherwise, we should throw the error.\n const isResolutionError =\n isFailedToResolveNameError(error) || isFailedToResolvePathError(error);\n if (!isResolutionError) {\n throw error;\n }\n debug(\n `Custom resolver threw: ${error.constructor.name}. (module: ${moduleName}, platform: ${platform}, env: ${ctx.customResolverOptions?.environment}, origin: ${ctx.originModulePath})`\n );\n }\n }\n // If we haven't returned by now, use the original resolver or upstream resolver.\n return upstreamResolveRequest(ctx, moduleName, platform);\n },\n };\n\n // If the user defined a resolver, run it first and depend on the documented\n // chaining logic: https://facebook.github.io/metro/docs/resolution/#resolution-algorithm\n //\n // config.resolver.resolveRequest = (context, moduleName, platform) => {\n //\n // // Do work...\n //\n // return context.resolveRequest(context, moduleName, platform);\n // };\n const firstResolver = originalResolveRequest ?? universalContext.resolveRequest;\n return firstResolver(universalContext, moduleName, platform);\n },\n },\n };\n}\n\n/**\n * Hook into the Metro resolver chain and mutate the context so users can resolve against our custom assumptions.\n * For example, this will set `preferNativePlatform` to false when bundling for web.\n * */\nexport function withMetroMutatedResolverContext(\n config: MetroConfig,\n getContext: (\n ctx: CustomResolutionContext,\n moduleName: string,\n platform: string | null\n ) => CustomResolutionContext\n): MetroConfig {\n const defaultResolveRequest = getDefaultMetroResolver(config.projectRoot);\n const originalResolveRequest = config.resolver?.resolveRequest;\n\n return {\n ...config,\n resolver: {\n ...config.resolver,\n resolveRequest(context, moduleName, platform) {\n const universalContext = getContext(context, moduleName, platform);\n const firstResolver =\n originalResolveRequest ?? universalContext.resolveRequest ?? defaultResolveRequest;\n return firstResolver(universalContext, moduleName, platform);\n },\n },\n };\n}\n\nexport function withMetroErrorReportingResolver(config: MetroConfig): MetroConfig {\n if (!env.EXPO_METRO_UNSTABLE_ERRORS) {\n return config;\n }\n\n const originalResolveRequest = config.resolver?.resolveRequest;\n\n function mutateResolutionError(\n error: Error,\n context: ResolutionContext,\n moduleName: string,\n platform: string | null\n ) {\n const inputPlatform = platform ?? 'null';\n\n const mapByOrigin = depGraph.get(optionsKeyForContext(context));\n const mapByPlatform = mapByOrigin?.get(inputPlatform);\n\n if (!mapByPlatform) {\n return error;\n }\n\n // collect all references inversely using some expensive lookup\n\n const getReferences = (origin: string) => {\n const inverseOrigin: { origin: string; previous: string; request: string }[] = [];\n\n if (!mapByPlatform) {\n return inverseOrigin;\n }\n\n for (const [originKey, mapByTarget] of mapByPlatform) {\n // search comparing origin to path\n\n const found = [...mapByTarget.values()].find((resolution) => resolution.path === origin);\n if (found) {\n inverseOrigin.push({\n origin,\n previous: originKey,\n request: found.request,\n });\n }\n }\n\n return inverseOrigin;\n };\n\n const pad = (num: number) => {\n return new Array(num).fill(' ').join('');\n };\n\n const root = config.server?.unstable_serverRoot ?? config.projectRoot;\n\n type InverseDepResult = {\n origin: string;\n request: string;\n previous: InverseDepResult[];\n };\n const recurseBackWithLimit = (\n req: { origin: string; request: string },\n limit: number,\n count: number = 0\n ) => {\n const results: InverseDepResult = {\n origin: req.origin,\n request: req.request,\n previous: [],\n };\n\n if (count >= limit) {\n return results;\n }\n\n const inverse = getReferences(req.origin);\n for (const match of inverse) {\n // Use more qualified name if possible\n // results.origin = match.origin;\n // Found entry point\n if (req.origin === match.previous) {\n continue;\n }\n results.previous.push(\n recurseBackWithLimit({ origin: match.previous, request: match.request }, limit, count + 1)\n );\n }\n return results;\n };\n\n const inverseTree = recurseBackWithLimit(\n { origin: context.originModulePath, request: moduleName },\n // TODO: Do we need to expose this?\n 35\n );\n\n if (inverseTree.previous.length > 0) {\n debug('Found inverse graph:', JSON.stringify(inverseTree, null, 2));\n let extraMessage = chalk.bold('Import stack:');\n const printRecursive = (tree: InverseDepResult, depth: number = 0) => {\n let filename = path.relative(root, tree.origin);\n if (filename.match(/\\?ctx=[\\w\\d]+$/)) {\n filename = filename.replace(/\\?ctx=[\\w\\d]+$/, chalk.dim(' (require.context)'));\n } else {\n let formattedRequest = chalk.green(`\"${tree.request}\"`);\n\n if (\n // If bundling for web and the import is pulling internals from outside of react-native\n // then mark it as an invalid import.\n inputPlatform === 'web' &&\n !/^(node_modules\\/)?react-native\\//.test(filename) &&\n tree.request.match(/^react-native\\/.*/)\n ) {\n formattedRequest =\n formattedRequest +\n chalk`\\n {yellow Importing react-native internals is not supported on web.}`;\n }\n\n filename = filename + chalk`\\n{gray |} {cyan import} ${formattedRequest}\\n`;\n }\n let line = '\\n' + pad(depth) + chalk.gray(' ') + filename;\n if (filename.match(/node_modules/)) {\n line = chalk.gray(\n // Bold the node module name\n line.replace(/node_modules\\/([^/]+)/, (_match, p1) => {\n return 'node_modules/' + chalk.bold(p1);\n })\n );\n }\n extraMessage += line;\n for (const child of tree.previous) {\n printRecursive(\n child,\n // Only add depth if there are multiple children\n tree.previous.length > 1 ? depth + 1 : depth\n );\n }\n };\n printRecursive(inverseTree);\n\n debug('inverse graph message:', extraMessage);\n\n // @ts-expect-error\n error._expoImportStack = extraMessage;\n } else {\n debug('Found no inverse tree for:', context.originModulePath);\n }\n\n return error;\n }\n\n const depGraph: Map<\n // custom options\n string,\n Map<\n // platform\n string,\n Map<\n // origin module name\n string,\n Set<{\n // required module name\n path: string;\n // This isn't entirely accurate since a module can be imported multiple times in a file,\n // and use different names. But it's good enough for now.\n request: string;\n }>\n >\n >\n > = new Map();\n\n return {\n ...config,\n resolver: {\n ...config.resolver,\n resolveRequest(context, moduleName, platform) {\n const storeResult = (res: NonNullable<ReturnType<ExpoCustomMetroResolver>>) => {\n const inputPlatform = platform ?? 'null';\n\n const key = optionsKeyForContext(context);\n if (!depGraph.has(key)) depGraph.set(key, new Map());\n const mapByTarget = depGraph.get(key);\n if (!mapByTarget!.has(inputPlatform)) mapByTarget!.set(inputPlatform, new Map());\n const mapByPlatform = mapByTarget!.get(inputPlatform);\n if (!mapByPlatform!.has(context.originModulePath))\n mapByPlatform!.set(context.originModulePath, new Set());\n const setForModule = mapByPlatform!.get(context.originModulePath)!;\n\n const qualifiedModuleName = res?.type === 'sourceFile' ? res.filePath : moduleName;\n setForModule.add({ path: qualifiedModuleName, request: moduleName });\n };\n\n // If the user defined a resolver, run it first and depend on the documented\n // chaining logic: https://facebook.github.io/metro/docs/resolution/#resolution-algorithm\n //\n // config.resolver.resolveRequest = (context, moduleName, platform) => {\n //\n // // Do work...\n //\n // return context.resolveRequest(context, moduleName, platform);\n // };\n try {\n const firstResolver = originalResolveRequest ?? context.resolveRequest;\n const res = firstResolver(context, moduleName, platform);\n storeResult(res);\n return res;\n } catch (error: any) {\n throw mutateResolutionError(error, context, moduleName, platform);\n }\n },\n },\n };\n}\n"],"names":["getDefaultMetroResolver","withMetroResolvers","withMetroMutatedResolverContext","withMetroErrorReportingResolver","debug","require","projectRoot","context","moduleName","platform","metroResolver","resolve","optionsKeyForContext","canonicalize","JSON","stringify","customResolverOptions","config","resolvers","length","resolver","resolveRequest","originalResolveRequest","upstreamResolveRequest","universalContext","ctx","res","error","isResolutionError","isFailedToResolveNameError","isFailedToResolvePathError","constructor","name","environment","originModulePath","firstResolver","getContext","defaultResolveRequest","env","EXPO_METRO_UNSTABLE_ERRORS","mutateResolutionError","inputPlatform","mapByOrigin","depGraph","get","mapByPlatform","getReferences","origin","inverseOrigin","originKey","mapByTarget","found","values","find","resolution","path","push","previous","request","pad","num","Array","fill","join","root","server","unstable_serverRoot","recurseBackWithLimit","req","limit","count","results","inverse","match","inverseTree","extraMessage","chalk","bold","printRecursive","tree","depth","filename","relative","replace","dim","formattedRequest","green","test","line","gray","_match","p1","child","_expoImportStack","Map","storeResult","key","has","set","Set","setForModule","qualifiedModuleName","type","filePath","add"],"mappings":"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"}
@@ -4,24 +4,22 @@ Object.defineProperty(exports, "__esModule", {
4
4
  });
5
5
  Object.defineProperty(exports, "ContextModuleSourceMapsMiddleware", {
6
6
  enumerable: true,
7
- get: function() {
8
- return ContextModuleSourceMapsMiddleware;
9
- }
7
+ get: ()=>ContextModuleSourceMapsMiddleware
10
8
  });
11
- const debug = require('debug')('expo:start:server:middleware:metro-context-modules');
9
+ const debug = require("debug")("expo:start:server:middleware:metro-context-modules");
12
10
  class ContextModuleSourceMapsMiddleware {
13
11
  getHandler() {
14
12
  return (req, res, next)=>{
15
- if (!(req == null ? void 0 : req.url) || req.method !== 'GET' && req.method !== 'HEAD') {
13
+ if (!(req == null ? void 0 : req.url) || req.method !== "GET" && req.method !== "HEAD") {
16
14
  return next();
17
15
  }
18
16
  if (req.url.match(/%3Fctx=[\d\w\W]+\.map\?/)) {
19
- debug('Skipping sourcemap request for context module %s', req.url);
17
+ debug("Skipping sourcemap request for context module %s", req.url);
20
18
  // Return a noop response for the sourcemap
21
19
  res.writeHead(200, {
22
- 'Content-Type': 'application/json'
20
+ "Content-Type": "application/json"
23
21
  });
24
- res.end('{}');
22
+ res.end("{}");
25
23
  return;
26
24
  }
27
25
  next();
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/start/server/middleware/ContextModuleSourceMapsMiddleware.ts"],"sourcesContent":["import { ServerRequest, ServerResponse } from './server.types';\n\nconst debug = require('debug')(\n 'expo:start:server:middleware:metro-context-modules'\n) as typeof console.log;\n\n/**\n * Source maps for `require.context` modules aren't supported in the Metro dev server\n * we should intercept the request and return a noop response to prevent Chrome/Metro\n * from erroring out.\n */\nexport class ContextModuleSourceMapsMiddleware {\n getHandler() {\n return (req: ServerRequest, res: ServerResponse, next: any) => {\n if (!req?.url || (req.method !== 'GET' && req.method !== 'HEAD')) {\n return next();\n }\n\n if (req.url.match(/%3Fctx=[\\d\\w\\W]+\\.map\\?/)) {\n debug('Skipping sourcemap request for context module %s', req.url);\n // Return a noop response for the sourcemap\n res.writeHead(200, {\n 'Content-Type': 'application/json',\n });\n res.end('{}');\n return;\n }\n\n next();\n };\n }\n}\n"],"names":["ContextModuleSourceMapsMiddleware","debug","require","getHandler","req","res","next","url","method","match","writeHead","end"],"mappings":";;;;+BAWaA;;;eAAAA;;;AATb,MAAMC,QAAQC,QAAQ,SACpB;AAQK,MAAMF;IACXG,aAAa;QACX,OAAO,CAACC,KAAoBC,KAAqBC;YAC/C,IAAI,EAACF,uBAAAA,IAAKG,GAAG,KAAKH,IAAII,MAAM,KAAK,SAASJ,IAAII,MAAM,KAAK,QAAS;gBAChE,OAAOF;YACT;YAEA,IAAIF,IAAIG,GAAG,CAACE,KAAK,CAAC,4BAA4B;gBAC5CR,MAAM,oDAAoDG,IAAIG,GAAG;gBACjE,2CAA2C;gBAC3CF,IAAIK,SAAS,CAAC,KAAK;oBACjB,gBAAgB;gBAClB;gBACAL,IAAIM,GAAG,CAAC;gBACR;YACF;YAEAL;QACF;IACF;AACF"}
1
+ {"version":3,"sources":["../../../../../src/start/server/middleware/ContextModuleSourceMapsMiddleware.ts"],"sourcesContent":["import { ServerRequest, ServerResponse } from './server.types';\n\nconst debug = require('debug')(\n 'expo:start:server:middleware:metro-context-modules'\n) as typeof console.log;\n\n/**\n * Source maps for `require.context` modules aren't supported in the Metro dev server\n * we should intercept the request and return a noop response to prevent Chrome/Metro\n * from erroring out.\n */\nexport class ContextModuleSourceMapsMiddleware {\n getHandler() {\n return (req: ServerRequest, res: ServerResponse, next: any) => {\n if (!req?.url || (req.method !== 'GET' && req.method !== 'HEAD')) {\n return next();\n }\n\n if (req.url.match(/%3Fctx=[\\d\\w\\W]+\\.map\\?/)) {\n debug('Skipping sourcemap request for context module %s', req.url);\n // Return a noop response for the sourcemap\n res.writeHead(200, {\n 'Content-Type': 'application/json',\n });\n res.end('{}');\n return;\n }\n\n next();\n };\n }\n}\n"],"names":["ContextModuleSourceMapsMiddleware","debug","require","getHandler","req","res","next","url","method","match","writeHead","end"],"mappings":"AAAA;;;;+BAWaA,mCAAiC;;aAAjCA,iCAAiC;;AAT9C,MAAMC,KAAK,GAAGC,OAAO,CAAC,OAAO,CAAC,CAC5B,oDAAoD,CACrD,AAAsB,AAAC;AAOjB,MAAMF,iCAAiC;IAC5CG,UAAU,GAAG;QACX,OAAO,CAACC,GAAkB,EAAEC,GAAmB,EAAEC,IAAS,GAAK;YAC7D,IAAI,CAACF,CAAAA,GAAG,QAAK,GAARA,KAAAA,CAAQ,GAARA,GAAG,CAAEG,GAAG,CAAA,IAAKH,GAAG,CAACI,MAAM,KAAK,KAAK,IAAIJ,GAAG,CAACI,MAAM,KAAK,MAAM,AAAC,EAAE;gBAChE,OAAOF,IAAI,EAAE,CAAC;YAChB,CAAC;YAED,IAAIF,GAAG,CAACG,GAAG,CAACE,KAAK,2BAA2B,EAAE;gBAC5CR,KAAK,CAAC,kDAAkD,EAAEG,GAAG,CAACG,GAAG,CAAC,CAAC;gBACnE,2CAA2C;gBAC3CF,GAAG,CAACK,SAAS,CAAC,GAAG,EAAE;oBACjB,cAAc,EAAE,kBAAkB;iBACnC,CAAC,CAAC;gBACHL,GAAG,CAACM,GAAG,CAAC,IAAI,CAAC,CAAC;gBACd,OAAO;YACT,CAAC;YAEDL,IAAI,EAAE,CAAC;QACT,CAAC,CAAC;IACJ;CACD"}
@@ -4,40 +4,38 @@ Object.defineProperty(exports, "__esModule", {
4
4
  });
5
5
  Object.defineProperty(exports, "createCorsMiddleware", {
6
6
  enumerable: true,
7
- get: function() {
8
- return createCorsMiddleware;
9
- }
7
+ get: ()=>createCorsMiddleware
10
8
  });
11
9
  const DEFAULT_ALLOWED_CORS_HOSTNAMES = [
12
- 'localhost',
13
- 'chrome-devtools-frontend.appspot.com',
14
- 'devtools'
10
+ "localhost",
11
+ "chrome-devtools-frontend.appspot.com",
12
+ "devtools"
15
13
  ];
16
14
  function createCorsMiddleware(exp) {
17
- var _exp_extra_router, _exp_extra, _exp_extra_router1, _exp_extra1;
15
+ var ref, ref1, ref2, ref3;
18
16
  const allowedHostnames = [
19
17
  ...DEFAULT_ALLOWED_CORS_HOSTNAMES
20
18
  ];
21
19
  // Support for expo-router API routes
22
- if ((_exp_extra = exp.extra) == null ? void 0 : (_exp_extra_router = _exp_extra.router) == null ? void 0 : _exp_extra_router.headOrigin) {
20
+ if ((ref = exp.extra) == null ? void 0 : (ref1 = ref.router) == null ? void 0 : ref1.headOrigin) {
23
21
  allowedHostnames.push(new URL(exp.extra.router.headOrigin).hostname);
24
22
  }
25
- if ((_exp_extra1 = exp.extra) == null ? void 0 : (_exp_extra_router1 = _exp_extra1.router) == null ? void 0 : _exp_extra_router1.origin) {
23
+ if ((ref2 = exp.extra) == null ? void 0 : (ref3 = ref2.router) == null ? void 0 : ref3.origin) {
26
24
  allowedHostnames.push(new URL(exp.extra.router.origin).hostname);
27
25
  }
28
26
  return (req, res, next)=>{
29
- if (typeof req.headers.origin === 'string') {
30
- const { host, hostname } = new URL(req.headers.origin);
27
+ if (typeof req.headers.origin === "string") {
28
+ const { host , hostname } = new URL(req.headers.origin);
31
29
  const isSameOrigin = host === req.headers.host;
32
30
  if (!isSameOrigin && !allowedHostnames.includes(hostname)) {
33
- next(new Error(`Unauthorized request from ${req.headers.origin}. ` + 'This may happen because of a conflicting browser extension to intercept HTTP requests. ' + 'Please try again without browser extensions or using incognito mode.'));
31
+ next(new Error(`Unauthorized request from ${req.headers.origin}. ` + "This may happen because of a conflicting browser extension to intercept HTTP requests. " + "Please try again without browser extensions or using incognito mode."));
34
32
  return;
35
33
  }
36
- res.setHeader('Access-Control-Allow-Origin', req.headers.origin);
34
+ res.setHeader("Access-Control-Allow-Origin", req.headers.origin);
37
35
  maybePreventMetroResetCorsHeader(req, res);
38
36
  }
39
37
  // Block MIME-type sniffing.
40
- res.setHeader('X-Content-Type-Options', 'nosniff');
38
+ res.setHeader("X-Content-Type-Options", "nosniff");
41
39
  next();
42
40
  };
43
41
  }
@@ -46,11 +44,11 @@ function createCorsMiddleware(exp) {
46
44
  // https://github.com/facebook/metro/blob/a7f8955e6d2424b0d5f73d4bcdaf22560e1d5f27/packages/metro/src/Server.js#L540
47
45
  // This is a workaround to prevent this behavior.
48
46
  function maybePreventMetroResetCorsHeader(req, res) {
49
- const pathname = req.url ? new URL(req.url, `http://${req.headers.host}`).pathname : '';
50
- if (pathname.endsWith('.map')) {
47
+ const pathname = req.url ? new URL(req.url, `http://${req.headers.host}`).pathname : "";
48
+ if (pathname.endsWith(".map")) {
51
49
  const setHeader = res.setHeader.bind(res);
52
50
  res.setHeader = (key, ...args)=>{
53
- if (key !== 'Access-Control-Allow-Origin') {
51
+ if (key !== "Access-Control-Allow-Origin") {
54
52
  setHeader(key, ...args);
55
53
  }
56
54
  return res;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/start/server/middleware/CorsMiddleware.ts"],"sourcesContent":["import type { ExpoConfig } from '@expo/config';\n\nimport type { ServerRequest, ServerResponse } from './server.types';\n\nconst DEFAULT_ALLOWED_CORS_HOSTNAMES = [\n 'localhost',\n 'chrome-devtools-frontend.appspot.com', // Support remote Chrome DevTools frontend\n 'devtools', // Support local Chrome DevTools `devtools://devtools`\n];\n\nexport function createCorsMiddleware(exp: ExpoConfig) {\n const allowedHostnames = [...DEFAULT_ALLOWED_CORS_HOSTNAMES];\n // Support for expo-router API routes\n if (exp.extra?.router?.headOrigin) {\n allowedHostnames.push(new URL(exp.extra.router.headOrigin).hostname);\n }\n if (exp.extra?.router?.origin) {\n allowedHostnames.push(new URL(exp.extra.router.origin).hostname);\n }\n\n return (req: ServerRequest, res: ServerResponse, next: (err?: Error) => void) => {\n if (typeof req.headers.origin === 'string') {\n const { host, hostname } = new URL(req.headers.origin);\n const isSameOrigin = host === req.headers.host;\n if (!isSameOrigin && !allowedHostnames.includes(hostname)) {\n next(\n new Error(\n `Unauthorized request from ${req.headers.origin}. ` +\n 'This may happen because of a conflicting browser extension to intercept HTTP requests. ' +\n 'Please try again without browser extensions or using incognito mode.'\n )\n );\n return;\n }\n\n res.setHeader('Access-Control-Allow-Origin', req.headers.origin);\n maybePreventMetroResetCorsHeader(req, res);\n }\n\n // Block MIME-type sniffing.\n res.setHeader('X-Content-Type-Options', 'nosniff');\n\n next();\n };\n}\n\n// When accessing source maps,\n// metro will overwrite the `Access-Control-Allow-Origin` header with hardcoded `devtools://devtools` value.\n// https://github.com/facebook/metro/blob/a7f8955e6d2424b0d5f73d4bcdaf22560e1d5f27/packages/metro/src/Server.js#L540\n// This is a workaround to prevent this behavior.\nfunction maybePreventMetroResetCorsHeader(req: ServerRequest, res: ServerResponse) {\n const pathname = req.url ? new URL(req.url, `http://${req.headers.host}`).pathname : '';\n if (pathname.endsWith('.map')) {\n const setHeader = res.setHeader.bind(res);\n res.setHeader = (key, ...args) => {\n if (key !== 'Access-Control-Allow-Origin') {\n setHeader(key, ...args);\n }\n return res;\n };\n }\n}\n"],"names":["createCorsMiddleware","DEFAULT_ALLOWED_CORS_HOSTNAMES","exp","allowedHostnames","extra","router","headOrigin","push","URL","hostname","origin","req","res","next","headers","host","isSameOrigin","includes","Error","setHeader","maybePreventMetroResetCorsHeader","pathname","url","endsWith","bind","key","args"],"mappings":";;;;+BAUgBA;;;eAAAA;;;AANhB,MAAMC,iCAAiC;IACrC;IACA;IACA;CACD;AAEM,SAASD,qBAAqBE,GAAe;QAG9CA,mBAAAA,YAGAA,oBAAAA;IALJ,MAAMC,mBAAmB;WAAIF;KAA+B;IAC5D,qCAAqC;IACrC,KAAIC,aAAAA,IAAIE,KAAK,sBAATF,oBAAAA,WAAWG,MAAM,qBAAjBH,kBAAmBI,UAAU,EAAE;QACjCH,iBAAiBI,IAAI,CAAC,IAAIC,IAAIN,IAAIE,KAAK,CAACC,MAAM,CAACC,UAAU,EAAEG,QAAQ;IACrE;IACA,KAAIP,cAAAA,IAAIE,KAAK,sBAATF,qBAAAA,YAAWG,MAAM,qBAAjBH,mBAAmBQ,MAAM,EAAE;QAC7BP,iBAAiBI,IAAI,CAAC,IAAIC,IAAIN,IAAIE,KAAK,CAACC,MAAM,CAACK,MAAM,EAAED,QAAQ;IACjE;IAEA,OAAO,CAACE,KAAoBC,KAAqBC;QAC/C,IAAI,OAAOF,IAAIG,OAAO,CAACJ,MAAM,KAAK,UAAU;YAC1C,MAAM,EAAEK,IAAI,EAAEN,QAAQ,EAAE,GAAG,IAAID,IAAIG,IAAIG,OAAO,CAACJ,MAAM;YACrD,MAAMM,eAAeD,SAASJ,IAAIG,OAAO,CAACC,IAAI;YAC9C,IAAI,CAACC,gBAAgB,CAACb,iBAAiBc,QAAQ,CAACR,WAAW;gBACzDI,KACE,IAAIK,MACF,CAAC,0BAA0B,EAAEP,IAAIG,OAAO,CAACJ,MAAM,CAAC,EAAE,CAAC,GACjD,4FACA;gBAGN;YACF;YAEAE,IAAIO,SAAS,CAAC,+BAA+BR,IAAIG,OAAO,CAACJ,MAAM;YAC/DU,iCAAiCT,KAAKC;QACxC;QAEA,4BAA4B;QAC5BA,IAAIO,SAAS,CAAC,0BAA0B;QAExCN;IACF;AACF;AAEA,8BAA8B;AAC9B,4GAA4G;AAC5G,oHAAoH;AACpH,iDAAiD;AACjD,SAASO,iCAAiCT,GAAkB,EAAEC,GAAmB;IAC/E,MAAMS,WAAWV,IAAIW,GAAG,GAAG,IAAId,IAAIG,IAAIW,GAAG,EAAE,CAAC,OAAO,EAAEX,IAAIG,OAAO,CAACC,IAAI,EAAE,EAAEM,QAAQ,GAAG;IACrF,IAAIA,SAASE,QAAQ,CAAC,SAAS;QAC7B,MAAMJ,YAAYP,IAAIO,SAAS,CAACK,IAAI,CAACZ;QACrCA,IAAIO,SAAS,GAAG,CAACM,KAAK,GAAGC;YACvB,IAAID,QAAQ,+BAA+B;gBACzCN,UAAUM,QAAQC;YACpB;YACA,OAAOd;QACT;IACF;AACF"}
1
+ {"version":3,"sources":["../../../../../src/start/server/middleware/CorsMiddleware.ts"],"sourcesContent":["import type { ExpoConfig } from '@expo/config';\n\nimport type { ServerRequest, ServerResponse } from './server.types';\n\nconst DEFAULT_ALLOWED_CORS_HOSTNAMES = [\n 'localhost',\n 'chrome-devtools-frontend.appspot.com', // Support remote Chrome DevTools frontend\n 'devtools', // Support local Chrome DevTools `devtools://devtools`\n];\n\nexport function createCorsMiddleware(exp: ExpoConfig) {\n const allowedHostnames = [...DEFAULT_ALLOWED_CORS_HOSTNAMES];\n // Support for expo-router API routes\n if (exp.extra?.router?.headOrigin) {\n allowedHostnames.push(new URL(exp.extra.router.headOrigin).hostname);\n }\n if (exp.extra?.router?.origin) {\n allowedHostnames.push(new URL(exp.extra.router.origin).hostname);\n }\n\n return (req: ServerRequest, res: ServerResponse, next: (err?: Error) => void) => {\n if (typeof req.headers.origin === 'string') {\n const { host, hostname } = new URL(req.headers.origin);\n const isSameOrigin = host === req.headers.host;\n if (!isSameOrigin && !allowedHostnames.includes(hostname)) {\n next(\n new Error(\n `Unauthorized request from ${req.headers.origin}. ` +\n 'This may happen because of a conflicting browser extension to intercept HTTP requests. ' +\n 'Please try again without browser extensions or using incognito mode.'\n )\n );\n return;\n }\n\n res.setHeader('Access-Control-Allow-Origin', req.headers.origin);\n maybePreventMetroResetCorsHeader(req, res);\n }\n\n // Block MIME-type sniffing.\n res.setHeader('X-Content-Type-Options', 'nosniff');\n\n next();\n };\n}\n\n// When accessing source maps,\n// metro will overwrite the `Access-Control-Allow-Origin` header with hardcoded `devtools://devtools` value.\n// https://github.com/facebook/metro/blob/a7f8955e6d2424b0d5f73d4bcdaf22560e1d5f27/packages/metro/src/Server.js#L540\n// This is a workaround to prevent this behavior.\nfunction maybePreventMetroResetCorsHeader(req: ServerRequest, res: ServerResponse) {\n const pathname = req.url ? new URL(req.url, `http://${req.headers.host}`).pathname : '';\n if (pathname.endsWith('.map')) {\n const setHeader = res.setHeader.bind(res);\n res.setHeader = (key, ...args) => {\n if (key !== 'Access-Control-Allow-Origin') {\n setHeader(key, ...args);\n }\n return res;\n };\n }\n}\n"],"names":["createCorsMiddleware","DEFAULT_ALLOWED_CORS_HOSTNAMES","exp","allowedHostnames","extra","router","headOrigin","push","URL","hostname","origin","req","res","next","headers","host","isSameOrigin","includes","Error","setHeader","maybePreventMetroResetCorsHeader","pathname","url","endsWith","bind","key","args"],"mappings":"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"}
@@ -9,118 +9,156 @@ Object.defineProperty(exports, "__esModule", {
9
9
  });
10
10
  Object.defineProperty(exports, "CreateFileMiddleware", {
11
11
  enumerable: true,
12
- get: function() {
13
- return CreateFileMiddleware;
14
- }
12
+ get: ()=>CreateFileMiddleware
15
13
  });
16
14
  function _fs() {
17
- const data = /*#__PURE__*/ _interop_require_default(require("fs"));
15
+ const data = /*#__PURE__*/ _interopRequireDefault(require("fs"));
18
16
  _fs = function() {
19
17
  return data;
20
18
  };
21
19
  return data;
22
20
  }
23
21
  function _path() {
24
- const data = /*#__PURE__*/ _interop_require_default(require("path"));
22
+ const data = /*#__PURE__*/ _interopRequireDefault(require("path"));
25
23
  _path = function() {
26
24
  return data;
27
25
  };
28
26
  return data;
29
27
  }
30
- const _ExpoMiddleware = require("./ExpoMiddleware");
31
- function _interop_require_default(obj) {
28
+ const _expoMiddleware = require("./ExpoMiddleware");
29
+ function _interopRequireDefault(obj) {
32
30
  return obj && obj.__esModule ? obj : {
33
31
  default: obj
34
32
  };
35
33
  }
36
- const debug = require('debug')('expo:start:server:middleware:createFile');
37
- class CreateFileMiddleware extends _ExpoMiddleware.ExpoMiddleware {
38
- constructor(projectRoot){
39
- super(projectRoot, [
40
- '/_expo/touch'
41
- ]), this.projectRoot = projectRoot;
42
- }
43
- resolvePath(inputPath) {
44
- return this.resolveExtension(_path().default.join(this.projectRoot, inputPath));
34
+ const debug = require("debug")("expo:start:server:middleware:createFile");
35
+ const ROUTER_INDEX_CONTENTS = `import { StyleSheet, Text, View } from "react-native";
36
+
37
+ export default function Page() {
38
+ return (
39
+ <View style={styles.container}>
40
+ <View style={styles.main}>
41
+ <Text style={styles.title}>Hello World</Text>
42
+ <Text style={styles.subtitle}>This is the first page of your app.</Text>
43
+ </View>
44
+ </View>
45
+ );
46
+ }
47
+
48
+ const styles = StyleSheet.create({
49
+ container: {
50
+ flex: 1,
51
+ alignItems: "center",
52
+ padding: 24,
53
+ },
54
+ main: {
55
+ flex: 1,
56
+ justifyContent: "center",
57
+ maxWidth: 960,
58
+ marginHorizontal: "auto",
59
+ },
60
+ title: {
61
+ fontSize: 64,
62
+ fontWeight: "bold",
63
+ },
64
+ subtitle: {
65
+ fontSize: 36,
66
+ color: "#38434D",
67
+ },
68
+ });
69
+ `;
70
+ class CreateFileMiddleware extends _expoMiddleware.ExpoMiddleware {
71
+ constructor(options){
72
+ super(options.projectRoot, [
73
+ "/_expo/touch"
74
+ ]);
75
+ this.options = options;
45
76
  }
46
- resolveExtension(inputPath) {
47
- let resolvedPath = inputPath;
48
- const extension = _path().default.extname(inputPath);
49
- if (extension === '.js') {
77
+ resolveExtension(basePath, relativePath) {
78
+ let resolvedPath = relativePath;
79
+ const extension = _path().default.extname(relativePath);
80
+ if (extension === ".js") {
50
81
  // Automatically convert JS files to TS files when added to a project
51
82
  // with TypeScript.
52
- const tsconfigPath = _path().default.join(this.projectRoot, 'tsconfig.json');
83
+ const tsconfigPath = _path().default.join(this.projectRoot, "tsconfig.json");
53
84
  if (_fs().default.existsSync(tsconfigPath)) {
54
- resolvedPath = resolvedPath.replace(/\.js$/, '.tsx');
85
+ resolvedPath = resolvedPath.replace(/\.js$/, ".tsx");
55
86
  }
56
87
  }
57
- return resolvedPath;
88
+ return _path().default.join(basePath, resolvedPath);
58
89
  }
59
90
  async parseRawBody(req) {
60
91
  const rawBody = await new Promise((resolve, reject)=>{
61
- let body = '';
62
- req.on('data', (chunk)=>{
92
+ let body = "";
93
+ req.on("data", (chunk)=>{
63
94
  body += chunk.toString();
64
95
  });
65
- req.on('end', ()=>{
96
+ req.on("end", ()=>{
66
97
  resolve(body);
67
98
  });
68
- req.on('error', (err)=>{
99
+ req.on("error", (err)=>{
69
100
  reject(err);
70
101
  });
71
102
  });
72
- const properties = JSON.parse(rawBody);
73
- this.assertTouchFileBody(properties);
74
- return properties;
75
- }
76
- assertTouchFileBody(body) {
77
- if (typeof body !== 'object' || body == null) {
78
- throw new Error('Expected object');
103
+ const body = JSON.parse(rawBody);
104
+ if (typeof body !== "object" || body == null) {
105
+ throw new Error("Expected object");
106
+ } else if (typeof body.type !== "string") {
107
+ throw new Error('Expected "type" in body to be string');
79
108
  }
80
- if (typeof body.path !== 'string') {
81
- throw new Error('Expected "path" in body to be string');
109
+ switch(body.type){
110
+ case "router_index":
111
+ return body;
112
+ default:
113
+ throw new Error('Unknown "type" passed in body');
82
114
  }
83
- if (typeof body.contents !== 'string') {
84
- throw new Error('Expected "contents" in body to be string');
115
+ }
116
+ makeOutputForInput(input) {
117
+ switch(input.type){
118
+ case "router_index":
119
+ return {
120
+ absolutePath: this.resolveExtension(this.options.appDir, "index.js"),
121
+ contents: ROUTER_INDEX_CONTENTS
122
+ };
85
123
  }
86
124
  }
87
125
  async handleRequestAsync(req, res) {
88
- if (req.method !== 'POST') {
126
+ if (req.method !== "POST") {
89
127
  res.statusCode = 405;
90
- res.end('Method Not Allowed');
128
+ res.end("Method Not Allowed");
91
129
  return;
92
130
  }
93
131
  let properties;
94
132
  try {
95
133
  properties = await this.parseRawBody(req);
96
134
  } catch (e) {
97
- debug('Error parsing request body', e);
135
+ debug("Error parsing request body", e);
98
136
  res.statusCode = 400;
99
- res.end('Bad Request');
137
+ res.end("Bad Request");
100
138
  return;
101
139
  }
102
140
  debug(`Requested: %O`, properties);
103
- const resolvedPath = properties.absolutePath ? this.resolveExtension(_path().default.resolve(properties.absolutePath)) : this.resolvePath(properties.path);
104
- if (_fs().default.existsSync(resolvedPath)) {
141
+ const file = this.makeOutputForInput(properties);
142
+ if (_fs().default.existsSync(file.absolutePath)) {
105
143
  res.statusCode = 409;
106
- res.end('File already exists.');
144
+ res.end("File already exists.");
107
145
  return;
108
146
  }
109
- debug(`Resolved path:`, resolvedPath);
147
+ debug(`Resolved path:`, file.absolutePath);
110
148
  try {
111
- await _fs().default.promises.mkdir(_path().default.dirname(resolvedPath), {
149
+ await _fs().default.promises.mkdir(_path().default.dirname(file.absolutePath), {
112
150
  recursive: true
113
151
  });
114
- await _fs().default.promises.writeFile(resolvedPath, properties.contents, 'utf8');
115
- } catch (e) {
116
- debug('Error writing file', e);
152
+ await _fs().default.promises.writeFile(file.absolutePath, file.contents, "utf8");
153
+ } catch (e1) {
154
+ debug("Error writing file", e1);
117
155
  res.statusCode = 500;
118
- res.end('Error writing file.');
156
+ res.end("Error writing file.");
119
157
  return;
120
158
  }
121
159
  debug(`File created`);
122
160
  res.statusCode = 200;
123
- res.end('OK');
161
+ res.end("OK");
124
162
  }
125
163
  }
126
164
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/start/server/middleware/CreateFileMiddleware.ts"],"sourcesContent":["/**\n * Copyright © 2022 650 Industries.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport fs from 'fs';\nimport path from 'path';\n\nimport { ExpoMiddleware } from './ExpoMiddleware';\nimport { ServerRequest, ServerResponse } from './server.types';\n\nconst debug = require('debug')('expo:start:server:middleware:createFile') as typeof console.log;\n\nexport type TouchFileBody = {\n /** @deprecated */\n path: string;\n absolutePath?: string;\n contents: string;\n};\n\n/**\n * Middleware for creating a file given a `POST` request with\n * `{ contents: string, path: string }` in the body.\n */\nexport class CreateFileMiddleware extends ExpoMiddleware {\n constructor(protected projectRoot: string) {\n super(projectRoot, ['/_expo/touch']);\n }\n\n protected resolvePath(inputPath: string): string {\n return this.resolveExtension(path.join(this.projectRoot, inputPath));\n }\n\n protected resolveExtension(inputPath: string): string {\n let resolvedPath = inputPath;\n const extension = path.extname(inputPath);\n if (extension === '.js') {\n // Automatically convert JS files to TS files when added to a project\n // with TypeScript.\n const tsconfigPath = path.join(this.projectRoot, 'tsconfig.json');\n if (fs.existsSync(tsconfigPath)) {\n resolvedPath = resolvedPath.replace(/\\.js$/, '.tsx');\n }\n }\n\n return resolvedPath;\n }\n\n protected async parseRawBody(req: ServerRequest): Promise<TouchFileBody> {\n const rawBody = await new Promise<string>((resolve, reject) => {\n let body = '';\n req.on('data', (chunk) => {\n body += chunk.toString();\n });\n req.on('end', () => {\n resolve(body);\n });\n req.on('error', (err) => {\n reject(err);\n });\n });\n\n const properties = JSON.parse(rawBody);\n this.assertTouchFileBody(properties);\n\n return properties;\n }\n\n private assertTouchFileBody(body: any): asserts body is TouchFileBody {\n if (typeof body !== 'object' || body == null) {\n throw new Error('Expected object');\n }\n if (typeof body.path !== 'string') {\n throw new Error('Expected \"path\" in body to be string');\n }\n if (typeof body.contents !== 'string') {\n throw new Error('Expected \"contents\" in body to be string');\n }\n }\n\n async handleRequestAsync(req: ServerRequest, res: ServerResponse): Promise<void> {\n if (req.method !== 'POST') {\n res.statusCode = 405;\n res.end('Method Not Allowed');\n return;\n }\n\n let properties: TouchFileBody;\n\n try {\n properties = await this.parseRawBody(req);\n } catch (e) {\n debug('Error parsing request body', e);\n res.statusCode = 400;\n res.end('Bad Request');\n return;\n }\n\n debug(`Requested: %O`, properties);\n\n const resolvedPath = properties.absolutePath\n ? this.resolveExtension(path.resolve(properties.absolutePath))\n : this.resolvePath(properties.path);\n\n if (fs.existsSync(resolvedPath)) {\n res.statusCode = 409;\n res.end('File already exists.');\n return;\n }\n\n debug(`Resolved path:`, resolvedPath);\n\n try {\n await fs.promises.mkdir(path.dirname(resolvedPath), { recursive: true });\n await fs.promises.writeFile(resolvedPath, properties.contents, 'utf8');\n } catch (e) {\n debug('Error writing file', e);\n res.statusCode = 500;\n res.end('Error writing file.');\n return;\n }\n\n debug(`File created`);\n res.statusCode = 200;\n res.end('OK');\n }\n}\n"],"names":["CreateFileMiddleware","debug","require","ExpoMiddleware","constructor","projectRoot","resolvePath","inputPath","resolveExtension","path","join","resolvedPath","extension","extname","tsconfigPath","fs","existsSync","replace","parseRawBody","req","rawBody","Promise","resolve","reject","body","on","chunk","toString","err","properties","JSON","parse","assertTouchFileBody","Error","contents","handleRequestAsync","res","method","statusCode","end","e","absolutePath","promises","mkdir","dirname","recursive","writeFile"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../src/start/server/middleware/CreateFileMiddleware.ts"],"sourcesContent":["/**\n * Copyright © 2022 650 Industries.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport fs from 'fs';\nimport path from 'path';\n\nimport { ExpoMiddleware } from './ExpoMiddleware';\nimport { ServerRequest, ServerResponse } from './server.types';\n\nconst debug = require('debug')('expo:start:server:middleware:createFile') as typeof console.log;\n\ninterface TouchFileInput {\n type: 'router_index';\n}\n\ninterface TouchFileOutput {\n absolutePath: string;\n contents: string;\n}\n\nconst ROUTER_INDEX_CONTENTS = `import { StyleSheet, Text, View } from \"react-native\";\n\nexport default function Page() {\n return (\n <View style={styles.container}>\n <View style={styles.main}>\n <Text style={styles.title}>Hello World</Text>\n <Text style={styles.subtitle}>This is the first page of your app.</Text>\n </View>\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n alignItems: \"center\",\n padding: 24,\n },\n main: {\n flex: 1,\n justifyContent: \"center\",\n maxWidth: 960,\n marginHorizontal: \"auto\",\n },\n title: {\n fontSize: 64,\n fontWeight: \"bold\",\n },\n subtitle: {\n fontSize: 36,\n color: \"#38434D\",\n },\n});\n`;\n\ninterface CreateFileMiddlewareOptions {\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 /** The expo-router root */\n appDir: string;\n}\n\n/**\n * Middleware for creating a file given a `POST` request with\n * `{ contents: string, path: string }` in the body.\n */\nexport class CreateFileMiddleware extends ExpoMiddleware {\n constructor(protected options: CreateFileMiddlewareOptions) {\n super(options.projectRoot, ['/_expo/touch']);\n }\n\n protected resolveExtension(basePath: string, relativePath: string): string {\n let resolvedPath = relativePath;\n const extension = path.extname(relativePath);\n if (extension === '.js') {\n // Automatically convert JS files to TS files when added to a project\n // with TypeScript.\n const tsconfigPath = path.join(this.projectRoot, 'tsconfig.json');\n if (fs.existsSync(tsconfigPath)) {\n resolvedPath = resolvedPath.replace(/\\.js$/, '.tsx');\n }\n }\n return path.join(basePath, resolvedPath);\n }\n\n protected async parseRawBody(req: ServerRequest): Promise<TouchFileInput> {\n const rawBody = await new Promise<string>((resolve, reject) => {\n let body = '';\n req.on('data', (chunk) => {\n body += chunk.toString();\n });\n req.on('end', () => {\n resolve(body);\n });\n req.on('error', (err) => {\n reject(err);\n });\n });\n\n const body = JSON.parse(rawBody);\n if (typeof body !== 'object' || body == null) {\n throw new Error('Expected object');\n } else if (typeof body.type !== 'string') {\n throw new Error('Expected \"type\" in body to be string');\n }\n\n switch (body.type) {\n case 'router_index':\n return body;\n default:\n throw new Error('Unknown \"type\" passed in body');\n }\n }\n\n private makeOutputForInput(input: TouchFileInput): TouchFileOutput {\n switch (input.type) {\n case 'router_index':\n return {\n absolutePath: this.resolveExtension(this.options.appDir, 'index.js'),\n contents: ROUTER_INDEX_CONTENTS,\n };\n }\n }\n\n async handleRequestAsync(req: ServerRequest, res: ServerResponse): Promise<void> {\n if (req.method !== 'POST') {\n res.statusCode = 405;\n res.end('Method Not Allowed');\n return;\n }\n\n let properties: TouchFileInput;\n try {\n properties = await this.parseRawBody(req);\n } catch (e) {\n debug('Error parsing request body', e);\n res.statusCode = 400;\n res.end('Bad Request');\n return;\n }\n\n debug(`Requested: %O`, properties);\n\n const file = this.makeOutputForInput(properties);\n if (fs.existsSync(file.absolutePath)) {\n res.statusCode = 409;\n res.end('File already exists.');\n return;\n }\n\n debug(`Resolved path:`, file.absolutePath);\n\n try {\n await fs.promises.mkdir(path.dirname(file.absolutePath), { recursive: true });\n await fs.promises.writeFile(file.absolutePath, file.contents, 'utf8');\n } catch (e) {\n debug('Error writing file', e);\n res.statusCode = 500;\n res.end('Error writing file.');\n return;\n }\n\n debug(`File created`);\n res.statusCode = 200;\n res.end('OK');\n }\n}\n"],"names":["CreateFileMiddleware","debug","require","ROUTER_INDEX_CONTENTS","ExpoMiddleware","constructor","options","projectRoot","resolveExtension","basePath","relativePath","resolvedPath","extension","path","extname","tsconfigPath","join","fs","existsSync","replace","parseRawBody","req","rawBody","Promise","resolve","reject","body","on","chunk","toString","err","JSON","parse","Error","type","makeOutputForInput","input","absolutePath","appDir","contents","handleRequestAsync","res","method","statusCode","end","properties","e","file","promises","mkdir","dirname","recursive","writeFile"],"mappings":"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"}
@@ -9,65 +9,62 @@ function _export(target, all) {
9
9
  });
10
10
  }
11
11
  _export(exports, {
12
- DevToolsPluginEndpoint: function() {
13
- return _DevToolsPluginManager.DevToolsPluginEndpoint;
14
- },
15
- DevToolsPluginMiddleware: function() {
16
- return DevToolsPluginMiddleware;
17
- }
12
+ DevToolsPluginEndpoint: ()=>_devToolsPluginManager.DevToolsPluginEndpoint,
13
+ DevToolsPluginMiddleware: ()=>DevToolsPluginMiddleware
18
14
  });
19
15
  function _assert() {
20
- const data = /*#__PURE__*/ _interop_require_default(require("assert"));
16
+ const data = /*#__PURE__*/ _interopRequireDefault(require("assert"));
21
17
  _assert = function() {
22
18
  return data;
23
19
  };
24
20
  return data;
25
21
  }
26
22
  function _send() {
27
- const data = /*#__PURE__*/ _interop_require_default(require("send"));
23
+ const data = /*#__PURE__*/ _interopRequireDefault(require("send"));
28
24
  _send = function() {
29
25
  return data;
30
26
  };
31
27
  return data;
32
28
  }
33
- const _ExpoMiddleware = require("./ExpoMiddleware");
34
- const _DevToolsPluginManager = require("../DevToolsPluginManager");
35
- function _interop_require_default(obj) {
29
+ const _expoMiddleware = require("./ExpoMiddleware");
30
+ const _devToolsPluginManager = require("../DevToolsPluginManager");
31
+ function _interopRequireDefault(obj) {
36
32
  return obj && obj.__esModule ? obj : {
37
33
  default: obj
38
34
  };
39
35
  }
40
- class DevToolsPluginMiddleware extends _ExpoMiddleware.ExpoMiddleware {
36
+ class DevToolsPluginMiddleware extends _expoMiddleware.ExpoMiddleware {
41
37
  constructor(projectRoot, pluginManager){
42
38
  super(projectRoot, [
43
- _DevToolsPluginManager.DevToolsPluginEndpoint
44
- ]), this.pluginManager = pluginManager;
39
+ _devToolsPluginManager.DevToolsPluginEndpoint
40
+ ]);
41
+ this.pluginManager = pluginManager;
45
42
  }
46
43
  shouldHandleRequest(req) {
47
- var _req_url;
48
- if (!((_req_url = req.url) == null ? void 0 : _req_url.startsWith(_DevToolsPluginManager.DevToolsPluginEndpoint))) {
44
+ var ref;
45
+ if (!((ref = req.url) == null ? void 0 : ref.startsWith(_devToolsPluginManager.DevToolsPluginEndpoint))) {
49
46
  return false;
50
47
  }
51
48
  return true;
52
49
  }
53
50
  async handleRequestAsync(req, res) {
54
- (0, _assert().default)(req.headers.host, 'Request headers must include host');
55
- const { pathname } = new URL(req.url ?? '/', `http://${req.headers.host}`);
56
- const pluginName = this.queryPossiblePluginName(pathname.substring(_DevToolsPluginManager.DevToolsPluginEndpoint.length + 1));
51
+ (0, _assert().default)(req.headers.host, "Request headers must include host");
52
+ const { pathname } = new URL(req.url ?? "/", `http://${req.headers.host}`);
53
+ const pluginName = this.queryPossiblePluginName(pathname.substring(_devToolsPluginManager.DevToolsPluginEndpoint.length + 1));
57
54
  const webpageRoot = await this.pluginManager.queryPluginWebpageRootAsync(pluginName);
58
55
  if (!webpageRoot) {
59
56
  res.statusCode = 404;
60
57
  res.end();
61
58
  return;
62
59
  }
63
- const pathInPluginRoot = pathname.substring(_DevToolsPluginManager.DevToolsPluginEndpoint.length + pluginName.length + 1) || '/';
60
+ const pathInPluginRoot = pathname.substring(_devToolsPluginManager.DevToolsPluginEndpoint.length + pluginName.length + 1) || "/";
64
61
  (0, _send().default)(req, pathInPluginRoot, {
65
62
  root: webpageRoot
66
63
  }).pipe(res);
67
64
  }
68
65
  queryPossiblePluginName(pathname) {
69
- const parts = pathname.split('/');
70
- if (parts[0][0] === '@' && parts.length > 1) {
66
+ const parts = pathname.split("/");
67
+ if (parts[0][0] === "@" && parts.length > 1) {
71
68
  // Scoped package name
72
69
  return `${parts[0]}/${parts[1]}`;
73
70
  }