@vxrn/vite-plugin-metro 1.27.1 → 2.0.0-beta.100.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 (335) hide show
  1. package/dist/cjs/babel-plugins/import-meta-env-plugin.cjs +84 -102
  2. package/dist/cjs/babel-plugins/import-meta-env-plugin.native.cjs +108 -0
  3. package/dist/cjs/babel-plugins/import-meta-env-plugin.native.js +90 -107
  4. package/dist/cjs/babel-plugins/import-meta-env-plugin.native.js.map +1 -1
  5. package/dist/cjs/env/platformEnv.cjs +57 -57
  6. package/dist/cjs/env/platformEnv.native.cjs +95 -0
  7. package/dist/cjs/env/platformEnv.native.js +74 -75
  8. package/dist/cjs/env/platformEnv.native.js.map +1 -1
  9. package/dist/cjs/index.cjs +21 -25
  10. package/dist/cjs/index.native.cjs +39 -0
  11. package/dist/cjs/index.native.js +21 -24
  12. package/dist/cjs/index.native.js.map +1 -1
  13. package/dist/cjs/metro-config/getMetroBabelConfigFromViteConfig.cjs +54 -51
  14. package/dist/cjs/metro-config/getMetroBabelConfigFromViteConfig.native.cjs +108 -0
  15. package/dist/cjs/metro-config/getMetroBabelConfigFromViteConfig.native.js +95 -94
  16. package/dist/cjs/metro-config/getMetroBabelConfigFromViteConfig.native.js.map +1 -1
  17. package/dist/cjs/metro-config/getMetroConfigFromViteConfig.cjs +287 -272
  18. package/dist/cjs/metro-config/getMetroConfigFromViteConfig.native.cjs +346 -0
  19. package/dist/cjs/metro-config/getMetroConfigFromViteConfig.native.js +309 -282
  20. package/dist/cjs/metro-config/getMetroConfigFromViteConfig.native.js.map +1 -1
  21. package/dist/cjs/metro-config/patchMetroServerWithViteConfigAndMetroPluginOptions.cjs +38 -44
  22. package/dist/cjs/metro-config/patchMetroServerWithViteConfigAndMetroPluginOptions.native.cjs +53 -0
  23. package/dist/cjs/metro-config/patchMetroServerWithViteConfigAndMetroPluginOptions.native.js +39 -44
  24. package/dist/cjs/metro-config/patchMetroServerWithViteConfigAndMetroPluginOptions.native.js.map +1 -1
  25. package/dist/cjs/metro-config/types.cjs +9 -11
  26. package/dist/cjs/metro-config/types.native.cjs +18 -0
  27. package/dist/cjs/metro-config/types.native.js +9 -10
  28. package/dist/cjs/metro-config/types.native.js.map +1 -1
  29. package/dist/cjs/plugins/metroPlugin.cjs +210 -248
  30. package/dist/cjs/plugins/metroPlugin.native.cjs +242 -0
  31. package/dist/cjs/plugins/metroPlugin.native.js +216 -253
  32. package/dist/cjs/plugins/metroPlugin.native.js.map +1 -1
  33. package/dist/cjs/rn-commands/bundle/assetCatalogIOS.cjs +56 -65
  34. package/dist/cjs/rn-commands/bundle/assetCatalogIOS.native.cjs +121 -0
  35. package/dist/cjs/rn-commands/bundle/assetCatalogIOS.native.js +94 -106
  36. package/dist/cjs/rn-commands/bundle/assetCatalogIOS.native.js.map +1 -1
  37. package/dist/cjs/rn-commands/bundle/assetPathUtils.cjs +51 -55
  38. package/dist/cjs/rn-commands/bundle/assetPathUtils.native.cjs +72 -0
  39. package/dist/cjs/rn-commands/bundle/assetPathUtils.native.js +51 -54
  40. package/dist/cjs/rn-commands/bundle/assetPathUtils.native.js.map +1 -1
  41. package/dist/cjs/rn-commands/bundle/buildBundle.cjs +37 -46
  42. package/dist/cjs/rn-commands/bundle/buildBundle.native.cjs +57 -0
  43. package/dist/cjs/rn-commands/bundle/buildBundle.native.js +39 -47
  44. package/dist/cjs/rn-commands/bundle/buildBundle.native.js.map +1 -1
  45. package/dist/cjs/rn-commands/bundle/buildBundleWithConfig.cjs +57 -68
  46. package/dist/cjs/rn-commands/bundle/buildBundleWithConfig.native.cjs +81 -0
  47. package/dist/cjs/rn-commands/bundle/buildBundleWithConfig.native.js +59 -70
  48. package/dist/cjs/rn-commands/bundle/buildBundleWithConfig.native.js.map +1 -1
  49. package/dist/cjs/rn-commands/bundle/filterPlatformAssetScales.cjs +37 -39
  50. package/dist/cjs/rn-commands/bundle/filterPlatformAssetScales.native.cjs +70 -0
  51. package/dist/cjs/rn-commands/bundle/filterPlatformAssetScales.native.js +56 -59
  52. package/dist/cjs/rn-commands/bundle/filterPlatformAssetScales.native.js.map +1 -1
  53. package/dist/cjs/rn-commands/bundle/getAssetDestPathAndroid.cjs +20 -29
  54. package/dist/cjs/rn-commands/bundle/getAssetDestPathAndroid.native.cjs +39 -0
  55. package/dist/cjs/rn-commands/bundle/getAssetDestPathAndroid.native.js +20 -28
  56. package/dist/cjs/rn-commands/bundle/getAssetDestPathAndroid.native.js.map +1 -1
  57. package/dist/cjs/rn-commands/bundle/getAssetDestPathIOS.cjs +20 -33
  58. package/dist/cjs/rn-commands/bundle/getAssetDestPathIOS.native.cjs +38 -0
  59. package/dist/cjs/rn-commands/bundle/getAssetDestPathIOS.native.js +20 -32
  60. package/dist/cjs/rn-commands/bundle/getAssetDestPathIOS.native.js.map +1 -1
  61. package/dist/cjs/rn-commands/bundle/getBuildBundleFn.cjs +23 -32
  62. package/dist/cjs/rn-commands/bundle/getBuildBundleFn.native.cjs +38 -0
  63. package/dist/cjs/rn-commands/bundle/getBuildBundleFn.native.js +23 -31
  64. package/dist/cjs/rn-commands/bundle/getBuildBundleFn.native.js.map +1 -1
  65. package/dist/cjs/rn-commands/bundle/index.cjs +15 -17
  66. package/dist/cjs/rn-commands/bundle/index.native.cjs +30 -0
  67. package/dist/cjs/rn-commands/bundle/index.native.js +15 -16
  68. package/dist/cjs/rn-commands/bundle/index.native.js.map +1 -1
  69. package/dist/cjs/rn-commands/bundle/saveAssets.cjs +85 -96
  70. package/dist/cjs/rn-commands/bundle/saveAssets.native.cjs +129 -0
  71. package/dist/cjs/rn-commands/bundle/saveAssets.native.js +102 -114
  72. package/dist/cjs/rn-commands/bundle/saveAssets.native.js.map +1 -1
  73. package/dist/cjs/rn-commands/bundle/types.cjs +9 -11
  74. package/dist/cjs/rn-commands/bundle/types.native.cjs +18 -0
  75. package/dist/cjs/rn-commands/bundle/types.native.js +9 -10
  76. package/dist/cjs/rn-commands/bundle/types.native.js.map +1 -1
  77. package/dist/cjs/rn-commands/index.cjs +17 -26
  78. package/dist/cjs/rn-commands/index.native.cjs +32 -0
  79. package/dist/cjs/rn-commands/index.native.js +17 -25
  80. package/dist/cjs/rn-commands/index.native.js.map +1 -1
  81. package/dist/cjs/transformer/babel-core.cjs +16 -18
  82. package/dist/cjs/transformer/babel-core.native.cjs +30 -0
  83. package/dist/cjs/transformer/babel-core.native.js +16 -17
  84. package/dist/cjs/transformer/babel-core.native.js.map +1 -1
  85. package/dist/cjs/transformer/babel-transformer.cjs +149 -151
  86. package/dist/cjs/transformer/babel-transformer.native.cjs +190 -0
  87. package/dist/cjs/transformer/babel-transformer.native.js +164 -158
  88. package/dist/cjs/transformer/babel-transformer.native.js.map +1 -1
  89. package/dist/cjs/transformer/expoVirtualEnv.cjs +92 -0
  90. package/dist/cjs/transformer/expoVirtualEnv.native.cjs +113 -0
  91. package/dist/cjs/transformer/expoVirtualEnv.native.js +115 -0
  92. package/dist/cjs/transformer/expoVirtualEnv.native.js.map +1 -0
  93. package/dist/cjs/transformer/loadBabelConfig.cjs +44 -49
  94. package/dist/cjs/transformer/loadBabelConfig.native.cjs +64 -0
  95. package/dist/cjs/transformer/loadBabelConfig.native.js +48 -52
  96. package/dist/cjs/transformer/loadBabelConfig.native.js.map +1 -1
  97. package/dist/cjs/transformer/metroNativeWorker.cjs +1430 -1488
  98. package/dist/cjs/transformer/metroNativeWorker.native.cjs +2519 -0
  99. package/dist/cjs/transformer/metroNativeWorker.native.js +2407 -2560
  100. package/dist/cjs/transformer/metroNativeWorker.native.js.map +1 -1
  101. package/dist/cjs/transformer/transformSync.cjs +48 -64
  102. package/dist/cjs/transformer/transformSync.native.cjs +74 -0
  103. package/dist/cjs/transformer/transformSync.native.js +50 -65
  104. package/dist/cjs/transformer/transformSync.native.js.map +1 -1
  105. package/dist/cjs/transformer/types.cjs +9 -11
  106. package/dist/cjs/transformer/types.native.cjs +18 -0
  107. package/dist/cjs/transformer/types.native.js +9 -10
  108. package/dist/cjs/transformer/types.native.js.map +1 -1
  109. package/dist/cjs/utils/exit.cjs +141 -139
  110. package/dist/cjs/utils/exit.native.cjs +266 -0
  111. package/dist/cjs/utils/exit.native.js +228 -241
  112. package/dist/cjs/utils/exit.native.js.map +1 -1
  113. package/dist/cjs/utils/getTerminalReporter.cjs +35 -47
  114. package/dist/cjs/utils/getTerminalReporter.native.cjs +57 -0
  115. package/dist/cjs/utils/getTerminalReporter.native.js +38 -49
  116. package/dist/cjs/utils/getTerminalReporter.native.js.map +1 -1
  117. package/dist/cjs/utils/metroCacheManager.cjs +84 -99
  118. package/dist/cjs/utils/metroCacheManager.native.cjs +130 -0
  119. package/dist/cjs/utils/metroCacheManager.native.js +102 -118
  120. package/dist/cjs/utils/metroCacheManager.native.js.map +1 -1
  121. package/dist/cjs/utils/projectImport.cjs +40 -51
  122. package/dist/cjs/utils/projectImport.native.cjs +64 -0
  123. package/dist/cjs/utils/projectImport.native.js +41 -58
  124. package/dist/cjs/utils/projectImport.native.js.map +1 -1
  125. package/dist/esm/babel-plugins/import-meta-env-plugin.mjs +72 -86
  126. package/dist/esm/babel-plugins/import-meta-env-plugin.mjs.map +1 -1
  127. package/dist/esm/babel-plugins/import-meta-env-plugin.native.js +78 -92
  128. package/dist/esm/babel-plugins/import-meta-env-plugin.native.js.map +1 -1
  129. package/dist/esm/env/platformEnv.mjs +42 -39
  130. package/dist/esm/env/platformEnv.mjs.map +1 -1
  131. package/dist/esm/env/platformEnv.native.js +59 -58
  132. package/dist/esm/env/platformEnv.native.js.map +1 -1
  133. package/dist/esm/index.js +3 -4
  134. package/dist/esm/index.mjs +3 -4
  135. package/dist/esm/index.native.js +3 -4
  136. package/dist/esm/metro-config/getMetroBabelConfigFromViteConfig.mjs +42 -33
  137. package/dist/esm/metro-config/getMetroBabelConfigFromViteConfig.mjs.map +1 -1
  138. package/dist/esm/metro-config/getMetroBabelConfigFromViteConfig.native.js +83 -77
  139. package/dist/esm/metro-config/getMetroBabelConfigFromViteConfig.native.js.map +1 -1
  140. package/dist/esm/metro-config/getMetroConfigFromViteConfig.mjs +271 -247
  141. package/dist/esm/metro-config/getMetroConfigFromViteConfig.mjs.map +1 -1
  142. package/dist/esm/metro-config/getMetroConfigFromViteConfig.native.js +293 -258
  143. package/dist/esm/metro-config/getMetroConfigFromViteConfig.native.js.map +1 -1
  144. package/dist/esm/metro-config/patchMetroServerWithViteConfigAndMetroPluginOptions.mjs +26 -26
  145. package/dist/esm/metro-config/patchMetroServerWithViteConfigAndMetroPluginOptions.mjs.map +1 -1
  146. package/dist/esm/metro-config/patchMetroServerWithViteConfigAndMetroPluginOptions.native.js +27 -27
  147. package/dist/esm/metro-config/patchMetroServerWithViteConfigAndMetroPluginOptions.native.js.map +1 -1
  148. package/dist/esm/metro-config/types.mjs +0 -2
  149. package/dist/esm/metro-config/types.native.js +0 -2
  150. package/dist/esm/plugins/metroPlugin.mjs +195 -222
  151. package/dist/esm/plugins/metroPlugin.mjs.map +1 -1
  152. package/dist/esm/plugins/metroPlugin.native.js +201 -228
  153. package/dist/esm/plugins/metroPlugin.native.js.map +1 -1
  154. package/dist/esm/rn-commands/bundle/assetCatalogIOS.mjs +38 -38
  155. package/dist/esm/rn-commands/bundle/assetCatalogIOS.mjs.map +1 -1
  156. package/dist/esm/rn-commands/bundle/assetCatalogIOS.native.js +76 -80
  157. package/dist/esm/rn-commands/bundle/assetCatalogIOS.native.js.map +1 -1
  158. package/dist/esm/rn-commands/bundle/assetPathUtils.mjs +38 -37
  159. package/dist/esm/rn-commands/bundle/assetPathUtils.mjs.map +1 -1
  160. package/dist/esm/rn-commands/bundle/assetPathUtils.native.js +38 -37
  161. package/dist/esm/rn-commands/bundle/assetPathUtils.native.js.map +1 -1
  162. package/dist/esm/rn-commands/bundle/buildBundle.mjs +25 -28
  163. package/dist/esm/rn-commands/bundle/buildBundle.mjs.map +1 -1
  164. package/dist/esm/rn-commands/bundle/buildBundle.native.js +27 -30
  165. package/dist/esm/rn-commands/bundle/buildBundle.native.js.map +1 -1
  166. package/dist/esm/rn-commands/bundle/buildBundleWithConfig.mjs +43 -43
  167. package/dist/esm/rn-commands/bundle/buildBundleWithConfig.mjs.map +1 -1
  168. package/dist/esm/rn-commands/bundle/buildBundleWithConfig.native.js +45 -46
  169. package/dist/esm/rn-commands/bundle/buildBundleWithConfig.native.js.map +1 -1
  170. package/dist/esm/rn-commands/bundle/filterPlatformAssetScales.mjs +24 -21
  171. package/dist/esm/rn-commands/bundle/filterPlatformAssetScales.mjs.map +1 -1
  172. package/dist/esm/rn-commands/bundle/filterPlatformAssetScales.native.js +43 -42
  173. package/dist/esm/rn-commands/bundle/filterPlatformAssetScales.native.js.map +1 -1
  174. package/dist/esm/rn-commands/bundle/getAssetDestPathAndroid.mjs +5 -3
  175. package/dist/esm/rn-commands/bundle/getAssetDestPathAndroid.mjs.map +1 -1
  176. package/dist/esm/rn-commands/bundle/getAssetDestPathAndroid.native.js +5 -3
  177. package/dist/esm/rn-commands/bundle/getAssetDestPathAndroid.native.js.map +1 -1
  178. package/dist/esm/rn-commands/bundle/getAssetDestPathIOS.mjs +5 -7
  179. package/dist/esm/rn-commands/bundle/getAssetDestPathIOS.mjs.map +1 -1
  180. package/dist/esm/rn-commands/bundle/getAssetDestPathIOS.native.js +5 -7
  181. package/dist/esm/rn-commands/bundle/getAssetDestPathIOS.native.js.map +1 -1
  182. package/dist/esm/rn-commands/bundle/getBuildBundleFn.mjs +11 -14
  183. package/dist/esm/rn-commands/bundle/getBuildBundleFn.mjs.map +1 -1
  184. package/dist/esm/rn-commands/bundle/getBuildBundleFn.native.js +11 -14
  185. package/dist/esm/rn-commands/bundle/getBuildBundleFn.native.js.map +1 -1
  186. package/dist/esm/rn-commands/bundle/index.mjs +2 -2
  187. package/dist/esm/rn-commands/bundle/index.native.js +2 -2
  188. package/dist/esm/rn-commands/bundle/saveAssets.mjs +70 -70
  189. package/dist/esm/rn-commands/bundle/saveAssets.mjs.map +1 -1
  190. package/dist/esm/rn-commands/bundle/saveAssets.native.js +87 -89
  191. package/dist/esm/rn-commands/bundle/saveAssets.native.js.map +1 -1
  192. package/dist/esm/rn-commands/bundle/types.mjs +0 -2
  193. package/dist/esm/rn-commands/bundle/types.native.js +0 -2
  194. package/dist/esm/rn-commands/index.mjs +2 -2
  195. package/dist/esm/rn-commands/index.native.js +2 -2
  196. package/dist/esm/transformer/babel-core.mjs +2 -2
  197. package/dist/esm/transformer/babel-core.native.js +2 -2
  198. package/dist/esm/transformer/babel-transformer.mjs +133 -132
  199. package/dist/esm/transformer/babel-transformer.mjs.map +1 -1
  200. package/dist/esm/transformer/babel-transformer.native.js +145 -142
  201. package/dist/esm/transformer/babel-transformer.native.js.map +1 -1
  202. package/dist/esm/transformer/expoVirtualEnv.mjs +67 -0
  203. package/dist/esm/transformer/expoVirtualEnv.mjs.map +1 -0
  204. package/dist/esm/transformer/expoVirtualEnv.native.js +86 -0
  205. package/dist/esm/transformer/expoVirtualEnv.native.js.map +1 -0
  206. package/dist/esm/transformer/loadBabelConfig.mjs +29 -23
  207. package/dist/esm/transformer/loadBabelConfig.mjs.map +1 -1
  208. package/dist/esm/transformer/loadBabelConfig.native.js +33 -27
  209. package/dist/esm/transformer/loadBabelConfig.native.js.map +1 -1
  210. package/dist/esm/transformer/metroNativeWorker.mjs +1393 -1442
  211. package/dist/esm/transformer/metroNativeWorker.mjs.map +1 -1
  212. package/dist/esm/transformer/metroNativeWorker.native.js +2370 -2515
  213. package/dist/esm/transformer/metroNativeWorker.native.js.map +1 -1
  214. package/dist/esm/transformer/transformSync.mjs +33 -38
  215. package/dist/esm/transformer/transformSync.mjs.map +1 -1
  216. package/dist/esm/transformer/transformSync.native.js +35 -40
  217. package/dist/esm/transformer/transformSync.native.js.map +1 -1
  218. package/dist/esm/transformer/types.mjs +0 -2
  219. package/dist/esm/transformer/types.native.js +0 -2
  220. package/dist/esm/utils/exit.mjs +123 -112
  221. package/dist/esm/utils/exit.mjs.map +1 -1
  222. package/dist/esm/utils/exit.native.js +210 -215
  223. package/dist/esm/utils/exit.native.js.map +1 -1
  224. package/dist/esm/utils/getTerminalReporter.mjs +20 -21
  225. package/dist/esm/utils/getTerminalReporter.mjs.map +1 -1
  226. package/dist/esm/utils/getTerminalReporter.native.js +23 -24
  227. package/dist/esm/utils/getTerminalReporter.native.js.map +1 -1
  228. package/dist/esm/utils/metroCacheManager.mjs +73 -82
  229. package/dist/esm/utils/metroCacheManager.mjs.map +1 -1
  230. package/dist/esm/utils/metroCacheManager.native.js +91 -102
  231. package/dist/esm/utils/metroCacheManager.native.js.map +1 -1
  232. package/dist/esm/utils/projectImport.mjs +23 -25
  233. package/dist/esm/utils/projectImport.mjs.map +1 -1
  234. package/dist/esm/utils/projectImport.native.js +24 -33
  235. package/dist/esm/utils/projectImport.native.js.map +1 -1
  236. package/package.json +15 -18
  237. package/src/babel-plugins/import-meta-env-plugin.ts +1 -1
  238. package/src/env/platformEnv.test.ts +44 -0
  239. package/src/env/platformEnv.ts +6 -3
  240. package/src/index.ts +0 -2
  241. package/src/metro-config/getMetroBabelConfigFromViteConfig.test.ts +52 -0
  242. package/src/metro-config/getMetroBabelConfigFromViteConfig.ts +8 -7
  243. package/src/metro-config/getMetroConfigFromViteConfig.test.ts +60 -0
  244. package/src/metro-config/getMetroConfigFromViteConfig.ts +150 -113
  245. package/src/plugins/metroPlugin.ts +3 -6
  246. package/src/transformer/babel-transformer.test.ts +118 -0
  247. package/src/transformer/babel-transformer.ts +82 -15
  248. package/src/transformer/expoVirtualEnv.integration.test.ts +106 -0
  249. package/src/transformer/expoVirtualEnv.test.ts +72 -0
  250. package/src/transformer/expoVirtualEnv.ts +115 -0
  251. package/src/transformer/loadBabelConfig.ts +1 -1
  252. package/src/transformer/metroNativeWorker.test.ts +268 -50
  253. package/src/transformer/metroNativeWorker.ts +53 -71
  254. package/src/transformer/transformSync.test.ts +22 -0
  255. package/src/transformer/transformSync.ts +4 -4
  256. package/src/utils/exit.ts +2 -2
  257. package/src/utils/getTerminalReporter.ts +1 -1
  258. package/src/utils/projectImport.ts +2 -2
  259. package/types/babel-plugins/import-meta-env-plugin.d.ts +1 -1
  260. package/types/babel-plugins/import-meta-env-plugin.d.ts.map +1 -1
  261. package/types/env/platformEnv.d.ts +2 -1
  262. package/types/env/platformEnv.d.ts.map +1 -1
  263. package/types/index.d.ts +0 -2
  264. package/types/index.d.ts.map +1 -1
  265. package/types/metro-config/getMetroBabelConfigFromViteConfig.d.ts +1 -1
  266. package/types/metro-config/getMetroBabelConfigFromViteConfig.d.ts.map +1 -1
  267. package/types/metro-config/getMetroConfigFromViteConfig.d.ts +2 -2
  268. package/types/metro-config/getMetroConfigFromViteConfig.d.ts.map +1 -1
  269. package/types/plugins/metroPlugin.d.ts +2 -4
  270. package/types/plugins/metroPlugin.d.ts.map +1 -1
  271. package/types/rn-commands/bundle/assetPathUtils.d.ts.map +1 -1
  272. package/types/rn-commands/bundle/filterPlatformAssetScales.d.ts.map +1 -1
  273. package/types/rn-commands/bundle/getAssetDestPathAndroid.d.ts.map +1 -1
  274. package/types/rn-commands/bundle/getAssetDestPathIOS.d.ts.map +1 -1
  275. package/types/rn-commands/bundle/saveAssets.d.ts.map +1 -1
  276. package/types/transformer/babel-transformer.d.ts +10 -1
  277. package/types/transformer/babel-transformer.d.ts.map +1 -1
  278. package/types/transformer/expoVirtualEnv.d.ts +8 -0
  279. package/types/transformer/expoVirtualEnv.d.ts.map +1 -0
  280. package/types/transformer/metroNativeWorker.d.ts +7 -8
  281. package/types/transformer/metroNativeWorker.d.ts.map +1 -1
  282. package/types/utils/projectImport.d.ts +2 -2
  283. package/dist/cjs/plugins/expoManifestRequestHandlerPlugin.cjs +0 -71
  284. package/dist/cjs/plugins/expoManifestRequestHandlerPlugin.native.js +0 -82
  285. package/dist/cjs/plugins/expoManifestRequestHandlerPlugin.native.js.map +0 -1
  286. package/dist/cjs/transformer/metroNativeWorker.test.cjs +0 -1054
  287. package/dist/cjs/transformer/metroNativeWorker.test.native.js +0 -1170
  288. package/dist/cjs/transformer/metroNativeWorker.test.native.js.map +0 -1
  289. package/dist/cjs/transformer/transformSync.test.cjs +0 -36
  290. package/dist/cjs/transformer/transformSync.test.native.js +0 -49
  291. package/dist/cjs/transformer/transformSync.test.native.js.map +0 -1
  292. package/dist/cjs/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.cjs +0 -39
  293. package/dist/cjs/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.native.js +0 -42
  294. package/dist/cjs/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.native.js.map +0 -1
  295. package/dist/esm/index.js.map +0 -1
  296. package/dist/esm/index.mjs.map +0 -1
  297. package/dist/esm/index.native.js.map +0 -1
  298. package/dist/esm/metro-config/types.mjs.map +0 -1
  299. package/dist/esm/metro-config/types.native.js.map +0 -1
  300. package/dist/esm/plugins/expoManifestRequestHandlerPlugin.mjs +0 -46
  301. package/dist/esm/plugins/expoManifestRequestHandlerPlugin.mjs.map +0 -1
  302. package/dist/esm/plugins/expoManifestRequestHandlerPlugin.native.js +0 -54
  303. package/dist/esm/plugins/expoManifestRequestHandlerPlugin.native.js.map +0 -1
  304. package/dist/esm/rn-commands/bundle/index.mjs.map +0 -1
  305. package/dist/esm/rn-commands/bundle/index.native.js.map +0 -1
  306. package/dist/esm/rn-commands/bundle/types.mjs.map +0 -1
  307. package/dist/esm/rn-commands/bundle/types.native.js.map +0 -1
  308. package/dist/esm/rn-commands/index.mjs.map +0 -1
  309. package/dist/esm/rn-commands/index.native.js.map +0 -1
  310. package/dist/esm/transformer/babel-core.mjs.map +0 -1
  311. package/dist/esm/transformer/babel-core.native.js.map +0 -1
  312. package/dist/esm/transformer/metroNativeWorker.test.mjs +0 -1010
  313. package/dist/esm/transformer/metroNativeWorker.test.mjs.map +0 -1
  314. package/dist/esm/transformer/metroNativeWorker.test.native.js +0 -1124
  315. package/dist/esm/transformer/metroNativeWorker.test.native.js.map +0 -1
  316. package/dist/esm/transformer/transformSync.test.mjs +0 -37
  317. package/dist/esm/transformer/transformSync.test.mjs.map +0 -1
  318. package/dist/esm/transformer/transformSync.test.native.js +0 -47
  319. package/dist/esm/transformer/transformSync.test.native.js.map +0 -1
  320. package/dist/esm/transformer/types.mjs.map +0 -1
  321. package/dist/esm/transformer/types.native.js.map +0 -1
  322. package/dist/esm/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.mjs +0 -14
  323. package/dist/esm/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.mjs.map +0 -1
  324. package/dist/esm/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.native.js +0 -14
  325. package/dist/esm/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.native.js.map +0 -1
  326. package/src/plugins/expoManifestRequestHandlerPlugin.ts +0 -88
  327. package/src/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.ts +0 -28
  328. package/types/plugins/expoManifestRequestHandlerPlugin.d.ts +0 -14
  329. package/types/plugins/expoManifestRequestHandlerPlugin.d.ts.map +0 -1
  330. package/types/transformer/metroNativeWorker.test.d.ts +0 -2
  331. package/types/transformer/metroNativeWorker.test.d.ts.map +0 -1
  332. package/types/transformer/transformSync.test.d.ts +0 -2
  333. package/types/transformer/transformSync.test.d.ts.map +0 -1
  334. package/types/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.d.ts +0 -5
  335. package/types/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.d.ts.map +0 -1
@@ -8,229 +8,202 @@ import { checkAndClearMetroCacheFromVite } from "../utils/metroCacheManager.mjs"
8
8
  import { projectImport } from "../utils/projectImport.mjs";
9
9
  import { getMetroConfigFromViteConfig } from "../metro-config/getMetroConfigFromViteConfig.mjs";
10
10
  import { patchMetroServerWithViteConfigAndMetroPluginOptions } from "../metro-config/patchMetroServerWithViteConfigAndMetroPluginOptions.mjs";
11
- const {
12
- debug
13
- } = createDebugger("vite-plugin-metro");
11
+
12
+ const { debug } = createDebugger("vite-plugin-metro");
14
13
  function metroPlugin(options = {}) {
15
- globalThis["__viteMetroPluginOptions__"] = options;
16
- return {
17
- name: "metro",
18
- // configResolved(config) {
19
- // projectRoot = config.root
20
- // },
21
- configureServer(server) {
22
- const projectRoot = resolve(server.config.root);
23
- const shouldLetViteServe = url => {
24
- if (!url) return false;
25
- let pathname = "";
26
- try {
27
- pathname = new URL(url, "http://localhost").pathname;
28
- } catch {
29
- pathname = url.split("?")[0] ?? "";
30
- }
31
- if (!pathname.startsWith("/assets/")) return false;
32
- if (pathname.endsWith("_vxrn_loader.js")) return true;
33
- let decodedPathname = pathname;
34
- try {
35
- decodedPathname = decodeURIComponent(pathname);
36
- } catch {}
37
- const filePath = resolve(projectRoot, decodedPathname.slice(1));
38
- const relativePath = relative(projectRoot, filePath);
39
- const isInsideRoot = relativePath !== "" && !relativePath.startsWith("..") && !isAbsolute(relativePath);
40
- return isInsideRoot && existsSync(filePath);
41
- };
42
- let metroReady = false;
43
- let middleware;
44
- let metroServer;
45
- let hmrServer;
46
- let websocketEndpoints;
47
- let rnDevtoolsMiddleware;
48
- let metroPromise;
49
- let metroPromiseResolvers;
50
- metroPromise = new Promise((resolve2, reject) => {
51
- metroPromiseResolvers = {
52
- resolve: resolve2,
53
- reject
54
- };
55
- });
56
- const startMetro = async () => {
57
- const metroStartTime = Date.now();
58
- try {
59
- checkAndClearMetroCacheFromVite(server, server.config.logger);
60
- const {
61
- default: Metro
62
- } = await projectImport(projectRoot, "metro");
63
- const {
64
- default: MetroHmrServer
65
- } = await projectImport(projectRoot, "metro/private/HmrServer");
66
- const {
67
- default: createWebsocketServer
68
- } = await projectImport(projectRoot, "metro/private/lib/createWebsocketServer");
69
- const {
70
- createDevMiddleware
71
- } = await projectImport(projectRoot, "@react-native/dev-middleware");
72
- const config = await getMetroConfigFromViteConfig(server.config, options);
73
- const metroResult = await Metro.createConnectMiddleware(config, {
74
- // Force enable file watching, even on CI.
75
- // This is needed for HMR tests to work on CI.
76
- watch: true
77
- });
78
- middleware = metroResult.middleware;
79
- metroServer = metroResult.metroServer;
80
- patchMetroServerWithViteConfigAndMetroPluginOptions(metroServer, server.config, options);
81
- hmrServer = new MetroHmrServer(metroServer.getBundler(), metroServer.getCreateModuleId(), config);
82
- const reactNativeDevToolsUrl = `http://${typeof server.config.server.host === "boolean" ? "localhost" : server.config.server.host}:${server.config.server.port}`;
83
- const devMiddleware = createDevMiddleware({
84
- serverBaseUrl: reactNativeDevToolsUrl,
85
- logger: console,
86
- unstable_experiments: {
87
- // rn 0.86 turns this on by default and prepares the standalone debugger
88
- // shell eagerly while building the middleware. its tool launcher throws
89
- // outright under NODE_ENV=test rather than spawn a gui, which would take
90
- // the whole dev server down on boot for anyone running tests against it.
91
- enableStandaloneFuseboxShell: process.env.NODE_ENV !== "test"
92
- }
93
- });
94
- rnDevtoolsMiddleware = devMiddleware.middleware;
95
- websocketEndpoints = {
96
- "/hot": createWebsocketServer({
97
- websocketServer: hmrServer
98
- }),
99
- // metro parity: the packager message socket (metro serves /message via
100
- // @react-native-community/cli-server-api). leaving the upgrade unanswered
101
- // dangles the socket and chromium queues every later websocket handshake
102
- // to the same host:port behind it (blocking e.g. zero /sync in sootsim).
103
- "/message": createMessageSocket(),
104
- ...devMiddleware.websocketEndpoints
105
- };
106
- server.httpServer?.on("upgrade", (request, socket, head) => {
107
- const pathname = new URL(request.url, `http://${request.headers.host}`).pathname;
108
- const endpoint = websocketEndpoints[pathname];
109
- if (endpoint) {
110
- endpoint.handleUpgrade(request, socket, head, ws => {
111
- endpoint.emit("connection", ws, request);
112
- });
113
- }
114
- });
115
- server.middlewares.use(rnDevtoolsMiddleware);
116
- metroReady = true;
117
- const metroElapsed = Date.now() - metroStartTime;
118
- debug?.(`Metro bundler ready (${metroElapsed}ms)`);
119
- metroPromiseResolvers.resolve();
120
- } catch (err) {
121
- debug?.(`Error during Metro initialization: ${err}`);
122
- metroPromiseResolvers.reject(err);
123
- throw err;
124
- }
125
- };
126
- const isLazyStartup = options.startup === "lazy";
127
- let metroStarting = false;
128
- const ensureMetroStarted = () => {
129
- if (metroStarting || metroReady) return;
130
- metroStarting = true;
131
- debug?.("Starting Metro on-demand (lazy startup)");
132
- startMetro().catch(err => {
133
- debug?.(`Failed to start Metro: ${err}`);
134
- });
135
- };
136
- if (!isLazyStartup) {
137
- if (server.httpServer) {
138
- if (server.httpServer.listening) {
139
- startMetro().catch(err => {
140
- debug?.(`Failed to start Metro: ${err}`);
141
- });
142
- } else {
143
- server.httpServer.on("listening", () => {
144
- startMetro().catch(err => {
145
- debug?.(`Failed to start Metro: ${err}`);
146
- });
147
- });
148
- }
149
- } else {
150
- const waitForServer = () => {
151
- if (server.httpServer) {
152
- if (server.httpServer.listening) {
153
- startMetro().catch(err => {
154
- debug?.(`Failed to start Metro: ${err}`);
155
- });
156
- } else {
157
- server.httpServer.on("listening", () => {
158
- startMetro().catch(err => {
159
- debug?.(`Failed to start Metro: ${err}`);
160
- });
161
- });
162
- }
163
- } else {
164
- setTimeout(waitForServer, 10);
165
- }
166
- };
167
- waitForServer();
168
- }
169
- } else {
170
- debug?.("Metro lazy startup enabled - will start on first native request");
171
- }
172
- server.middlewares.use(async (req, res, next) => {
173
- const isNativeRequest = req.headers["user-agent"]?.includes("CFNetwork/") || req.headers["user-agent"]?.includes("okhttp/");
174
- if (isLazyStartup && !metroReady) {
175
- if (req.url?.includes(".bundle") || req.url === "/status" && isNativeRequest) {
176
- ensureMetroStarted();
177
- }
178
- }
179
- if (req.url === "/status" && isNativeRequest) {
180
- res.statusCode = 200;
181
- res.end("packager-status:running");
182
- return;
183
- }
184
- if (req.url?.includes(".bundle") && !metroReady) {
185
- await metroPromise;
186
- }
187
- if (middleware) {
188
- if (shouldLetViteServe(req.url)) {
189
- return next();
190
- }
191
- try {
192
- if (req.url?.includes(".bundle")) {
193
- const VITE_METRO_DEBUG_BUNDLE = process.env.VITE_METRO_DEBUG_BUNDLE;
194
- if (VITE_METRO_DEBUG_BUNDLE) {
195
- if (existsSync(VITE_METRO_DEBUG_BUNDLE)) {
196
- debug?.(`serving debug bundle from ${VITE_METRO_DEBUG_BUNDLE}`);
197
- const content = await readFile(VITE_METRO_DEBUG_BUNDLE, "utf-8");
198
- res.setHeader("Content-Type", "application/javascript");
199
- res.end(content);
200
- return;
201
- }
202
- }
203
- }
204
- if (req.url === "/open-stack-frame" && req.method === "POST") {
205
- let body = "";
206
- req.on("data", chunk => {
207
- body += chunk.toString();
208
- });
209
- req.on("end", () => {
210
- try {
211
- const frame = JSON.parse(body);
212
- launchEditor(frame.file);
213
- res.statusCode = 200;
214
- res.end("Stack frame opened in editor");
215
- } catch (e) {
216
- debug?.(`Failed to parse stack frame: ${e}`);
217
- res.statusCode = 400;
218
- return res.end("Invalid stack frame JSON");
219
- }
220
- });
221
- return;
222
- }
223
- await middleware(req, res, next);
224
- } catch (error) {
225
- debug?.(`Metro middleware error: ${error}`);
226
- next();
227
- }
228
- } else {
229
- next();
230
- }
231
- });
232
- }
233
- };
14
+ globalThis["__viteMetroPluginOptions__"] = options;
15
+ return {
16
+ name: "metro",
17
+ configureServer(server) {
18
+ const projectRoot = resolve(server.config.root);
19
+ const shouldLetViteServe = (url) => {
20
+ if (!url) return false;
21
+ let pathname = "";
22
+ try {
23
+ pathname = new URL(url, "http://localhost").pathname;
24
+ } catch {
25
+ pathname = url.split("?")[0] ?? "";
26
+ }
27
+ if (!pathname.startsWith("/assets/")) return false;
28
+ if (pathname.endsWith("_vxrn_loader.js")) return true;
29
+ let decodedPathname = pathname;
30
+ try {
31
+ decodedPathname = decodeURIComponent(pathname);
32
+ } catch {}
33
+ const filePath = resolve(projectRoot, decodedPathname.slice(1));
34
+ const relativePath = relative(projectRoot, filePath);
35
+ const isInsideRoot = relativePath !== "" && !relativePath.startsWith("..") && !isAbsolute(relativePath);
36
+ return isInsideRoot && existsSync(filePath);
37
+ };
38
+ let metroReady = false;
39
+ let middleware;
40
+ let metroServer;
41
+ let hmrServer;
42
+ let websocketEndpoints;
43
+ let rnDevtoolsMiddleware;
44
+ let metroPromise;
45
+ let metroPromiseResolvers;
46
+ metroPromise = new Promise((resolve2, reject) => {
47
+ metroPromiseResolvers = {
48
+ resolve: resolve2,
49
+ reject
50
+ };
51
+ });
52
+ const startMetro = async () => {
53
+ const metroStartTime = Date.now();
54
+ try {
55
+ checkAndClearMetroCacheFromVite(server, server.config.logger);
56
+ const { default: Metro } = await projectImport(projectRoot, "metro");
57
+ const { default: MetroHmrServer } = await projectImport(projectRoot, "metro/private/HmrServer");
58
+ const { default: createWebsocketServer } = await projectImport(projectRoot, "metro/private/lib/createWebsocketServer");
59
+ const { createDevMiddleware } = await projectImport(projectRoot, "@react-native/dev-middleware");
60
+ const config = await getMetroConfigFromViteConfig(server.config, options);
61
+ const metroResult = await Metro.createConnectMiddleware(config, { watch: true });
62
+ middleware = metroResult.middleware;
63
+ metroServer = metroResult.metroServer;
64
+ patchMetroServerWithViteConfigAndMetroPluginOptions(metroServer, server.config, options);
65
+ hmrServer = new MetroHmrServer(metroServer.getBundler(), metroServer.getCreateModuleId(), config);
66
+ const reactNativeDevToolsUrl = `http://${typeof server.config.server.host === "boolean" ? "localhost" : server.config.server.host}:${server.config.server.port}`;
67
+ const devMiddleware = createDevMiddleware({
68
+ serverBaseUrl: reactNativeDevToolsUrl,
69
+ logger: console,
70
+ unstable_experiments: { enableStandaloneFuseboxShell: process.env.NODE_ENV !== "test" }
71
+ });
72
+ rnDevtoolsMiddleware = devMiddleware.middleware;
73
+ websocketEndpoints = {
74
+ "/hot": createWebsocketServer({ websocketServer: hmrServer }),
75
+ "/message": createMessageSocket(),
76
+ ...devMiddleware.websocketEndpoints
77
+ };
78
+ server.httpServer?.on("upgrade", (request, socket, head) => {
79
+ const pathname = new URL(request.url, `http://${request.headers.host}`).pathname;
80
+ const endpoint = websocketEndpoints[pathname];
81
+ if (endpoint) {
82
+ endpoint.handleUpgrade(request, socket, head, (ws) => {
83
+ endpoint.emit("connection", ws, request);
84
+ });
85
+ }
86
+ });
87
+ server.middlewares.use(rnDevtoolsMiddleware);
88
+ metroReady = true;
89
+ const metroElapsed = Date.now() - metroStartTime;
90
+ debug?.(`Metro bundler ready (${metroElapsed}ms)`);
91
+ metroPromiseResolvers.resolve();
92
+ } catch (err) {
93
+ debug?.(`Error during Metro initialization: ${err}`);
94
+ metroPromiseResolvers.reject(err);
95
+ throw err;
96
+ }
97
+ };
98
+ const isLazyStartup = options.startup === "lazy";
99
+ let metroStarting = false;
100
+ const ensureMetroStarted = () => {
101
+ if (metroStarting || metroReady) return;
102
+ metroStarting = true;
103
+ debug?.("Starting Metro on-demand (lazy startup)");
104
+ startMetro().catch((err) => {
105
+ debug?.(`Failed to start Metro: ${err}`);
106
+ });
107
+ };
108
+ if (!isLazyStartup) {
109
+ if (server.httpServer) {
110
+ if (server.httpServer.listening) {
111
+ startMetro().catch((err) => {
112
+ debug?.(`Failed to start Metro: ${err}`);
113
+ });
114
+ } else {
115
+ server.httpServer.on("listening", () => {
116
+ startMetro().catch((err) => {
117
+ debug?.(`Failed to start Metro: ${err}`);
118
+ });
119
+ });
120
+ }
121
+ } else {
122
+ const waitForServer = () => {
123
+ if (server.httpServer) {
124
+ if (server.httpServer.listening) {
125
+ startMetro().catch((err) => {
126
+ debug?.(`Failed to start Metro: ${err}`);
127
+ });
128
+ } else {
129
+ server.httpServer.on("listening", () => {
130
+ startMetro().catch((err) => {
131
+ debug?.(`Failed to start Metro: ${err}`);
132
+ });
133
+ });
134
+ }
135
+ } else {
136
+ setTimeout(waitForServer, 10);
137
+ }
138
+ };
139
+ waitForServer();
140
+ }
141
+ } else {
142
+ debug?.("Metro lazy startup enabled - will start on first native request");
143
+ }
144
+ server.middlewares.use(async (req, res, next) => {
145
+ const isNativeRequest = req.headers["user-agent"]?.includes("CFNetwork/") || req.headers["user-agent"]?.includes("okhttp/");
146
+ if (isLazyStartup && !metroReady) {
147
+ if (req.url?.includes(".bundle") || req.url === "/status" && isNativeRequest) {
148
+ ensureMetroStarted();
149
+ }
150
+ }
151
+ if (req.url === "/status" && isNativeRequest) {
152
+ res.statusCode = 200;
153
+ res.end("packager-status:running");
154
+ return;
155
+ }
156
+ if (req.url?.includes(".bundle") && !metroReady) {
157
+ await metroPromise;
158
+ }
159
+ if (middleware) {
160
+ if (shouldLetViteServe(req.url)) {
161
+ return next();
162
+ }
163
+ try {
164
+ if (req.url?.includes(".bundle")) {
165
+ const VITE_METRO_DEBUG_BUNDLE = process.env.VITE_METRO_DEBUG_BUNDLE;
166
+ if (VITE_METRO_DEBUG_BUNDLE) {
167
+ if (existsSync(VITE_METRO_DEBUG_BUNDLE)) {
168
+ debug?.(`serving debug bundle from ${VITE_METRO_DEBUG_BUNDLE}`);
169
+ const content = await readFile(VITE_METRO_DEBUG_BUNDLE, "utf-8");
170
+ res.setHeader("Content-Type", "application/javascript");
171
+ res.end(content);
172
+ return;
173
+ }
174
+ }
175
+ }
176
+ if (req.url === "/open-stack-frame" && req.method === "POST") {
177
+ let body = "";
178
+ req.on("data", (chunk) => {
179
+ body += chunk.toString();
180
+ });
181
+ req.on("end", () => {
182
+ try {
183
+ const frame = JSON.parse(body);
184
+ launchEditor(frame.file);
185
+ res.statusCode = 200;
186
+ res.end("Stack frame opened in editor");
187
+ } catch (e) {
188
+ debug?.(`Failed to parse stack frame: ${e}`);
189
+ res.statusCode = 400;
190
+ return res.end("Invalid stack frame JSON");
191
+ }
192
+ });
193
+ return;
194
+ }
195
+ await middleware(req, res, next);
196
+ } catch (error) {
197
+ debug?.(`Metro middleware error: ${error}`);
198
+ next();
199
+ }
200
+ } else {
201
+ next();
202
+ }
203
+ });
204
+ }
205
+ };
234
206
  }
207
+
235
208
  export { metroPlugin };
236
209
  //# sourceMappingURL=metroPlugin.mjs.map
@@ -1 +1 @@
1
- {"version":3,"names":["existsSync","readFile","isAbsolute","relative","resolve","launchEditor","createDebugger","createMessageSocket","checkAndClearMetroCacheFromVite","projectImport","getMetroConfigFromViteConfig","patchMetroServerWithViteConfigAndMetroPluginOptions","debug","metroPlugin","options","globalThis","name","configureServer","server","projectRoot","config","root","shouldLetViteServe","url","pathname","URL","split","startsWith","endsWith","decodedPathname","decodeURIComponent","filePath","slice","relativePath","isInsideRoot","metroReady","middleware","metroServer","hmrServer","websocketEndpoints","rnDevtoolsMiddleware","metroPromise","metroPromiseResolvers","Promise","reject","resolve2","startMetro","metroStartTime","Date","now","logger","default","Metro","MetroHmrServer","createWebsocketServer","createDevMiddleware","metroResult","createConnectMiddleware","watch","getBundler","getCreateModuleId","reactNativeDevToolsUrl","host","port","devMiddleware","serverBaseUrl","console","unstable_experiments","enableStandaloneFuseboxShell","process","env","NODE_ENV","websocketServer","httpServer","on","request","socket","head","headers","endpoint","handleUpgrade","ws","emit","middlewares","use","metroElapsed","err","isLazyStartup","startup","metroStarting","ensureMetroStarted","catch","listening","waitForServer","setTimeout","req","res","next","isNativeRequest","includes","statusCode","end","VITE_METRO_DEBUG_BUNDLE","content","setHeader","method","body","chunk","toString","frame","JSON","parse","file","e","error"],"sources":["../../../src/plugins/metroPlugin.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"metroPlugin.js","names":[],"sources":["esm/plugins/metroPlugin.js"],"sourcesContent":["import { existsSync } from \"node:fs\";\nimport { readFile } from \"node:fs/promises\";\nimport { isAbsolute, relative, resolve } from \"node:path\";\nimport launchEditor from \"launch-editor\";\nimport { createDebugger } from \"@vxrn/debug\";\nimport { createMessageSocket } from \"@vxrn/utils\";\nimport { checkAndClearMetroCacheFromVite } from \"../utils/metroCacheManager\";\nimport { projectImport } from \"../utils/projectImport\";\nimport { getMetroConfigFromViteConfig } from \"../metro-config/getMetroConfigFromViteConfig\";\nimport { patchMetroServerWithViteConfigAndMetroPluginOptions } from \"../metro-config/patchMetroServerWithViteConfigAndMetroPluginOptions\";\nconst { debug } = createDebugger(\"vite-plugin-metro\");\nfunction metroPlugin(options = {}) {\n globalThis[\"__viteMetroPluginOptions__\"] = options;\n return {\n name: \"metro\",\n // configResolved(config) {\n // projectRoot = config.root\n // },\n configureServer(server) {\n const projectRoot = resolve(server.config.root);\n const shouldLetViteServe = (url) => {\n if (!url) return false;\n let pathname = \"\";\n try {\n pathname = new URL(url, \"http://localhost\").pathname;\n } catch {\n pathname = url.split(\"?\")[0] ?? \"\";\n }\n if (!pathname.startsWith(\"/assets/\")) return false;\n if (pathname.endsWith(\"_vxrn_loader.js\")) return true;\n let decodedPathname = pathname;\n try {\n decodedPathname = decodeURIComponent(pathname);\n } catch {\n }\n const filePath = resolve(projectRoot, decodedPathname.slice(1));\n const relativePath = relative(projectRoot, filePath);\n const isInsideRoot = relativePath !== \"\" && !relativePath.startsWith(\"..\") && !isAbsolute(relativePath);\n return isInsideRoot && existsSync(filePath);\n };\n let metroReady = false;\n let middleware;\n let metroServer;\n let hmrServer;\n let websocketEndpoints;\n let rnDevtoolsMiddleware;\n let metroPromise;\n let metroPromiseResolvers;\n metroPromise = new Promise((resolve2, reject) => {\n metroPromiseResolvers = { resolve: resolve2, reject };\n });\n const startMetro = async () => {\n const metroStartTime = Date.now();\n try {\n checkAndClearMetroCacheFromVite(server, server.config.logger);\n const { default: Metro } = await projectImport(projectRoot, \"metro\");\n const { default: MetroHmrServer } = await projectImport(projectRoot, \"metro/private/HmrServer\");\n const { default: createWebsocketServer } = await projectImport(projectRoot, \"metro/private/lib/createWebsocketServer\");\n const { createDevMiddleware } = await projectImport(projectRoot, \"@react-native/dev-middleware\");\n const config = await getMetroConfigFromViteConfig(server.config, options);\n const metroResult = await Metro.createConnectMiddleware(config, {\n // Force enable file watching, even on CI.\n // This is needed for HMR tests to work on CI.\n watch: true\n });\n middleware = metroResult.middleware;\n metroServer = metroResult.metroServer;\n patchMetroServerWithViteConfigAndMetroPluginOptions(\n metroServer,\n server.config,\n options\n );\n hmrServer = new MetroHmrServer(\n metroServer.getBundler(),\n metroServer.getCreateModuleId(),\n config\n );\n const reactNativeDevToolsUrl = `http://${typeof server.config.server.host === \"boolean\" ? \"localhost\" : server.config.server.host}:${server.config.server.port}`;\n const devMiddleware = createDevMiddleware({\n serverBaseUrl: reactNativeDevToolsUrl,\n logger: console,\n unstable_experiments: {\n // rn 0.86 turns this on by default and prepares the standalone debugger\n // shell eagerly while building the middleware. its tool launcher throws\n // outright under NODE_ENV=test rather than spawn a gui, which would take\n // the whole dev server down on boot for anyone running tests against it.\n enableStandaloneFuseboxShell: process.env.NODE_ENV !== \"test\"\n }\n });\n rnDevtoolsMiddleware = devMiddleware.middleware;\n websocketEndpoints = {\n \"/hot\": createWebsocketServer({\n websocketServer: hmrServer\n }),\n // metro parity: the packager message socket (metro serves /message via\n // @react-native-community/cli-server-api). leaving the upgrade unanswered\n // dangles the socket and chromium queues every later websocket handshake\n // to the same host:port behind it (blocking e.g. zero /sync in sootsim).\n \"/message\": createMessageSocket(),\n ...devMiddleware.websocketEndpoints\n };\n server.httpServer?.on(\"upgrade\", (request, socket, head) => {\n const pathname = new URL(request.url, `http://${request.headers.host}`).pathname;\n const endpoint = websocketEndpoints[pathname];\n if (endpoint) {\n endpoint.handleUpgrade(request, socket, head, (ws) => {\n endpoint.emit(\"connection\", ws, request);\n });\n }\n });\n server.middlewares.use(rnDevtoolsMiddleware);\n metroReady = true;\n const metroElapsed = Date.now() - metroStartTime;\n debug?.(`Metro bundler ready (${metroElapsed}ms)`);\n metroPromiseResolvers.resolve();\n } catch (err) {\n debug?.(`Error during Metro initialization: ${err}`);\n metroPromiseResolvers.reject(err);\n throw err;\n }\n };\n const isLazyStartup = options.startup === \"lazy\";\n let metroStarting = false;\n const ensureMetroStarted = () => {\n if (metroStarting || metroReady) return;\n metroStarting = true;\n debug?.(\"Starting Metro on-demand (lazy startup)\");\n startMetro().catch((err) => {\n debug?.(`Failed to start Metro: ${err}`);\n });\n };\n if (!isLazyStartup) {\n if (server.httpServer) {\n if (server.httpServer.listening) {\n startMetro().catch((err) => {\n debug?.(`Failed to start Metro: ${err}`);\n });\n } else {\n server.httpServer.on(\"listening\", () => {\n startMetro().catch((err) => {\n debug?.(`Failed to start Metro: ${err}`);\n });\n });\n }\n } else {\n const waitForServer = () => {\n if (server.httpServer) {\n if (server.httpServer.listening) {\n startMetro().catch((err) => {\n debug?.(`Failed to start Metro: ${err}`);\n });\n } else {\n server.httpServer.on(\"listening\", () => {\n startMetro().catch((err) => {\n debug?.(`Failed to start Metro: ${err}`);\n });\n });\n }\n } else {\n setTimeout(waitForServer, 10);\n }\n };\n waitForServer();\n }\n } else {\n debug?.(\"Metro lazy startup enabled - will start on first native request\");\n }\n server.middlewares.use(async (req, res, next) => {\n const isNativeRequest = req.headers[\"user-agent\"]?.includes(\"CFNetwork/\") || req.headers[\"user-agent\"]?.includes(\"okhttp/\");\n if (isLazyStartup && !metroReady) {\n if (req.url?.includes(\".bundle\") || req.url === \"/status\" && isNativeRequest) {\n ensureMetroStarted();\n }\n }\n if (req.url === \"/status\" && isNativeRequest) {\n res.statusCode = 200;\n res.end(\"packager-status:running\");\n return;\n }\n if (req.url?.includes(\".bundle\") && !metroReady) {\n await metroPromise;\n }\n if (middleware) {\n if (shouldLetViteServe(req.url)) {\n return next();\n }\n try {\n if (req.url?.includes(\".bundle\")) {\n const VITE_METRO_DEBUG_BUNDLE = process.env.VITE_METRO_DEBUG_BUNDLE;\n if (VITE_METRO_DEBUG_BUNDLE) {\n if (existsSync(VITE_METRO_DEBUG_BUNDLE)) {\n debug?.(`serving debug bundle from ${VITE_METRO_DEBUG_BUNDLE}`);\n const content = await readFile(VITE_METRO_DEBUG_BUNDLE, \"utf-8\");\n res.setHeader(\"Content-Type\", \"application/javascript\");\n res.end(content);\n return;\n }\n }\n }\n if (req.url === \"/open-stack-frame\" && req.method === \"POST\") {\n let body = \"\";\n req.on(\"data\", (chunk) => {\n body += chunk.toString();\n });\n req.on(\"end\", () => {\n try {\n const frame = JSON.parse(body);\n launchEditor(frame.file);\n res.statusCode = 200;\n res.end(\"Stack frame opened in editor\");\n } catch (e) {\n debug?.(`Failed to parse stack frame: ${e}`);\n res.statusCode = 400;\n return res.end(\"Invalid stack frame JSON\");\n }\n });\n return;\n }\n await middleware(req, res, next);\n } catch (error) {\n debug?.(`Metro middleware error: ${error}`);\n next();\n }\n } else {\n next();\n }\n });\n }\n };\n}\nexport {\n metroPlugin\n};\n//# sourceMappingURL=metroPlugin.js.map\n"],"mappings":"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"}