vxrn 1.27.1 → 2.0.0-beta.45.1

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 (456) hide show
  1. package/dist/cli.mjs +212 -261
  2. package/dist/cli.mjs.map +1 -1
  3. package/dist/cli.native.js +216 -265
  4. package/dist/cli.native.js.map +1 -1
  5. package/dist/config/getAdditionalViteConfig.mjs +33 -62
  6. package/dist/config/getAdditionalViteConfig.mjs.map +1 -1
  7. package/dist/config/getAdditionalViteConfig.native.js +33 -62
  8. package/dist/config/getAdditionalViteConfig.native.js.map +1 -1
  9. package/dist/config/getBaseViteConfigOnly.mjs +84 -77
  10. package/dist/config/getBaseViteConfigOnly.mjs.map +1 -1
  11. package/dist/config/getBaseViteConfigOnly.native.js +86 -79
  12. package/dist/config/getBaseViteConfigOnly.native.js.map +1 -1
  13. package/dist/config/getBaseViteConfigWithPlugins.mjs +6 -4
  14. package/dist/config/getBaseViteConfigWithPlugins.mjs.map +1 -1
  15. package/dist/config/getBaseViteConfigWithPlugins.native.js +6 -4
  16. package/dist/config/getBaseViteConfigWithPlugins.native.js.map +1 -1
  17. package/dist/config/getBaseVitePlugins.mjs +102 -130
  18. package/dist/config/getBaseVitePlugins.mjs.map +1 -1
  19. package/dist/config/getBaseVitePlugins.native.js +123 -152
  20. package/dist/config/getBaseVitePlugins.native.js.map +1 -1
  21. package/dist/config/getNonCliModeOnlyVitePlugins.mjs +3 -3
  22. package/dist/config/getNonCliModeOnlyVitePlugins.mjs.map +1 -1
  23. package/dist/config/getNonCliModeOnlyVitePlugins.native.js +3 -1
  24. package/dist/config/getNonCliModeOnlyVitePlugins.native.js.map +1 -1
  25. package/dist/config/getOptimizeDeps.mjs +138 -42
  26. package/dist/config/getOptimizeDeps.mjs.map +1 -1
  27. package/dist/config/getOptimizeDeps.native.js +138 -42
  28. package/dist/config/getOptimizeDeps.native.js.map +1 -1
  29. package/dist/config/getOptionsFilled.mjs +48 -52
  30. package/dist/config/getOptionsFilled.mjs.map +1 -1
  31. package/dist/config/getOptionsFilled.native.js +51 -55
  32. package/dist/config/getOptionsFilled.native.js.map +1 -1
  33. package/dist/config/getReactNativePlugins.mjs +23 -15
  34. package/dist/config/getReactNativePlugins.mjs.map +1 -1
  35. package/dist/config/getReactNativePlugins.native.js +25 -16
  36. package/dist/config/getReactNativePlugins.native.js.map +1 -1
  37. package/dist/config/getServerOptionsFilled.mjs +33 -35
  38. package/dist/config/getServerOptionsFilled.mjs.map +1 -1
  39. package/dist/config/getServerOptionsFilled.native.js +35 -38
  40. package/dist/config/getServerOptionsFilled.native.js.map +1 -1
  41. package/dist/config/getViteServerConfig.mjs +34 -45
  42. package/dist/config/getViteServerConfig.mjs.map +1 -1
  43. package/dist/config/getViteServerConfig.native.js +35 -46
  44. package/dist/config/getViteServerConfig.native.js.map +1 -1
  45. package/dist/config/mergeUserConfig.mjs +50 -28
  46. package/dist/config/mergeUserConfig.mjs.map +1 -1
  47. package/dist/config/mergeUserConfig.native.js +60 -38
  48. package/dist/config/mergeUserConfig.native.js.map +1 -1
  49. package/dist/constants/defaults.mjs +29 -12
  50. package/dist/constants/defaults.mjs.map +1 -1
  51. package/dist/constants/defaults.native.js +29 -12
  52. package/dist/constants/defaults.native.js.map +1 -1
  53. package/dist/constants.mjs +41 -6
  54. package/dist/constants.mjs.map +1 -1
  55. package/dist/constants.native.js +41 -6
  56. package/dist/constants.native.js.map +1 -1
  57. package/dist/exports/build.mjs +218 -270
  58. package/dist/exports/build.mjs.map +1 -1
  59. package/dist/exports/build.native.js +226 -283
  60. package/dist/exports/build.native.js.map +1 -1
  61. package/dist/exports/clean.mjs +71 -78
  62. package/dist/exports/clean.mjs.map +1 -1
  63. package/dist/exports/clean.native.js +76 -90
  64. package/dist/exports/clean.native.js.map +1 -1
  65. package/dist/exports/createServer.mjs +43 -46
  66. package/dist/exports/createServer.mjs.map +1 -1
  67. package/dist/exports/createServer.native.js +45 -48
  68. package/dist/exports/createServer.native.js.map +1 -1
  69. package/dist/exports/dev.mjs +177 -201
  70. package/dist/exports/dev.mjs.map +1 -1
  71. package/dist/exports/dev.native.js +191 -215
  72. package/dist/exports/dev.native.js.map +1 -1
  73. package/dist/exports/loadEnv.mjs +51 -48
  74. package/dist/exports/loadEnv.mjs.map +1 -1
  75. package/dist/exports/loadEnv.native.js +59 -57
  76. package/dist/exports/loadEnv.native.js.map +1 -1
  77. package/dist/exports/patch.mjs +9 -7
  78. package/dist/exports/patch.mjs.map +1 -1
  79. package/dist/exports/patch.native.js +9 -7
  80. package/dist/exports/patch.native.js.map +1 -1
  81. package/dist/exports/prebuild.mjs +177 -157
  82. package/dist/exports/prebuild.mjs.map +1 -1
  83. package/dist/exports/prebuild.native.js +197 -160
  84. package/dist/exports/prebuild.native.js.map +1 -1
  85. package/dist/exports/prebuildWithoutExpo.mjs +46 -44
  86. package/dist/exports/prebuildWithoutExpo.mjs.map +1 -1
  87. package/dist/exports/prebuildWithoutExpo.native.js +48 -46
  88. package/dist/exports/prebuildWithoutExpo.native.js.map +1 -1
  89. package/dist/exports/runAndroid.mjs +9 -10
  90. package/dist/exports/runAndroid.mjs.map +1 -1
  91. package/dist/exports/runAndroid.native.js +10 -11
  92. package/dist/exports/runAndroid.native.js.map +1 -1
  93. package/dist/exports/runIos.mjs +9 -10
  94. package/dist/exports/runIos.mjs.map +1 -1
  95. package/dist/exports/runIos.native.js +10 -11
  96. package/dist/exports/runIos.native.js.map +1 -1
  97. package/dist/exports/serve.mjs +23 -31
  98. package/dist/exports/serve.mjs.map +1 -1
  99. package/dist/exports/serve.native.js +26 -34
  100. package/dist/exports/serve.native.js.map +1 -1
  101. package/dist/exports/serveStaticAssets.mjs +109 -113
  102. package/dist/exports/serveStaticAssets.mjs.map +1 -1
  103. package/dist/exports/serveStaticAssets.native.js +180 -192
  104. package/dist/exports/serveStaticAssets.native.js.map +1 -1
  105. package/dist/index.js +25 -14
  106. package/dist/index.mjs +25 -14
  107. package/dist/index.native.js +25 -14
  108. package/dist/patches/builtInDepPatches.mjs +346 -435
  109. package/dist/patches/builtInDepPatches.mjs.map +1 -1
  110. package/dist/patches/builtInDepPatches.native.js +349 -438
  111. package/dist/patches/builtInDepPatches.native.js.map +1 -1
  112. package/dist/plugins/applyBuiltInPatchesPlugin.mjs +11 -11
  113. package/dist/plugins/applyBuiltInPatchesPlugin.mjs.map +1 -1
  114. package/dist/plugins/applyBuiltInPatchesPlugin.native.js +11 -11
  115. package/dist/plugins/applyBuiltInPatchesPlugin.native.js.map +1 -1
  116. package/dist/plugins/autoDepOptimizePlugin.mjs +87 -90
  117. package/dist/plugins/autoDepOptimizePlugin.mjs.map +1 -1
  118. package/dist/plugins/autoDepOptimizePlugin.native.js +99 -102
  119. package/dist/plugins/autoDepOptimizePlugin.native.js.map +1 -1
  120. package/dist/plugins/clientInjectPlugin.mjs +13 -11
  121. package/dist/plugins/clientInjectPlugin.mjs.map +1 -1
  122. package/dist/plugins/clientInjectPlugin.native.js +13 -11
  123. package/dist/plugins/clientInjectPlugin.native.js.map +1 -1
  124. package/dist/plugins/defaultDepOptimizePlugin.mjs +15 -23
  125. package/dist/plugins/defaultDepOptimizePlugin.mjs.map +1 -1
  126. package/dist/plugins/defaultDepOptimizePlugin.native.js +15 -23
  127. package/dist/plugins/defaultDepOptimizePlugin.native.js.map +1 -1
  128. package/dist/plugins/expoManifestRequestHandlerPlugin.mjs +163 -179
  129. package/dist/plugins/expoManifestRequestHandlerPlugin.mjs.map +1 -1
  130. package/dist/plugins/expoManifestRequestHandlerPlugin.native.js +169 -191
  131. package/dist/plugins/expoManifestRequestHandlerPlugin.native.js.map +1 -1
  132. package/dist/plugins/getResolvedConfigSubset.mjs +6 -5
  133. package/dist/plugins/getResolvedConfigSubset.mjs.map +1 -1
  134. package/dist/plugins/getResolvedConfigSubset.native.js +6 -5
  135. package/dist/plugins/getResolvedConfigSubset.native.js.map +1 -1
  136. package/dist/plugins/reactNativeCommonJsPlugin.mjs +210 -178
  137. package/dist/plugins/reactNativeCommonJsPlugin.mjs.map +1 -1
  138. package/dist/plugins/reactNativeCommonJsPlugin.native.js +283 -259
  139. package/dist/plugins/reactNativeCommonJsPlugin.native.js.map +1 -1
  140. package/dist/plugins/reactNativeDevAssetPlugin.mjs +72 -83
  141. package/dist/plugins/reactNativeDevAssetPlugin.mjs.map +1 -1
  142. package/dist/plugins/reactNativeDevAssetPlugin.native.js +75 -92
  143. package/dist/plugins/reactNativeDevAssetPlugin.native.js.map +1 -1
  144. package/dist/plugins/reactNativeDevServer.mjs +283 -328
  145. package/dist/plugins/reactNativeDevServer.mjs.map +1 -1
  146. package/dist/plugins/reactNativeDevServer.native.js +332 -391
  147. package/dist/plugins/reactNativeDevServer.native.js.map +1 -1
  148. package/dist/plugins/rnCodegenPlugin.mjs +13 -12
  149. package/dist/plugins/rnCodegenPlugin.mjs.map +1 -1
  150. package/dist/plugins/rnCodegenPlugin.native.js +13 -12
  151. package/dist/plugins/rnCodegenPlugin.native.js.map +1 -1
  152. package/dist/plugins/rollupRemoveUnusedImports.mjs +8 -7
  153. package/dist/plugins/rollupRemoveUnusedImports.mjs.map +1 -1
  154. package/dist/plugins/rollupRemoveUnusedImports.native.js +8 -7
  155. package/dist/plugins/rollupRemoveUnusedImports.native.js.map +1 -1
  156. package/dist/plugins/workletImportsPlugin.mjs +127 -132
  157. package/dist/plugins/workletImportsPlugin.mjs.map +1 -1
  158. package/dist/plugins/workletImportsPlugin.native.js +192 -203
  159. package/dist/plugins/workletImportsPlugin.native.js.map +1 -1
  160. package/dist/rn-commands/bundle/buildBundle.mjs +45 -79
  161. package/dist/rn-commands/bundle/buildBundle.mjs.map +1 -1
  162. package/dist/rn-commands/bundle/buildBundle.native.js +45 -85
  163. package/dist/rn-commands/bundle/buildBundle.native.js.map +1 -1
  164. package/dist/runtime/hmr-client.mjs +133 -140
  165. package/dist/runtime/hmr-client.mjs.map +1 -1
  166. package/dist/runtime/hmr-client.native.js +223 -222
  167. package/dist/runtime/hmr-client.native.js.map +1 -1
  168. package/dist/runtime/hmr-runtime.mjs +192 -194
  169. package/dist/runtime/hmr-runtime.mjs.map +1 -1
  170. package/dist/runtime/hmr-runtime.native.js +424 -411
  171. package/dist/runtime/hmr-runtime.native.js.map +1 -1
  172. package/dist/runtime/hmr-types.mjs +0 -2
  173. package/dist/runtime/hmr-types.native.js +0 -2
  174. package/dist/runtime/native-prelude.mjs +2 -1
  175. package/dist/runtime/native-prelude.mjs.map +1 -1
  176. package/dist/runtime/native-prelude.native.js +2 -1
  177. package/dist/runtime/native-prelude.native.js.map +1 -1
  178. package/dist/runtime/react-refresh-utils.mjs +23 -22
  179. package/dist/runtime/react-refresh-utils.mjs.map +1 -1
  180. package/dist/runtime/react-refresh-utils.native.js +23 -27
  181. package/dist/runtime/react-refresh-utils.native.js.map +1 -1
  182. package/dist/serve/node.mjs +49 -49
  183. package/dist/serve/node.mjs.map +1 -1
  184. package/dist/serve/node.native.js +92 -96
  185. package/dist/serve/node.native.js.map +1 -1
  186. package/dist/types.mjs +0 -2
  187. package/dist/types.native.js +0 -2
  188. package/dist/user-interface/index.mjs +245 -262
  189. package/dist/user-interface/index.mjs.map +1 -1
  190. package/dist/user-interface/index.native.js +274 -298
  191. package/dist/user-interface/index.native.js.map +1 -1
  192. package/dist/utils/assert.mjs +7 -6
  193. package/dist/utils/assert.mjs.map +1 -1
  194. package/dist/utils/assert.native.js +7 -18
  195. package/dist/utils/assert.native.js.map +1 -1
  196. package/dist/utils/bindKeypressInput.mjs +36 -38
  197. package/dist/utils/bindKeypressInput.mjs.map +1 -1
  198. package/dist/utils/bindKeypressInput.native.js +36 -38
  199. package/dist/utils/bindKeypressInput.native.js.map +1 -1
  200. package/dist/utils/coerceToArray.mjs +2 -1
  201. package/dist/utils/coerceToArray.mjs.map +1 -1
  202. package/dist/utils/coerceToArray.native.js +2 -1
  203. package/dist/utils/coerceToArray.native.js.map +1 -1
  204. package/dist/utils/connectedNativeClients.mjs +3 -2
  205. package/dist/utils/connectedNativeClients.mjs.map +1 -1
  206. package/dist/utils/connectedNativeClients.native.js +3 -2
  207. package/dist/utils/connectedNativeClients.native.js.map +1 -1
  208. package/dist/utils/createNativeDevEngine.mjs +992 -966
  209. package/dist/utils/createNativeDevEngine.mjs.map +1 -1
  210. package/dist/utils/createNativeDevEngine.native.js +1184 -1179
  211. package/dist/utils/createNativeDevEngine.native.js.map +1 -1
  212. package/dist/utils/dispose.mjs +4 -3
  213. package/dist/utils/dispose.mjs.map +1 -1
  214. package/dist/utils/dispose.native.js +6 -5
  215. package/dist/utils/dispose.native.js.map +1 -1
  216. package/dist/utils/environmentUtils.mjs +5 -4
  217. package/dist/utils/environmentUtils.mjs.map +1 -1
  218. package/dist/utils/environmentUtils.native.js +5 -4
  219. package/dist/utils/environmentUtils.native.js.map +1 -1
  220. package/dist/utils/execSync.mjs +7 -5
  221. package/dist/utils/execSync.mjs.map +1 -1
  222. package/dist/utils/execSync.native.js +8 -6
  223. package/dist/utils/execSync.native.js.map +1 -1
  224. package/dist/utils/expoRun.mjs +27 -35
  225. package/dist/utils/expoRun.mjs.map +1 -1
  226. package/dist/utils/expoRun.native.js +27 -35
  227. package/dist/utils/expoRun.native.js.map +1 -1
  228. package/dist/utils/filterViteServerResolvedUrls.mjs +24 -22
  229. package/dist/utils/filterViteServerResolvedUrls.mjs.map +1 -1
  230. package/dist/utils/filterViteServerResolvedUrls.native.js +61 -63
  231. package/dist/utils/filterViteServerResolvedUrls.native.js.map +1 -1
  232. package/dist/utils/getBoundPort.mjs +6 -5
  233. package/dist/utils/getBoundPort.mjs.map +1 -1
  234. package/dist/utils/getBoundPort.native.js +8 -12
  235. package/dist/utils/getBoundPort.native.js.map +1 -1
  236. package/dist/utils/getCacheDir.mjs +3 -1
  237. package/dist/utils/getCacheDir.mjs.map +1 -1
  238. package/dist/utils/getCacheDir.native.js +3 -1
  239. package/dist/utils/getCacheDir.native.js.map +1 -1
  240. package/dist/utils/getServerEntry.mjs +6 -4
  241. package/dist/utils/getServerEntry.mjs.map +1 -1
  242. package/dist/utils/getServerEntry.native.js +8 -11
  243. package/dist/utils/getServerEntry.native.js.map +1 -1
  244. package/dist/utils/getVitePath.mjs +42 -42
  245. package/dist/utils/getVitePath.mjs.map +1 -1
  246. package/dist/utils/getVitePath.native.js +43 -41
  247. package/dist/utils/getVitePath.native.js.map +1 -1
  248. package/dist/utils/globDir.mjs +7 -11
  249. package/dist/utils/globDir.mjs.map +1 -1
  250. package/dist/utils/globDir.native.js +10 -14
  251. package/dist/utils/globDir.native.js.map +1 -1
  252. package/dist/utils/isWithin.mjs +4 -2
  253. package/dist/utils/isWithin.mjs.map +1 -1
  254. package/dist/utils/isWithin.native.js +4 -2
  255. package/dist/utils/isWithin.native.js.map +1 -1
  256. package/dist/utils/patches.mjs +233 -255
  257. package/dist/utils/patches.mjs.map +1 -1
  258. package/dist/utils/patches.native.js +415 -460
  259. package/dist/utils/patches.native.js.map +1 -1
  260. package/dist/utils/printServerUrls.mjs +9 -7
  261. package/dist/utils/printServerUrls.mjs.map +1 -1
  262. package/dist/utils/printServerUrls.native.js +48 -51
  263. package/dist/utils/printServerUrls.native.js.map +1 -1
  264. package/dist/utils/removeUndefined.mjs +8 -7
  265. package/dist/utils/removeUndefined.mjs.map +1 -1
  266. package/dist/utils/removeUndefined.native.js +8 -7
  267. package/dist/utils/removeUndefined.native.js.map +1 -1
  268. package/dist/utils/scanDepsToOptimize.mjs +194 -161
  269. package/dist/utils/scanDepsToOptimize.mjs.map +1 -1
  270. package/dist/utils/scanDepsToOptimize.native.js +227 -197
  271. package/dist/utils/scanDepsToOptimize.native.js.map +1 -1
  272. package/dist/utils/state.mjs +18 -18
  273. package/dist/utils/state.mjs.map +1 -1
  274. package/dist/utils/state.native.js +18 -18
  275. package/dist/utils/state.native.js.map +1 -1
  276. package/dist/utils/symbolicateNativeStack.mjs +54 -54
  277. package/dist/utils/symbolicateNativeStack.mjs.map +1 -1
  278. package/dist/utils/symbolicateNativeStack.native.js +58 -58
  279. package/dist/utils/symbolicateNativeStack.native.js.map +1 -1
  280. package/dist/utils/uniq.mjs +2 -1
  281. package/dist/utils/uniq.mjs.map +1 -1
  282. package/dist/utils/uniq.native.js +2 -1
  283. package/dist/utils/uniq.native.js.map +1 -1
  284. package/dist/utils/utils.mjs +19 -19
  285. package/dist/utils/utils.mjs.map +1 -1
  286. package/dist/utils/utils.native.js +38 -40
  287. package/dist/utils/utils.native.js.map +1 -1
  288. package/dist/vendor/debugger-app/index.mjs +0 -2
  289. package/dist/vendor/debugger-app/index.native.js +0 -2
  290. package/dist/vendor/debugger-app/src/debuggerWorker.mjs +0 -2
  291. package/dist/vendor/debugger-app/src/debuggerWorker.native.js +0 -2
  292. package/dist/vendor/debugger-app/src/index.mjs +0 -2
  293. package/dist/vendor/debugger-app/src/index.native.js +0 -2
  294. package/dist/vxrn-vite-plugin.mjs +34 -33
  295. package/dist/vxrn-vite-plugin.mjs.map +1 -1
  296. package/dist/vxrn-vite-plugin.native.js +35 -34
  297. package/dist/vxrn-vite-plugin.native.js.map +1 -1
  298. package/expo-plugin.cjs +12 -6
  299. package/package.json +12 -13
  300. package/src/config/getBaseViteConfigOnly.ts +6 -0
  301. package/src/exports/prebuild.ts +40 -12
  302. package/src/patches/builtInDepPatches.ts +24 -48
  303. package/src/utils/createNativeDevEngine.test.ts +1 -1
  304. package/src/utils/createNativeDevEngine.ts +15 -9
  305. package/src/utils/scanDepsToOptimize.ts +0 -3
  306. package/types/config/getBaseViteConfigOnly.d.ts.map +1 -1
  307. package/types/config/getOptimizeDeps.d.ts.map +1 -1
  308. package/types/config/getOptionsFilled.d.ts +15 -15
  309. package/types/config/getOptionsFilled.d.ts.map +1 -1
  310. package/types/exports/build.d.ts +11 -11
  311. package/types/exports/build.d.ts.map +1 -1
  312. package/types/exports/clean.d.ts +1 -1
  313. package/types/exports/clean.d.ts.map +1 -1
  314. package/types/exports/createServer.d.ts.map +1 -1
  315. package/types/exports/dev.d.ts.map +1 -1
  316. package/types/exports/patch.d.ts.map +1 -1
  317. package/types/exports/prebuild.d.ts +3 -3
  318. package/types/exports/prebuild.d.ts.map +1 -1
  319. package/types/exports/prebuildWithoutExpo.d.ts +1 -1
  320. package/types/exports/prebuildWithoutExpo.d.ts.map +1 -1
  321. package/types/exports/runAndroid.d.ts.map +1 -1
  322. package/types/exports/runIos.d.ts.map +1 -1
  323. package/types/exports/serve.d.ts.map +1 -1
  324. package/types/patches/builtInDepPatches.d.ts.map +1 -1
  325. package/types/plugins/autoDepOptimizePlugin.d.ts.map +1 -1
  326. package/types/plugins/rollupRemoveUnusedImports.d.ts.map +1 -1
  327. package/types/runtime/hmr-client.d.ts.map +1 -1
  328. package/types/runtime/hmr-runtime.d.ts.map +1 -1
  329. package/types/runtime/hmr-types.d.ts.map +1 -1
  330. package/types/utils/createNativeDevEngine.d.ts +1 -1
  331. package/types/utils/createNativeDevEngine.d.ts.map +1 -1
  332. package/types/utils/execSync.d.ts.map +1 -1
  333. package/types/utils/getServerEntry.d.ts.map +1 -1
  334. package/types/utils/scanDepsToOptimize.d.ts.map +1 -1
  335. package/types/vxrn-vite-plugin.d.ts.map +1 -1
  336. package/dist/config/getOptimizeDeps.test.mjs +0 -20
  337. package/dist/config/getOptimizeDeps.test.mjs.map +0 -1
  338. package/dist/config/getOptimizeDeps.test.native.js +0 -39
  339. package/dist/config/getOptimizeDeps.test.native.js.map +0 -1
  340. package/dist/config/getServerOptionsFilled.test.mjs +0 -20
  341. package/dist/config/getServerOptionsFilled.test.mjs.map +0 -1
  342. package/dist/config/getServerOptionsFilled.test.native.js +0 -20
  343. package/dist/config/getServerOptionsFilled.test.native.js.map +0 -1
  344. package/dist/config/getViteServerConfig.test.mjs +0 -26
  345. package/dist/config/getViteServerConfig.test.mjs.map +0 -1
  346. package/dist/config/getViteServerConfig.test.native.js +0 -26
  347. package/dist/config/getViteServerConfig.test.native.js.map +0 -1
  348. package/dist/config/mergeUserConfig.test.mjs +0 -108
  349. package/dist/config/mergeUserConfig.test.mjs.map +0 -1
  350. package/dist/config/mergeUserConfig.test.native.js +0 -108
  351. package/dist/config/mergeUserConfig.test.native.js.map +0 -1
  352. package/dist/exports/clean.test.mjs +0 -81
  353. package/dist/exports/clean.test.mjs.map +0 -1
  354. package/dist/exports/clean.test.native.js +0 -88
  355. package/dist/exports/clean.test.native.js.map +0 -1
  356. package/dist/exports/loadEnv.test.mjs +0 -65
  357. package/dist/exports/loadEnv.test.mjs.map +0 -1
  358. package/dist/exports/loadEnv.test.native.js +0 -65
  359. package/dist/exports/loadEnv.test.native.js.map +0 -1
  360. package/dist/index.js.map +0 -1
  361. package/dist/index.mjs.map +0 -1
  362. package/dist/index.native.js.map +0 -1
  363. package/dist/plugins/autoDepOptimizePlugin.test.mjs +0 -31
  364. package/dist/plugins/autoDepOptimizePlugin.test.mjs.map +0 -1
  365. package/dist/plugins/autoDepOptimizePlugin.test.native.js +0 -39
  366. package/dist/plugins/autoDepOptimizePlugin.test.native.js.map +0 -1
  367. package/dist/plugins/resolveIdScan.test.mjs +0 -31
  368. package/dist/plugins/resolveIdScan.test.mjs.map +0 -1
  369. package/dist/plugins/resolveIdScan.test.native.js +0 -38
  370. package/dist/plugins/resolveIdScan.test.native.js.map +0 -1
  371. package/dist/plugins/rnCodegenPlugin.test.mjs +0 -239
  372. package/dist/plugins/rnCodegenPlugin.test.mjs.map +0 -1
  373. package/dist/plugins/rnCodegenPlugin.test.native.js +0 -242
  374. package/dist/plugins/rnCodegenPlugin.test.native.js.map +0 -1
  375. package/dist/plugins/serverExtensions.test.mjs +0 -106
  376. package/dist/plugins/serverExtensions.test.mjs.map +0 -1
  377. package/dist/plugins/serverExtensions.test.native.js +0 -117
  378. package/dist/plugins/serverExtensions.test.native.js.map +0 -1
  379. package/dist/runtime/hmr-types.mjs.map +0 -1
  380. package/dist/runtime/hmr-types.native.js.map +0 -1
  381. package/dist/serve/node.test.mjs +0 -60
  382. package/dist/serve/node.test.mjs.map +0 -1
  383. package/dist/serve/node.test.native.js +0 -72
  384. package/dist/serve/node.test.native.js.map +0 -1
  385. package/dist/types.mjs.map +0 -1
  386. package/dist/types.native.js.map +0 -1
  387. package/dist/utils/bindKeypressInput.test.mjs +0 -48
  388. package/dist/utils/bindKeypressInput.test.mjs.map +0 -1
  389. package/dist/utils/bindKeypressInput.test.native.js +0 -48
  390. package/dist/utils/bindKeypressInput.test.native.js.map +0 -1
  391. package/dist/utils/createNativeDevEngine.test.mjs +0 -1788
  392. package/dist/utils/createNativeDevEngine.test.mjs.map +0 -1
  393. package/dist/utils/createNativeDevEngine.test.native.js +0 -1942
  394. package/dist/utils/createNativeDevEngine.test.native.js.map +0 -1
  395. package/dist/utils/createNativeDevEngineFailure.test.mjs +0 -44
  396. package/dist/utils/createNativeDevEngineFailure.test.mjs.map +0 -1
  397. package/dist/utils/createNativeDevEngineFailure.test.native.js +0 -54
  398. package/dist/utils/createNativeDevEngineFailure.test.native.js.map +0 -1
  399. package/dist/utils/getBoundPort.test.mjs +0 -71
  400. package/dist/utils/getBoundPort.test.mjs.map +0 -1
  401. package/dist/utils/getBoundPort.test.native.js +0 -82
  402. package/dist/utils/getBoundPort.test.native.js.map +0 -1
  403. package/dist/utils/imageSizePatch.test.mjs +0 -29
  404. package/dist/utils/imageSizePatch.test.mjs.map +0 -1
  405. package/dist/utils/imageSizePatch.test.native.js +0 -30
  406. package/dist/utils/imageSizePatch.test.native.js.map +0 -1
  407. package/dist/utils/patches.test.mjs +0 -242
  408. package/dist/utils/patches.test.mjs.map +0 -1
  409. package/dist/utils/patches.test.native.js +0 -271
  410. package/dist/utils/patches.test.native.js.map +0 -1
  411. package/dist/utils/symbolicateNativeStack.test.mjs +0 -96
  412. package/dist/utils/symbolicateNativeStack.test.mjs.map +0 -1
  413. package/dist/utils/symbolicateNativeStack.test.native.js +0 -96
  414. package/dist/utils/symbolicateNativeStack.test.native.js.map +0 -1
  415. package/dist/vendor/debugger-app/index.mjs.map +0 -1
  416. package/dist/vendor/debugger-app/index.native.js.map +0 -1
  417. package/dist/vendor/debugger-app/src/debuggerWorker.mjs.map +0 -1
  418. package/dist/vendor/debugger-app/src/debuggerWorker.native.js.map +0 -1
  419. package/dist/vendor/debugger-app/src/index.mjs.map +0 -1
  420. package/dist/vendor/debugger-app/src/index.native.js.map +0 -1
  421. package/types/config/getOptimizeDeps.test.d.ts +0 -2
  422. package/types/config/getOptimizeDeps.test.d.ts.map +0 -1
  423. package/types/config/getServerOptionsFilled.test.d.ts +0 -2
  424. package/types/config/getServerOptionsFilled.test.d.ts.map +0 -1
  425. package/types/config/getViteServerConfig.test.d.ts +0 -2
  426. package/types/config/getViteServerConfig.test.d.ts.map +0 -1
  427. package/types/config/mergeUserConfig.test.d.ts +0 -2
  428. package/types/config/mergeUserConfig.test.d.ts.map +0 -1
  429. package/types/exports/clean.test.d.ts +0 -2
  430. package/types/exports/clean.test.d.ts.map +0 -1
  431. package/types/exports/loadEnv.test.d.ts +0 -2
  432. package/types/exports/loadEnv.test.d.ts.map +0 -1
  433. package/types/plugins/autoDepOptimizePlugin.test.d.ts +0 -2
  434. package/types/plugins/autoDepOptimizePlugin.test.d.ts.map +0 -1
  435. package/types/plugins/resolveIdScan.test.d.ts +0 -2
  436. package/types/plugins/resolveIdScan.test.d.ts.map +0 -1
  437. package/types/plugins/rnCodegenPlugin.test.d.ts +0 -2
  438. package/types/plugins/rnCodegenPlugin.test.d.ts.map +0 -1
  439. package/types/plugins/serverExtensions.test.d.ts +0 -2
  440. package/types/plugins/serverExtensions.test.d.ts.map +0 -1
  441. package/types/serve/node.test.d.ts +0 -2
  442. package/types/serve/node.test.d.ts.map +0 -1
  443. package/types/utils/bindKeypressInput.test.d.ts +0 -2
  444. package/types/utils/bindKeypressInput.test.d.ts.map +0 -1
  445. package/types/utils/createNativeDevEngine.test.d.ts +0 -2
  446. package/types/utils/createNativeDevEngine.test.d.ts.map +0 -1
  447. package/types/utils/createNativeDevEngineFailure.test.d.ts +0 -2
  448. package/types/utils/createNativeDevEngineFailure.test.d.ts.map +0 -1
  449. package/types/utils/getBoundPort.test.d.ts +0 -2
  450. package/types/utils/getBoundPort.test.d.ts.map +0 -1
  451. package/types/utils/imageSizePatch.test.d.ts +0 -2
  452. package/types/utils/imageSizePatch.test.d.ts.map +0 -1
  453. package/types/utils/patches.test.d.ts +0 -2
  454. package/types/utils/patches.test.d.ts.map +0 -1
  455. package/types/utils/symbolicateNativeStack.test.d.ts +0 -2
  456. package/types/utils/symbolicateNativeStack.test.d.ts.map +0 -1
@@ -3,310 +3,293 @@ import module from "node:module";
3
3
  import { pathToFileURL } from "node:url";
4
4
  import { filterViteServerResolvedUrls } from "../utils/filterViteServerResolvedUrls.mjs";
5
5
  import { getBoundPort } from "../utils/getBoundPort.mjs";
6
- const COMMANDS = [{
7
- keys: "ow",
8
- label: "open web",
9
- terminalLabel: "\x1B[1mo\x1B[0mpen \x1B[1mw\x1B[0meb",
10
- action: ctx => {
11
- const url = ctx.server.resolvedUrls?.local[0];
12
- if (!url) {
13
- console.warn("Cannot get the local server URL.");
14
- return;
15
- }
16
- nativeOpen(url);
17
- }
18
- }, {
19
- keys: "oi",
20
- label: "open app in iOS Simulator",
21
- terminalLabel: "\x1B[1mo\x1B[0mpen app in \x1B[1mi\x1B[0mOS Simulator",
22
- action: ctx => {
23
- openIos(ctx);
24
- }
25
- }, {
26
- keys: "oa",
27
- label: "open app in Android Emulator",
28
- terminalLabel: "\x1B[1mo\x1B[0mpen app in \x1B[1mA\x1B[0mndroid Emulator",
29
- action: ctx => {
30
- openAndroid(ctx);
31
- }
32
- }, {
33
- keys: "oe",
34
- label: "open editor",
35
- terminalLabel: "\x1B[1mo\x1B[0mpen \x1B[1me\x1B[0mditor",
36
- action: async ctx => {
37
- const {
38
- defaultEditor
39
- } = await import("env-editor");
40
- exec(`${defaultEditor().binary} .`);
41
- }
42
- }, {
43
- keys: "qr",
44
- label: "show Expo Go QR code",
45
- terminalLabel: "show Expo Go \x1B[1mQR\x1B[0m code",
46
- action: ctx => {
47
- const url = getExpoGoUrl(ctx);
48
- if (!url) {
49
- return;
50
- }
51
- printNativeQrCodeAndInstructions(url);
52
- }
53
- },
54
- // TODO this would need to be per-platform
55
- {
56
- keys: "dt",
57
- label: "open React Native DevTools",
58
- terminalLabel: "open React Native \x1B[1mD\x1B[0mev\x1B[1mT\x1B[0mools",
59
- action: ctx => {
60
- const {
61
- host,
62
- port
63
- } = ctx.server.config.server;
64
- const serverUrl = `http://${typeof host === "string" && !!host ? host : "localhost"}:${port}`;
65
- const url = new URL("/open-debugger", serverUrl);
66
- (async () => {
67
- const response = await fetch(url, {
68
- method: "POST",
69
- signal: AbortSignal.timeout(3e3)
70
- }).catch(error => {
71
- if (error.name === "TimeoutError") {
72
- return null;
73
- }
74
- throw error;
75
- });
76
- if (!response) {} else if (response.ok === false) {
77
- const responseText = await response.text();
78
- if (responseText.includes("Unable to find debugger target")) {
79
- return;
80
- }
81
- console.warn(`Failed to open React Native DevTools, ${url} returns ${response.status}: ${responseText}.`);
82
- }
83
- })();
84
- }
85
- }, {
86
- keys: "?",
87
- label: "open editor",
88
- terminalLabel: "show this menu",
89
- action: async ctx => {}
90
- }];
6
+
7
+ const COMMANDS = [
8
+ {
9
+ keys: "ow",
10
+ label: "open web",
11
+ terminalLabel: "\x1B[1mo\x1B[0mpen \x1B[1mw\x1B[0meb",
12
+ action: (ctx) => {
13
+ const url = ctx.server.resolvedUrls?.local[0];
14
+ if (!url) {
15
+ console.warn("Cannot get the local server URL.");
16
+ return;
17
+ }
18
+ nativeOpen(url);
19
+ }
20
+ },
21
+ {
22
+ keys: "oi",
23
+ label: "open app in iOS Simulator",
24
+ terminalLabel: "\x1B[1mo\x1B[0mpen app in \x1B[1mi\x1B[0mOS Simulator",
25
+ action: (ctx) => {
26
+ openIos(ctx);
27
+ }
28
+ },
29
+ {
30
+ keys: "oa",
31
+ label: "open app in Android Emulator",
32
+ terminalLabel: "\x1B[1mo\x1B[0mpen app in \x1B[1mA\x1B[0mndroid Emulator",
33
+ action: (ctx) => {
34
+ openAndroid(ctx);
35
+ }
36
+ },
37
+ {
38
+ keys: "oe",
39
+ label: "open editor",
40
+ terminalLabel: "\x1B[1mo\x1B[0mpen \x1B[1me\x1B[0mditor",
41
+ action: async (ctx) => {
42
+ const { defaultEditor } = await import("env-editor");
43
+ exec(`${defaultEditor().binary} .`);
44
+ }
45
+ },
46
+ {
47
+ keys: "qr",
48
+ label: "show Expo Go QR code",
49
+ terminalLabel: "show Expo Go \x1B[1mQR\x1B[0m code",
50
+ action: (ctx) => {
51
+ const url = getExpoGoUrl(ctx);
52
+ if (!url) {
53
+ return;
54
+ }
55
+ printNativeQrCodeAndInstructions(url);
56
+ }
57
+ },
58
+ {
59
+ keys: "dt",
60
+ label: "open React Native DevTools",
61
+ terminalLabel: "open React Native \x1B[1mD\x1B[0mev\x1B[1mT\x1B[0mools",
62
+ action: (ctx) => {
63
+ const { host, port } = ctx.server.config.server;
64
+ const serverUrl = `http://${typeof host === "string" && !!host ? host : "localhost"}:${port}`;
65
+ const url = new URL("/open-debugger", serverUrl);
66
+ (async () => {
67
+ const response = await fetch(url, {
68
+ method: "POST",
69
+ signal: AbortSignal.timeout(3e3)
70
+ }).catch((error) => {
71
+ if (error.name === "TimeoutError") {
72
+ return null;
73
+ }
74
+ throw error;
75
+ });
76
+ if (!response) {} else if (response.ok === false) {
77
+ const responseText = await response.text();
78
+ if (responseText.includes("Unable to find debugger target")) {
79
+ return;
80
+ }
81
+ console.warn(`Failed to open React Native DevTools, ${url} returns ${response.status}: ${responseText}.`);
82
+ }
83
+ })();
84
+ }
85
+ },
86
+ {
87
+ keys: "?",
88
+ label: "open editor",
89
+ terminalLabel: "show this menu",
90
+ action: async (ctx) => {}
91
+ }
92
+ ];
91
93
  async function startUserInterface(context) {
92
- if (!supportsKeyboardCommands()) {
93
- return;
94
- }
95
- printCommandsTable(context);
96
- startInterceptingKeyStrokes(context);
94
+ if (!supportsKeyboardCommands()) {
95
+ return;
96
+ }
97
+ printCommandsTable(context);
98
+ startInterceptingKeyStrokes(context);
97
99
  }
98
100
  function printCommandsTable(context) {
99
- const longestKeyLength = COMMANDS.reduce((max, command) => Math.max(max, command.keys.length), 0);
100
- const commandsInfo = COMMANDS.map(cmd => getCommandInfoInTerminal(cmd, {
101
- longestKeyLength
102
- })).join("\n");
103
- console.info(`
101
+ const longestKeyLength = COMMANDS.reduce((max, command) => Math.max(max, command.keys.length), 0);
102
+ const commandsInfo = COMMANDS.map((cmd) => getCommandInfoInTerminal(cmd, { longestKeyLength })).join("\n");
103
+ console.info(`
104
104
  ${commandsInfo}
105
105
  `);
106
106
  }
107
- function getCommandInfoInTerminal(command, {
108
- longestKeyLength = 0
109
- } = {}) {
110
- return `\x1B[90m\u203A\x1B[0m Press \x1B[1m${longestKeyLength ? command.keys.padEnd(longestKeyLength, " ") : command.keys}\x1B[0m \x1B[90m\u2502\x1B[0m ${command.terminalLabel}`;
107
+ function getCommandInfoInTerminal(command, { longestKeyLength = 0 } = {}) {
108
+ return `\x1B[90m\u203A\x1B[0m Press \x1B[1m${longestKeyLength ? command.keys.padEnd(longestKeyLength, " ") : command.keys}\x1B[0m \x1B[90m\u2502\x1B[0m ${command.terminalLabel}`;
111
109
  }
112
110
  function restoreTerminal() {
113
- const {
114
- stdin
115
- } = process;
116
- if (stdin.isTTY && stdin.setRawMode) {
117
- try {
118
- stdin.setRawMode(false);
119
- } catch {}
120
- }
121
- process.stdout.write("\x1B[0m");
111
+ const { stdin } = process;
112
+ if (stdin.isTTY && stdin.setRawMode) {
113
+ try {
114
+ stdin.setRawMode(false);
115
+ } catch {}
116
+ }
117
+ process.stdout.write("\x1B[0m");
122
118
  }
123
119
  function supportsKeyboardCommands() {
124
- const {
125
- stdin
126
- } = process;
127
- return Boolean(stdin.isTTY && stdin.setRawMode);
120
+ const { stdin } = process;
121
+ return Boolean(stdin.isTTY && stdin.setRawMode);
128
122
  }
129
123
  function startInterceptingKeyStrokes(context) {
130
- const {
131
- stdin
132
- } = process;
133
- if (!supportsKeyboardCommands()) {
134
- return;
135
- }
136
- stdin.setRawMode(true);
137
- stdin.resume();
138
- stdin.setEncoding("utf8");
139
- stdin.on("data", handleKeypress.bind(null, context));
140
- stdin.unref();
141
- process.on("exit", restoreTerminal);
142
- process.on("SIGINT", () => {
143
- restoreTerminal();
144
- process.exit(0);
145
- });
146
- process.on("SIGTERM", () => {
147
- restoreTerminal();
148
- process.exit(0);
149
- });
124
+ const { stdin } = process;
125
+ if (!supportsKeyboardCommands()) {
126
+ return;
127
+ }
128
+ stdin.setRawMode(true);
129
+ stdin.resume();
130
+ stdin.setEncoding("utf8");
131
+ stdin.on("data", handleKeypress.bind(null, context));
132
+ stdin.unref();
133
+ process.on("exit", restoreTerminal);
134
+ process.on("SIGINT", () => {
135
+ restoreTerminal();
136
+ process.exit(0);
137
+ });
138
+ process.on("SIGTERM", () => {
139
+ restoreTerminal();
140
+ process.exit(0);
141
+ });
150
142
  }
151
143
  let pressedKeys = "";
152
144
  let clearPressedKeysTimer = null;
153
145
  function clearPressedKeys() {
154
- pressedKeys = "";
155
- clearPrintedInfo();
146
+ pressedKeys = "";
147
+ clearPrintedInfo();
156
148
  }
157
149
  function resetClearPressedKeysTimer() {
158
- if (clearPressedKeysTimer) {
159
- clearTimeout(clearPressedKeysTimer);
160
- }
161
- clearPressedKeysTimer = setTimeout(clearPressedKeys, 3e3);
162
- clearPressedKeysTimer.unref();
150
+ if (clearPressedKeysTimer) {
151
+ clearTimeout(clearPressedKeysTimer);
152
+ }
153
+ clearPressedKeysTimer = setTimeout(clearPressedKeys, 3e3);
154
+ clearPressedKeysTimer.unref();
163
155
  }
164
156
  function handleKeypress(context, key) {
165
- if (key === "\x1B") {
166
- clearPrintedInfo();
167
- pressedKeys = "";
168
- return;
169
- }
170
- if (key === "?" || key === "/") {
171
- clearPrintedInfo();
172
- console.info("> ?\n\u21D2 Available commands:");
173
- printCommandsTable(context);
174
- return;
175
- }
176
- resetClearPressedKeysTimer();
177
- if (key === "\x7F") {
178
- pressedKeys = pressedKeys.slice(0, -1);
179
- } else {
180
- key = key.toLowerCase();
181
- if (/^[a-z]$/.test(key)) {
182
- pressedKeys += key;
183
- }
184
- }
185
- if (pressedKeys.length === 0) {
186
- clearPrintedInfo();
187
- return;
188
- }
189
- const matchedCommand = COMMANDS.find(command => command.keys === pressedKeys);
190
- if (matchedCommand) {
191
- clearPrintedInfo();
192
- console.info(`> ${matchedCommand.keys}
157
+ if (key === "\x1B") {
158
+ clearPrintedInfo();
159
+ pressedKeys = "";
160
+ return;
161
+ }
162
+ if (key === "?" || key === "/") {
163
+ clearPrintedInfo();
164
+ console.info("> ?\n⇒ Available commands:");
165
+ printCommandsTable(context);
166
+ return;
167
+ }
168
+ resetClearPressedKeysTimer();
169
+ if (key === "") {
170
+ pressedKeys = pressedKeys.slice(0, -1);
171
+ } else {
172
+ key = key.toLowerCase();
173
+ if (/^[a-z]$/.test(key)) {
174
+ pressedKeys += key;
175
+ }
176
+ }
177
+ if (pressedKeys.length === 0) {
178
+ clearPrintedInfo();
179
+ return;
180
+ }
181
+ const matchedCommand = COMMANDS.find((command) => command.keys === pressedKeys);
182
+ if (matchedCommand) {
183
+ clearPrintedInfo();
184
+ console.info(`> ${matchedCommand.keys}
193
185
  \u21D2 ${matchedCommand.label}...`);
194
- pressedKeys = "";
195
- setTimeout(() => matchedCommand.action?.(context), 500);
196
- return;
197
- }
198
- if (pressedKeys.length >= 3) {
199
- clearPrintedInfo();
200
- console.info(`> ${pressedKeys}
186
+ pressedKeys = "";
187
+ setTimeout(() => matchedCommand.action?.(context), 500);
188
+ return;
189
+ }
190
+ if (pressedKeys.length >= 3) {
191
+ clearPrintedInfo();
192
+ console.info(`> ${pressedKeys}
201
193
  No matching command for "${pressedKeys}"! Press "?" for help.`);
202
- pressedKeys = "";
203
- return;
204
- }
205
- const possibleCommands = COMMANDS.filter(command => command.keys.startsWith(pressedKeys));
206
- const commandsInfo = possibleCommands.map(command => {
207
- const matchedPart = command.keys.slice(0, pressedKeys.length);
208
- const remainingPart = command.keys.slice(pressedKeys.length);
209
- return ` \x1B[4m${matchedPart}\x1B[0m\x1B[1m${remainingPart}\x1B[0m\x1B[90m - \x1B[0m${command.terminalLabel}`;
210
- }).join("\n");
211
- const infoToPrint = `
194
+ pressedKeys = "";
195
+ return;
196
+ }
197
+ const possibleCommands = COMMANDS.filter((command) => command.keys.startsWith(pressedKeys));
198
+ const commandsInfo = possibleCommands.map((command) => {
199
+ const matchedPart = command.keys.slice(0, pressedKeys.length);
200
+ const remainingPart = command.keys.slice(pressedKeys.length);
201
+ return ` \x1B[4m${matchedPart}\x1B[0m\x1B[1m${remainingPart}\x1B[0m\x1B[90m - \x1B[0m${command.terminalLabel}`;
202
+ }).join("\n");
203
+ const infoToPrint = `
212
204
  ${commandsInfo}
213
205
  > ${pressedKeys}`;
214
- printInfo(infoToPrint);
206
+ printInfo(infoToPrint);
215
207
  }
216
208
  let lastPrintedInfo = "";
217
209
  function printInfo(info) {
218
- clearPrintedInfo();
219
- lastPrintedInfo = info;
220
- process.stdout.write(info);
210
+ clearPrintedInfo();
211
+ lastPrintedInfo = info;
212
+ process.stdout.write(info);
221
213
  }
222
214
  function clearPrintedInfo() {
223
- if (lastPrintedInfo) {
224
- process.stdout.write("\x1B[2K");
225
- process.stdout.write("\x1B[1A\x1B[2K".repeat(lastPrintedInfo.split("\n").length - 1));
226
- process.stdout.write("\x1B[2K");
227
- process.stdout.write("\x1B[G");
228
- }
229
- lastPrintedInfo = "";
215
+ if (lastPrintedInfo) {
216
+ process.stdout.write("\x1B[2K");
217
+ process.stdout.write("\x1B[1A\x1B[2K".repeat(lastPrintedInfo.split("\n").length - 1));
218
+ process.stdout.write("\x1B[2K");
219
+ process.stdout.write("\x1B[G");
220
+ }
221
+ lastPrintedInfo = "";
230
222
  }
231
223
  async function printNativeQrCodeAndInstructions(url) {
232
- const qrcode = await import("qrcode-terminal");
233
- (qrcode.default || qrcode).generate(url, {
234
- small: true
235
- }, code => {
236
- console.info(`To open the app on your iPhone, install the Expo Go app and scan the QR code below with your iPhone camera:
224
+ const qrcode = await import("qrcode-terminal");
225
+ (qrcode.default || qrcode).generate(url, { small: true }, (code) => {
226
+ console.info(`To open the app on your iPhone, install the Expo Go app and scan the QR code below with your iPhone camera:
237
227
  ${code}`);
238
- });
228
+ });
239
229
  }
240
230
  function nativeOpen(url) {
241
- const start = process.platform === "darwin" ? "open" : process.platform === "win32" ? "start" : "xdg-open";
242
- exec(`${start} ${url}`);
231
+ const start = process.platform === "darwin" ? "open" : process.platform === "win32" ? "start" : "xdg-open";
232
+ exec(`${start} ${url}`);
243
233
  }
244
234
  async function openIos(ctx) {
245
- const projectRoot = ctx.server.config.root;
246
- const port = getBoundPort(ctx.server);
247
- try {
248
- const require2 = module.createRequire(projectRoot);
249
- const applePlatformManagerModuleImportPath = require2.resolve("@expo/cli/build/src/start/platforms/ios/ApplePlatformManager.js", {
250
- paths: [projectRoot]
251
- });
252
- const applePlatformManagerModule = await import(pathToFileURL(applePlatformManagerModuleImportPath).href);
253
- const PlatformManager = applePlatformManagerModule.default.ApplePlatformManager;
254
- const platformManager = new PlatformManager(projectRoot, port, {
255
- /** Expo Go URL. */
256
- getExpoGoUrl: () => getExpoGoUrl(ctx),
257
- /** Get the base URL for the dev server hosting this platform manager. */
258
- getDevServerUrl: () => null,
259
- /** Get redirect URL for native disambiguation. */
260
- getRedirectUrl: () => null,
261
- /** Dev Client */
262
- getCustomRuntimeUrl: props => null
263
- });
264
- await platformManager.openAsync({
265
- runtime: "expo"
266
- });
267
- } catch (e) {
268
- const stack = e instanceof Error ? e.stack : null;
269
- console.error(`Failed to open app in iOS Simulator: ${e}${stack ? `
235
+ const projectRoot = ctx.server.config.root;
236
+ const port = getBoundPort(ctx.server);
237
+ try {
238
+ const require2 = module.createRequire(projectRoot);
239
+ const applePlatformManagerModuleImportPath = require2.resolve("@expo/cli/build/src/start/platforms/ios/ApplePlatformManager.js", { paths: [projectRoot] });
240
+ const applePlatformManagerModule = await import(pathToFileURL(applePlatformManagerModuleImportPath).href);
241
+ const PlatformManager = applePlatformManagerModule.default.ApplePlatformManager;
242
+ const platformManager = new PlatformManager(projectRoot, port, {
243
+ /** Expo Go URL. */
244
+ getExpoGoUrl: () => getExpoGoUrl(ctx),
245
+ /** Get the base URL for the dev server hosting this platform manager. */
246
+ getDevServerUrl: () => null,
247
+ /** Get redirect URL for native disambiguation. */
248
+ getRedirectUrl: () => null,
249
+ /** Dev Client */
250
+ getCustomRuntimeUrl: (props) => null
251
+ });
252
+ await platformManager.openAsync({ runtime: "expo" });
253
+ } catch (e) {
254
+ const stack = e instanceof Error ? e.stack : null;
255
+ console.error(`Failed to open app in iOS Simulator: ${e}${stack ? `
270
256
  ${stack}` : ""}`);
271
- }
257
+ }
272
258
  }
273
259
  async function openAndroid(ctx) {
274
- const projectRoot = ctx.server.config.root;
275
- const port = getBoundPort(ctx.server);
276
- try {
277
- const require2 = module.createRequire(projectRoot);
278
- const androidPlatformManagerModuleImportPath = require2.resolve("@expo/cli/build/src/start/platforms/android/AndroidPlatformManager.js", {
279
- paths: [projectRoot]
280
- });
281
- const androidPlatformManagerModule = await import(pathToFileURL(androidPlatformManagerModuleImportPath).href);
282
- const PlatformManager = androidPlatformManagerModule.default.AndroidPlatformManager;
283
- const platformManager = new PlatformManager(projectRoot, port, {
284
- /** Expo Go URL. */
285
- getExpoGoUrl: () => getExpoGoUrl(ctx),
286
- /** Get the base URL for the dev server hosting this platform manager. */
287
- getDevServerUrl: () => null,
288
- /** Get redirect URL for native disambiguation. */
289
- getRedirectUrl: () => null,
290
- /** Dev Client */
291
- getCustomRuntimeUrl: props => null
292
- });
293
- await platformManager.openAsync({
294
- runtime: "expo"
295
- });
296
- } catch (e) {
297
- const stack = e instanceof Error ? e.stack : null;
298
- console.error(`Failed to open app in Android Emulator: ${e}${stack ? `
260
+ const projectRoot = ctx.server.config.root;
261
+ const port = getBoundPort(ctx.server);
262
+ try {
263
+ const require2 = module.createRequire(projectRoot);
264
+ const androidPlatformManagerModuleImportPath = require2.resolve("@expo/cli/build/src/start/platforms/android/AndroidPlatformManager.js", { paths: [projectRoot] });
265
+ const androidPlatformManagerModule = await import(pathToFileURL(androidPlatformManagerModuleImportPath).href);
266
+ const PlatformManager = androidPlatformManagerModule.default.AndroidPlatformManager;
267
+ const platformManager = new PlatformManager(projectRoot, port, {
268
+ /** Expo Go URL. */
269
+ getExpoGoUrl: () => getExpoGoUrl(ctx),
270
+ /** Get the base URL for the dev server hosting this platform manager. */
271
+ getDevServerUrl: () => null,
272
+ /** Get redirect URL for native disambiguation. */
273
+ getRedirectUrl: () => null,
274
+ /** Dev Client */
275
+ getCustomRuntimeUrl: (props) => null
276
+ });
277
+ await platformManager.openAsync({ runtime: "expo" });
278
+ } catch (e) {
279
+ const stack = e instanceof Error ? e.stack : null;
280
+ console.error(`Failed to open app in Android Emulator: ${e}${stack ? `
299
281
  ${stack}` : ""}`);
300
- }
282
+ }
301
283
  }
302
284
  function getExpoGoUrl(ctx) {
303
- const urls = filterViteServerResolvedUrls(ctx.server.resolvedUrls)?.network;
304
- const url = urls?.[urls.length - 1];
305
- if (!url) {
306
- console.warn("Cannot get the local server URL.");
307
- return;
308
- }
309
- return url.replace(/^https?/, "exp");
285
+ const urls = filterViteServerResolvedUrls(ctx.server.resolvedUrls)?.network;
286
+ const url = urls?.[urls.length - 1];
287
+ if (!url) {
288
+ console.warn("Cannot get the local server URL.");
289
+ return;
290
+ }
291
+ return url.replace(/^https?/, "exp");
310
292
  }
293
+
311
294
  export { startUserInterface };
312
295
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"names":["exec","module","pathToFileURL","filterViteServerResolvedUrls","getBoundPort","COMMANDS","keys","label","terminalLabel","action","ctx","url","server","resolvedUrls","local","console","warn","nativeOpen","openIos","openAndroid","defaultEditor","binary","getExpoGoUrl","printNativeQrCodeAndInstructions","host","port","config","serverUrl","URL","response","fetch","method","signal","AbortSignal","timeout","catch","error","name","ok","responseText","text","includes","status","startUserInterface","context","supportsKeyboardCommands","printCommandsTable","startInterceptingKeyStrokes","longestKeyLength","reduce","max","command","Math","length","commandsInfo","map","cmd","getCommandInfoInTerminal","join","info","padEnd","restoreTerminal","stdin","process","isTTY","setRawMode","stdout","write","Boolean","resume","setEncoding","on","handleKeypress","bind","unref","exit","pressedKeys","clearPressedKeysTimer","clearPressedKeys","clearPrintedInfo","resetClearPressedKeysTimer","clearTimeout","setTimeout","key","slice","toLowerCase","test","matchedCommand","find","possibleCommands","filter","startsWith","matchedPart","remainingPart","infoToPrint","printInfo","lastPrintedInfo","repeat","split","qrcode","default","generate","small","code","start","platform","projectRoot","root","require","createRequire","applePlatformManagerModuleImportPath","resolve","paths","applePlatformManagerModule","href","PlatformManager","ApplePlatformManager","platformManager","getDevServerUrl","getRedirectUrl","getCustomRuntimeUrl","props","openAsync","runtime","e","stack","Error","androidPlatformManagerModuleImportPath","androidPlatformManagerModule","AndroidPlatformManager","urls","network","replace"],"sources":["../../src/user-interface/index.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,IAAA,QAAY;AACrB,OAAOC,MAAA,MAAY;AACnB,SAASC,aAAA,QAAqB;AAE9B,SAASC,4BAAA,QAAoC;AAC7C,SAASC,YAAA,QAAoB;AAa7B,MAAMC,QAAA,GAAW,CACf;EACEC,IAAA,EAAM;EACNC,KAAA,EAAO;EACPC,aAAA,EAAe;EACfC,MAAA,EAASC,GAAA,IAAQ;IACf,MAAMC,GAAA,GAAMD,GAAA,CAAIE,MAAA,CAAOC,YAAA,EAAcC,KAAA,CAAM,CAAC;IAC5C,IAAI,CAACH,GAAA,EAAK;MACRI,OAAA,CAAQC,IAAA,CAAK,kCAAkC;MAC/C;IACF;IACAC,UAAA,CAAWN,GAAG;EAChB;AACF,GACA;EACEL,IAAA,EAAM;EACNC,KAAA,EAAO;EACPC,aAAA,EAAe;EACfC,MAAA,EAASC,GAAA,IAAQ;IACfQ,OAAA,CAAQR,GAAG;EACb;AACF,GACA;EACEJ,IAAA,EAAM;EACNC,KAAA,EAAO;EACPC,aAAA,EAAe;EACfC,MAAA,EAASC,GAAA,IAAQ;IACfS,WAAA,CAAYT,GAAG;EACjB;AACF,GAEA;EACEJ,IAAA,EAAM;EACNC,KAAA,EAAO;EACPC,aAAA,EAAe;EACfC,MAAA,EAAQ,MAAOC,GAAA,IAAQ;IACrB,MAAM;MAAEU;IAAc,IAAI,MAAM,OAAO,YAAY;IACnDpB,IAAA,CAAK,GAAGoB,aAAA,CAAc,EAAEC,MAAM,IAAI;EACpC;AACF,GAEA;EACEf,IAAA,EAAM;EACNC,KAAA,EAAO;EACPC,aAAA,EAAe;EACfC,MAAA,EAASC,GAAA,IAAQ;IACf,MAAMC,GAAA,GAAMW,YAAA,CAAaZ,GAAG;IAC5B,IAAI,CAACC,GAAA,EAAK;MACR;IACF;IAEAY,gCAAA,CAAiCZ,GAAG;EACtC;AACF;AAAA;AAGA;EACEL,IAAA,EAAM;EACNC,KAAA,EAAO;EACPC,aAAA,EAAe;EACfC,MAAA,EAASC,GAAA,IAAQ;IACf,MAAM;MAAEc,IAAA;MAAMC;IAAK,IAAIf,GAAA,CAAIE,MAAA,CAAOc,MAAA,CAAOd,MAAA;IACzC,MAAMe,SAAA,GAAY,UAAU,OAAOH,IAAA,KAAS,YAAY,CAAC,CAACA,IAAA,GAAOA,IAAA,GAAO,WAAW,IAAIC,IAAI;IAC3F,MAAMd,GAAA,GAAM,IAAIiB,GAAA,CAAI,kBAAkBD,SAAS;IAS9C,CAAC,YAAY;MACZ,MAAME,QAAA,GAAW,MAAMC,KAAA,CAAMnB,GAAA,EAAK;QAChCoB,MAAA,EAAQ;QACRC,MAAA,EAAQC,WAAA,CAAYC,OAAA,CAAQ,GAAI;MAClC,CAAC,EAAEC,KAAA,CAAOC,KAAA,IAAU;QAClB,IAAIA,KAAA,CAAMC,IAAA,KAAS,gBAAgB;UACjC,OAAO;QACT;QAEA,MAAMD,KAAA;MACR,CAAC;MAED,IAAI,CAACP,QAAA,EAAU,CAGf,WAAWA,QAAA,CAASS,EAAA,KAAO,OAAO;QAChC,MAAMC,YAAA,GAAe,MAAMV,QAAA,CAASW,IAAA,CAAK;QAEzC,IAAID,YAAA,CAAaE,QAAA,CAAS,gCAAgC,GAAG;UAE3D;QACF;QAEA1B,OAAA,CAAQC,IAAA,CACN,yCAAyCL,GAAG,YAAYkB,QAAA,CAASa,MAAM,KAAKH,YAAY,GAC1F;MACF;IACF,GAAG;EACL;AACF,GAEA;EACEjC,IAAA,EAAM;EACNC,KAAA,EAAO;EACPC,aAAA,EAAe;EACfC,MAAA,EAAQ,MAAOC,GAAA,IAAQ,CAAC;AAC1B,EACF;AAEA,eAAsBiC,mBAAmBC,OAAA,EAAkB;EACzD,IAAI,CAACC,wBAAA,CAAyB,GAAG;IAC/B;EACF;EAEAC,kBAAA,CAAmBF,OAAO;EAC1BG,2BAAA,CAA4BH,OAAO;AACrC;AAEA,SAASE,mBAAmBF,OAAA,EAAkB;EAC5C,MAAMI,gBAAA,GAAmB3C,QAAA,CAAS4C,MAAA,CAChC,CAACC,GAAA,EAAKC,OAAA,KAAYC,IAAA,CAAKF,GAAA,CAAIA,GAAA,EAAKC,OAAA,CAAQ7C,IAAA,CAAK+C,MAAM,GACnD,CACF;EAEA,MAAMC,YAAA,GAAejD,QAAA,CAASkD,GAAA,CAAKC,GAAA,IACjCC,wBAAA,CAAyBD,GAAA,EAAK;IAAER;EAAiB,CAAC,CACpD,EAAEU,IAAA,CAAK,IAAI;EACX3C,OAAA,CAAQ4C,IAAA,CAAK;AAAA,EAAKL,YAAY;AAAA,CAAI;AACpC;AAEA,SAASG,yBACPN,OAAA,EACA;EAAEH,gBAAA,GAAmB;AAAE,IAAmC,CAAC,GAC3D;EACA,OAAO,sCAAiCA,gBAAA,GAAmBG,OAAA,CAAQ7C,IAAA,CAAKsD,MAAA,CAAOZ,gBAAA,EAAkB,GAAG,IAAIG,OAAA,CAAQ7C,IAAI,iCAA4B6C,OAAA,CAAQ3C,aAAa;AACvK;AAEA,SAASqD,gBAAA,EAAkB;EACzB,MAAM;IAAEC;EAAM,IAAIC,OAAA;EAClB,IAAID,KAAA,CAAME,KAAA,IAASF,KAAA,CAAMG,UAAA,EAAY;IACnC,IAAI;MACFH,KAAA,CAAMG,UAAA,CAAW,KAAK;IACxB,QAAQ,CAAC;EACX;EACAF,OAAA,CAAQG,MAAA,CAAOC,KAAA,CAAM,SAAS;AAChC;AAEA,SAAStB,yBAAA,EAA2B;EAClC,MAAM;IAAEiB;EAAM,IAAIC,OAAA;EAClB,OAAOK,OAAA,CAAQN,KAAA,CAAME,KAAA,IAASF,KAAA,CAAMG,UAAU;AAChD;AAEA,SAASlB,4BAA4BH,OAAA,EAAkB;EACrD,MAAM;IAAEkB;EAAM,IAAIC,OAAA;EAClB,IAAI,CAAClB,wBAAA,CAAyB,GAAG;IAC/B;EACF;EACAiB,KAAA,CAAMG,UAAA,CAAW,IAAI;EACrBH,KAAA,CAAMO,MAAA,CAAO;EACbP,KAAA,CAAMQ,WAAA,CAAY,MAAM;EACxBR,KAAA,CAAMS,EAAA,CAAG,QAAQC,cAAA,CAAeC,IAAA,CAAK,MAAM7B,OAAO,CAAC;EAEnDkB,KAAA,CAAMY,KAAA,CAAM;EAGZX,OAAA,CAAQQ,EAAA,CAAG,QAAQV,eAAe;EAClCE,OAAA,CAAQQ,EAAA,CAAG,UAAU,MAAM;IACzBV,eAAA,CAAgB;IAChBE,OAAA,CAAQY,IAAA,CAAK,CAAC;EAChB,CAAC;EACDZ,OAAA,CAAQQ,EAAA,CAAG,WAAW,MAAM;IAC1BV,eAAA,CAAgB;IAChBE,OAAA,CAAQY,IAAA,CAAK,CAAC;EAChB,CAAC;AACH;AAEA,IAAIC,WAAA,GAAc;AAClB,IAAIC,qBAAA,GAA+C;AACnD,SAASC,iBAAA,EAAmB;EAC1BF,WAAA,GAAc;EACdG,gBAAA,CAAiB;AACnB;AACA,SAASC,2BAAA,EAA6B;EACpC,IAAIH,qBAAA,EAAuB;IACzBI,YAAA,CAAaJ,qBAAqB;EACpC;EACAA,qBAAA,GAAwBK,UAAA,CAAWJ,gBAAA,EAAkB,GAAI;EAEzDD,qBAAA,CAAsBH,KAAA,CAAM;AAC9B;AAEA,SAASF,eAAe5B,OAAA,EAAkBuC,GAAA,EAAa;EACrD,IAAIA,GAAA,KAAQ,QAAoB;IAC9BJ,gBAAA,CAAiB;IACjBH,WAAA,GAAc;IACd;EACF;EAEA,IAAIO,GAAA,KAAQ,OAAOA,GAAA,KAAQ,KAAK;IAC9BJ,gBAAA,CAAiB;IACjBhE,OAAA,CAAQ4C,IAAA,CAAK,iCAA4B;IACzCb,kBAAA,CAAmBF,OAAO;IAC1B;EACF;EAEAoC,0BAAA,CAA2B;EAE3B,IAAIG,GAAA,KAAQ,QAAe;IACzBP,WAAA,GAAcA,WAAA,CAAYQ,KAAA,CAAM,GAAG,EAAE;EACvC,OAAO;IACLD,GAAA,GAAMA,GAAA,CAAIE,WAAA,CAAY;IACtB,IAAI,UAAUC,IAAA,CAAKH,GAAG,GAAG;MACvBP,WAAA,IAAeO,GAAA;IACjB;EACF;EAEA,IAAIP,WAAA,CAAYvB,MAAA,KAAW,GAAG;IAC5B0B,gBAAA,CAAiB;IACjB;EACF;EAEA,MAAMQ,cAAA,GAAiBlF,QAAA,CAASmF,IAAA,CAAMrC,OAAA,IAAYA,OAAA,CAAQ7C,IAAA,KAASsE,WAAW;EAE9E,IAAIW,cAAA,EAAgB;IAClBR,gBAAA,CAAiB;IACjBhE,OAAA,CAAQ4C,IAAA,CAAK,KAAK4B,cAAA,CAAejF,IAAI;AAAA,SAAOiF,cAAA,CAAehF,KAAK,KAAK;IACrEqE,WAAA,GAAc;IACdM,UAAA,CAAW,MAAMK,cAAA,CAAe9E,MAAA,GAASmC,OAAO,GAAG,GAAG;IACtD;EACF;EAEA,IAAIgC,WAAA,CAAYvB,MAAA,IAAU,GAAG;IAC3B0B,gBAAA,CAAiB;IACjBhE,OAAA,CAAQ4C,IAAA,CACN,KAAKiB,WAAW;AAAA,2BAA8BA,WAAW,wBAC3D;IACAA,WAAA,GAAc;IACd;EACF;EAEA,MAAMa,gBAAA,GAAmBpF,QAAA,CAASqF,MAAA,CAAQvC,OAAA,IACxCA,OAAA,CAAQ7C,IAAA,CAAKqF,UAAA,CAAWf,WAAW,CACrC;EAEA,MAAMtB,YAAA,GAAemC,gBAAA,CAClBlC,GAAA,CAAKJ,OAAA,IAAY;IAChB,MAAMyC,WAAA,GAAczC,OAAA,CAAQ7C,IAAA,CAAK8E,KAAA,CAAM,GAAGR,WAAA,CAAYvB,MAAM;IAC5D,MAAMwC,aAAA,GAAgB1C,OAAA,CAAQ7C,IAAA,CAAK8E,KAAA,CAAMR,WAAA,CAAYvB,MAAM;IAC3D,OAAO,YAAYuC,WAAW,iBAAiBC,aAAa,4BAA4B1C,OAAA,CAAQ3C,aAAa;EAC/G,CAAC,EACAkD,IAAA,CAAK,IAAI;EACZ,MAAMoC,WAAA,GAAc;AAAA,EAAKxC,YAAY;AAAA,IAAOsB,WAAW;EACvDmB,SAAA,CAAUD,WAAW;AACvB;AAEA,IAAIE,eAAA,GAAkB;AACtB,SAASD,UAAUpC,IAAA,EAAc;EAC/BoB,gBAAA,CAAiB;EACjBiB,eAAA,GAAkBrC,IAAA;EAClBI,OAAA,CAAQG,MAAA,CAAOC,KAAA,CAAMR,IAAI;AAC3B;AACA,SAASoB,iBAAA,EAAmB;EAC1B,IAAIiB,eAAA,EAAiB;IACnBjC,OAAA,CAAQG,MAAA,CAAOC,KAAA,CAAM,SAAS;IAE9BJ,OAAA,CAAQG,MAAA,CAAOC,KAAA,CAAM,iBAAiB8B,MAAA,CAAOD,eAAA,CAAgBE,KAAA,CAAM,IAAI,EAAE7C,MAAA,GAAS,CAAC,CAAC;IACpFU,OAAA,CAAQG,MAAA,CAAOC,KAAA,CAAM,SAAS;IAC9BJ,OAAA,CAAQG,MAAA,CAAOC,KAAA,CAAM,QAAQ;EAC/B;EAEA6B,eAAA,GAAkB;AACpB;AAEA,eAAezE,iCAAiCZ,GAAA,EAAa;EAC3D,MAAMwF,MAAA,GAAS,MAAM,OAAO,iBAAiB;EAC5C,CAACA,MAAA,CAAOC,OAAA,IAAWD,MAAA,EAAQE,QAAA,CAAS1F,GAAA,EAAK;IAAE2F,KAAA,EAAO;EAAK,GAAIC,IAAA,IAAiB;IAC3ExF,OAAA,CAAQ4C,IAAA,CACN;AAAA,EAAgH4C,IAAI,EACtH;EACF,CAAC;AACH;AAEA,SAAStF,WAAWN,GAAA,EAAa;EAC/B,MAAM6F,KAAA,GACJzC,OAAA,CAAQ0C,QAAA,KAAa,WACjB,SACA1C,OAAA,CAAQ0C,QAAA,KAAa,UACnB,UACA;EAERzG,IAAA,CAAK,GAAGwG,KAAK,IAAI7F,GAAG,EAAE;AACxB;AAEA,eAAeO,QAAQR,GAAA,EAAc;EACnC,MAAMgG,WAAA,GAAchG,GAAA,CAAIE,MAAA,CAAOc,MAAA,CAAOiF,IAAA;EACtC,MAAMlF,IAAA,GAAOrB,YAAA,CAAaM,GAAA,CAAIE,MAAM;EAEpC,IAAI;IACF,MAAMgG,QAAA,GAAU3G,MAAA,CAAO4G,aAAA,CAAcH,WAAW;IAChD,MAAMI,oCAAA,GAAuCF,QAAA,CAAQG,OAAA,CACnD,mEACA;MACEC,KAAA,EAAO,CAACN,WAAW;IACrB,CACF;IACA,MAAMO,0BAAA,GAA6B,MAAM,OACvC/G,aAAA,CAAc4G,oCAAoC,EAAEI,IAAA;IAEtD,MAAMC,eAAA,GAAkBF,0BAAA,CAA2Bb,OAAA,CAAQgB,oBAAA;IAG3D,MAAMC,eAAA,GAAkB,IAAIF,eAAA,CAAgBT,WAAA,EAAajF,IAAA,EAAM;MAAA;MAE7DH,YAAA,EAAcA,CAAA,KAAMA,YAAA,CAAaZ,GAAG;MAAA;MAEpC4G,eAAA,EAAiBA,CAAA,KAAM;MAAA;MAEvBC,cAAA,EAAgBA,CAAA,KAAM;MAAA;MAEtBC,mBAAA,EAAsBC,KAAA,IAAgC;IACxD,CAAC;IACD,MAAMJ,eAAA,CAAgBK,SAAA,CAAU;MAAEC,OAAA,EAAS;IAAO,CAAC;EACrD,SAASC,CAAA,EAAG;IACV,MAAMC,KAAA,GAAQD,CAAA,YAAaE,KAAA,GAAQF,CAAA,CAAEC,KAAA,GAAQ;IAC7C9G,OAAA,CAAQqB,KAAA,CAAM,wCAAwCwF,CAAC,GAAGC,KAAA,GAAQ;AAAA,EAAKA,KAAK,KAAK,EAAE,EAAE;EACvF;AACF;AAEA,eAAe1G,YAAYT,GAAA,EAAc;EACvC,MAAMgG,WAAA,GAAchG,GAAA,CAAIE,MAAA,CAAOc,MAAA,CAAOiF,IAAA;EACtC,MAAMlF,IAAA,GAAOrB,YAAA,CAAaM,GAAA,CAAIE,MAAM;EAEpC,IAAI;IACF,MAAMgG,QAAA,GAAU3G,MAAA,CAAO4G,aAAA,CAAcH,WAAW;IAChD,MAAMqB,sCAAA,GAAyCnB,QAAA,CAAQG,OAAA,CACrD,yEACA;MACEC,KAAA,EAAO,CAACN,WAAW;IACrB,CACF;IACA,MAAMsB,4BAAA,GAA+B,MAAM,OACzC9H,aAAA,CAAc6H,sCAAsC,EAAEb,IAAA;IAExD,MAAMC,eAAA,GAAkBa,4BAAA,CAA6B5B,OAAA,CAAQ6B,sBAAA;IAG7D,MAAMZ,eAAA,GAAkB,IAAIF,eAAA,CAAgBT,WAAA,EAAajF,IAAA,EAAM;MAAA;MAE7DH,YAAA,EAAcA,CAAA,KAAMA,YAAA,CAAaZ,GAAG;MAAA;MAEpC4G,eAAA,EAAiBA,CAAA,KAAM;MAAA;MAEvBC,cAAA,EAAgBA,CAAA,KAAM;MAAA;MAEtBC,mBAAA,EAAsBC,KAAA,IAAgC;IACxD,CAAC;IACD,MAAMJ,eAAA,CAAgBK,SAAA,CAAU;MAAEC,OAAA,EAAS;IAAO,CAAC;EACrD,SAASC,CAAA,EAAG;IACV,MAAMC,KAAA,GAAQD,CAAA,YAAaE,KAAA,GAAQF,CAAA,CAAEC,KAAA,GAAQ;IAC7C9G,OAAA,CAAQqB,KAAA,CACN,2CAA2CwF,CAAC,GAAGC,KAAA,GAAQ;AAAA,EAAKA,KAAK,KAAK,EAAE,EAC1E;EACF;AACF;AAEA,SAASvG,aAAaZ,GAAA,EAAc;EAClC,MAAMwH,IAAA,GAAO/H,4BAAA,CAA6BO,GAAA,CAAIE,MAAA,CAAOC,YAAY,GAAGsH,OAAA;EACpE,MAAMxH,GAAA,GAAMuH,IAAA,GAAOA,IAAA,CAAK7E,MAAA,GAAS,CAAC;EAClC,IAAI,CAAC1C,GAAA,EAAK;IACRI,OAAA,CAAQC,IAAA,CAAK,kCAAkC;IAC/C;EACF;EAEA,OAAOL,GAAA,CAAIyH,OAAA,CAAQ,WAAW,KAAK;AACrC","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":[],"sources":["user-interface/index.js"],"sourcesContent":["import { exec } from \"node:child_process\";\nimport module from \"node:module\";\nimport { pathToFileURL } from \"node:url\";\nimport { filterViteServerResolvedUrls } from \"../utils/filterViteServerResolvedUrls\";\nimport { getBoundPort } from \"../utils/getBoundPort\";\nconst COMMANDS = [\n {\n keys: \"ow\",\n label: \"open web\",\n terminalLabel: \"\\x1B[1mo\\x1B[0mpen \\x1B[1mw\\x1B[0meb\",\n action: (ctx) => {\n const url = ctx.server.resolvedUrls?.local[0];\n if (!url) {\n console.warn(\"Cannot get the local server URL.\");\n return;\n }\n nativeOpen(url);\n }\n },\n {\n keys: \"oi\",\n label: \"open app in iOS Simulator\",\n terminalLabel: \"\\x1B[1mo\\x1B[0mpen app in \\x1B[1mi\\x1B[0mOS Simulator\",\n action: (ctx) => {\n openIos(ctx);\n }\n },\n {\n keys: \"oa\",\n label: \"open app in Android Emulator\",\n terminalLabel: \"\\x1B[1mo\\x1B[0mpen app in \\x1B[1mA\\x1B[0mndroid Emulator\",\n action: (ctx) => {\n openAndroid(ctx);\n }\n },\n {\n keys: \"oe\",\n label: \"open editor\",\n terminalLabel: \"\\x1B[1mo\\x1B[0mpen \\x1B[1me\\x1B[0mditor\",\n action: async (ctx) => {\n const { defaultEditor } = await import(\"env-editor\");\n exec(`${defaultEditor().binary} .`);\n }\n },\n {\n keys: \"qr\",\n label: \"show Expo Go QR code\",\n terminalLabel: \"show Expo Go \\x1B[1mQR\\x1B[0m code\",\n action: (ctx) => {\n const url = getExpoGoUrl(ctx);\n if (!url) {\n return;\n }\n printNativeQrCodeAndInstructions(url);\n }\n },\n // TODO this would need to be per-platform\n {\n keys: \"dt\",\n label: \"open React Native DevTools\",\n terminalLabel: \"open React Native \\x1B[1mD\\x1B[0mev\\x1B[1mT\\x1B[0mools\",\n action: (ctx) => {\n const { host, port } = ctx.server.config.server;\n const serverUrl = `http://${typeof host === \"string\" && !!host ? host : \"localhost\"}:${port}`;\n const url = new URL(\"/open-debugger\", serverUrl);\n (async () => {\n const response = await fetch(url, {\n method: \"POST\",\n signal: AbortSignal.timeout(3e3)\n }).catch((error) => {\n if (error.name === \"TimeoutError\") {\n return null;\n }\n throw error;\n });\n if (!response) {\n } else if (response.ok === false) {\n const responseText = await response.text();\n if (responseText.includes(\"Unable to find debugger target\")) {\n return;\n }\n console.warn(\n `Failed to open React Native DevTools, ${url} returns ${response.status}: ${responseText}.`\n );\n }\n })();\n }\n },\n {\n keys: \"?\",\n label: \"open editor\",\n terminalLabel: \"show this menu\",\n action: async (ctx) => {\n }\n }\n];\nasync function startUserInterface(context) {\n if (!supportsKeyboardCommands()) {\n return;\n }\n printCommandsTable(context);\n startInterceptingKeyStrokes(context);\n}\nfunction printCommandsTable(context) {\n const longestKeyLength = COMMANDS.reduce(\n (max, command) => Math.max(max, command.keys.length),\n 0\n );\n const commandsInfo = COMMANDS.map(\n (cmd) => getCommandInfoInTerminal(cmd, { longestKeyLength })\n ).join(\"\\n\");\n console.info(`\n${commandsInfo}\n`);\n}\nfunction getCommandInfoInTerminal(command, { longestKeyLength = 0 } = {}) {\n return `\\x1B[90m\\u203A\\x1B[0m Press \\x1B[1m${longestKeyLength ? command.keys.padEnd(longestKeyLength, \" \") : command.keys}\\x1B[0m \\x1B[90m\\u2502\\x1B[0m ${command.terminalLabel}`;\n}\nfunction restoreTerminal() {\n const { stdin } = process;\n if (stdin.isTTY && stdin.setRawMode) {\n try {\n stdin.setRawMode(false);\n } catch {\n }\n }\n process.stdout.write(\"\\x1B[0m\");\n}\nfunction supportsKeyboardCommands() {\n const { stdin } = process;\n return Boolean(stdin.isTTY && stdin.setRawMode);\n}\nfunction startInterceptingKeyStrokes(context) {\n const { stdin } = process;\n if (!supportsKeyboardCommands()) {\n return;\n }\n stdin.setRawMode(true);\n stdin.resume();\n stdin.setEncoding(\"utf8\");\n stdin.on(\"data\", handleKeypress.bind(null, context));\n stdin.unref();\n process.on(\"exit\", restoreTerminal);\n process.on(\"SIGINT\", () => {\n restoreTerminal();\n process.exit(0);\n });\n process.on(\"SIGTERM\", () => {\n restoreTerminal();\n process.exit(0);\n });\n}\nlet pressedKeys = \"\";\nlet clearPressedKeysTimer = null;\nfunction clearPressedKeys() {\n pressedKeys = \"\";\n clearPrintedInfo();\n}\nfunction resetClearPressedKeysTimer() {\n if (clearPressedKeysTimer) {\n clearTimeout(clearPressedKeysTimer);\n }\n clearPressedKeysTimer = setTimeout(clearPressedKeys, 3e3);\n clearPressedKeysTimer.unref();\n}\nfunction handleKeypress(context, key) {\n if (key === \"\\x1B\") {\n clearPrintedInfo();\n pressedKeys = \"\";\n return;\n }\n if (key === \"?\" || key === \"/\") {\n clearPrintedInfo();\n console.info(\"> ?\\n\\u21D2 Available commands:\");\n printCommandsTable(context);\n return;\n }\n resetClearPressedKeysTimer();\n if (key === \"\\x7F\") {\n pressedKeys = pressedKeys.slice(0, -1);\n } else {\n key = key.toLowerCase();\n if (/^[a-z]$/.test(key)) {\n pressedKeys += key;\n }\n }\n if (pressedKeys.length === 0) {\n clearPrintedInfo();\n return;\n }\n const matchedCommand = COMMANDS.find((command) => command.keys === pressedKeys);\n if (matchedCommand) {\n clearPrintedInfo();\n console.info(`> ${matchedCommand.keys}\n\\u21D2 ${matchedCommand.label}...`);\n pressedKeys = \"\";\n setTimeout(() => matchedCommand.action?.(context), 500);\n return;\n }\n if (pressedKeys.length >= 3) {\n clearPrintedInfo();\n console.info(\n `> ${pressedKeys}\nNo matching command for \"${pressedKeys}\"! Press \"?\" for help.`\n );\n pressedKeys = \"\";\n return;\n }\n const possibleCommands = COMMANDS.filter(\n (command) => command.keys.startsWith(pressedKeys)\n );\n const commandsInfo = possibleCommands.map((command) => {\n const matchedPart = command.keys.slice(0, pressedKeys.length);\n const remainingPart = command.keys.slice(pressedKeys.length);\n return ` \\x1B[4m${matchedPart}\\x1B[0m\\x1B[1m${remainingPart}\\x1B[0m\\x1B[90m - \\x1B[0m${command.terminalLabel}`;\n }).join(\"\\n\");\n const infoToPrint = `\n${commandsInfo}\n> ${pressedKeys}`;\n printInfo(infoToPrint);\n}\nlet lastPrintedInfo = \"\";\nfunction printInfo(info) {\n clearPrintedInfo();\n lastPrintedInfo = info;\n process.stdout.write(info);\n}\nfunction clearPrintedInfo() {\n if (lastPrintedInfo) {\n process.stdout.write(\"\\x1B[2K\");\n process.stdout.write(\"\\x1B[1A\\x1B[2K\".repeat(lastPrintedInfo.split(\"\\n\").length - 1));\n process.stdout.write(\"\\x1B[2K\");\n process.stdout.write(\"\\x1B[G\");\n }\n lastPrintedInfo = \"\";\n}\nasync function printNativeQrCodeAndInstructions(url) {\n const qrcode = await import(\"qrcode-terminal\");\n (qrcode.default || qrcode).generate(url, { small: true }, (code) => {\n console.info(\n `To open the app on your iPhone, install the Expo Go app and scan the QR code below with your iPhone camera:\n${code}`\n );\n });\n}\nfunction nativeOpen(url) {\n const start = process.platform === \"darwin\" ? \"open\" : process.platform === \"win32\" ? \"start\" : \"xdg-open\";\n exec(`${start} ${url}`);\n}\nasync function openIos(ctx) {\n const projectRoot = ctx.server.config.root;\n const port = getBoundPort(ctx.server);\n try {\n const require2 = module.createRequire(projectRoot);\n const applePlatformManagerModuleImportPath = require2.resolve(\n \"@expo/cli/build/src/start/platforms/ios/ApplePlatformManager.js\",\n {\n paths: [projectRoot]\n }\n );\n const applePlatformManagerModule = await import(pathToFileURL(applePlatformManagerModuleImportPath).href);\n const PlatformManager = applePlatformManagerModule.default.ApplePlatformManager;\n const platformManager = new PlatformManager(projectRoot, port, {\n /** Expo Go URL. */\n getExpoGoUrl: () => getExpoGoUrl(ctx),\n /** Get the base URL for the dev server hosting this platform manager. */\n getDevServerUrl: () => null,\n /** Get redirect URL for native disambiguation. */\n getRedirectUrl: () => null,\n /** Dev Client */\n getCustomRuntimeUrl: (props) => null\n });\n await platformManager.openAsync({ runtime: \"expo\" });\n } catch (e) {\n const stack = e instanceof Error ? e.stack : null;\n console.error(`Failed to open app in iOS Simulator: ${e}${stack ? `\n${stack}` : \"\"}`);\n }\n}\nasync function openAndroid(ctx) {\n const projectRoot = ctx.server.config.root;\n const port = getBoundPort(ctx.server);\n try {\n const require2 = module.createRequire(projectRoot);\n const androidPlatformManagerModuleImportPath = require2.resolve(\n \"@expo/cli/build/src/start/platforms/android/AndroidPlatformManager.js\",\n {\n paths: [projectRoot]\n }\n );\n const androidPlatformManagerModule = await import(pathToFileURL(androidPlatformManagerModuleImportPath).href);\n const PlatformManager = androidPlatformManagerModule.default.AndroidPlatformManager;\n const platformManager = new PlatformManager(projectRoot, port, {\n /** Expo Go URL. */\n getExpoGoUrl: () => getExpoGoUrl(ctx),\n /** Get the base URL for the dev server hosting this platform manager. */\n getDevServerUrl: () => null,\n /** Get redirect URL for native disambiguation. */\n getRedirectUrl: () => null,\n /** Dev Client */\n getCustomRuntimeUrl: (props) => null\n });\n await platformManager.openAsync({ runtime: \"expo\" });\n } catch (e) {\n const stack = e instanceof Error ? e.stack : null;\n console.error(\n `Failed to open app in Android Emulator: ${e}${stack ? `\n${stack}` : \"\"}`\n );\n }\n}\nfunction getExpoGoUrl(ctx) {\n const urls = filterViteServerResolvedUrls(ctx.server.resolvedUrls)?.network;\n const url = urls?.[urls.length - 1];\n if (!url) {\n console.warn(\"Cannot get the local server URL.\");\n return;\n }\n return url.replace(/^https?/, \"exp\");\n}\nexport {\n startUserInterface\n};\n//# sourceMappingURL=index.js.map\n"],"mappings":";;;;;;;AAKA,MAAM,WAAW;CACf;EACE,MAAM;EACN,OAAO;EACP,eAAe;EACf,SAAS,QAAQ;GACf,MAAM,MAAM,IAAI,OAAO,cAAc,MAAM;GAC3C,IAAI,CAAC,KAAK;IACR,QAAQ,KAAK,kCAAkC;IAC/C;GACF;GACA,WAAW,GAAG;EAChB;CACF;CACA;EACE,MAAM;EACN,OAAO;EACP,eAAe;EACf,SAAS,QAAQ;GACf,QAAQ,GAAG;EACb;CACF;CACA;EACE,MAAM;EACN,OAAO;EACP,eAAe;EACf,SAAS,QAAQ;GACf,YAAY,GAAG;EACjB;CACF;CACA;EACE,MAAM;EACN,OAAO;EACP,eAAe;EACf,QAAQ,OAAO,QAAQ;GACrB,MAAM,EAAE,kBAAkB,MAAM,OAAO;GACvC,KAAK,GAAG,cAAc,CAAC,CAAC,OAAO,GAAG;EACpC;CACF;CACA;EACE,MAAM;EACN,OAAO;EACP,eAAe;EACf,SAAS,QAAQ;GACf,MAAM,MAAM,aAAa,GAAG;GAC5B,IAAI,CAAC,KAAK;IACR;GACF;GACA,iCAAiC,GAAG;EACtC;CACF;CAEA;EACE,MAAM;EACN,OAAO;EACP,eAAe;EACf,SAAS,QAAQ;GACf,MAAM,EAAE,MAAM,SAAS,IAAI,OAAO,OAAO;GACzC,MAAM,YAAY,UAAU,OAAO,SAAS,YAAY,CAAC,CAAC,OAAO,OAAO,YAAY,GAAG;GACvF,MAAM,MAAM,IAAI,IAAI,kBAAkB,SAAS;GAC/C,CAAC,YAAY;IACX,MAAM,WAAW,MAAM,MAAM,KAAK;KAChC,QAAQ;KACR,QAAQ,YAAY,QAAQ,GAAG;IACjC,CAAC,CAAC,CAAC,OAAO,UAAU;KAClB,IAAI,MAAM,SAAS,gBAAgB;MACjC,OAAO;KACT;KACA,MAAM;IACR,CAAC;IACD,IAAI,CAAC,UAAU,CACf,OAAO,IAAI,SAAS,OAAO,OAAO;KAChC,MAAM,eAAe,MAAM,SAAS,KAAK;KACzC,IAAI,aAAa,SAAS,gCAAgC,GAAG;MAC3D;KACF;KACA,QAAQ,KACN,yCAAyC,IAAI,WAAW,SAAS,OAAO,IAAI,aAAa,EAC3F;IACF;GACF,EAAC,CAAE;EACL;CACF;CACA;EACE,MAAM;EACN,OAAO;EACP,eAAe;EACf,QAAQ,OAAO,QAAQ,CACvB;CACF;AACF;AACA,eAAe,mBAAmB,SAAS;CACzC,IAAI,CAAC,yBAAyB,GAAG;EAC/B;CACF;CACA,mBAAmB,OAAO;CAC1B,4BAA4B,OAAO;AACrC;AACA,SAAS,mBAAmB,SAAS;CACnC,MAAM,mBAAmB,SAAS,QAC/B,KAAK,YAAY,KAAK,IAAI,KAAK,QAAQ,KAAK,MAAM,GACnD,CACF;CACA,MAAM,eAAe,SAAS,KAC3B,QAAQ,yBAAyB,KAAK,EAAE,iBAAiB,CAAC,CAC7D,CAAC,CAAC,KAAK,IAAI;CACX,QAAQ,KAAK;EACb,aAAa;CACd;AACD;AACA,SAAS,yBAAyB,SAAS,EAAE,mBAAmB,MAAM,CAAC,GAAG;CACxE,OAAO,sCAAsC,mBAAmB,QAAQ,KAAK,OAAO,kBAAkB,GAAG,IAAI,QAAQ,KAAK,gCAAgC,QAAQ;AACpK;AACA,SAAS,kBAAkB;CACzB,MAAM,EAAE,UAAU;CAClB,IAAI,MAAM,SAAS,MAAM,YAAY;EACnC,IAAI;GACF,MAAM,WAAW,KAAK;EACxB,QAAQ,CACR;CACF;CACA,QAAQ,OAAO,MAAM,SAAS;AAChC;AACA,SAAS,2BAA2B;CAClC,MAAM,EAAE,UAAU;CAClB,OAAO,QAAQ,MAAM,SAAS,MAAM,UAAU;AAChD;AACA,SAAS,4BAA4B,SAAS;CAC5C,MAAM,EAAE,UAAU;CAClB,IAAI,CAAC,yBAAyB,GAAG;EAC/B;CACF;CACA,MAAM,WAAW,IAAI;CACrB,MAAM,OAAO;CACb,MAAM,YAAY,MAAM;CACxB,MAAM,GAAG,QAAQ,eAAe,KAAK,MAAM,OAAO,CAAC;CACnD,MAAM,MAAM;CACZ,QAAQ,GAAG,QAAQ,eAAe;CAClC,QAAQ,GAAG,gBAAgB;EACzB,gBAAgB;EAChB,QAAQ,KAAK,CAAC;CAChB,CAAC;CACD,QAAQ,GAAG,iBAAiB;EAC1B,gBAAgB;EAChB,QAAQ,KAAK,CAAC;CAChB,CAAC;AACH;AACA,IAAI,cAAc;AAClB,IAAI,wBAAwB;AAC5B,SAAS,mBAAmB;CAC1B,cAAc;CACd,iBAAiB;AACnB;AACA,SAAS,6BAA6B;CACpC,IAAI,uBAAuB;EACzB,aAAa,qBAAqB;CACpC;CACA,wBAAwB,WAAW,kBAAkB,GAAG;CACxD,sBAAsB,MAAM;AAC9B;AACA,SAAS,eAAe,SAAS,KAAK;CACpC,IAAI,QAAQ,QAAQ;EAClB,iBAAiB;EACjB,cAAc;EACd;CACF;CACA,IAAI,QAAQ,OAAO,QAAQ,KAAK;EAC9B,iBAAiB;EACjB,QAAQ,KAAK,4BAAiC;EAC9C,mBAAmB,OAAO;EAC1B;CACF;CACA,2BAA2B;CAC3B,IAAI,QAAQ,KAAQ;EAClB,cAAc,YAAY,MAAM,GAAG,CAAC,CAAC;CACvC,OAAO;EACL,MAAM,IAAI,YAAY;EACtB,IAAI,UAAU,KAAK,GAAG,GAAG;GACvB,eAAe;EACjB;CACF;CACA,IAAI,YAAY,WAAW,GAAG;EAC5B,iBAAiB;EACjB;CACF;CACA,MAAM,iBAAiB,SAAS,MAAM,YAAY,QAAQ,SAAS,WAAW;CAC9E,IAAI,gBAAgB;EAClB,iBAAiB;EACjB,QAAQ,KAAK,KAAK,eAAe,KAAK;SACjC,eAAe,MAAM,IAAI;EAC9B,cAAc;EACd,iBAAiB,eAAe,SAAS,OAAO,GAAG,GAAG;EACtD;CACF;CACA,IAAI,YAAY,UAAU,GAAG;EAC3B,iBAAiB;EACjB,QAAQ,KACN,KAAK,YAAY;2BACI,YAAY,uBACnC;EACA,cAAc;EACd;CACF;CACA,MAAM,mBAAmB,SAAS,QAC/B,YAAY,QAAQ,KAAK,WAAW,WAAW,CAClD;CACA,MAAM,eAAe,iBAAiB,KAAK,YAAY;EACrD,MAAM,cAAc,QAAQ,KAAK,MAAM,GAAG,YAAY,MAAM;EAC5D,MAAM,gBAAgB,QAAQ,KAAK,MAAM,YAAY,MAAM;EAC3D,OAAO,YAAY,YAAY,gBAAgB,cAAc,2BAA2B,QAAQ;CAClG,CAAC,CAAC,CAAC,KAAK,IAAI;CACZ,MAAM,cAAc;EACpB,aAAa;IACX;CACF,UAAU,WAAW;AACvB;AACA,IAAI,kBAAkB;AACtB,SAAS,UAAU,MAAM;CACvB,iBAAiB;CACjB,kBAAkB;CAClB,QAAQ,OAAO,MAAM,IAAI;AAC3B;AACA,SAAS,mBAAmB;CAC1B,IAAI,iBAAiB;EACnB,QAAQ,OAAO,MAAM,SAAS;EAC9B,QAAQ,OAAO,MAAM,iBAAiB,OAAO,gBAAgB,MAAM,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC;EACpF,QAAQ,OAAO,MAAM,SAAS;EAC9B,QAAQ,OAAO,MAAM,QAAQ;CAC/B;CACA,kBAAkB;AACpB;AACA,eAAe,iCAAiC,KAAK;CACnD,MAAM,SAAS,MAAM,OAAO;CAC5B,CAAC,OAAO,WAAW,OAAM,CAAE,SAAS,KAAK,EAAE,OAAO,KAAK,IAAI,SAAS;EAClE,QAAQ,KACN;EACJ,MACE;CACF,CAAC;AACH;AACA,SAAS,WAAW,KAAK;CACvB,MAAM,QAAQ,QAAQ,aAAa,WAAW,SAAS,QAAQ,aAAa,UAAU,UAAU;CAChG,KAAK,GAAG,MAAM,GAAG,KAAK;AACxB;AACA,eAAe,QAAQ,KAAK;CAC1B,MAAM,cAAc,IAAI,OAAO,OAAO;CACtC,MAAM,OAAO,aAAa,IAAI,MAAM;CACpC,IAAI;EACF,MAAM,WAAW,OAAO,cAAc,WAAW;EACjD,MAAM,uCAAuC,SAAS,QACpD,mEACA,EACE,OAAO,CAAC,WAAW,EACrB,CACF;EACA,MAAM,6BAA6B,MAAM,OAAO,cAAc,oCAAoC,CAAC,CAAC;EACpG,MAAM,kBAAkB,2BAA2B,QAAQ;EAC3D,MAAM,kBAAkB,IAAI,gBAAgB,aAAa,MAAM;;GAE7D,oBAAoB,aAAa,GAAG;;GAEpC,uBAAuB;;GAEvB,sBAAsB;;GAEtB,sBAAsB,UAAU;EAClC,CAAC;EACD,MAAM,gBAAgB,UAAU,EAAE,SAAS,OAAO,CAAC;CACrD,SAAS,GAAG;EACV,MAAM,QAAQ,aAAa,QAAQ,EAAE,QAAQ;EAC7C,QAAQ,MAAM,wCAAwC,IAAI,QAAQ;EACpE,UAAU,IAAI;CACd;AACF;AACA,eAAe,YAAY,KAAK;CAC9B,MAAM,cAAc,IAAI,OAAO,OAAO;CACtC,MAAM,OAAO,aAAa,IAAI,MAAM;CACpC,IAAI;EACF,MAAM,WAAW,OAAO,cAAc,WAAW;EACjD,MAAM,yCAAyC,SAAS,QACtD,yEACA,EACE,OAAO,CAAC,WAAW,EACrB,CACF;EACA,MAAM,+BAA+B,MAAM,OAAO,cAAc,sCAAsC,CAAC,CAAC;EACxG,MAAM,kBAAkB,6BAA6B,QAAQ;EAC7D,MAAM,kBAAkB,IAAI,gBAAgB,aAAa,MAAM;;GAE7D,oBAAoB,aAAa,GAAG;;GAEpC,uBAAuB;;GAEvB,sBAAsB;;GAEtB,sBAAsB,UAAU;EAClC,CAAC;EACD,MAAM,gBAAgB,UAAU,EAAE,SAAS,OAAO,CAAC;CACrD,SAAS,GAAG;EACV,MAAM,QAAQ,aAAa,QAAQ,EAAE,QAAQ;EAC7C,QAAQ,MACN,2CAA2C,IAAI,QAAQ;EAC3D,UAAU,IACR;CACF;AACF;AACA,SAAS,aAAa,KAAK;CACzB,MAAM,OAAO,6BAA6B,IAAI,OAAO,YAAY,CAAC,EAAE;CACpE,MAAM,MAAM,OAAO,KAAK,SAAS;CACjC,IAAI,CAAC,KAAK;EACR,QAAQ,KAAK,kCAAkC;EAC/C;CACF;CACA,OAAO,IAAI,QAAQ,WAAW,KAAK;AACrC"}