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