@vxrn/vite-plugin-metro 2.0.0-beta.33.1 → 2.0.0-beta.45.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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 +5 -6
  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
@@ -1,1010 +0,0 @@
1
- "use strict";
2
-
3
- var __create = Object.create;
4
- var __defProp = Object.defineProperty;
5
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
- var __getOwnPropNames = Object.getOwnPropertyNames;
7
- var __getProtoOf = Object.getPrototypeOf;
8
- var __hasOwnProp = Object.prototype.hasOwnProperty;
9
- var __copyProps = (to, from, except, desc) => {
10
- if (from && typeof from === "object" || typeof from === "function") {
11
- for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
12
- get: () => from[key],
13
- enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
14
- });
15
- }
16
- return to;
17
- };
18
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
19
- // If the importer is in node compatibility mode or this is not an ESM
20
- // file that has been converted to a CommonJS file using a Babel-
21
- // compatible transform (i.e. "__esModule" has not been set), then set
22
- // "default" to the CommonJS "module.exports" for node compatibility.
23
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
24
- value: mod,
25
- enumerable: true
26
- }) : target, mod));
27
- var import_vitest = require("vitest");
28
- var vm = __toESM(require("vm"), 1);
29
- var import_oxc_parser = require("oxc-parser");
30
- var fs = __toESM(require("fs"), 1);
31
- var path = __toESM(require("path"), 1);
32
- var import_module = require("module");
33
- var import_metroNativeWorker = require("./metroNativeWorker.native.js");
34
- var import_getMetroConfigFromViteConfig = require("../metro-config/getMetroConfigFromViteConfig.native.js");
35
- const import_meta = {};
36
- function _instanceof(left, right) {
37
- if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) return !!right[Symbol.hasInstance](left);else return left instanceof right;
38
- }
39
- function _type_of(obj) {
40
- "@swc/helpers - typeof";
41
-
42
- return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
43
- }
44
- var babelCalls = {
45
- transform: 0,
46
- transformSync: 0,
47
- transformAsync: 0,
48
- transformFromAstSync: 0,
49
- parse: 0,
50
- parseSync: 0
51
- };
52
- import_vitest.vi.mock("@babel/core", async function (importOriginal) {
53
- var actual = await importOriginal();
54
- return {
55
- ...actual,
56
- transform: import_vitest.vi.fn(function () {
57
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) args[_key] = arguments[_key];
58
- babelCalls.transform++;
59
- return actual.transform(...args);
60
- }),
61
- transformSync: import_vitest.vi.fn(function () {
62
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) args[_key] = arguments[_key];
63
- babelCalls.transformSync++;
64
- return actual.transformSync(...args);
65
- }),
66
- transformAsync: import_vitest.vi.fn(function () {
67
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) args[_key] = arguments[_key];
68
- babelCalls.transformAsync++;
69
- return actual.transformAsync(...args);
70
- }),
71
- transformFromAstSync: import_vitest.vi.fn(function () {
72
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) args[_key] = arguments[_key];
73
- babelCalls.transformFromAstSync++;
74
- return actual.transformFromAstSync(...args);
75
- }),
76
- parse: import_vitest.vi.fn(function () {
77
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) args[_key] = arguments[_key];
78
- babelCalls.parse++;
79
- return actual.parse(...args);
80
- }),
81
- parseSync: import_vitest.vi.fn(function () {
82
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) args[_key] = arguments[_key];
83
- babelCalls.parseSync++;
84
- return actual.parseSync(...args);
85
- })
86
- };
87
- });
88
- (0, import_vitest.beforeEach)(function () {
89
- babelCalls.transform = 0;
90
- babelCalls.transformSync = 0;
91
- babelCalls.transformAsync = 0;
92
- babelCalls.transformFromAstSync = 0;
93
- babelCalls.parse = 0;
94
- babelCalls.parseSync = 0;
95
- });
96
- function assertZeroBabelCalls() {
97
- (0, import_vitest.expect)(babelCalls.transform).toBe(0);
98
- (0, import_vitest.expect)(babelCalls.transformSync).toBe(0);
99
- (0, import_vitest.expect)(babelCalls.transformAsync).toBe(0);
100
- (0, import_vitest.expect)(babelCalls.transformFromAstSync).toBe(0);
101
- (0, import_vitest.expect)(babelCalls.parse).toBe(0);
102
- (0, import_vitest.expect)(babelCalls.parseSync).toBe(0);
103
- }
104
- (0, import_vitest.describe)("metroNativeWorker", function () {
105
- import_vitest.it.each([["data.json", true], ["data.json", false], ["data.js", false]])("minifies %s with source maps enabled=%s without stale mappings", async function (filename, sourceMap) {
106
- var result = await (0, import_metroNativeWorker.transform)({
107
- minifierPath: (0, import_module.createRequire)(import_meta.url).resolve("metro-minify-terser"),
108
- minifierConfig: {
109
- sourceMap
110
- }
111
- }, "/project", filename, Buffer.from(filename.endsWith(".json") ? "{\"answer\":42}" : "module.exports = { answer: 42 }"), {
112
- dev: false,
113
- minify: true,
114
- platform: "ios",
115
- type: "module"
116
- });
117
- var module2 = {
118
- exports: {}
119
- };
120
- var {
121
- code,
122
- map
123
- } = result.output[0].data;
124
- vm.runInNewContext(code, {
125
- __d(factory) {
126
- factory({}, function () {}, function () {}, function () {}, module2, module2.exports, []);
127
- }
128
- });
129
- (0, import_vitest.expect)(module2.exports.answer).toBe(42);
130
- (0, import_vitest.expect)(map.every(function (entry) {
131
- return entry.length === 2;
132
- })).toBe(true);
133
- assertZeroBabelCalls();
134
- });
135
- (0, import_vitest.it)("minifies production modules with executable output and original source locations", async function () {
136
- var source = "exports.answer = function answer(value) {\n return value + 42\n}\n";
137
- var {
138
- code,
139
- map
140
- } = (await (0, import_metroNativeWorker.transform)({
141
- minifierPath: (0, import_module.createRequire)(import_meta.url).resolve("metro-minify-terser"),
142
- minifierConfig: {
143
- mangle: true
144
- }
145
- }, "/project", "answer.js", Buffer.from(source), {
146
- dev: false,
147
- minify: true,
148
- platform: "ios",
149
- type: "module"
150
- })).output[0].data;
151
- var module2 = {
152
- exports: {}
153
- };
154
- vm.runInNewContext(code, {
155
- __d(factory) {
156
- factory({}, function () {}, function () {}, function () {}, module2, module2.exports, []);
157
- }
158
- });
159
- (0, import_vitest.expect)(module2.exports.answer(8)).toBe(50);
160
- var msm = await import("metro-source-map");
161
- var fullMap = msm.fromRawMappings([{
162
- code,
163
- path: "answer.js",
164
- source,
165
- map
166
- }]).toMap();
167
- var offset = code.indexOf("42");
168
- (0, import_vitest.expect)(offset).toBeGreaterThan(-1);
169
- var prefix = code.slice(0, offset).split("\n");
170
- var position = new msm.Consumer(fullMap).originalPositionFor({
171
- line: prefix.length,
172
- column: prefix.at(-1).length
173
- });
174
- (0, import_vitest.expect)(position.source).toBe("answer.js");
175
- (0, import_vitest.expect)(position.line).toBe(2);
176
- (0, import_vitest.expect)(position.column).toBe(17);
177
- assertZeroBabelCalls();
178
- });
179
- (0, import_vitest.it)("extracts all dependencies with oxc-parser and zero Babel", function () {
180
- var deps = (0, import_metroNativeWorker.extractDependencies)(`
181
- import React, { useState } from 'react'
182
- import * as RN from 'react-native'
183
- import './global.css'
184
- import type { UserType } from './user-types'
185
- export { Button } from './Button'
186
- export * from './icons'
187
- export type { ThemeType } from './theme-types'
188
- const helper = require('./helper')
189
- async function loadAsync() {
190
- const dyn = await import('./dynamic-module')
191
- }
192
- `, "TestComponent.tsx");
193
- assertZeroBabelCalls();
194
- var names = deps.map(function (d) {
195
- return d.name;
196
- });
197
- (0, import_vitest.expect)(names).toContain("react");
198
- (0, import_vitest.expect)(names).toContain("react-native");
199
- (0, import_vitest.expect)(names).toContain("./global.css");
200
- (0, import_vitest.expect)(names).toContain("./Button");
201
- (0, import_vitest.expect)(names).toContain("./icons");
202
- (0, import_vitest.expect)(names).toContain("./helper");
203
- (0, import_vitest.expect)(names).toContain("./dynamic-module");
204
- (0, import_vitest.expect)(names).not.toContain("./user-types");
205
- (0, import_vitest.expect)(names).not.toContain("./theme-types");
206
- var reactDep = deps.find(function (d) {
207
- return d.name === "react";
208
- });
209
- (0, import_vitest.expect)(reactDep.data.isESMImportAtSource).toBe(true);
210
- (0, import_vitest.expect)(reactDep.data.asyncType).toBeNull();
211
- (0, import_vitest.expect)(reactDep.data.locs.length).toBeGreaterThan(0);
212
- var loc = reactDep.data.locs[0];
213
- (0, import_vitest.expect)(loc.start.line).toBeGreaterThan(0);
214
- (0, import_vitest.expect)(loc.start.column).toBeGreaterThanOrEqual(0);
215
- (0, import_vitest.expect)(loc.end.line).toBeGreaterThanOrEqual(loc.start.line);
216
- (0, import_vitest.expect)(loc.end.column).toBeGreaterThanOrEqual(0);
217
- var helperDep = deps.find(function (d) {
218
- return d.name === "./helper";
219
- });
220
- (0, import_vitest.expect)(helperDep.data.isESMImportAtSource).toBe(false);
221
- (0, import_vitest.expect)(helperDep.data.asyncType).toBeNull();
222
- var dynamicDep = deps.find(function (d) {
223
- return d.name === "./dynamic-module";
224
- });
225
- (0, import_vitest.expect)(dynamicDep.data.asyncType).toBe("async");
226
- });
227
- (0, import_vitest.it)("marks requires inside a try block optional", function () {
228
- var code = `
229
- let worklets
230
- try {
231
- worklets = require('react-native-worklets-core')
232
- } catch {}
233
- const always = require('./always-there')
234
- `;
235
- var off = (0, import_metroNativeWorker.extractDependencies)(code, "setup.js");
236
- (0, import_vitest.expect)(off.find(function (d) {
237
- return d.name === "react-native-worklets-core";
238
- }).data.isOptional).toBeUndefined();
239
- var on = (0, import_metroNativeWorker.extractDependencies)(code, "setup.js", {
240
- allowOptionalDependencies: true
241
- });
242
- (0, import_vitest.expect)(on.find(function (d) {
243
- return d.name === "react-native-worklets-core";
244
- }).data.isOptional).toBe(true);
245
- (0, import_vitest.expect)(on.find(function (d) {
246
- return d.name === "./always-there";
247
- }).data.isOptional).toBeUndefined();
248
- var excluded = (0, import_metroNativeWorker.extractDependencies)(code, "setup.js", {
249
- allowOptionalDependencies: {
250
- exclude: ["react-native-worklets-core"]
251
- }
252
- });
253
- (0, import_vitest.expect)(excluded.find(function (d) {
254
- return d.name === "react-native-worklets-core";
255
- }).data.isOptional).toBeUndefined();
256
- });
257
- (0, import_vitest.it)("wraps modules in Metro CommonJS format with and without moduleId", function () {
258
- var code = "exports.val = 123;";
259
- var wrappedWithoutId = (0, import_metroNativeWorker.wrapModule)(code);
260
- (0, import_vitest.expect)(wrappedWithoutId).toContain("__d(function (global, _$$_REQUIRE, _$$_IMPORT_DEFAULT, _$$_IMPORT_ALL, module, exports, _dependencyMap) {");
261
- (0, import_vitest.expect)(wrappedWithoutId).toContain("var require = _$$_REQUIRE;");
262
- (0, import_vitest.expect)(wrappedWithoutId).toContain("exports.val = 123;");
263
- (0, import_vitest.expect)(wrappedWithoutId.endsWith(");")).toBe(true);
264
- var wrappedWithId = (0, import_metroNativeWorker.wrapModule)(code, {
265
- moduleId: 99,
266
- dependencyIds: [1, 2, 3]
267
- });
268
- (0, import_vitest.expect)(wrappedWithId).toContain(", 99, [1,2,3]);");
269
- });
270
- (0, import_vitest.it)("transforms TSX with React JSX, Hermes lowering, and ZERO Babel", async function () {
271
- var result = await (0, import_metroNativeWorker.transform)({}, "/project", "Greeter.tsx", Buffer.from(`
272
- import React from 'react'
273
- import { View, Text } from 'react-native'
274
- const helper = require('./helper')
275
-
276
- export class Greeter extends React.Component {
277
- greeting = 'Hello from Native'
278
-
279
- async fetchGreeting() {
280
- return this.greeting
281
- }
282
-
283
- render() {
284
- return (
285
- <View testID="greeter">
286
- <Text>{this.greeting}</Text>
287
- </View>
288
- )
289
- }
290
- }
291
- `, "utf8"), {
292
- dev: true,
293
- platform: "ios",
294
- type: "module"
295
- });
296
- assertZeroBabelCalls();
297
- (0, import_vitest.expect)(result.output).toHaveLength(1);
298
- var output = result.output[0];
299
- (0, import_vitest.expect)(output.type).toBe("js/module");
300
- (0, import_vitest.expect)(output.data.lineCount).toBeGreaterThan(0);
301
- (0, import_vitest.expect)(output.data.map.length).toBeGreaterThan(0);
302
- var code = output.data.code;
303
- (0, import_vitest.expect)(code).toContain("__d(function (global, _$$_REQUIRE, _$$_IMPORT_DEFAULT, _$$_IMPORT_ALL, module, exports, _dependencyMap) {");
304
- (0, import_vitest.expect)(code).toContain("var require = _$$_REQUIRE;");
305
- (0, import_vitest.expect)(code).not.toContain("<View");
306
- (0, import_vitest.expect)(code).not.toContain("<Text");
307
- (0, import_vitest.expect)(code).toContain("this.greeting = \"Hello from Native\"");
308
- var depNames = result.dependencies.map(function (d) {
309
- return d.name;
310
- });
311
- (0, import_vitest.expect)(depNames).toContain("react");
312
- (0, import_vitest.expect)(depNames).toContain("react-native");
313
- (0, import_vitest.expect)(depNames).toContain("./helper");
314
- (0, import_vitest.expect)(depNames).toContain("react/jsx-dev-runtime");
315
- });
316
- (0, import_vitest.it)("lowers async generators, including the method shorthand Hermes also rejects", async function () {
317
- var sources = {
318
- "cursor.ts": `
319
- export class Cursor {
320
- async *rows() {
321
- yield await Promise.resolve(1)
322
- }
323
- }
324
- `,
325
- "stream.ts": `
326
- export async function* stream() {
327
- yield 1
328
- }
329
- `,
330
- "drain.ts": `
331
- export async function drain(src) {
332
- for await (const x of src) {
333
- console.log(x)
334
- }
335
- }
336
- `
337
- };
338
- var _iteratorNormalCompletion = true,
339
- _didIteratorError = false,
340
- _iteratorError = void 0;
341
- try {
342
- for (var _iterator = Object.entries(sources)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
343
- var [filename, sourceCode] = _step.value;
344
- var result = await (0, import_metroNativeWorker.transform)({}, "/project", filename, Buffer.from(sourceCode, "utf8"), {
345
- dev: true,
346
- platform: "ios",
347
- type: "module"
348
- });
349
- assertZeroBabelCalls();
350
- var code = result.output[0].data.code;
351
- (0, import_vitest.expect)(code, filename).not.toMatch(/\basync\s+function\s*\*/);
352
- (0, import_vitest.expect)(code, filename).not.toMatch(/\basync\s*\*\s*[\w$[]/);
353
- (0, import_vitest.expect)(code, filename).not.toMatch(/\bfor\s+await\s*\(/);
354
- }
355
- } catch (err) {
356
- _didIteratorError = true;
357
- _iteratorError = err;
358
- } finally {
359
- try {
360
- if (!_iteratorNormalCompletion && _iterator.return != null) _iterator.return();
361
- } finally {
362
- if (_didIteratorError) throw _iteratorError;
363
- }
364
- }
365
- });
366
- (0, import_vitest.it)("handles JSON files without Babel", async function () {
367
- var jsonSource = JSON.stringify({
368
- name: "my-package",
369
- version: "1.0.0"
370
- });
371
- var result = await (0, import_metroNativeWorker.transform)({}, "/project", "package.json", Buffer.from(jsonSource, "utf8"), {
372
- dev: true,
373
- platform: "ios",
374
- type: "module"
375
- });
376
- assertZeroBabelCalls();
377
- (0, import_vitest.expect)(result.dependencies).toEqual([]);
378
- (0, import_vitest.expect)(result.output).toHaveLength(1);
379
- (0, import_vitest.expect)(result.output[0].type).toBe("js/module");
380
- (0, import_vitest.expect)(result.output[0].data.code).toContain("module.exports = {\"name\":\"my-package\",\"version\":\"1.0.0\"}");
381
- (0, import_vitest.expect)(result.output[0].data.code).toContain("__d(function (global, require");
382
- });
383
- (0, import_vitest.it)("handles Asset files without Babel", async function () {
384
- var result = await (0, import_metroNativeWorker.transform)({
385
- assetRegistryPath: "react-native/Libraries/Image/AssetRegistry",
386
- publicPath: "/assets"
387
- }, "/project", "logo.png", Buffer.from("fake-png-binary-data", "utf8"), {
388
- dev: true,
389
- platform: "ios",
390
- type: "asset"
391
- });
392
- assertZeroBabelCalls();
393
- (0, import_vitest.expect)(result.output[0].type).toBe("js/module/asset");
394
- (0, import_vitest.expect)(result.output[0].data.code).toContain("registerAsset(");
395
- (0, import_vitest.expect)(result.output[0].data.code).toContain("__d(function");
396
- var depNames = result.dependencies.map(function (d) {
397
- return d.name;
398
- });
399
- (0, import_vitest.expect)(depNames).toContain("react-native/Libraries/Image/AssetRegistry");
400
- });
401
- (0, import_vitest.it)("handles Flow files by stripping types without Babel", async function () {
402
- var result = await (0, import_metroNativeWorker.transform)({}, "/project", "math.js", Buffer.from(`
403
- // @flow
404
- function add(a: number, b: number): number {
405
- return a + b;
406
- }
407
- export default add;
408
- `, "utf8"), {
409
- dev: false,
410
- platform: "ios",
411
- type: "module"
412
- });
413
- assertZeroBabelCalls();
414
- (0, import_vitest.expect)(result.output[0].data.code).not.toContain(": number");
415
- (0, import_vitest.expect)(result.output[0].data.code).toContain("function add(a, b)");
416
- });
417
- (0, import_vitest.it)("generates a deterministic cache key without Babel", function () {
418
- var key1 = (0, import_metroNativeWorker.getCacheKey)({
419
- globalPrefix: "__one_",
420
- minifierPath: "terser"
421
- }, {
422
- projectRoot: "/app"
423
- });
424
- var key2 = (0, import_metroNativeWorker.getCacheKey)({
425
- globalPrefix: "__one_",
426
- minifierPath: "terser"
427
- }, {
428
- projectRoot: "/app"
429
- });
430
- var key3 = (0, import_metroNativeWorker.getCacheKey)({
431
- globalPrefix: "__other_"
432
- }, {
433
- projectRoot: "/app"
434
- });
435
- assertZeroBabelCalls();
436
- (0, import_vitest.expect)(key1).toBe(key2);
437
- (0, import_vitest.expect)(key1).not.toBe(key3);
438
- (0, import_vitest.expect)(typeof key1 === "undefined" ? "undefined" : _type_of(key1)).toBe("string");
439
- (0, import_vitest.expect)(key1.length).toBe(64);
440
- });
441
- (0, import_vitest.it)("correctly sets transformerPath in buildMetroConfigInputFromViteConfig when active", async function () {
442
- var mockViteConfig = {
443
- root: process.cwd()
444
- };
445
- delete process.env.ONE_METRO_NATIVE_TRANSFORMS;
446
- var configDefault = await (0, import_getMetroConfigFromViteConfig.buildMetroConfigInputFromViteConfig)(mockViteConfig, {});
447
- (0, import_vitest.expect)(configDefault.defaultConfig.transformerPath).toContain("metroNativeWorker");
448
- (0, import_vitest.expect)(configDefault.defaultConfig.transformer.transformerPath).toBeUndefined();
449
- var configOptOff = await (0, import_getMetroConfigFromViteConfig.buildMetroConfigInputFromViteConfig)(mockViteConfig, {
450
- nativeTransforms: false
451
- });
452
- (0, import_vitest.expect)(configOptOff.defaultConfig.transformerPath).not.toContain("metroNativeWorker");
453
- process.env.ONE_METRO_NATIVE_TRANSFORMS = "0";
454
- var configEnvOff = await (0, import_getMetroConfigFromViteConfig.buildMetroConfigInputFromViteConfig)(mockViteConfig, {});
455
- (0, import_vitest.expect)(configEnvOff.defaultConfig.transformerPath).not.toContain("metroNativeWorker");
456
- process.env.ONE_METRO_NATIVE_TRANSFORMS = "1";
457
- var configEnvOn = await (0, import_getMetroConfigFromViteConfig.buildMetroConfigInputFromViteConfig)(mockViteConfig, {
458
- nativeTransforms: false
459
- });
460
- (0, import_vitest.expect)(configEnvOn.defaultConfig.transformerPath).toContain("metroNativeWorker");
461
- delete process.env.ONE_METRO_NATIVE_TRANSFORMS;
462
- });
463
- (0, import_vitest.it)("excludes volatile compiler caches from Metro without hiding package output", async function () {
464
- var blockList = (await (0, import_getMetroConfigFromViteConfig.buildMetroConfigInputFromViteConfig)({
465
- root: process.cwd()
466
- }, {
467
- watchman: false
468
- })).defaultConfig.resolver.blockList;
469
- var isBlocked = function (file) {
470
- return blockList.some(function (pattern) {
471
- return pattern.test(file);
472
- });
473
- };
474
- (0, import_vitest.expect)(isBlocked("/home/runner/work/one/one/tests/test-app-cases/node_modules/.vxrn/compiler-cache")).toBe(true);
475
- (0, import_vitest.expect)(isBlocked("C:\\workspace\\tests\\test-app-cases\\node_modules\\.vxrn\\compiler-cache")).toBe(true);
476
- (0, import_vitest.expect)(isBlocked("/home/runner/work/one/one/packages/one/dist/esm/index.mjs")).toBe(false);
477
- });
478
- (0, import_vitest.it)("transforms and executes a real 2-module Metro bundle through metro-runtime require polyfill", async function () {
479
- var depSource = "exports.value = 42;";
480
- var aSource = "const dep = require(\"./dep\"); module.exports = { doubled: dep.value * 2 };";
481
- var depRes = await (0, import_metroNativeWorker.transform)({}, "/project", "dep.js", Buffer.from(depSource, "utf8"), {
482
- dev: false,
483
- platform: "ios",
484
- type: "module",
485
- moduleId: 2,
486
- dependencyIds: []
487
- });
488
- var aRes = await (0, import_metroNativeWorker.transform)({}, "/project", "a.js", Buffer.from(aSource, "utf8"), {
489
- dev: false,
490
- platform: "ios",
491
- type: "module",
492
- moduleId: 1,
493
- dependencyIds: [2]
494
- });
495
- assertZeroBabelCalls();
496
- (0, import_vitest.expect)(aRes.dependencies).toHaveLength(1);
497
- (0, import_vitest.expect)(aRes.dependencies[0].name).toBe("./dep");
498
- var aEmittedCode = aRes.output[0].data.code;
499
- (0, import_vitest.expect)(aEmittedCode).toContain("require(_dependencyMap[0], \"./dep\")");
500
- var polyfillPath = require.resolve("metro-runtime/src/polyfills/require.js");
501
- var polyfillCode = fs.readFileSync(polyfillPath, "utf8");
502
- var contextObj = {
503
- __DEV__: false,
504
- __METRO_GLOBAL_PREFIX__: "",
505
- console
506
- };
507
- contextObj.global = contextObj;
508
- vm.createContext(contextObj);
509
- vm.runInContext(polyfillCode, contextObj);
510
- vm.runInContext(depRes.output[0].data.code, contextObj);
511
- vm.runInContext(aEmittedCode, contextObj);
512
- var executedExports = vm.runInContext("global.__r(1)", contextObj);
513
- (0, import_vitest.expect)(executedExports).toEqual({
514
- doubled: 84
515
- });
516
- });
517
- (0, import_vitest.it)("transforms and executes a 2-module Metro bundle with ESM imports in dev mode", async function () {
518
- var depSource = "export const greeting = \"Hello Metro Native\";";
519
- var aSource = "import { greeting } from \"./dep\"; export const message = greeting.toUpperCase();";
520
- var depRes = await (0, import_metroNativeWorker.transform)({}, "/project", "dep.js", Buffer.from(depSource, "utf8"), {
521
- dev: true,
522
- platform: "ios",
523
- type: "module",
524
- moduleId: 2,
525
- dependencyIds: []
526
- });
527
- var aRes = await (0, import_metroNativeWorker.transform)({}, "/project", "a.js", Buffer.from(aSource, "utf8"), {
528
- dev: true,
529
- platform: "ios",
530
- type: "module",
531
- moduleId: 1,
532
- dependencyIds: [2]
533
- });
534
- assertZeroBabelCalls();
535
- var polyfillPath = require.resolve("metro-runtime/src/polyfills/require.js");
536
- var polyfillCode = fs.readFileSync(polyfillPath, "utf8");
537
- var contextObj = {
538
- __DEV__: true,
539
- __METRO_GLOBAL_PREFIX__: "",
540
- console
541
- };
542
- contextObj.global = contextObj;
543
- vm.createContext(contextObj);
544
- vm.runInContext(polyfillCode, contextObj);
545
- vm.runInContext(depRes.output[0].data.code, contextObj);
546
- vm.runInContext(aRes.output[0].data.code, contextObj);
547
- var executedExports = vm.runInContext("global.__r(1)", contextObj);
548
- (0, import_vitest.expect)(executedExports.message).toBe("HELLO METRO NATIVE");
549
- });
550
- (0, import_vitest.it)("respects lexical scope shadowing for require calls (Astra probe)", async function () {
551
- var res = await (0, import_metroNativeWorker.transform)({}, "/project", "shadowed.js", Buffer.from("function f(require){return require(\"./local\")}; module.exports=f(x=>x);", "utf8"), {
552
- dev: false,
553
- platform: "ios",
554
- type: "module",
555
- moduleId: 1,
556
- dependencyIds: []
557
- });
558
- assertZeroBabelCalls();
559
- (0, import_vitest.expect)(res.dependencies).toHaveLength(0);
560
- var emitted = res.output[0].data.code;
561
- (0, import_vitest.expect)(emitted).not.toContain("_dependencyMap[0]");
562
- (0, import_vitest.expect)(emitted).toMatch(/require\d*\("\.\/local"\)/);
563
- var polyfillPath = require.resolve("metro-runtime/src/polyfills/require.js");
564
- var polyfillCode = fs.readFileSync(polyfillPath, "utf8");
565
- var contextObj = {
566
- __DEV__: false,
567
- __METRO_GLOBAL_PREFIX__: "",
568
- console
569
- };
570
- contextObj.global = contextObj;
571
- vm.createContext(contextObj);
572
- vm.runInContext(polyfillCode, contextObj);
573
- vm.runInContext(emitted, contextObj);
574
- var result = vm.runInContext("global.__r(1)", contextObj);
575
- (0, import_vitest.expect)(result).toBe("./local");
576
- });
577
- (0, import_vitest.it)("preserves distinct indexed identity for duplicate and mixed sync/async dependencies", async function () {
578
- var res = await (0, import_metroNativeWorker.transform)({}, "/project", "index.js", Buffer.from(`
579
- const a = require('./dep');
580
- const b = require('./dep');
581
- async function load() {
582
- const c = await import('./dep');
583
- }
584
- `, "utf8"), {
585
- dev: false,
586
- platform: "ios",
587
- type: "module"
588
- });
589
- assertZeroBabelCalls();
590
- var depNames = res.dependencies.map(function (d) {
591
- return d.name;
592
- });
593
- (0, import_vitest.expect)(depNames).toContain("./dep");
594
- var syncDep = res.dependencies.find(function (d) {
595
- return d.name === "./dep" && d.data.asyncType === null;
596
- });
597
- var asyncDep = res.dependencies.find(function (d) {
598
- return d.name === "./dep" && d.data.asyncType === "async";
599
- });
600
- (0, import_vitest.expect)(syncDep).toBeDefined();
601
- (0, import_vitest.expect)(asyncDep).toBeDefined();
602
- (0, import_vitest.expect)(syncDep.data.index).not.toEqual(asyncDep.data.index);
603
- var emitted = res.output[0].data.code;
604
- var syncIndex = syncDep.data.index;
605
- (0, import_vitest.expect)(emitted).toContain(`require(_dependencyMap[${syncIndex}], "./dep")`);
606
- });
607
- (0, import_vitest.it)("conforms to Metro map ABI with raw mapping segment tuples and accurate symbolication", async function () {
608
- var res = await (0, import_metroNativeWorker.transform)({}, "/project", "math.ts", Buffer.from(`
609
- export function add(a: number, b: number): number {
610
- return a + b;
611
- }
612
- `, "utf8"), {
613
- dev: false,
614
- platform: "ios",
615
- type: "module"
616
- });
617
- assertZeroBabelCalls();
618
- var map = res.output[0].data.map;
619
- (0, import_vitest.expect)(Array.isArray(map)).toBe(true);
620
- (0, import_vitest.expect)(map.length).toBeGreaterThan(0);
621
- var _iteratorNormalCompletion = true,
622
- _didIteratorError = false,
623
- _iteratorError = void 0;
624
- try {
625
- for (var _iterator = map[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
626
- var tuple = _step.value;
627
- (0, import_vitest.expect)(Array.isArray(tuple)).toBe(true);
628
- (0, import_vitest.expect)(_type_of(tuple[0])).toBe("number");
629
- (0, import_vitest.expect)(_type_of(tuple[1])).toBe("number");
630
- (0, import_vitest.expect)(tuple).not.toHaveProperty("version");
631
- (0, import_vitest.expect)(tuple).not.toHaveProperty("mappings");
632
- }
633
- } catch (err) {
634
- _didIteratorError = true;
635
- _iteratorError = err;
636
- } finally {
637
- try {
638
- if (!_iteratorNormalCompletion && _iterator.return != null) _iterator.return();
639
- } finally {
640
- if (_didIteratorError) throw _iteratorError;
641
- }
642
- }
643
- var msm = await import("metro-source-map");
644
- var fullMap = msm.fromRawMappings([{
645
- code: res.output[0].data.code,
646
- source: "math.ts",
647
- map
648
- }]).toMap();
649
- var consumer = new msm.Consumer(fullMap);
650
- var addLineIndex = res.output[0].data.code.split("\n").findIndex(function (l) {
651
- return l.includes("function add");
652
- });
653
- (0, import_vitest.expect)(addLineIndex).toBeGreaterThan(0);
654
- var pos = consumer.originalPositionFor({
655
- line: addLineIndex + 1,
656
- column: 16
657
- });
658
- (0, import_vitest.expect)(pos.line).toBe(2);
659
- });
660
- (0, import_vitest.it)("models JS hoisting in ScopeTracker for functions and vars (Astra probe)", async function () {
661
- var res = await (0, import_metroNativeWorker.transform)({}, "/project", "hoisted.js", Buffer.from("function f(){const x=require(\"./local\"); function require(x){return x}; return x} module.exports=f();", "utf8"), {
662
- dev: false,
663
- platform: "ios",
664
- type: "module",
665
- moduleId: 1,
666
- dependencyIds: []
667
- });
668
- assertZeroBabelCalls();
669
- (0, import_vitest.expect)(res.dependencies).toHaveLength(0);
670
- var emitted = res.output[0].data.code;
671
- (0, import_vitest.expect)(emitted).not.toContain("_dependencyMap[0]");
672
- (0, import_vitest.expect)(emitted).toMatch(/require\d*\("\.\/local"\)/);
673
- var polyfillPath = require.resolve("metro-runtime/src/polyfills/require.js");
674
- var polyfillCode = fs.readFileSync(polyfillPath, "utf8");
675
- var contextObj = {
676
- __DEV__: false,
677
- __METRO_GLOBAL_PREFIX__: "",
678
- console
679
- };
680
- contextObj.global = contextObj;
681
- vm.createContext(contextObj);
682
- vm.runInContext(polyfillCode, contextObj);
683
- vm.runInContext(emitted, contextObj);
684
- var result = vm.runInContext("global.__r(1)", contextObj);
685
- (0, import_vitest.expect)(result).toBe("./local");
686
- });
687
- (0, import_vitest.it)("rewrites dynamic import to Metro asyncRequire and executes promise resolution in dev and release", async function () {
688
- var depSource = "exports.message = \"hello dynamic\";";
689
- var mainSource = "module.exports = () => import(\"./dep\");";
690
- var depRes = await (0, import_metroNativeWorker.transform)({}, "/project", "dep.js", Buffer.from(depSource, "utf8"), {
691
- dev: true,
692
- platform: "ios",
693
- type: "module",
694
- moduleId: 2,
695
- dependencyIds: []
696
- });
697
- var mainRes = await (0, import_metroNativeWorker.transform)({}, "/project", "main.js", Buffer.from(mainSource, "utf8"), {
698
- dev: true,
699
- platform: "ios",
700
- type: "module",
701
- moduleId: 0,
702
- dependencyIds: [2, 1]
703
- });
704
- assertZeroBabelCalls();
705
- var depNames = mainRes.dependencies.map(function (d) {
706
- return d.name;
707
- });
708
- (0, import_vitest.expect)(depNames).toContain("./dep");
709
- (0, import_vitest.expect)(depNames).toContain("metro-runtime/src/modules/asyncRequire");
710
- var dynDep = mainRes.dependencies.find(function (d) {
711
- return d.name === "./dep";
712
- });
713
- (0, import_vitest.expect)(dynDep.data.asyncType).toBe("async");
714
- var emittedMain = mainRes.output[0].data.code;
715
- (0, import_vitest.expect)(emittedMain).not.toContain("import(\"./dep\")");
716
- (0, import_vitest.expect)(emittedMain).toContain("require(_dependencyMap[1], \"metro-runtime/src/modules/asyncRequire\")(_dependencyMap[0], _dependencyMap.paths, \"./dep\")");
717
- var polyfillPath = require.resolve("metro-runtime/src/polyfills/require.js");
718
- var polyfillCode = fs.readFileSync(polyfillPath, "utf8");
719
- var asyncRequirePath = require.resolve("metro-runtime/src/modules/asyncRequire.js");
720
- var asyncRequireSource = fs.readFileSync(asyncRequirePath, "utf8");
721
- var wrappedAsyncRequire = (0, import_metroNativeWorker.wrapModule)(asyncRequireSource, {
722
- moduleId: 1,
723
- dependencyIds: []
724
- });
725
- for (var _i = 0, _iter = [true, false]; _i < _iter.length; _i++) {
726
- var contextObj = {
727
- __DEV__: _iter[_i],
728
- __METRO_GLOBAL_PREFIX__: "",
729
- console
730
- };
731
- contextObj.global = contextObj;
732
- vm.createContext(contextObj);
733
- vm.runInContext(polyfillCode, contextObj);
734
- vm.runInContext(wrappedAsyncRequire, contextObj);
735
- vm.runInContext(depRes.output[0].data.code, contextObj);
736
- vm.runInContext(emittedMain, contextObj);
737
- var mainFn = vm.runInContext("global.__r(0)", contextObj);
738
- (0, import_vitest.expect)(typeof mainFn === "undefined" ? "undefined" : _type_of(mainFn)).toBe("function");
739
- var promise = mainFn();
740
- (0, import_vitest.expect)(_instanceof(promise, Promise) || promise && typeof promise.then === "function").toBe(true);
741
- var resolved = await promise;
742
- (0, import_vitest.expect)(resolved.message).toBe("hello dynamic");
743
- (0, import_vitest.expect)(resolved.default.message).toBe("hello dynamic");
744
- }
745
- });
746
- (0, import_vitest.it)("preserves accurate sourcemap for tokens after rewritten require calls on the same line", async function () {
747
- var sourceCode = "const a = require(\"./dep\"), b = 42;";
748
- var resWrapped = await (0, import_metroNativeWorker.transform)({}, "/project", "app.js", Buffer.from(sourceCode, "utf8"), {
749
- dev: false,
750
- platform: "ios",
751
- type: "module"
752
- });
753
- assertZeroBabelCalls();
754
- var msm = await import("metro-source-map");
755
- var fullMapWrapped = msm.fromRawMappings([{
756
- code: resWrapped.output[0].data.code,
757
- source: "app.js",
758
- map: resWrapped.output[0].data.map
759
- }]).toMap();
760
- var consumerWrapped = new msm.Consumer(fullMapWrapped);
761
- var linesWrapped = resWrapped.output[0].data.code.split("\n");
762
- var lineIndexWrapped = linesWrapped.findIndex(function (l) {
763
- return l.includes("b = 42");
764
- });
765
- (0, import_vitest.expect)(lineIndexWrapped).toBeGreaterThanOrEqual(0);
766
- var generatedColWrapped = linesWrapped[lineIndexWrapped].indexOf("b = 42");
767
- (0, import_vitest.expect)(generatedColWrapped).toBeGreaterThan(0);
768
- var posWrapped = consumerWrapped.originalPositionFor({
769
- line: lineIndexWrapped + 1,
770
- column: generatedColWrapped
771
- });
772
- (0, import_vitest.expect)(posWrapped.line).toBe(1);
773
- (0, import_vitest.expect)(posWrapped.column).toBe(28);
774
- (0, import_vitest.expect)(sourceCode.slice(Number(posWrapped.column))).toContain("b = 42;");
775
- var resUnwrapped = await (0, import_metroNativeWorker.transform)({
776
- unstable_disableModuleWrapping: true
777
- }, "/project", "app.js", Buffer.from(sourceCode, "utf8"), {
778
- dev: false,
779
- platform: "ios",
780
- type: "module"
781
- });
782
- var fullMapUnwrapped = msm.fromRawMappings([{
783
- code: resUnwrapped.output[0].data.code,
784
- source: "app.js",
785
- map: resUnwrapped.output[0].data.map
786
- }]).toMap();
787
- var consumerUnwrapped = new msm.Consumer(fullMapUnwrapped);
788
- var linesUnwrapped = resUnwrapped.output[0].data.code.split("\n");
789
- var lineIndexUnwrapped = linesUnwrapped.findIndex(function (l) {
790
- return l.includes("b = 42");
791
- });
792
- (0, import_vitest.expect)(lineIndexUnwrapped).toBeGreaterThanOrEqual(0);
793
- var generatedColUnwrapped = linesUnwrapped[lineIndexUnwrapped].indexOf("b = 42");
794
- var posUnwrapped = consumerUnwrapped.originalPositionFor({
795
- line: lineIndexUnwrapped + 1,
796
- column: generatedColUnwrapped
797
- });
798
- (0, import_vitest.expect)(posUnwrapped.line).toBe(1);
799
- (0, import_vitest.expect)(posUnwrapped.column).toBe(28);
800
- });
801
- (0, import_vitest.it)("routes a require.context whose directory is held in a variable through the dependency map", async function () {
802
- var result = await (0, import_metroNativeWorker.transform)({}, "/project", "entry.js", Buffer.from(`
803
- const routeRoot = './app'
804
- export const ctx = require.context(routeRoot, true, /\\.tsx$/)
805
- `, "utf8"), {
806
- dev: true,
807
- platform: "ios",
808
- type: "module"
809
- });
810
- var contextDep = result.dependencies.find(function (d) {
811
- return d.data.contextParams != null;
812
- });
813
- (0, import_vitest.expect)(contextDep === null || contextDep === void 0 ? void 0 : contextDep.name).toBe("./app");
814
- var calls = [];
815
- var ctx;
816
- vm.runInNewContext(result.output[0].data.code, {
817
- __d: function (factory) {
818
- var module2 = {
819
- exports: {}
820
- };
821
- var req = function () {
822
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) args[_key] = arguments[_key];
823
- calls.push(args);
824
- return {
825
- keys: function () {
826
- return [];
827
- }
828
- };
829
- };
830
- req.context = function () {
831
- throw new Error("fallbackRequireContext reached");
832
- };
833
- factory({}, req, function () {
834
- return {};
835
- }, function () {
836
- return {};
837
- }, module2, module2.exports, ["./app"]);
838
- ctx = module2.exports.ctx;
839
- }
840
- });
841
- (0, import_vitest.expect)(ctx).toBeDefined();
842
- (0, import_vitest.expect)(calls[0][1]).toBe("./app");
843
- });
844
- (0, import_vitest.it)("gives loop bodies per-iteration bindings that survive a runtime without them", async function () {
845
- var asHermesWouldSeeIt = (await (0, import_metroNativeWorker.transform)({}, "/project", "loops.ts", Buffer.from(`
846
- export function collect() {
847
- const out = []
848
- for (let i = 0; i < 2; i++) out.push(() => i)
849
- for (const label of ['a', 'b']) out.push(() => label)
850
- for (const key in { x: 1, y: 2 }) out.push(() => key)
851
- return out.map((f) => f())
852
- }
853
- `, "utf8"), {
854
- dev: true,
855
- platform: "ios",
856
- type: "module"
857
- })).output[0].data.code.replace(/\bfor\s*\(\s*(let|const)\b/g, "for (var");
858
- var collect;
859
- vm.runInNewContext(asHermesWouldSeeIt, {
860
- __d: function (factory) {
861
- var module2 = {
862
- exports: {}
863
- };
864
- factory({}, function () {
865
- return {};
866
- }, function () {
867
- return {};
868
- }, function () {
869
- return {};
870
- }, module2, module2.exports, []);
871
- collect = module2.exports.collect;
872
- }
873
- });
874
- (0, import_vitest.expect)(collect()).toEqual([0, 1, "a", "b", "x", "y"]);
875
- });
876
- });
877
- (0, import_vitest.describe)("one native transform ports", function () {
878
- (0, import_vitest.it)("inlines process.env.ONE_SERVER_URL so a native bundle can find its loaders", function () {
879
- process.env.ONE_SERVER_URL = "https://example.test";
880
- try {
881
- var out = (0, import_metroNativeWorker.applyInlineEnvVars)("export const url = process.env.ONE_SERVER_URL;", "loader.ts", false);
882
- (0, import_vitest.expect)(out).toBe("export const url = \"https://example.test\";");
883
- } finally {
884
- process.env.ONE_SERVER_URL = void 0;
885
- }
886
- });
887
- (0, import_vitest.it)("leaves ONE_SERVER_URL alone when it is only a string", function () {
888
- var src = "export const key = \"process.env.ONE_SERVER_URL\";";
889
- (0, import_vitest.expect)((0, import_metroNativeWorker.applyInlineEnvVars)(src, "a.ts", false)).toBe(src);
890
- });
891
- (0, import_vitest.it)("inlines import.meta.env reads, which oxc otherwise lowers to an empty object", function () {
892
- var out = (0, import_metroNativeWorker.applyInlineEnvVars)(`export const key = import.meta.env.VITE_POSTHOG_API_KEY;
893
- export const target = import.meta.env?.TAMAGUI_TARGET;
894
- export const missing = import.meta.env.NOT_SET;
895
- export const all = { ...import.meta.env };`, "env.ts", true, {
896
- DEV: false,
897
- VITE_POSTHOG_API_KEY: "pk_live",
898
- TAMAGUI_TARGET: "native"
899
- });
900
- (0, import_vitest.expect)(out).toContain("export const key = \"pk_live\";");
901
- (0, import_vitest.expect)(out).toContain("export const target = \"native\";");
902
- (0, import_vitest.expect)(out).toContain("export const missing = undefined;");
903
- (0, import_vitest.expect)(out).toContain("\"VITE_POSTHOG_API_KEY\":\"pk_live\"");
904
- (0, import_vitest.expect)(out).not.toContain("import.meta");
905
- });
906
- (0, import_vitest.it)("inlines process.env keys the vite env map defines", function () {
907
- var out = (0, import_metroNativeWorker.applyInlineEnvVars)("export const t = process.env.TAMAGUI_TARGET; export const u = process.env.UNKNOWN_THING;", "env.ts", true, {
908
- TAMAGUI_TARGET: "native"
909
- });
910
- (0, import_vitest.expect)(out).toContain("export const t = \"native\";");
911
- (0, import_vitest.expect)(out).toContain("process.env.UNKNOWN_THING");
912
- });
913
- (0, import_vitest.it)("never rewrites an env read in an assignment target", function () {
914
- var src = "process.env.VITE_ENVIRONMENT = \"ssr\";";
915
- (0, import_vitest.expect)((0, import_metroNativeWorker.applyInlineEnvVars)(src, "a.ts", true, {
916
- VITE_ENVIRONMENT: "ios"
917
- })).toBe(src);
918
- });
919
- (0, import_vitest.it)("folds branches the inlining made constant so metro never resolves dead imports", function () {
920
- var out = (0, import_metroNativeWorker.applyInlineEnvVars)(`if (import.meta.env.SSR) { require('./server-only-thing') } else { load(import.meta.env.API) }`, "branch.ts", true, {
921
- SSR: false,
922
- API: "https://api.test"
923
- });
924
- (0, import_vitest.expect)(out).not.toContain("server-only-thing");
925
- (0, import_vitest.expect)(out).toContain("load(\"https://api.test\")");
926
- });
927
- (0, import_vitest.it)("folds a ternary and keeps a branch it cannot resolve", function () {
928
- (0, import_vitest.expect)((0, import_metroNativeWorker.applyInlineEnvVars)("const a = import.meta.env.DEV ? x : y;", "a.ts", true, {
929
- DEV: false
930
- })).toContain("const a = y;");
931
- var dynamic = "const a = flag ? x : y;";
932
- (0, import_vitest.expect)((0, import_metroNativeWorker.applyInlineEnvVars)(dynamic, "a.ts", true, {
933
- DEV: false
934
- })).toBe(dynamic);
935
- });
936
- (0, import_vitest.it)("runs the user native transforms that stand in for their babel plugins", async function () {
937
- var result = await (0, import_metroNativeWorker.transform)({}, import_meta.dirname, "ota.ts", Buffer.from("export const id = __EXAMPLE_BUILD_ID; export const from = __EXAMPLE_FILENAME;", "utf8"), {
938
- dev: true,
939
- platform: "ios",
940
- type: "module",
941
- customTransformOptions: {
942
- vite: {
943
- nativeTransformModules: ["./__fixtures__/exampleNativeTransform.cjs"]
944
- }
945
- }
946
- });
947
- assertZeroBabelCalls();
948
- (0, import_vitest.expect)(result.output[0].data.code).toContain("\"ios-build\"");
949
- (0, import_vitest.expect)(result.output[0].data.code).not.toContain("__EXAMPLE_BUILD_ID");
950
- (0, import_vitest.expect)(result.output[0].data.code).toContain(JSON.stringify(path.join(import_meta.dirname, "ota.ts")));
951
- });
952
- (0, import_vitest.it)("refuses to build when a user babel plugin has no native port", function () {
953
- var withPlugins = function (plugins) {
954
- return {
955
- customTransformOptions: {
956
- vite: {
957
- babelConfig: {
958
- plugins
959
- }
960
- }
961
- }
962
- };
963
- };
964
- (0, import_vitest.expect)(function () {
965
- return (0, import_metroNativeWorker.assertNoUnportedBabelPlugins)(withPlugins([["@vxrn/vite-plugin-metro/babel-plugins/import-meta-env-plugin", {
966
- env: {}
967
- }], "one/babel-plugin-environment-guard", "hot-updater/babel-plugin"]));
968
- }).toThrow(/hot-updater\/babel-plugin/);
969
- (0, import_vitest.expect)(function () {
970
- return (0, import_metroNativeWorker.assertNoUnportedBabelPlugins)(withPlugins([["@vxrn/vite-plugin-metro/babel-plugins/import-meta-env-plugin", {
971
- env: {}
972
- }], "one/babel-plugin-environment-guard", ["one/babel-plugin-remove-server-code", {
973
- routerRoot: "app"
974
- }], ["babel-plugin-module-resolver", {
975
- alias: {}
976
- }], ["one/babel-plugin-one-router-metro", {}], "one/babel-plugin-inline-one-server-url", "babel-plugin-react-compiler", "react-native-reanimated/plugin"]));
977
- }).not.toThrow();
978
- });
979
- (0, import_vitest.it)("turns a server-only import into a throw and drops native-only", function () {
980
- var out = (0, import_metroNativeWorker.applyEnvironmentGuard)(`import 'native-only'
981
- import 'server-only'
982
- export const a = 1`, "route.ts");
983
- (0, import_vitest.expect)(out).not.toContain("native-only");
984
- (0, import_vitest.expect)(out).toContain("server-only cannot be imported in a native environment");
985
- var parsed = (0, import_oxc_parser.parseSync)("route.ts", out, {
986
- lang: "ts"
987
- });
988
- (0, import_vitest.expect)(parsed.errors).toEqual([]);
989
- (0, import_vitest.expect)(parsed.program.body.map(function (n) {
990
- return n.type;
991
- })).toContain("ThrowStatement");
992
- });
993
- (0, import_vitest.it)("reads the router root off one's remove-server-code plugin entry", function () {
994
- (0, import_vitest.expect)((0, import_metroNativeWorker.getRemoveServerCodeRouterRoot)({
995
- customTransformOptions: {
996
- vite: {
997
- babelConfig: {
998
- plugins: [["one/babel-plugin-remove-server-code", {
999
- routerRoot: "src/app"
1000
- }]]
1001
- }
1002
- }
1003
- }
1004
- })).toBe("src/app");
1005
- (0, import_vitest.expect)((0, import_metroNativeWorker.getRemoveServerCodeRouterRoot)({
1006
- customTransformOptions: {}
1007
- })).toBe(void 0);
1008
- });
1009
- });
1010
- //# sourceMappingURL=metroNativeWorker.test.native.js.map