@vxrn/vite-plugin-metro 2.0.0-beta.33.1 → 2.0.0-beta.46.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 (290) 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 +55 -57
  6. package/dist/cjs/env/platformEnv.native.cjs +93 -0
  7. package/dist/cjs/env/platformEnv.native.js +72 -75
  8. package/dist/cjs/env/platformEnv.native.js.map +1 -1
  9. package/dist/cjs/index.cjs +22 -24
  10. package/dist/cjs/index.native.cjs +41 -0
  11. package/dist/cjs/index.native.js +22 -23
  12. package/dist/cjs/index.native.js.map +1 -1
  13. package/dist/cjs/metro-config/getMetroBabelConfigFromViteConfig.cjs +48 -51
  14. package/dist/cjs/metro-config/getMetroBabelConfigFromViteConfig.native.cjs +101 -0
  15. package/dist/cjs/metro-config/getMetroBabelConfigFromViteConfig.native.js +88 -94
  16. package/dist/cjs/metro-config/getMetroBabelConfigFromViteConfig.native.js.map +1 -1
  17. package/dist/cjs/metro-config/getMetroConfigFromViteConfig.cjs +249 -256
  18. package/dist/cjs/metro-config/getMetroConfigFromViteConfig.native.cjs +295 -0
  19. package/dist/cjs/metro-config/getMetroConfigFromViteConfig.native.js +260 -266
  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/expoManifestRequestHandlerPlugin.cjs +44 -56
  30. package/dist/cjs/plugins/expoManifestRequestHandlerPlugin.native.cjs +62 -0
  31. package/dist/cjs/plugins/expoManifestRequestHandlerPlugin.native.js +45 -63
  32. package/dist/cjs/plugins/expoManifestRequestHandlerPlugin.native.js.map +1 -1
  33. package/dist/cjs/plugins/metroPlugin.cjs +210 -248
  34. package/dist/cjs/plugins/metroPlugin.native.cjs +242 -0
  35. package/dist/cjs/plugins/metroPlugin.native.js +216 -253
  36. package/dist/cjs/plugins/metroPlugin.native.js.map +1 -1
  37. package/dist/cjs/rn-commands/bundle/assetCatalogIOS.cjs +56 -65
  38. package/dist/cjs/rn-commands/bundle/assetCatalogIOS.native.cjs +121 -0
  39. package/dist/cjs/rn-commands/bundle/assetCatalogIOS.native.js +94 -106
  40. package/dist/cjs/rn-commands/bundle/assetCatalogIOS.native.js.map +1 -1
  41. package/dist/cjs/rn-commands/bundle/assetPathUtils.cjs +51 -55
  42. package/dist/cjs/rn-commands/bundle/assetPathUtils.native.cjs +72 -0
  43. package/dist/cjs/rn-commands/bundle/assetPathUtils.native.js +51 -54
  44. package/dist/cjs/rn-commands/bundle/assetPathUtils.native.js.map +1 -1
  45. package/dist/cjs/rn-commands/bundle/buildBundle.cjs +37 -46
  46. package/dist/cjs/rn-commands/bundle/buildBundle.native.cjs +57 -0
  47. package/dist/cjs/rn-commands/bundle/buildBundle.native.js +39 -47
  48. package/dist/cjs/rn-commands/bundle/buildBundle.native.js.map +1 -1
  49. package/dist/cjs/rn-commands/bundle/buildBundleWithConfig.cjs +57 -68
  50. package/dist/cjs/rn-commands/bundle/buildBundleWithConfig.native.cjs +81 -0
  51. package/dist/cjs/rn-commands/bundle/buildBundleWithConfig.native.js +59 -70
  52. package/dist/cjs/rn-commands/bundle/buildBundleWithConfig.native.js.map +1 -1
  53. package/dist/cjs/rn-commands/bundle/filterPlatformAssetScales.cjs +37 -39
  54. package/dist/cjs/rn-commands/bundle/filterPlatformAssetScales.native.cjs +70 -0
  55. package/dist/cjs/rn-commands/bundle/filterPlatformAssetScales.native.js +56 -59
  56. package/dist/cjs/rn-commands/bundle/filterPlatformAssetScales.native.js.map +1 -1
  57. package/dist/cjs/rn-commands/bundle/getAssetDestPathAndroid.cjs +20 -29
  58. package/dist/cjs/rn-commands/bundle/getAssetDestPathAndroid.native.cjs +39 -0
  59. package/dist/cjs/rn-commands/bundle/getAssetDestPathAndroid.native.js +20 -28
  60. package/dist/cjs/rn-commands/bundle/getAssetDestPathAndroid.native.js.map +1 -1
  61. package/dist/cjs/rn-commands/bundle/getAssetDestPathIOS.cjs +20 -33
  62. package/dist/cjs/rn-commands/bundle/getAssetDestPathIOS.native.cjs +38 -0
  63. package/dist/cjs/rn-commands/bundle/getAssetDestPathIOS.native.js +20 -32
  64. package/dist/cjs/rn-commands/bundle/getAssetDestPathIOS.native.js.map +1 -1
  65. package/dist/cjs/rn-commands/bundle/getBuildBundleFn.cjs +23 -32
  66. package/dist/cjs/rn-commands/bundle/getBuildBundleFn.native.cjs +38 -0
  67. package/dist/cjs/rn-commands/bundle/getBuildBundleFn.native.js +23 -31
  68. package/dist/cjs/rn-commands/bundle/getBuildBundleFn.native.js.map +1 -1
  69. package/dist/cjs/rn-commands/bundle/index.cjs +15 -17
  70. package/dist/cjs/rn-commands/bundle/index.native.cjs +30 -0
  71. package/dist/cjs/rn-commands/bundle/index.native.js +15 -16
  72. package/dist/cjs/rn-commands/bundle/index.native.js.map +1 -1
  73. package/dist/cjs/rn-commands/bundle/saveAssets.cjs +85 -96
  74. package/dist/cjs/rn-commands/bundle/saveAssets.native.cjs +129 -0
  75. package/dist/cjs/rn-commands/bundle/saveAssets.native.js +102 -114
  76. package/dist/cjs/rn-commands/bundle/saveAssets.native.js.map +1 -1
  77. package/dist/cjs/rn-commands/bundle/types.cjs +9 -11
  78. package/dist/cjs/rn-commands/bundle/types.native.cjs +18 -0
  79. package/dist/cjs/rn-commands/bundle/types.native.js +9 -10
  80. package/dist/cjs/rn-commands/bundle/types.native.js.map +1 -1
  81. package/dist/cjs/rn-commands/index.cjs +17 -26
  82. package/dist/cjs/rn-commands/index.native.cjs +32 -0
  83. package/dist/cjs/rn-commands/index.native.js +17 -25
  84. package/dist/cjs/rn-commands/index.native.js.map +1 -1
  85. package/dist/cjs/transformer/babel-core.cjs +16 -18
  86. package/dist/cjs/transformer/babel-core.native.cjs +30 -0
  87. package/dist/cjs/transformer/babel-core.native.js +16 -17
  88. package/dist/cjs/transformer/babel-core.native.js.map +1 -1
  89. package/dist/cjs/transformer/babel-transformer.cjs +101 -152
  90. package/dist/cjs/transformer/babel-transformer.native.cjs +131 -0
  91. package/dist/cjs/transformer/babel-transformer.native.js +106 -159
  92. package/dist/cjs/transformer/babel-transformer.native.js.map +1 -1
  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 +1442 -1480
  98. package/dist/cjs/transformer/metroNativeWorker.native.cjs +2536 -0
  99. package/dist/cjs/transformer/metroNativeWorker.native.js +2416 -2552
  100. package/dist/cjs/transformer/metroNativeWorker.native.js.map +1 -1
  101. package/dist/cjs/transformer/transformSync.cjs +47 -63
  102. package/dist/cjs/transformer/transformSync.native.cjs +74 -0
  103. package/dist/cjs/transformer/transformSync.native.js +49 -64
  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/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.cjs +24 -28
  122. package/dist/cjs/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.native.cjs +37 -0
  123. package/dist/cjs/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.native.js +24 -27
  124. package/dist/cjs/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.native.js.map +1 -1
  125. package/dist/cjs/utils/projectImport.cjs +40 -51
  126. package/dist/cjs/utils/projectImport.native.cjs +64 -0
  127. package/dist/cjs/utils/projectImport.native.js +41 -58
  128. package/dist/cjs/utils/projectImport.native.js.map +1 -1
  129. package/dist/esm/babel-plugins/import-meta-env-plugin.mjs +72 -86
  130. package/dist/esm/babel-plugins/import-meta-env-plugin.mjs.map +1 -1
  131. package/dist/esm/babel-plugins/import-meta-env-plugin.native.js +78 -92
  132. package/dist/esm/babel-plugins/import-meta-env-plugin.native.js.map +1 -1
  133. package/dist/esm/env/platformEnv.mjs +40 -39
  134. package/dist/esm/env/platformEnv.mjs.map +1 -1
  135. package/dist/esm/env/platformEnv.native.js +57 -58
  136. package/dist/esm/env/platformEnv.native.js.map +1 -1
  137. package/dist/esm/index.js +3 -3
  138. package/dist/esm/index.mjs +3 -3
  139. package/dist/esm/index.native.js +3 -3
  140. package/dist/esm/metro-config/getMetroBabelConfigFromViteConfig.mjs +35 -33
  141. package/dist/esm/metro-config/getMetroBabelConfigFromViteConfig.mjs.map +1 -1
  142. package/dist/esm/metro-config/getMetroBabelConfigFromViteConfig.native.js +75 -77
  143. package/dist/esm/metro-config/getMetroBabelConfigFromViteConfig.native.js.map +1 -1
  144. package/dist/esm/metro-config/getMetroConfigFromViteConfig.mjs +233 -231
  145. package/dist/esm/metro-config/getMetroConfigFromViteConfig.mjs.map +1 -1
  146. package/dist/esm/metro-config/getMetroConfigFromViteConfig.native.js +244 -242
  147. package/dist/esm/metro-config/getMetroConfigFromViteConfig.native.js.map +1 -1
  148. package/dist/esm/metro-config/patchMetroServerWithViteConfigAndMetroPluginOptions.mjs +26 -26
  149. package/dist/esm/metro-config/patchMetroServerWithViteConfigAndMetroPluginOptions.mjs.map +1 -1
  150. package/dist/esm/metro-config/patchMetroServerWithViteConfigAndMetroPluginOptions.native.js +27 -27
  151. package/dist/esm/metro-config/patchMetroServerWithViteConfigAndMetroPluginOptions.native.js.map +1 -1
  152. package/dist/esm/metro-config/types.mjs +0 -2
  153. package/dist/esm/metro-config/types.native.js +0 -2
  154. package/dist/esm/plugins/expoManifestRequestHandlerPlugin.mjs +32 -38
  155. package/dist/esm/plugins/expoManifestRequestHandlerPlugin.mjs.map +1 -1
  156. package/dist/esm/plugins/expoManifestRequestHandlerPlugin.native.js +33 -46
  157. package/dist/esm/plugins/expoManifestRequestHandlerPlugin.native.js.map +1 -1
  158. package/dist/esm/plugins/metroPlugin.mjs +195 -222
  159. package/dist/esm/plugins/metroPlugin.mjs.map +1 -1
  160. package/dist/esm/plugins/metroPlugin.native.js +201 -228
  161. package/dist/esm/plugins/metroPlugin.native.js.map +1 -1
  162. package/dist/esm/rn-commands/bundle/assetCatalogIOS.mjs +38 -38
  163. package/dist/esm/rn-commands/bundle/assetCatalogIOS.mjs.map +1 -1
  164. package/dist/esm/rn-commands/bundle/assetCatalogIOS.native.js +76 -80
  165. package/dist/esm/rn-commands/bundle/assetCatalogIOS.native.js.map +1 -1
  166. package/dist/esm/rn-commands/bundle/assetPathUtils.mjs +38 -37
  167. package/dist/esm/rn-commands/bundle/assetPathUtils.mjs.map +1 -1
  168. package/dist/esm/rn-commands/bundle/assetPathUtils.native.js +38 -37
  169. package/dist/esm/rn-commands/bundle/assetPathUtils.native.js.map +1 -1
  170. package/dist/esm/rn-commands/bundle/buildBundle.mjs +25 -28
  171. package/dist/esm/rn-commands/bundle/buildBundle.mjs.map +1 -1
  172. package/dist/esm/rn-commands/bundle/buildBundle.native.js +27 -30
  173. package/dist/esm/rn-commands/bundle/buildBundle.native.js.map +1 -1
  174. package/dist/esm/rn-commands/bundle/buildBundleWithConfig.mjs +43 -43
  175. package/dist/esm/rn-commands/bundle/buildBundleWithConfig.mjs.map +1 -1
  176. package/dist/esm/rn-commands/bundle/buildBundleWithConfig.native.js +45 -46
  177. package/dist/esm/rn-commands/bundle/buildBundleWithConfig.native.js.map +1 -1
  178. package/dist/esm/rn-commands/bundle/filterPlatformAssetScales.mjs +24 -21
  179. package/dist/esm/rn-commands/bundle/filterPlatformAssetScales.mjs.map +1 -1
  180. package/dist/esm/rn-commands/bundle/filterPlatformAssetScales.native.js +43 -42
  181. package/dist/esm/rn-commands/bundle/filterPlatformAssetScales.native.js.map +1 -1
  182. package/dist/esm/rn-commands/bundle/getAssetDestPathAndroid.mjs +5 -3
  183. package/dist/esm/rn-commands/bundle/getAssetDestPathAndroid.mjs.map +1 -1
  184. package/dist/esm/rn-commands/bundle/getAssetDestPathAndroid.native.js +5 -3
  185. package/dist/esm/rn-commands/bundle/getAssetDestPathAndroid.native.js.map +1 -1
  186. package/dist/esm/rn-commands/bundle/getAssetDestPathIOS.mjs +5 -7
  187. package/dist/esm/rn-commands/bundle/getAssetDestPathIOS.mjs.map +1 -1
  188. package/dist/esm/rn-commands/bundle/getAssetDestPathIOS.native.js +5 -7
  189. package/dist/esm/rn-commands/bundle/getAssetDestPathIOS.native.js.map +1 -1
  190. package/dist/esm/rn-commands/bundle/getBuildBundleFn.mjs +11 -14
  191. package/dist/esm/rn-commands/bundle/getBuildBundleFn.mjs.map +1 -1
  192. package/dist/esm/rn-commands/bundle/getBuildBundleFn.native.js +11 -14
  193. package/dist/esm/rn-commands/bundle/getBuildBundleFn.native.js.map +1 -1
  194. package/dist/esm/rn-commands/bundle/index.mjs +2 -2
  195. package/dist/esm/rn-commands/bundle/index.native.js +2 -2
  196. package/dist/esm/rn-commands/bundle/saveAssets.mjs +70 -70
  197. package/dist/esm/rn-commands/bundle/saveAssets.mjs.map +1 -1
  198. package/dist/esm/rn-commands/bundle/saveAssets.native.js +87 -89
  199. package/dist/esm/rn-commands/bundle/saveAssets.native.js.map +1 -1
  200. package/dist/esm/rn-commands/bundle/types.mjs +0 -2
  201. package/dist/esm/rn-commands/bundle/types.native.js +0 -2
  202. package/dist/esm/rn-commands/index.mjs +2 -2
  203. package/dist/esm/rn-commands/index.native.js +2 -2
  204. package/dist/esm/transformer/babel-core.mjs +2 -2
  205. package/dist/esm/transformer/babel-core.native.js +2 -2
  206. package/dist/esm/transformer/babel-transformer.mjs +108 -144
  207. package/dist/esm/transformer/babel-transformer.mjs.map +1 -1
  208. package/dist/esm/transformer/babel-transformer.native.js +114 -155
  209. package/dist/esm/transformer/babel-transformer.native.js.map +1 -1
  210. package/dist/esm/transformer/loadBabelConfig.mjs +29 -23
  211. package/dist/esm/transformer/loadBabelConfig.mjs.map +1 -1
  212. package/dist/esm/transformer/loadBabelConfig.native.js +33 -27
  213. package/dist/esm/transformer/loadBabelConfig.native.js.map +1 -1
  214. package/dist/esm/transformer/metroNativeWorker.mjs +1405 -1434
  215. package/dist/esm/transformer/metroNativeWorker.mjs.map +1 -1
  216. package/dist/esm/transformer/metroNativeWorker.native.js +2379 -2507
  217. package/dist/esm/transformer/metroNativeWorker.native.js.map +1 -1
  218. package/dist/esm/transformer/transformSync.mjs +32 -37
  219. package/dist/esm/transformer/transformSync.mjs.map +1 -1
  220. package/dist/esm/transformer/transformSync.native.js +34 -39
  221. package/dist/esm/transformer/transformSync.native.js.map +1 -1
  222. package/dist/esm/transformer/types.mjs +0 -2
  223. package/dist/esm/transformer/types.native.js +0 -2
  224. package/dist/esm/utils/exit.mjs +123 -112
  225. package/dist/esm/utils/exit.mjs.map +1 -1
  226. package/dist/esm/utils/exit.native.js +210 -215
  227. package/dist/esm/utils/exit.native.js.map +1 -1
  228. package/dist/esm/utils/getTerminalReporter.mjs +20 -21
  229. package/dist/esm/utils/getTerminalReporter.mjs.map +1 -1
  230. package/dist/esm/utils/getTerminalReporter.native.js +23 -24
  231. package/dist/esm/utils/getTerminalReporter.native.js.map +1 -1
  232. package/dist/esm/utils/metroCacheManager.mjs +73 -82
  233. package/dist/esm/utils/metroCacheManager.mjs.map +1 -1
  234. package/dist/esm/utils/metroCacheManager.native.js +91 -102
  235. package/dist/esm/utils/metroCacheManager.native.js.map +1 -1
  236. package/dist/esm/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.mjs +11 -10
  237. package/dist/esm/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.mjs.map +1 -1
  238. package/dist/esm/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.native.js +11 -10
  239. package/dist/esm/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.native.js.map +1 -1
  240. package/dist/esm/utils/projectImport.mjs +23 -25
  241. package/dist/esm/utils/projectImport.mjs.map +1 -1
  242. package/dist/esm/utils/projectImport.native.js +24 -33
  243. package/dist/esm/utils/projectImport.native.js.map +1 -1
  244. package/package.json +17 -18
  245. package/src/metro-config/getMetroConfigFromViteConfig.ts +46 -10
  246. package/src/transformer/loadBabelConfig.ts +2 -0
  247. package/src/transformer/metroNativeWorker.test.ts +267 -35
  248. package/src/transformer/metroNativeWorker.ts +3 -11
  249. package/types/babel-plugins/import-meta-env-plugin.d.ts.map +1 -1
  250. package/types/metro-config/getMetroConfigFromViteConfig.d.ts.map +1 -1
  251. package/types/rn-commands/bundle/assetPathUtils.d.ts.map +1 -1
  252. package/types/rn-commands/bundle/filterPlatformAssetScales.d.ts.map +1 -1
  253. package/types/rn-commands/bundle/getAssetDestPathAndroid.d.ts.map +1 -1
  254. package/types/rn-commands/bundle/getAssetDestPathIOS.d.ts.map +1 -1
  255. package/types/rn-commands/bundle/saveAssets.d.ts.map +1 -1
  256. package/types/transformer/loadBabelConfig.d.ts.map +1 -1
  257. package/types/transformer/metroNativeWorker.d.ts.map +1 -1
  258. package/dist/cjs/transformer/metroNativeWorker.test.cjs +0 -897
  259. package/dist/cjs/transformer/metroNativeWorker.test.native.js +0 -1010
  260. package/dist/cjs/transformer/metroNativeWorker.test.native.js.map +0 -1
  261. package/dist/cjs/transformer/transformSync.test.cjs +0 -36
  262. package/dist/cjs/transformer/transformSync.test.native.js +0 -49
  263. package/dist/cjs/transformer/transformSync.test.native.js.map +0 -1
  264. package/dist/esm/index.js.map +0 -1
  265. package/dist/esm/index.mjs.map +0 -1
  266. package/dist/esm/index.native.js.map +0 -1
  267. package/dist/esm/metro-config/types.mjs.map +0 -1
  268. package/dist/esm/metro-config/types.native.js.map +0 -1
  269. package/dist/esm/rn-commands/bundle/index.mjs.map +0 -1
  270. package/dist/esm/rn-commands/bundle/index.native.js.map +0 -1
  271. package/dist/esm/rn-commands/bundle/types.mjs.map +0 -1
  272. package/dist/esm/rn-commands/bundle/types.native.js.map +0 -1
  273. package/dist/esm/rn-commands/index.mjs.map +0 -1
  274. package/dist/esm/rn-commands/index.native.js.map +0 -1
  275. package/dist/esm/transformer/babel-core.mjs.map +0 -1
  276. package/dist/esm/transformer/babel-core.native.js.map +0 -1
  277. package/dist/esm/transformer/metroNativeWorker.test.mjs +0 -861
  278. package/dist/esm/transformer/metroNativeWorker.test.mjs.map +0 -1
  279. package/dist/esm/transformer/metroNativeWorker.test.native.js +0 -972
  280. package/dist/esm/transformer/metroNativeWorker.test.native.js.map +0 -1
  281. package/dist/esm/transformer/transformSync.test.mjs +0 -37
  282. package/dist/esm/transformer/transformSync.test.mjs.map +0 -1
  283. package/dist/esm/transformer/transformSync.test.native.js +0 -47
  284. package/dist/esm/transformer/transformSync.test.native.js.map +0 -1
  285. package/dist/esm/transformer/types.mjs.map +0 -1
  286. package/dist/esm/transformer/types.native.js.map +0 -1
  287. package/types/transformer/metroNativeWorker.test.d.ts +0 -2
  288. package/types/transformer/metroNativeWorker.test.d.ts.map +0 -1
  289. package/types/transformer/transformSync.test.d.ts +0 -2
  290. package/types/transformer/transformSync.test.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":"AAAA,SAASA,UAAA,QAAkB;AAC3B,SAASC,QAAA,QAAgB;AACzB,SAASC,UAAA,EAAYC,QAAA,EAAUC,OAAA,QAAe;AAE9C,OAAOC,YAAA,MAAkB;AACzB,SAASC,cAAA,QAAsB;AAC/B,SAASC,mBAAA,QAA2B;AACpC,SAASC,+BAAA,QAAuC;AAchD,SAASC,aAAA,QAAqB;AAE9B,SAASC,4BAAA,QAAoC;AAC7C,SAASC,mDAAA,QAA2D;AAfpE,MAAM;EAAEC;AAAM,IAAIN,cAAA,CAAe,mBAAmB;AA2F7C,SAASO,YAAYC,OAAA,GAA8B,CAAC,GAAiB;EAO1EC,UAAA,CAAW,4BAA4B,IAAID,OAAA;EAE3C,OAAO;IACLE,IAAA,EAAM;IAAA;IAAA;IAAA;IAKNC,gBAAgBC,MAAA,EAAQ;MACtB,MAAMC,WAAA,GAAcf,OAAA,CAAQc,MAAA,CAAOE,MAAA,CAAOC,IAAI;MAE9C,MAAMC,kBAAA,GAAsBC,GAAA,IAA4B;QACtD,IAAI,CAACA,GAAA,EAAK,OAAO;QAEjB,IAAIC,QAAA,GAAW;QACf,IAAI;UACFA,QAAA,GAAW,IAAIC,GAAA,CAAIF,GAAA,EAAK,kBAAkB,EAAEC,QAAA;QAC9C,QAAQ;UACNA,QAAA,GAAWD,GAAA,CAAIG,KAAA,CAAM,GAAG,EAAE,CAAC,KAAK;QAClC;QAEA,IAAI,CAACF,QAAA,CAASG,UAAA,CAAW,UAAU,GAAG,OAAO;QAC7C,IAAIH,QAAA,CAASI,QAAA,CAAS,iBAAiB,GAAG,OAAO;QAEjD,IAAIC,eAAA,GAAkBL,QAAA;QACtB,IAAI;UACFK,eAAA,GAAkBC,kBAAA,CAAmBN,QAAQ;QAC/C,QAAQ,CAAC;QAET,MAAMO,QAAA,GAAW3B,OAAA,CAAQe,WAAA,EAAaU,eAAA,CAAgBG,KAAA,CAAM,CAAC,CAAC;QAC9D,MAAMC,YAAA,GAAe9B,QAAA,CAASgB,WAAA,EAAaY,QAAQ;QACnD,MAAMG,YAAA,GACJD,YAAA,KAAiB,MACjB,CAACA,YAAA,CAAaN,UAAA,CAAW,IAAI,KAC7B,CAACzB,UAAA,CAAW+B,YAAY;QAE1B,OAAOC,YAAA,IAAgBlC,UAAA,CAAW+B,QAAQ;MAC5C;MAEA,IAAII,UAAA,GAAa;MAGjB,IAAIC,UAAA;MAGJ,IAAIC,WAAA;MAGJ,IAAIC,SAAA;MACJ,IAAIC,kBAAA;MACJ,IAAIC,oBAAA;MAEJ,IAAIC,YAAA;MACJ,IAAIC,qBAAA;MAIJD,YAAA,GAAe,IAAIE,OAAA,CAAQ,CAACvC,QAAA,EAASwC,MAAA,KAAW;QAC9CF,qBAAA,GAAwB;UAAEtC,OAAA,EAAAyC,QAAA;UAASD;QAAO;MAC5C,CAAC;MAED,MAAME,UAAA,GAAa,MAAAA,CAAA,KAAY;QAC7B,MAAMC,cAAA,GAAiBC,IAAA,CAAKC,GAAA,CAAI;QAChC,IAAI;UAGFzC,+BAAA,CAAgCU,MAAA,EAAQA,MAAA,CAAOE,MAAA,CAAO8B,MAAM;UAG5D,MAAM;YAAEC,OAAA,EAASC;UAAM,IAAI,MAAM3C,aAAA,CAE9BU,WAAA,EAAa,OAAO;UACvB,MAAM;YAAEgC,OAAA,EAASE;UAAe,IAAI,MAAM5C,aAAA,CAEvCU,WAAA,EAAa,yBAAyB;UACzC,MAAM;YAAEgC,OAAA,EAASG;UAAsB,IAAI,MAAM7C,aAAA,CAE9CU,WAAA,EAAa,yCAAyC;UACzD,MAAM;YAAEoC;UAAoB,IAAI,MAAM9C,aAAA,CAEnCU,WAAA,EAAa,8BAA8B;UAE9C,MAAMC,MAAA,GAAS,MAAMV,4BAAA,CAA6BQ,MAAA,CAAOE,MAAA,EAAQN,OAAO;UAExE,MAAM0C,WAAA,GAAc,MAAMJ,KAAA,CAAMK,uBAAA,CAAwBrC,MAAA,EAAQ;YAAA;YAAA;YAG9DsC,KAAA,EAAO;UACT,CAAC;UAEDtB,UAAA,GAAaoB,WAAA,CAAYpB,UAAA;UACzBC,WAAA,GAAcmB,WAAA,CAAYnB,WAAA;UAE1B1B,mDAAA,CACE0B,WAAA,EACAnB,MAAA,CAAOE,MAAA,EACPN,OACF;UAEAwB,SAAA,GAAY,IAAIe,cAAA,CACdhB,WAAA,CAAYsB,UAAA,CAAW,GACvBtB,WAAA,CAAYuB,iBAAA,CAAkB,GAC9BxC,MACF;UAEA,MAAMyC,sBAAA,GAAyB,UAAU,OAAO3C,MAAA,CAAOE,MAAA,CAAOF,MAAA,CAAO4C,IAAA,KAAS,YAAY,cAAc5C,MAAA,CAAOE,MAAA,CAAOF,MAAA,CAAO4C,IAAI,IAAI5C,MAAA,CAAOE,MAAA,CAAOF,MAAA,CAAO6C,IAAI;UAC9J,MAAMC,aAAA,GAAgBT,mBAAA,CAAoB;YACxCU,aAAA,EAAeJ,sBAAA;YACfX,MAAA,EAAQgB,OAAA;YACRC,oBAAA,EAAsB;cAAA;cAAA;cAAA;cAAA;cAKpBC,4BAAA,EAA8BC,OAAA,CAAQC,GAAA,CAAIC,QAAA,KAAa;YACzD;UACF,CAAC;UAED/B,oBAAA,GAAuBwB,aAAA,CAAc5B,UAAA;UACrCG,kBAAA,GAAqB;YACnB,QAAQe,qBAAA,CAAsB;cAC5BkB,eAAA,EAAiBlC;YACnB,CAAC;YAAA;YAAA;YAAA;YAAA;YAKD,YAAY/B,mBAAA,CAAoB;YAChC,GAAGyD,aAAA,CAAczB;UACnB;UAIArB,MAAA,CAAOuD,UAAA,EAAYC,EAAA,CAAG,WAAW,CAACC,OAAA,EAASC,MAAA,EAAQC,IAAA,KAAS;YAC1D,MAAMrD,QAAA,GAAW,IAAIC,GAAA,CAAIkD,OAAA,CAAQpD,GAAA,EAAM,UAAUoD,OAAA,CAAQG,OAAA,CAAQhB,IAAI,EAAE,EACpEtC,QAAA;YAEH,MAAMuD,QAAA,GAAWxC,kBAAA,CAAmBf,QAAQ;YAC5C,IAAIuD,QAAA,EAAU;cACZA,QAAA,CAASC,aAAA,CAAcL,OAAA,EAASC,MAAA,EAAQC,IAAA,EAAOI,EAAA,IAAO;gBACpDF,QAAA,CAASG,IAAA,CAAK,cAAcD,EAAA,EAAIN,OAAO;cACzC,CAAC;YACH;UAEF,CAAC;UAGDzD,MAAA,CAAOiE,WAAA,CAAYC,GAAA,CAAI5C,oBAAoB;UAE3CL,UAAA,GAAa;UACb,MAAMkD,YAAA,GAAerC,IAAA,CAAKC,GAAA,CAAI,IAAIF,cAAA;UAClCnC,KAAA,GAAQ,wBAAwByE,YAAY,KAAK;UACjD3C,qBAAA,CAAsBtC,OAAA,CAAQ;QAChC,SAASkF,GAAA,EAAK;UACZ1E,KAAA,GAAQ,sCAAsC0E,GAAG,EAAE;UACnD5C,qBAAA,CAAsBE,MAAA,CAAO0C,GAAY;UACzC,MAAMA,GAAA;QACR;MACF;MAEA,MAAMC,aAAA,GAAgBzE,OAAA,CAAQ0E,OAAA,KAAY;MAG1C,IAAIC,aAAA,GAAgB;MACpB,MAAMC,kBAAA,GAAqBA,CAAA,KAAM;QAC/B,IAAID,aAAA,IAAiBtD,UAAA,EAAY;QACjCsD,aAAA,GAAgB;QAChB7E,KAAA,GAAQ,yCAAyC;QACjDkC,UAAA,CAAW,EAAE6C,KAAA,CAAOL,GAAA,IAAQ;UAC1B1E,KAAA,GAAQ,0BAA0B0E,GAAG,EAAE;QACzC,CAAC;MACH;MAIA,IAAI,CAACC,aAAA,EAAe;QAClB,IAAIrE,MAAA,CAAOuD,UAAA,EAAY;UACrB,IAAIvD,MAAA,CAAOuD,UAAA,CAAWmB,SAAA,EAAW;YAE/B9C,UAAA,CAAW,EAAE6C,KAAA,CAAOL,GAAA,IAAQ;cAC1B1E,KAAA,GAAQ,0BAA0B0E,GAAG,EAAE;YACzC,CAAC;UACH,OAAO;YACLpE,MAAA,CAAOuD,UAAA,CAAWC,EAAA,CAAG,aAAa,MAAM;cACtC5B,UAAA,CAAW,EAAE6C,KAAA,CAAOL,GAAA,IAAQ;gBAC1B1E,KAAA,GAAQ,0BAA0B0E,GAAG,EAAE;cACzC,CAAC;YACH,CAAC;UACH;QACF,OAAO;UAGL,MAAMO,aAAA,GAAgBA,CAAA,KAAM;YAC1B,IAAI3E,MAAA,CAAOuD,UAAA,EAAY;cACrB,IAAIvD,MAAA,CAAOuD,UAAA,CAAWmB,SAAA,EAAW;gBAC/B9C,UAAA,CAAW,EAAE6C,KAAA,CAAOL,GAAA,IAAQ;kBAC1B1E,KAAA,GAAQ,0BAA0B0E,GAAG,EAAE;gBACzC,CAAC;cACH,OAAO;gBACLpE,MAAA,CAAOuD,UAAA,CAAWC,EAAA,CAAG,aAAa,MAAM;kBACtC5B,UAAA,CAAW,EAAE6C,KAAA,CAAOL,GAAA,IAAQ;oBAC1B1E,KAAA,GAAQ,0BAA0B0E,GAAG,EAAE;kBACzC,CAAC;gBACH,CAAC;cACH;YACF,OAAO;cACLQ,UAAA,CAAWD,aAAA,EAAe,EAAE;YAC9B;UACF;UACAA,aAAA,CAAc;QAChB;MACF,OAAO;QACLjF,KAAA,GAAQ,iEAAiE;MAC3E;MAEAM,MAAA,CAAOiE,WAAA,CAAYC,GAAA,CAAI,OAAOW,GAAA,EAAKC,GAAA,EAAKC,IAAA,KAAS;QAC/C,MAAMC,eAAA,GACJH,GAAA,CAAIjB,OAAA,CAAQ,YAAY,GAAGqB,QAAA,CAAS,YAAY,KAChDJ,GAAA,CAAIjB,OAAA,CAAQ,YAAY,GAAGqB,QAAA,CAAS,SAAS;QAG/C,IAAIZ,aAAA,IAAiB,CAACpD,UAAA,EAAY;UAChC,IACE4D,GAAA,CAAIxE,GAAA,EAAK4E,QAAA,CAAS,SAAS,KAC1BJ,GAAA,CAAIxE,GAAA,KAAQ,aAAa2E,eAAA,EAC1B;YACAR,kBAAA,CAAmB;UACrB;QACF;QAMA,IAAIK,GAAA,CAAIxE,GAAA,KAAQ,aAAa2E,eAAA,EAAiB;UAC5CF,GAAA,CAAII,UAAA,GAAa;UACjBJ,GAAA,CAAIK,GAAA,CAAI,yBAAyB;UACjC;QACF;QAGA,IAAIN,GAAA,CAAIxE,GAAA,EAAK4E,QAAA,CAAS,SAAS,KAAK,CAAChE,UAAA,EAAY;UAC/C,MAAMM,YAAA;QACR;QAGA,IAAIL,UAAA,EAAY;UACd,IAAId,kBAAA,CAAmByE,GAAA,CAAIxE,GAAG,GAAG;YAC/B,OAAO0E,IAAA,CAAK;UACd;UAEA,IAAI;YAEF,IAAIF,GAAA,CAAIxE,GAAA,EAAK4E,QAAA,CAAS,SAAS,GAAG;cAChC,MAAMG,uBAAA,GAA0BjC,OAAA,CAAQC,GAAA,CAAIgC,uBAAA;cAC5C,IAAIA,uBAAA,EAAyB;gBAC3B,IAAItG,UAAA,CAAWsG,uBAAuB,GAAG;kBACvC1F,KAAA,GAAQ,6BAA6B0F,uBAAuB,EAAE;kBAC9D,MAAMC,OAAA,GAAU,MAAMtG,QAAA,CAASqG,uBAAA,EAAyB,OAAO;kBAC/DN,GAAA,CAAIQ,SAAA,CAAU,gBAAgB,wBAAwB;kBACtDR,GAAA,CAAIK,GAAA,CAAIE,OAAO;kBACf;gBACF;cACF;YACF;YAEA,IAAIR,GAAA,CAAIxE,GAAA,KAAQ,uBAAuBwE,GAAA,CAAIU,MAAA,KAAW,QAAQ;cAC5D,IAAIC,IAAA,GAAO;cAEXX,GAAA,CAAIrB,EAAA,CAAG,QAASiC,KAAA,IAAU;gBACxBD,IAAA,IAAQC,KAAA,CAAMC,QAAA,CAAS;cACzB,CAAC;cAEDb,GAAA,CAAIrB,EAAA,CAAG,OAAO,MAAM;gBAClB,IAAI;kBACF,MAAMmC,KAAA,GAAQC,IAAA,CAAKC,KAAA,CAAML,IAAI;kBAG7BrG,YAAA,CAAawG,KAAA,CAAMG,IAAI;kBACvBhB,GAAA,CAAII,UAAA,GAAa;kBACjBJ,GAAA,CAAIK,GAAA,CAAI,8BAA8B;gBACxC,SAASY,CAAA,EAAG;kBACVrG,KAAA,GAAQ,gCAAgCqG,CAAC,EAAE;kBAC3CjB,GAAA,CAAII,UAAA,GAAa;kBACjB,OAAOJ,GAAA,CAAIK,GAAA,CAAI,0BAA0B;gBAC3C;cACF,CAAC;cAED;YACF;YAGA,MAAOjE,UAAA,CAAmB2D,GAAA,EAAKC,GAAA,EAAKC,IAAI;UAC1C,SAASiB,KAAA,EAAO;YACdtG,KAAA,GAAQ,2BAA2BsG,KAAK,EAAE;YAC1CjB,IAAA,CAAK;UACP;QACF,OAAO;UAELA,IAAA,CAAK;QACP;MACF,CAAC;IACH;EACF;AACF","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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"}