@vxrn/vite-plugin-metro 1.25.5 → 1.25.6
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 +130 -0
- package/dist/cjs/babel-plugins/import-meta-env-plugin.native.js +138 -0
- package/dist/cjs/babel-plugins/import-meta-env-plugin.native.js.map +1 -0
- package/dist/cjs/env/platformEnv.cjs +76 -0
- package/dist/cjs/env/platformEnv.native.js +98 -0
- package/dist/cjs/env/platformEnv.native.js.map +1 -0
- package/dist/cjs/index.cjs +41 -0
- package/dist/cjs/index.native.js +44 -0
- package/dist/cjs/index.native.js.map +1 -0
- package/dist/cjs/metro-config/getMetroBabelConfigFromViteConfig.cjs +62 -0
- package/dist/cjs/metro-config/getMetroBabelConfigFromViteConfig.native.js +109 -0
- package/dist/cjs/metro-config/getMetroBabelConfigFromViteConfig.native.js.map +1 -0
- package/dist/cjs/metro-config/getMetroConfigFromViteConfig.cjs +270 -0
- package/dist/cjs/metro-config/getMetroConfigFromViteConfig.native.js +284 -0
- package/dist/cjs/metro-config/getMetroConfigFromViteConfig.native.js.map +1 -0
- package/dist/cjs/metro-config/patchMetroServerWithViteConfigAndMetroPluginOptions.cjs +55 -0
- package/dist/cjs/metro-config/patchMetroServerWithViteConfigAndMetroPluginOptions.native.js +59 -0
- package/dist/cjs/metro-config/patchMetroServerWithViteConfigAndMetroPluginOptions.native.js.map +1 -0
- package/dist/cjs/metro-config/types.cjs +18 -0
- package/dist/cjs/metro-config/types.native.js +21 -0
- package/dist/cjs/metro-config/types.native.js.map +1 -0
- package/dist/cjs/plugins/expoManifestRequestHandlerPlugin.cjs +71 -0
- package/dist/cjs/plugins/expoManifestRequestHandlerPlugin.native.js +82 -0
- package/dist/cjs/plugins/expoManifestRequestHandlerPlugin.native.js.map +1 -0
- package/dist/cjs/plugins/metroPlugin.cjs +272 -0
- package/dist/cjs/plugins/metroPlugin.native.js +281 -0
- package/dist/cjs/plugins/metroPlugin.native.js.map +1 -0
- package/dist/cjs/rn-commands/bundle/assetCatalogIOS.cjs +90 -0
- package/dist/cjs/rn-commands/bundle/assetCatalogIOS.native.js +135 -0
- package/dist/cjs/rn-commands/bundle/assetCatalogIOS.native.js.map +1 -0
- package/dist/cjs/rn-commands/bundle/assetPathUtils.cjs +74 -0
- package/dist/cjs/rn-commands/bundle/assetPathUtils.native.js +77 -0
- package/dist/cjs/rn-commands/bundle/assetPathUtils.native.js.map +1 -0
- package/dist/cjs/rn-commands/bundle/buildBundle.cjs +62 -0
- package/dist/cjs/rn-commands/bundle/buildBundle.native.js +67 -0
- package/dist/cjs/rn-commands/bundle/buildBundle.native.js.map +1 -0
- package/dist/cjs/rn-commands/bundle/buildBundleWithConfig.cjs +87 -0
- package/dist/cjs/rn-commands/bundle/buildBundleWithConfig.native.js +94 -0
- package/dist/cjs/rn-commands/bundle/buildBundleWithConfig.native.js.map +1 -0
- package/dist/cjs/rn-commands/bundle/filterPlatformAssetScales.cjs +51 -0
- package/dist/cjs/rn-commands/bundle/filterPlatformAssetScales.native.js +75 -0
- package/dist/cjs/rn-commands/bundle/filterPlatformAssetScales.native.js.map +1 -0
- package/dist/cjs/rn-commands/bundle/getAssetDestPathAndroid.cjs +46 -0
- package/dist/cjs/rn-commands/bundle/getAssetDestPathAndroid.native.js +49 -0
- package/dist/cjs/rn-commands/bundle/getAssetDestPathAndroid.native.js.map +1 -0
- package/dist/cjs/rn-commands/bundle/getAssetDestPathIOS.cjs +49 -0
- package/dist/cjs/rn-commands/bundle/getAssetDestPathIOS.native.js +52 -0
- package/dist/cjs/rn-commands/bundle/getAssetDestPathIOS.native.js.map +1 -0
- package/dist/cjs/rn-commands/bundle/getBuildBundleFn.cjs +45 -0
- package/dist/cjs/rn-commands/bundle/getBuildBundleFn.native.js +48 -0
- package/dist/cjs/rn-commands/bundle/getBuildBundleFn.native.js.map +1 -0
- package/dist/cjs/rn-commands/bundle/index.cjs +30 -0
- package/dist/cjs/rn-commands/bundle/index.native.js +33 -0
- package/dist/cjs/rn-commands/bundle/index.native.js.map +1 -0
- package/dist/cjs/rn-commands/bundle/saveAssets.cjs +121 -0
- package/dist/cjs/rn-commands/bundle/saveAssets.native.js +143 -0
- package/dist/cjs/rn-commands/bundle/saveAssets.native.js.map +1 -0
- package/dist/cjs/rn-commands/bundle/types.cjs +18 -0
- package/dist/cjs/rn-commands/bundle/types.native.js +21 -0
- package/dist/cjs/rn-commands/bundle/types.native.js.map +1 -0
- package/dist/cjs/rn-commands/index.cjs +39 -0
- package/dist/cjs/rn-commands/index.native.js +42 -0
- package/dist/cjs/rn-commands/index.native.js.map +1 -0
- package/dist/cjs/transformer/babel-core.cjs +30 -0
- package/dist/cjs/transformer/babel-core.native.js +33 -0
- package/dist/cjs/transformer/babel-core.native.js.map +1 -0
- package/dist/cjs/transformer/babel-transformer.cjs +176 -0
- package/dist/cjs/transformer/babel-transformer.native.js +186 -0
- package/dist/cjs/transformer/babel-transformer.native.js.map +1 -0
- package/dist/cjs/transformer/loadBabelConfig.cjs +64 -0
- package/dist/cjs/transformer/loadBabelConfig.native.js +70 -0
- package/dist/cjs/transformer/loadBabelConfig.native.js.map +1 -0
- package/dist/cjs/transformer/transformSync.cjs +85 -0
- package/dist/cjs/transformer/transformSync.native.js +91 -0
- package/dist/cjs/transformer/transformSync.native.js.map +1 -0
- package/dist/cjs/transformer/transformSync.test.cjs +36 -0
- package/dist/cjs/transformer/transformSync.test.native.js +49 -0
- package/dist/cjs/transformer/transformSync.test.native.js.map +1 -0
- package/dist/cjs/transformer/types.cjs +18 -0
- package/dist/cjs/transformer/types.native.js +21 -0
- package/dist/cjs/transformer/types.native.js.map +1 -0
- package/dist/cjs/utils/exit.cjs +174 -0
- package/dist/cjs/utils/exit.native.js +281 -0
- package/dist/cjs/utils/exit.native.js.map +1 -0
- package/dist/cjs/utils/getTerminalReporter.cjs +64 -0
- package/dist/cjs/utils/getTerminalReporter.native.js +70 -0
- package/dist/cjs/utils/getTerminalReporter.native.js.map +1 -0
- package/dist/cjs/utils/metroCacheManager.cjs +125 -0
- package/dist/cjs/utils/metroCacheManager.native.js +148 -0
- package/dist/cjs/utils/metroCacheManager.native.js.map +1 -0
- package/dist/cjs/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.cjs +39 -0
- package/dist/cjs/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.native.js +42 -0
- package/dist/cjs/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.native.js.map +1 -0
- package/dist/cjs/utils/projectImport.cjs +72 -0
- package/dist/cjs/utils/projectImport.native.js +83 -0
- package/dist/cjs/utils/projectImport.native.js.map +1 -0
- package/dist/esm/babel-plugins/import-meta-env-plugin.mjs +93 -0
- package/dist/esm/babel-plugins/import-meta-env-plugin.mjs.map +1 -0
- package/dist/esm/babel-plugins/import-meta-env-plugin.native.js +98 -0
- package/dist/esm/babel-plugins/import-meta-env-plugin.native.js.map +1 -0
- package/dist/esm/env/platformEnv.mjs +49 -0
- package/dist/esm/env/platformEnv.mjs.map +1 -0
- package/dist/esm/env/platformEnv.native.js +68 -0
- package/dist/esm/env/platformEnv.native.js.map +1 -0
- package/dist/esm/index.js +8 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/index.mjs +8 -0
- package/dist/esm/index.mjs.map +1 -0
- package/dist/esm/index.native.js +8 -0
- package/dist/esm/index.native.js.map +1 -0
- package/dist/esm/metro-config/getMetroBabelConfigFromViteConfig.mjs +37 -0
- package/dist/esm/metro-config/getMetroBabelConfigFromViteConfig.mjs.map +1 -0
- package/dist/esm/metro-config/getMetroBabelConfigFromViteConfig.native.js +81 -0
- package/dist/esm/metro-config/getMetroBabelConfigFromViteConfig.native.js.map +1 -0
- package/dist/esm/metro-config/getMetroConfigFromViteConfig.mjs +233 -0
- package/dist/esm/metro-config/getMetroConfigFromViteConfig.mjs.map +1 -0
- package/dist/esm/metro-config/getMetroConfigFromViteConfig.native.js +244 -0
- package/dist/esm/metro-config/getMetroConfigFromViteConfig.native.js.map +1 -0
- package/dist/esm/metro-config/patchMetroServerWithViteConfigAndMetroPluginOptions.mjs +30 -0
- package/dist/esm/metro-config/patchMetroServerWithViteConfigAndMetroPluginOptions.mjs.map +1 -0
- package/dist/esm/metro-config/patchMetroServerWithViteConfigAndMetroPluginOptions.native.js +31 -0
- package/dist/esm/metro-config/patchMetroServerWithViteConfigAndMetroPluginOptions.native.js.map +1 -0
- package/dist/esm/metro-config/types.mjs +2 -0
- package/dist/esm/metro-config/types.mjs.map +1 -0
- package/dist/esm/metro-config/types.native.js +2 -0
- package/dist/esm/metro-config/types.native.js.map +1 -0
- package/dist/esm/plugins/expoManifestRequestHandlerPlugin.mjs +46 -0
- package/dist/esm/plugins/expoManifestRequestHandlerPlugin.mjs.map +1 -0
- package/dist/esm/plugins/expoManifestRequestHandlerPlugin.native.js +54 -0
- package/dist/esm/plugins/expoManifestRequestHandlerPlugin.native.js.map +1 -0
- package/dist/esm/plugins/metroPlugin.mjs +236 -0
- package/dist/esm/plugins/metroPlugin.mjs.map +1 -0
- package/dist/esm/plugins/metroPlugin.native.js +242 -0
- package/dist/esm/plugins/metroPlugin.native.js.map +1 -0
- package/dist/esm/rn-commands/bundle/assetCatalogIOS.mjs +51 -0
- package/dist/esm/rn-commands/bundle/assetCatalogIOS.mjs.map +1 -0
- package/dist/esm/rn-commands/bundle/assetCatalogIOS.native.js +93 -0
- package/dist/esm/rn-commands/bundle/assetCatalogIOS.native.js.map +1 -0
- package/dist/esm/rn-commands/bundle/assetPathUtils.mjs +49 -0
- package/dist/esm/rn-commands/bundle/assetPathUtils.mjs.map +1 -0
- package/dist/esm/rn-commands/bundle/assetPathUtils.native.js +49 -0
- package/dist/esm/rn-commands/bundle/assetPathUtils.native.js.map +1 -0
- package/dist/esm/rn-commands/bundle/buildBundle.mjs +37 -0
- package/dist/esm/rn-commands/bundle/buildBundle.mjs.map +1 -0
- package/dist/esm/rn-commands/bundle/buildBundle.native.js +39 -0
- package/dist/esm/rn-commands/bundle/buildBundle.native.js.map +1 -0
- package/dist/esm/rn-commands/bundle/buildBundleWithConfig.mjs +51 -0
- package/dist/esm/rn-commands/bundle/buildBundleWithConfig.mjs.map +1 -0
- package/dist/esm/rn-commands/bundle/buildBundleWithConfig.native.js +55 -0
- package/dist/esm/rn-commands/bundle/buildBundleWithConfig.native.js.map +1 -0
- package/dist/esm/rn-commands/bundle/filterPlatformAssetScales.mjs +26 -0
- package/dist/esm/rn-commands/bundle/filterPlatformAssetScales.mjs.map +1 -0
- package/dist/esm/rn-commands/bundle/filterPlatformAssetScales.native.js +47 -0
- package/dist/esm/rn-commands/bundle/filterPlatformAssetScales.native.js.map +1 -0
- package/dist/esm/rn-commands/bundle/getAssetDestPathAndroid.mjs +10 -0
- package/dist/esm/rn-commands/bundle/getAssetDestPathAndroid.mjs.map +1 -0
- package/dist/esm/rn-commands/bundle/getAssetDestPathAndroid.native.js +10 -0
- package/dist/esm/rn-commands/bundle/getAssetDestPathAndroid.native.js.map +1 -0
- package/dist/esm/rn-commands/bundle/getAssetDestPathIOS.mjs +13 -0
- package/dist/esm/rn-commands/bundle/getAssetDestPathIOS.mjs.map +1 -0
- package/dist/esm/rn-commands/bundle/getAssetDestPathIOS.native.js +13 -0
- package/dist/esm/rn-commands/bundle/getAssetDestPathIOS.native.js.map +1 -0
- package/dist/esm/rn-commands/bundle/getBuildBundleFn.mjs +20 -0
- package/dist/esm/rn-commands/bundle/getBuildBundleFn.mjs.map +1 -0
- package/dist/esm/rn-commands/bundle/getBuildBundleFn.native.js +20 -0
- package/dist/esm/rn-commands/bundle/getBuildBundleFn.native.js.map +1 -0
- package/dist/esm/rn-commands/bundle/index.mjs +4 -0
- package/dist/esm/rn-commands/bundle/index.mjs.map +1 -0
- package/dist/esm/rn-commands/bundle/index.native.js +4 -0
- package/dist/esm/rn-commands/bundle/index.native.js.map +1 -0
- package/dist/esm/rn-commands/bundle/saveAssets.mjs +85 -0
- package/dist/esm/rn-commands/bundle/saveAssets.mjs.map +1 -0
- package/dist/esm/rn-commands/bundle/saveAssets.native.js +104 -0
- package/dist/esm/rn-commands/bundle/saveAssets.native.js.map +1 -0
- package/dist/esm/rn-commands/bundle/types.mjs +2 -0
- package/dist/esm/rn-commands/bundle/types.mjs.map +1 -0
- package/dist/esm/rn-commands/bundle/types.native.js +2 -0
- package/dist/esm/rn-commands/bundle/types.native.js.map +1 -0
- package/dist/esm/rn-commands/index.mjs +3 -0
- package/dist/esm/rn-commands/index.mjs.map +1 -0
- package/dist/esm/rn-commands/index.native.js +3 -0
- package/dist/esm/rn-commands/index.native.js.map +1 -0
- package/dist/esm/transformer/babel-core.mjs +3 -0
- package/dist/esm/transformer/babel-core.mjs.map +1 -0
- package/dist/esm/transformer/babel-core.native.js +3 -0
- package/dist/esm/transformer/babel-core.native.js.map +1 -0
- package/dist/esm/transformer/babel-transformer.mjs +148 -0
- package/dist/esm/transformer/babel-transformer.mjs.map +1 -0
- package/dist/esm/transformer/babel-transformer.native.js +160 -0
- package/dist/esm/transformer/babel-transformer.native.js.map +1 -0
- package/dist/esm/transformer/loadBabelConfig.mjs +28 -0
- package/dist/esm/transformer/loadBabelConfig.mjs.map +1 -0
- package/dist/esm/transformer/loadBabelConfig.native.js +31 -0
- package/dist/esm/transformer/loadBabelConfig.native.js.map +1 -0
- package/dist/esm/transformer/transformSync.mjs +49 -0
- package/dist/esm/transformer/transformSync.mjs.map +1 -0
- package/dist/esm/transformer/transformSync.native.js +52 -0
- package/dist/esm/transformer/transformSync.native.js.map +1 -0
- package/dist/esm/transformer/transformSync.test.mjs +37 -0
- package/dist/esm/transformer/transformSync.test.mjs.map +1 -0
- package/dist/esm/transformer/transformSync.test.native.js +47 -0
- package/dist/esm/transformer/transformSync.test.native.js.map +1 -0
- package/dist/esm/transformer/types.mjs +2 -0
- package/dist/esm/transformer/types.mjs.map +1 -0
- package/dist/esm/transformer/types.native.js +2 -0
- package/dist/esm/transformer/types.native.js.map +1 -0
- package/dist/esm/utils/exit.mjs +135 -0
- package/dist/esm/utils/exit.mjs.map +1 -0
- package/dist/esm/utils/exit.native.js +239 -0
- package/dist/esm/utils/exit.native.js.map +1 -0
- package/dist/esm/utils/getTerminalReporter.mjs +28 -0
- package/dist/esm/utils/getTerminalReporter.mjs.map +1 -0
- package/dist/esm/utils/getTerminalReporter.native.js +31 -0
- package/dist/esm/utils/getTerminalReporter.native.js.map +1 -0
- package/dist/esm/utils/metroCacheManager.mjs +100 -0
- package/dist/esm/utils/metroCacheManager.mjs.map +1 -0
- package/dist/esm/utils/metroCacheManager.native.js +120 -0
- package/dist/esm/utils/metroCacheManager.native.js.map +1 -0
- package/dist/esm/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.mjs +14 -0
- package/dist/esm/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.mjs.map +1 -0
- package/dist/esm/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.native.js +14 -0
- package/dist/esm/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.native.js.map +1 -0
- package/dist/esm/utils/projectImport.mjs +34 -0
- package/dist/esm/utils/projectImport.mjs.map +1 -0
- package/dist/esm/utils/projectImport.native.js +42 -0
- package/dist/esm/utils/projectImport.native.js.map +1 -0
- package/package.json +3 -3
- package/types/babel-plugins/import-meta-env-plugin.d.ts.map +1 -0
- package/types/env/platformEnv.d.ts.map +1 -0
- package/types/index.d.ts.map +1 -0
- package/types/metro-config/getMetroBabelConfigFromViteConfig.d.ts.map +1 -0
- package/types/metro-config/getMetroConfigFromViteConfig.d.ts.map +1 -0
- package/types/metro-config/patchMetroServerWithViteConfigAndMetroPluginOptions.d.ts.map +1 -0
- package/types/metro-config/types.d.ts.map +1 -0
- package/types/plugins/expoManifestRequestHandlerPlugin.d.ts.map +1 -0
- package/types/plugins/metroPlugin.d.ts.map +1 -0
- package/types/rn-commands/bundle/assetCatalogIOS.d.ts.map +1 -0
- package/types/rn-commands/bundle/assetPathUtils.d.ts.map +1 -0
- package/types/rn-commands/bundle/buildBundle.d.ts.map +1 -0
- package/types/rn-commands/bundle/buildBundleWithConfig.d.ts.map +1 -0
- package/types/rn-commands/bundle/filterPlatformAssetScales.d.ts.map +1 -0
- package/types/rn-commands/bundle/getAssetDestPathAndroid.d.ts.map +1 -0
- package/types/rn-commands/bundle/getAssetDestPathIOS.d.ts.map +1 -0
- package/types/rn-commands/bundle/getBuildBundleFn.d.ts.map +1 -0
- package/types/rn-commands/bundle/index.d.ts.map +1 -0
- package/types/rn-commands/bundle/saveAssets.d.ts.map +1 -0
- package/types/rn-commands/bundle/types.d.ts.map +1 -0
- package/types/rn-commands/index.d.ts.map +1 -0
- package/types/transformer/babel-core.d.ts.map +1 -0
- package/types/transformer/babel-transformer.d.ts.map +1 -0
- package/types/transformer/loadBabelConfig.d.ts.map +1 -0
- package/types/transformer/transformSync.d.ts.map +1 -0
- package/types/transformer/transformSync.test.d.ts.map +1 -0
- package/types/transformer/types.d.ts.map +1 -0
- package/types/utils/exit.d.ts.map +1 -0
- package/types/utils/getTerminalReporter.d.ts.map +1 -0
- package/types/utils/metroCacheManager.d.ts.map +1 -0
- package/types/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.d.ts.map +1 -0
- package/types/utils/projectImport.d.ts.map +1 -0
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import fs from "fs";
|
|
2
|
+
import path from "path";
|
|
3
|
+
var loadBabelConfig = /* @__PURE__ */function () {
|
|
4
|
+
var babelRC = null;
|
|
5
|
+
return function _getBabelRC(param) {
|
|
6
|
+
var {
|
|
7
|
+
projectRoot
|
|
8
|
+
} = param;
|
|
9
|
+
if (babelRC !== null) {
|
|
10
|
+
return babelRC;
|
|
11
|
+
}
|
|
12
|
+
babelRC = {};
|
|
13
|
+
if (projectRoot) {
|
|
14
|
+
var possibleBabelRCPaths = [".babelrc", ".babelrc.js", "babel.config.js", "babel.config.cjs", "babel.config.mjs"];
|
|
15
|
+
var foundBabelRCPath = possibleBabelRCPaths.find(function (configFileName) {
|
|
16
|
+
return fs.existsSync(path.resolve(projectRoot, configFileName));
|
|
17
|
+
});
|
|
18
|
+
if (foundBabelRCPath) {
|
|
19
|
+
babelRC.extends = path.resolve(projectRoot, foundBabelRCPath);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
if (!babelRC.extends) {
|
|
23
|
+
babelRC.presets = [
|
|
24
|
+
// { plugins: [transformImportMetaGlobPlugin] }, // Added to support Vite's `import.meta.glob`
|
|
25
|
+
require("babel-preset-expo")];
|
|
26
|
+
}
|
|
27
|
+
return babelRC;
|
|
28
|
+
};
|
|
29
|
+
}();
|
|
30
|
+
export { loadBabelConfig };
|
|
31
|
+
//# sourceMappingURL=loadBabelConfig.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["fs","path","loadBabelConfig","babelRC","_getBabelRC","param","projectRoot","possibleBabelRCPaths","foundBabelRCPath","find","configFileName","existsSync","resolve","extends","presets","require"],"sources":["../../../src/transformer/loadBabelConfig.ts"],"sourcesContent":[null],"mappings":"AAOA,OAAOA,EAAA,MAAQ;AACf,OAAOC,IAAA,MAAU;AASV,IAAAC,eAAM,kBAAmB,YAAM;EACpC,IAAIC,OAAA,GAAgE;EAEpE,OAAO,SAASC,YAAYC,KAAE;IAC5B,IAAI;MAAAC;IAAY,IAAMD,KAAA;IACpB,IAAAF,OAAO;MACT,OAAAA,OAAA;IAEA;IAEAA,OAAI;IAGF,IAAAG,WAAM;MAAuB,IAC3BC,oBAAA,IACA,YACA,eACA,mBACA,oBACF,mBAEA;MAA8C,IAAMC,gBAAA,GAClDD,oBAAmB,CAAAE,IAAA,CAAQ,UAAAC,cAAa;QAC1C,OAAAV,EAAA,CAAAW,UAAA,CAAAV,IAAA,CAAAW,OAAA,CAAAN,WAAA,EAAAI,cAAA;MAGA;MACE,IAAAF,gBAAkB;QACpBL,OAAA,CAAAU,OAAA,GAAAZ,IAAA,CAAAW,OAAA,CAAAN,WAAA,EAAAE,gBAAA;MACF;IAGA;IACE,KAAAL,OAAQ,CAAAU,OAAU;MAAAV,OAAA,CAAAW,OAAA;MAEhB;MACFC,OAAA,sBACF;IAEA;IACF,OAAAZ,OAAA;EACF,CAAG","ignoreList":[]}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import * as babel from "./babel-core.mjs";
|
|
2
|
+
function isTypeScriptSource(fileName) {
|
|
3
|
+
return fileName?.endsWith(".ts");
|
|
4
|
+
}
|
|
5
|
+
function isTSXSource(fileName) {
|
|
6
|
+
return fileName?.endsWith(".tsx");
|
|
7
|
+
}
|
|
8
|
+
function transformSync(src, babelConfig, {
|
|
9
|
+
hermesParser
|
|
10
|
+
}) {
|
|
11
|
+
const loadedBabelConfig = babel.loadOptions(babelConfig);
|
|
12
|
+
if (!loadedBabelConfig) return null;
|
|
13
|
+
let hasWorkletsPlugin = false;
|
|
14
|
+
loadedBabelConfig.plugins = loadedBabelConfig.plugins?.filter(plugin => {
|
|
15
|
+
const workletsPlugin = plugin;
|
|
16
|
+
if (workletsPlugin.key !== "worklets") return true;
|
|
17
|
+
if (workletsPlugin.options && "workletizableModules" in workletsPlugin.options) {
|
|
18
|
+
throw new Error("[vxrn] `workletizableModules` was removed from react-native-worklets. use `importForwarding.moduleNames`.");
|
|
19
|
+
}
|
|
20
|
+
if (hasWorkletsPlugin) return false;
|
|
21
|
+
hasWorkletsPlugin = true;
|
|
22
|
+
return true;
|
|
23
|
+
});
|
|
24
|
+
const isTypeScript = isTypeScriptSource(loadedBabelConfig.filename ?? "") || isTSXSource(loadedBabelConfig.filename ?? "");
|
|
25
|
+
if (isTypeScript) {
|
|
26
|
+
return parseWithBabel(src, loadedBabelConfig);
|
|
27
|
+
}
|
|
28
|
+
if (!isTypeScript && (
|
|
29
|
+
// The Hermes parser doesn't support comments or babel proposals such as export default from, meaning it has lower compatibility with larger parts
|
|
30
|
+
// of the ecosystem.
|
|
31
|
+
// However, React Native ships with flow syntax that isn't supported in Babel so we need to use Hermes for those files.
|
|
32
|
+
// We can try to quickly detect if the file uses flow syntax by checking for the @flow pragma which is present in every React Native file.
|
|
33
|
+
hermesParser || src.includes(" @flow"))) {
|
|
34
|
+
return parseWithHermes(src, loadedBabelConfig);
|
|
35
|
+
}
|
|
36
|
+
return parseWithBabel(src, loadedBabelConfig);
|
|
37
|
+
}
|
|
38
|
+
function parseWithHermes(src, babelConfig) {
|
|
39
|
+
const sourceAst = require("hermes-parser").parse(src, {
|
|
40
|
+
babel: true,
|
|
41
|
+
sourceType: babelConfig.sourceType
|
|
42
|
+
});
|
|
43
|
+
return babel.transformFromAstSync(sourceAst, src, babelConfig);
|
|
44
|
+
}
|
|
45
|
+
function parseWithBabel(src, babelConfig) {
|
|
46
|
+
return babel.transformSync(src, babelConfig);
|
|
47
|
+
}
|
|
48
|
+
export { transformSync };
|
|
49
|
+
//# sourceMappingURL=transformSync.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["babel","isTypeScriptSource","fileName","endsWith","isTSXSource","transformSync","src","babelConfig","hermesParser","loadedBabelConfig","loadOptions","hasWorkletsPlugin","plugins","filter","plugin","workletsPlugin","key","options","Error","isTypeScript","filename","parseWithBabel","includes","parseWithHermes","sourceAst","require","parse","sourceType","transformFromAstSync"],"sources":["../../../src/transformer/transformSync.ts"],"sourcesContent":[null],"mappings":"AAMA,YAAYA,KAAA,MAAW;AAGvB,SAASC,mBAAmBC,QAAA,EAA2B;EACrD,OAAOA,QAAA,EAAUC,QAAA,CAAS,KAAK;AACjC;AAEA,SAASC,YAAYF,QAAA,EAA2B;EAC9C,OAAOA,QAAA,EAAUC,QAAA,CAAS,MAAM;AAClC;AAEO,SAASE,cACdC,GAAA,EACAC,WAAA,EACA;EAAEC;AAAa,GACf;EACA,MAAMC,iBAAA,GAAoBT,KAAA,CAAMU,WAAA,CAC9BH,WACF;EACA,IAAI,CAACE,iBAAA,EAAmB,OAAO;EAI/B,IAAIE,iBAAA,GAAoB;EACxBF,iBAAA,CAAkBG,OAAA,GAAUH,iBAAA,CAAkBG,OAAA,EAASC,MAAA,CAAQC,MAAA,IAAW;IACxE,MAAMC,cAAA,GAAiBD,MAAA;IAIvB,IAAIC,cAAA,CAAeC,GAAA,KAAQ,YAAY,OAAO;IAC9C,IAAID,cAAA,CAAeE,OAAA,IAAW,0BAA0BF,cAAA,CAAeE,OAAA,EAAS;MAC9E,MAAM,IAAIC,KAAA,CACR,2GACF;IACF;IACA,IAAIP,iBAAA,EAAmB,OAAO;IAC9BA,iBAAA,GAAoB;IACpB,OAAO;EACT,CAAC;EAED,MAAMQ,YAAA,GACJlB,kBAAA,CAAmBQ,iBAAA,CAAkBW,QAAA,IAAY,EAAE,KACnDhB,WAAA,CAAYK,iBAAA,CAAkBW,QAAA,IAAY,EAAE;EAE9C,IAAID,YAAA,EAAc;IAChB,OAAOE,cAAA,CAAef,GAAA,EAAKG,iBAAiB;EAC9C;EAEA,IACE,CAACU,YAAA;EAAA;EAAA;EAAA;EAAA;EAKAX,YAAA,IAAgBF,GAAA,CAAIgB,QAAA,CAAS,QAAQ,IACtC;IACA,OAAOC,eAAA,CAAgBjB,GAAA,EAAKG,iBAAiB;EAC/C;EAEA,OAAOY,cAAA,CAAef,GAAA,EAAKG,iBAAiB;AAC9C;AAEA,SAASc,gBAAgBjB,GAAA,EAAaC,WAAA,EAAqC;EACzE,MAAMiB,SAAA,GAAYC,OAAA,CAAQ,eAAe,EAAEC,KAAA,CAAMpB,GAAA,EAAK;IACpDN,KAAA,EAAO;IACP2B,UAAA,EAAYpB,WAAA,CAAYoB;EAC1B,CAAC;EACD,OAAO3B,KAAA,CAAM4B,oBAAA,CAAqBJ,SAAA,EAAWlB,GAAA,EAAKC,WAAW;AAC/D;AAEA,SAASc,eAAef,GAAA,EAAaC,WAAA,EAAqC;EACxE,OAAOP,KAAA,CAAMK,aAAA,CAAcC,GAAA,EAAKC,WAAW;AAC7C","ignoreList":[]}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import * as babel from "./babel-core.native.js";
|
|
2
|
+
function isTypeScriptSource(fileName) {
|
|
3
|
+
return fileName === null || fileName === void 0 ? void 0 : fileName.endsWith(".ts");
|
|
4
|
+
}
|
|
5
|
+
function isTSXSource(fileName) {
|
|
6
|
+
return fileName === null || fileName === void 0 ? void 0 : fileName.endsWith(".tsx");
|
|
7
|
+
}
|
|
8
|
+
function transformSync(src, babelConfig, param) {
|
|
9
|
+
var {
|
|
10
|
+
hermesParser
|
|
11
|
+
} = param;
|
|
12
|
+
var _loadedBabelConfig_filename, _loadedBabelConfig_filename1;
|
|
13
|
+
var _loadedBabelConfig_plugins;
|
|
14
|
+
var loadedBabelConfig = babel.loadOptions(babelConfig);
|
|
15
|
+
if (!loadedBabelConfig) return null;
|
|
16
|
+
var hasWorkletsPlugin = false;
|
|
17
|
+
loadedBabelConfig.plugins = (_loadedBabelConfig_plugins = loadedBabelConfig.plugins) === null || _loadedBabelConfig_plugins === void 0 ? void 0 : _loadedBabelConfig_plugins.filter(function (plugin) {
|
|
18
|
+
var workletsPlugin = plugin;
|
|
19
|
+
if (workletsPlugin.key !== "worklets") return true;
|
|
20
|
+
if (workletsPlugin.options && "workletizableModules" in workletsPlugin.options) {
|
|
21
|
+
throw new Error("[vxrn] `workletizableModules` was removed from react-native-worklets. use `importForwarding.moduleNames`.");
|
|
22
|
+
}
|
|
23
|
+
if (hasWorkletsPlugin) return false;
|
|
24
|
+
hasWorkletsPlugin = true;
|
|
25
|
+
return true;
|
|
26
|
+
});
|
|
27
|
+
var isTypeScript = isTypeScriptSource((_loadedBabelConfig_filename = loadedBabelConfig.filename) !== null && _loadedBabelConfig_filename !== void 0 ? _loadedBabelConfig_filename : "") || isTSXSource((_loadedBabelConfig_filename1 = loadedBabelConfig.filename) !== null && _loadedBabelConfig_filename1 !== void 0 ? _loadedBabelConfig_filename1 : "");
|
|
28
|
+
if (isTypeScript) {
|
|
29
|
+
return parseWithBabel(src, loadedBabelConfig);
|
|
30
|
+
}
|
|
31
|
+
if (!isTypeScript && (
|
|
32
|
+
// The Hermes parser doesn't support comments or babel proposals such as export default from, meaning it has lower compatibility with larger parts
|
|
33
|
+
// of the ecosystem.
|
|
34
|
+
// However, React Native ships with flow syntax that isn't supported in Babel so we need to use Hermes for those files.
|
|
35
|
+
// We can try to quickly detect if the file uses flow syntax by checking for the @flow pragma which is present in every React Native file.
|
|
36
|
+
hermesParser || src.includes(" @flow"))) {
|
|
37
|
+
return parseWithHermes(src, loadedBabelConfig);
|
|
38
|
+
}
|
|
39
|
+
return parseWithBabel(src, loadedBabelConfig);
|
|
40
|
+
}
|
|
41
|
+
function parseWithHermes(src, babelConfig) {
|
|
42
|
+
var sourceAst = require("hermes-parser").parse(src, {
|
|
43
|
+
babel: true,
|
|
44
|
+
sourceType: babelConfig.sourceType
|
|
45
|
+
});
|
|
46
|
+
return babel.transformFromAstSync(sourceAst, src, babelConfig);
|
|
47
|
+
}
|
|
48
|
+
function parseWithBabel(src, babelConfig) {
|
|
49
|
+
return babel.transformSync(src, babelConfig);
|
|
50
|
+
}
|
|
51
|
+
export { transformSync };
|
|
52
|
+
//# sourceMappingURL=transformSync.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["babel","isTypeScriptSource","fileName","endsWith","isTSXSource","transformSync","src","babelConfig","param","hermesParser","_loadedBabelConfig_filename","_loadedBabelConfig_filename1","_loadedBabelConfig_plugins","loadedBabelConfig","loadOptions","hasWorkletsPlugin","plugins","filter","plugin","workletsPlugin","key","options","Error","isTypeScript","filename","parseWithBabel","includes","parseWithHermes","sourceAst","require","parse","sourceType","transformFromAstSync"],"sources":["../../../src/transformer/transformSync.ts"],"sourcesContent":[null],"mappings":"AAMA,YAAYA,KAAA,MAAW;AAGvB,SAASC,mBAAmBC,QAAA,EAA2B;EACrD,OAAOA,QAAA,KAAU,QAASA,QAAK,uBAAAA,QAAA,CAAAC,QAAA;AACjC;AAEA,SAASC,YAAYF,QAAA,EAA2B;EAC9C,OAAOA,QAAA,KAAU,QAASA,QAAM,uBAAAA,QAAA,CAAAC,QAAA;AAClC;AAEO,SAASE,cACdC,GAAA,EACAC,WAAA,EACAC,KAAE;EAEF;IAAMC;EAAA,IAAAD,KAAoB;EAAM,IAC9BE,2BAAA,EAAAC,4BAAA;EACF,IAAAC,0BAAA;EACA,IAAIC,iBAAC,GAAmBb,KAAA,CAAAc,WAAO,CAAAP,WAAA;EAI/B,IAAI,CAAAM,iBAAA,EAAoB;EACxB,IAAAE,iBAAkB,QAAU;EAC1BF,iBAAM,CAAAG,OAAiB,IAAAJ,0BAAA,GAAAC,iBAAA,CAAAG,OAAA,cAAAJ,0BAAA,uBAAAA,0BAAA,CAAAK,MAAA,WAAAC,MAAA;IAIvB,IAAIC,cAAA,GAAeD,MAAQ;IAC3B,IAAIC,cAAA,CAAeC,GAAA,eAAW;IAC5B,IAAAD,cAAU,CAAAE,OAAA,8BAAAF,cAAA,CAAAE,OAAA;MAAA,MACR,IAAAC,KAAA;IAAA;IAEJ,IAAAP,iBAAA;IACAA,iBAAI,OAAmB;IACvB;EACA;EACF,IAACQ,YAAA,GAAAtB,kBAAA,EAAAS,2BAAA,GAAAG,iBAAA,CAAAW,QAAA,cAAAd,2BAAA,cAAAA,2BAAA,UAAAN,WAAA,EAAAO,4BAAA,GAAAE,iBAAA,CAAAW,QAAA,cAAAb,4BAAA,cAAAA,4BAAA;EAED,IAAAY,YAAM;IAIN,OAAIE,cAAc,CAAAnB,GAAA,EAAAO,iBAAA;EAChB;EACF,KAAAU,YAAA;EAAA;EAEA;EACG;EAAA;EAAAd,YAAA,IAAAH,GAAA,CAAAoB,QAAA;IAKA,OAAAC,eAAoB,CAAArB,GAAA,EAASO,iBAC9B;EACA;EACF,OAAAY,cAAA,CAAAnB,GAAA,EAAAO,iBAAA;AAEA;AACF,SAAAc,gBAAArB,GAAA,EAAAC,WAAA;EAEA,IAAAqB,SAAS,GAAAC,OAAgB,gBAAa,EAAqCC,KAAA,CAAAxB,GAAA;IACzEN,KAAM;IACJ+B,UAAO,EAAAxB,WAAA,CAAAwB;EAAA,EACP;EACF,OAAC/B,KAAA,CAAAgC,oBAAA,CAAAJ,SAAA,EAAAtB,GAAA,EAAAC,WAAA;AACD;AACF,SAAAkB,eAAAnB,GAAA,EAAAC,WAAA;EAEA,OAASP,KAAA,CAAAK,aAAe,CAAaC,GAAA,EAAAC,WAAqC;AACxE;AACF,S","ignoreList":[]}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { transformSync } from "./transformSync.mjs";
|
|
3
|
+
const workletsPlugin = marker => () => ({
|
|
4
|
+
name: "worklets",
|
|
5
|
+
visitor: {
|
|
6
|
+
Program(_, state) {
|
|
7
|
+
const passes = state.file.metadata.workletsPasses ?? [];
|
|
8
|
+
state.file.metadata.workletsPasses = passes;
|
|
9
|
+
passes.push(marker);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
describe("transformSync", () => {
|
|
14
|
+
it("runs an app-configured Worklets plugin only once when a preset adds another", () => {
|
|
15
|
+
const result = transformSync("export const value = 1", {
|
|
16
|
+
filename: "/project/input.ts",
|
|
17
|
+
babelrc: false,
|
|
18
|
+
configFile: false,
|
|
19
|
+
plugins: [workletsPlugin("app")],
|
|
20
|
+
presets: [() => ({
|
|
21
|
+
plugins: [workletsPlugin("preset")]
|
|
22
|
+
})]
|
|
23
|
+
}, {});
|
|
24
|
+
expect(result?.metadata?.workletsPasses).toEqual(["app"]);
|
|
25
|
+
});
|
|
26
|
+
it("rejects the removed workletizableModules option before transforming", () => {
|
|
27
|
+
expect(() => transformSync("export const value = 1", {
|
|
28
|
+
filename: "/project/input.ts",
|
|
29
|
+
babelrc: false,
|
|
30
|
+
configFile: false,
|
|
31
|
+
plugins: [[workletsPlugin("app"), {
|
|
32
|
+
workletizableModules: ["remend"]
|
|
33
|
+
}]]
|
|
34
|
+
}, {})).toThrow("use `importForwarding.moduleNames`");
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
//# sourceMappingURL=transformSync.test.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["describe","expect","it","transformSync","workletsPlugin","marker","name","visitor","Program","_","state","passes","file","metadata","workletsPasses","push","result","filename","babelrc","configFile","plugins","presets","toEqual","workletizableModules","toThrow"],"sources":["../../../src/transformer/transformSync.test.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,QAAA,EAAUC,MAAA,EAAQC,EAAA,QAAU;AACrC,SAASC,aAAA,QAAqB;AAI9B,MAAMC,cAAA,GAAkBC,MAAA,IAAmB,OAAO;EAChDC,IAAA,EAAM;EACNC,OAAA,EAAS;IACPC,QAAQC,CAAA,EAAYC,KAAA,EAAiD;MACnE,MAAMC,MAAA,GAASD,KAAA,CAAME,IAAA,CAAKC,QAAA,CAASC,cAAA,IAAkB,EAAC;MACtDJ,KAAA,CAAME,IAAA,CAAKC,QAAA,CAASC,cAAA,GAAiBH,MAAA;MACrCA,MAAA,CAAOI,IAAA,CAAKV,MAAM;IACpB;EACF;AACF;AAEAL,QAAA,CAAS,iBAAiB,MAAM;EAC9BE,EAAA,CAAG,+EAA+E,MAAM;IACtF,MAAMc,MAAA,GAASb,aAAA,CACb,0BACA;MACEc,QAAA,EAAU;MACVC,OAAA,EAAS;MACTC,UAAA,EAAY;MACZC,OAAA,EAAS,CAAChB,cAAA,CAAe,KAAK,CAAC;MAC/BiB,OAAA,EAAS,CAAC,OAAO;QAAED,OAAA,EAAS,CAAChB,cAAA,CAAe,QAAQ,CAAC;MAAE,EAAE;IAC3D,GACA,CAAC,CACH;IAEAH,MAAA,CAAQe,MAAA,EAAQH,QAAA,EAA2CC,cAAc,EAAEQ,OAAA,CAAQ,CACjF,MACD;EACH,CAAC;EAEDpB,EAAA,CAAG,uEAAuE,MAAM;IAC9ED,MAAA,CAAO,MACLE,aAAA,CACE,0BACA;MACEc,QAAA,EAAU;MACVC,OAAA,EAAS;MACTC,UAAA,EAAY;MACZC,OAAA,EAAS,CAAC,CAAChB,cAAA,CAAe,KAAK,GAAG;QAAEmB,oBAAA,EAAsB,CAAC,QAAQ;MAAE,CAAC,CAAC;IACzE,GACA,CAAC,CACH,CACF,EAAEC,OAAA,CAAQ,oCAAoC;EAChD,CAAC;AACH,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { transformSync } from "./transformSync.native.js";
|
|
3
|
+
var workletsPlugin = function (marker) {
|
|
4
|
+
return function () {
|
|
5
|
+
return {
|
|
6
|
+
name: "worklets",
|
|
7
|
+
visitor: {
|
|
8
|
+
Program(_, state) {
|
|
9
|
+
var _state_file_metadata_workletsPasses;
|
|
10
|
+
var passes = (_state_file_metadata_workletsPasses = state.file.metadata.workletsPasses) !== null && _state_file_metadata_workletsPasses !== void 0 ? _state_file_metadata_workletsPasses : [];
|
|
11
|
+
state.file.metadata.workletsPasses = passes;
|
|
12
|
+
passes.push(marker);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
describe("transformSync", function () {
|
|
19
|
+
it("runs an app-configured Worklets plugin only once when a preset adds another", function () {
|
|
20
|
+
var _result_metadata;
|
|
21
|
+
var result = transformSync("export const value = 1", {
|
|
22
|
+
filename: "/project/input.ts",
|
|
23
|
+
babelrc: false,
|
|
24
|
+
configFile: false,
|
|
25
|
+
plugins: [workletsPlugin("app")],
|
|
26
|
+
presets: [function () {
|
|
27
|
+
return {
|
|
28
|
+
plugins: [workletsPlugin("preset")]
|
|
29
|
+
};
|
|
30
|
+
}]
|
|
31
|
+
}, {});
|
|
32
|
+
expect(result === null || result === void 0 ? void 0 : (_result_metadata = result.metadata) === null || _result_metadata === void 0 ? void 0 : _result_metadata.workletsPasses).toEqual(["app"]);
|
|
33
|
+
});
|
|
34
|
+
it("rejects the removed workletizableModules option before transforming", function () {
|
|
35
|
+
expect(function () {
|
|
36
|
+
return transformSync("export const value = 1", {
|
|
37
|
+
filename: "/project/input.ts",
|
|
38
|
+
babelrc: false,
|
|
39
|
+
configFile: false,
|
|
40
|
+
plugins: [[workletsPlugin("app"), {
|
|
41
|
+
workletizableModules: ["remend"]
|
|
42
|
+
}]]
|
|
43
|
+
}, {});
|
|
44
|
+
}).toThrow("use `importForwarding.moduleNames`");
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
//# sourceMappingURL=transformSync.test.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["describe","expect","it","transformSync","workletsPlugin","marker","name","visitor","Program","_","state","_state_file_metadata_workletsPasses","passes","file","metadata","workletsPasses","push","_result_metadata","result","filename","babelrc","configFile","plugins","presets","toEqual"],"sources":["../../../src/transformer/transformSync.test.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,QAAA,EAAUC,MAAA,EAAQC,EAAA,QAAU;AACrC,SAASC,aAAA,QAAqB;AAI9B,IAAAC,cAAM,YAAAA,CAAkBC,MAAmB;EACzC,OAAM;IACN,OAAS;MACPC,IAAA,EAAQ,UAA6D;MACnEC,OAAM;QACNC,OAAMA,CAAAC,CAAK,EAAAC,KAAA,EAAS;UACpB,IAAOC,mCAAW;UACpB,IAAAC,MAAA,IAAAD,mCAAA,GAAAD,KAAA,CAAAG,IAAA,CAAAC,QAAA,CAAAC,cAAA,cAAAJ,mCAAA,cAAAA,mCAAA;UACFD,KAAA,CAAAG,IAAA,CAAAC,QAAA,CAAAC,cAAA,GAAAH,MAAA;UACFA,MAAA,CAAAI,IAAA,CAAAX,MAAA;QAEA;MACK;IACD;EAAe;AACb;AACAL,QACE,gBAAU;EAAAE,EAAA,8EACD;IAAA,IACTe,gBAAY;IAAA,IACZC,MAAA,GAASf,aAAC,yBAAqB;MAAAgB,QAC/B,qBAAmB;MACrBC,OAAA;MACAC,UAAC;MACHC,OAAA,GAEAlB,cAAgB,OAA2C,CACzD;MACDmB,OAAA,GACF;QAEE;UACDD,OAAA,GACElB,cAAA;QAEE;MAAA;IAEW,MACT;IAAYH,MACZ,CAAAiB,MAAA,KAAW,QAAAA,MAAe,KAAK,KAAK,cAAAD,gBAAuB,GAAUC,MAAE,CAAAJ,QAAA,cAAAG,gBAAA,uBAAAA,gBAAA,CAAAF,cAAA,EAAAS,OAAA,OACzE;EACC;EACHtB,EACF,sEAA8C;IAC/CD,MAAA;MACF,OAAAE,aAAA","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":[],"sourcesContent":[],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":[],"sourcesContent":[],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { ChildProcess } from "node:child_process";
|
|
2
|
+
import process from "node:process";
|
|
3
|
+
import colors from "picocolors";
|
|
4
|
+
const debug = (..._) => {};
|
|
5
|
+
const PRE_EXIT_SIGNALS = ["SIGHUP", "SIGINT", "SIGTERM", "SIGBREAK"];
|
|
6
|
+
const queue = [];
|
|
7
|
+
let unsubscribe = null;
|
|
8
|
+
function installExitHooks(asyncExitHook) {
|
|
9
|
+
if (!queue.length) {
|
|
10
|
+
unsubscribe = attachMasterListener();
|
|
11
|
+
}
|
|
12
|
+
queue.push(asyncExitHook);
|
|
13
|
+
return () => {
|
|
14
|
+
const index = queue.indexOf(asyncExitHook);
|
|
15
|
+
if (index >= 0) {
|
|
16
|
+
queue.splice(index, 1);
|
|
17
|
+
}
|
|
18
|
+
if (!queue.length) {
|
|
19
|
+
unsubscribe?.();
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
function createExitHook(signal) {
|
|
24
|
+
return guardAsync(async () => {
|
|
25
|
+
debug(`pre-exit (signal: ${signal}, queue length: ${queue.length})`);
|
|
26
|
+
for (const [index, hookAsync] of Object.entries(queue)) {
|
|
27
|
+
try {
|
|
28
|
+
await hookAsync(signal);
|
|
29
|
+
} catch (error) {
|
|
30
|
+
debug(`Error in exit hook: %O (queue: ${index})`, error);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
debug(`post-exit (code: ${process.exitCode ?? 0})`);
|
|
34
|
+
process.exit();
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
function attachMasterListener() {
|
|
38
|
+
const hooks = [];
|
|
39
|
+
for (const signal of PRE_EXIT_SIGNALS) {
|
|
40
|
+
const hook = createExitHook(signal);
|
|
41
|
+
hooks.push([signal, hook]);
|
|
42
|
+
process.on(signal, hook);
|
|
43
|
+
}
|
|
44
|
+
return () => {
|
|
45
|
+
for (const [signal, hook] of hooks) {
|
|
46
|
+
process.removeListener(signal, hook);
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
function ensureProcessExitsAfterDelay(waitUntilExitMs = 1e4, startedAtMs = Date.now()) {
|
|
51
|
+
const expectedResources = [process.stdout.isTTY ? "TTYWrap" : "PipeWrap", process.stderr.isTTY ? "TTYWrap" : "PipeWrap", process.stdin.isTTY ? "TTYWrap" : "PipeWrap"];
|
|
52
|
+
const activeResources = process.getActiveResourcesInfo();
|
|
53
|
+
const unexpectedActiveResources = activeResources.filter(activeResource => {
|
|
54
|
+
const index = expectedResources.indexOf(activeResource);
|
|
55
|
+
if (index >= 0) {
|
|
56
|
+
expectedResources.splice(index, 1);
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
return true;
|
|
60
|
+
});
|
|
61
|
+
const canExitProcess = !unexpectedActiveResources.length;
|
|
62
|
+
if (canExitProcess) {
|
|
63
|
+
return debug("no active resources detected, process can safely exit");
|
|
64
|
+
}
|
|
65
|
+
debug(`process is trying to exit, but is stuck on unexpected active resources:`, unexpectedActiveResources);
|
|
66
|
+
const elapsedTime = Date.now() - startedAtMs;
|
|
67
|
+
const killedChildren = killActiveChildProcesses(elapsedTime < 200 ? "SIGTERM" : "SIGKILL");
|
|
68
|
+
if (killedChildren > 0) {
|
|
69
|
+
const recheck = setTimeout(() => {
|
|
70
|
+
clearTimeout(recheck);
|
|
71
|
+
ensureProcessExitsAfterDelay(waitUntilExitMs, startedAtMs);
|
|
72
|
+
}, 50);
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
if (elapsedTime > waitUntilExitMs) {
|
|
76
|
+
debug("active handles detected past the exit delay, forcefully exiting:", activeResources);
|
|
77
|
+
tryWarnActiveProcesses();
|
|
78
|
+
return process.exit(0);
|
|
79
|
+
}
|
|
80
|
+
const timeoutId = setTimeout(() => {
|
|
81
|
+
clearTimeout(timeoutId);
|
|
82
|
+
ensureProcessExitsAfterDelay(waitUntilExitMs, startedAtMs);
|
|
83
|
+
}, 100);
|
|
84
|
+
}
|
|
85
|
+
function killActiveChildProcesses(signal) {
|
|
86
|
+
try {
|
|
87
|
+
const children = process._getActiveHandles().filter(handle => handle instanceof ChildProcess);
|
|
88
|
+
for (const child of children) {
|
|
89
|
+
try {
|
|
90
|
+
child.kill(signal);
|
|
91
|
+
} catch (err) {
|
|
92
|
+
debug("failed to kill child process:", err);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return children.length;
|
|
96
|
+
} catch (err) {
|
|
97
|
+
debug("failed to enumerate active child processes:", err);
|
|
98
|
+
return 0;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
function tryWarnActiveProcesses() {
|
|
102
|
+
let activeProcesses = [];
|
|
103
|
+
try {
|
|
104
|
+
const children = process._getActiveHandles().filter(handle => handle instanceof ChildProcess);
|
|
105
|
+
if (children.length) {
|
|
106
|
+
activeProcesses = children.map(child => child.spawnargs.join(" "));
|
|
107
|
+
}
|
|
108
|
+
} catch (error) {
|
|
109
|
+
debug("failed to get active process information:", error);
|
|
110
|
+
}
|
|
111
|
+
if (!activeProcesses.length) {
|
|
112
|
+
warn("Something prevented Expo from exiting, forcefully exiting now.");
|
|
113
|
+
} else {
|
|
114
|
+
const singularOrPlural = activeProcesses.length === 1 ? "1 process" : `${activeProcesses.length} processes`;
|
|
115
|
+
warn(`Detected ${singularOrPlural} preventing process from exiting, forcefully exiting now.`);
|
|
116
|
+
warn(" - " + activeProcesses.join("\n - "));
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
function guardAsync(fn) {
|
|
120
|
+
let invoked = false;
|
|
121
|
+
let returnValue;
|
|
122
|
+
const guard = async (...args) => {
|
|
123
|
+
if (!invoked) {
|
|
124
|
+
invoked = true;
|
|
125
|
+
returnValue = await fn(...args);
|
|
126
|
+
}
|
|
127
|
+
return returnValue;
|
|
128
|
+
};
|
|
129
|
+
return guard;
|
|
130
|
+
}
|
|
131
|
+
function warn(...message) {
|
|
132
|
+
console.warn(...message.map(value => colors.yellow(value)));
|
|
133
|
+
}
|
|
134
|
+
export { ensureProcessExitsAfterDelay, guardAsync, installExitHooks, warn };
|
|
135
|
+
//# sourceMappingURL=exit.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["ChildProcess","process","colors","debug","_","PRE_EXIT_SIGNALS","queue","unsubscribe","installExitHooks","asyncExitHook","length","attachMasterListener","push","index","indexOf","splice","createExitHook","signal","guardAsync","hookAsync","Object","entries","error","exitCode","exit","hooks","hook","on","removeListener","ensureProcessExitsAfterDelay","waitUntilExitMs","startedAtMs","Date","now","expectedResources","stdout","isTTY","stderr","stdin","activeResources","getActiveResourcesInfo","unexpectedActiveResources","filter","activeResource","canExitProcess","elapsedTime","killedChildren","killActiveChildProcesses","recheck","setTimeout","clearTimeout","tryWarnActiveProcesses","timeoutId","children","_getActiveHandles","handle","child","kill","err","activeProcesses","map","spawnargs","join","warn","singularOrPlural","fn","invoked","returnValue","guard","args","message","console","value","yellow"],"sources":["../../../src/utils/exit.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
import { ChildProcess } from "child_process";
|
|
2
|
+
import process from "process";
|
|
3
|
+
import colors from "picocolors";
|
|
4
|
+
function _instanceof(left, right) {
|
|
5
|
+
if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
|
|
6
|
+
return !!right[Symbol.hasInstance](left);
|
|
7
|
+
} else {
|
|
8
|
+
return left instanceof right;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
var debug = function () {
|
|
12
|
+
for (var _len = arguments.length, _ = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
13
|
+
_[_key] = arguments[_key];
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
var PRE_EXIT_SIGNALS = ["SIGHUP", "SIGINT", "SIGTERM", "SIGBREAK"];
|
|
17
|
+
var queue = [];
|
|
18
|
+
var unsubscribe = null;
|
|
19
|
+
function installExitHooks(asyncExitHook) {
|
|
20
|
+
if (!queue.length) {
|
|
21
|
+
unsubscribe = attachMasterListener();
|
|
22
|
+
}
|
|
23
|
+
queue.push(asyncExitHook);
|
|
24
|
+
return function () {
|
|
25
|
+
var index = queue.indexOf(asyncExitHook);
|
|
26
|
+
if (index >= 0) {
|
|
27
|
+
queue.splice(index, 1);
|
|
28
|
+
}
|
|
29
|
+
if (!queue.length) {
|
|
30
|
+
unsubscribe === null || unsubscribe === void 0 ? void 0 : unsubscribe();
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
function createExitHook(signal) {
|
|
35
|
+
return guardAsync(async function () {
|
|
36
|
+
var _process_exitCode;
|
|
37
|
+
debug(`pre-exit (signal: ${signal}, queue length: ${queue.length})`);
|
|
38
|
+
var _iteratorNormalCompletion = true,
|
|
39
|
+
_didIteratorError = false,
|
|
40
|
+
_iteratorError = void 0;
|
|
41
|
+
try {
|
|
42
|
+
for (var _iterator = Object.entries(queue)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
43
|
+
var [index, hookAsync] = _step.value;
|
|
44
|
+
try {
|
|
45
|
+
await hookAsync(signal);
|
|
46
|
+
} catch (error) {
|
|
47
|
+
debug(`Error in exit hook: %O (queue: ${index})`, error);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
} catch (err) {
|
|
51
|
+
_didIteratorError = true;
|
|
52
|
+
_iteratorError = err;
|
|
53
|
+
} finally {
|
|
54
|
+
try {
|
|
55
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
56
|
+
_iterator.return();
|
|
57
|
+
}
|
|
58
|
+
} finally {
|
|
59
|
+
if (_didIteratorError) {
|
|
60
|
+
throw _iteratorError;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
debug(`post-exit (code: ${(_process_exitCode = process.exitCode) !== null && _process_exitCode !== void 0 ? _process_exitCode : 0})`);
|
|
65
|
+
process.exit();
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
function attachMasterListener() {
|
|
69
|
+
var hooks = [];
|
|
70
|
+
var _iteratorNormalCompletion = true,
|
|
71
|
+
_didIteratorError = false,
|
|
72
|
+
_iteratorError = void 0;
|
|
73
|
+
try {
|
|
74
|
+
for (var _iterator = PRE_EXIT_SIGNALS[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
75
|
+
var signal = _step.value;
|
|
76
|
+
var hook = createExitHook(signal);
|
|
77
|
+
hooks.push([signal, hook]);
|
|
78
|
+
process.on(signal, hook);
|
|
79
|
+
}
|
|
80
|
+
} catch (err) {
|
|
81
|
+
_didIteratorError = true;
|
|
82
|
+
_iteratorError = err;
|
|
83
|
+
} finally {
|
|
84
|
+
try {
|
|
85
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
86
|
+
_iterator.return();
|
|
87
|
+
}
|
|
88
|
+
} finally {
|
|
89
|
+
if (_didIteratorError) {
|
|
90
|
+
throw _iteratorError;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return function () {
|
|
95
|
+
var _iteratorNormalCompletion2 = true,
|
|
96
|
+
_didIteratorError2 = false,
|
|
97
|
+
_iteratorError2 = void 0;
|
|
98
|
+
try {
|
|
99
|
+
for (var _iterator2 = hooks[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
|
|
100
|
+
var [signal2, hook2] = _step2.value;
|
|
101
|
+
process.removeListener(signal2, hook2);
|
|
102
|
+
}
|
|
103
|
+
} catch (err) {
|
|
104
|
+
_didIteratorError2 = true;
|
|
105
|
+
_iteratorError2 = err;
|
|
106
|
+
} finally {
|
|
107
|
+
try {
|
|
108
|
+
if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
|
|
109
|
+
_iterator2.return();
|
|
110
|
+
}
|
|
111
|
+
} finally {
|
|
112
|
+
if (_didIteratorError2) {
|
|
113
|
+
throw _iteratorError2;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
function ensureProcessExitsAfterDelay() {
|
|
120
|
+
var waitUntilExitMs = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 1e4,
|
|
121
|
+
startedAtMs = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : Date.now();
|
|
122
|
+
var expectedResources = [process.stdout.isTTY ? "TTYWrap" : "PipeWrap", process.stderr.isTTY ? "TTYWrap" : "PipeWrap", process.stdin.isTTY ? "TTYWrap" : "PipeWrap"];
|
|
123
|
+
var activeResources = process.getActiveResourcesInfo();
|
|
124
|
+
var unexpectedActiveResources = activeResources.filter(function (activeResource) {
|
|
125
|
+
var index = expectedResources.indexOf(activeResource);
|
|
126
|
+
if (index >= 0) {
|
|
127
|
+
expectedResources.splice(index, 1);
|
|
128
|
+
return false;
|
|
129
|
+
}
|
|
130
|
+
return true;
|
|
131
|
+
});
|
|
132
|
+
var canExitProcess = !unexpectedActiveResources.length;
|
|
133
|
+
if (canExitProcess) {
|
|
134
|
+
return debug("no active resources detected, process can safely exit");
|
|
135
|
+
}
|
|
136
|
+
debug(`process is trying to exit, but is stuck on unexpected active resources:`, unexpectedActiveResources);
|
|
137
|
+
var elapsedTime = Date.now() - startedAtMs;
|
|
138
|
+
var killedChildren = killActiveChildProcesses(elapsedTime < 200 ? "SIGTERM" : "SIGKILL");
|
|
139
|
+
if (killedChildren > 0) {
|
|
140
|
+
var recheck = setTimeout(function () {
|
|
141
|
+
clearTimeout(recheck);
|
|
142
|
+
ensureProcessExitsAfterDelay(waitUntilExitMs, startedAtMs);
|
|
143
|
+
}, 50);
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
if (elapsedTime > waitUntilExitMs) {
|
|
147
|
+
debug("active handles detected past the exit delay, forcefully exiting:", activeResources);
|
|
148
|
+
tryWarnActiveProcesses();
|
|
149
|
+
return process.exit(0);
|
|
150
|
+
}
|
|
151
|
+
var timeoutId = setTimeout(function () {
|
|
152
|
+
clearTimeout(timeoutId);
|
|
153
|
+
ensureProcessExitsAfterDelay(waitUntilExitMs, startedAtMs);
|
|
154
|
+
}, 100);
|
|
155
|
+
}
|
|
156
|
+
function killActiveChildProcesses(signal) {
|
|
157
|
+
try {
|
|
158
|
+
var children = process._getActiveHandles().filter(function (handle) {
|
|
159
|
+
return _instanceof(handle, ChildProcess);
|
|
160
|
+
});
|
|
161
|
+
var _iteratorNormalCompletion = true,
|
|
162
|
+
_didIteratorError = false,
|
|
163
|
+
_iteratorError = void 0;
|
|
164
|
+
try {
|
|
165
|
+
for (var _iterator = children[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
166
|
+
var child = _step.value;
|
|
167
|
+
try {
|
|
168
|
+
child.kill(signal);
|
|
169
|
+
} catch (err) {
|
|
170
|
+
debug("failed to kill child process:", err);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
} catch (err) {
|
|
174
|
+
_didIteratorError = true;
|
|
175
|
+
_iteratorError = err;
|
|
176
|
+
} finally {
|
|
177
|
+
try {
|
|
178
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
179
|
+
_iterator.return();
|
|
180
|
+
}
|
|
181
|
+
} finally {
|
|
182
|
+
if (_didIteratorError) {
|
|
183
|
+
throw _iteratorError;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
return children.length;
|
|
188
|
+
} catch (err) {
|
|
189
|
+
debug("failed to enumerate active child processes:", err);
|
|
190
|
+
return 0;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
function tryWarnActiveProcesses() {
|
|
194
|
+
var activeProcesses = [];
|
|
195
|
+
try {
|
|
196
|
+
var children = process._getActiveHandles().filter(function (handle) {
|
|
197
|
+
return _instanceof(handle, ChildProcess);
|
|
198
|
+
});
|
|
199
|
+
if (children.length) {
|
|
200
|
+
activeProcesses = children.map(function (child) {
|
|
201
|
+
return child.spawnargs.join(" ");
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
} catch (error) {
|
|
205
|
+
debug("failed to get active process information:", error);
|
|
206
|
+
}
|
|
207
|
+
if (!activeProcesses.length) {
|
|
208
|
+
warn("Something prevented Expo from exiting, forcefully exiting now.");
|
|
209
|
+
} else {
|
|
210
|
+
var singularOrPlural = activeProcesses.length === 1 ? "1 process" : `${activeProcesses.length} processes`;
|
|
211
|
+
warn(`Detected ${singularOrPlural} preventing process from exiting, forcefully exiting now.`);
|
|
212
|
+
warn(" - " + activeProcesses.join("\n - "));
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
function guardAsync(fn) {
|
|
216
|
+
var invoked = false;
|
|
217
|
+
var returnValue;
|
|
218
|
+
var guard = async function () {
|
|
219
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
220
|
+
args[_key] = arguments[_key];
|
|
221
|
+
}
|
|
222
|
+
if (!invoked) {
|
|
223
|
+
invoked = true;
|
|
224
|
+
returnValue = await fn(...args);
|
|
225
|
+
}
|
|
226
|
+
return returnValue;
|
|
227
|
+
};
|
|
228
|
+
return guard;
|
|
229
|
+
}
|
|
230
|
+
function warn() {
|
|
231
|
+
for (var _len = arguments.length, message = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
232
|
+
message[_key] = arguments[_key];
|
|
233
|
+
}
|
|
234
|
+
console.warn(...message.map(function (value) {
|
|
235
|
+
return colors.yellow(value);
|
|
236
|
+
}));
|
|
237
|
+
}
|
|
238
|
+
export { ensureProcessExitsAfterDelay, guardAsync, installExitHooks, warn };
|
|
239
|
+
//# sourceMappingURL=exit.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["ChildProcess","process","colors","_instanceof","left","right","Symbol","hasInstance","debug","_len","arguments","length","_","Array","_key","PRE_EXIT_SIGNALS","queue","unsubscribe","installExitHooks","asyncExitHook","attachMasterListener","push","index","indexOf","splice","createExitHook","signal","guardAsync","_process_exitCode","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Object","entries","iterator","_step","next","done","hookAsync","value","error","err","return","exitCode","exit","hooks","hook","on","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_iterator2","_step2","signal2","hook2","removeListener","ensureProcessExitsAfterDelay","waitUntilExitMs","startedAtMs","Date","now","expectedResources","stdout","isTTY","stderr","stdin","activeResources","getActiveResourcesInfo","unexpectedActiveResources","filter","activeResource","canExitProcess","elapsedTime","killedChildren","killActiveChildProcesses","recheck","setTimeout","clearTimeout"],"sources":["../../../src/utils/exit.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|