@vxrn/vite-plugin-metro 2.0.0-beta.33.1 → 2.0.0-beta.362.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.
- package/dist/cjs/babel-plugins/import-meta-env-plugin.cjs +84 -102
- package/dist/cjs/babel-plugins/import-meta-env-plugin.native.cjs +108 -0
- package/dist/cjs/babel-plugins/import-meta-env-plugin.native.js +90 -107
- package/dist/cjs/babel-plugins/import-meta-env-plugin.native.js.map +1 -1
- package/dist/cjs/env/platformEnv.cjs +57 -57
- package/dist/cjs/env/platformEnv.native.cjs +95 -0
- package/dist/cjs/env/platformEnv.native.js +74 -75
- package/dist/cjs/env/platformEnv.native.js.map +1 -1
- package/dist/cjs/index.cjs +21 -25
- package/dist/cjs/index.native.cjs +39 -0
- package/dist/cjs/index.native.js +21 -24
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/metro-config/getMetroBabelConfigFromViteConfig.cjs +54 -51
- package/dist/cjs/metro-config/getMetroBabelConfigFromViteConfig.native.cjs +108 -0
- package/dist/cjs/metro-config/getMetroBabelConfigFromViteConfig.native.js +95 -94
- package/dist/cjs/metro-config/getMetroBabelConfigFromViteConfig.native.js.map +1 -1
- package/dist/cjs/metro-config/getMetroConfigFromViteConfig.cjs +303 -257
- package/dist/cjs/metro-config/getMetroConfigFromViteConfig.native.cjs +361 -0
- package/dist/cjs/metro-config/getMetroConfigFromViteConfig.native.js +327 -267
- package/dist/cjs/metro-config/getMetroConfigFromViteConfig.native.js.map +1 -1
- package/dist/cjs/metro-config/patchMetroServerWithViteConfigAndMetroPluginOptions.cjs +38 -44
- package/dist/cjs/metro-config/patchMetroServerWithViteConfigAndMetroPluginOptions.native.cjs +53 -0
- package/dist/cjs/metro-config/patchMetroServerWithViteConfigAndMetroPluginOptions.native.js +39 -44
- package/dist/cjs/metro-config/patchMetroServerWithViteConfigAndMetroPluginOptions.native.js.map +1 -1
- package/dist/cjs/metro-config/types.cjs +9 -11
- package/dist/cjs/metro-config/types.native.cjs +18 -0
- package/dist/cjs/metro-config/types.native.js +9 -10
- package/dist/cjs/metro-config/types.native.js.map +1 -1
- package/dist/cjs/plugins/metroPlugin.cjs +210 -248
- package/dist/cjs/plugins/metroPlugin.native.cjs +242 -0
- package/dist/cjs/plugins/metroPlugin.native.js +216 -253
- package/dist/cjs/plugins/metroPlugin.native.js.map +1 -1
- package/dist/cjs/rn-commands/bundle/assetCatalogIOS.cjs +56 -65
- package/dist/cjs/rn-commands/bundle/assetCatalogIOS.native.cjs +121 -0
- package/dist/cjs/rn-commands/bundle/assetCatalogIOS.native.js +94 -106
- package/dist/cjs/rn-commands/bundle/assetCatalogIOS.native.js.map +1 -1
- package/dist/cjs/rn-commands/bundle/assetPathUtils.cjs +51 -55
- package/dist/cjs/rn-commands/bundle/assetPathUtils.native.cjs +72 -0
- package/dist/cjs/rn-commands/bundle/assetPathUtils.native.js +51 -54
- package/dist/cjs/rn-commands/bundle/assetPathUtils.native.js.map +1 -1
- package/dist/cjs/rn-commands/bundle/buildBundle.cjs +37 -46
- package/dist/cjs/rn-commands/bundle/buildBundle.native.cjs +57 -0
- package/dist/cjs/rn-commands/bundle/buildBundle.native.js +39 -47
- package/dist/cjs/rn-commands/bundle/buildBundle.native.js.map +1 -1
- package/dist/cjs/rn-commands/bundle/buildBundleWithConfig.cjs +57 -68
- package/dist/cjs/rn-commands/bundle/buildBundleWithConfig.native.cjs +81 -0
- package/dist/cjs/rn-commands/bundle/buildBundleWithConfig.native.js +59 -70
- package/dist/cjs/rn-commands/bundle/buildBundleWithConfig.native.js.map +1 -1
- package/dist/cjs/rn-commands/bundle/filterPlatformAssetScales.cjs +37 -39
- package/dist/cjs/rn-commands/bundle/filterPlatformAssetScales.native.cjs +70 -0
- package/dist/cjs/rn-commands/bundle/filterPlatformAssetScales.native.js +56 -59
- package/dist/cjs/rn-commands/bundle/filterPlatformAssetScales.native.js.map +1 -1
- package/dist/cjs/rn-commands/bundle/getAssetDestPathAndroid.cjs +20 -29
- package/dist/cjs/rn-commands/bundle/getAssetDestPathAndroid.native.cjs +39 -0
- package/dist/cjs/rn-commands/bundle/getAssetDestPathAndroid.native.js +20 -28
- package/dist/cjs/rn-commands/bundle/getAssetDestPathAndroid.native.js.map +1 -1
- package/dist/cjs/rn-commands/bundle/getAssetDestPathIOS.cjs +20 -33
- package/dist/cjs/rn-commands/bundle/getAssetDestPathIOS.native.cjs +38 -0
- package/dist/cjs/rn-commands/bundle/getAssetDestPathIOS.native.js +20 -32
- package/dist/cjs/rn-commands/bundle/getAssetDestPathIOS.native.js.map +1 -1
- package/dist/cjs/rn-commands/bundle/getBuildBundleFn.cjs +23 -32
- package/dist/cjs/rn-commands/bundle/getBuildBundleFn.native.cjs +38 -0
- package/dist/cjs/rn-commands/bundle/getBuildBundleFn.native.js +23 -31
- package/dist/cjs/rn-commands/bundle/getBuildBundleFn.native.js.map +1 -1
- package/dist/cjs/rn-commands/bundle/index.cjs +15 -17
- package/dist/cjs/rn-commands/bundle/index.native.cjs +30 -0
- package/dist/cjs/rn-commands/bundle/index.native.js +15 -16
- package/dist/cjs/rn-commands/bundle/index.native.js.map +1 -1
- package/dist/cjs/rn-commands/bundle/saveAssets.cjs +85 -96
- package/dist/cjs/rn-commands/bundle/saveAssets.native.cjs +129 -0
- package/dist/cjs/rn-commands/bundle/saveAssets.native.js +102 -114
- package/dist/cjs/rn-commands/bundle/saveAssets.native.js.map +1 -1
- package/dist/cjs/rn-commands/bundle/types.cjs +9 -11
- package/dist/cjs/rn-commands/bundle/types.native.cjs +18 -0
- package/dist/cjs/rn-commands/bundle/types.native.js +9 -10
- package/dist/cjs/rn-commands/bundle/types.native.js.map +1 -1
- package/dist/cjs/rn-commands/index.cjs +17 -26
- package/dist/cjs/rn-commands/index.native.cjs +32 -0
- package/dist/cjs/rn-commands/index.native.js +17 -25
- package/dist/cjs/rn-commands/index.native.js.map +1 -1
- package/dist/cjs/transformer/babel-core.cjs +16 -18
- package/dist/cjs/transformer/babel-core.native.cjs +30 -0
- package/dist/cjs/transformer/babel-core.native.js +16 -17
- package/dist/cjs/transformer/babel-core.native.js.map +1 -1
- package/dist/cjs/transformer/babel-transformer.cjs +155 -151
- package/dist/cjs/transformer/babel-transformer.native.cjs +197 -0
- package/dist/cjs/transformer/babel-transformer.native.js +171 -158
- package/dist/cjs/transformer/babel-transformer.native.js.map +1 -1
- package/dist/cjs/transformer/expoVirtualEnv.cjs +92 -0
- package/dist/cjs/transformer/expoVirtualEnv.native.cjs +113 -0
- package/dist/cjs/transformer/expoVirtualEnv.native.js +115 -0
- package/dist/cjs/transformer/expoVirtualEnv.native.js.map +1 -0
- package/dist/cjs/transformer/loadBabelConfig.cjs +44 -49
- package/dist/cjs/transformer/loadBabelConfig.native.cjs +64 -0
- package/dist/cjs/transformer/loadBabelConfig.native.js +48 -52
- package/dist/cjs/transformer/loadBabelConfig.native.js.map +1 -1
- package/dist/cjs/transformer/metroNativeWorker.cjs +1436 -1489
- package/dist/cjs/transformer/metroNativeWorker.native.cjs +2525 -0
- package/dist/cjs/transformer/metroNativeWorker.native.js +2414 -2561
- package/dist/cjs/transformer/metroNativeWorker.native.js.map +1 -1
- package/dist/cjs/transformer/transformSync.cjs +48 -64
- package/dist/cjs/transformer/transformSync.native.cjs +74 -0
- package/dist/cjs/transformer/transformSync.native.js +50 -65
- package/dist/cjs/transformer/transformSync.native.js.map +1 -1
- package/dist/cjs/transformer/types.cjs +9 -11
- package/dist/cjs/transformer/types.native.cjs +18 -0
- package/dist/cjs/transformer/types.native.js +9 -10
- package/dist/cjs/transformer/types.native.js.map +1 -1
- package/dist/cjs/utils/exit.cjs +141 -139
- package/dist/cjs/utils/exit.native.cjs +266 -0
- package/dist/cjs/utils/exit.native.js +228 -241
- package/dist/cjs/utils/exit.native.js.map +1 -1
- package/dist/cjs/utils/getTerminalReporter.cjs +35 -47
- package/dist/cjs/utils/getTerminalReporter.native.cjs +57 -0
- package/dist/cjs/utils/getTerminalReporter.native.js +38 -49
- package/dist/cjs/utils/getTerminalReporter.native.js.map +1 -1
- package/dist/cjs/utils/metroCacheManager.cjs +84 -99
- package/dist/cjs/utils/metroCacheManager.native.cjs +130 -0
- package/dist/cjs/utils/metroCacheManager.native.js +102 -118
- package/dist/cjs/utils/metroCacheManager.native.js.map +1 -1
- package/dist/cjs/utils/projectImport.cjs +40 -51
- package/dist/cjs/utils/projectImport.native.cjs +64 -0
- package/dist/cjs/utils/projectImport.native.js +41 -58
- package/dist/cjs/utils/projectImport.native.js.map +1 -1
- package/dist/esm/babel-plugins/import-meta-env-plugin.mjs +72 -86
- package/dist/esm/babel-plugins/import-meta-env-plugin.mjs.map +1 -1
- package/dist/esm/babel-plugins/import-meta-env-plugin.native.js +78 -92
- package/dist/esm/babel-plugins/import-meta-env-plugin.native.js.map +1 -1
- package/dist/esm/env/platformEnv.mjs +42 -39
- package/dist/esm/env/platformEnv.mjs.map +1 -1
- package/dist/esm/env/platformEnv.native.js +59 -58
- package/dist/esm/env/platformEnv.native.js.map +1 -1
- package/dist/esm/index.js +3 -4
- package/dist/esm/index.mjs +3 -4
- package/dist/esm/index.native.js +3 -4
- package/dist/esm/metro-config/getMetroBabelConfigFromViteConfig.mjs +42 -33
- package/dist/esm/metro-config/getMetroBabelConfigFromViteConfig.mjs.map +1 -1
- package/dist/esm/metro-config/getMetroBabelConfigFromViteConfig.native.js +83 -77
- package/dist/esm/metro-config/getMetroBabelConfigFromViteConfig.native.js.map +1 -1
- package/dist/esm/metro-config/getMetroConfigFromViteConfig.mjs +287 -232
- package/dist/esm/metro-config/getMetroConfigFromViteConfig.mjs.map +1 -1
- package/dist/esm/metro-config/getMetroConfigFromViteConfig.native.js +311 -243
- package/dist/esm/metro-config/getMetroConfigFromViteConfig.native.js.map +1 -1
- package/dist/esm/metro-config/patchMetroServerWithViteConfigAndMetroPluginOptions.mjs +26 -26
- package/dist/esm/metro-config/patchMetroServerWithViteConfigAndMetroPluginOptions.mjs.map +1 -1
- package/dist/esm/metro-config/patchMetroServerWithViteConfigAndMetroPluginOptions.native.js +27 -27
- package/dist/esm/metro-config/patchMetroServerWithViteConfigAndMetroPluginOptions.native.js.map +1 -1
- package/dist/esm/metro-config/types.mjs +0 -2
- package/dist/esm/metro-config/types.native.js +0 -2
- package/dist/esm/plugins/metroPlugin.mjs +195 -222
- package/dist/esm/plugins/metroPlugin.mjs.map +1 -1
- package/dist/esm/plugins/metroPlugin.native.js +201 -228
- package/dist/esm/plugins/metroPlugin.native.js.map +1 -1
- package/dist/esm/rn-commands/bundle/assetCatalogIOS.mjs +38 -38
- package/dist/esm/rn-commands/bundle/assetCatalogIOS.mjs.map +1 -1
- package/dist/esm/rn-commands/bundle/assetCatalogIOS.native.js +76 -80
- package/dist/esm/rn-commands/bundle/assetCatalogIOS.native.js.map +1 -1
- package/dist/esm/rn-commands/bundle/assetPathUtils.mjs +38 -37
- package/dist/esm/rn-commands/bundle/assetPathUtils.mjs.map +1 -1
- package/dist/esm/rn-commands/bundle/assetPathUtils.native.js +38 -37
- package/dist/esm/rn-commands/bundle/assetPathUtils.native.js.map +1 -1
- package/dist/esm/rn-commands/bundle/buildBundle.mjs +25 -28
- package/dist/esm/rn-commands/bundle/buildBundle.mjs.map +1 -1
- package/dist/esm/rn-commands/bundle/buildBundle.native.js +27 -30
- package/dist/esm/rn-commands/bundle/buildBundle.native.js.map +1 -1
- package/dist/esm/rn-commands/bundle/buildBundleWithConfig.mjs +43 -43
- package/dist/esm/rn-commands/bundle/buildBundleWithConfig.mjs.map +1 -1
- package/dist/esm/rn-commands/bundle/buildBundleWithConfig.native.js +45 -46
- package/dist/esm/rn-commands/bundle/buildBundleWithConfig.native.js.map +1 -1
- package/dist/esm/rn-commands/bundle/filterPlatformAssetScales.mjs +24 -21
- package/dist/esm/rn-commands/bundle/filterPlatformAssetScales.mjs.map +1 -1
- package/dist/esm/rn-commands/bundle/filterPlatformAssetScales.native.js +43 -42
- package/dist/esm/rn-commands/bundle/filterPlatformAssetScales.native.js.map +1 -1
- package/dist/esm/rn-commands/bundle/getAssetDestPathAndroid.mjs +5 -3
- package/dist/esm/rn-commands/bundle/getAssetDestPathAndroid.mjs.map +1 -1
- package/dist/esm/rn-commands/bundle/getAssetDestPathAndroid.native.js +5 -3
- package/dist/esm/rn-commands/bundle/getAssetDestPathAndroid.native.js.map +1 -1
- package/dist/esm/rn-commands/bundle/getAssetDestPathIOS.mjs +5 -7
- package/dist/esm/rn-commands/bundle/getAssetDestPathIOS.mjs.map +1 -1
- package/dist/esm/rn-commands/bundle/getAssetDestPathIOS.native.js +5 -7
- package/dist/esm/rn-commands/bundle/getAssetDestPathIOS.native.js.map +1 -1
- package/dist/esm/rn-commands/bundle/getBuildBundleFn.mjs +11 -14
- package/dist/esm/rn-commands/bundle/getBuildBundleFn.mjs.map +1 -1
- package/dist/esm/rn-commands/bundle/getBuildBundleFn.native.js +11 -14
- package/dist/esm/rn-commands/bundle/getBuildBundleFn.native.js.map +1 -1
- package/dist/esm/rn-commands/bundle/index.mjs +2 -2
- package/dist/esm/rn-commands/bundle/index.native.js +2 -2
- package/dist/esm/rn-commands/bundle/saveAssets.mjs +70 -70
- package/dist/esm/rn-commands/bundle/saveAssets.mjs.map +1 -1
- package/dist/esm/rn-commands/bundle/saveAssets.native.js +87 -89
- package/dist/esm/rn-commands/bundle/saveAssets.native.js.map +1 -1
- package/dist/esm/rn-commands/bundle/types.mjs +0 -2
- package/dist/esm/rn-commands/bundle/types.native.js +0 -2
- package/dist/esm/rn-commands/index.mjs +2 -2
- package/dist/esm/rn-commands/index.native.js +2 -2
- package/dist/esm/transformer/babel-core.mjs +2 -2
- package/dist/esm/transformer/babel-core.native.js +2 -2
- package/dist/esm/transformer/babel-transformer.mjs +139 -132
- package/dist/esm/transformer/babel-transformer.mjs.map +1 -1
- package/dist/esm/transformer/babel-transformer.native.js +152 -142
- package/dist/esm/transformer/babel-transformer.native.js.map +1 -1
- package/dist/esm/transformer/expoVirtualEnv.mjs +67 -0
- package/dist/esm/transformer/expoVirtualEnv.mjs.map +1 -0
- package/dist/esm/transformer/expoVirtualEnv.native.js +86 -0
- package/dist/esm/transformer/expoVirtualEnv.native.js.map +1 -0
- package/dist/esm/transformer/loadBabelConfig.mjs +29 -23
- package/dist/esm/transformer/loadBabelConfig.mjs.map +1 -1
- package/dist/esm/transformer/loadBabelConfig.native.js +33 -27
- package/dist/esm/transformer/loadBabelConfig.native.js.map +1 -1
- package/dist/esm/transformer/metroNativeWorker.mjs +1399 -1443
- package/dist/esm/transformer/metroNativeWorker.mjs.map +1 -1
- package/dist/esm/transformer/metroNativeWorker.native.js +2377 -2516
- package/dist/esm/transformer/metroNativeWorker.native.js.map +1 -1
- package/dist/esm/transformer/transformSync.mjs +33 -38
- package/dist/esm/transformer/transformSync.mjs.map +1 -1
- package/dist/esm/transformer/transformSync.native.js +35 -40
- package/dist/esm/transformer/transformSync.native.js.map +1 -1
- package/dist/esm/transformer/types.mjs +0 -2
- package/dist/esm/transformer/types.native.js +0 -2
- package/dist/esm/utils/exit.mjs +123 -112
- package/dist/esm/utils/exit.mjs.map +1 -1
- package/dist/esm/utils/exit.native.js +210 -215
- package/dist/esm/utils/exit.native.js.map +1 -1
- package/dist/esm/utils/getTerminalReporter.mjs +20 -21
- package/dist/esm/utils/getTerminalReporter.mjs.map +1 -1
- package/dist/esm/utils/getTerminalReporter.native.js +23 -24
- package/dist/esm/utils/getTerminalReporter.native.js.map +1 -1
- package/dist/esm/utils/metroCacheManager.mjs +73 -82
- package/dist/esm/utils/metroCacheManager.mjs.map +1 -1
- package/dist/esm/utils/metroCacheManager.native.js +91 -102
- package/dist/esm/utils/metroCacheManager.native.js.map +1 -1
- package/dist/esm/utils/projectImport.mjs +23 -25
- package/dist/esm/utils/projectImport.mjs.map +1 -1
- package/dist/esm/utils/projectImport.native.js +24 -33
- package/dist/esm/utils/projectImport.native.js.map +1 -1
- package/package.json +16 -18
- package/src/babel-plugins/import-meta-env-plugin.ts +1 -1
- package/src/env/platformEnv.test.ts +44 -0
- package/src/env/platformEnv.ts +6 -3
- package/src/index.ts +0 -2
- package/src/metro-config/getMetroBabelConfigFromViteConfig.test.ts +52 -0
- package/src/metro-config/getMetroBabelConfigFromViteConfig.ts +8 -7
- package/src/metro-config/getMetroConfigFromViteConfig.test.ts +263 -0
- package/src/metro-config/getMetroConfigFromViteConfig.ts +226 -109
- package/src/metro-config/glbAssets.test.ts +57 -0
- package/src/plugins/metroPlugin.ts +3 -6
- package/src/transformer/babel-transformer.test.ts +118 -0
- package/src/transformer/babel-transformer.ts +102 -15
- package/src/transformer/expoVirtualEnv.integration.test.ts +106 -0
- package/src/transformer/expoVirtualEnv.test.ts +72 -0
- package/src/transformer/expoVirtualEnv.ts +115 -0
- package/src/transformer/loadBabelConfig.ts +3 -1
- package/src/transformer/metroNativeWorker.test.ts +425 -36
- package/src/transformer/metroNativeWorker.ts +72 -74
- package/src/transformer/swiftPackageTransform.test.ts +95 -0
- package/src/transformer/transformSync.test.ts +22 -0
- package/src/transformer/transformSync.ts +4 -4
- package/src/utils/exit.ts +2 -2
- package/src/utils/getTerminalReporter.ts +1 -1
- package/src/utils/projectImport.ts +2 -2
- package/types/babel-plugins/import-meta-env-plugin.d.ts +1 -1
- package/types/babel-plugins/import-meta-env-plugin.d.ts.map +1 -1
- package/types/env/platformEnv.d.ts +2 -1
- package/types/env/platformEnv.d.ts.map +1 -1
- package/types/index.d.ts +0 -2
- package/types/index.d.ts.map +1 -1
- package/types/metro-config/getMetroBabelConfigFromViteConfig.d.ts +1 -1
- package/types/metro-config/getMetroBabelConfigFromViteConfig.d.ts.map +1 -1
- package/types/metro-config/getMetroConfigFromViteConfig.d.ts +2 -2
- package/types/metro-config/getMetroConfigFromViteConfig.d.ts.map +1 -1
- package/types/plugins/metroPlugin.d.ts +2 -4
- package/types/plugins/metroPlugin.d.ts.map +1 -1
- package/types/rn-commands/bundle/assetPathUtils.d.ts.map +1 -1
- package/types/rn-commands/bundle/filterPlatformAssetScales.d.ts.map +1 -1
- package/types/rn-commands/bundle/getAssetDestPathAndroid.d.ts.map +1 -1
- package/types/rn-commands/bundle/getAssetDestPathIOS.d.ts.map +1 -1
- package/types/rn-commands/bundle/saveAssets.d.ts.map +1 -1
- package/types/transformer/babel-transformer.d.ts +10 -1
- package/types/transformer/babel-transformer.d.ts.map +1 -1
- package/types/transformer/expoVirtualEnv.d.ts +8 -0
- package/types/transformer/expoVirtualEnv.d.ts.map +1 -0
- package/types/transformer/loadBabelConfig.d.ts.map +1 -1
- package/types/transformer/metroNativeWorker.d.ts +7 -8
- package/types/transformer/metroNativeWorker.d.ts.map +1 -1
- package/types/utils/projectImport.d.ts +2 -2
- package/dist/cjs/plugins/expoManifestRequestHandlerPlugin.cjs +0 -71
- package/dist/cjs/plugins/expoManifestRequestHandlerPlugin.native.js +0 -82
- package/dist/cjs/plugins/expoManifestRequestHandlerPlugin.native.js.map +0 -1
- package/dist/cjs/transformer/metroNativeWorker.test.cjs +0 -897
- package/dist/cjs/transformer/metroNativeWorker.test.native.js +0 -1010
- package/dist/cjs/transformer/metroNativeWorker.test.native.js.map +0 -1
- package/dist/cjs/transformer/transformSync.test.cjs +0 -36
- package/dist/cjs/transformer/transformSync.test.native.js +0 -49
- package/dist/cjs/transformer/transformSync.test.native.js.map +0 -1
- package/dist/cjs/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.cjs +0 -39
- package/dist/cjs/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.native.js +0 -42
- package/dist/cjs/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.native.js.map +0 -1
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/index.mjs.map +0 -1
- package/dist/esm/index.native.js.map +0 -1
- package/dist/esm/metro-config/types.mjs.map +0 -1
- package/dist/esm/metro-config/types.native.js.map +0 -1
- package/dist/esm/plugins/expoManifestRequestHandlerPlugin.mjs +0 -46
- package/dist/esm/plugins/expoManifestRequestHandlerPlugin.mjs.map +0 -1
- package/dist/esm/plugins/expoManifestRequestHandlerPlugin.native.js +0 -54
- package/dist/esm/plugins/expoManifestRequestHandlerPlugin.native.js.map +0 -1
- package/dist/esm/rn-commands/bundle/index.mjs.map +0 -1
- package/dist/esm/rn-commands/bundle/index.native.js.map +0 -1
- package/dist/esm/rn-commands/bundle/types.mjs.map +0 -1
- package/dist/esm/rn-commands/bundle/types.native.js.map +0 -1
- package/dist/esm/rn-commands/index.mjs.map +0 -1
- package/dist/esm/rn-commands/index.native.js.map +0 -1
- package/dist/esm/transformer/babel-core.mjs.map +0 -1
- package/dist/esm/transformer/babel-core.native.js.map +0 -1
- package/dist/esm/transformer/metroNativeWorker.test.mjs +0 -861
- package/dist/esm/transformer/metroNativeWorker.test.mjs.map +0 -1
- package/dist/esm/transformer/metroNativeWorker.test.native.js +0 -972
- package/dist/esm/transformer/metroNativeWorker.test.native.js.map +0 -1
- package/dist/esm/transformer/transformSync.test.mjs +0 -37
- package/dist/esm/transformer/transformSync.test.mjs.map +0 -1
- package/dist/esm/transformer/transformSync.test.native.js +0 -47
- package/dist/esm/transformer/transformSync.test.native.js.map +0 -1
- package/dist/esm/transformer/types.mjs.map +0 -1
- package/dist/esm/transformer/types.native.js.map +0 -1
- package/dist/esm/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.mjs +0 -14
- package/dist/esm/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.mjs.map +0 -1
- package/dist/esm/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.native.js +0 -14
- package/dist/esm/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.native.js.map +0 -1
- package/src/plugins/expoManifestRequestHandlerPlugin.ts +0 -88
- package/src/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.ts +0 -28
- package/types/plugins/expoManifestRequestHandlerPlugin.d.ts +0 -14
- package/types/plugins/expoManifestRequestHandlerPlugin.d.ts.map +0 -1
- package/types/transformer/metroNativeWorker.test.d.ts +0 -2
- package/types/transformer/metroNativeWorker.test.d.ts.map +0 -1
- package/types/transformer/transformSync.test.d.ts +0 -2
- package/types/transformer/transformSync.test.d.ts.map +0 -1
- package/types/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.d.ts +0 -5
- package/types/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.d.ts.map +0 -1
|
@@ -3,6 +3,7 @@ import * as babel from '@babel/core'
|
|
|
3
3
|
import * as vm from 'node:vm'
|
|
4
4
|
import { parseSync } from 'oxc-parser'
|
|
5
5
|
import * as fs from 'node:fs'
|
|
6
|
+
import * as os from 'node:os'
|
|
6
7
|
import * as path from 'node:path'
|
|
7
8
|
import { createRequire } from 'node:module'
|
|
8
9
|
import {
|
|
@@ -18,7 +19,10 @@ import {
|
|
|
18
19
|
applyEnvironmentGuard,
|
|
19
20
|
getRemoveServerCodeRouterRoot,
|
|
20
21
|
} from './metroNativeWorker'
|
|
21
|
-
import {
|
|
22
|
+
import {
|
|
23
|
+
buildMetroConfigInputFromViteConfig,
|
|
24
|
+
getMetroConfigFromViteConfig,
|
|
25
|
+
} from '../metro-config/getMetroConfigFromViteConfig'
|
|
22
26
|
|
|
23
27
|
const babelCalls = {
|
|
24
28
|
transform: 0,
|
|
@@ -31,33 +35,25 @@ const babelCalls = {
|
|
|
31
35
|
|
|
32
36
|
vi.mock('@babel/core', async (importOriginal) => {
|
|
33
37
|
const actual = await importOriginal<typeof import('@babel/core')>()
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
babelCalls.parse++
|
|
54
|
-
return (actual.parse as any)(...args)
|
|
55
|
-
}),
|
|
56
|
-
parseSync: vi.fn((...args: any[]) => {
|
|
57
|
-
babelCalls.parseSync++
|
|
58
|
-
return (actual.parseSync as any)(...args)
|
|
59
|
-
}),
|
|
60
|
-
}
|
|
38
|
+
const names = [
|
|
39
|
+
'transform',
|
|
40
|
+
'transformSync',
|
|
41
|
+
'transformAsync',
|
|
42
|
+
'transformFromAstSync',
|
|
43
|
+
'parse',
|
|
44
|
+
'parseSync',
|
|
45
|
+
] as const
|
|
46
|
+
const counted = Object.fromEntries(
|
|
47
|
+
names.map((name) => [
|
|
48
|
+
name,
|
|
49
|
+
vi.fn((...args: any[]) => {
|
|
50
|
+
babelCalls[name]++
|
|
51
|
+
return (actual[name] as any)(...args)
|
|
52
|
+
}),
|
|
53
|
+
])
|
|
54
|
+
)
|
|
55
|
+
// @vxrn/compiler reaches babel through the default export, so count that too
|
|
56
|
+
return { ...actual, ...counted, default: { ...actual, ...counted } }
|
|
61
57
|
})
|
|
62
58
|
|
|
63
59
|
// module scope so every describe in this file can assert it, not just the first
|
|
@@ -70,6 +66,20 @@ beforeEach(() => {
|
|
|
70
66
|
babelCalls.parseSync = 0
|
|
71
67
|
})
|
|
72
68
|
|
|
69
|
+
// flow stripping is the one place the worker runs babel: react-native's flow
|
|
70
|
+
// syntax (readonly properties, enums) is beyond fast-flow-transform, so the
|
|
71
|
+
// hermes-parser pass in @vxrn/compiler strips it in a single transform call
|
|
72
|
+
function assertOnlyFlowStripBabelCall() {
|
|
73
|
+
expect(babelCalls).toEqual({
|
|
74
|
+
transform: 1,
|
|
75
|
+
transformSync: 0,
|
|
76
|
+
transformAsync: 0,
|
|
77
|
+
transformFromAstSync: 0,
|
|
78
|
+
parse: 0,
|
|
79
|
+
parseSync: 0,
|
|
80
|
+
})
|
|
81
|
+
}
|
|
82
|
+
|
|
73
83
|
function assertZeroBabelCalls() {
|
|
74
84
|
expect(babelCalls.transform).toBe(0)
|
|
75
85
|
expect(babelCalls.transformSync).toBe(0)
|
|
@@ -236,7 +246,9 @@ describe('metroNativeWorker', () => {
|
|
|
236
246
|
off.find((d) => d.name === 'react-native-worklets-core')!.data.isOptional
|
|
237
247
|
).toBeUndefined()
|
|
238
248
|
|
|
239
|
-
const on = extractDependencies(code, 'setup.js', {
|
|
249
|
+
const on = extractDependencies(code, 'setup.js', {
|
|
250
|
+
allowOptionalDependencies: true,
|
|
251
|
+
})
|
|
240
252
|
expect(on.find((d) => d.name === 'react-native-worklets-core')!.data.isOptional).toBe(
|
|
241
253
|
true
|
|
242
254
|
)
|
|
@@ -399,7 +411,7 @@ describe('metroNativeWorker', () => {
|
|
|
399
411
|
it('handles Asset files without Babel', async () => {
|
|
400
412
|
const result = await transform(
|
|
401
413
|
{
|
|
402
|
-
assetRegistryPath: 'react-native/
|
|
414
|
+
assetRegistryPath: 'react-native/asset-registry',
|
|
403
415
|
publicPath: '/assets',
|
|
404
416
|
},
|
|
405
417
|
'/project',
|
|
@@ -414,10 +426,10 @@ describe('metroNativeWorker', () => {
|
|
|
414
426
|
expect(result.output[0].data.code).toContain('__d(function')
|
|
415
427
|
|
|
416
428
|
const depNames = result.dependencies.map((d) => d.name)
|
|
417
|
-
expect(depNames).toContain('react-native/
|
|
429
|
+
expect(depNames).toContain('react-native/asset-registry')
|
|
418
430
|
})
|
|
419
431
|
|
|
420
|
-
it('
|
|
432
|
+
it('strips Flow types with a single hermes-parser Babel pass', async () => {
|
|
421
433
|
const flowSource = `
|
|
422
434
|
// @flow
|
|
423
435
|
function add(a: number, b: number): number {
|
|
@@ -434,11 +446,41 @@ describe('metroNativeWorker', () => {
|
|
|
434
446
|
{ dev: false, platform: 'ios', type: 'module' }
|
|
435
447
|
)
|
|
436
448
|
|
|
437
|
-
|
|
449
|
+
assertOnlyFlowStripBabelCall()
|
|
438
450
|
expect(result.output[0].data.code).not.toContain(': number')
|
|
439
451
|
expect(result.output[0].data.code).toContain('function add(a, b)')
|
|
440
452
|
})
|
|
441
453
|
|
|
454
|
+
it('lowers React Native Flow enums and readonly properties', async () => {
|
|
455
|
+
// react-native 0.87 ships VirtualView.js with exported Flow enums, and
|
|
456
|
+
// readonly object properties throughout its type declarations
|
|
457
|
+
const flowSource = `
|
|
458
|
+
// @flow strict-local
|
|
459
|
+
type Props = { readonly state: VirtualViewRenderState };
|
|
460
|
+
export enum VirtualViewRenderState {
|
|
461
|
+
Unknown = 0,
|
|
462
|
+
Rendered = 1,
|
|
463
|
+
None = 2,
|
|
464
|
+
}
|
|
465
|
+
export function isRendered(state: VirtualViewRenderState): boolean {
|
|
466
|
+
return state === VirtualViewRenderState.Rendered;
|
|
467
|
+
}
|
|
468
|
+
`
|
|
469
|
+
|
|
470
|
+
const result = await transform(
|
|
471
|
+
{},
|
|
472
|
+
'/project',
|
|
473
|
+
'node_modules/react-native/src/private/components/virtualview/VirtualView.js',
|
|
474
|
+
Buffer.from(flowSource, 'utf8'),
|
|
475
|
+
{ dev: false, platform: 'ios', type: 'module' }
|
|
476
|
+
)
|
|
477
|
+
|
|
478
|
+
assertOnlyFlowStripBabelCall()
|
|
479
|
+
expect(result.output[0].data.code).not.toContain('enum VirtualViewRenderState')
|
|
480
|
+
expect(result.output[0].data.code).not.toContain('readonly')
|
|
481
|
+
expect(result.dependencies.map((d) => d.name)).toContain('flow-enums-runtime')
|
|
482
|
+
})
|
|
483
|
+
|
|
442
484
|
it('generates a deterministic cache key without Babel', () => {
|
|
443
485
|
const key1 = getCacheKey(
|
|
444
486
|
{ globalPrefix: '__one_', minifierPath: 'terser' },
|
|
@@ -470,7 +512,7 @@ describe('metroNativeWorker', () => {
|
|
|
470
512
|
expect(configDefault.defaultConfig.transformerPath).toContain('metroNativeWorker')
|
|
471
513
|
expect(configDefault.defaultConfig.transformer.transformerPath).toBeUndefined()
|
|
472
514
|
|
|
473
|
-
// Opting back into babel via metroPluginOptions leaves
|
|
515
|
+
// Opting back into babel via metroPluginOptions leaves Metro's default
|
|
474
516
|
// worker in the key, which is itself proof that top level is where metro
|
|
475
517
|
// reads it from.
|
|
476
518
|
const configOptOff = await buildMetroConfigInputFromViteConfig(mockViteConfig, {
|
|
@@ -515,6 +557,151 @@ describe('metroNativeWorker', () => {
|
|
|
515
557
|
)
|
|
516
558
|
})
|
|
517
559
|
|
|
560
|
+
it('falls back to default Metro babel transformer when a user babel config exists', async () => {
|
|
561
|
+
const tempDir = path.join(process.cwd(), `.tmp-metro-test-${Date.now()}`)
|
|
562
|
+
fs.mkdirSync(tempDir, { recursive: true })
|
|
563
|
+
fs.writeFileSync(path.join(tempDir, 'package.json'), '{}')
|
|
564
|
+
try {
|
|
565
|
+
const mockViteConfig = { root: tempDir } as any
|
|
566
|
+
delete process.env.ONE_METRO_NATIVE_TRANSFORMS
|
|
567
|
+
|
|
568
|
+
// With no config, defaults to metroNativeWorker
|
|
569
|
+
const config1 = await buildMetroConfigInputFromViteConfig(mockViteConfig, {})
|
|
570
|
+
expect(config1.defaultConfig.transformerPath).toContain('metroNativeWorker')
|
|
571
|
+
|
|
572
|
+
// a config written by `one patch` is ignored, still uses metroNativeWorker
|
|
573
|
+
const babelConfigPath = path.join(tempDir, 'babel.config.js')
|
|
574
|
+
fs.writeFileSync(
|
|
575
|
+
babelConfigPath,
|
|
576
|
+
'// @one/generated bundler-config\nmodule.exports = {}'
|
|
577
|
+
)
|
|
578
|
+
const config2 = await buildMetroConfigInputFromViteConfig(mockViteConfig, {})
|
|
579
|
+
expect(config2.defaultConfig.transformerPath).toContain('metroNativeWorker')
|
|
580
|
+
|
|
581
|
+
// User config: falls back to metro default transformer (not metroNativeWorker)
|
|
582
|
+
fs.writeFileSync(babelConfigPath, 'module.exports = { plugins: ["my-plugin"] }')
|
|
583
|
+
const config3 = await buildMetroConfigInputFromViteConfig(mockViteConfig, {})
|
|
584
|
+
expect(config3.defaultConfig.transformerPath).not.toContain('metroNativeWorker')
|
|
585
|
+
|
|
586
|
+
// Explicit env var ONE_METRO_NATIVE_TRANSFORMS=1 forces native worker even with user babel config
|
|
587
|
+
process.env.ONE_METRO_NATIVE_TRANSFORMS = '1'
|
|
588
|
+
const config4 = await buildMetroConfigInputFromViteConfig(mockViteConfig, {})
|
|
589
|
+
expect(config4.defaultConfig.transformerPath).toContain('metroNativeWorker')
|
|
590
|
+
delete process.env.ONE_METRO_NATIVE_TRANSFORMS
|
|
591
|
+
|
|
592
|
+
// Explicit nativeTransforms: true also forces native worker
|
|
593
|
+
const config5 = await buildMetroConfigInputFromViteConfig(mockViteConfig, {
|
|
594
|
+
nativeTransforms: true,
|
|
595
|
+
})
|
|
596
|
+
expect(config5.defaultConfig.transformerPath).toContain('metroNativeWorker')
|
|
597
|
+
} finally {
|
|
598
|
+
delete process.env.ONE_METRO_NATIVE_TRANSFORMS
|
|
599
|
+
fs.rmSync(tempDir, { recursive: true, force: true })
|
|
600
|
+
}
|
|
601
|
+
})
|
|
602
|
+
|
|
603
|
+
it('warns naming the ignored user babel config when native transforms are forced', async () => {
|
|
604
|
+
const tempDir = fs.realpathSync(
|
|
605
|
+
fs.mkdtempSync(path.join(process.cwd(), '.tmp-metro-test-'))
|
|
606
|
+
)
|
|
607
|
+
fs.writeFileSync(path.join(tempDir, 'package.json'), '{}')
|
|
608
|
+
const babelConfigPath = path.join(tempDir, 'babel.config.js')
|
|
609
|
+
fs.writeFileSync(babelConfigPath, 'module.exports = { plugins: [] }')
|
|
610
|
+
try {
|
|
611
|
+
delete process.env.ONE_METRO_NATIVE_TRANSFORMS
|
|
612
|
+
const mockViteConfig = { root: tempDir } as any
|
|
613
|
+
const warnsWithConfig = (spy: any) =>
|
|
614
|
+
spy.mock.calls.some((args: any[]) => args.join(' ').includes(babelConfigPath))
|
|
615
|
+
|
|
616
|
+
// explicit option force still uses the worker, but names the dropped config
|
|
617
|
+
const optionWarn = vi.spyOn(console, 'warn').mockImplementation(() => {})
|
|
618
|
+
try {
|
|
619
|
+
const forced = await buildMetroConfigInputFromViteConfig(mockViteConfig, {
|
|
620
|
+
nativeTransforms: true,
|
|
621
|
+
})
|
|
622
|
+
expect(forced.defaultConfig.transformerPath).toContain('metroNativeWorker')
|
|
623
|
+
expect(warnsWithConfig(optionWarn)).toBe(true)
|
|
624
|
+
} finally {
|
|
625
|
+
optionWarn.mockRestore()
|
|
626
|
+
}
|
|
627
|
+
|
|
628
|
+
// env var force warns the same way
|
|
629
|
+
const envWarn = vi.spyOn(console, 'warn').mockImplementation(() => {})
|
|
630
|
+
try {
|
|
631
|
+
process.env.ONE_METRO_NATIVE_TRANSFORMS = '1'
|
|
632
|
+
const envForced = await buildMetroConfigInputFromViteConfig(mockViteConfig, {})
|
|
633
|
+
expect(envForced.defaultConfig.transformerPath).toContain('metroNativeWorker')
|
|
634
|
+
expect(warnsWithConfig(envWarn)).toBe(true)
|
|
635
|
+
} finally {
|
|
636
|
+
envWarn.mockRestore()
|
|
637
|
+
delete process.env.ONE_METRO_NATIVE_TRANSFORMS
|
|
638
|
+
}
|
|
639
|
+
|
|
640
|
+
// default (no force) respects the config silently: babel fallback, no warning
|
|
641
|
+
const respectedWarn = vi.spyOn(console, 'warn').mockImplementation(() => {})
|
|
642
|
+
try {
|
|
643
|
+
const respected = await buildMetroConfigInputFromViteConfig(mockViteConfig, {})
|
|
644
|
+
expect(respected.defaultConfig.transformerPath).not.toContain('metroNativeWorker')
|
|
645
|
+
expect(warnsWithConfig(respectedWarn)).toBe(false)
|
|
646
|
+
} finally {
|
|
647
|
+
respectedWarn.mockRestore()
|
|
648
|
+
}
|
|
649
|
+
} finally {
|
|
650
|
+
delete process.env.ONE_METRO_NATIVE_TRANSFORMS
|
|
651
|
+
fs.rmSync(tempDir, { recursive: true, force: true })
|
|
652
|
+
}
|
|
653
|
+
})
|
|
654
|
+
|
|
655
|
+
it('selects the same transformer in both metro config builders', async () => {
|
|
656
|
+
const tempDir = fs.realpathSync(
|
|
657
|
+
fs.mkdtempSync(path.join(process.cwd(), '.tmp-metro-test-'))
|
|
658
|
+
)
|
|
659
|
+
fs.writeFileSync(path.join(tempDir, 'package.json'), '{}')
|
|
660
|
+
try {
|
|
661
|
+
delete process.env.ONE_METRO_NATIVE_TRANSFORMS
|
|
662
|
+
const mockViteConfig = { root: tempDir } as any
|
|
663
|
+
|
|
664
|
+
// no user config: both builders default to the native worker
|
|
665
|
+
const nativeInput = await buildMetroConfigInputFromViteConfig(mockViteConfig, {})
|
|
666
|
+
const nativeFull = await getMetroConfigFromViteConfig(mockViteConfig, {})
|
|
667
|
+
expect(nativeInput.defaultConfig.transformerPath).toContain('metroNativeWorker')
|
|
668
|
+
expect((nativeFull as any).transformerPath).toContain('metroNativeWorker')
|
|
669
|
+
|
|
670
|
+
// user config: both builders fall back to the babel transformer
|
|
671
|
+
const babelConfigPath = path.join(tempDir, 'babel.config.js')
|
|
672
|
+
fs.writeFileSync(babelConfigPath, 'module.exports = { plugins: [] }')
|
|
673
|
+
const fallbackInput = await buildMetroConfigInputFromViteConfig(mockViteConfig, {})
|
|
674
|
+
const fallbackFull = await getMetroConfigFromViteConfig(mockViteConfig, {})
|
|
675
|
+
expect(fallbackInput.defaultConfig.transformerPath).not.toContain(
|
|
676
|
+
'metroNativeWorker'
|
|
677
|
+
)
|
|
678
|
+
expect((fallbackFull as any).transformerPath).not.toContain('metroNativeWorker')
|
|
679
|
+
|
|
680
|
+
// forced with a user config: both builders warn naming the ignored file
|
|
681
|
+
const forcedWarn = vi.spyOn(console, 'warn').mockImplementation(() => {})
|
|
682
|
+
try {
|
|
683
|
+
const forcedInput = await buildMetroConfigInputFromViteConfig(mockViteConfig, {
|
|
684
|
+
nativeTransforms: true,
|
|
685
|
+
})
|
|
686
|
+
const forcedFull = await getMetroConfigFromViteConfig(mockViteConfig, {
|
|
687
|
+
nativeTransforms: true,
|
|
688
|
+
})
|
|
689
|
+
expect(forcedInput.defaultConfig.transformerPath).toContain('metroNativeWorker')
|
|
690
|
+
expect((forcedFull as any).transformerPath).toContain('metroNativeWorker')
|
|
691
|
+
expect(
|
|
692
|
+
forcedWarn.mock.calls.some((args: any[]) =>
|
|
693
|
+
args.join(' ').includes(babelConfigPath)
|
|
694
|
+
)
|
|
695
|
+
).toBe(true)
|
|
696
|
+
} finally {
|
|
697
|
+
forcedWarn.mockRestore()
|
|
698
|
+
}
|
|
699
|
+
} finally {
|
|
700
|
+
delete process.env.ONE_METRO_NATIVE_TRANSFORMS
|
|
701
|
+
fs.rmSync(tempDir, { recursive: true, force: true })
|
|
702
|
+
}
|
|
703
|
+
})
|
|
704
|
+
|
|
518
705
|
it('transforms and executes a real 2-module Metro bundle through metro-runtime require polyfill', async () => {
|
|
519
706
|
// Probe 1 verification:
|
|
520
707
|
// Module 2 (dep.js): exports a value
|
|
@@ -1130,7 +1317,11 @@ describe('one native transform ports', () => {
|
|
|
1130
1317
|
it('inlines import.meta.env reads, which oxc otherwise lowers to an empty object', () => {
|
|
1131
1318
|
// oxc's CJS lowering emits `var import_meta = {}`, so an untouched
|
|
1132
1319
|
// `import.meta.env.X` silently reads undefined in every native bundle.
|
|
1133
|
-
const env = {
|
|
1320
|
+
const env = {
|
|
1321
|
+
DEV: false,
|
|
1322
|
+
VITE_POSTHOG_API_KEY: 'pk_live',
|
|
1323
|
+
TAMAGUI_TARGET: 'native',
|
|
1324
|
+
}
|
|
1134
1325
|
const out = applyInlineEnvVars(
|
|
1135
1326
|
`export const key = import.meta.env.VITE_POSTHOG_API_KEY;
|
|
1136
1327
|
export const target = import.meta.env?.TAMAGUI_TARGET;
|
|
@@ -1225,7 +1416,9 @@ export const all = { ...import.meta.env };`,
|
|
|
1225
1416
|
// takeout adds `hot-updater/babel-plugin` for OTA; dropping it silently
|
|
1226
1417
|
// would ship a build whose updates never apply.
|
|
1227
1418
|
const withPlugins = (plugins: any[]) =>
|
|
1228
|
-
({
|
|
1419
|
+
({
|
|
1420
|
+
customTransformOptions: { vite: { babelConfig: { plugins } } },
|
|
1421
|
+
}) as any
|
|
1229
1422
|
|
|
1230
1423
|
expect(() =>
|
|
1231
1424
|
assertNoUnportedBabelPlugins(
|
|
@@ -1284,3 +1477,199 @@ export const all = { ...import.meta.env };`,
|
|
|
1284
1477
|
)
|
|
1285
1478
|
})
|
|
1286
1479
|
})
|
|
1480
|
+
|
|
1481
|
+
describe('metro babel fallback config names', () => {
|
|
1482
|
+
it('extends json babel configs just like the compiler detection does', async () => {
|
|
1483
|
+
// loadBabelConfig memoizes a singleton, so each case gets a fresh module
|
|
1484
|
+
for (const name of ['babel.config.json', '.babelrc.json']) {
|
|
1485
|
+
vi.resetModules()
|
|
1486
|
+
const { loadBabelConfig } = await import('./loadBabelConfig')
|
|
1487
|
+
const tempDir = fs.realpathSync(
|
|
1488
|
+
fs.mkdtempSync(path.join(os.tmpdir(), 'vxrn-babel-json-'))
|
|
1489
|
+
)
|
|
1490
|
+
try {
|
|
1491
|
+
fs.writeFileSync(path.join(tempDir, name), JSON.stringify({ plugins: [] }))
|
|
1492
|
+
expect(loadBabelConfig({ projectRoot: tempDir })).toEqual({
|
|
1493
|
+
extends: path.join(tempDir, name),
|
|
1494
|
+
})
|
|
1495
|
+
} finally {
|
|
1496
|
+
fs.rmSync(tempDir, { recursive: true, force: true })
|
|
1497
|
+
}
|
|
1498
|
+
}
|
|
1499
|
+
|
|
1500
|
+
// control: js configs keep loading
|
|
1501
|
+
vi.resetModules()
|
|
1502
|
+
const { loadBabelConfig } = await import('./loadBabelConfig')
|
|
1503
|
+
const tempDir = fs.realpathSync(
|
|
1504
|
+
fs.mkdtempSync(path.join(os.tmpdir(), 'vxrn-babel-json-'))
|
|
1505
|
+
)
|
|
1506
|
+
try {
|
|
1507
|
+
fs.writeFileSync(
|
|
1508
|
+
path.join(tempDir, 'babel.config.js'),
|
|
1509
|
+
'module.exports = { plugins: [] }'
|
|
1510
|
+
)
|
|
1511
|
+
expect(loadBabelConfig({ projectRoot: tempDir })).toEqual({
|
|
1512
|
+
extends: path.join(tempDir, 'babel.config.js'),
|
|
1513
|
+
})
|
|
1514
|
+
} finally {
|
|
1515
|
+
fs.rmSync(tempDir, { recursive: true, force: true })
|
|
1516
|
+
}
|
|
1517
|
+
})
|
|
1518
|
+
})
|
|
1519
|
+
|
|
1520
|
+
describe('one public env contract in the metro worker', () => {
|
|
1521
|
+
it('inlines One and Expo public reads in dev and prod with no virtual module', () => {
|
|
1522
|
+
for (const isProduction of [false, true]) {
|
|
1523
|
+
const out = applyInlineEnvVars(
|
|
1524
|
+
`export const values = [process.env.ONE_PUBLIC_API, process.env.EXPO_PUBLIC_API, import.meta.env.EXPO_PUBLIC_API];
|
|
1525
|
+
export const all = { ...import.meta.env };`,
|
|
1526
|
+
'env.ts',
|
|
1527
|
+
isProduction,
|
|
1528
|
+
{ ONE_PUBLIC_API: 'https://api.test' }
|
|
1529
|
+
)
|
|
1530
|
+
expect(out).toContain(
|
|
1531
|
+
'export const values = ["https://api.test", "https://api.test", "https://api.test"];'
|
|
1532
|
+
)
|
|
1533
|
+
expect(out).toContain('"EXPO_PUBLIC_API":"https://api.test"')
|
|
1534
|
+
expect(out).not.toContain('expo/virtual/env')
|
|
1535
|
+
expect(out).not.toContain('_$$_EXPO_ENV')
|
|
1536
|
+
}
|
|
1537
|
+
})
|
|
1538
|
+
|
|
1539
|
+
it('preserves explicit conflicting values', () => {
|
|
1540
|
+
for (const isProduction of [false, true]) {
|
|
1541
|
+
const out = applyInlineEnvVars(
|
|
1542
|
+
'export const values = [process.env.ONE_PUBLIC_API, process.env.EXPO_PUBLIC_API];',
|
|
1543
|
+
'env.ts',
|
|
1544
|
+
isProduction,
|
|
1545
|
+
{ ONE_PUBLIC_API: 'one', EXPO_PUBLIC_API: 'expo' }
|
|
1546
|
+
)
|
|
1547
|
+
expect(out).toBe('export const values = ["one", "expo"];')
|
|
1548
|
+
}
|
|
1549
|
+
})
|
|
1550
|
+
|
|
1551
|
+
it('accepts Expo runtime feature flags that are not configured', () => {
|
|
1552
|
+
const out = applyInlineEnvVars(
|
|
1553
|
+
'export const useRnFetch = process.env.EXPO_PUBLIC_USE_RN_FETCH;',
|
|
1554
|
+
'/app/node_modules/expo/build/winter/runtime.native.js',
|
|
1555
|
+
false,
|
|
1556
|
+
{ EXPO_PUBLIC_USE_RN_FETCH: undefined }
|
|
1557
|
+
)
|
|
1558
|
+
expect(out).toBe('export const useRnFetch = undefined;')
|
|
1559
|
+
})
|
|
1560
|
+
|
|
1561
|
+
it('carries public aliases through the whole import.meta.env object', () => {
|
|
1562
|
+
const out = applyInlineEnvVars(
|
|
1563
|
+
'export const all = { ...import.meta.env };',
|
|
1564
|
+
'env.ts',
|
|
1565
|
+
true,
|
|
1566
|
+
{ ONE_PUBLIC_API: 'one' }
|
|
1567
|
+
)
|
|
1568
|
+
expect(out).toContain('"ONE_PUBLIC_API":"one"')
|
|
1569
|
+
expect(out).toContain('"EXPO_PUBLIC_API":"one"')
|
|
1570
|
+
})
|
|
1571
|
+
})
|
|
1572
|
+
|
|
1573
|
+
describe('optional expo virtual env', () => {
|
|
1574
|
+
const virtualFilename = '/proj/node_modules/expo/virtual/env.js'
|
|
1575
|
+
const virtualSource = 'export const env = process.env;'
|
|
1576
|
+
|
|
1577
|
+
function runFactory(
|
|
1578
|
+
code: string,
|
|
1579
|
+
opts: { requireImpl: (...args: any[]) => any; procEnv: Record<string, string> }
|
|
1580
|
+
) {
|
|
1581
|
+
const module = { exports: {} as any }
|
|
1582
|
+
vm.runInNewContext(code, {
|
|
1583
|
+
__d(factory: any) {
|
|
1584
|
+
factory(
|
|
1585
|
+
{},
|
|
1586
|
+
opts.requireImpl,
|
|
1587
|
+
(v: any) => v,
|
|
1588
|
+
(v: any) => v,
|
|
1589
|
+
module,
|
|
1590
|
+
module.exports,
|
|
1591
|
+
[]
|
|
1592
|
+
)
|
|
1593
|
+
},
|
|
1594
|
+
process: { env: opts.procEnv },
|
|
1595
|
+
console,
|
|
1596
|
+
})
|
|
1597
|
+
return module.exports
|
|
1598
|
+
}
|
|
1599
|
+
|
|
1600
|
+
const noRequire = () => {
|
|
1601
|
+
throw new Error('unexpected require call')
|
|
1602
|
+
}
|
|
1603
|
+
|
|
1604
|
+
it('merges .env files over process.env in dev like upstream', async () => {
|
|
1605
|
+
const result = await transform({}, '/proj', virtualFilename, Buffer.from(virtualSource), {
|
|
1606
|
+
dev: true,
|
|
1607
|
+
minify: false,
|
|
1608
|
+
platform: 'ios',
|
|
1609
|
+
type: 'module',
|
|
1610
|
+
customTransformOptions: { environment: 'client' },
|
|
1611
|
+
})
|
|
1612
|
+
const code = result.output[0].data.code
|
|
1613
|
+
expect(code).toContain('dotEnvModules')
|
|
1614
|
+
expect(code).toContain('.env.development.local')
|
|
1615
|
+
const contextModule: any = () => ({
|
|
1616
|
+
default: { EXPO_PUBLIC_SENTINEL_DOTENV: 'dotenv-sentinel-value' },
|
|
1617
|
+
})
|
|
1618
|
+
contextModule.keys = () => ['./.env']
|
|
1619
|
+
// metro lowers require.context(rel) to require(contextId, rel)
|
|
1620
|
+
const requireImpl: any = (_id: unknown, _rel?: unknown) => contextModule
|
|
1621
|
+
const mod = runFactory(code, {
|
|
1622
|
+
requireImpl,
|
|
1623
|
+
procEnv: { EXPO_PUBLIC_SENTINEL_PROC: 'proc-sentinel-value' },
|
|
1624
|
+
})
|
|
1625
|
+
expect(mod.env.EXPO_PUBLIC_SENTINEL_DOTENV).toBe('dotenv-sentinel-value')
|
|
1626
|
+
expect(mod.env.EXPO_PUBLIC_SENTINEL_PROC).toBe('proc-sentinel-value')
|
|
1627
|
+
})
|
|
1628
|
+
|
|
1629
|
+
it('throws a naming error in production like upstream', async () => {
|
|
1630
|
+
const result = await transform({}, '/proj', virtualFilename, Buffer.from(virtualSource), {
|
|
1631
|
+
dev: false,
|
|
1632
|
+
minify: false,
|
|
1633
|
+
platform: 'ios',
|
|
1634
|
+
type: 'module',
|
|
1635
|
+
customTransformOptions: { environment: 'client' },
|
|
1636
|
+
})
|
|
1637
|
+
const mod = runFactory(result.output[0].data.code, {
|
|
1638
|
+
requireImpl: noRequire,
|
|
1639
|
+
procEnv: {},
|
|
1640
|
+
})
|
|
1641
|
+
expect(() => mod.env.EXPO_PUBLIC_ANYTHING).toThrow(
|
|
1642
|
+
'not supported in production bundles'
|
|
1643
|
+
)
|
|
1644
|
+
})
|
|
1645
|
+
|
|
1646
|
+
it('leaves .env files alone without Expo installed', async () => {
|
|
1647
|
+
const result = await transform(
|
|
1648
|
+
{},
|
|
1649
|
+
'/proj-no-expo',
|
|
1650
|
+
'/proj-no-expo/.env',
|
|
1651
|
+
Buffer.from('EXPO_PUBLIC_A=1\nSECRET=2\n'),
|
|
1652
|
+
{
|
|
1653
|
+
dev: true,
|
|
1654
|
+
minify: false,
|
|
1655
|
+
platform: 'ios',
|
|
1656
|
+
type: 'module',
|
|
1657
|
+
customTransformOptions: { environment: 'client' },
|
|
1658
|
+
}
|
|
1659
|
+
)
|
|
1660
|
+
const code = result.output[0].data.code
|
|
1661
|
+
expect(code).toContain('EXPO_PUBLIC_A')
|
|
1662
|
+
expect(code).not.toContain('EXPO_PUBLIC_A":"1')
|
|
1663
|
+
})
|
|
1664
|
+
|
|
1665
|
+
it('leaves the virtual module alone outside client environments', async () => {
|
|
1666
|
+
const result = await transform({}, '/proj', virtualFilename, Buffer.from(virtualSource), {
|
|
1667
|
+
dev: true,
|
|
1668
|
+
minify: false,
|
|
1669
|
+
platform: 'ios',
|
|
1670
|
+
type: 'module',
|
|
1671
|
+
customTransformOptions: { environment: 'react-server' },
|
|
1672
|
+
})
|
|
1673
|
+
expect(result.output[0].data.code).not.toContain('require.context')
|
|
1674
|
+
})
|
|
1675
|
+
})
|