@expo/cli 0.17.9 → 0.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (570) hide show
  1. package/build/bin/cli +11 -7
  2. package/build/bin/cli.map +1 -1
  3. package/build/src/api/getExpoSchema.js +23 -5
  4. package/build/src/api/getExpoSchema.js.map +1 -1
  5. package/build/src/api/graphql/client.js +28 -10
  6. package/build/src/api/graphql/client.js.map +1 -1
  7. package/build/src/api/graphql/queries/AppQuery.js +16 -4
  8. package/build/src/api/graphql/queries/AppQuery.js.map +1 -1
  9. package/build/src/api/graphql/queries/UserQuery.js +8 -2
  10. package/build/src/api/graphql/queries/UserQuery.js.map +1 -1
  11. package/build/src/api/graphql/types/App.js +8 -2
  12. package/build/src/api/graphql/types/App.js.map +1 -1
  13. package/build/src/api/rest/cache/FileSystemCache.js +21 -9
  14. package/build/src/api/rest/cache/FileSystemCache.js.map +1 -1
  15. package/build/src/api/rest/cache/response.js +9 -3
  16. package/build/src/api/rest/cache/response.js.map +1 -1
  17. package/build/src/api/rest/cache/wrapFetchWithCache.js +32 -8
  18. package/build/src/api/rest/cache/wrapFetchWithCache.js.map +1 -1
  19. package/build/src/api/rest/client.js +23 -5
  20. package/build/src/api/rest/client.js.map +1 -1
  21. package/build/src/api/rest/wrapFetchWithBaseUrl.js +9 -4
  22. package/build/src/api/rest/wrapFetchWithBaseUrl.js.map +1 -1
  23. package/build/src/api/rest/wrapFetchWithProxy.js +8 -2
  24. package/build/src/api/rest/wrapFetchWithProxy.js.map +1 -1
  25. package/build/src/api/settings.js +8 -2
  26. package/build/src/api/settings.js.map +1 -1
  27. package/build/src/api/updateDevelopmentSession.js +18 -6
  28. package/build/src/api/updateDevelopmentSession.js.map +1 -1
  29. package/build/src/api/user/UserSettings.js +26 -8
  30. package/build/src/api/user/UserSettings.js.map +1 -1
  31. package/build/src/api/user/actions.js +17 -5
  32. package/build/src/api/user/actions.js.map +1 -1
  33. package/build/src/api/user/expoSsoLauncher.js +32 -8
  34. package/build/src/api/user/expoSsoLauncher.js.map +1 -1
  35. package/build/src/api/user/otp.js +17 -5
  36. package/build/src/api/user/otp.js.map +1 -1
  37. package/build/src/api/user/user.js +19 -12
  38. package/build/src/api/user/user.js.map +1 -1
  39. package/build/src/config/configAsync.js +25 -7
  40. package/build/src/config/configAsync.js.map +1 -1
  41. package/build/src/config/index.js +9 -3
  42. package/build/src/config/index.js.map +1 -1
  43. package/build/src/customize/customizeAsync.js +8 -2
  44. package/build/src/customize/customizeAsync.js.map +1 -1
  45. package/build/src/customize/generate.js +16 -4
  46. package/build/src/customize/generate.js.map +1 -1
  47. package/build/src/customize/index.js +10 -4
  48. package/build/src/customize/index.js.map +1 -1
  49. package/build/src/customize/templates.js +33 -9
  50. package/build/src/customize/templates.js.map +1 -1
  51. package/build/src/customize/typescript.js +8 -2
  52. package/build/src/customize/typescript.js.map +1 -1
  53. package/build/src/export/createMetadataJson.js +8 -2
  54. package/build/src/export/createMetadataJson.js.map +1 -1
  55. package/build/src/export/embed/exportEmbedAsync.js +58 -18
  56. package/build/src/export/embed/exportEmbedAsync.js.map +1 -1
  57. package/build/src/export/embed/index.js +17 -5
  58. package/build/src/export/embed/index.js.map +1 -1
  59. package/build/src/export/embed/resolveOptions.js +8 -2
  60. package/build/src/export/embed/resolveOptions.js.map +1 -1
  61. package/build/src/export/embed/xcodeCompilerLogger.js +16 -4
  62. package/build/src/export/embed/xcodeCompilerLogger.js.map +1 -1
  63. package/build/src/export/exportApp.js +32 -12
  64. package/build/src/export/exportApp.js.map +1 -1
  65. package/build/src/export/exportAssets.js +27 -9
  66. package/build/src/export/exportAssets.js.map +1 -1
  67. package/build/src/export/exportAsync.js +10 -2
  68. package/build/src/export/exportAsync.js.map +1 -1
  69. package/build/src/export/exportHermes.js +29 -17
  70. package/build/src/export/exportHermes.js.map +1 -1
  71. package/build/src/export/exportStaticAsync.js +69 -37
  72. package/build/src/export/exportStaticAsync.js.map +1 -1
  73. package/build/src/export/favicon.js +33 -9
  74. package/build/src/export/favicon.js.map +1 -1
  75. package/build/src/export/fork-bundleAsync.js +61 -16
  76. package/build/src/export/fork-bundleAsync.js.map +1 -1
  77. package/build/src/export/getPublicExpoManifest.js +8 -2
  78. package/build/src/export/getPublicExpoManifest.js.map +1 -1
  79. package/build/src/export/getResolvedLocales.js +15 -3
  80. package/build/src/export/getResolvedLocales.js.map +1 -1
  81. package/build/src/export/index.js +11 -5
  82. package/build/src/export/index.js.map +1 -1
  83. package/build/src/export/metroAssetLocalPath.js +9 -3
  84. package/build/src/export/metroAssetLocalPath.js.map +1 -1
  85. package/build/src/export/persistMetroAssets.js +27 -15
  86. package/build/src/export/persistMetroAssets.js.map +1 -1
  87. package/build/src/export/publicFolder.js +18 -6
  88. package/build/src/export/publicFolder.js.map +1 -1
  89. package/build/src/export/resolveOptions.js +8 -2
  90. package/build/src/export/resolveOptions.js.map +1 -1
  91. package/build/src/export/saveAssets.js +43 -19
  92. package/build/src/export/saveAssets.js.map +1 -1
  93. package/build/src/export/web/exportWebAsync.js +16 -4
  94. package/build/src/export/web/exportWebAsync.js.map +1 -1
  95. package/build/src/export/web/index.js +9 -3
  96. package/build/src/export/web/index.js.map +1 -1
  97. package/build/src/install/applyPlugins.js +8 -2
  98. package/build/src/install/applyPlugins.js.map +1 -1
  99. package/build/src/install/checkPackages.js +18 -6
  100. package/build/src/install/checkPackages.js.map +1 -1
  101. package/build/src/install/fixPackages.js +8 -2
  102. package/build/src/install/fixPackages.js.map +1 -1
  103. package/build/src/install/index.js +14 -8
  104. package/build/src/install/index.js.map +1 -1
  105. package/build/src/install/installAsync.js +27 -9
  106. package/build/src/install/installAsync.js.map +1 -1
  107. package/build/src/install/installExpoPackage.js +17 -5
  108. package/build/src/install/installExpoPackage.js.map +1 -1
  109. package/build/src/install/utils/autoAddConfigPlugins.js +17 -5
  110. package/build/src/install/utils/autoAddConfigPlugins.js.map +1 -1
  111. package/build/src/log.js +9 -3
  112. package/build/src/log.js.map +1 -1
  113. package/build/src/prebuild/clearNativeFolder.js +37 -13
  114. package/build/src/prebuild/clearNativeFolder.js.map +1 -1
  115. package/build/src/prebuild/configureProjectAsync.js +16 -4
  116. package/build/src/prebuild/configureProjectAsync.js.map +1 -1
  117. package/build/src/prebuild/copyTemplateFiles.js +29 -11
  118. package/build/src/prebuild/copyTemplateFiles.js.map +1 -1
  119. package/build/src/prebuild/ensureConfigAsync.js +24 -6
  120. package/build/src/prebuild/ensureConfigAsync.js.map +1 -1
  121. package/build/src/prebuild/index.js +14 -8
  122. package/build/src/prebuild/index.js.map +1 -1
  123. package/build/src/prebuild/prebuildAsync.js +9 -3
  124. package/build/src/prebuild/prebuildAsync.js.map +1 -1
  125. package/build/src/prebuild/renameTemplateAppName.js +119 -0
  126. package/build/src/prebuild/renameTemplateAppName.js.map +1 -0
  127. package/build/src/prebuild/resolveOptions.js +32 -8
  128. package/build/src/prebuild/resolveOptions.js.map +1 -1
  129. package/build/src/prebuild/resolveTemplate.js +44 -14
  130. package/build/src/prebuild/resolveTemplate.js.map +1 -1
  131. package/build/src/prebuild/updateFromTemplate.js +18 -2
  132. package/build/src/prebuild/updateFromTemplate.js.map +1 -1
  133. package/build/src/prebuild/updatePackageJson.js +49 -13
  134. package/build/src/prebuild/updatePackageJson.js.map +1 -1
  135. package/build/src/prebuild/validateTemplatePlatforms.js +16 -4
  136. package/build/src/prebuild/validateTemplatePlatforms.js.map +1 -1
  137. package/build/src/run/android/index.js +20 -4
  138. package/build/src/run/android/index.js.map +1 -1
  139. package/build/src/run/android/resolveGradlePropsAsync.js +55 -0
  140. package/build/src/run/android/resolveGradlePropsAsync.js.map +1 -0
  141. package/build/src/run/android/resolveInstallApkName.js +18 -6
  142. package/build/src/run/android/resolveInstallApkName.js.map +1 -1
  143. package/build/src/run/android/resolveLaunchProps.js +10 -4
  144. package/build/src/run/android/resolveLaunchProps.js.map +1 -1
  145. package/build/src/run/android/resolveOptions.js +5 -3
  146. package/build/src/run/android/resolveOptions.js.map +1 -1
  147. package/build/src/run/android/runAndroidAsync.js +13 -4
  148. package/build/src/run/android/runAndroidAsync.js.map +1 -1
  149. package/build/src/run/ensureNativeProject.js +15 -3
  150. package/build/src/run/ensureNativeProject.js.map +1 -1
  151. package/build/src/run/hints.js +10 -4
  152. package/build/src/run/hints.js.map +1 -1
  153. package/build/src/run/index.js +8 -2
  154. package/build/src/run/index.js.map +1 -1
  155. package/build/src/run/ios/XcodeBuild.js +57 -21
  156. package/build/src/run/ios/XcodeBuild.js.map +1 -1
  157. package/build/src/run/ios/appleDevice/AppleDevice.js +25 -7
  158. package/build/src/run/ios/appleDevice/AppleDevice.js.map +1 -1
  159. package/build/src/run/ios/appleDevice/ClientManager.js +10 -4
  160. package/build/src/run/ios/appleDevice/ClientManager.js.map +1 -1
  161. package/build/src/run/ios/appleDevice/client/AFCClient.js +34 -10
  162. package/build/src/run/ios/appleDevice/client/AFCClient.js.map +1 -1
  163. package/build/src/run/ios/appleDevice/client/DebugserverClient.js +16 -4
  164. package/build/src/run/ios/appleDevice/client/DebugserverClient.js.map +1 -1
  165. package/build/src/run/ios/appleDevice/client/InstallationProxyClient.js +8 -2
  166. package/build/src/run/ios/appleDevice/client/InstallationProxyClient.js.map +1 -1
  167. package/build/src/run/ios/appleDevice/client/LockdowndClient.js +17 -5
  168. package/build/src/run/ios/appleDevice/client/LockdowndClient.js.map +1 -1
  169. package/build/src/run/ios/appleDevice/client/MobileImageMounterClient.js +17 -5
  170. package/build/src/run/ios/appleDevice/client/MobileImageMounterClient.js.map +1 -1
  171. package/build/src/run/ios/appleDevice/client/UsbmuxdClient.js +25 -7
  172. package/build/src/run/ios/appleDevice/client/UsbmuxdClient.js.map +1 -1
  173. package/build/src/run/ios/appleDevice/installOnDeviceAsync.js +24 -6
  174. package/build/src/run/ios/appleDevice/installOnDeviceAsync.js.map +1 -1
  175. package/build/src/run/ios/appleDevice/protocol/AFCProtocol.js +8 -2
  176. package/build/src/run/ios/appleDevice/protocol/AFCProtocol.js.map +1 -1
  177. package/build/src/run/ios/appleDevice/protocol/AbstractProtocol.js +16 -4
  178. package/build/src/run/ios/appleDevice/protocol/AbstractProtocol.js.map +1 -1
  179. package/build/src/run/ios/appleDevice/protocol/GDBProtocol.js +8 -2
  180. package/build/src/run/ios/appleDevice/protocol/GDBProtocol.js.map +1 -1
  181. package/build/src/run/ios/appleDevice/protocol/LockdownProtocol.js +16 -4
  182. package/build/src/run/ios/appleDevice/protocol/LockdownProtocol.js.map +1 -1
  183. package/build/src/run/ios/appleDevice/protocol/UsbmuxProtocol.js +16 -4
  184. package/build/src/run/ios/appleDevice/protocol/UsbmuxProtocol.js.map +1 -1
  185. package/build/src/run/ios/codeSigning/Security.js +17 -5
  186. package/build/src/run/ios/codeSigning/Security.js.map +1 -1
  187. package/build/src/run/ios/codeSigning/configureCodeSigning.js +8 -2
  188. package/build/src/run/ios/codeSigning/configureCodeSigning.js.map +1 -1
  189. package/build/src/run/ios/codeSigning/resolveCertificateSigningIdentity.js +9 -3
  190. package/build/src/run/ios/codeSigning/resolveCertificateSigningIdentity.js.map +1 -1
  191. package/build/src/run/ios/codeSigning/simulatorCodeSigning.js +25 -7
  192. package/build/src/run/ios/codeSigning/simulatorCodeSigning.js.map +1 -1
  193. package/build/src/run/ios/codeSigning/xcodeCodeSigning.js +22 -10
  194. package/build/src/run/ios/codeSigning/xcodeCodeSigning.js.map +1 -1
  195. package/build/src/run/ios/index.js +19 -7
  196. package/build/src/run/ios/index.js.map +1 -1
  197. package/build/src/run/ios/launchApp.js +17 -5
  198. package/build/src/run/ios/launchApp.js.map +1 -1
  199. package/build/src/run/ios/options/promptDevice.js +9 -3
  200. package/build/src/run/ios/options/promptDevice.js.map +1 -1
  201. package/build/src/run/ios/options/resolveDevice.js +1 -2
  202. package/build/src/run/ios/options/resolveDevice.js.map +1 -1
  203. package/build/src/run/ios/options/resolveNativeScheme.js +27 -9
  204. package/build/src/run/ios/options/resolveNativeScheme.js.map +1 -1
  205. package/build/src/run/ios/options/resolveXcodeProject.js +8 -2
  206. package/build/src/run/ios/options/resolveXcodeProject.js.map +1 -1
  207. package/build/src/run/ios/runIosAsync.js +10 -2
  208. package/build/src/run/ios/runIosAsync.js.map +1 -1
  209. package/build/src/run/startBundler.js +16 -4
  210. package/build/src/run/startBundler.js.map +1 -1
  211. package/build/src/start/detectDevClient.js +29 -0
  212. package/build/src/start/detectDevClient.js.map +1 -0
  213. package/build/src/start/doctor/SecurityBinPrerequisite.js +8 -2
  214. package/build/src/start/doctor/SecurityBinPrerequisite.js.map +1 -1
  215. package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js +16 -4
  216. package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js.map +1 -1
  217. package/build/src/start/doctor/apple/XcodeDeveloperDiskImagePrerequisite.js +16 -4
  218. package/build/src/start/doctor/apple/XcodeDeveloperDiskImagePrerequisite.js.map +1 -1
  219. package/build/src/start/doctor/apple/XcodePrerequisite.js +79 -29
  220. package/build/src/start/doctor/apple/XcodePrerequisite.js.map +1 -1
  221. package/build/src/start/doctor/apple/XcrunPrerequisite.js +24 -6
  222. package/build/src/start/doctor/apple/XcrunPrerequisite.js.map +1 -1
  223. package/build/src/start/doctor/dependencies/bundledNativeModules.js +25 -7
  224. package/build/src/start/doctor/dependencies/bundledNativeModules.js.map +1 -1
  225. package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js +27 -9
  226. package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js.map +1 -1
  227. package/build/src/start/doctor/dependencies/getMissingPackages.js +24 -6
  228. package/build/src/start/doctor/dependencies/getMissingPackages.js.map +1 -1
  229. package/build/src/start/doctor/dependencies/getVersionedPackages.js +8 -2
  230. package/build/src/start/doctor/dependencies/getVersionedPackages.js.map +1 -1
  231. package/build/src/start/doctor/dependencies/resolvePackages.js +25 -7
  232. package/build/src/start/doctor/dependencies/resolvePackages.js.map +1 -1
  233. package/build/src/start/doctor/dependencies/validateDependenciesVersions.js +32 -21
  234. package/build/src/start/doctor/dependencies/validateDependenciesVersions.js.map +1 -1
  235. package/build/src/start/doctor/ngrok/ExternalModule.js +33 -9
  236. package/build/src/start/doctor/ngrok/ExternalModule.js.map +1 -1
  237. package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js +18 -6
  238. package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js.map +1 -1
  239. package/build/src/start/doctor/typescript/updateTSConfig.js +29 -11
  240. package/build/src/start/doctor/typescript/updateTSConfig.js.map +1 -1
  241. package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js +18 -6
  242. package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js.map +1 -1
  243. package/build/src/start/index.js +17 -11
  244. package/build/src/start/index.js.map +1 -1
  245. package/build/src/start/interface/commandsTable.js +27 -9
  246. package/build/src/start/interface/commandsTable.js.map +1 -1
  247. package/build/src/start/interface/interactiveActions.js +17 -11
  248. package/build/src/start/interface/interactiveActions.js.map +1 -1
  249. package/build/src/start/interface/startInterface.js +8 -2
  250. package/build/src/start/interface/startInterface.js.map +1 -1
  251. package/build/src/start/platforms/AppIdResolver.js +9 -3
  252. package/build/src/start/platforms/AppIdResolver.js.map +1 -1
  253. package/build/src/start/platforms/DeviceManager.js +8 -2
  254. package/build/src/start/platforms/DeviceManager.js.map +1 -1
  255. package/build/src/start/platforms/ExpoGoInstaller.js +30 -14
  256. package/build/src/start/platforms/ExpoGoInstaller.js.map +1 -1
  257. package/build/src/start/platforms/PlatformManager.js +33 -13
  258. package/build/src/start/platforms/PlatformManager.js.map +1 -1
  259. package/build/src/start/platforms/android/ADBServer.js +17 -5
  260. package/build/src/start/platforms/android/ADBServer.js.map +1 -1
  261. package/build/src/start/platforms/android/AndroidAppIdResolver.js +13 -7
  262. package/build/src/start/platforms/android/AndroidAppIdResolver.js.map +1 -1
  263. package/build/src/start/platforms/android/AndroidDeviceManager.js +19 -7
  264. package/build/src/start/platforms/android/AndroidDeviceManager.js.map +1 -1
  265. package/build/src/start/platforms/android/AndroidSdk.js +34 -10
  266. package/build/src/start/platforms/android/AndroidSdk.js.map +1 -1
  267. package/build/src/start/platforms/android/activateWindow.js +16 -4
  268. package/build/src/start/platforms/android/activateWindow.js.map +1 -1
  269. package/build/src/start/platforms/android/adb.js +21 -4
  270. package/build/src/start/platforms/android/adb.js.map +1 -1
  271. package/build/src/start/platforms/android/emulator.js +32 -8
  272. package/build/src/start/platforms/android/emulator.js.map +1 -1
  273. package/build/src/start/platforms/android/gradle.js +23 -6
  274. package/build/src/start/platforms/android/gradle.js.map +1 -1
  275. package/build/src/start/platforms/android/promptAndroidDevice.js +10 -4
  276. package/build/src/start/platforms/android/promptAndroidDevice.js.map +1 -1
  277. package/build/src/start/platforms/ios/AppleAppIdResolver.js +26 -8
  278. package/build/src/start/platforms/ios/AppleAppIdResolver.js.map +1 -1
  279. package/build/src/start/platforms/ios/AppleDeviceManager.js +50 -18
  280. package/build/src/start/platforms/ios/AppleDeviceManager.js.map +1 -1
  281. package/build/src/start/platforms/ios/assertSystemRequirements.js +4 -3
  282. package/build/src/start/platforms/ios/assertSystemRequirements.js.map +1 -1
  283. package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js +16 -4
  284. package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js.map +1 -1
  285. package/build/src/start/platforms/ios/getBestSimulator.js +8 -2
  286. package/build/src/start/platforms/ios/getBestSimulator.js.map +1 -1
  287. package/build/src/start/platforms/ios/promptAppleDevice.js +9 -3
  288. package/build/src/start/platforms/ios/promptAppleDevice.js.map +1 -1
  289. package/build/src/start/platforms/ios/simctl.js +12 -6
  290. package/build/src/start/platforms/ios/simctl.js.map +1 -1
  291. package/build/src/start/platforms/ios/simctlLogging.js +40 -10
  292. package/build/src/start/platforms/ios/simctlLogging.js.map +1 -1
  293. package/build/src/start/platforms/ios/xcrun.js +16 -4
  294. package/build/src/start/platforms/ios/xcrun.js.map +1 -1
  295. package/build/src/start/project/dotExpo.js +27 -9
  296. package/build/src/start/project/dotExpo.js.map +1 -1
  297. package/build/src/start/resolveOptions.js +33 -15
  298. package/build/src/start/resolveOptions.js.map +1 -1
  299. package/build/src/start/server/AsyncNgrok.js +34 -10
  300. package/build/src/start/server/AsyncNgrok.js.map +1 -1
  301. package/build/src/start/server/BundlerDevServer.js +16 -4
  302. package/build/src/start/server/BundlerDevServer.js.map +1 -1
  303. package/build/src/start/server/DevServerManager.js +28 -10
  304. package/build/src/start/server/DevServerManager.js.map +1 -1
  305. package/build/src/start/server/DevToolsPluginManager.js +16 -4
  306. package/build/src/start/server/DevToolsPluginManager.js.map +1 -1
  307. package/build/src/start/server/DevelopmentSession.js +9 -3
  308. package/build/src/start/server/DevelopmentSession.js.map +1 -1
  309. package/build/src/start/server/ReactDevToolsProxy.js +26 -8
  310. package/build/src/start/server/ReactDevToolsProxy.js.map +1 -1
  311. package/build/src/start/server/UrlCreator.js +19 -6
  312. package/build/src/start/server/UrlCreator.js.map +1 -1
  313. package/build/src/start/server/getStaticRenderFunctions.js +91 -55
  314. package/build/src/start/server/getStaticRenderFunctions.js.map +1 -1
  315. package/build/src/start/server/metro/MetroBundlerDevServer.js +231 -83
  316. package/build/src/start/server/metro/MetroBundlerDevServer.js.map +1 -1
  317. package/build/src/start/server/metro/MetroTerminalReporter.js +30 -15
  318. package/build/src/start/server/metro/MetroTerminalReporter.js.map +1 -1
  319. package/build/src/start/server/metro/TerminalReporter.js +26 -8
  320. package/build/src/start/server/metro/TerminalReporter.js.map +1 -1
  321. package/build/src/start/server/metro/TerminalReporter.types.js.map +1 -1
  322. package/build/src/start/server/metro/createExpoMetroResolver.js +56 -20
  323. package/build/src/start/server/metro/createExpoMetroResolver.js.map +1 -1
  324. package/build/src/start/server/metro/createJResolver.js +90 -45
  325. package/build/src/start/server/metro/createJResolver.js.map +1 -1
  326. package/build/src/start/server/metro/createServerRouteMiddleware.js +29 -28
  327. package/build/src/start/server/metro/createServerRouteMiddleware.js.map +1 -1
  328. package/build/src/start/server/metro/debugging/MessageHandler.js +27 -0
  329. package/build/src/start/server/metro/debugging/MessageHandler.js.map +1 -0
  330. package/build/src/start/server/metro/debugging/createDebugMiddleware.js +11 -8
  331. package/build/src/start/server/metro/debugging/createDebugMiddleware.js.map +1 -1
  332. package/build/src/start/server/metro/debugging/createHandlersFactory.js +63 -0
  333. package/build/src/start/server/metro/debugging/createHandlersFactory.js.map +1 -0
  334. package/build/src/start/server/metro/debugging/{inspectorHandlers/utils.js → getDebuggerType.js} +1 -6
  335. package/build/src/start/server/metro/debugging/getDebuggerType.js.map +1 -0
  336. package/build/src/start/server/metro/debugging/{inspectorHandlers → messageHandlers}/NetworkResponse.js +8 -5
  337. package/build/src/start/server/metro/debugging/messageHandlers/NetworkResponse.js.map +1 -0
  338. package/build/src/start/server/metro/debugging/{inspectorHandlers → messageHandlers}/PageReload.js +7 -6
  339. package/build/src/start/server/metro/debugging/messageHandlers/PageReload.js.map +1 -0
  340. package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerGetPossibleBreakpoints.js +25 -0
  341. package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerGetPossibleBreakpoints.js.map +1 -0
  342. package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerSetBreakpointByUrl.js +22 -0
  343. package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerSetBreakpointByUrl.js.map +1 -0
  344. package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeCallFunctionOn.js +28 -0
  345. package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeCallFunctionOn.js.map +1 -0
  346. package/build/src/start/server/metro/debugging/{inspectorHandlers → messageHandlers}/VscodeRuntimeGetProperties.js +10 -6
  347. package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeGetProperties.js.map +1 -0
  348. package/build/src/start/server/metro/debugging/pageIsSupported.js +14 -0
  349. package/build/src/start/server/metro/debugging/pageIsSupported.js.map +1 -0
  350. package/build/src/start/server/metro/debugging/types.js.map +1 -0
  351. package/build/src/start/server/metro/externals.js +51 -64
  352. package/build/src/start/server/metro/externals.js.map +1 -1
  353. package/build/src/start/server/metro/fetchRouterManifest.js +8 -2
  354. package/build/src/start/server/metro/fetchRouterManifest.js.map +1 -1
  355. package/build/src/start/server/metro/formatFileCandidates.js +8 -2
  356. package/build/src/start/server/metro/formatFileCandidates.js.map +1 -1
  357. package/build/src/start/server/metro/getCssModulesFromBundler.js +34 -10
  358. package/build/src/start/server/metro/getCssModulesFromBundler.js.map +1 -1
  359. package/build/src/start/server/metro/instantiateMetro.js +96 -30
  360. package/build/src/start/server/metro/instantiateMetro.js.map +1 -1
  361. package/build/src/start/server/metro/metroErrorInterface.js +40 -21
  362. package/build/src/start/server/metro/metroErrorInterface.js.map +1 -1
  363. package/build/src/start/server/metro/metroVirtualModules.js +82 -0
  364. package/build/src/start/server/metro/metroVirtualModules.js.map +1 -0
  365. package/build/src/start/server/metro/metroWatchTypeScriptFiles.js +8 -2
  366. package/build/src/start/server/metro/metroWatchTypeScriptFiles.js.map +1 -1
  367. package/build/src/start/server/metro/router.js +44 -17
  368. package/build/src/start/server/metro/router.js.map +1 -1
  369. package/build/src/start/server/metro/runServer-fork.js +56 -14
  370. package/build/src/start/server/metro/runServer-fork.js.map +1 -1
  371. package/build/src/start/server/metro/serializeHtml.js +25 -12
  372. package/build/src/start/server/metro/serializeHtml.js.map +1 -1
  373. package/build/src/start/server/metro/waitForMetroToObserveTypeScriptFile.js +8 -2
  374. package/build/src/start/server/metro/waitForMetroToObserveTypeScriptFile.js.map +1 -1
  375. package/build/src/start/server/metro/withMetroMultiPlatform.js +148 -46
  376. package/build/src/start/server/metro/withMetroMultiPlatform.js.map +1 -1
  377. package/build/src/start/server/metro/withMetroResolvers.js +31 -13
  378. package/build/src/start/server/metro/withMetroResolvers.js.map +1 -1
  379. package/build/src/start/server/middleware/CreateFileMiddleware.js +22 -10
  380. package/build/src/start/server/middleware/CreateFileMiddleware.js.map +1 -1
  381. package/build/src/start/server/middleware/DevToolsPluginMiddleware.js +16 -4
  382. package/build/src/start/server/middleware/DevToolsPluginMiddleware.js.map +1 -1
  383. package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js +42 -12
  384. package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js.map +1 -1
  385. package/build/src/start/server/middleware/ExpoMiddleware.js +8 -2
  386. package/build/src/start/server/middleware/ExpoMiddleware.js.map +1 -1
  387. package/build/src/start/server/middleware/InterstitialPageMiddleware.js +41 -11
  388. package/build/src/start/server/middleware/InterstitialPageMiddleware.js.map +1 -1
  389. package/build/src/start/server/middleware/ManifestMiddleware.js +40 -10
  390. package/build/src/start/server/middleware/ManifestMiddleware.js.map +1 -1
  391. package/build/src/start/server/middleware/ReactDevToolsPageMiddleware.js +24 -6
  392. package/build/src/start/server/middleware/ReactDevToolsPageMiddleware.js.map +1 -1
  393. package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js +8 -2
  394. package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js.map +1 -1
  395. package/build/src/start/server/middleware/ServeStaticMiddleware.js +24 -6
  396. package/build/src/start/server/middleware/ServeStaticMiddleware.js.map +1 -1
  397. package/build/src/start/server/middleware/inspector/JsInspector.js +25 -8
  398. package/build/src/start/server/middleware/inspector/JsInspector.js.map +1 -1
  399. package/build/src/start/server/middleware/inspector/LaunchBrowser.js +10 -4
  400. package/build/src/start/server/middleware/inspector/LaunchBrowser.js.map +1 -1
  401. package/build/src/start/server/middleware/inspector/LaunchBrowserImplLinux.js +24 -6
  402. package/build/src/start/server/middleware/inspector/LaunchBrowserImplLinux.js.map +1 -1
  403. package/build/src/start/server/middleware/inspector/LaunchBrowserImplMacOS.js +33 -9
  404. package/build/src/start/server/middleware/inspector/LaunchBrowserImplMacOS.js.map +1 -1
  405. package/build/src/start/server/middleware/inspector/LaunchBrowserImplWindows.js +27 -11
  406. package/build/src/start/server/middleware/inspector/LaunchBrowserImplWindows.js.map +1 -1
  407. package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js +33 -9
  408. package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js.map +1 -1
  409. package/build/src/start/server/middleware/metroOptions.js +12 -2
  410. package/build/src/start/server/middleware/metroOptions.js.map +1 -1
  411. package/build/src/start/server/middleware/resolveAssets.js +17 -5
  412. package/build/src/start/server/middleware/resolveAssets.js.map +1 -1
  413. package/build/src/start/server/middleware/resolvePlatform.js +8 -2
  414. package/build/src/start/server/middleware/resolvePlatform.js.map +1 -1
  415. package/build/src/start/server/platformBundlers.js +8 -2
  416. package/build/src/start/server/platformBundlers.js.map +1 -1
  417. package/build/src/start/server/serverLogLikeMetro.js +37 -13
  418. package/build/src/start/server/serverLogLikeMetro.js.map +1 -1
  419. package/build/src/start/server/type-generation/expo-env.js +16 -4
  420. package/build/src/start/server/type-generation/expo-env.js.map +1 -1
  421. package/build/src/start/server/type-generation/routes.js +91 -37
  422. package/build/src/start/server/type-generation/routes.js.map +1 -1
  423. package/build/src/start/server/type-generation/startTypescriptTypeGeneration.js +27 -9
  424. package/build/src/start/server/type-generation/startTypescriptTypeGeneration.js.map +1 -1
  425. package/build/src/start/server/type-generation/tsconfig.js +27 -9
  426. package/build/src/start/server/type-generation/tsconfig.js.map +1 -1
  427. package/build/src/start/server/webTemplate.js +26 -8
  428. package/build/src/start/server/webTemplate.js.map +1 -1
  429. package/build/src/start/server/webpack/WebpackBundlerDevServer.js +36 -12
  430. package/build/src/start/server/webpack/WebpackBundlerDevServer.js.map +1 -1
  431. package/build/src/start/server/webpack/compile.js +17 -5
  432. package/build/src/start/server/webpack/compile.js.map +1 -1
  433. package/build/src/start/server/webpack/resolveFromProject.js +8 -2
  434. package/build/src/start/server/webpack/resolveFromProject.js.map +1 -1
  435. package/build/src/start/server/webpack/tls.js +35 -11
  436. package/build/src/start/server/webpack/tls.js.map +1 -1
  437. package/build/src/start/startAsync.js +36 -11
  438. package/build/src/start/startAsync.js.map +1 -1
  439. package/build/src/utils/FileNotifier.js +32 -8
  440. package/build/src/utils/FileNotifier.js.map +1 -1
  441. package/build/src/utils/analytics/getDevClientProperties.js +26 -8
  442. package/build/src/utils/analytics/getDevClientProperties.js.map +1 -1
  443. package/build/src/utils/analytics/metroDebuggerMiddleware.js +2 -2
  444. package/build/src/utils/analytics/metroDebuggerMiddleware.js.map +1 -1
  445. package/build/src/utils/args.js +32 -8
  446. package/build/src/utils/args.js.map +1 -1
  447. package/build/src/utils/cocoapods.js +64 -28
  448. package/build/src/utils/cocoapods.js.map +1 -1
  449. package/build/src/utils/codesigning.js +79 -29
  450. package/build/src/utils/codesigning.js.map +1 -1
  451. package/build/src/utils/createFileTransform.js +24 -69
  452. package/build/src/utils/createFileTransform.js.map +1 -1
  453. package/build/src/utils/dir.js +33 -26
  454. package/build/src/utils/dir.js.map +1 -1
  455. package/build/src/utils/downloadAppAsync.js +40 -10
  456. package/build/src/utils/downloadAppAsync.js.map +1 -1
  457. package/build/src/utils/downloadExpoGoAsync.js +26 -11
  458. package/build/src/utils/downloadExpoGoAsync.js.map +1 -1
  459. package/build/src/utils/editor.js +18 -6
  460. package/build/src/utils/editor.js.map +1 -1
  461. package/build/src/utils/env.js +40 -31
  462. package/build/src/utils/env.js.map +1 -1
  463. package/build/src/utils/errors.js +20 -5
  464. package/build/src/utils/errors.js.map +1 -1
  465. package/build/src/utils/findUp.js +18 -6
  466. package/build/src/utils/findUp.js.map +1 -1
  467. package/build/src/utils/getOrPromptApplicationId.js +19 -7
  468. package/build/src/utils/getOrPromptApplicationId.js.map +1 -1
  469. package/build/src/utils/getRunningProcess.js +18 -6
  470. package/build/src/utils/getRunningProcess.js.map +1 -1
  471. package/build/src/utils/git.js +18 -6
  472. package/build/src/utils/git.js.map +1 -1
  473. package/build/src/utils/glob.js +9 -3
  474. package/build/src/utils/glob.js.map +1 -1
  475. package/build/src/utils/ip.js +8 -2
  476. package/build/src/utils/ip.js.map +1 -1
  477. package/build/src/utils/isModuleSymlinked.js +16 -4
  478. package/build/src/utils/isModuleSymlinked.js.map +1 -1
  479. package/build/src/utils/link.js +18 -6
  480. package/build/src/utils/link.js.map +1 -1
  481. package/build/src/utils/mergeGitIgnorePaths.js +25 -13
  482. package/build/src/utils/mergeGitIgnorePaths.js.map +1 -1
  483. package/build/src/utils/modifyConfigAsync.js +18 -6
  484. package/build/src/utils/modifyConfigAsync.js.map +1 -1
  485. package/build/src/utils/modifyConfigPlugins.js +8 -2
  486. package/build/src/utils/modifyConfigPlugins.js.map +1 -1
  487. package/build/src/utils/nodeEnv.js +2 -0
  488. package/build/src/utils/nodeEnv.js.map +1 -1
  489. package/build/src/utils/nodeModules.js +23 -5
  490. package/build/src/utils/nodeModules.js.map +1 -1
  491. package/build/src/utils/npm.js +64 -17
  492. package/build/src/utils/npm.js.map +1 -1
  493. package/build/src/utils/open.js +9 -3
  494. package/build/src/utils/open.js.map +1 -1
  495. package/build/src/utils/ora.js +16 -4
  496. package/build/src/utils/ora.js.map +1 -1
  497. package/build/src/utils/plist.js +24 -6
  498. package/build/src/utils/plist.js.map +1 -1
  499. package/build/src/utils/port.js +22 -10
  500. package/build/src/utils/port.js.map +1 -1
  501. package/build/src/utils/profile.js +8 -2
  502. package/build/src/utils/profile.js.map +1 -1
  503. package/build/src/utils/progress.js +8 -2
  504. package/build/src/utils/progress.js.map +1 -1
  505. package/build/src/utils/prompts.js +16 -4
  506. package/build/src/utils/prompts.js.map +1 -1
  507. package/build/src/utils/scheme.js +75 -23
  508. package/build/src/utils/scheme.js.map +1 -1
  509. package/build/src/utils/tar.js +16 -4
  510. package/build/src/utils/tar.js.map +1 -1
  511. package/build/src/utils/telemetry/DetachedClient.js +87 -0
  512. package/build/src/utils/telemetry/DetachedClient.js.map +1 -0
  513. package/build/src/utils/telemetry/RudderClient.js +98 -0
  514. package/build/src/utils/telemetry/RudderClient.js.map +1 -0
  515. package/build/src/utils/telemetry/flushDetached.js +43 -0
  516. package/build/src/utils/telemetry/flushDetached.js.map +1 -0
  517. package/build/src/utils/telemetry/getContext.js +92 -0
  518. package/build/src/utils/telemetry/getContext.js.map +1 -0
  519. package/build/src/utils/telemetry/index.js +32 -0
  520. package/build/src/utils/telemetry/index.js.map +1 -0
  521. package/build/src/utils/telemetry/types.js +6 -0
  522. package/build/src/utils/telemetry/types.js.map +1 -0
  523. package/build/src/utils/tsconfig/evaluateTsConfig.js +16 -4
  524. package/build/src/utils/tsconfig/evaluateTsConfig.js.map +1 -1
  525. package/build/src/utils/tsconfig/loadTsConfigPaths.js +18 -6
  526. package/build/src/utils/tsconfig/loadTsConfigPaths.js.map +1 -1
  527. package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js +10 -4
  528. package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js.map +1 -1
  529. package/build/src/utils/url.js +19 -10
  530. package/build/src/utils/url.js.map +1 -1
  531. package/build/src/utils/validateApplicationId.js +18 -6
  532. package/build/src/utils/validateApplicationId.js.map +1 -1
  533. package/build/src/whoami/whoamiAsync.js +8 -2
  534. package/build/src/whoami/whoamiAsync.js.map +1 -1
  535. package/package.json +15 -16
  536. package/static/canary/react-native/Libraries/Renderer/implementations/ReactFabric-dev.js +27907 -0
  537. package/static/canary/react-native/Libraries/Renderer/implementations/ReactFabric-prod.js +9494 -0
  538. package/static/canary/react-native/Libraries/Renderer/implementations/ReactFabric-profiling.js +10015 -0
  539. package/static/canary/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +28375 -0
  540. package/static/canary/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +9714 -0
  541. package/build/src/run/android/resolveGradleProps.js +0 -37
  542. package/build/src/run/android/resolveGradleProps.js.map +0 -1
  543. package/build/src/start/server/metro/bundleApiRoutes.js +0 -52
  544. package/build/src/start/server/metro/bundleApiRoutes.js.map +0 -1
  545. package/build/src/start/server/metro/debugging/InspectorDevice.js +0 -80
  546. package/build/src/start/server/metro/debugging/InspectorDevice.js.map +0 -1
  547. package/build/src/start/server/metro/debugging/InspectorProxy.js +0 -116
  548. package/build/src/start/server/metro/debugging/InspectorProxy.js.map +0 -1
  549. package/build/src/start/server/metro/debugging/inspectorHandlers/NetworkResponse.js.map +0 -1
  550. package/build/src/start/server/metro/debugging/inspectorHandlers/PageReload.js.map +0 -1
  551. package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeDebuggerGetPossibleBreakpoints.js +0 -21
  552. package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeDebuggerGetPossibleBreakpoints.js.map +0 -1
  553. package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeDebuggerScriptParsed.js +0 -56
  554. package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeDebuggerScriptParsed.js.map +0 -1
  555. package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeDebuggerSetBreakpointByUrl.js +0 -18
  556. package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeDebuggerSetBreakpointByUrl.js.map +0 -1
  557. package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeRuntimeCallFunctionOn.js +0 -24
  558. package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeRuntimeCallFunctionOn.js.map +0 -1
  559. package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeRuntimeGetProperties.js.map +0 -1
  560. package/build/src/start/server/metro/debugging/inspectorHandlers/types.js.map +0 -1
  561. package/build/src/start/server/metro/debugging/inspectorHandlers/utils.js.map +0 -1
  562. package/build/src/start/server/type-generation/__typetests__/fixtures/basic.js +0 -38
  563. package/build/src/start/server/type-generation/__typetests__/fixtures/basic.js.map +0 -1
  564. package/build/src/start/server/type-generation/__typetests__/generateFixtures.js +0 -38
  565. package/build/src/start/server/type-generation/__typetests__/generateFixtures.js.map +0 -1
  566. package/build/src/start/server/type-generation/__typetests__/route.test.js +0 -184
  567. package/build/src/start/server/type-generation/__typetests__/route.test.js.map +0 -1
  568. package/build/src/utils/analytics/rudderstackClient.js +0 -147
  569. package/build/src/utils/analytics/rudderstackClient.js.map +0 -1
  570. /package/build/src/start/server/metro/debugging/{inspectorHandlers/types.js → types.js} +0 -0
@@ -5,16 +5,34 @@ Object.defineProperty(exports, "__esModule", {
5
5
  exports.startReactDevToolsProxyAsync = startReactDevToolsProxyAsync;
6
6
  exports.closeReactDevToolsProxy = closeReactDevToolsProxy;
7
7
  exports.addReactDevToolsReloadListener = addReactDevToolsReloadListener;
8
- var _assert = _interopRequireDefault(require("assert"));
9
- var _events = require("events");
10
- var _ws = _interopRequireDefault(require("ws"));
8
+ function _assert() {
9
+ const data = _interopRequireDefault(require("assert"));
10
+ _assert = function() {
11
+ return data;
12
+ };
13
+ return data;
14
+ }
15
+ function _events() {
16
+ const data = require("events");
17
+ _events = function() {
18
+ return data;
19
+ };
20
+ return data;
21
+ }
22
+ function _ws() {
23
+ const data = _interopRequireDefault(require("ws"));
24
+ _ws = function() {
25
+ return data;
26
+ };
27
+ return data;
28
+ }
11
29
  function _interopRequireDefault(obj) {
12
30
  return obj && obj.__esModule ? obj : {
13
31
  default: obj
14
32
  };
15
33
  }
16
34
  let serverInstance = null;
17
- const eventEmitter = new _events.EventEmitter();
35
+ const eventEmitter = new (_events()).EventEmitter();
18
36
  /**
19
37
  * Private command to support DevTools frontend reload.
20
38
  *
@@ -28,12 +46,12 @@ async function startReactDevToolsProxyAsync(options) {
28
46
  return;
29
47
  }
30
48
  var ref;
31
- serverInstance = new _ws.default.WebSocketServer({
49
+ serverInstance = new (_ws()).default.WebSocketServer({
32
50
  port: (ref = options == null ? void 0 : options.port) != null ? ref : 8097
33
51
  });
34
52
  serverInstance.on("connection", function connection(ws) {
35
53
  ws.on("message", function message(rawData, isBinary) {
36
- (0, _assert).default(!isBinary);
54
+ _assert().default(!isBinary);
37
55
  const data = rawData.toString();
38
56
  if (data === RELOAD_COMMAND) {
39
57
  closeAllOtherClients(ws);
@@ -41,7 +59,7 @@ async function startReactDevToolsProxyAsync(options) {
41
59
  return;
42
60
  }
43
61
  serverInstance == null ? void 0 : serverInstance.clients.forEach(function each(client) {
44
- if (client !== ws && client.readyState === _ws.default.OPEN) {
62
+ if (client !== ws && client.readyState === _ws().default.OPEN) {
45
63
  client.send(data, {
46
64
  binary: isBinary
47
65
  });
@@ -64,7 +82,7 @@ function addReactDevToolsReloadListener(listener) {
64
82
  * Close all other WebSocket clients other than the current `self` client
65
83
  */ function closeAllOtherClients(self) {
66
84
  serverInstance == null ? void 0 : serverInstance.clients.forEach(function each(client) {
67
- if (client !== self && client.readyState === _ws.default.OPEN) {
85
+ if (client !== self && client.readyState === _ws().default.OPEN) {
68
86
  client.close();
69
87
  }
70
88
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/start/server/ReactDevToolsProxy.ts"],"sourcesContent":["import assert from 'assert';\nimport { EventEmitter } from 'events';\nimport WebSocket from 'ws';\n\nlet serverInstance: WebSocket.WebSocketServer | null = null;\n\nconst eventEmitter = new EventEmitter();\n\n/**\n * Private command to support DevTools frontend reload.\n *\n * The react-devtools maintains state between frontend(webpage) and backend(app).\n * If we reload the frontend without reloading the app, the react-devtools will stuck on incorrect state.\n * We introduce this special reload command.\n * As long as the frontend reload, we will close app's WebSocket connection and tell app to reconnect again.\n */\nconst RELOAD_COMMAND = 'Expo::RELOAD';\n\n/**\n * Start the react-devtools WebSocket proxy server\n */\nexport async function startReactDevToolsProxyAsync(options?: { port: number }) {\n if (serverInstance != null) {\n return;\n }\n\n serverInstance = new WebSocket.WebSocketServer({ port: options?.port ?? 8097 });\n\n serverInstance.on('connection', function connection(ws) {\n ws.on('message', function message(rawData, isBinary) {\n assert(!isBinary);\n const data = rawData.toString();\n\n if (data === RELOAD_COMMAND) {\n closeAllOtherClients(ws);\n eventEmitter.emit(RELOAD_COMMAND);\n return;\n }\n\n serverInstance?.clients.forEach(function each(client) {\n if (client !== ws && client.readyState === WebSocket.OPEN) {\n client.send(data, { binary: isBinary });\n }\n });\n });\n });\n\n serverInstance.on('close', function () {\n serverInstance = null;\n });\n}\n\n/**\n * Close the WebSocket server\n */\nexport function closeReactDevToolsProxy() {\n serverInstance?.close();\n serverInstance = null;\n}\n\n/**\n * add event listener from react-devtools frontend reload\n */\nexport function addReactDevToolsReloadListener(listener: (...args: any[]) => void) {\n eventEmitter.addListener(RELOAD_COMMAND, listener);\n}\n\n/**\n * Close all other WebSocket clients other than the current `self` client\n */\nfunction closeAllOtherClients(self: WebSocket.WebSocket) {\n serverInstance?.clients.forEach(function each(client) {\n if (client !== self && client.readyState === WebSocket.OPEN) {\n client.close();\n }\n });\n}\n"],"names":["startReactDevToolsProxyAsync","closeReactDevToolsProxy","addReactDevToolsReloadListener","serverInstance","eventEmitter","EventEmitter","RELOAD_COMMAND","options","WebSocket","WebSocketServer","port","on","connection","ws","message","rawData","isBinary","assert","data","toString","closeAllOtherClients","emit","clients","forEach","each","client","readyState","OPEN","send","binary","close","listener","addListener","self"],"mappings":"AAAA;;;;QAqBsBA,4BAA4B,GAA5BA,4BAA4B;QAkClCC,uBAAuB,GAAvBA,uBAAuB;QAQvBC,8BAA8B,GAA9BA,8BAA8B;AA/D3B,IAAA,OAAQ,kCAAR,QAAQ,EAAA;AACE,IAAA,OAAQ,WAAR,QAAQ,CAAA;AACf,IAAA,GAAI,kCAAJ,IAAI,EAAA;;;;;;AAE1B,IAAIC,cAAc,GAAqC,IAAI,AAAC;AAE5D,MAAMC,YAAY,GAAG,IAAIC,OAAY,aAAA,EAAE,AAAC;AAExC;;;;;;;GAOG,CACH,MAAMC,cAAc,GAAG,cAAc,AAAC;AAK/B,eAAeN,4BAA4B,CAACO,OAA0B,EAAE;IAC7E,IAAIJ,cAAc,IAAI,IAAI,EAAE;QAC1B,OAAO;KACR;QAEsDI,GAAa;IAApEJ,cAAc,GAAG,IAAIK,GAAS,QAAA,CAACC,eAAe,CAAC;QAAEC,IAAI,EAAEH,CAAAA,GAAa,GAAbA,OAAO,QAAM,GAAbA,KAAAA,CAAa,GAAbA,OAAO,CAAEG,IAAI,YAAbH,GAAa,GAAI,IAAI;KAAE,CAAC,CAAC;IAEhFJ,cAAc,CAACQ,EAAE,CAAC,YAAY,EAAE,SAASC,UAAU,CAACC,EAAE,EAAE;QACtDA,EAAE,CAACF,EAAE,CAAC,SAAS,EAAE,SAASG,OAAO,CAACC,OAAO,EAAEC,QAAQ,EAAE;YACnDC,CAAAA,GAAAA,OAAM,AAAW,CAAA,QAAX,CAAC,CAACD,QAAQ,CAAC,CAAC;YAClB,MAAME,IAAI,GAAGH,OAAO,CAACI,QAAQ,EAAE,AAAC;YAEhC,IAAID,IAAI,KAAKZ,cAAc,EAAE;gBAC3Bc,oBAAoB,CAACP,EAAE,CAAC,CAAC;gBACzBT,YAAY,CAACiB,IAAI,CAACf,cAAc,CAAC,CAAC;gBAClC,OAAO;aACR;YAEDH,cAAc,QAAS,GAAvBA,KAAAA,CAAuB,GAAvBA,cAAc,CAAEmB,OAAO,CAACC,OAAO,CAAC,SAASC,IAAI,CAACC,MAAM,EAAE;gBACpD,IAAIA,MAAM,KAAKZ,EAAE,IAAIY,MAAM,CAACC,UAAU,KAAKlB,GAAS,QAAA,CAACmB,IAAI,EAAE;oBACzDF,MAAM,CAACG,IAAI,CAACV,IAAI,EAAE;wBAAEW,MAAM,EAAEb,QAAQ;qBAAE,CAAC,CAAC;iBACzC;aACF,CAAC,CAAC;SACJ,CAAC,CAAC;KACJ,CAAC,CAAC;IAEHb,cAAc,CAACQ,EAAE,CAAC,OAAO,EAAE,WAAY;QACrCR,cAAc,GAAG,IAAI,CAAC;KACvB,CAAC,CAAC;CACJ;AAKM,SAASF,uBAAuB,GAAG;IACxCE,cAAc,QAAO,GAArBA,KAAAA,CAAqB,GAArBA,cAAc,CAAE2B,KAAK,EAAE,AAxDzB,CAwD0B;IACxB3B,cAAc,GAAG,IAAI,CAAC;CACvB;AAKM,SAASD,8BAA8B,CAAC6B,QAAkC,EAAE;IACjF3B,YAAY,CAAC4B,WAAW,CAAC1B,cAAc,EAAEyB,QAAQ,CAAC,CAAC;CACpD;AAED;;GAEG,CACH,SAASX,oBAAoB,CAACa,IAAyB,EAAE;IACvD9B,cAAc,QAAS,GAAvBA,KAAAA,CAAuB,GAAvBA,cAAc,CAAEmB,OAAO,CAACC,OAAO,CAAC,SAASC,IAAI,CAACC,MAAM,EAAE;QACpD,IAAIA,MAAM,KAAKQ,IAAI,IAAIR,MAAM,CAACC,UAAU,KAAKlB,GAAS,QAAA,CAACmB,IAAI,EAAE;YAC3DF,MAAM,CAACK,KAAK,EAAE,CAAC;SAChB;KACF,CAAC,CAAC;CACJ"}
1
+ {"version":3,"sources":["../../../../src/start/server/ReactDevToolsProxy.ts"],"sourcesContent":["import assert from 'assert';\nimport { EventEmitter } from 'events';\nimport WebSocket from 'ws';\n\nlet serverInstance: WebSocket.WebSocketServer | null = null;\n\nconst eventEmitter = new EventEmitter();\n\n/**\n * Private command to support DevTools frontend reload.\n *\n * The react-devtools maintains state between frontend(webpage) and backend(app).\n * If we reload the frontend without reloading the app, the react-devtools will stuck on incorrect state.\n * We introduce this special reload command.\n * As long as the frontend reload, we will close app's WebSocket connection and tell app to reconnect again.\n */\nconst RELOAD_COMMAND = 'Expo::RELOAD';\n\n/**\n * Start the react-devtools WebSocket proxy server\n */\nexport async function startReactDevToolsProxyAsync(options?: { port: number }) {\n if (serverInstance != null) {\n return;\n }\n\n serverInstance = new WebSocket.WebSocketServer({ port: options?.port ?? 8097 });\n\n serverInstance.on('connection', function connection(ws) {\n ws.on('message', function message(rawData, isBinary) {\n assert(!isBinary);\n const data = rawData.toString();\n\n if (data === RELOAD_COMMAND) {\n closeAllOtherClients(ws);\n eventEmitter.emit(RELOAD_COMMAND);\n return;\n }\n\n serverInstance?.clients.forEach(function each(client) {\n if (client !== ws && client.readyState === WebSocket.OPEN) {\n client.send(data, { binary: isBinary });\n }\n });\n });\n });\n\n serverInstance.on('close', function () {\n serverInstance = null;\n });\n}\n\n/**\n * Close the WebSocket server\n */\nexport function closeReactDevToolsProxy() {\n serverInstance?.close();\n serverInstance = null;\n}\n\n/**\n * add event listener from react-devtools frontend reload\n */\nexport function addReactDevToolsReloadListener(listener: (...args: any[]) => void) {\n eventEmitter.addListener(RELOAD_COMMAND, listener);\n}\n\n/**\n * Close all other WebSocket clients other than the current `self` client\n */\nfunction closeAllOtherClients(self: WebSocket.WebSocket) {\n serverInstance?.clients.forEach(function each(client) {\n if (client !== self && client.readyState === WebSocket.OPEN) {\n client.close();\n }\n });\n}\n"],"names":["startReactDevToolsProxyAsync","closeReactDevToolsProxy","addReactDevToolsReloadListener","serverInstance","eventEmitter","EventEmitter","RELOAD_COMMAND","options","WebSocket","WebSocketServer","port","on","connection","ws","message","rawData","isBinary","assert","data","toString","closeAllOtherClients","emit","clients","forEach","each","client","readyState","OPEN","send","binary","close","listener","addListener","self"],"mappings":"AAAA;;;;QAqBsBA,4BAA4B,GAA5BA,4BAA4B;QAkClCC,uBAAuB,GAAvBA,uBAAuB;QAQvBC,8BAA8B,GAA9BA,8BAA8B;SA/D3B,OAAQ;gDAAR,QAAQ;IAAR,OAAQ;;;;;SACE,OAAQ;yBAAR,QAAQ;IAAR,OAAQ;;;;;SACf,GAAI;gDAAJ,IAAI;IAAJ,GAAI;;;;;;;;;;AAE1B,IAAIC,cAAc,GAAqC,IAAI,AAAC;AAE5D,MAAMC,YAAY,GAAG,IAAIC,CAAAA,OAAY,gBAAA,EAAE,AAAC;AAExC;;;;;;;GAOG,CACH,MAAMC,cAAc,GAAG,cAAc,AAAC;AAK/B,eAAeN,4BAA4B,CAACO,OAA0B,EAAE;IAC7E,IAAIJ,cAAc,IAAI,IAAI,EAAE;QAC1B,OAAO;KACR;QAEsDI,GAAa;IAApEJ,cAAc,GAAG,IAAIK,CAAAA,GAAS,WAAA,CAACC,eAAe,CAAC;QAAEC,IAAI,EAAEH,CAAAA,GAAa,GAAbA,OAAO,QAAM,GAAbA,KAAAA,CAAa,GAAbA,OAAO,CAAEG,IAAI,YAAbH,GAAa,GAAI,IAAI;KAAE,CAAC,CAAC;IAEhFJ,cAAc,CAACQ,EAAE,CAAC,YAAY,EAAE,SAASC,UAAU,CAACC,EAAE,EAAE;QACtDA,EAAE,CAACF,EAAE,CAAC,SAAS,EAAE,SAASG,OAAO,CAACC,OAAO,EAAEC,QAAQ,EAAE;YACnDC,OAAM,UAAA,CAAC,CAACD,QAAQ,CAAC,CAAC;YAClB,MAAME,IAAI,GAAGH,OAAO,CAACI,QAAQ,EAAE,AAAC;YAEhC,IAAID,IAAI,KAAKZ,cAAc,EAAE;gBAC3Bc,oBAAoB,CAACP,EAAE,CAAC,CAAC;gBACzBT,YAAY,CAACiB,IAAI,CAACf,cAAc,CAAC,CAAC;gBAClC,OAAO;aACR;YAEDH,cAAc,QAAS,GAAvBA,KAAAA,CAAuB,GAAvBA,cAAc,CAAEmB,OAAO,CAACC,OAAO,CAAC,SAASC,IAAI,CAACC,MAAM,EAAE;gBACpD,IAAIA,MAAM,KAAKZ,EAAE,IAAIY,MAAM,CAACC,UAAU,KAAKlB,GAAS,UAAA,CAACmB,IAAI,EAAE;oBACzDF,MAAM,CAACG,IAAI,CAACV,IAAI,EAAE;wBAAEW,MAAM,EAAEb,QAAQ;qBAAE,CAAC,CAAC;iBACzC;aACF,CAAC,CAAC;SACJ,CAAC,CAAC;KACJ,CAAC,CAAC;IAEHb,cAAc,CAACQ,EAAE,CAAC,OAAO,EAAE,WAAY;QACrCR,cAAc,GAAG,IAAI,CAAC;KACvB,CAAC,CAAC;CACJ;AAKM,SAASF,uBAAuB,GAAG;IACxCE,cAAc,QAAO,GAArBA,KAAAA,CAAqB,GAArBA,cAAc,CAAE2B,KAAK,EAAE,AAxDzB,CAwD0B;IACxB3B,cAAc,GAAG,IAAI,CAAC;CACvB;AAKM,SAASD,8BAA8B,CAAC6B,QAAkC,EAAE;IACjF3B,YAAY,CAAC4B,WAAW,CAAC1B,cAAc,EAAEyB,QAAQ,CAAC,CAAC;CACpD;AAED;;GAEG,CACH,SAASX,oBAAoB,CAACa,IAAyB,EAAE;IACvD9B,cAAc,QAAS,GAAvBA,KAAAA,CAAuB,GAAvBA,cAAc,CAAEmB,OAAO,CAACC,OAAO,CAAC,SAASC,IAAI,CAACC,MAAM,EAAE;QACpD,IAAIA,MAAM,KAAKQ,IAAI,IAAIR,MAAM,CAACC,UAAU,KAAKlB,GAAS,UAAA,CAACmB,IAAI,EAAE;YAC3DF,MAAM,CAACK,KAAK,EAAE,CAAC;SAChB;KACF,CAAC,CAAC;CACJ"}
@@ -2,8 +2,20 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
- var _assert = _interopRequireDefault(require("assert"));
6
- var _url = require("url");
5
+ function _assert() {
6
+ const data = _interopRequireDefault(require("assert"));
7
+ _assert = function() {
8
+ return data;
9
+ };
10
+ return data;
11
+ }
12
+ function _url() {
13
+ const data = require("url");
14
+ _url = function() {
15
+ return data;
16
+ };
17
+ return data;
18
+ }
7
19
  var Log = _interopRequireWildcard(require("../../log"));
8
20
  var _ip = require("../../utils/ip");
9
21
  function _interopRequireDefault(obj) {
@@ -48,7 +60,7 @@ class UrlCreator {
48
60
  * @returns URL like `http://localhost:8081/_expo/loading?platform=ios`
49
61
  * @returns URL like `http://localhost:8081/_expo/loading` when no platform is provided.
50
62
  */ constructLoadingUrl(options, platform) {
51
- const url = new _url.URL("_expo/loading", this.constructUrl({
63
+ const url = new (_url()).URL("_expo/loading", this.constructUrl({
52
64
  scheme: "http",
53
65
  ...options
54
66
  }));
@@ -70,6 +82,7 @@ class UrlCreator {
70
82
  "https"
71
83
  ].includes(protocol.toLowerCase()) || // Prohibit the use of `_` characters in the protocol, Node will throw an error when parsing these URLs
72
84
  protocol.includes("_")) {
85
+ debug(`Invalid protocol for dev client URL: ${protocol}`);
73
86
  return null;
74
87
  }
75
88
  const manifestUrl = this.constructUrl({
@@ -95,7 +108,7 @@ class UrlCreator {
95
108
  if (!tunnelUrl) {
96
109
  return null;
97
110
  }
98
- const parsed = new _url.URL(tunnelUrl);
111
+ const parsed = new (_url()).URL(tunnelUrl);
99
112
  var _scheme;
100
113
  return {
101
114
  port: parsed.port,
@@ -129,7 +142,7 @@ class UrlCreator {
129
142
  }
130
143
  exports.UrlCreator = UrlCreator;
131
144
  function getUrlComponentsFromProxyUrl(options, url) {
132
- const parsedProxyUrl = new _url.URL(url);
145
+ const parsedProxyUrl = new (_url()).URL(url);
133
146
  var _scheme;
134
147
  let protocol = (_scheme = options.scheme) != null ? _scheme : "http";
135
148
  if (parsedProxyUrl.protocol === "https:") {
@@ -158,7 +171,7 @@ function getDefaultHostname(options) {
158
171
  return options.hostname || (0, _ip).getIpAddress();
159
172
  }
160
173
  function joinUrlComponents({ protocol , hostname , port }) {
161
- (0, _assert).default(hostname, "hostname cannot be inferred.");
174
+ _assert().default(hostname, "hostname cannot be inferred.");
162
175
  const validProtocol = protocol ? `${protocol}://` : "";
163
176
  const url = `${validProtocol}${hostname}`;
164
177
  if (port) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/start/server/UrlCreator.ts"],"sourcesContent":["import assert from 'assert';\nimport { URL } from 'url';\n\nimport * as Log from '../../log';\nimport { getIpAddress } from '../../utils/ip';\n\nconst debug = require('debug')('expo:start:server:urlCreator') as typeof console.log;\n\nexport interface CreateURLOptions {\n /** URL scheme to use when opening apps in custom runtimes. */\n scheme?: string | null;\n /** Type of dev server host to use. */\n hostType?: 'localhost' | 'lan' | 'tunnel';\n /** Requested hostname. */\n hostname?: string | null;\n}\n\ninterface UrlComponents {\n port: string;\n hostname: string;\n protocol: string;\n}\nexport class UrlCreator {\n constructor(\n public defaults: CreateURLOptions | undefined,\n private bundlerInfo: { port: number; getTunnelUrl?: () => string | null }\n ) {}\n\n /**\n * Return a URL for the \"loading\" interstitial page that is used to disambiguate which\n * native runtime to open the dev server with.\n *\n * @param options options for creating the URL\n * @param platform when opening the URL from the CLI to a connected device we can specify the platform as a query parameter, otherwise it will be inferred from the unsafe user agent sniffing.\n *\n * @returns URL like `http://localhost:8081/_expo/loading?platform=ios`\n * @returns URL like `http://localhost:8081/_expo/loading` when no platform is provided.\n */\n public constructLoadingUrl(options: CreateURLOptions, platform: string | null): string {\n const url = new URL('_expo/loading', this.constructUrl({ scheme: 'http', ...options }));\n if (platform) {\n url.search = new URLSearchParams({ platform }).toString();\n }\n const loadingUrl = url.toString();\n debug(`Loading URL: ${loadingUrl}`);\n return loadingUrl;\n }\n\n /** Create a URI for launching in a native dev client. Returns `null` when no `scheme` can be resolved. */\n public constructDevClientUrl(options?: CreateURLOptions): null | string {\n const protocol = options?.scheme || this.defaults?.scheme;\n\n if (\n !protocol ||\n // Prohibit the use of http(s) in dev client URIs since they'll never be valid.\n ['http', 'https'].includes(protocol.toLowerCase()) ||\n // Prohibit the use of `_` characters in the protocol, Node will throw an error when parsing these URLs\n protocol.includes('_')\n ) {\n return null;\n }\n\n const manifestUrl = this.constructUrl({\n ...options,\n scheme: this.defaults?.hostType === 'tunnel' ? 'https' : 'http',\n });\n const devClientUrl = `${protocol}://expo-development-client/?url=${encodeURIComponent(\n manifestUrl\n )}`;\n debug(`Dev client URL: ${devClientUrl} -- manifestUrl: ${manifestUrl} -- %O`, options);\n return devClientUrl;\n }\n\n /** Create a generic URL. */\n public constructUrl(options?: Partial<CreateURLOptions> | null): string {\n const urlComponents = this.getUrlComponents({\n ...this.defaults,\n ...options,\n });\n const url = joinUrlComponents(urlComponents);\n debug(`URL: ${url}`);\n return url;\n }\n\n /** Get the URL components from the Ngrok server URL. */\n private getTunnelUrlComponents(options: Pick<CreateURLOptions, 'scheme'>): UrlComponents | null {\n const tunnelUrl = this.bundlerInfo.getTunnelUrl?.();\n if (!tunnelUrl) {\n return null;\n }\n const parsed = new URL(tunnelUrl);\n return {\n port: parsed.port,\n hostname: parsed.hostname,\n protocol: options.scheme ?? 'http',\n };\n }\n\n private getUrlComponents(options: CreateURLOptions): UrlComponents {\n // Proxy comes first.\n const proxyURL = getProxyUrl();\n if (proxyURL) {\n return getUrlComponentsFromProxyUrl(options, proxyURL);\n }\n\n // Ngrok.\n if (options.hostType === 'tunnel') {\n const components = this.getTunnelUrlComponents(options);\n if (components) {\n return components;\n }\n Log.warn('Tunnel URL not found (it might not be ready yet), falling back to LAN URL.');\n } else if (options.hostType === 'localhost' && !options.hostname) {\n options.hostname = 'localhost';\n }\n\n return {\n hostname: getDefaultHostname(options),\n port: this.bundlerInfo.port.toString(),\n protocol: options.scheme ?? 'http',\n };\n }\n}\n\nfunction getUrlComponentsFromProxyUrl(\n options: Pick<CreateURLOptions, 'scheme'>,\n url: string\n): UrlComponents {\n const parsedProxyUrl = new URL(url);\n let protocol = options.scheme ?? 'http';\n if (parsedProxyUrl.protocol === 'https:') {\n if (protocol === 'http') {\n protocol = 'https';\n }\n if (!parsedProxyUrl.port) {\n parsedProxyUrl.port = '443';\n }\n }\n return {\n port: parsedProxyUrl.port,\n hostname: parsedProxyUrl.hostname,\n protocol,\n };\n}\n\nfunction getDefaultHostname(options: Pick<CreateURLOptions, 'hostname'>) {\n // TODO: Drop REACT_NATIVE_PACKAGER_HOSTNAME\n if (process.env.REACT_NATIVE_PACKAGER_HOSTNAME) {\n return process.env.REACT_NATIVE_PACKAGER_HOSTNAME.trim();\n } else if (options.hostname === 'localhost') {\n // Restrict the use of `localhost`\n // TODO: Note why we do this.\n return '127.0.0.1';\n }\n\n return options.hostname || getIpAddress();\n}\n\nfunction joinUrlComponents({ protocol, hostname, port }: Partial<UrlComponents>): string {\n assert(hostname, 'hostname cannot be inferred.');\n const validProtocol = protocol ? `${protocol}://` : '';\n\n const url = `${validProtocol}${hostname}`;\n\n if (port) {\n return url + `:${port}`;\n }\n\n return url;\n}\n\n/** @deprecated */\nfunction getProxyUrl(): string | undefined {\n return process.env.EXPO_PACKAGER_PROXY_URL;\n}\n\n// TODO: Drop the undocumented env variables:\n// REACT_NATIVE_PACKAGER_HOSTNAME\n// EXPO_PACKAGER_PROXY_URL\n"],"names":["Log","debug","require","UrlCreator","constructor","defaults","bundlerInfo","constructLoadingUrl","options","platform","url","URL","constructUrl","scheme","search","URLSearchParams","toString","loadingUrl","constructDevClientUrl","protocol","includes","toLowerCase","manifestUrl","hostType","devClientUrl","encodeURIComponent","urlComponents","getUrlComponents","joinUrlComponents","getTunnelUrlComponents","tunnelUrl","getTunnelUrl","parsed","port","hostname","proxyURL","getProxyUrl","getUrlComponentsFromProxyUrl","components","warn","getDefaultHostname","parsedProxyUrl","process","env","REACT_NATIVE_PACKAGER_HOSTNAME","trim","getIpAddress","assert","validProtocol","EXPO_PACKAGER_PROXY_URL"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/start/server/UrlCreator.ts"],"sourcesContent":["import assert from 'assert';\nimport { URL } from 'url';\n\nimport * as Log from '../../log';\nimport { getIpAddress } from '../../utils/ip';\n\nconst debug = require('debug')('expo:start:server:urlCreator') as typeof console.log;\n\nexport interface CreateURLOptions {\n /** URL scheme to use when opening apps in custom runtimes. */\n scheme?: string | null;\n /** Type of dev server host to use. */\n hostType?: 'localhost' | 'lan' | 'tunnel';\n /** Requested hostname. */\n hostname?: string | null;\n}\n\ninterface UrlComponents {\n port: string;\n hostname: string;\n protocol: string;\n}\nexport class UrlCreator {\n constructor(\n public defaults: CreateURLOptions | undefined,\n private bundlerInfo: { port: number; getTunnelUrl?: () => string | null }\n ) {}\n\n /**\n * Return a URL for the \"loading\" interstitial page that is used to disambiguate which\n * native runtime to open the dev server with.\n *\n * @param options options for creating the URL\n * @param platform when opening the URL from the CLI to a connected device we can specify the platform as a query parameter, otherwise it will be inferred from the unsafe user agent sniffing.\n *\n * @returns URL like `http://localhost:8081/_expo/loading?platform=ios`\n * @returns URL like `http://localhost:8081/_expo/loading` when no platform is provided.\n */\n public constructLoadingUrl(options: CreateURLOptions, platform: string | null): string {\n const url = new URL('_expo/loading', this.constructUrl({ scheme: 'http', ...options }));\n if (platform) {\n url.search = new URLSearchParams({ platform }).toString();\n }\n const loadingUrl = url.toString();\n debug(`Loading URL: ${loadingUrl}`);\n return loadingUrl;\n }\n\n /** Create a URI for launching in a native dev client. Returns `null` when no `scheme` can be resolved. */\n public constructDevClientUrl(options?: CreateURLOptions): null | string {\n const protocol = options?.scheme || this.defaults?.scheme;\n\n if (\n !protocol ||\n // Prohibit the use of http(s) in dev client URIs since they'll never be valid.\n ['http', 'https'].includes(protocol.toLowerCase()) ||\n // Prohibit the use of `_` characters in the protocol, Node will throw an error when parsing these URLs\n protocol.includes('_')\n ) {\n debug(`Invalid protocol for dev client URL: ${protocol}`);\n return null;\n }\n\n const manifestUrl = this.constructUrl({\n ...options,\n scheme: this.defaults?.hostType === 'tunnel' ? 'https' : 'http',\n });\n const devClientUrl = `${protocol}://expo-development-client/?url=${encodeURIComponent(\n manifestUrl\n )}`;\n debug(`Dev client URL: ${devClientUrl} -- manifestUrl: ${manifestUrl} -- %O`, options);\n return devClientUrl;\n }\n\n /** Create a generic URL. */\n public constructUrl(options?: Partial<CreateURLOptions> | null): string {\n const urlComponents = this.getUrlComponents({\n ...this.defaults,\n ...options,\n });\n const url = joinUrlComponents(urlComponents);\n debug(`URL: ${url}`);\n return url;\n }\n\n /** Get the URL components from the Ngrok server URL. */\n private getTunnelUrlComponents(options: Pick<CreateURLOptions, 'scheme'>): UrlComponents | null {\n const tunnelUrl = this.bundlerInfo.getTunnelUrl?.();\n if (!tunnelUrl) {\n return null;\n }\n const parsed = new URL(tunnelUrl);\n return {\n port: parsed.port,\n hostname: parsed.hostname,\n protocol: options.scheme ?? 'http',\n };\n }\n\n private getUrlComponents(options: CreateURLOptions): UrlComponents {\n // Proxy comes first.\n const proxyURL = getProxyUrl();\n if (proxyURL) {\n return getUrlComponentsFromProxyUrl(options, proxyURL);\n }\n\n // Ngrok.\n if (options.hostType === 'tunnel') {\n const components = this.getTunnelUrlComponents(options);\n if (components) {\n return components;\n }\n Log.warn('Tunnel URL not found (it might not be ready yet), falling back to LAN URL.');\n } else if (options.hostType === 'localhost' && !options.hostname) {\n options.hostname = 'localhost';\n }\n\n return {\n hostname: getDefaultHostname(options),\n port: this.bundlerInfo.port.toString(),\n protocol: options.scheme ?? 'http',\n };\n }\n}\n\nfunction getUrlComponentsFromProxyUrl(\n options: Pick<CreateURLOptions, 'scheme'>,\n url: string\n): UrlComponents {\n const parsedProxyUrl = new URL(url);\n let protocol = options.scheme ?? 'http';\n if (parsedProxyUrl.protocol === 'https:') {\n if (protocol === 'http') {\n protocol = 'https';\n }\n if (!parsedProxyUrl.port) {\n parsedProxyUrl.port = '443';\n }\n }\n return {\n port: parsedProxyUrl.port,\n hostname: parsedProxyUrl.hostname,\n protocol,\n };\n}\n\nfunction getDefaultHostname(options: Pick<CreateURLOptions, 'hostname'>) {\n // TODO: Drop REACT_NATIVE_PACKAGER_HOSTNAME\n if (process.env.REACT_NATIVE_PACKAGER_HOSTNAME) {\n return process.env.REACT_NATIVE_PACKAGER_HOSTNAME.trim();\n } else if (options.hostname === 'localhost') {\n // Restrict the use of `localhost`\n // TODO: Note why we do this.\n return '127.0.0.1';\n }\n\n return options.hostname || getIpAddress();\n}\n\nfunction joinUrlComponents({ protocol, hostname, port }: Partial<UrlComponents>): string {\n assert(hostname, 'hostname cannot be inferred.');\n const validProtocol = protocol ? `${protocol}://` : '';\n\n const url = `${validProtocol}${hostname}`;\n\n if (port) {\n return url + `:${port}`;\n }\n\n return url;\n}\n\n/** @deprecated */\nfunction getProxyUrl(): string | undefined {\n return process.env.EXPO_PACKAGER_PROXY_URL;\n}\n\n// TODO: Drop the undocumented env variables:\n// REACT_NATIVE_PACKAGER_HOSTNAME\n// EXPO_PACKAGER_PROXY_URL\n"],"names":["Log","debug","require","UrlCreator","constructor","defaults","bundlerInfo","constructLoadingUrl","options","platform","url","URL","constructUrl","scheme","search","URLSearchParams","toString","loadingUrl","constructDevClientUrl","protocol","includes","toLowerCase","manifestUrl","hostType","devClientUrl","encodeURIComponent","urlComponents","getUrlComponents","joinUrlComponents","getTunnelUrlComponents","tunnelUrl","getTunnelUrl","parsed","port","hostname","proxyURL","getProxyUrl","getUrlComponentsFromProxyUrl","components","warn","getDefaultHostname","parsedProxyUrl","process","env","REACT_NATIVE_PACKAGER_HOSTNAME","trim","getIpAddress","assert","validProtocol","EXPO_PACKAGER_PROXY_URL"],"mappings":"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"}
@@ -4,12 +4,44 @@ Object.defineProperty(exports, "__esModule", {
4
4
  });
5
5
  exports.createMetroEndpointAsync = createMetroEndpointAsync;
6
6
  exports.requireFileContentsWithMetro = requireFileContentsWithMetro;
7
- exports.getStaticRenderFunctions = getStaticRenderFunctions;
8
- var _fs = _interopRequireDefault(require("fs"));
9
- var _nodeFetch = _interopRequireDefault(require("node-fetch"));
10
- var _path = _interopRequireDefault(require("path"));
11
- var _requireFromString = _interopRequireDefault(require("require-from-string"));
12
- var _resolveFrom = _interopRequireDefault(require("resolve-from"));
7
+ exports.getStaticRenderFunctionsForEntry = getStaticRenderFunctionsForEntry;
8
+ exports.evalMetro = evalMetro;
9
+ exports.evalMetroNoHandling = evalMetroNoHandling;
10
+ function _fs() {
11
+ const data = _interopRequireDefault(require("fs"));
12
+ _fs = function() {
13
+ return data;
14
+ };
15
+ return data;
16
+ }
17
+ function _nodeFetch() {
18
+ const data = _interopRequireDefault(require("node-fetch"));
19
+ _nodeFetch = function() {
20
+ return data;
21
+ };
22
+ return data;
23
+ }
24
+ function _path() {
25
+ const data = _interopRequireDefault(require("path"));
26
+ _path = function() {
27
+ return data;
28
+ };
29
+ return data;
30
+ }
31
+ function _requireFromString() {
32
+ const data = _interopRequireDefault(require("require-from-string"));
33
+ _requireFromString = function() {
34
+ return data;
35
+ };
36
+ return data;
37
+ }
38
+ function _resolveFrom() {
39
+ const data = _interopRequireDefault(require("resolve-from"));
40
+ _resolveFrom = function() {
41
+ return data;
42
+ };
43
+ return data;
44
+ }
13
45
  var _metroErrorInterface = require("./metro/metroErrorInterface");
14
46
  var _manifestMiddleware = require("./middleware/ManifestMiddleware");
15
47
  var _metroOptions = require("./middleware/metroOptions");
@@ -33,14 +65,18 @@ class MetroNodeError extends Error {
33
65
  const debug = require("debug")("expo:start:server:node-renderer");
34
66
  const cachedSourceMaps = new Map();
35
67
  // Support unhandled rejections
36
- require("source-map-support").install({
37
- retrieveSourceMap (source) {
38
- if (cachedSourceMaps.has(source)) {
39
- return cachedSourceMaps.get(source);
68
+ // Detect if running in Bun
69
+ // @ts-expect-error: This is a global variable that is set by Bun.
70
+ if (!process.isBun) {
71
+ require("source-map-support").install({
72
+ retrieveSourceMap (source) {
73
+ if (cachedSourceMaps.has(source)) {
74
+ return cachedSourceMaps.get(source);
75
+ }
76
+ return null;
40
77
  }
41
- return null;
42
- }
43
- });
78
+ });
79
+ }
44
80
  function wrapBundle(str) {
45
81
  // Skip the metro runtime so debugging is a bit easier.
46
82
  // Replace the __r() call with an export statement.
@@ -48,8 +84,8 @@ function wrapBundle(str) {
48
84
  return str.replace(/^(__r\(.*\);)$/gm, "module.exports = $1");
49
85
  }
50
86
  // TODO(EvanBacon): Group all the code together and version.
51
- const getRenderModuleId = (projectRoot)=>{
52
- const moduleId = _resolveFrom.default.silent(projectRoot, "expo-router/node/render.js");
87
+ const getRenderModuleId = (projectRoot, entry = "expo-router/node/render.js")=>{
88
+ const moduleId = _resolveFrom().default.silent(projectRoot, entry);
53
89
  if (!moduleId) {
54
90
  throw new Error(`A version of expo-router with Node.js support is not installed in the project.`);
55
91
  }
@@ -58,69 +94,58 @@ const getRenderModuleId = (projectRoot)=>{
58
94
  const moveStaticRenderFunction = (0, _fn).memoize(async (projectRoot, requiredModuleId)=>{
59
95
  // Copy the file into the project to ensure it works in monorepos.
60
96
  // This means the file cannot have any relative imports.
61
- const tempDir = _path.default.join(projectRoot, ".expo/static");
62
- await _fs.default.promises.mkdir(tempDir, {
97
+ const tempDir = _path().default.join(projectRoot, ".expo/static");
98
+ await _fs().default.promises.mkdir(tempDir, {
63
99
  recursive: true
64
100
  });
65
- const moduleId = _path.default.join(tempDir, "render.js");
66
- await _fs.default.promises.writeFile(moduleId, await _fs.default.promises.readFile(requiredModuleId, "utf8"));
101
+ const moduleId = _path().default.join(tempDir, "render.js");
102
+ await _fs().default.promises.writeFile(moduleId, await _fs().default.promises.readFile(requiredModuleId, "utf8"));
67
103
  // Sleep to give watchman time to register the file.
68
104
  await (0, _delay).delayAsync(50);
69
105
  return moduleId;
70
106
  });
71
- /** @returns the js file contents required to generate the static generation function. */ async function getStaticRenderFunctionsContentAsync(projectRoot, devServerUrl, { dev =false , minify =false , environment , baseUrl , routerRoot }) {
107
+ /** @returns the js file contents required to generate the static generation function. */ async function getStaticRenderFunctionsContentAsync(projectRoot, devServerUrl, props, entry) {
72
108
  const root = (0, _manifestMiddleware).getMetroServerRoot(projectRoot);
73
- const requiredModuleId = getRenderModuleId(root);
109
+ const requiredModuleId = getRenderModuleId(root, entry);
74
110
  let moduleId = requiredModuleId;
75
111
  // Cannot be accessed using Metro's server API, we need to move the file
76
112
  // into the project root and try again.
77
- if (_path.default.relative(root, moduleId).startsWith("..")) {
113
+ if (_path().default.relative(root, moduleId).startsWith("..")) {
78
114
  moduleId = await moveStaticRenderFunction(projectRoot, requiredModuleId);
79
115
  }
80
- return requireFileContentsWithMetro(root, devServerUrl, moduleId, {
81
- dev,
82
- minify,
83
- environment,
84
- baseUrl,
85
- routerRoot
86
- });
116
+ return requireFileContentsWithMetro(root, devServerUrl, moduleId, props);
87
117
  }
88
118
  async function ensureFileInRootDirectory(projectRoot, otherFile) {
89
119
  // Cannot be accessed using Metro's server API, we need to move the file
90
120
  // into the project root and try again.
91
- if (!_path.default.relative(projectRoot, otherFile).startsWith(".." + _path.default.sep)) {
121
+ if (!_path().default.relative(projectRoot, otherFile).startsWith(".." + _path().default.sep)) {
92
122
  return otherFile;
93
123
  }
94
124
  // Copy the file into the project to ensure it works in monorepos.
95
125
  // This means the file cannot have any relative imports.
96
- const tempDir = _path.default.join(projectRoot, ".expo/static-tmp");
97
- await _fs.default.promises.mkdir(tempDir, {
126
+ const tempDir = _path().default.join(projectRoot, ".expo/static-tmp");
127
+ await _fs().default.promises.mkdir(tempDir, {
98
128
  recursive: true
99
129
  });
100
- const moduleId = _path.default.join(tempDir, _path.default.basename(otherFile));
101
- await _fs.default.promises.writeFile(moduleId, await _fs.default.promises.readFile(otherFile, "utf8"));
130
+ const moduleId = _path().default.join(tempDir, _path().default.basename(otherFile));
131
+ await _fs().default.promises.writeFile(moduleId, await _fs().default.promises.readFile(otherFile, "utf8"));
102
132
  // Sleep to give watchman time to register the file.
103
133
  await (0, _delay).delayAsync(50);
104
134
  return moduleId;
105
135
  }
106
- async function createMetroEndpointAsync(projectRoot, devServerUrl, absoluteFilePath, { dev =false , platform ="web" , minify =false , environment , engine ="hermes" , baseUrl , routerRoot }) {
136
+ async function createMetroEndpointAsync(projectRoot, devServerUrl, absoluteFilePath, props) {
107
137
  const root = (0, _manifestMiddleware).getMetroServerRoot(projectRoot);
108
138
  const safeOtherFile = await ensureFileInRootDirectory(projectRoot, absoluteFilePath);
109
- const serverPath = _path.default.relative(root, safeOtherFile).replace(/\.[jt]sx?$/, "");
139
+ const serverPath = _path().default.relative(root, safeOtherFile).replace(/\.[jt]sx?$/, "");
110
140
  const urlFragment = (0, _metroOptions).createBundleUrlPath({
111
- platform,
112
- mode: dev ? "development" : "production",
113
141
  mainModuleName: serverPath,
114
- engine,
115
- environment,
116
142
  lazy: false,
117
- minify,
118
- baseUrl,
119
- isExporting: true,
120
143
  asyncRoutes: false,
121
- routerRoot,
122
144
  inlineSourceMap: false,
123
- bytecode: false
145
+ engine: "hermes",
146
+ minify: false,
147
+ bytecode: false,
148
+ ...props
124
149
  });
125
150
  let url;
126
151
  if (devServerUrl) {
@@ -128,12 +153,16 @@ async function createMetroEndpointAsync(projectRoot, devServerUrl, absoluteFileP
128
153
  } else {
129
154
  url = "/" + urlFragment.replace(/^\/+/, "");
130
155
  }
131
- debug("fetching from Metro:", root, serverPath, url);
132
156
  return url;
133
157
  }
134
158
  async function requireFileContentsWithMetro(projectRoot, devServerUrl, absoluteFilePath, props) {
135
159
  const url = await createMetroEndpointAsync(projectRoot, devServerUrl, absoluteFilePath, props);
136
- const res = await (0, _nodeFetch).default(url);
160
+ return await metroFetchAsync(projectRoot, url);
161
+ }
162
+ async function metroFetchAsync(projectRoot, url) {
163
+ debug("Fetching from Metro:", url);
164
+ // TODO: Skip the dev server and use the Metro instance directly for better results, faster.
165
+ const res = await _nodeFetch().default(url);
137
166
  // TODO: Improve error handling
138
167
  if (res.status === 500) {
139
168
  const text = await res.text();
@@ -148,7 +177,7 @@ async function requireFileContentsWithMetro(projectRoot, devServerUrl, absoluteF
148
177
  throw new Error(`Error fetching bundle for static rendering: ${res.status} ${res.statusText}`);
149
178
  }
150
179
  const content = await res.text();
151
- const map = await (0, _nodeFetch).default(url.replace(".bundle?", ".map?")).then((r)=>r.json()
180
+ const map = await _nodeFetch().default(url.replace(".bundle?", ".map?")).then((r)=>r.json()
152
181
  );
153
182
  cachedSourceMaps.set(url, {
154
183
  url: projectRoot,
@@ -156,12 +185,16 @@ async function requireFileContentsWithMetro(projectRoot, devServerUrl, absoluteF
156
185
  });
157
186
  return {
158
187
  src: wrapBundle(content),
159
- filename: url
188
+ filename: url,
189
+ map
160
190
  };
161
191
  }
162
- async function getStaticRenderFunctions(projectRoot, devServerUrl, options) {
163
- const { src: scriptContents , filename } = await getStaticRenderFunctionsContentAsync(projectRoot, devServerUrl, options);
164
- return evalMetroAndWrapFunctions(projectRoot, scriptContents, filename);
192
+ async function getStaticRenderFunctionsForEntry(projectRoot, devServerUrl, options, entry) {
193
+ const { src: scriptContents , filename } = await getStaticRenderFunctionsContentAsync(projectRoot, devServerUrl, options, entry);
194
+ return {
195
+ filename,
196
+ fn: await evalMetroAndWrapFunctions(projectRoot, scriptContents, filename)
197
+ };
165
198
  }
166
199
  function evalMetroAndWrapFunctions(projectRoot, script, filename) {
167
200
  const contents = evalMetro(projectRoot, script, filename);
@@ -188,9 +221,8 @@ function evalMetroAndWrapFunctions(projectRoot, script, filename) {
188
221
  }, {});
189
222
  }
190
223
  function evalMetro(projectRoot, src, filename) {
191
- (0, _serverLogLikeMetro).augmentLogs(projectRoot);
192
224
  try {
193
- return (0, _profile).profile(_requireFromString.default, "eval-metro-bundle")(src, filename);
225
+ return evalMetroNoHandling(projectRoot, src, filename);
194
226
  } catch (error) {
195
227
  // Format any errors that were thrown in the global scope of the evaluation.
196
228
  if (error instanceof Error) {
@@ -204,7 +236,11 @@ function evalMetro(projectRoot, src, filename) {
204
236
  } else {
205
237
  throw error;
206
238
  }
207
- } finally{}
239
+ }
240
+ }
241
+ function evalMetroNoHandling(projectRoot, src, filename) {
242
+ (0, _serverLogLikeMetro).augmentLogs(projectRoot);
243
+ return (0, _profile).profile(_requireFromString().default, "eval-metro-bundle")(src, filename);
208
244
  }
209
245
 
210
246
  //# sourceMappingURL=getStaticRenderFunctions.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/start/server/getStaticRenderFunctions.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 fetch from 'node-fetch';\nimport path from 'path';\nimport requireString from 'require-from-string';\nimport resolveFrom from 'resolve-from';\n\nimport { logMetroError, logMetroErrorAsync } from './metro/metroErrorInterface';\nimport { getMetroServerRoot } from './middleware/ManifestMiddleware';\nimport { createBundleUrlPath } from './middleware/metroOptions';\nimport { augmentLogs } from './serverLogLikeMetro';\nimport { stripAnsi } from '../../utils/ansi';\nimport { delayAsync } from '../../utils/delay';\nimport { SilentError } from '../../utils/errors';\nimport { memoize } from '../../utils/fn';\nimport { profile } from '../../utils/profile';\n\ntype StaticRenderOptions = {\n // Ensure the style format is `css-xxxx` (prod) instead of `css-view-xxxx` (dev)\n dev?: boolean;\n minify?: boolean;\n platform?: string;\n environment?: 'node';\n engine?: 'hermes';\n baseUrl: string;\n routerRoot: string;\n};\n\nclass MetroNodeError extends Error {\n constructor(\n message: string,\n public rawObject: any\n ) {\n super(message);\n }\n}\n\nconst debug = require('debug')('expo:start:server:node-renderer') as typeof console.log;\n\nconst cachedSourceMaps: Map<string, { url: string; map: string }> = new Map();\n\n// Support unhandled rejections\nrequire('source-map-support').install({\n retrieveSourceMap(source: string) {\n if (cachedSourceMaps.has(source)) {\n return cachedSourceMaps.get(source);\n }\n return null;\n },\n});\n\nfunction wrapBundle(str: string) {\n // Skip the metro runtime so debugging is a bit easier.\n // Replace the __r() call with an export statement.\n // Use gm to apply to the last require line. This is needed when the bundle has side-effects.\n return str.replace(/^(__r\\(.*\\);)$/gm, 'module.exports = $1');\n}\n\n// TODO(EvanBacon): Group all the code together and version.\nconst getRenderModuleId = (projectRoot: string): string => {\n const moduleId = resolveFrom.silent(projectRoot, 'expo-router/node/render.js');\n if (!moduleId) {\n throw new Error(\n `A version of expo-router with Node.js support is not installed in the project.`\n );\n }\n\n return moduleId;\n};\n\nconst moveStaticRenderFunction = memoize(async (projectRoot: string, requiredModuleId: string) => {\n // Copy the file into the project to ensure it works in monorepos.\n // This means the file cannot have any relative imports.\n const tempDir = path.join(projectRoot, '.expo/static');\n await fs.promises.mkdir(tempDir, { recursive: true });\n const moduleId = path.join(tempDir, 'render.js');\n await fs.promises.writeFile(moduleId, await fs.promises.readFile(requiredModuleId, 'utf8'));\n // Sleep to give watchman time to register the file.\n await delayAsync(50);\n return moduleId;\n});\n\n/** @returns the js file contents required to generate the static generation function. */\nasync function getStaticRenderFunctionsContentAsync(\n projectRoot: string,\n devServerUrl: string,\n { dev = false, minify = false, environment, baseUrl, routerRoot }: StaticRenderOptions\n): Promise<{ src: string; filename: string }> {\n const root = getMetroServerRoot(projectRoot);\n const requiredModuleId = getRenderModuleId(root);\n let moduleId = requiredModuleId;\n\n // Cannot be accessed using Metro's server API, we need to move the file\n // into the project root and try again.\n if (path.relative(root, moduleId).startsWith('..')) {\n moduleId = await moveStaticRenderFunction(projectRoot, requiredModuleId);\n }\n\n return requireFileContentsWithMetro(root, devServerUrl, moduleId, {\n dev,\n minify,\n environment,\n baseUrl,\n routerRoot,\n });\n}\n\nasync function ensureFileInRootDirectory(projectRoot: string, otherFile: string) {\n // Cannot be accessed using Metro's server API, we need to move the file\n // into the project root and try again.\n if (!path.relative(projectRoot, otherFile).startsWith('..' + path.sep)) {\n return otherFile;\n }\n\n // Copy the file into the project to ensure it works in monorepos.\n // This means the file cannot have any relative imports.\n const tempDir = path.join(projectRoot, '.expo/static-tmp');\n await fs.promises.mkdir(tempDir, { recursive: true });\n const moduleId = path.join(tempDir, path.basename(otherFile));\n await fs.promises.writeFile(moduleId, await fs.promises.readFile(otherFile, 'utf8'));\n // Sleep to give watchman time to register the file.\n await delayAsync(50);\n return moduleId;\n}\n\nexport async function createMetroEndpointAsync(\n projectRoot: string,\n devServerUrl: string,\n absoluteFilePath: string,\n {\n dev = false,\n platform = 'web',\n minify = false,\n environment,\n engine = 'hermes',\n baseUrl,\n routerRoot,\n }: StaticRenderOptions\n): Promise<string> {\n const root = getMetroServerRoot(projectRoot);\n const safeOtherFile = await ensureFileInRootDirectory(projectRoot, absoluteFilePath);\n const serverPath = path.relative(root, safeOtherFile).replace(/\\.[jt]sx?$/, '');\n\n const urlFragment = createBundleUrlPath({\n platform,\n mode: dev ? 'development' : 'production',\n mainModuleName: serverPath,\n engine,\n environment,\n lazy: false,\n minify,\n baseUrl,\n isExporting: true,\n asyncRoutes: false,\n routerRoot,\n inlineSourceMap: false,\n bytecode: false,\n });\n\n let url: string;\n if (devServerUrl) {\n url = new URL(urlFragment.replace(/^\\//, ''), devServerUrl).toString();\n } else {\n url = '/' + urlFragment.replace(/^\\/+/, '');\n }\n debug('fetching from Metro:', root, serverPath, url);\n return url;\n}\n\nexport async function requireFileContentsWithMetro(\n projectRoot: string,\n devServerUrl: string,\n absoluteFilePath: string,\n props: StaticRenderOptions\n): Promise<{ src: string; filename: string }> {\n const url = await createMetroEndpointAsync(projectRoot, devServerUrl, absoluteFilePath, props);\n\n const res = await fetch(url);\n\n // TODO: Improve error handling\n if (res.status === 500) {\n const text = await res.text();\n if (text.startsWith('{\"originModulePath\"') || text.startsWith('{\"type\":\"TransformError\"')) {\n const errorObject = JSON.parse(text);\n\n throw new MetroNodeError(stripAnsi(errorObject.message) ?? errorObject.message, errorObject);\n }\n throw new Error(`[${res.status}]: ${res.statusText}\\n${text}`);\n }\n\n if (!res.ok) {\n throw new Error(`Error fetching bundle for static rendering: ${res.status} ${res.statusText}`);\n }\n\n const content = await res.text();\n\n const map = await fetch(url.replace('.bundle?', '.map?')).then((r) => r.json());\n cachedSourceMaps.set(url, { url: projectRoot, map });\n\n return { src: wrapBundle(content), filename: url };\n}\n\nexport async function getStaticRenderFunctions(\n projectRoot: string,\n devServerUrl: string,\n options: StaticRenderOptions\n): Promise<Record<string, (...args: any[]) => Promise<any>>> {\n const { src: scriptContents, filename } = await getStaticRenderFunctionsContentAsync(\n projectRoot,\n devServerUrl,\n options\n );\n\n return evalMetroAndWrapFunctions(projectRoot, scriptContents, filename);\n}\n\nfunction evalMetroAndWrapFunctions<T = Record<string, (...args: any[]) => Promise<any>>>(\n projectRoot: string,\n script: string,\n filename: string\n): Promise<T> {\n const contents = evalMetro(projectRoot, script, filename);\n\n // wrap each function with a try/catch that uses Metro's error formatter\n return Object.keys(contents).reduce((acc, key) => {\n const fn = contents[key];\n if (typeof fn !== 'function') {\n return { ...acc, [key]: fn };\n }\n\n acc[key] = async function (...props: any[]) {\n try {\n return await fn.apply(this, props);\n } catch (error: any) {\n await logMetroError(projectRoot, { error });\n throw new SilentError(error);\n }\n };\n return acc;\n }, {} as any);\n}\n\nfunction evalMetro(projectRoot: string, src: string, filename: string) {\n augmentLogs(projectRoot);\n try {\n return profile(requireString, 'eval-metro-bundle')(src, filename);\n } catch (error: any) {\n // Format any errors that were thrown in the global scope of the evaluation.\n if (error instanceof Error) {\n logMetroErrorAsync({ projectRoot, error }).catch((internalError) => {\n debug('Failed to log metro error:', internalError);\n throw error;\n });\n } else {\n throw error;\n }\n } finally {\n }\n}\n"],"names":["createMetroEndpointAsync","requireFileContentsWithMetro","getStaticRenderFunctions","MetroNodeError","Error","constructor","message","rawObject","debug","require","cachedSourceMaps","Map","install","retrieveSourceMap","source","has","get","wrapBundle","str","replace","getRenderModuleId","projectRoot","moduleId","resolveFrom","silent","moveStaticRenderFunction","memoize","requiredModuleId","tempDir","path","join","fs","promises","mkdir","recursive","writeFile","readFile","delayAsync","getStaticRenderFunctionsContentAsync","devServerUrl","dev","minify","environment","baseUrl","routerRoot","root","getMetroServerRoot","relative","startsWith","ensureFileInRootDirectory","otherFile","sep","basename","absoluteFilePath","platform","engine","safeOtherFile","serverPath","urlFragment","createBundleUrlPath","mode","mainModuleName","lazy","isExporting","asyncRoutes","inlineSourceMap","bytecode","url","URL","toString","props","res","fetch","status","text","errorObject","JSON","parse","stripAnsi","statusText","ok","content","map","then","r","json","set","src","filename","options","scriptContents","evalMetroAndWrapFunctions","script","contents","evalMetro","Object","keys","reduce","acc","key","fn","apply","error","logMetroError","SilentError","augmentLogs","profile","requireString","logMetroErrorAsync","catch","internalError"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/start/server/getStaticRenderFunctions.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 fetch from 'node-fetch';\nimport path from 'path';\nimport requireString from 'require-from-string';\nimport resolveFrom from 'resolve-from';\n\nimport { logMetroError, logMetroErrorAsync } from './metro/metroErrorInterface';\nimport { getMetroServerRoot } from './middleware/ManifestMiddleware';\nimport { createBundleUrlPath, ExpoMetroOptions } from './middleware/metroOptions';\nimport { augmentLogs } from './serverLogLikeMetro';\nimport { stripAnsi } from '../../utils/ansi';\nimport { delayAsync } from '../../utils/delay';\nimport { SilentError } from '../../utils/errors';\nimport { memoize } from '../../utils/fn';\nimport { profile } from '../../utils/profile';\n\n/** The list of input keys will become optional, everything else will remain the same. */\nexport type PickPartial<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;\n\nclass MetroNodeError extends Error {\n constructor(\n message: string,\n public rawObject: any\n ) {\n super(message);\n }\n}\n\nconst debug = require('debug')('expo:start:server:node-renderer') as typeof console.log;\n\nconst cachedSourceMaps: Map<string, { url: string; map: string }> = new Map();\n\n// Support unhandled rejections\n// Detect if running in Bun\n\n// @ts-expect-error: This is a global variable that is set by Bun.\nif (!process.isBun) {\n require('source-map-support').install({\n retrieveSourceMap(source: string) {\n if (cachedSourceMaps.has(source)) {\n return cachedSourceMaps.get(source);\n }\n return null;\n },\n });\n}\n\nfunction wrapBundle(str: string) {\n // Skip the metro runtime so debugging is a bit easier.\n // Replace the __r() call with an export statement.\n // Use gm to apply to the last require line. This is needed when the bundle has side-effects.\n return str.replace(/^(__r\\(.*\\);)$/gm, 'module.exports = $1');\n}\n\n// TODO(EvanBacon): Group all the code together and version.\nconst getRenderModuleId = (\n projectRoot: string,\n entry: string = 'expo-router/node/render.js'\n): string => {\n const moduleId = resolveFrom.silent(projectRoot, entry);\n if (!moduleId) {\n throw new Error(\n `A version of expo-router with Node.js support is not installed in the project.`\n );\n }\n\n return moduleId;\n};\n\nconst moveStaticRenderFunction = memoize(async (projectRoot: string, requiredModuleId: string) => {\n // Copy the file into the project to ensure it works in monorepos.\n // This means the file cannot have any relative imports.\n const tempDir = path.join(projectRoot, '.expo/static');\n await fs.promises.mkdir(tempDir, { recursive: true });\n const moduleId = path.join(tempDir, 'render.js');\n await fs.promises.writeFile(moduleId, await fs.promises.readFile(requiredModuleId, 'utf8'));\n // Sleep to give watchman time to register the file.\n await delayAsync(50);\n return moduleId;\n});\n\n/** @returns the js file contents required to generate the static generation function. */\nasync function getStaticRenderFunctionsContentAsync(\n projectRoot: string,\n devServerUrl: string,\n props: PickPartial<ExpoMetroOptions, 'mainModuleName' | 'bytecode'>,\n entry?: string\n): Promise<{ src: string; filename: string }> {\n const root = getMetroServerRoot(projectRoot);\n const requiredModuleId = getRenderModuleId(root, entry);\n let moduleId = requiredModuleId;\n\n // Cannot be accessed using Metro's server API, we need to move the file\n // into the project root and try again.\n if (path.relative(root, moduleId).startsWith('..')) {\n moduleId = await moveStaticRenderFunction(projectRoot, requiredModuleId);\n }\n\n return requireFileContentsWithMetro(root, devServerUrl, moduleId, props);\n}\n\nasync function ensureFileInRootDirectory(projectRoot: string, otherFile: string) {\n // Cannot be accessed using Metro's server API, we need to move the file\n // into the project root and try again.\n if (!path.relative(projectRoot, otherFile).startsWith('..' + path.sep)) {\n return otherFile;\n }\n\n // Copy the file into the project to ensure it works in monorepos.\n // This means the file cannot have any relative imports.\n const tempDir = path.join(projectRoot, '.expo/static-tmp');\n await fs.promises.mkdir(tempDir, { recursive: true });\n const moduleId = path.join(tempDir, path.basename(otherFile));\n await fs.promises.writeFile(moduleId, await fs.promises.readFile(otherFile, 'utf8'));\n // Sleep to give watchman time to register the file.\n await delayAsync(50);\n return moduleId;\n}\n\nexport async function createMetroEndpointAsync(\n projectRoot: string,\n devServerUrl: string,\n absoluteFilePath: string,\n props: PickPartial<ExpoMetroOptions, 'mainModuleName' | 'bytecode'>\n): Promise<string> {\n const root = getMetroServerRoot(projectRoot);\n const safeOtherFile = await ensureFileInRootDirectory(projectRoot, absoluteFilePath);\n const serverPath = path.relative(root, safeOtherFile).replace(/\\.[jt]sx?$/, '');\n\n const urlFragment = createBundleUrlPath({\n mainModuleName: serverPath,\n lazy: false,\n asyncRoutes: false,\n inlineSourceMap: false,\n engine: 'hermes',\n minify: false,\n bytecode: false,\n ...props,\n });\n\n let url: string;\n if (devServerUrl) {\n url = new URL(urlFragment.replace(/^\\//, ''), devServerUrl).toString();\n } else {\n url = '/' + urlFragment.replace(/^\\/+/, '');\n }\n return url;\n}\n\nexport async function requireFileContentsWithMetro(\n projectRoot: string,\n devServerUrl: string,\n absoluteFilePath: string,\n props: PickPartial<ExpoMetroOptions, 'mainModuleName' | 'bytecode'>\n): Promise<{ src: string; filename: string }> {\n const url = await createMetroEndpointAsync(projectRoot, devServerUrl, absoluteFilePath, props);\n return await metroFetchAsync(projectRoot, url);\n}\n\nasync function metroFetchAsync(\n projectRoot: string,\n url: string\n): Promise<{ src: string; filename: string; map?: any }> {\n debug('Fetching from Metro:', url);\n // TODO: Skip the dev server and use the Metro instance directly for better results, faster.\n const res = await fetch(url);\n\n // TODO: Improve error handling\n if (res.status === 500) {\n const text = await res.text();\n if (text.startsWith('{\"originModulePath\"') || text.startsWith('{\"type\":\"TransformError\"')) {\n const errorObject = JSON.parse(text);\n\n throw new MetroNodeError(stripAnsi(errorObject.message) ?? errorObject.message, errorObject);\n }\n throw new Error(`[${res.status}]: ${res.statusText}\\n${text}`);\n }\n\n if (!res.ok) {\n throw new Error(`Error fetching bundle for static rendering: ${res.status} ${res.statusText}`);\n }\n\n const content = await res.text();\n\n const map = await fetch(url.replace('.bundle?', '.map?')).then((r) => r.json());\n cachedSourceMaps.set(url, { url: projectRoot, map });\n\n return {\n src: wrapBundle(content),\n filename: url,\n map,\n };\n}\n\nexport async function getStaticRenderFunctionsForEntry<T = any>(\n projectRoot: string,\n devServerUrl: string,\n options: PickPartial<ExpoMetroOptions, 'mainModuleName' | 'bytecode'>,\n entry: string\n) {\n const { src: scriptContents, filename } = await getStaticRenderFunctionsContentAsync(\n projectRoot,\n devServerUrl,\n options,\n entry\n );\n\n return {\n filename,\n fn: await evalMetroAndWrapFunctions<T>(projectRoot, scriptContents, filename),\n };\n}\n\nfunction evalMetroAndWrapFunctions<T = Record<string, any>>(\n projectRoot: string,\n script: string,\n filename: string\n): Promise<T> {\n const contents = evalMetro(projectRoot, script, filename);\n // wrap each function with a try/catch that uses Metro's error formatter\n return Object.keys(contents).reduce((acc, key) => {\n const fn = contents[key];\n if (typeof fn !== 'function') {\n return { ...acc, [key]: fn };\n }\n\n acc[key] = async function (...props: any[]) {\n try {\n return await fn.apply(this, props);\n } catch (error: any) {\n await logMetroError(projectRoot, { error });\n throw new SilentError(error);\n }\n };\n return acc;\n }, {} as any);\n}\n\nexport function evalMetro(projectRoot: string, src: string, filename: string) {\n try {\n return evalMetroNoHandling(projectRoot, src, filename);\n } catch (error: any) {\n // Format any errors that were thrown in the global scope of the evaluation.\n if (error instanceof Error) {\n logMetroErrorAsync({ projectRoot, error }).catch((internalError) => {\n debug('Failed to log metro error:', internalError);\n throw error;\n });\n } else {\n throw error;\n }\n }\n}\n\nexport function evalMetroNoHandling(projectRoot: string, src: string, filename: string) {\n augmentLogs(projectRoot);\n\n return profile(requireString, 'eval-metro-bundle')(src, filename);\n}\n"],"names":["createMetroEndpointAsync","requireFileContentsWithMetro","getStaticRenderFunctionsForEntry","evalMetro","evalMetroNoHandling","MetroNodeError","Error","constructor","message","rawObject","debug","require","cachedSourceMaps","Map","process","isBun","install","retrieveSourceMap","source","has","get","wrapBundle","str","replace","getRenderModuleId","projectRoot","entry","moduleId","resolveFrom","silent","moveStaticRenderFunction","memoize","requiredModuleId","tempDir","path","join","fs","promises","mkdir","recursive","writeFile","readFile","delayAsync","getStaticRenderFunctionsContentAsync","devServerUrl","props","root","getMetroServerRoot","relative","startsWith","ensureFileInRootDirectory","otherFile","sep","basename","absoluteFilePath","safeOtherFile","serverPath","urlFragment","createBundleUrlPath","mainModuleName","lazy","asyncRoutes","inlineSourceMap","engine","minify","bytecode","url","URL","toString","metroFetchAsync","res","fetch","status","text","errorObject","JSON","parse","stripAnsi","statusText","ok","content","map","then","r","json","set","src","filename","options","scriptContents","fn","evalMetroAndWrapFunctions","script","contents","Object","keys","reduce","acc","key","apply","error","logMetroError","SilentError","logMetroErrorAsync","catch","internalError","augmentLogs","profile","requireString"],"mappings":"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"}