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

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