@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
|
@@ -5,20 +5,28 @@
|
|
|
5
5
|
* This source code is licensed under the MIT license found in the
|
|
6
6
|
* LICENSE file in the root directory of this source tree.
|
|
7
7
|
*/
|
|
8
|
-
//
|
|
9
|
-
//
|
|
8
|
+
// a fork of the upstream babel-transformer that adds support for web and node
|
|
9
|
+
// environments via `isServer` on the babel caller.
|
|
10
10
|
// See:
|
|
11
11
|
// * https://github.com/facebook/metro/blob/main/packages/metro-babel-transformer/src/index.js
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
import type {
|
|
13
|
+
BabelTransformer,
|
|
14
|
+
BabelTransformerArgs,
|
|
15
|
+
BabelTransformerCacheKeyOptions,
|
|
16
|
+
} from 'metro-babel-transformer'
|
|
14
17
|
import assert from 'node:assert'
|
|
18
|
+
import { createHash } from 'node:crypto'
|
|
19
|
+
import { readFileSync } from 'node:fs'
|
|
20
|
+
import { createRequire } from 'node:module'
|
|
21
|
+
import path from 'node:path'
|
|
15
22
|
|
|
16
23
|
import type { TransformOptions } from './babel-core'
|
|
24
|
+
import { substituteExpoVirtualEnvSource } from './expoVirtualEnv'
|
|
17
25
|
import { loadBabelConfig } from './loadBabelConfig'
|
|
18
26
|
import { transformSync } from './transformSync'
|
|
19
27
|
import type { ViteCustomTransformOptions } from './types'
|
|
20
28
|
|
|
21
|
-
export type
|
|
29
|
+
export type MetroBabelCaller = TransformOptions['caller'] & {
|
|
22
30
|
supportsReactCompiler?: boolean
|
|
23
31
|
isReactServer?: boolean
|
|
24
32
|
isHMREnabled?: boolean
|
|
@@ -37,7 +45,7 @@ export type ExpoBabelCaller = TransformOptions['caller'] & {
|
|
|
37
45
|
}
|
|
38
46
|
|
|
39
47
|
const debug = require('debug')(
|
|
40
|
-
'
|
|
48
|
+
'vxrn:metro-config:babel-transformer'
|
|
41
49
|
) as typeof console.log
|
|
42
50
|
|
|
43
51
|
function isCustomTruthy(value: any): boolean {
|
|
@@ -67,7 +75,7 @@ function getBabelCaller({
|
|
|
67
75
|
oneViteMetroBabelConfig,
|
|
68
76
|
}: Pick<BabelTransformerArgs, 'filename' | 'options'> & {
|
|
69
77
|
oneViteMetroBabelConfig: boolean
|
|
70
|
-
}):
|
|
78
|
+
}): MetroBabelCaller {
|
|
71
79
|
const isNodeModule = filename.includes('node_modules')
|
|
72
80
|
const isReactServer = options.customTransformOptions?.environment === 'react-server'
|
|
73
81
|
const isGenericServer = options.customTransformOptions?.environment === 'node'
|
|
@@ -80,7 +88,7 @@ function getBabelCaller({
|
|
|
80
88
|
|
|
81
89
|
if (routerRoot == null) {
|
|
82
90
|
memoizeWarning(
|
|
83
|
-
'Warning: Missing transform.routerRoot option in Metro bundling request, falling back to `app` as routes directory.
|
|
91
|
+
'Warning: Missing transform.routerRoot option in Metro bundling request, falling back to `app` as routes directory.'
|
|
84
92
|
)
|
|
85
93
|
}
|
|
86
94
|
|
|
@@ -119,7 +127,7 @@ function getBabelCaller({
|
|
|
119
127
|
// target environment.
|
|
120
128
|
engine: stringOrUndefined(options.customTransformOptions?.engine),
|
|
121
129
|
|
|
122
|
-
//
|
|
130
|
+
// provide the project root for reading the app babel config
|
|
123
131
|
projectRoot: options.projectRoot,
|
|
124
132
|
oneViteMetroBabelConfig,
|
|
125
133
|
|
|
@@ -146,17 +154,47 @@ function stringOrUndefined(value: unknown): string | undefined {
|
|
|
146
154
|
|
|
147
155
|
const transform: BabelTransformer['transform'] = ({
|
|
148
156
|
filename,
|
|
149
|
-
src,
|
|
157
|
+
src: originalSrc,
|
|
150
158
|
options,
|
|
151
|
-
// `plugins` is used for `functionMapBabelPlugin` from `metro-source-map`.
|
|
159
|
+
// `plugins` is used for `functionMapBabelPlugin` from `metro-source-map`.
|
|
152
160
|
plugins,
|
|
153
161
|
}: BabelTransformerArgs): ReturnType<BabelTransformer['transform']> => {
|
|
162
|
+
if (/\.(swift|kt)$/.test(filename)) {
|
|
163
|
+
const requireFromProject = createRequire(
|
|
164
|
+
path.resolve(options.projectRoot, 'package.json')
|
|
165
|
+
)
|
|
166
|
+
const oneTransforms = requireFromProject(
|
|
167
|
+
'one/native-transforms'
|
|
168
|
+
) as typeof import('one/native-transforms') & {
|
|
169
|
+
renderNativeSourceModule: (
|
|
170
|
+
id: string,
|
|
171
|
+
platform: string,
|
|
172
|
+
root: string
|
|
173
|
+
) => { code: string; watchFiles: string[] }
|
|
174
|
+
}
|
|
175
|
+
originalSrc = oneTransforms.renderNativeSourceModule(
|
|
176
|
+
path.isAbsolute(filename) ? filename : path.resolve(options.projectRoot, filename),
|
|
177
|
+
options.platform ?? '',
|
|
178
|
+
options.projectRoot
|
|
179
|
+
).code
|
|
180
|
+
}
|
|
181
|
+
// narrow optional Expo compatibility (expo/virtual/env.js and .env files
|
|
182
|
+
// only), shared with the native worker. no-Expo apps pass through byte
|
|
183
|
+
// for byte without resolving any Expo module.
|
|
184
|
+
const src = substituteExpoVirtualEnvSource({
|
|
185
|
+
filename,
|
|
186
|
+
src: originalSrc,
|
|
187
|
+
projectRoot: options.projectRoot,
|
|
188
|
+
dev: options.dev,
|
|
189
|
+
environment: options.customTransformOptions?.environment,
|
|
190
|
+
})
|
|
191
|
+
|
|
154
192
|
const viteCustomTransformOptions = options.customTransformOptions?.vite
|
|
155
193
|
|
|
156
194
|
const customOptionsFromVite: ViteCustomTransformOptions = (() => {
|
|
157
195
|
const c: any = viteCustomTransformOptions
|
|
158
|
-
//
|
|
159
|
-
// customTransformOptions.vite
|
|
196
|
+
// standalone Metro invocations don't set
|
|
197
|
+
// customTransformOptions.vite. the plugins flow entirely through the
|
|
160
198
|
// project's babel.config.cjs in that case. Tolerate the missing field
|
|
161
199
|
// rather than throwing so a single Metro config can serve both the
|
|
162
200
|
// Vite-driven and standalone paths.
|
|
@@ -210,8 +248,8 @@ const transform: BabelTransformer['transform'] = ({
|
|
|
210
248
|
// all (most) of the transforms in their local Babel config.
|
|
211
249
|
// This also helps us keep the transform layers small and focused on a single task. We can also use this to
|
|
212
250
|
// ensure the Babel config caching is more accurate.
|
|
213
|
-
//
|
|
214
|
-
//
|
|
251
|
+
// moving everything babel-related to the preset also keeps the transform
|
|
252
|
+
// requirements explicit for users who opt into babel.
|
|
215
253
|
caller: getBabelCaller({
|
|
216
254
|
filename,
|
|
217
255
|
options,
|
|
@@ -238,8 +276,57 @@ const transform: BabelTransformer['transform'] = ({
|
|
|
238
276
|
}
|
|
239
277
|
}
|
|
240
278
|
|
|
279
|
+
export function getCacheKey(options?: BabelTransformerCacheKeyOptions): string {
|
|
280
|
+
const hash = createHash('sha256')
|
|
281
|
+
hash.update('vxrn-metro-babel-transformer-v2')
|
|
282
|
+
|
|
283
|
+
const projectRoot = options?.projectRoot
|
|
284
|
+
if (!projectRoot) {
|
|
285
|
+
return hash.digest('hex')
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
hash.update(projectRoot)
|
|
289
|
+
|
|
290
|
+
for (const file of [
|
|
291
|
+
'.env',
|
|
292
|
+
'.env.development',
|
|
293
|
+
'.env.local',
|
|
294
|
+
'.env.development.local',
|
|
295
|
+
]) {
|
|
296
|
+
const filename = path.join(projectRoot, file)
|
|
297
|
+
hash.update(filename)
|
|
298
|
+
try {
|
|
299
|
+
hash.update(readFileSync(filename))
|
|
300
|
+
} catch (error) {
|
|
301
|
+
if (
|
|
302
|
+
typeof error === 'object' &&
|
|
303
|
+
error !== null &&
|
|
304
|
+
'code' in error &&
|
|
305
|
+
error.code === 'ENOENT'
|
|
306
|
+
) {
|
|
307
|
+
continue
|
|
308
|
+
}
|
|
309
|
+
throw error
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
hash.update(
|
|
314
|
+
JSON.stringify(
|
|
315
|
+
Object.entries(process.env)
|
|
316
|
+
.filter(
|
|
317
|
+
([key]) =>
|
|
318
|
+
key.startsWith('ONE_PUBLIC_') || key.startsWith('EXPO_PUBLIC_')
|
|
319
|
+
)
|
|
320
|
+
.sort(([left], [right]) => left.localeCompare(right))
|
|
321
|
+
)
|
|
322
|
+
)
|
|
323
|
+
|
|
324
|
+
return hash.digest('hex')
|
|
325
|
+
}
|
|
326
|
+
|
|
241
327
|
const babelTransformer: BabelTransformer = {
|
|
242
328
|
transform,
|
|
329
|
+
getCacheKey,
|
|
243
330
|
}
|
|
244
331
|
|
|
245
332
|
module.exports = babelTransformer
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { execFileSync } from "node:child_process";
|
|
2
|
+
import { mkdtempSync, readFileSync, rmSync, writeFileSync } from "node:fs";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { afterAll, describe, expect, it } from "vitest";
|
|
5
|
+
|
|
6
|
+
const workspaceRoot = path.resolve(__dirname, "../../../..");
|
|
7
|
+
const metroBin = path.join(workspaceRoot, "node_modules/.bin/metro");
|
|
8
|
+
const fixtureDirs: string[] = [];
|
|
9
|
+
|
|
10
|
+
afterAll(() => {
|
|
11
|
+
for (const fixtureDir of fixtureDirs) {
|
|
12
|
+
rmSync(fixtureDir, { recursive: true, force: true });
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
describe("optional Expo env through One Metro", () => {
|
|
17
|
+
it("executes babel-preset-expo env references in development and production", () => {
|
|
18
|
+
const fixtureDir = mkdtempSync(path.join(workspaceRoot, "tmp-expo-env-"));
|
|
19
|
+
fixtureDirs.push(fixtureDir);
|
|
20
|
+
|
|
21
|
+
writeFileSync(
|
|
22
|
+
path.join(fixtureDir, "package.json"),
|
|
23
|
+
JSON.stringify({ name: "one-expo-env-fixture", private: true }),
|
|
24
|
+
);
|
|
25
|
+
writeFileSync(path.join(fixtureDir, ".watchmanconfig"), "{}\n");
|
|
26
|
+
writeFileSync(
|
|
27
|
+
path.join(fixtureDir, "tsconfig.json"),
|
|
28
|
+
JSON.stringify({ compilerOptions: { baseUrl: ".", paths: {} } }),
|
|
29
|
+
);
|
|
30
|
+
writeFileSync(
|
|
31
|
+
path.join(fixtureDir, "babel.config.cjs"),
|
|
32
|
+
`module.exports = { presets: ['babel-preset-expo'] }\n`,
|
|
33
|
+
);
|
|
34
|
+
writeFileSync(
|
|
35
|
+
path.join(fixtureDir, "metro.config.cjs"),
|
|
36
|
+
`const { withOne } = require('one/metro-config')
|
|
37
|
+
module.exports = withOne(__dirname, { loadViteConfig: false })
|
|
38
|
+
`,
|
|
39
|
+
);
|
|
40
|
+
writeFileSync(
|
|
41
|
+
path.join(fixtureDir, ".env"),
|
|
42
|
+
"EXPO_PUBLIC_SENTINEL=development-dotenv-value\nPRIVATE_SENTINEL=private-value\n",
|
|
43
|
+
);
|
|
44
|
+
writeFileSync(
|
|
45
|
+
path.join(fixtureDir, "index.js"),
|
|
46
|
+
`console.log('observed:' + process.env.EXPO_PUBLIC_SENTINEL)\n`,
|
|
47
|
+
);
|
|
48
|
+
|
|
49
|
+
const bundle = (dev: boolean, sentinel: string, resetCache = false) => {
|
|
50
|
+
const bundlePath = path.join(
|
|
51
|
+
fixtureDir,
|
|
52
|
+
`bundle.${dev ? "dev" : "prod"}.js`,
|
|
53
|
+
);
|
|
54
|
+
execFileSync(
|
|
55
|
+
metroBin,
|
|
56
|
+
[
|
|
57
|
+
"build",
|
|
58
|
+
"index.js",
|
|
59
|
+
"--config",
|
|
60
|
+
"metro.config.cjs",
|
|
61
|
+
"--platform",
|
|
62
|
+
"ios",
|
|
63
|
+
"--dev",
|
|
64
|
+
String(dev),
|
|
65
|
+
"--minify",
|
|
66
|
+
"false",
|
|
67
|
+
"--out",
|
|
68
|
+
bundlePath,
|
|
69
|
+
...(resetCache ? ["--reset-cache"] : []),
|
|
70
|
+
],
|
|
71
|
+
{
|
|
72
|
+
cwd: fixtureDir,
|
|
73
|
+
encoding: "utf8",
|
|
74
|
+
env: { ...process.env, EXPO_PUBLIC_SENTINEL: sentinel },
|
|
75
|
+
timeout: 180_000,
|
|
76
|
+
},
|
|
77
|
+
);
|
|
78
|
+
return {
|
|
79
|
+
code: readFileSync(bundlePath, "utf8"),
|
|
80
|
+
output: execFileSync(process.execPath, [bundlePath], {
|
|
81
|
+
cwd: fixtureDir,
|
|
82
|
+
encoding: "utf8",
|
|
83
|
+
}),
|
|
84
|
+
};
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
const development = bundle(true, "development-process-value", true);
|
|
88
|
+
expect(development.code).toContain("expo/virtual/env.js");
|
|
89
|
+
expect(development.output).toContain("observed:development-dotenv-value");
|
|
90
|
+
expect(development.code).not.toContain("private-value");
|
|
91
|
+
|
|
92
|
+
writeFileSync(
|
|
93
|
+
path.join(fixtureDir, ".env"),
|
|
94
|
+
"EXPO_PUBLIC_SENTINEL=updated-dotenv-value\nPRIVATE_SENTINEL=updated-private-value\n",
|
|
95
|
+
);
|
|
96
|
+
const updatedDevelopment = bundle(true, "updated-process-value");
|
|
97
|
+
expect(updatedDevelopment.output).toContain(
|
|
98
|
+
"observed:updated-dotenv-value",
|
|
99
|
+
);
|
|
100
|
+
expect(updatedDevelopment.code).not.toContain("updated-private-value");
|
|
101
|
+
|
|
102
|
+
const production = bundle(false, "production-process-value");
|
|
103
|
+
expect(production.code).not.toContain("expo/virtual/env.js");
|
|
104
|
+
expect(production.output).toContain("observed:production-process-value");
|
|
105
|
+
}, 180_000);
|
|
106
|
+
});
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest'
|
|
2
|
+
|
|
3
|
+
import { substituteExpoVirtualEnvSource } from './expoVirtualEnv'
|
|
4
|
+
|
|
5
|
+
const virtualFilename = '/proj/node_modules/expo/virtual/env.js'
|
|
6
|
+
const virtualSource = 'export const env = process.env;'
|
|
7
|
+
|
|
8
|
+
describe('substituteExpoVirtualEnvSource', () => {
|
|
9
|
+
it('generates the require.context import in dev', () => {
|
|
10
|
+
const out = substituteExpoVirtualEnvSource({
|
|
11
|
+
filename: virtualFilename,
|
|
12
|
+
src: virtualSource,
|
|
13
|
+
projectRoot: '/proj',
|
|
14
|
+
dev: true,
|
|
15
|
+
environment: 'client',
|
|
16
|
+
})
|
|
17
|
+
expect(out).toContain('require.context("../../..",false,/^\\.\\/\\.env/)')
|
|
18
|
+
expect(out).toContain('.env.development.local')
|
|
19
|
+
expect(out).toContain('...process.env')
|
|
20
|
+
})
|
|
21
|
+
|
|
22
|
+
it('generates the naming-error proxy in production', () => {
|
|
23
|
+
const out = substituteExpoVirtualEnvSource({
|
|
24
|
+
filename: virtualFilename,
|
|
25
|
+
src: virtualSource,
|
|
26
|
+
projectRoot: '/proj',
|
|
27
|
+
dev: false,
|
|
28
|
+
environment: 'client',
|
|
29
|
+
})
|
|
30
|
+
expect(out).toContain('new Proxy')
|
|
31
|
+
expect(out).toContain('not supported in production bundles')
|
|
32
|
+
})
|
|
33
|
+
|
|
34
|
+
it('leaves the virtual module alone outside client environments', () => {
|
|
35
|
+
for (const environment of ['node', 'react-server']) {
|
|
36
|
+
expect(
|
|
37
|
+
substituteExpoVirtualEnvSource({
|
|
38
|
+
filename: virtualFilename,
|
|
39
|
+
src: virtualSource,
|
|
40
|
+
projectRoot: '/proj',
|
|
41
|
+
dev: true,
|
|
42
|
+
environment,
|
|
43
|
+
})
|
|
44
|
+
).toBe(virtualSource)
|
|
45
|
+
}
|
|
46
|
+
})
|
|
47
|
+
|
|
48
|
+
it('leaves ordinary files alone', () => {
|
|
49
|
+
expect(
|
|
50
|
+
substituteExpoVirtualEnvSource({
|
|
51
|
+
filename: '/proj/src/app.js',
|
|
52
|
+
src: 'const a = 1',
|
|
53
|
+
projectRoot: '/proj',
|
|
54
|
+
dev: true,
|
|
55
|
+
environment: 'client',
|
|
56
|
+
})
|
|
57
|
+
).toBe('const a = 1')
|
|
58
|
+
})
|
|
59
|
+
|
|
60
|
+
it('leaves .env files alone without Expo installed', () => {
|
|
61
|
+
const src = 'EXPO_PUBLIC_A=1\nSECRET=2\n'
|
|
62
|
+
expect(
|
|
63
|
+
substituteExpoVirtualEnvSource({
|
|
64
|
+
filename: '/proj/.env',
|
|
65
|
+
src,
|
|
66
|
+
projectRoot: '/proj-no-expo',
|
|
67
|
+
dev: true,
|
|
68
|
+
environment: 'client',
|
|
69
|
+
})
|
|
70
|
+
).toBe(src)
|
|
71
|
+
})
|
|
72
|
+
})
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { createRequire } from 'node:module'
|
|
2
|
+
import { readFileSync } from 'node:fs'
|
|
3
|
+
import path from 'node:path'
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* narrow optional Expo compatibility shared by the native worker and the
|
|
7
|
+
* babel transformer, mirroring @expo/metro-config's transform worker: only
|
|
8
|
+
* expo/virtual/env.js and .env files are special, and everything else
|
|
9
|
+
* passes through untouched. apps without Expo installed never resolve or
|
|
10
|
+
* load any Expo module: the virtual file cannot match without the expo
|
|
11
|
+
* package, and .env files are left alone when the parser is absent.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
type ParseEnvFile = (src: string, isClient: boolean) => Record<string, string>
|
|
15
|
+
|
|
16
|
+
function loadExpoParseEnvFile(projectRoot: string): ParseEnvFile | null {
|
|
17
|
+
try {
|
|
18
|
+
const requireFromProject = createRequire(path.join(projectRoot, 'package.json'))
|
|
19
|
+
const expoMetroConfigPkg = requireFromProject.resolve(
|
|
20
|
+
'@expo/metro-config/package.json'
|
|
21
|
+
)
|
|
22
|
+
const dotEnvDevelopment = requireFromProject(
|
|
23
|
+
path.join(
|
|
24
|
+
path.dirname(expoMetroConfigPkg),
|
|
25
|
+
'build',
|
|
26
|
+
'transform-worker',
|
|
27
|
+
'dot-env-development'
|
|
28
|
+
)
|
|
29
|
+
) as { parseEnvFile?: ParseEnvFile }
|
|
30
|
+
return dotEnvDevelopment?.parseEnvFile ?? null
|
|
31
|
+
} catch {
|
|
32
|
+
return null
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
const virtualEnvPattern = /[\\/]expo[\\/]virtual[\\/]env\.js$/
|
|
37
|
+
const dotEnvPattern = /(^|[\\/])\.env(\.(local|(development|production)(\.local)?))?$/
|
|
38
|
+
const developmentEnvFiles = [
|
|
39
|
+
'.env',
|
|
40
|
+
'.env.development',
|
|
41
|
+
'.env.local',
|
|
42
|
+
'.env.development.local',
|
|
43
|
+
]
|
|
44
|
+
|
|
45
|
+
export function substituteExpoVirtualEnvSource({
|
|
46
|
+
filename,
|
|
47
|
+
src,
|
|
48
|
+
projectRoot,
|
|
49
|
+
dev,
|
|
50
|
+
environment,
|
|
51
|
+
}: {
|
|
52
|
+
filename: string
|
|
53
|
+
src: string
|
|
54
|
+
projectRoot: string
|
|
55
|
+
dev: boolean | undefined
|
|
56
|
+
environment: unknown
|
|
57
|
+
}): string {
|
|
58
|
+
const isClientEnvironment = environment !== 'node' && environment !== 'react-server'
|
|
59
|
+
|
|
60
|
+
// parsing the virtual env is client-only, on the server process.env is used directly.
|
|
61
|
+
if (isClientEnvironment && virtualEnvPattern.test(filename)) {
|
|
62
|
+
if (dev) {
|
|
63
|
+
// variables are merged at runtime so HMR can pick up .env edits.
|
|
64
|
+
// standard Metro's Node crawler does not index `.env` because the file
|
|
65
|
+
// has no extension, so seed the module with the same public-only merge.
|
|
66
|
+
// context modules override this snapshot when the active watcher exposes
|
|
67
|
+
// the files, preserving Expo's live-update path.
|
|
68
|
+
const fileEnv: Record<string, string> = {}
|
|
69
|
+
const parseEnvFile = loadExpoParseEnvFile(projectRoot)
|
|
70
|
+
if (parseEnvFile) {
|
|
71
|
+
for (const file of developmentEnvFiles) {
|
|
72
|
+
try {
|
|
73
|
+
Object.assign(
|
|
74
|
+
fileEnv,
|
|
75
|
+
parseEnvFile(readFileSync(path.join(projectRoot, file), 'utf8'), true)
|
|
76
|
+
)
|
|
77
|
+
} catch (error) {
|
|
78
|
+
if (
|
|
79
|
+
typeof error === 'object' &&
|
|
80
|
+
error !== null &&
|
|
81
|
+
'code' in error &&
|
|
82
|
+
error.code === 'ENOENT'
|
|
83
|
+
) {
|
|
84
|
+
continue
|
|
85
|
+
}
|
|
86
|
+
throw error
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
const relativePath = path
|
|
91
|
+
.relative(path.dirname(filename), projectRoot)
|
|
92
|
+
.split(path.sep)
|
|
93
|
+
.join('/')
|
|
94
|
+
return `const dotEnvModules = require.context(${JSON.stringify(relativePath)},false,/^\\.\\/\\.env/);\n\nexport const env = { ...process.env, ...${JSON.stringify(fileEnv)}, ...${JSON.stringify(developmentEnvFiles)}.reduce((acc, file) => {\n const key = './' + file;\n return { ...acc, ...(dotEnvModules.keys().includes(key) ? dotEnvModules(key)?.default : {}) };\n}, {}) };`
|
|
95
|
+
}
|
|
96
|
+
// production inlines every value at its use site, so reaching this
|
|
97
|
+
// module at all is a bug worth naming rather than silently undefined.
|
|
98
|
+
return `\nexport const env = new Proxy({}, {\n get(target, key) {\n throw new Error(\`Attempting to access internal environment variable "\${key}" is not supported in production bundles. Environment variables should be inlined in production by Babel.\`);\n },\n});`
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
if (dotEnvPattern.test(filename)) {
|
|
102
|
+
// parse .env files to objects with Expo's own installed parser, keeping
|
|
103
|
+
// public names only in client environments. without Expo there is
|
|
104
|
+
// nothing to substitute: no preset generates the require.context import
|
|
105
|
+
// that would load a .env module, so the source passes through exactly
|
|
106
|
+
// as it did before this file existed.
|
|
107
|
+
const parseEnvFile = loadExpoParseEnvFile(projectRoot)
|
|
108
|
+
if (!parseEnvFile) {
|
|
109
|
+
return src
|
|
110
|
+
}
|
|
111
|
+
return `export default ${JSON.stringify(parseEnvFile(src, isClientEnvironment))};`
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
return src
|
|
115
|
+
}
|
|
@@ -31,9 +31,11 @@ export const loadBabelConfig = (() => {
|
|
|
31
31
|
const possibleBabelRCPaths = [
|
|
32
32
|
'.babelrc',
|
|
33
33
|
'.babelrc.js',
|
|
34
|
+
'.babelrc.json',
|
|
34
35
|
'babel.config.js',
|
|
35
36
|
'babel.config.cjs',
|
|
36
37
|
'babel.config.mjs',
|
|
38
|
+
'babel.config.json',
|
|
37
39
|
]
|
|
38
40
|
|
|
39
41
|
const foundBabelRCPath = possibleBabelRCPaths.find((configFileName) =>
|
|
@@ -50,7 +52,7 @@ export const loadBabelConfig = (() => {
|
|
|
50
52
|
if (!babelRC.extends) {
|
|
51
53
|
babelRC.presets = [
|
|
52
54
|
// { plugins: [transformImportMetaGlobPlugin] }, // Added to support Vite's `import.meta.glob`
|
|
53
|
-
require('babel-preset
|
|
55
|
+
require('@react-native/babel-preset'),
|
|
54
56
|
]
|
|
55
57
|
}
|
|
56
58
|
|