@vxrn/vite-plugin-metro 2.0.0-beta.51.1 → 2.0.0-beta.53.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/dist/cjs/env/platformEnv.cjs +2 -0
  2. package/dist/cjs/env/platformEnv.native.cjs +2 -0
  3. package/dist/cjs/env/platformEnv.native.js +2 -0
  4. package/dist/cjs/env/platformEnv.native.js.map +1 -1
  5. package/dist/cjs/metro-config/getMetroBabelConfigFromViteConfig.cjs +10 -15
  6. package/dist/cjs/metro-config/getMetroBabelConfigFromViteConfig.native.cjs +27 -48
  7. package/dist/cjs/metro-config/getMetroBabelConfigFromViteConfig.native.js +27 -48
  8. package/dist/cjs/metro-config/getMetroBabelConfigFromViteConfig.native.js.map +1 -1
  9. package/dist/cjs/metro-config/getMetroConfigFromViteConfig.cjs +25 -2
  10. package/dist/cjs/metro-config/getMetroConfigFromViteConfig.native.cjs +26 -2
  11. package/dist/cjs/metro-config/getMetroConfigFromViteConfig.native.js +26 -2
  12. package/dist/cjs/metro-config/getMetroConfigFromViteConfig.native.js.map +1 -1
  13. package/dist/cjs/transformer/metroNativeWorker.cjs +12 -9
  14. package/dist/cjs/transformer/metroNativeWorker.native.cjs +16 -10
  15. package/dist/cjs/transformer/metroNativeWorker.native.js +16 -10
  16. package/dist/cjs/transformer/metroNativeWorker.native.js.map +1 -1
  17. package/dist/esm/env/platformEnv.mjs +2 -0
  18. package/dist/esm/env/platformEnv.mjs.map +1 -1
  19. package/dist/esm/env/platformEnv.native.js +2 -0
  20. package/dist/esm/env/platformEnv.native.js.map +1 -1
  21. package/dist/esm/metro-config/getMetroBabelConfigFromViteConfig.mjs +11 -15
  22. package/dist/esm/metro-config/getMetroBabelConfigFromViteConfig.mjs.map +1 -1
  23. package/dist/esm/metro-config/getMetroBabelConfigFromViteConfig.native.js +28 -48
  24. package/dist/esm/metro-config/getMetroBabelConfigFromViteConfig.native.js.map +1 -1
  25. package/dist/esm/metro-config/getMetroConfigFromViteConfig.mjs +25 -2
  26. package/dist/esm/metro-config/getMetroConfigFromViteConfig.mjs.map +1 -1
  27. package/dist/esm/metro-config/getMetroConfigFromViteConfig.native.js +26 -2
  28. package/dist/esm/metro-config/getMetroConfigFromViteConfig.native.js.map +1 -1
  29. package/dist/esm/transformer/metroNativeWorker.mjs +12 -9
  30. package/dist/esm/transformer/metroNativeWorker.mjs.map +1 -1
  31. package/dist/esm/transformer/metroNativeWorker.native.js +16 -10
  32. package/dist/esm/transformer/metroNativeWorker.native.js.map +1 -1
  33. package/package.json +4 -4
  34. package/src/babel-plugins/import-meta-env-plugin.ts +1 -1
  35. package/src/env/platformEnv.test.ts +12 -2
  36. package/src/env/platformEnv.ts +3 -0
  37. package/src/metro-config/getMetroBabelConfigFromViteConfig.test.ts +19 -25
  38. package/src/metro-config/getMetroBabelConfigFromViteConfig.ts +8 -27
  39. package/src/metro-config/getMetroConfigFromViteConfig.test.ts +55 -0
  40. package/src/metro-config/getMetroConfigFromViteConfig.ts +40 -2
  41. package/src/transformer/metroNativeWorker.test.ts +29 -16
  42. package/src/transformer/metroNativeWorker.ts +31 -18
  43. package/types/babel-plugins/import-meta-env-plugin.d.ts +1 -1
  44. package/types/env/platformEnv.d.ts +1 -0
  45. package/types/env/platformEnv.d.ts.map +1 -1
  46. package/types/metro-config/getMetroBabelConfigFromViteConfig.d.ts +1 -1
  47. package/types/metro-config/getMetroBabelConfigFromViteConfig.d.ts.map +1 -1
  48. package/types/metro-config/getMetroConfigFromViteConfig.d.ts.map +1 -1
  49. package/types/transformer/metroNativeWorker.d.ts +3 -5
  50. package/types/transformer/metroNativeWorker.d.ts.map +1 -1
@@ -17,6 +17,7 @@ const platformEnvMap = {
17
17
  VITE_ENVIRONMENT: "ios",
18
18
  VITE_NATIVE: "1",
19
19
  ONE_PLATFORM: "ios",
20
+ EXPO_OS: "ios",
20
21
  TAMAGUI_TARGET: "native",
21
22
  TAMAGUI_ENVIRONMENT: "ios"
22
23
  },
@@ -24,6 +25,7 @@ const platformEnvMap = {
24
25
  VITE_ENVIRONMENT: "android",
25
26
  VITE_NATIVE: "1",
26
27
  ONE_PLATFORM: "android",
28
+ EXPO_OS: "android",
27
29
  TAMAGUI_TARGET: "native",
28
30
  TAMAGUI_ENVIRONMENT: "android"
29
31
  }
@@ -1 +1 @@
1
- {"version":3,"file":"platformEnv.js","names":[],"sources":["esm/env/platformEnv.js"],"sourcesContent":["const platformEnvMap = {\n client: {\n VITE_ENVIRONMENT: \"client\",\n VITE_NATIVE: \"\",\n ONE_PLATFORM: \"web\",\n TAMAGUI_TARGET: \"web\",\n TAMAGUI_ENVIRONMENT: \"client\"\n },\n ssr: {\n VITE_ENVIRONMENT: \"ssr\",\n VITE_NATIVE: \"\",\n ONE_PLATFORM: \"web\",\n TAMAGUI_TARGET: \"web\",\n TAMAGUI_ENVIRONMENT: \"ssr\"\n },\n ios: {\n VITE_ENVIRONMENT: \"ios\",\n VITE_NATIVE: \"1\",\n ONE_PLATFORM: \"ios\",\n TAMAGUI_TARGET: \"native\",\n TAMAGUI_ENVIRONMENT: \"ios\"\n },\n android: {\n VITE_ENVIRONMENT: \"android\",\n VITE_NATIVE: \"1\",\n ONE_PLATFORM: \"android\",\n TAMAGUI_TARGET: \"native\",\n TAMAGUI_ENVIRONMENT: \"android\"\n }\n};\nfunction getPlatformEnv(environment) {\n return platformEnvMap[environment];\n}\nfunction metroPlatformToViteEnvironment(platform) {\n if (platform === \"ios\") return \"ios\";\n if (platform === \"android\") return \"android\";\n return \"client\";\n}\nfunction getPlatformEnvDefine(environment) {\n const env = getPlatformEnv(environment);\n const define = {};\n for (const [key, value] of Object.entries(env)) {\n define[`process.env.${key}`] = JSON.stringify(value);\n define[`import.meta.env.${key}`] = JSON.stringify(value);\n }\n return define;\n}\nexport {\n getPlatformEnv,\n getPlatformEnvDefine,\n metroPlatformToViteEnvironment\n};\n//# sourceMappingURL=platformEnv.js.map\n"],"mappings":";AAAA,MAAM,iBAAiB;CACrB,QAAQ;EACN,kBAAkB;EAClB,aAAa;EACb,cAAc;EACd,gBAAgB;EAChB,qBAAqB;CACvB;CACA,KAAK;EACH,kBAAkB;EAClB,aAAa;EACb,cAAc;EACd,gBAAgB;EAChB,qBAAqB;CACvB;CACA,KAAK;EACH,kBAAkB;EAClB,aAAa;EACb,cAAc;EACd,gBAAgB;EAChB,qBAAqB;CACvB;CACA,SAAS;EACP,kBAAkB;EAClB,aAAa;EACb,cAAc;EACd,gBAAgB;EAChB,qBAAqB;CACvB;AACF;AACA,SAAS,eAAe,aAAa;CACnC,OAAO,eAAe;AACxB;AACA,SAAS,+BAA+B,UAAU;CAChD,IAAI,aAAa,OAAO,OAAO;CAC/B,IAAI,aAAa,WAAW,OAAO;CACnC,OAAO;AACT;AACA,SAAS,qBAAqB,aAAa;CACzC,MAAM,MAAM,eAAe,WAAW;CACtC,MAAM,SAAS,CAAC;CAChB,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,GAAG,GAAG;EAC9C,OAAO,eAAe,SAAS,KAAK,UAAU,KAAK;EACnD,OAAO,mBAAmB,SAAS,KAAK,UAAU,KAAK;CACzD;CACA,OAAO;AACT"}
1
+ {"version":3,"file":"platformEnv.js","names":[],"sources":["esm/env/platformEnv.js"],"sourcesContent":["const platformEnvMap = {\n client: {\n VITE_ENVIRONMENT: \"client\",\n VITE_NATIVE: \"\",\n ONE_PLATFORM: \"web\",\n TAMAGUI_TARGET: \"web\",\n TAMAGUI_ENVIRONMENT: \"client\"\n },\n ssr: {\n VITE_ENVIRONMENT: \"ssr\",\n VITE_NATIVE: \"\",\n ONE_PLATFORM: \"web\",\n TAMAGUI_TARGET: \"web\",\n TAMAGUI_ENVIRONMENT: \"ssr\"\n },\n ios: {\n VITE_ENVIRONMENT: \"ios\",\n VITE_NATIVE: \"1\",\n ONE_PLATFORM: \"ios\",\n EXPO_OS: \"ios\",\n TAMAGUI_TARGET: \"native\",\n TAMAGUI_ENVIRONMENT: \"ios\"\n },\n android: {\n VITE_ENVIRONMENT: \"android\",\n VITE_NATIVE: \"1\",\n ONE_PLATFORM: \"android\",\n EXPO_OS: \"android\",\n TAMAGUI_TARGET: \"native\",\n TAMAGUI_ENVIRONMENT: \"android\"\n }\n};\nfunction getPlatformEnv(environment) {\n return platformEnvMap[environment];\n}\nfunction metroPlatformToViteEnvironment(platform) {\n if (platform === \"ios\") return \"ios\";\n if (platform === \"android\") return \"android\";\n return \"client\";\n}\nfunction getPlatformEnvDefine(environment) {\n const env = getPlatformEnv(environment);\n const define = {};\n for (const [key, value] of Object.entries(env)) {\n define[`process.env.${key}`] = JSON.stringify(value);\n define[`import.meta.env.${key}`] = JSON.stringify(value);\n }\n return define;\n}\nexport {\n getPlatformEnv,\n getPlatformEnvDefine,\n metroPlatformToViteEnvironment\n};\n//# sourceMappingURL=platformEnv.js.map\n"],"mappings":";AAAA,MAAM,iBAAiB;CACrB,QAAQ;EACN,kBAAkB;EAClB,aAAa;EACb,cAAc;EACd,gBAAgB;EAChB,qBAAqB;CACvB;CACA,KAAK;EACH,kBAAkB;EAClB,aAAa;EACb,cAAc;EACd,gBAAgB;EAChB,qBAAqB;CACvB;CACA,KAAK;EACH,kBAAkB;EAClB,aAAa;EACb,cAAc;EACd,SAAS;EACT,gBAAgB;EAChB,qBAAqB;CACvB;CACA,SAAS;EACP,kBAAkB;EAClB,aAAa;EACb,cAAc;EACd,SAAS;EACT,gBAAgB;EAChB,qBAAqB;CACvB;AACF;AACA,SAAS,eAAe,aAAa;CACnC,OAAO,eAAe;AACxB;AACA,SAAS,+BAA+B,UAAU;CAChD,IAAI,aAAa,OAAO,OAAO;CAC/B,IAAI,aAAa,WAAW,OAAO;CACnC,OAAO;AACT;AACA,SAAS,qBAAqB,aAAa;CACzC,MAAM,MAAM,eAAe,WAAW;CACtC,MAAM,SAAS,CAAC;CAChB,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,GAAG,GAAG;EAC9C,OAAO,eAAe,SAAS,KAAK,UAAU,KAAK;EACnD,OAAO,mBAAmB,SAAS,KAAK,UAAU,KAAK;CACzD;CACA,OAAO;AACT"}
@@ -17,6 +17,7 @@ var platformEnvMap = {
17
17
  VITE_ENVIRONMENT: "ios",
18
18
  VITE_NATIVE: "1",
19
19
  ONE_PLATFORM: "ios",
20
+ EXPO_OS: "ios",
20
21
  TAMAGUI_TARGET: "native",
21
22
  TAMAGUI_ENVIRONMENT: "ios"
22
23
  },
@@ -24,6 +25,7 @@ var platformEnvMap = {
24
25
  VITE_ENVIRONMENT: "android",
25
26
  VITE_NATIVE: "1",
26
27
  ONE_PLATFORM: "android",
28
+ EXPO_OS: "android",
27
29
  TAMAGUI_TARGET: "native",
28
30
  TAMAGUI_ENVIRONMENT: "android"
29
31
  }
@@ -1 +1 @@
1
- {"version":3,"file":"platformEnv.native.js","names":[],"sources":["esm/env/platformEnv.native.js"],"sourcesContent":["var platformEnvMap = {\n client: {\n VITE_ENVIRONMENT: \"client\",\n VITE_NATIVE: \"\",\n ONE_PLATFORM: \"web\",\n TAMAGUI_TARGET: \"web\",\n TAMAGUI_ENVIRONMENT: \"client\"\n },\n ssr: {\n VITE_ENVIRONMENT: \"ssr\",\n VITE_NATIVE: \"\",\n ONE_PLATFORM: \"web\",\n TAMAGUI_TARGET: \"web\",\n TAMAGUI_ENVIRONMENT: \"ssr\"\n },\n ios: {\n VITE_ENVIRONMENT: \"ios\",\n VITE_NATIVE: \"1\",\n ONE_PLATFORM: \"ios\",\n TAMAGUI_TARGET: \"native\",\n TAMAGUI_ENVIRONMENT: \"ios\"\n },\n android: {\n VITE_ENVIRONMENT: \"android\",\n VITE_NATIVE: \"1\",\n ONE_PLATFORM: \"android\",\n TAMAGUI_TARGET: \"native\",\n TAMAGUI_ENVIRONMENT: \"android\"\n }\n};\nfunction getPlatformEnv(environment) {\n return platformEnvMap[environment];\n}\nfunction metroPlatformToViteEnvironment(platform) {\n if (platform === \"ios\") return \"ios\";\n if (platform === \"android\") return \"android\";\n return \"client\";\n}\nfunction getPlatformEnvDefine(environment) {\n var env = getPlatformEnv(environment);\n var define = {};\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = Object.entries(env)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var [key, value] = _step.value;\n define[`process.env.${key}`] = JSON.stringify(value);\n define[`import.meta.env.${key}`] = JSON.stringify(value);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n return define;\n}\nexport {\n getPlatformEnv,\n getPlatformEnvDefine,\n metroPlatformToViteEnvironment\n};\n//# sourceMappingURL=platformEnv.js.map\n"],"mappings":";AAAA,IAAI,iBAAiB;CACnB,QAAQ;EACN,kBAAkB;EAClB,aAAa;EACb,cAAc;EACd,gBAAgB;EAChB,qBAAqB;CACvB;CACA,KAAK;EACH,kBAAkB;EAClB,aAAa;EACb,cAAc;EACd,gBAAgB;EAChB,qBAAqB;CACvB;CACA,KAAK;EACH,kBAAkB;EAClB,aAAa;EACb,cAAc;EACd,gBAAgB;EAChB,qBAAqB;CACvB;CACA,SAAS;EACP,kBAAkB;EAClB,aAAa;EACb,cAAc;EACd,gBAAgB;EAChB,qBAAqB;CACvB;AACF;AACA,SAAS,eAAe,aAAa;CACnC,OAAO,eAAe;AACxB;AACA,SAAS,+BAA+B,UAAU;CAChD,IAAI,aAAa,OAAO,OAAO;CAC/B,IAAI,aAAa,WAAW,OAAO;CACnC,OAAO;AACT;AACA,SAAS,qBAAqB,aAAa;CACzC,IAAI,MAAM,eAAe,WAAW;CACpC,IAAI,SAAS,CAAC;CACd,IAAI,4BAA4B,MAAM,oBAAoB,OAAO,iBAAiB,KAAK;CACvF,IAAI;EACF,KAAK,IAAI,YAAY,OAAO,QAAQ,GAAG,CAAC,CAAC,OAAO,SAAS,CAAC,GAAG,OAAO,EAAE,6BAA6B,QAAQ,UAAU,KAAK,EAAC,CAAE,OAAO,4BAA4B,MAAM;GACpK,IAAI,CAAC,KAAK,SAAS,MAAM;GACzB,OAAO,eAAe,SAAS,KAAK,UAAU,KAAK;GACnD,OAAO,mBAAmB,SAAS,KAAK,UAAU,KAAK;EACzD;CACF,SAAS,KAAK;EACZ,oBAAoB;EACpB,iBAAiB;CACnB,UAAU;EACR,IAAI;GACF,IAAI,CAAC,6BAA6B,UAAU,UAAU,MAAM;IAC1D,UAAU,OAAO;GACnB;EACF,UAAU;GACR,IAAI,mBAAmB;IACrB,MAAM;GACR;EACF;CACF;CACA,OAAO;AACT"}
1
+ {"version":3,"file":"platformEnv.native.js","names":[],"sources":["esm/env/platformEnv.native.js"],"sourcesContent":["var platformEnvMap = {\n client: {\n VITE_ENVIRONMENT: \"client\",\n VITE_NATIVE: \"\",\n ONE_PLATFORM: \"web\",\n TAMAGUI_TARGET: \"web\",\n TAMAGUI_ENVIRONMENT: \"client\"\n },\n ssr: {\n VITE_ENVIRONMENT: \"ssr\",\n VITE_NATIVE: \"\",\n ONE_PLATFORM: \"web\",\n TAMAGUI_TARGET: \"web\",\n TAMAGUI_ENVIRONMENT: \"ssr\"\n },\n ios: {\n VITE_ENVIRONMENT: \"ios\",\n VITE_NATIVE: \"1\",\n ONE_PLATFORM: \"ios\",\n EXPO_OS: \"ios\",\n TAMAGUI_TARGET: \"native\",\n TAMAGUI_ENVIRONMENT: \"ios\"\n },\n android: {\n VITE_ENVIRONMENT: \"android\",\n VITE_NATIVE: \"1\",\n ONE_PLATFORM: \"android\",\n EXPO_OS: \"android\",\n TAMAGUI_TARGET: \"native\",\n TAMAGUI_ENVIRONMENT: \"android\"\n }\n};\nfunction getPlatformEnv(environment) {\n return platformEnvMap[environment];\n}\nfunction metroPlatformToViteEnvironment(platform) {\n if (platform === \"ios\") return \"ios\";\n if (platform === \"android\") return \"android\";\n return \"client\";\n}\nfunction getPlatformEnvDefine(environment) {\n var env = getPlatformEnv(environment);\n var define = {};\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = Object.entries(env)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var [key, value] = _step.value;\n define[`process.env.${key}`] = JSON.stringify(value);\n define[`import.meta.env.${key}`] = JSON.stringify(value);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n return define;\n}\nexport {\n getPlatformEnv,\n getPlatformEnvDefine,\n metroPlatformToViteEnvironment\n};\n//# sourceMappingURL=platformEnv.js.map\n"],"mappings":";AAAA,IAAI,iBAAiB;CACnB,QAAQ;EACN,kBAAkB;EAClB,aAAa;EACb,cAAc;EACd,gBAAgB;EAChB,qBAAqB;CACvB;CACA,KAAK;EACH,kBAAkB;EAClB,aAAa;EACb,cAAc;EACd,gBAAgB;EAChB,qBAAqB;CACvB;CACA,KAAK;EACH,kBAAkB;EAClB,aAAa;EACb,cAAc;EACd,SAAS;EACT,gBAAgB;EAChB,qBAAqB;CACvB;CACA,SAAS;EACP,kBAAkB;EAClB,aAAa;EACb,cAAc;EACd,SAAS;EACT,gBAAgB;EAChB,qBAAqB;CACvB;AACF;AACA,SAAS,eAAe,aAAa;CACnC,OAAO,eAAe;AACxB;AACA,SAAS,+BAA+B,UAAU;CAChD,IAAI,aAAa,OAAO,OAAO;CAC/B,IAAI,aAAa,WAAW,OAAO;CACnC,OAAO;AACT;AACA,SAAS,qBAAqB,aAAa;CACzC,IAAI,MAAM,eAAe,WAAW;CACpC,IAAI,SAAS,CAAC;CACd,IAAI,4BAA4B,MAAM,oBAAoB,OAAO,iBAAiB,KAAK;CACvF,IAAI;EACF,KAAK,IAAI,YAAY,OAAO,QAAQ,GAAG,CAAC,CAAC,OAAO,SAAS,CAAC,GAAG,OAAO,EAAE,6BAA6B,QAAQ,UAAU,KAAK,EAAC,CAAE,OAAO,4BAA4B,MAAM;GACpK,IAAI,CAAC,KAAK,SAAS,MAAM;GACzB,OAAO,eAAe,SAAS,KAAK,UAAU,KAAK;GACnD,OAAO,mBAAmB,SAAS,KAAK,UAAU,KAAK;EACzD;CACF,SAAS,KAAK;EACZ,oBAAoB;EACpB,iBAAiB;CACnB,UAAU;EACR,IAAI;GACF,IAAI,CAAC,6BAA6B,UAAU,UAAU,MAAM;IAC1D,UAAU,OAAO;GACnB;EACF,UAAU;GACR,IAAI,mBAAmB;IACrB,MAAM;GACR;EACF;CACF;CACA,OAAO;AACT"}
@@ -1,3 +1,5 @@
1
+ import { withExpoPublicEnvAliases } from "@vxrn/utils/publicEnv";
2
+
1
3
  function getMetroBabelConfigFromViteConfig(config) {
2
4
  const importMetaEnv = {
3
5
  MODE: config.mode,
@@ -6,36 +8,30 @@ function getMetroBabelConfigFromViteConfig(config) {
6
8
  DEV: config.mode === "development",
7
9
  SSR: false
8
10
  };
9
- const envPrefix = config.envPrefix || ["VITE_", "ONE_PUBLIC_"];
11
+ const envPrefix = config.envPrefix || [
12
+ "VITE_",
13
+ "ONE_PUBLIC_",
14
+ "EXPO_PUBLIC_"
15
+ ];
10
16
  const prefixes = Array.isArray(envPrefix) ? envPrefix : [envPrefix];
11
- for (const prefix of prefixes) {
12
- if (prefix.startsWith("EXPO_")) {
13
- throw new Error(`[vxrn/metro] env prefix "${prefix}" is removed. rename it to ONE_PUBLIC_*`);
14
- }
15
- }
16
17
  for (const key of Object.keys(config.env)) {
17
- if (key.startsWith("EXPO_PUBLIC_")) {
18
- throw new Error(`[vxrn/metro] ${key} uses the removed expo prefix. rename it to ONE_PUBLIC_*`);
19
- }
20
18
  if (prefixes.some((p) => key.startsWith(p))) {
21
- importMetaEnv[key] = process.env[key];
19
+ importMetaEnv[key] = process.env[key] ?? config.env[key];
22
20
  }
23
21
  }
24
22
  const definePrefixes = Array.from(/* @__PURE__ */ new Set([
25
23
  ...prefixes,
26
24
  "VITE_",
27
25
  "ONE_PUBLIC_",
26
+ "EXPO_PUBLIC_",
28
27
  "ONE_"
29
28
  ]));
30
29
  for (const defineKey of Object.keys(config.define || {})) {
31
30
  const m = defineKey.match(/^process\.env\.([A-Z][A-Z0-9_]*)$/);
32
31
  if (!m) continue;
33
32
  const key = m[1];
34
- if (key.startsWith("EXPO_PUBLIC_") || key === "EXPO_OS") {
35
- throw new Error(`[vxrn/metro] ${key} uses the removed expo contract. rename it to ONE_PUBLIC_* or ONE_PLATFORM`);
36
- }
37
33
  if (key in importMetaEnv) continue;
38
- if (!definePrefixes.some((p) => key.startsWith(p))) continue;
34
+ if (key !== "EXPO_OS" && !definePrefixes.some((p) => key.startsWith(p))) continue;
39
35
  const raw = config.define[defineKey];
40
36
  try {
41
37
  importMetaEnv[key] = typeof raw === "string" ? JSON.parse(raw) : raw;
@@ -43,7 +39,7 @@ function getMetroBabelConfigFromViteConfig(config) {
43
39
  importMetaEnv[key] = raw;
44
40
  }
45
41
  }
46
- return { plugins: [["@vxrn/vite-plugin-metro/babel-plugins/import-meta-env-plugin", { env: importMetaEnv }]] };
42
+ return { plugins: [["@vxrn/vite-plugin-metro/babel-plugins/import-meta-env-plugin", { env: withExpoPublicEnvAliases(importMetaEnv) }]] };
47
43
  }
48
44
 
49
45
  export { getMetroBabelConfigFromViteConfig };
@@ -1 +1 @@
1
- {"version":3,"file":"getMetroBabelConfigFromViteConfig.js","names":[],"sources":["esm/metro-config/getMetroBabelConfigFromViteConfig.js"],"sourcesContent":["function getMetroBabelConfigFromViteConfig(config) {\n const importMetaEnv = {\n MODE: config.mode,\n BASE_URL: config.base,\n PROD: config.mode === \"production\",\n DEV: config.mode === \"development\",\n SSR: false\n };\n const envPrefix = config.envPrefix || [\"VITE_\", \"ONE_PUBLIC_\"];\n const prefixes = Array.isArray(envPrefix) ? envPrefix : [envPrefix];\n for (const prefix of prefixes) {\n if (prefix.startsWith(\"EXPO_\")) {\n throw new Error(\n `[vxrn/metro] env prefix \"${prefix}\" is removed. rename it to ONE_PUBLIC_*`\n );\n }\n }\n for (const key of Object.keys(config.env)) {\n if (key.startsWith(\"EXPO_PUBLIC_\")) {\n throw new Error(\n `[vxrn/metro] ${key} uses the removed expo prefix. rename it to ONE_PUBLIC_*`\n );\n }\n if (prefixes.some((p) => key.startsWith(p))) {\n importMetaEnv[key] = process.env[key];\n }\n }\n const definePrefixes = Array.from(\n /* @__PURE__ */ new Set([...prefixes, \"VITE_\", \"ONE_PUBLIC_\", \"ONE_\"])\n );\n for (const defineKey of Object.keys(config.define || {})) {\n const m = defineKey.match(/^process\\.env\\.([A-Z][A-Z0-9_]*)$/);\n if (!m) continue;\n const key = m[1];\n if (key.startsWith(\"EXPO_PUBLIC_\") || key === \"EXPO_OS\") {\n throw new Error(\n `[vxrn/metro] ${key} uses the removed expo contract. rename it to ONE_PUBLIC_* or ONE_PLATFORM`\n );\n }\n if (key in importMetaEnv) continue;\n if (!definePrefixes.some((p) => key.startsWith(p))) continue;\n const raw = config.define[defineKey];\n try {\n importMetaEnv[key] = typeof raw === \"string\" ? JSON.parse(raw) : raw;\n } catch {\n importMetaEnv[key] = raw;\n }\n }\n return {\n plugins: [\n [\n \"@vxrn/vite-plugin-metro/babel-plugins/import-meta-env-plugin\",\n { env: importMetaEnv }\n ]\n ]\n };\n}\nexport {\n getMetroBabelConfigFromViteConfig\n};\n//# sourceMappingURL=getMetroBabelConfigFromViteConfig.js.map\n"],"mappings":";AAAA,SAAS,kCAAkC,QAAQ;CACjD,MAAM,gBAAgB;EACpB,MAAM,OAAO;EACb,UAAU,OAAO;EACjB,MAAM,OAAO,SAAS;EACtB,KAAK,OAAO,SAAS;EACrB,KAAK;CACP;CACA,MAAM,YAAY,OAAO,aAAa,CAAC,SAAS,aAAa;CAC7D,MAAM,WAAW,MAAM,QAAQ,SAAS,IAAI,YAAY,CAAC,SAAS;CAClE,KAAK,MAAM,UAAU,UAAU;EAC7B,IAAI,OAAO,WAAW,OAAO,GAAG;GAC9B,MAAM,IAAI,MACR,4BAA4B,OAAO,wCACrC;EACF;CACF;CACA,KAAK,MAAM,OAAO,OAAO,KAAK,OAAO,GAAG,GAAG;EACzC,IAAI,IAAI,WAAW,cAAc,GAAG;GAClC,MAAM,IAAI,MACR,gBAAgB,IAAI,yDACtB;EACF;EACA,IAAI,SAAS,MAAM,MAAM,IAAI,WAAW,CAAC,CAAC,GAAG;GAC3C,cAAc,OAAO,QAAQ,IAAI;EACnC;CACF;CACA,MAAM,iBAAiB,MAAM,qBACX,IAAI,IAAI;EAAC,GAAG;EAAU;EAAS;EAAe;CAAM,CAAC,CACvE;CACA,KAAK,MAAM,aAAa,OAAO,KAAK,OAAO,UAAU,CAAC,CAAC,GAAG;EACxD,MAAM,IAAI,UAAU,MAAM,mCAAmC;EAC7D,IAAI,CAAC,GAAG;EACR,MAAM,MAAM,EAAE;EACd,IAAI,IAAI,WAAW,cAAc,KAAK,QAAQ,WAAW;GACvD,MAAM,IAAI,MACR,gBAAgB,IAAI,2EACtB;EACF;EACA,IAAI,OAAO,eAAe;EAC1B,IAAI,CAAC,eAAe,MAAM,MAAM,IAAI,WAAW,CAAC,CAAC,GAAG;EACpD,MAAM,MAAM,OAAO,OAAO;EAC1B,IAAI;GACF,cAAc,OAAO,OAAO,QAAQ,WAAW,KAAK,MAAM,GAAG,IAAI;EACnE,QAAQ;GACN,cAAc,OAAO;EACvB;CACF;CACA,OAAO,EACL,SAAS,CACP,CACE,gEACA,EAAE,KAAK,cAAc,CACvB,CACF,EACF;AACF"}
1
+ {"version":3,"file":"getMetroBabelConfigFromViteConfig.js","names":[],"sources":["esm/metro-config/getMetroBabelConfigFromViteConfig.js"],"sourcesContent":["import { withExpoPublicEnvAliases } from \"@vxrn/utils/publicEnv\";\nfunction getMetroBabelConfigFromViteConfig(config) {\n const importMetaEnv = {\n MODE: config.mode,\n BASE_URL: config.base,\n PROD: config.mode === \"production\",\n DEV: config.mode === \"development\",\n SSR: false\n };\n const envPrefix = config.envPrefix || [\"VITE_\", \"ONE_PUBLIC_\", \"EXPO_PUBLIC_\"];\n const prefixes = Array.isArray(envPrefix) ? envPrefix : [envPrefix];\n for (const key of Object.keys(config.env)) {\n if (prefixes.some((p) => key.startsWith(p))) {\n importMetaEnv[key] = process.env[key] ?? config.env[key];\n }\n }\n const definePrefixes = Array.from(\n /* @__PURE__ */ new Set([...prefixes, \"VITE_\", \"ONE_PUBLIC_\", \"EXPO_PUBLIC_\", \"ONE_\"])\n );\n for (const defineKey of Object.keys(config.define || {})) {\n const m = defineKey.match(/^process\\.env\\.([A-Z][A-Z0-9_]*)$/);\n if (!m) continue;\n const key = m[1];\n if (key in importMetaEnv) continue;\n if (key !== \"EXPO_OS\" && !definePrefixes.some((p) => key.startsWith(p))) continue;\n const raw = config.define[defineKey];\n try {\n importMetaEnv[key] = typeof raw === \"string\" ? JSON.parse(raw) : raw;\n } catch {\n importMetaEnv[key] = raw;\n }\n }\n return {\n plugins: [\n [\n \"@vxrn/vite-plugin-metro/babel-plugins/import-meta-env-plugin\",\n { env: withExpoPublicEnvAliases(importMetaEnv) }\n ]\n ]\n };\n}\nexport {\n getMetroBabelConfigFromViteConfig\n};\n//# sourceMappingURL=getMetroBabelConfigFromViteConfig.js.map\n"],"mappings":";;;AACA,SAAS,kCAAkC,QAAQ;CACjD,MAAM,gBAAgB;EACpB,MAAM,OAAO;EACb,UAAU,OAAO;EACjB,MAAM,OAAO,SAAS;EACtB,KAAK,OAAO,SAAS;EACrB,KAAK;CACP;CACA,MAAM,YAAY,OAAO,aAAa;EAAC;EAAS;EAAe;CAAc;CAC7E,MAAM,WAAW,MAAM,QAAQ,SAAS,IAAI,YAAY,CAAC,SAAS;CAClE,KAAK,MAAM,OAAO,OAAO,KAAK,OAAO,GAAG,GAAG;EACzC,IAAI,SAAS,MAAM,MAAM,IAAI,WAAW,CAAC,CAAC,GAAG;GAC3C,cAAc,OAAO,QAAQ,IAAI,QAAQ,OAAO,IAAI;EACtD;CACF;CACA,MAAM,iBAAiB,MAAM,qBACX,IAAI,IAAI;EAAC,GAAG;EAAU;EAAS;EAAe;EAAgB;CAAM,CAAC,CACvF;CACA,KAAK,MAAM,aAAa,OAAO,KAAK,OAAO,UAAU,CAAC,CAAC,GAAG;EACxD,MAAM,IAAI,UAAU,MAAM,mCAAmC;EAC7D,IAAI,CAAC,GAAG;EACR,MAAM,MAAM,EAAE;EACd,IAAI,OAAO,eAAe;EAC1B,IAAI,QAAQ,aAAa,CAAC,eAAe,MAAM,MAAM,IAAI,WAAW,CAAC,CAAC,GAAG;EACzE,MAAM,MAAM,OAAO,OAAO;EAC1B,IAAI;GACF,cAAc,OAAO,OAAO,QAAQ,WAAW,KAAK,MAAM,GAAG,IAAI;EACnE,QAAQ;GACN,cAAc,OAAO;EACvB;CACF;CACA,OAAO,EACL,SAAS,CACP,CACE,gEACA,EAAE,KAAK,yBAAyB,aAAa,EAAE,CACjD,CACF,EACF;AACF"}
@@ -1,3 +1,5 @@
1
+ import { withExpoPublicEnvAliases } from "@vxrn/utils/publicEnv";
2
+
1
3
  function getMetroBabelConfigFromViteConfig(config) {
2
4
  var importMetaEnv = {
3
5
  MODE: config.mode,
@@ -6,16 +8,24 @@ function getMetroBabelConfigFromViteConfig(config) {
6
8
  DEV: config.mode === "development",
7
9
  SSR: false
8
10
  };
9
- var envPrefix = config.envPrefix || ["VITE_", "ONE_PUBLIC_"];
11
+ var envPrefix = config.envPrefix || [
12
+ "VITE_",
13
+ "ONE_PUBLIC_",
14
+ "EXPO_PUBLIC_"
15
+ ];
10
16
  var prefixes = Array.isArray(envPrefix) ? envPrefix : [envPrefix];
11
17
  var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
12
18
  try {
13
- for (var _iterator = prefixes[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
14
- var prefix = _step.value;
15
- if (prefix.startsWith("EXPO_")) {
16
- throw new Error(`[vxrn/metro] env prefix "${prefix}" is removed. rename it to ONE_PUBLIC_*`);
19
+ var _loop = function() {
20
+ var key = _step.value;
21
+ if (prefixes.some(function(p) {
22
+ return key.startsWith(p);
23
+ })) {
24
+ var _process_env_key;
25
+ importMetaEnv[key] = (_process_env_key = process.env[key]) !== null && _process_env_key !== void 0 ? _process_env_key : config.env[key];
17
26
  }
18
- }
27
+ };
28
+ for (var _iterator = Object.keys(config.env)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) _loop();
19
29
  } catch (err) {
20
30
  _didIteratorError = true;
21
31
  _iteratorError = err;
@@ -30,52 +40,22 @@ function getMetroBabelConfigFromViteConfig(config) {
30
40
  }
31
41
  }
32
42
  }
33
- var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = void 0;
34
- try {
35
- var _loop = function() {
36
- var key = _step1.value;
37
- if (key.startsWith("EXPO_PUBLIC_")) {
38
- throw new Error(`[vxrn/metro] ${key} uses the removed expo prefix. rename it to ONE_PUBLIC_*`);
39
- }
40
- if (prefixes.some(function(p) {
41
- return key.startsWith(p);
42
- })) {
43
- importMetaEnv[key] = process.env[key];
44
- }
45
- };
46
- for (var _iterator1 = Object.keys(config.env)[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) _loop();
47
- } catch (err) {
48
- _didIteratorError1 = true;
49
- _iteratorError1 = err;
50
- } finally {
51
- try {
52
- if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
53
- _iterator1.return();
54
- }
55
- } finally {
56
- if (_didIteratorError1) {
57
- throw _iteratorError1;
58
- }
59
- }
60
- }
61
43
  var definePrefixes = Array.from(/* @__PURE__ */ new Set([
62
44
  ...prefixes,
63
45
  "VITE_",
64
46
  "ONE_PUBLIC_",
47
+ "EXPO_PUBLIC_",
65
48
  "ONE_"
66
49
  ]));
67
- var _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = void 0;
50
+ var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = void 0;
68
51
  try {
69
52
  var _loop1 = function() {
70
- var defineKey = _step2.value;
53
+ var defineKey = _step1.value;
71
54
  var m = defineKey.match(/^process\.env\.([A-Z][A-Z0-9_]*)$/);
72
55
  if (!m) return "continue";
73
56
  var key = m[1];
74
- if (key.startsWith("EXPO_PUBLIC_") || key === "EXPO_OS") {
75
- throw new Error(`[vxrn/metro] ${key} uses the removed expo contract. rename it to ONE_PUBLIC_* or ONE_PLATFORM`);
76
- }
77
57
  if (key in importMetaEnv) return "continue";
78
- if (!definePrefixes.some(function(p) {
58
+ if (key !== "EXPO_OS" && !definePrefixes.some(function(p) {
79
59
  return key.startsWith(p);
80
60
  })) return "continue";
81
61
  var raw = config.define[defineKey];
@@ -85,22 +65,22 @@ function getMetroBabelConfigFromViteConfig(config) {
85
65
  importMetaEnv[key] = raw;
86
66
  }
87
67
  };
88
- for (var _iterator2 = Object.keys(config.define || {})[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) _loop1();
68
+ for (var _iterator1 = Object.keys(config.define || {})[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) _loop1();
89
69
  } catch (err) {
90
- _didIteratorError2 = true;
91
- _iteratorError2 = err;
70
+ _didIteratorError1 = true;
71
+ _iteratorError1 = err;
92
72
  } finally {
93
73
  try {
94
- if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
95
- _iterator2.return();
74
+ if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
75
+ _iterator1.return();
96
76
  }
97
77
  } finally {
98
- if (_didIteratorError2) {
99
- throw _iteratorError2;
78
+ if (_didIteratorError1) {
79
+ throw _iteratorError1;
100
80
  }
101
81
  }
102
82
  }
103
- return { plugins: [["@vxrn/vite-plugin-metro/babel-plugins/import-meta-env-plugin", { env: importMetaEnv }]] };
83
+ return { plugins: [["@vxrn/vite-plugin-metro/babel-plugins/import-meta-env-plugin", { env: withExpoPublicEnvAliases(importMetaEnv) }]] };
104
84
  }
105
85
 
106
86
  export { getMetroBabelConfigFromViteConfig };
@@ -1 +1 @@
1
- {"version":3,"file":"getMetroBabelConfigFromViteConfig.native.js","names":[],"sources":["esm/metro-config/getMetroBabelConfigFromViteConfig.native.js"],"sourcesContent":["function getMetroBabelConfigFromViteConfig(config) {\n var importMetaEnv = {\n MODE: config.mode,\n BASE_URL: config.base,\n PROD: config.mode === \"production\",\n DEV: config.mode === \"development\",\n SSR: false\n };\n var envPrefix = config.envPrefix || [\n \"VITE_\",\n \"ONE_PUBLIC_\"\n ];\n var prefixes = Array.isArray(envPrefix) ? envPrefix : [\n envPrefix\n ];\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = prefixes[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var prefix = _step.value;\n if (prefix.startsWith(\"EXPO_\")) {\n throw new Error(`[vxrn/metro] env prefix \"${prefix}\" is removed. rename it to ONE_PUBLIC_*`);\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = void 0;\n try {\n var _loop = function() {\n var key = _step1.value;\n if (key.startsWith(\"EXPO_PUBLIC_\")) {\n throw new Error(`[vxrn/metro] ${key} uses the removed expo prefix. rename it to ONE_PUBLIC_*`);\n }\n if (prefixes.some(function(p) {\n return key.startsWith(p);\n })) {\n importMetaEnv[key] = process.env[key];\n }\n };\n for (var _iterator1 = Object.keys(config.env)[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) _loop();\n } catch (err) {\n _didIteratorError1 = true;\n _iteratorError1 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion1 && _iterator1.return != null) {\n _iterator1.return();\n }\n } finally {\n if (_didIteratorError1) {\n throw _iteratorError1;\n }\n }\n }\n var definePrefixes = Array.from(/* @__PURE__ */ new Set([\n ...prefixes,\n \"VITE_\",\n \"ONE_PUBLIC_\",\n \"ONE_\"\n ]));\n var _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = void 0;\n try {\n var _loop1 = function() {\n var defineKey = _step2.value;\n var m = defineKey.match(/^process\\.env\\.([A-Z][A-Z0-9_]*)$/);\n if (!m) return \"continue\";\n var key = m[1];\n if (key.startsWith(\"EXPO_PUBLIC_\") || key === \"EXPO_OS\") {\n throw new Error(`[vxrn/metro] ${key} uses the removed expo contract. rename it to ONE_PUBLIC_* or ONE_PLATFORM`);\n }\n if (key in importMetaEnv) return \"continue\";\n if (!definePrefixes.some(function(p) {\n return key.startsWith(p);\n })) return \"continue\";\n var raw = config.define[defineKey];\n try {\n importMetaEnv[key] = typeof raw === \"string\" ? JSON.parse(raw) : raw;\n } catch (unused) {\n importMetaEnv[key] = raw;\n }\n };\n for (var _iterator2 = Object.keys(config.define || {})[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) _loop1();\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n return {\n plugins: [\n [\n \"@vxrn/vite-plugin-metro/babel-plugins/import-meta-env-plugin\",\n {\n env: importMetaEnv\n }\n ]\n ]\n };\n}\nexport {\n getMetroBabelConfigFromViteConfig\n};\n//# sourceMappingURL=getMetroBabelConfigFromViteConfig.js.map\n"],"mappings":"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"}
1
+ {"version":3,"file":"getMetroBabelConfigFromViteConfig.native.js","names":[],"sources":["esm/metro-config/getMetroBabelConfigFromViteConfig.native.js"],"sourcesContent":["import { withExpoPublicEnvAliases } from \"@vxrn/utils/publicEnv\";\nfunction getMetroBabelConfigFromViteConfig(config) {\n var importMetaEnv = {\n MODE: config.mode,\n BASE_URL: config.base,\n PROD: config.mode === \"production\",\n DEV: config.mode === \"development\",\n SSR: false\n };\n var envPrefix = config.envPrefix || [\n \"VITE_\",\n \"ONE_PUBLIC_\",\n \"EXPO_PUBLIC_\"\n ];\n var prefixes = Array.isArray(envPrefix) ? envPrefix : [\n envPrefix\n ];\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n var _loop = function() {\n var key = _step.value;\n if (prefixes.some(function(p) {\n return key.startsWith(p);\n })) {\n var _process_env_key;\n importMetaEnv[key] = (_process_env_key = process.env[key]) !== null && _process_env_key !== void 0 ? _process_env_key : config.env[key];\n }\n };\n for (var _iterator = Object.keys(config.env)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) _loop();\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n var definePrefixes = Array.from(/* @__PURE__ */ new Set([\n ...prefixes,\n \"VITE_\",\n \"ONE_PUBLIC_\",\n \"EXPO_PUBLIC_\",\n \"ONE_\"\n ]));\n var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = void 0;\n try {\n var _loop1 = function() {\n var defineKey = _step1.value;\n var m = defineKey.match(/^process\\.env\\.([A-Z][A-Z0-9_]*)$/);\n if (!m) return \"continue\";\n var key = m[1];\n if (key in importMetaEnv) return \"continue\";\n if (key !== \"EXPO_OS\" && !definePrefixes.some(function(p) {\n return key.startsWith(p);\n })) return \"continue\";\n var raw = config.define[defineKey];\n try {\n importMetaEnv[key] = typeof raw === \"string\" ? JSON.parse(raw) : raw;\n } catch (unused) {\n importMetaEnv[key] = raw;\n }\n };\n for (var _iterator1 = Object.keys(config.define || {})[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) _loop1();\n } catch (err) {\n _didIteratorError1 = true;\n _iteratorError1 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion1 && _iterator1.return != null) {\n _iterator1.return();\n }\n } finally {\n if (_didIteratorError1) {\n throw _iteratorError1;\n }\n }\n }\n return {\n plugins: [\n [\n \"@vxrn/vite-plugin-metro/babel-plugins/import-meta-env-plugin\",\n {\n env: withExpoPublicEnvAliases(importMetaEnv)\n }\n ]\n ]\n };\n}\nexport {\n getMetroBabelConfigFromViteConfig\n};\n//# sourceMappingURL=getMetroBabelConfigFromViteConfig.js.map\n"],"mappings":";;;AACA,SAAS,kCAAkC,QAAQ;CACjD,IAAI,gBAAgB;EAClB,MAAM,OAAO;EACb,UAAU,OAAO;EACjB,MAAM,OAAO,SAAS;EACtB,KAAK,OAAO,SAAS;EACrB,KAAK;CACP;CACA,IAAI,YAAY,OAAO,aAAa;EAClC;EACA;EACA;CACF;CACA,IAAI,WAAW,MAAM,QAAQ,SAAS,IAAI,YAAY,CACpD,SACF;CACA,IAAI,4BAA4B,MAAM,oBAAoB,OAAO,iBAAiB,KAAK;CACvF,IAAI;EACF,IAAI,QAAQ,WAAW;GACrB,IAAI,MAAM,MAAM;GAChB,IAAI,SAAS,KAAK,SAAS,GAAG;IAC5B,OAAO,IAAI,WAAW,CAAC;GACzB,CAAC,GAAG;IACF,IAAI;IACJ,cAAc,QAAQ,mBAAmB,QAAQ,IAAI,UAAU,QAAQ,qBAAqB,KAAK,IAAI,mBAAmB,OAAO,IAAI;GACrI;EACF;EACA,KAAK,IAAI,YAAY,OAAO,KAAK,OAAO,GAAG,CAAC,CAAC,OAAO,SAAS,CAAC,GAAG,OAAO,EAAE,6BAA6B,QAAQ,UAAU,KAAK,EAAC,CAAE,OAAO,4BAA4B,MAAM,MAAM;CAClL,SAAS,KAAK;EACZ,oBAAoB;EACpB,iBAAiB;CACnB,UAAU;EACR,IAAI;GACF,IAAI,CAAC,6BAA6B,UAAU,UAAU,MAAM;IAC1D,UAAU,OAAO;GACnB;EACF,UAAU;GACR,IAAI,mBAAmB;IACrB,MAAM;GACR;EACF;CACF;CACA,IAAI,iBAAiB,MAAM,qBAAqB,IAAI,IAAI;EACtD,GAAG;EACH;EACA;EACA;EACA;CACF,CAAC,CAAC;CACF,IAAI,6BAA6B,MAAM,qBAAqB,OAAO,kBAAkB,KAAK;CAC1F,IAAI;EACF,IAAI,SAAS,WAAW;GACtB,IAAI,YAAY,OAAO;GACvB,IAAI,IAAI,UAAU,MAAM,mCAAmC;GAC3D,IAAI,CAAC,GAAG,OAAO;GACf,IAAI,MAAM,EAAE;GACZ,IAAI,OAAO,eAAe,OAAO;GACjC,IAAI,QAAQ,aAAa,CAAC,eAAe,KAAK,SAAS,GAAG;IACxD,OAAO,IAAI,WAAW,CAAC;GACzB,CAAC,GAAG,OAAO;GACX,IAAI,MAAM,OAAO,OAAO;GACxB,IAAI;IACF,cAAc,OAAO,OAAO,QAAQ,WAAW,KAAK,MAAM,GAAG,IAAI;GACnE,SAAS,QAAQ;IACf,cAAc,OAAO;GACvB;EACF;EACA,KAAK,IAAI,aAAa,OAAO,KAAK,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,SAAS,CAAC,GAAG,QAAQ,EAAE,8BAA8B,SAAS,WAAW,KAAK,EAAC,CAAE,OAAO,6BAA6B,MAAM,OAAO;CAClM,SAAS,KAAK;EACZ,qBAAqB;EACrB,kBAAkB;CACpB,UAAU;EACR,IAAI;GACF,IAAI,CAAC,8BAA8B,WAAW,UAAU,MAAM;IAC5D,WAAW,OAAO;GACpB;EACF,UAAU;GACR,IAAI,oBAAoB;IACtB,MAAM;GACR;EACF;CACF;CACA,OAAO,EACL,SAAS,CACP,CACE,gEACA,EACE,KAAK,yBAAyB,aAAa,EAC7C,CACF,CACF,EACF;AACF"}
@@ -28,6 +28,29 @@ function rewriteMainModuleBundleUrl(url, resolveMainModuleName) {
28
28
  }
29
29
  return url.replace(rootIndexBundleRequestPattern, `$1/${resolvedMainModulePath}.bundle`);
30
30
  }
31
+ function isBareSpecifier(name) {
32
+ return name !== "" && !name.startsWith(".") && !name.startsWith("/");
33
+ }
34
+ function bareMainModuleForRequest(moduleName, mainModuleName) {
35
+ if (!mainModuleName || !isBareSpecifier(mainModuleName)) return void 0;
36
+ if (moduleName === `./${mainModuleName}`) return mainModuleName;
37
+ return void 0;
38
+ }
39
+ function enforceBareMainModuleEntry(config, mainModuleName) {
40
+ if (!mainModuleName || !isBareSpecifier(mainModuleName)) return config;
41
+ const innerResolveRequest = config?.resolver?.resolveRequest;
42
+ return {
43
+ ...config,
44
+ resolver: {
45
+ ...config?.resolver,
46
+ resolveRequest: (context, moduleName, platform) => {
47
+ const bareMain = bareMainModuleForRequest(moduleName, mainModuleName);
48
+ const resolveRequest = innerResolveRequest || context.resolveRequest;
49
+ return resolveRequest(context, bareMain ?? moduleName, platform);
50
+ }
51
+ }
52
+ };
53
+ }
31
54
  async function isWatchmanResponsive(projectRoot) {
32
55
  let probe = watchmanResponsivePromises.get(projectRoot);
33
56
  if (probe) {
@@ -151,7 +174,7 @@ async function buildMetroConfigInputFromViteConfig(config, metroPluginOptions) {
151
174
  ...typeof defaultConfigOverrides === "function" ? defaultConfigOverrides(defaultConfig) : defaultConfigOverrides
152
175
  };
153
176
  return {
154
- defaultConfig: merged,
177
+ defaultConfig: enforceBareMainModuleEntry(merged, mainModuleName),
155
178
  projectRoot,
156
179
  extraConfig
157
180
  };
@@ -245,7 +268,7 @@ async function getMetroConfigFromViteConfig(config, metroPluginOptions) {
245
268
  ...typeof defaultConfigOverrides === "function" ? defaultConfigOverrides(defaultConfig) : defaultConfigOverrides
246
269
  });
247
270
  return {
248
- ...metroConfig,
271
+ ...enforceBareMainModuleEntry(metroConfig, mainModuleName),
249
272
  ...extraConfig
250
273
  };
251
274
  }
@@ -1 +1 @@
1
- {"version":3,"file":"getMetroConfigFromViteConfig.js","names":[],"sources":["esm/metro-config/getMetroConfigFromViteConfig.js"],"sourcesContent":["import { spawn } from \"node:child_process\";\nimport { resolve } from \"node:path\";\nimport micromatch from \"micromatch\";\nimport { findUserBabelConfig } from \"@vxrn/compiler\";\nimport { projectImport, projectResolve } from \"../utils/projectImport\";\nimport { getTerminalReporter } from \"../utils/getTerminalReporter\";\nimport { patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName } from \"../utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName\";\nconst WATCHMAN_PROBE_TIMEOUT_MS = 2e3;\nconst watchmanResponsivePromises = /* @__PURE__ */ new Map();\nlet didWarnAboutWatchmanFallback = false;\nconst rootIndexBundleRequestPattern = /^(https?:\\/\\/[^/]+)?\\/index\\.bundle(?=$|[?#])/;\nconst metroWatchExclusions = [\n /[/\\\\]dist[/\\\\](?:static|server)(?:[/\\\\]|$)/,\n /[/\\\\]tests[/\\\\][^/\\\\]+[/\\\\]dist(?:[/\\\\]|$)/,\n /[/\\\\]\\.docker(?:[/\\\\]|$)/,\n /[/\\\\]\\.vite(?:[/\\\\]|$)/,\n /[/\\\\]node_modules[/\\\\]\\.vxrn(?:[/\\\\]|$)/\n];\nfunction getPlatformFromBundleUrl(url) {\n const platform = url.match(/[?&]platform=(ios|android)(?:&|$)/)?.[1];\n return platform === \"android\" ? \"android\" : \"ios\";\n}\nfunction rewriteMainModuleBundleUrl(url, resolveMainModuleName) {\n const resolvedMainModulePath = resolveMainModuleName({\n platform: getPlatformFromBundleUrl(url)\n });\n if (url.includes(\"/.expo/.virtual-metro-entry.bundle?\")) {\n return url.replace(\".expo/.virtual-metro-entry\", resolvedMainModulePath);\n }\n return url.replace(rootIndexBundleRequestPattern, `$1/${resolvedMainModulePath}.bundle`);\n}\nasync function isWatchmanResponsive(projectRoot) {\n let probe = watchmanResponsivePromises.get(projectRoot);\n if (probe) {\n return probe;\n }\n probe = new Promise((resolve2) => {\n let settled = false;\n const finish = (value) => {\n if (settled) return;\n settled = true;\n clearTimeout(timeout);\n resolve2(value);\n };\n const child = spawn(\"watchman\", [\"watch-project\", projectRoot], {\n stdio: \"ignore\"\n });\n const timeout = setTimeout(() => {\n child.kill();\n finish(false);\n }, WATCHMAN_PROBE_TIMEOUT_MS);\n child.once(\"error\", () => {\n finish(false);\n });\n child.once(\"exit\", (code) => {\n finish(code === 0);\n });\n });\n watchmanResponsivePromises.set(projectRoot, probe);\n return probe;\n}\nfunction resolveNativeTransforms(projectRoot, metroPluginOptions) {\n const userBabelConfigPath = projectRoot ? findUserBabelConfig(projectRoot) : null;\n const hasUserBabelConfig = Boolean(userBabelConfigPath);\n const isNativeTransforms = process.env.ONE_METRO_NATIVE_TRANSFORMS === \"0\" ? false : process.env.ONE_METRO_NATIVE_TRANSFORMS === \"1\" ? true : metroPluginOptions.nativeTransforms === false ? false : metroPluginOptions.nativeTransforms === true ? true : hasUserBabelConfig ? false : true;\n if (userBabelConfigPath && isNativeTransforms) {\n console.warn(\n `[vxrn/metro] Ignoring user babel config at ${userBabelConfigPath} because native transforms are explicitly enabled (nativeTransforms: true or ONE_METRO_NATIVE_TRANSFORMS=1). Port its plugins to nativeTransformModules, or set nativeTransforms: false (or ONE_METRO_NATIVE_TRANSFORMS=0) to use the babel transformer.`\n );\n }\n return { isNativeTransforms, userBabelConfigPath };\n}\nasync function buildMetroConfigInputFromViteConfig(config, metroPluginOptions) {\n const extraConfig = {};\n const projectRoot = resolve(metroPluginOptions.argv?.projectRoot ?? config.root);\n const { mainModuleName, defaultConfigOverrides, watchman, excludeModules } = metroPluginOptions;\n const useWatchman = watchman ?? await isWatchmanResponsive(projectRoot);\n if (watchman === void 0 && !useWatchman && !didWarnAboutWatchmanFallback) {\n didWarnAboutWatchmanFallback = true;\n console.warn(\n \"[vxrn/metro] Watchman is unavailable or unresponsive; falling back to Node file watching.\"\n );\n }\n const { getDefaultConfig } = await projectImport(projectRoot, \"@expo/metro-config\");\n const _defaultConfig = getDefaultConfig(projectRoot);\n if (mainModuleName) {\n const origRewriteRequestUrl = _defaultConfig.server.rewriteRequestUrl;\n const resolveMainModuleName = await (async () => {\n const ExpoGoManifestHandlerMiddleware = (await projectImport(\n projectRoot,\n \"@expo/cli/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js\"\n )).default.ExpoGoManifestHandlerMiddleware;\n const manifestHandlerMiddleware = new ExpoGoManifestHandlerMiddleware(\n projectRoot,\n {}\n );\n patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName(\n manifestHandlerMiddleware,\n mainModuleName\n );\n return (p) => {\n return manifestHandlerMiddleware.resolveMainModuleName({\n pkg: { main: mainModuleName },\n platform: p.platform\n });\n };\n })();\n extraConfig.getResolveMainModuleName = resolveMainModuleName;\n _defaultConfig.server.rewriteRequestUrl = (url) => {\n if (url.includes(\"/.expo/.virtual-metro-entry.bundle?\") || rootIndexBundleRequestPattern.test(url)) {\n return rewriteMainModuleBundleUrl(url, resolveMainModuleName);\n }\n return origRewriteRequestUrl(url);\n };\n }\n const existingBlockList = _defaultConfig?.resolver?.blockList;\n const blockList = [\n ...existingBlockList ? Array.isArray(existingBlockList) ? existingBlockList : [existingBlockList] : [],\n ...metroWatchExclusions\n ];\n const { isNativeTransforms } = resolveNativeTransforms(projectRoot, metroPluginOptions);\n let nativeWorkerPath;\n if (isNativeTransforms) {\n nativeWorkerPath = projectResolve(\n projectRoot,\n \"@vxrn/vite-plugin-metro/transformer/metroNativeWorker\"\n );\n }\n const defaultConfig = {\n ..._defaultConfig,\n resolver: {\n ..._defaultConfig?.resolver,\n useWatchman,\n blockList,\n sourceExts: [\"js\", \"jsx\", \"json\", \"ts\", \"tsx\", \"mjs\", \"cjs\"],\n // `one` related packages are using `.mjs` extensions. This fixes `.native` files not being resolved correctly when `.mjs` files are present.\n resolveRequest: (context, moduleName, platform) => {\n const origResolveRequestFn = _defaultConfig?.resolver?.resolveRequest || context.resolveRequest;\n if (excludeModules && excludeModules.length > 0) {\n if (micromatch.isMatch(moduleName, excludeModules)) {\n return origResolveRequestFn(\n context,\n \"@vxrn/vite-plugin-metro/empty\",\n platform\n );\n }\n }\n if (moduleName.startsWith(\"@babel/runtime\")) {\n const contextOverride = {\n ...context,\n unstable_conditionNames: context.unstable_conditionNames.filter(\n (c) => c !== \"import\"\n )\n };\n return origResolveRequestFn(contextOverride, moduleName, platform);\n }\n return origResolveRequestFn(context, moduleName, platform);\n }\n },\n transformer: {\n ..._defaultConfig?.transformer,\n babelTransformerPath: projectResolve(\n projectRoot,\n \"@vxrn/vite-plugin-metro/babel-transformer\"\n )\n },\n // transformerPath is a TOP-LEVEL metro config key, not a transformer option.\n // nesting it under transformer silently leaves metro on its default worker.\n ...nativeWorkerPath ? { transformerPath: nativeWorkerPath } : {},\n reporter: await getTerminalReporter(projectRoot)\n };\n const merged = {\n ...defaultConfig,\n ...typeof defaultConfigOverrides === \"function\" ? defaultConfigOverrides(defaultConfig) : defaultConfigOverrides\n };\n return { defaultConfig: merged, projectRoot, extraConfig };\n}\nasync function getMetroConfigFromViteConfig(config, metroPluginOptions) {\n const extraConfig = {};\n const projectRoot = resolve(metroPluginOptions.argv?.projectRoot ?? config.root);\n const { mainModuleName, argv, defaultConfigOverrides, watchman, excludeModules } = metroPluginOptions;\n const useWatchman = watchman ?? await isWatchmanResponsive(projectRoot);\n if (watchman === void 0 && !useWatchman && !didWarnAboutWatchmanFallback) {\n didWarnAboutWatchmanFallback = true;\n console.warn(\n \"[vxrn/metro] Watchman is unavailable or unresponsive; falling back to Node file watching.\"\n );\n }\n const { loadConfig } = await projectImport(projectRoot, \"metro\");\n const { getDefaultConfig } = await projectImport(projectRoot, \"@expo/metro-config\");\n const _defaultConfig = getDefaultConfig(projectRoot);\n if (mainModuleName) {\n const origRewriteRequestUrl = _defaultConfig.server.rewriteRequestUrl;\n const resolveMainModuleName = await (async () => {\n const ExpoGoManifestHandlerMiddleware = (await projectImport(\n projectRoot,\n \"@expo/cli/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js\"\n )).default.ExpoGoManifestHandlerMiddleware;\n const manifestHandlerMiddleware = new ExpoGoManifestHandlerMiddleware(\n projectRoot,\n {}\n );\n patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName(\n manifestHandlerMiddleware,\n mainModuleName\n );\n return (p) => {\n return manifestHandlerMiddleware.resolveMainModuleName({\n pkg: { main: mainModuleName },\n platform: p.platform\n });\n };\n })();\n extraConfig.getResolveMainModuleName = resolveMainModuleName;\n _defaultConfig.server.rewriteRequestUrl = (url) => {\n if (url.includes(\"/.expo/.virtual-metro-entry.bundle?\") || rootIndexBundleRequestPattern.test(url)) {\n return rewriteMainModuleBundleUrl(url, resolveMainModuleName);\n }\n return origRewriteRequestUrl(url);\n };\n }\n const existingBlockList = _defaultConfig?.resolver?.blockList;\n const blockList = [\n ...existingBlockList ? Array.isArray(existingBlockList) ? existingBlockList : [existingBlockList] : [],\n ...metroWatchExclusions\n ];\n const { isNativeTransforms } = resolveNativeTransforms(projectRoot, metroPluginOptions);\n let nativeWorkerPath;\n if (isNativeTransforms) {\n nativeWorkerPath = projectResolve(\n projectRoot,\n \"@vxrn/vite-plugin-metro/transformer/metroNativeWorker\"\n );\n }\n const defaultConfig = {\n ..._defaultConfig,\n resolver: {\n ..._defaultConfig?.resolver,\n useWatchman,\n blockList,\n sourceExts: [\"js\", \"jsx\", \"json\", \"ts\", \"tsx\", \"mjs\", \"cjs\"],\n // `one` related packages are using `.mjs` extensions. This somehow fixes `.native` files not being resolved correctly when `.mjs` files are present.\n resolveRequest: (context, moduleName, platform) => {\n const origResolveRequestFn = _defaultConfig?.resolver?.resolveRequest || context.resolveRequest;\n if (excludeModules && excludeModules.length > 0) {\n if (micromatch.isMatch(moduleName, excludeModules)) {\n return origResolveRequestFn(\n context,\n \"@vxrn/vite-plugin-metro/empty\",\n platform\n );\n }\n }\n if (moduleName.startsWith(\"@babel/runtime\")) {\n const contextOverride = {\n ...context,\n unstable_conditionNames: context.unstable_conditionNames.filter(\n (c) => c !== \"import\"\n )\n };\n return origResolveRequestFn(contextOverride, moduleName, platform);\n }\n return origResolveRequestFn(context, moduleName, platform);\n }\n },\n transformer: {\n ..._defaultConfig?.transformer,\n babelTransformerPath: projectResolve(\n projectRoot,\n \"@vxrn/vite-plugin-metro/babel-transformer\"\n )\n },\n // transformerPath is a TOP-LEVEL metro config key, not a transformer option.\n // nesting it under transformer silently leaves metro on its default worker.\n ...nativeWorkerPath ? { transformerPath: nativeWorkerPath } : {},\n reporter: await getTerminalReporter(projectRoot)\n };\n const metroConfig = await loadConfig(\n {\n cwd: projectRoot,\n projectRoot,\n \"reset-cache\": !!process.env.METRO_RESET_CACHE,\n ...argv\n },\n {\n ...defaultConfig,\n ...typeof defaultConfigOverrides === \"function\" ? defaultConfigOverrides(defaultConfig) : defaultConfigOverrides\n }\n );\n return {\n ...metroConfig,\n ...extraConfig\n };\n}\nexport {\n buildMetroConfigInputFromViteConfig,\n getMetroConfigFromViteConfig\n};\n//# sourceMappingURL=getMetroConfigFromViteConfig.js.map\n"],"mappings":"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"}
1
+ {"version":3,"file":"getMetroConfigFromViteConfig.js","names":[],"sources":["esm/metro-config/getMetroConfigFromViteConfig.js"],"sourcesContent":["import { spawn } from \"node:child_process\";\nimport { resolve } from \"node:path\";\nimport micromatch from \"micromatch\";\nimport { findUserBabelConfig } from \"@vxrn/compiler\";\nimport { projectImport, projectResolve } from \"../utils/projectImport\";\nimport { getTerminalReporter } from \"../utils/getTerminalReporter\";\nimport { patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName } from \"../utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName\";\nconst WATCHMAN_PROBE_TIMEOUT_MS = 2e3;\nconst watchmanResponsivePromises = /* @__PURE__ */ new Map();\nlet didWarnAboutWatchmanFallback = false;\nconst rootIndexBundleRequestPattern = /^(https?:\\/\\/[^/]+)?\\/index\\.bundle(?=$|[?#])/;\nconst metroWatchExclusions = [\n /[/\\\\]dist[/\\\\](?:static|server)(?:[/\\\\]|$)/,\n /[/\\\\]tests[/\\\\][^/\\\\]+[/\\\\]dist(?:[/\\\\]|$)/,\n /[/\\\\]\\.docker(?:[/\\\\]|$)/,\n /[/\\\\]\\.vite(?:[/\\\\]|$)/,\n /[/\\\\]node_modules[/\\\\]\\.vxrn(?:[/\\\\]|$)/\n];\nfunction getPlatformFromBundleUrl(url) {\n const platform = url.match(/[?&]platform=(ios|android)(?:&|$)/)?.[1];\n return platform === \"android\" ? \"android\" : \"ios\";\n}\nfunction rewriteMainModuleBundleUrl(url, resolveMainModuleName) {\n const resolvedMainModulePath = resolveMainModuleName({\n platform: getPlatformFromBundleUrl(url)\n });\n if (url.includes(\"/.expo/.virtual-metro-entry.bundle?\")) {\n return url.replace(\".expo/.virtual-metro-entry\", resolvedMainModulePath);\n }\n return url.replace(rootIndexBundleRequestPattern, `$1/${resolvedMainModulePath}.bundle`);\n}\nfunction isBareSpecifier(name) {\n return name !== \"\" && !name.startsWith(\".\") && !name.startsWith(\"/\");\n}\nfunction bareMainModuleForRequest(moduleName, mainModuleName) {\n if (!mainModuleName || !isBareSpecifier(mainModuleName)) return void 0;\n if (moduleName === `./${mainModuleName}`) return mainModuleName;\n return void 0;\n}\nfunction enforceBareMainModuleEntry(config, mainModuleName) {\n if (!mainModuleName || !isBareSpecifier(mainModuleName)) return config;\n const innerResolveRequest = config?.resolver?.resolveRequest;\n return {\n ...config,\n resolver: {\n ...config?.resolver,\n resolveRequest: (context, moduleName, platform) => {\n const bareMain = bareMainModuleForRequest(moduleName, mainModuleName);\n const resolveRequest = innerResolveRequest || context.resolveRequest;\n return resolveRequest(context, bareMain ?? moduleName, platform);\n }\n }\n };\n}\nasync function isWatchmanResponsive(projectRoot) {\n let probe = watchmanResponsivePromises.get(projectRoot);\n if (probe) {\n return probe;\n }\n probe = new Promise((resolve2) => {\n let settled = false;\n const finish = (value) => {\n if (settled) return;\n settled = true;\n clearTimeout(timeout);\n resolve2(value);\n };\n const child = spawn(\"watchman\", [\"watch-project\", projectRoot], {\n stdio: \"ignore\"\n });\n const timeout = setTimeout(() => {\n child.kill();\n finish(false);\n }, WATCHMAN_PROBE_TIMEOUT_MS);\n child.once(\"error\", () => {\n finish(false);\n });\n child.once(\"exit\", (code) => {\n finish(code === 0);\n });\n });\n watchmanResponsivePromises.set(projectRoot, probe);\n return probe;\n}\nfunction resolveNativeTransforms(projectRoot, metroPluginOptions) {\n const userBabelConfigPath = projectRoot ? findUserBabelConfig(projectRoot) : null;\n const hasUserBabelConfig = Boolean(userBabelConfigPath);\n const isNativeTransforms = process.env.ONE_METRO_NATIVE_TRANSFORMS === \"0\" ? false : process.env.ONE_METRO_NATIVE_TRANSFORMS === \"1\" ? true : metroPluginOptions.nativeTransforms === false ? false : metroPluginOptions.nativeTransforms === true ? true : hasUserBabelConfig ? false : true;\n if (userBabelConfigPath && isNativeTransforms) {\n console.warn(\n `[vxrn/metro] Ignoring user babel config at ${userBabelConfigPath} because native transforms are explicitly enabled (nativeTransforms: true or ONE_METRO_NATIVE_TRANSFORMS=1). Port its plugins to nativeTransformModules, or set nativeTransforms: false (or ONE_METRO_NATIVE_TRANSFORMS=0) to use the babel transformer.`\n );\n }\n return { isNativeTransforms, userBabelConfigPath };\n}\nasync function buildMetroConfigInputFromViteConfig(config, metroPluginOptions) {\n const extraConfig = {};\n const projectRoot = resolve(metroPluginOptions.argv?.projectRoot ?? config.root);\n const { mainModuleName, defaultConfigOverrides, watchman, excludeModules } = metroPluginOptions;\n const useWatchman = watchman ?? await isWatchmanResponsive(projectRoot);\n if (watchman === void 0 && !useWatchman && !didWarnAboutWatchmanFallback) {\n didWarnAboutWatchmanFallback = true;\n console.warn(\n \"[vxrn/metro] Watchman is unavailable or unresponsive; falling back to Node file watching.\"\n );\n }\n const { getDefaultConfig } = await projectImport(projectRoot, \"@expo/metro-config\");\n const _defaultConfig = getDefaultConfig(projectRoot);\n if (mainModuleName) {\n const origRewriteRequestUrl = _defaultConfig.server.rewriteRequestUrl;\n const resolveMainModuleName = await (async () => {\n const ExpoGoManifestHandlerMiddleware = (await projectImport(\n projectRoot,\n \"@expo/cli/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js\"\n )).default.ExpoGoManifestHandlerMiddleware;\n const manifestHandlerMiddleware = new ExpoGoManifestHandlerMiddleware(\n projectRoot,\n {}\n );\n patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName(\n manifestHandlerMiddleware,\n mainModuleName\n );\n return (p) => {\n return manifestHandlerMiddleware.resolveMainModuleName({\n pkg: { main: mainModuleName },\n platform: p.platform\n });\n };\n })();\n extraConfig.getResolveMainModuleName = resolveMainModuleName;\n _defaultConfig.server.rewriteRequestUrl = (url) => {\n if (url.includes(\"/.expo/.virtual-metro-entry.bundle?\") || rootIndexBundleRequestPattern.test(url)) {\n return rewriteMainModuleBundleUrl(url, resolveMainModuleName);\n }\n return origRewriteRequestUrl(url);\n };\n }\n const existingBlockList = _defaultConfig?.resolver?.blockList;\n const blockList = [\n ...existingBlockList ? Array.isArray(existingBlockList) ? existingBlockList : [existingBlockList] : [],\n ...metroWatchExclusions\n ];\n const { isNativeTransforms } = resolveNativeTransforms(projectRoot, metroPluginOptions);\n let nativeWorkerPath;\n if (isNativeTransforms) {\n nativeWorkerPath = projectResolve(\n projectRoot,\n \"@vxrn/vite-plugin-metro/transformer/metroNativeWorker\"\n );\n }\n const defaultConfig = {\n ..._defaultConfig,\n resolver: {\n ..._defaultConfig?.resolver,\n useWatchman,\n blockList,\n sourceExts: [\"js\", \"jsx\", \"json\", \"ts\", \"tsx\", \"mjs\", \"cjs\"],\n // `one` related packages are using `.mjs` extensions. This fixes `.native` files not being resolved correctly when `.mjs` files are present.\n resolveRequest: (context, moduleName, platform) => {\n const origResolveRequestFn = _defaultConfig?.resolver?.resolveRequest || context.resolveRequest;\n if (excludeModules && excludeModules.length > 0) {\n if (micromatch.isMatch(moduleName, excludeModules)) {\n return origResolveRequestFn(\n context,\n \"@vxrn/vite-plugin-metro/empty\",\n platform\n );\n }\n }\n if (moduleName.startsWith(\"@babel/runtime\")) {\n const contextOverride = {\n ...context,\n unstable_conditionNames: context.unstable_conditionNames.filter(\n (c) => c !== \"import\"\n )\n };\n return origResolveRequestFn(contextOverride, moduleName, platform);\n }\n return origResolveRequestFn(context, moduleName, platform);\n }\n },\n transformer: {\n ..._defaultConfig?.transformer,\n babelTransformerPath: projectResolve(\n projectRoot,\n \"@vxrn/vite-plugin-metro/babel-transformer\"\n )\n },\n // transformerPath is a TOP-LEVEL metro config key, not a transformer option.\n // nesting it under transformer silently leaves metro on its default worker.\n ...nativeWorkerPath ? { transformerPath: nativeWorkerPath } : {},\n reporter: await getTerminalReporter(projectRoot)\n };\n const merged = {\n ...defaultConfig,\n ...typeof defaultConfigOverrides === \"function\" ? defaultConfigOverrides(defaultConfig) : defaultConfigOverrides\n };\n return {\n defaultConfig: enforceBareMainModuleEntry(merged, mainModuleName),\n projectRoot,\n extraConfig\n };\n}\nasync function getMetroConfigFromViteConfig(config, metroPluginOptions) {\n const extraConfig = {};\n const projectRoot = resolve(metroPluginOptions.argv?.projectRoot ?? config.root);\n const { mainModuleName, argv, defaultConfigOverrides, watchman, excludeModules } = metroPluginOptions;\n const useWatchman = watchman ?? await isWatchmanResponsive(projectRoot);\n if (watchman === void 0 && !useWatchman && !didWarnAboutWatchmanFallback) {\n didWarnAboutWatchmanFallback = true;\n console.warn(\n \"[vxrn/metro] Watchman is unavailable or unresponsive; falling back to Node file watching.\"\n );\n }\n const { loadConfig } = await projectImport(projectRoot, \"metro\");\n const { getDefaultConfig } = await projectImport(projectRoot, \"@expo/metro-config\");\n const _defaultConfig = getDefaultConfig(projectRoot);\n if (mainModuleName) {\n const origRewriteRequestUrl = _defaultConfig.server.rewriteRequestUrl;\n const resolveMainModuleName = await (async () => {\n const ExpoGoManifestHandlerMiddleware = (await projectImport(\n projectRoot,\n \"@expo/cli/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js\"\n )).default.ExpoGoManifestHandlerMiddleware;\n const manifestHandlerMiddleware = new ExpoGoManifestHandlerMiddleware(\n projectRoot,\n {}\n );\n patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName(\n manifestHandlerMiddleware,\n mainModuleName\n );\n return (p) => {\n return manifestHandlerMiddleware.resolveMainModuleName({\n pkg: { main: mainModuleName },\n platform: p.platform\n });\n };\n })();\n extraConfig.getResolveMainModuleName = resolveMainModuleName;\n _defaultConfig.server.rewriteRequestUrl = (url) => {\n if (url.includes(\"/.expo/.virtual-metro-entry.bundle?\") || rootIndexBundleRequestPattern.test(url)) {\n return rewriteMainModuleBundleUrl(url, resolveMainModuleName);\n }\n return origRewriteRequestUrl(url);\n };\n }\n const existingBlockList = _defaultConfig?.resolver?.blockList;\n const blockList = [\n ...existingBlockList ? Array.isArray(existingBlockList) ? existingBlockList : [existingBlockList] : [],\n ...metroWatchExclusions\n ];\n const { isNativeTransforms } = resolveNativeTransforms(projectRoot, metroPluginOptions);\n let nativeWorkerPath;\n if (isNativeTransforms) {\n nativeWorkerPath = projectResolve(\n projectRoot,\n \"@vxrn/vite-plugin-metro/transformer/metroNativeWorker\"\n );\n }\n const defaultConfig = {\n ..._defaultConfig,\n resolver: {\n ..._defaultConfig?.resolver,\n useWatchman,\n blockList,\n sourceExts: [\"js\", \"jsx\", \"json\", \"ts\", \"tsx\", \"mjs\", \"cjs\"],\n // `one` related packages are using `.mjs` extensions. This somehow fixes `.native` files not being resolved correctly when `.mjs` files are present.\n resolveRequest: (context, moduleName, platform) => {\n const origResolveRequestFn = _defaultConfig?.resolver?.resolveRequest || context.resolveRequest;\n if (excludeModules && excludeModules.length > 0) {\n if (micromatch.isMatch(moduleName, excludeModules)) {\n return origResolveRequestFn(\n context,\n \"@vxrn/vite-plugin-metro/empty\",\n platform\n );\n }\n }\n if (moduleName.startsWith(\"@babel/runtime\")) {\n const contextOverride = {\n ...context,\n unstable_conditionNames: context.unstable_conditionNames.filter(\n (c) => c !== \"import\"\n )\n };\n return origResolveRequestFn(contextOverride, moduleName, platform);\n }\n return origResolveRequestFn(context, moduleName, platform);\n }\n },\n transformer: {\n ..._defaultConfig?.transformer,\n babelTransformerPath: projectResolve(\n projectRoot,\n \"@vxrn/vite-plugin-metro/babel-transformer\"\n )\n },\n // transformerPath is a TOP-LEVEL metro config key, not a transformer option.\n // nesting it under transformer silently leaves metro on its default worker.\n ...nativeWorkerPath ? { transformerPath: nativeWorkerPath } : {},\n reporter: await getTerminalReporter(projectRoot)\n };\n const metroConfig = await loadConfig(\n {\n cwd: projectRoot,\n projectRoot,\n \"reset-cache\": !!process.env.METRO_RESET_CACHE,\n ...argv\n },\n {\n ...defaultConfig,\n ...typeof defaultConfigOverrides === \"function\" ? defaultConfigOverrides(defaultConfig) : defaultConfigOverrides\n }\n );\n return {\n ...enforceBareMainModuleEntry(metroConfig, mainModuleName),\n ...extraConfig\n };\n}\nexport {\n buildMetroConfigInputFromViteConfig,\n getMetroConfigFromViteConfig\n};\n//# sourceMappingURL=getMetroConfigFromViteConfig.js.map\n"],"mappings":"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"}
@@ -29,6 +29,30 @@ function rewriteMainModuleBundleUrl(url, resolveMainModuleName) {
29
29
  }
30
30
  return url.replace(rootIndexBundleRequestPattern, `$1/${resolvedMainModulePath}.bundle`);
31
31
  }
32
+ function isBareSpecifier(name) {
33
+ return name !== "" && !name.startsWith(".") && !name.startsWith("/");
34
+ }
35
+ function bareMainModuleForRequest(moduleName, mainModuleName) {
36
+ if (!mainModuleName || !isBareSpecifier(mainModuleName)) return void 0;
37
+ if (moduleName === `./${mainModuleName}`) return mainModuleName;
38
+ return void 0;
39
+ }
40
+ function enforceBareMainModuleEntry(config, mainModuleName) {
41
+ var _config_resolver;
42
+ if (!mainModuleName || !isBareSpecifier(mainModuleName)) return config;
43
+ var innerResolveRequest = config === null || config === void 0 ? void 0 : (_config_resolver = config.resolver) === null || _config_resolver === void 0 ? void 0 : _config_resolver.resolveRequest;
44
+ return {
45
+ ...config,
46
+ resolver: {
47
+ ...config === null || config === void 0 ? void 0 : config.resolver,
48
+ resolveRequest: function(context, moduleName, platform) {
49
+ var bareMain = bareMainModuleForRequest(moduleName, mainModuleName);
50
+ var resolveRequest = innerResolveRequest || context.resolveRequest;
51
+ return resolveRequest(context, bareMain !== null && bareMain !== void 0 ? bareMain : moduleName, platform);
52
+ }
53
+ }
54
+ };
55
+ }
32
56
  async function isWatchmanResponsive(projectRoot) {
33
57
  var probe = watchmanResponsivePromises.get(projectRoot);
34
58
  if (probe) {
@@ -157,7 +181,7 @@ async function buildMetroConfigInputFromViteConfig(config, metroPluginOptions) {
157
181
  ...typeof defaultConfigOverrides === "function" ? defaultConfigOverrides(defaultConfig) : defaultConfigOverrides
158
182
  };
159
183
  return {
160
- defaultConfig: merged,
184
+ defaultConfig: enforceBareMainModuleEntry(merged, mainModuleName),
161
185
  projectRoot,
162
186
  extraConfig
163
187
  };
@@ -256,7 +280,7 @@ async function getMetroConfigFromViteConfig(config, metroPluginOptions) {
256
280
  ...typeof defaultConfigOverrides === "function" ? defaultConfigOverrides(defaultConfig) : defaultConfigOverrides
257
281
  });
258
282
  return {
259
- ...metroConfig,
283
+ ...enforceBareMainModuleEntry(metroConfig, mainModuleName),
260
284
  ...extraConfig
261
285
  };
262
286
  }
@@ -1 +1 @@
1
- {"version":3,"file":"getMetroConfigFromViteConfig.native.js","names":[],"sources":["esm/metro-config/getMetroConfigFromViteConfig.native.js"],"sourcesContent":["import { spawn } from \"child_process\";\nimport { resolve } from \"path\";\nimport micromatch from \"micromatch\";\nimport { findUserBabelConfig } from \"@vxrn/compiler\";\nimport { projectImport, projectResolve } from \"../utils/projectImport\";\nimport { getTerminalReporter } from \"../utils/getTerminalReporter\";\nimport { patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName } from \"../utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName\";\nvar WATCHMAN_PROBE_TIMEOUT_MS = 2e3;\nvar watchmanResponsivePromises = /* @__PURE__ */ new Map();\nvar didWarnAboutWatchmanFallback = false;\nvar rootIndexBundleRequestPattern = /^(https?:\\/\\/[^/]+)?\\/index\\.bundle(?=$|[?#])/;\nvar metroWatchExclusions = [\n /[/\\\\]dist[/\\\\](?:static|server)(?:[/\\\\]|$)/,\n /[/\\\\]tests[/\\\\][^/\\\\]+[/\\\\]dist(?:[/\\\\]|$)/,\n /[/\\\\]\\.docker(?:[/\\\\]|$)/,\n /[/\\\\]\\.vite(?:[/\\\\]|$)/,\n /[/\\\\]node_modules[/\\\\]\\.vxrn(?:[/\\\\]|$)/\n];\nfunction getPlatformFromBundleUrl(url) {\n var _url_match;\n var platform = (_url_match = url.match(/[?&]platform=(ios|android)(?:&|$)/)) === null || _url_match === void 0 ? void 0 : _url_match[1];\n return platform === \"android\" ? \"android\" : \"ios\";\n}\nfunction rewriteMainModuleBundleUrl(url, resolveMainModuleName) {\n var resolvedMainModulePath = resolveMainModuleName({\n platform: getPlatformFromBundleUrl(url)\n });\n if (url.includes(\"/.expo/.virtual-metro-entry.bundle?\")) {\n return url.replace(\".expo/.virtual-metro-entry\", resolvedMainModulePath);\n }\n return url.replace(rootIndexBundleRequestPattern, `$1/${resolvedMainModulePath}.bundle`);\n}\nasync function isWatchmanResponsive(projectRoot) {\n var probe = watchmanResponsivePromises.get(projectRoot);\n if (probe) {\n return probe;\n }\n probe = new Promise(function(resolve2) {\n var settled = false;\n var finish = function(value) {\n if (settled) return;\n settled = true;\n clearTimeout(timeout);\n resolve2(value);\n };\n var child = spawn(\"watchman\", [\n \"watch-project\",\n projectRoot\n ], {\n stdio: \"ignore\"\n });\n var timeout = setTimeout(function() {\n child.kill();\n finish(false);\n }, WATCHMAN_PROBE_TIMEOUT_MS);\n child.once(\"error\", function() {\n finish(false);\n });\n child.once(\"exit\", function(code) {\n finish(code === 0);\n });\n });\n watchmanResponsivePromises.set(projectRoot, probe);\n return probe;\n}\nfunction resolveNativeTransforms(projectRoot, metroPluginOptions) {\n var userBabelConfigPath = projectRoot ? findUserBabelConfig(projectRoot) : null;\n var hasUserBabelConfig = Boolean(userBabelConfigPath);\n var isNativeTransforms = process.env.ONE_METRO_NATIVE_TRANSFORMS === \"0\" ? false : process.env.ONE_METRO_NATIVE_TRANSFORMS === \"1\" ? true : metroPluginOptions.nativeTransforms === false ? false : metroPluginOptions.nativeTransforms === true ? true : hasUserBabelConfig ? false : true;\n if (userBabelConfigPath && isNativeTransforms) {\n console.warn(`[vxrn/metro] Ignoring user babel config at ${userBabelConfigPath} because native transforms are explicitly enabled (nativeTransforms: true or ONE_METRO_NATIVE_TRANSFORMS=1). Port its plugins to nativeTransformModules, or set nativeTransforms: false (or ONE_METRO_NATIVE_TRANSFORMS=0) to use the babel transformer.`);\n }\n return {\n isNativeTransforms,\n userBabelConfigPath\n };\n}\nasync function buildMetroConfigInputFromViteConfig(config, metroPluginOptions) {\n var _ref;\n var _metroPluginOptions_argv, _defaultConfig_resolver;\n var extraConfig = {};\n var projectRoot = resolve((_ref = (_metroPluginOptions_argv = metroPluginOptions.argv) === null || _metroPluginOptions_argv === void 0 ? void 0 : _metroPluginOptions_argv.projectRoot) !== null && _ref !== void 0 ? _ref : config.root);\n var { mainModuleName, defaultConfigOverrides, watchman, excludeModules } = metroPluginOptions;\n var useWatchman = watchman !== null && watchman !== void 0 ? watchman : await isWatchmanResponsive(projectRoot);\n if (watchman === void 0 && !useWatchman && !didWarnAboutWatchmanFallback) {\n didWarnAboutWatchmanFallback = true;\n console.warn(\"[vxrn/metro] Watchman is unavailable or unresponsive; falling back to Node file watching.\");\n }\n var { getDefaultConfig } = await projectImport(projectRoot, \"@expo/metro-config\");\n var _defaultConfig = getDefaultConfig(projectRoot);\n if (mainModuleName) {\n var origRewriteRequestUrl = _defaultConfig.server.rewriteRequestUrl;\n var resolveMainModuleName = await (async function() {\n var ExpoGoManifestHandlerMiddleware = (await projectImport(projectRoot, \"@expo/cli/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js\")).default.ExpoGoManifestHandlerMiddleware;\n var manifestHandlerMiddleware = new ExpoGoManifestHandlerMiddleware(projectRoot, {});\n patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName(manifestHandlerMiddleware, mainModuleName);\n return function(p) {\n return manifestHandlerMiddleware.resolveMainModuleName({\n pkg: {\n main: mainModuleName\n },\n platform: p.platform\n });\n };\n })();\n extraConfig.getResolveMainModuleName = resolveMainModuleName;\n _defaultConfig.server.rewriteRequestUrl = function(url) {\n if (url.includes(\"/.expo/.virtual-metro-entry.bundle?\") || rootIndexBundleRequestPattern.test(url)) {\n return rewriteMainModuleBundleUrl(url, resolveMainModuleName);\n }\n return origRewriteRequestUrl(url);\n };\n }\n var existingBlockList = _defaultConfig === null || _defaultConfig === void 0 ? void 0 : (_defaultConfig_resolver = _defaultConfig.resolver) === null || _defaultConfig_resolver === void 0 ? void 0 : _defaultConfig_resolver.blockList;\n var blockList = [\n ...existingBlockList ? Array.isArray(existingBlockList) ? existingBlockList : [\n existingBlockList\n ] : [],\n ...metroWatchExclusions\n ];\n var { isNativeTransforms } = resolveNativeTransforms(projectRoot, metroPluginOptions);\n var nativeWorkerPath;\n if (isNativeTransforms) {\n nativeWorkerPath = projectResolve(projectRoot, \"@vxrn/vite-plugin-metro/transformer/metroNativeWorker\");\n }\n var defaultConfig = {\n ..._defaultConfig,\n resolver: {\n ..._defaultConfig === null || _defaultConfig === void 0 ? void 0 : _defaultConfig.resolver,\n useWatchman,\n blockList,\n sourceExts: [\n \"js\",\n \"jsx\",\n \"json\",\n \"ts\",\n \"tsx\",\n \"mjs\",\n \"cjs\"\n ],\n // `one` related packages are using `.mjs` extensions. This fixes `.native` files not being resolved correctly when `.mjs` files are present.\n resolveRequest: function(context, moduleName, platform) {\n var _defaultConfig_resolver2;\n var origResolveRequestFn = (_defaultConfig === null || _defaultConfig === void 0 ? void 0 : (_defaultConfig_resolver2 = _defaultConfig.resolver) === null || _defaultConfig_resolver2 === void 0 ? void 0 : _defaultConfig_resolver2.resolveRequest) || context.resolveRequest;\n if (excludeModules && excludeModules.length > 0) {\n if (micromatch.isMatch(moduleName, excludeModules)) {\n return origResolveRequestFn(context, \"@vxrn/vite-plugin-metro/empty\", platform);\n }\n }\n if (moduleName.startsWith(\"@babel/runtime\")) {\n var contextOverride = {\n ...context,\n unstable_conditionNames: context.unstable_conditionNames.filter(function(c) {\n return c !== \"import\";\n })\n };\n return origResolveRequestFn(contextOverride, moduleName, platform);\n }\n return origResolveRequestFn(context, moduleName, platform);\n }\n },\n transformer: {\n ..._defaultConfig === null || _defaultConfig === void 0 ? void 0 : _defaultConfig.transformer,\n babelTransformerPath: projectResolve(projectRoot, \"@vxrn/vite-plugin-metro/babel-transformer\")\n },\n // transformerPath is a TOP-LEVEL metro config key, not a transformer option.\n // nesting it under transformer silently leaves metro on its default worker.\n ...nativeWorkerPath ? {\n transformerPath: nativeWorkerPath\n } : {},\n reporter: await getTerminalReporter(projectRoot)\n };\n var merged = {\n ...defaultConfig,\n ...typeof defaultConfigOverrides === \"function\" ? defaultConfigOverrides(defaultConfig) : defaultConfigOverrides\n };\n return {\n defaultConfig: merged,\n projectRoot,\n extraConfig\n };\n}\nasync function getMetroConfigFromViteConfig(config, metroPluginOptions) {\n var _ref;\n var _metroPluginOptions_argv, _defaultConfig_resolver;\n var extraConfig = {};\n var projectRoot = resolve((_ref = (_metroPluginOptions_argv = metroPluginOptions.argv) === null || _metroPluginOptions_argv === void 0 ? void 0 : _metroPluginOptions_argv.projectRoot) !== null && _ref !== void 0 ? _ref : config.root);\n var { mainModuleName, argv, defaultConfigOverrides, watchman, excludeModules } = metroPluginOptions;\n var useWatchman = watchman !== null && watchman !== void 0 ? watchman : await isWatchmanResponsive(projectRoot);\n if (watchman === void 0 && !useWatchman && !didWarnAboutWatchmanFallback) {\n didWarnAboutWatchmanFallback = true;\n console.warn(\"[vxrn/metro] Watchman is unavailable or unresponsive; falling back to Node file watching.\");\n }\n var { loadConfig } = await projectImport(projectRoot, \"metro\");\n var { getDefaultConfig } = await projectImport(projectRoot, \"@expo/metro-config\");\n var _defaultConfig = getDefaultConfig(projectRoot);\n if (mainModuleName) {\n var origRewriteRequestUrl = _defaultConfig.server.rewriteRequestUrl;\n var resolveMainModuleName = await (async function() {\n var ExpoGoManifestHandlerMiddleware = (await projectImport(projectRoot, \"@expo/cli/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js\")).default.ExpoGoManifestHandlerMiddleware;\n var manifestHandlerMiddleware = new ExpoGoManifestHandlerMiddleware(projectRoot, {});\n patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName(manifestHandlerMiddleware, mainModuleName);\n return function(p) {\n return manifestHandlerMiddleware.resolveMainModuleName({\n pkg: {\n main: mainModuleName\n },\n platform: p.platform\n });\n };\n })();\n extraConfig.getResolveMainModuleName = resolveMainModuleName;\n _defaultConfig.server.rewriteRequestUrl = function(url) {\n if (url.includes(\"/.expo/.virtual-metro-entry.bundle?\") || rootIndexBundleRequestPattern.test(url)) {\n return rewriteMainModuleBundleUrl(url, resolveMainModuleName);\n }\n return origRewriteRequestUrl(url);\n };\n }\n var existingBlockList = _defaultConfig === null || _defaultConfig === void 0 ? void 0 : (_defaultConfig_resolver = _defaultConfig.resolver) === null || _defaultConfig_resolver === void 0 ? void 0 : _defaultConfig_resolver.blockList;\n var blockList = [\n ...existingBlockList ? Array.isArray(existingBlockList) ? existingBlockList : [\n existingBlockList\n ] : [],\n ...metroWatchExclusions\n ];\n var { isNativeTransforms } = resolveNativeTransforms(projectRoot, metroPluginOptions);\n var nativeWorkerPath;\n if (isNativeTransforms) {\n nativeWorkerPath = projectResolve(projectRoot, \"@vxrn/vite-plugin-metro/transformer/metroNativeWorker\");\n }\n var defaultConfig = {\n ..._defaultConfig,\n resolver: {\n ..._defaultConfig === null || _defaultConfig === void 0 ? void 0 : _defaultConfig.resolver,\n useWatchman,\n blockList,\n sourceExts: [\n \"js\",\n \"jsx\",\n \"json\",\n \"ts\",\n \"tsx\",\n \"mjs\",\n \"cjs\"\n ],\n // `one` related packages are using `.mjs` extensions. This somehow fixes `.native` files not being resolved correctly when `.mjs` files are present.\n resolveRequest: function(context, moduleName, platform) {\n var _defaultConfig_resolver2;\n var origResolveRequestFn = (_defaultConfig === null || _defaultConfig === void 0 ? void 0 : (_defaultConfig_resolver2 = _defaultConfig.resolver) === null || _defaultConfig_resolver2 === void 0 ? void 0 : _defaultConfig_resolver2.resolveRequest) || context.resolveRequest;\n if (excludeModules && excludeModules.length > 0) {\n if (micromatch.isMatch(moduleName, excludeModules)) {\n return origResolveRequestFn(context, \"@vxrn/vite-plugin-metro/empty\", platform);\n }\n }\n if (moduleName.startsWith(\"@babel/runtime\")) {\n var contextOverride = {\n ...context,\n unstable_conditionNames: context.unstable_conditionNames.filter(function(c) {\n return c !== \"import\";\n })\n };\n return origResolveRequestFn(contextOverride, moduleName, platform);\n }\n return origResolveRequestFn(context, moduleName, platform);\n }\n },\n transformer: {\n ..._defaultConfig === null || _defaultConfig === void 0 ? void 0 : _defaultConfig.transformer,\n babelTransformerPath: projectResolve(projectRoot, \"@vxrn/vite-plugin-metro/babel-transformer\")\n },\n // transformerPath is a TOP-LEVEL metro config key, not a transformer option.\n // nesting it under transformer silently leaves metro on its default worker.\n ...nativeWorkerPath ? {\n transformerPath: nativeWorkerPath\n } : {},\n reporter: await getTerminalReporter(projectRoot)\n };\n var metroConfig = await loadConfig({\n cwd: projectRoot,\n projectRoot,\n \"reset-cache\": !!process.env.METRO_RESET_CACHE,\n ...argv\n }, {\n ...defaultConfig,\n ...typeof defaultConfigOverrides === \"function\" ? defaultConfigOverrides(defaultConfig) : defaultConfigOverrides\n });\n return {\n ...metroConfig,\n ...extraConfig\n };\n}\nexport {\n buildMetroConfigInputFromViteConfig,\n getMetroConfigFromViteConfig\n};\n//# sourceMappingURL=getMetroConfigFromViteConfig.js.map\n"],"mappings":";;;;;;;;;AAOA,IAAI,4BAA4B;AAChC,IAAI,6CAA6C,IAAI,IAAI;AACzD,IAAI,+BAA+B;AACnC,IAAI,gCAAgC;AACpC,IAAI,uBAAuB;CACzB;CACA;CACA;CACA;CACA;AACF;AACA,SAAS,yBAAyB,KAAK;CACrC,IAAI;CACJ,IAAI,YAAY,aAAa,IAAI,MAAM,mCAAmC,OAAO,QAAQ,eAAe,KAAK,IAAI,KAAK,IAAI,WAAW;CACrI,OAAO,aAAa,YAAY,YAAY;AAC9C;AACA,SAAS,2BAA2B,KAAK,uBAAuB;CAC9D,IAAI,yBAAyB,sBAAsB,EACjD,UAAU,yBAAyB,GAAG,EACxC,CAAC;CACD,IAAI,IAAI,SAAS,qCAAqC,GAAG;EACvD,OAAO,IAAI,QAAQ,8BAA8B,sBAAsB;CACzE;CACA,OAAO,IAAI,QAAQ,+BAA+B,MAAM,uBAAuB,QAAQ;AACzF;AACA,eAAe,qBAAqB,aAAa;CAC/C,IAAI,QAAQ,2BAA2B,IAAI,WAAW;CACtD,IAAI,OAAO;EACT,OAAO;CACT;CACA,QAAQ,IAAI,QAAQ,SAAS,UAAU;EACrC,IAAI,UAAU;EACd,IAAI,SAAS,SAAS,OAAO;GAC3B,IAAI,SAAS;GACb,UAAU;GACV,aAAa,OAAO;GACpB,SAAS,KAAK;EAChB;EACA,IAAI,QAAQ,MAAM,YAAY,CAC5B,iBACA,WACF,GAAG,EACD,OAAO,SACT,CAAC;EACD,IAAI,UAAU,WAAW,WAAW;GAClC,MAAM,KAAK;GACX,OAAO,KAAK;EACd,GAAG,yBAAyB;EAC5B,MAAM,KAAK,SAAS,WAAW;GAC7B,OAAO,KAAK;EACd,CAAC;EACD,MAAM,KAAK,QAAQ,SAAS,MAAM;GAChC,OAAO,SAAS,CAAC;EACnB,CAAC;CACH,CAAC;CACD,2BAA2B,IAAI,aAAa,KAAK;CACjD,OAAO;AACT;AACA,SAAS,wBAAwB,aAAa,oBAAoB;CAChE,IAAI,sBAAsB,cAAc,oBAAoB,WAAW,IAAI;CAC3E,IAAI,qBAAqB,QAAQ,mBAAmB;CACpD,IAAI,qBAAqB,QAAQ,IAAI,gCAAgC,MAAM,QAAQ,QAAQ,IAAI,gCAAgC,MAAM,OAAO,mBAAmB,qBAAqB,QAAQ,QAAQ,mBAAmB,qBAAqB,OAAO,OAAO,qBAAqB,QAAQ;CACvR,IAAI,uBAAuB,oBAAoB;EAC7C,QAAQ,KAAK,8CAA8C,oBAAoB,yPAAyP;CAC1U;CACA,OAAO;EACL;EACA;CACF;AACF;AACA,eAAe,oCAAoC,QAAQ,oBAAoB;CAC7E,IAAI;CACJ,IAAI,0BAA0B;CAC9B,IAAI,cAAc,CAAC;CACnB,IAAI,cAAc,SAAS,QAAQ,2BAA2B,mBAAmB,UAAU,QAAQ,6BAA6B,KAAK,IAAI,KAAK,IAAI,yBAAyB,iBAAiB,QAAQ,SAAS,KAAK,IAAI,OAAO,OAAO,IAAI;CACxO,IAAI,EAAE,gBAAgB,wBAAwB,UAAU,mBAAmB;CAC3E,IAAI,cAAc,aAAa,QAAQ,aAAa,KAAK,IAAI,WAAW,MAAM,qBAAqB,WAAW;CAC9G,IAAI,aAAa,KAAK,KAAK,CAAC,eAAe,CAAC,8BAA8B;EACxE,+BAA+B;EAC/B,QAAQ,KAAK,2FAA2F;CAC1G;CACA,IAAI,EAAE,qBAAqB,MAAM,cAAc,aAAa,oBAAoB;CAChF,IAAI,iBAAiB,iBAAiB,WAAW;CACjD,IAAI,gBAAgB;EAClB,IAAI,wBAAwB,eAAe,OAAO;EAClD,IAAI,wBAAwB,OAAO,iBAAiB;GAClD,IAAI,mCAAmC,MAAM,cAAc,aAAa,gFAAgF,EAAC,CAAE,QAAQ;GACnK,IAAI,4BAA4B,IAAI,gCAAgC,aAAa,CAAC,CAAC;GACnF,6DAA6D,2BAA2B,cAAc;GACtG,OAAO,SAAS,GAAG;IACjB,OAAO,0BAA0B,sBAAsB;KACrD,KAAK,EACH,MAAM,eACR;KACA,UAAU,EAAE;IACd,CAAC;GACH;EACF,EAAC,CAAE;EACH,YAAY,2BAA2B;EACvC,eAAe,OAAO,oBAAoB,SAAS,KAAK;GACtD,IAAI,IAAI,SAAS,qCAAqC,KAAK,8BAA8B,KAAK,GAAG,GAAG;IAClG,OAAO,2BAA2B,KAAK,qBAAqB;GAC9D;GACA,OAAO,sBAAsB,GAAG;EAClC;CACF;CACA,IAAI,oBAAoB,mBAAmB,QAAQ,mBAAmB,KAAK,IAAI,KAAK,KAAK,0BAA0B,eAAe,cAAc,QAAQ,4BAA4B,KAAK,IAAI,KAAK,IAAI,wBAAwB;CAC9N,IAAI,YAAY,CACd,GAAG,oBAAoB,MAAM,QAAQ,iBAAiB,IAAI,oBAAoB,CAC5E,iBACF,IAAI,CAAC,GACL,GAAG,oBACL;CACA,IAAI,EAAE,uBAAuB,wBAAwB,aAAa,kBAAkB;CACpF,IAAI;CACJ,IAAI,oBAAoB;EACtB,mBAAmB,eAAe,aAAa,uDAAuD;CACxG;CACA,IAAI,gBAAgB;EAClB,GAAG;EACH,UAAU;GACR,GAAG,mBAAmB,QAAQ,mBAAmB,KAAK,IAAI,KAAK,IAAI,eAAe;GAClF;GACA;GACA,YAAY;IACV;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GAEA,gBAAgB,SAAS,SAAS,YAAY,UAAU;IACtD,IAAI;IACJ,IAAI,wBAAwB,mBAAmB,QAAQ,mBAAmB,KAAK,IAAI,KAAK,KAAK,2BAA2B,eAAe,cAAc,QAAQ,6BAA6B,KAAK,IAAI,KAAK,IAAI,yBAAyB,mBAAmB,QAAQ;IAChQ,IAAI,kBAAkB,eAAe,SAAS,GAAG;KAC/C,IAAI,WAAW,QAAQ,YAAY,cAAc,GAAG;MAClD,OAAO,qBAAqB,SAAS,iCAAiC,QAAQ;KAChF;IACF;IACA,IAAI,WAAW,WAAW,gBAAgB,GAAG;KAC3C,IAAI,kBAAkB;MACpB,GAAG;MACH,yBAAyB,QAAQ,wBAAwB,OAAO,SAAS,GAAG;OAC1E,OAAO,MAAM;MACf,CAAC;KACH;KACA,OAAO,qBAAqB,iBAAiB,YAAY,QAAQ;IACnE;IACA,OAAO,qBAAqB,SAAS,YAAY,QAAQ;GAC3D;EACF;EACA,aAAa;GACX,GAAG,mBAAmB,QAAQ,mBAAmB,KAAK,IAAI,KAAK,IAAI,eAAe;GAClF,sBAAsB,eAAe,aAAa,2CAA2C;EAC/F;EAGA,GAAG,mBAAmB,EACpB,iBAAiB,iBACnB,IAAI,CAAC;EACL,UAAU,MAAM,oBAAoB,WAAW;CACjD;CACA,IAAI,SAAS;EACX,GAAG;EACH,GAAG,OAAO,2BAA2B,aAAa,uBAAuB,aAAa,IAAI;CAC5F;CACA,OAAO;EACL,eAAe;EACf;EACA;CACF;AACF;AACA,eAAe,6BAA6B,QAAQ,oBAAoB;CACtE,IAAI;CACJ,IAAI,0BAA0B;CAC9B,IAAI,cAAc,CAAC;CACnB,IAAI,cAAc,SAAS,QAAQ,2BAA2B,mBAAmB,UAAU,QAAQ,6BAA6B,KAAK,IAAI,KAAK,IAAI,yBAAyB,iBAAiB,QAAQ,SAAS,KAAK,IAAI,OAAO,OAAO,IAAI;CACxO,IAAI,EAAE,gBAAgB,MAAM,wBAAwB,UAAU,mBAAmB;CACjF,IAAI,cAAc,aAAa,QAAQ,aAAa,KAAK,IAAI,WAAW,MAAM,qBAAqB,WAAW;CAC9G,IAAI,aAAa,KAAK,KAAK,CAAC,eAAe,CAAC,8BAA8B;EACxE,+BAA+B;EAC/B,QAAQ,KAAK,2FAA2F;CAC1G;CACA,IAAI,EAAE,eAAe,MAAM,cAAc,aAAa,OAAO;CAC7D,IAAI,EAAE,qBAAqB,MAAM,cAAc,aAAa,oBAAoB;CAChF,IAAI,iBAAiB,iBAAiB,WAAW;CACjD,IAAI,gBAAgB;EAClB,IAAI,wBAAwB,eAAe,OAAO;EAClD,IAAI,wBAAwB,OAAO,iBAAiB;GAClD,IAAI,mCAAmC,MAAM,cAAc,aAAa,gFAAgF,EAAC,CAAE,QAAQ;GACnK,IAAI,4BAA4B,IAAI,gCAAgC,aAAa,CAAC,CAAC;GACnF,6DAA6D,2BAA2B,cAAc;GACtG,OAAO,SAAS,GAAG;IACjB,OAAO,0BAA0B,sBAAsB;KACrD,KAAK,EACH,MAAM,eACR;KACA,UAAU,EAAE;IACd,CAAC;GACH;EACF,EAAC,CAAE;EACH,YAAY,2BAA2B;EACvC,eAAe,OAAO,oBAAoB,SAAS,KAAK;GACtD,IAAI,IAAI,SAAS,qCAAqC,KAAK,8BAA8B,KAAK,GAAG,GAAG;IAClG,OAAO,2BAA2B,KAAK,qBAAqB;GAC9D;GACA,OAAO,sBAAsB,GAAG;EAClC;CACF;CACA,IAAI,oBAAoB,mBAAmB,QAAQ,mBAAmB,KAAK,IAAI,KAAK,KAAK,0BAA0B,eAAe,cAAc,QAAQ,4BAA4B,KAAK,IAAI,KAAK,IAAI,wBAAwB;CAC9N,IAAI,YAAY,CACd,GAAG,oBAAoB,MAAM,QAAQ,iBAAiB,IAAI,oBAAoB,CAC5E,iBACF,IAAI,CAAC,GACL,GAAG,oBACL;CACA,IAAI,EAAE,uBAAuB,wBAAwB,aAAa,kBAAkB;CACpF,IAAI;CACJ,IAAI,oBAAoB;EACtB,mBAAmB,eAAe,aAAa,uDAAuD;CACxG;CACA,IAAI,gBAAgB;EAClB,GAAG;EACH,UAAU;GACR,GAAG,mBAAmB,QAAQ,mBAAmB,KAAK,IAAI,KAAK,IAAI,eAAe;GAClF;GACA;GACA,YAAY;IACV;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GAEA,gBAAgB,SAAS,SAAS,YAAY,UAAU;IACtD,IAAI;IACJ,IAAI,wBAAwB,mBAAmB,QAAQ,mBAAmB,KAAK,IAAI,KAAK,KAAK,2BAA2B,eAAe,cAAc,QAAQ,6BAA6B,KAAK,IAAI,KAAK,IAAI,yBAAyB,mBAAmB,QAAQ;IAChQ,IAAI,kBAAkB,eAAe,SAAS,GAAG;KAC/C,IAAI,WAAW,QAAQ,YAAY,cAAc,GAAG;MAClD,OAAO,qBAAqB,SAAS,iCAAiC,QAAQ;KAChF;IACF;IACA,IAAI,WAAW,WAAW,gBAAgB,GAAG;KAC3C,IAAI,kBAAkB;MACpB,GAAG;MACH,yBAAyB,QAAQ,wBAAwB,OAAO,SAAS,GAAG;OAC1E,OAAO,MAAM;MACf,CAAC;KACH;KACA,OAAO,qBAAqB,iBAAiB,YAAY,QAAQ;IACnE;IACA,OAAO,qBAAqB,SAAS,YAAY,QAAQ;GAC3D;EACF;EACA,aAAa;GACX,GAAG,mBAAmB,QAAQ,mBAAmB,KAAK,IAAI,KAAK,IAAI,eAAe;GAClF,sBAAsB,eAAe,aAAa,2CAA2C;EAC/F;EAGA,GAAG,mBAAmB,EACpB,iBAAiB,iBACnB,IAAI,CAAC;EACL,UAAU,MAAM,oBAAoB,WAAW;CACjD;CACA,IAAI,cAAc,MAAM,WAAW;EACjC,KAAK;EACL;EACA,eAAe,CAAC,CAAC,QAAQ,IAAI;EAC7B,GAAG;CACL,GAAG;EACD,GAAG;EACH,GAAG,OAAO,2BAA2B,aAAa,uBAAuB,aAAa,IAAI;CAC5F,CAAC;CACD,OAAO;EACL,GAAG;EACH,GAAG;CACL;AACF"}
1
+ {"version":3,"file":"getMetroConfigFromViteConfig.native.js","names":[],"sources":["esm/metro-config/getMetroConfigFromViteConfig.native.js"],"sourcesContent":["import { spawn } from \"child_process\";\nimport { resolve } from \"path\";\nimport micromatch from \"micromatch\";\nimport { findUserBabelConfig } from \"@vxrn/compiler\";\nimport { projectImport, projectResolve } from \"../utils/projectImport\";\nimport { getTerminalReporter } from \"../utils/getTerminalReporter\";\nimport { patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName } from \"../utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName\";\nvar WATCHMAN_PROBE_TIMEOUT_MS = 2e3;\nvar watchmanResponsivePromises = /* @__PURE__ */ new Map();\nvar didWarnAboutWatchmanFallback = false;\nvar rootIndexBundleRequestPattern = /^(https?:\\/\\/[^/]+)?\\/index\\.bundle(?=$|[?#])/;\nvar metroWatchExclusions = [\n /[/\\\\]dist[/\\\\](?:static|server)(?:[/\\\\]|$)/,\n /[/\\\\]tests[/\\\\][^/\\\\]+[/\\\\]dist(?:[/\\\\]|$)/,\n /[/\\\\]\\.docker(?:[/\\\\]|$)/,\n /[/\\\\]\\.vite(?:[/\\\\]|$)/,\n /[/\\\\]node_modules[/\\\\]\\.vxrn(?:[/\\\\]|$)/\n];\nfunction getPlatformFromBundleUrl(url) {\n var _url_match;\n var platform = (_url_match = url.match(/[?&]platform=(ios|android)(?:&|$)/)) === null || _url_match === void 0 ? void 0 : _url_match[1];\n return platform === \"android\" ? \"android\" : \"ios\";\n}\nfunction rewriteMainModuleBundleUrl(url, resolveMainModuleName) {\n var resolvedMainModulePath = resolveMainModuleName({\n platform: getPlatformFromBundleUrl(url)\n });\n if (url.includes(\"/.expo/.virtual-metro-entry.bundle?\")) {\n return url.replace(\".expo/.virtual-metro-entry\", resolvedMainModulePath);\n }\n return url.replace(rootIndexBundleRequestPattern, `$1/${resolvedMainModulePath}.bundle`);\n}\nfunction isBareSpecifier(name) {\n return name !== \"\" && !name.startsWith(\".\") && !name.startsWith(\"/\");\n}\nfunction bareMainModuleForRequest(moduleName, mainModuleName) {\n if (!mainModuleName || !isBareSpecifier(mainModuleName)) return void 0;\n if (moduleName === `./${mainModuleName}`) return mainModuleName;\n return void 0;\n}\nfunction enforceBareMainModuleEntry(config, mainModuleName) {\n var _config_resolver;\n if (!mainModuleName || !isBareSpecifier(mainModuleName)) return config;\n var innerResolveRequest = config === null || config === void 0 ? void 0 : (_config_resolver = config.resolver) === null || _config_resolver === void 0 ? void 0 : _config_resolver.resolveRequest;\n return {\n ...config,\n resolver: {\n ...config === null || config === void 0 ? void 0 : config.resolver,\n resolveRequest: function(context, moduleName, platform) {\n var bareMain = bareMainModuleForRequest(moduleName, mainModuleName);\n var resolveRequest = innerResolveRequest || context.resolveRequest;\n return resolveRequest(context, bareMain !== null && bareMain !== void 0 ? bareMain : moduleName, platform);\n }\n }\n };\n}\nasync function isWatchmanResponsive(projectRoot) {\n var probe = watchmanResponsivePromises.get(projectRoot);\n if (probe) {\n return probe;\n }\n probe = new Promise(function(resolve2) {\n var settled = false;\n var finish = function(value) {\n if (settled) return;\n settled = true;\n clearTimeout(timeout);\n resolve2(value);\n };\n var child = spawn(\"watchman\", [\n \"watch-project\",\n projectRoot\n ], {\n stdio: \"ignore\"\n });\n var timeout = setTimeout(function() {\n child.kill();\n finish(false);\n }, WATCHMAN_PROBE_TIMEOUT_MS);\n child.once(\"error\", function() {\n finish(false);\n });\n child.once(\"exit\", function(code) {\n finish(code === 0);\n });\n });\n watchmanResponsivePromises.set(projectRoot, probe);\n return probe;\n}\nfunction resolveNativeTransforms(projectRoot, metroPluginOptions) {\n var userBabelConfigPath = projectRoot ? findUserBabelConfig(projectRoot) : null;\n var hasUserBabelConfig = Boolean(userBabelConfigPath);\n var isNativeTransforms = process.env.ONE_METRO_NATIVE_TRANSFORMS === \"0\" ? false : process.env.ONE_METRO_NATIVE_TRANSFORMS === \"1\" ? true : metroPluginOptions.nativeTransforms === false ? false : metroPluginOptions.nativeTransforms === true ? true : hasUserBabelConfig ? false : true;\n if (userBabelConfigPath && isNativeTransforms) {\n console.warn(`[vxrn/metro] Ignoring user babel config at ${userBabelConfigPath} because native transforms are explicitly enabled (nativeTransforms: true or ONE_METRO_NATIVE_TRANSFORMS=1). Port its plugins to nativeTransformModules, or set nativeTransforms: false (or ONE_METRO_NATIVE_TRANSFORMS=0) to use the babel transformer.`);\n }\n return {\n isNativeTransforms,\n userBabelConfigPath\n };\n}\nasync function buildMetroConfigInputFromViteConfig(config, metroPluginOptions) {\n var _ref;\n var _metroPluginOptions_argv, _defaultConfig_resolver;\n var extraConfig = {};\n var projectRoot = resolve((_ref = (_metroPluginOptions_argv = metroPluginOptions.argv) === null || _metroPluginOptions_argv === void 0 ? void 0 : _metroPluginOptions_argv.projectRoot) !== null && _ref !== void 0 ? _ref : config.root);\n var { mainModuleName, defaultConfigOverrides, watchman, excludeModules } = metroPluginOptions;\n var useWatchman = watchman !== null && watchman !== void 0 ? watchman : await isWatchmanResponsive(projectRoot);\n if (watchman === void 0 && !useWatchman && !didWarnAboutWatchmanFallback) {\n didWarnAboutWatchmanFallback = true;\n console.warn(\"[vxrn/metro] Watchman is unavailable or unresponsive; falling back to Node file watching.\");\n }\n var { getDefaultConfig } = await projectImport(projectRoot, \"@expo/metro-config\");\n var _defaultConfig = getDefaultConfig(projectRoot);\n if (mainModuleName) {\n var origRewriteRequestUrl = _defaultConfig.server.rewriteRequestUrl;\n var resolveMainModuleName = await (async function() {\n var ExpoGoManifestHandlerMiddleware = (await projectImport(projectRoot, \"@expo/cli/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js\")).default.ExpoGoManifestHandlerMiddleware;\n var manifestHandlerMiddleware = new ExpoGoManifestHandlerMiddleware(projectRoot, {});\n patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName(manifestHandlerMiddleware, mainModuleName);\n return function(p) {\n return manifestHandlerMiddleware.resolveMainModuleName({\n pkg: {\n main: mainModuleName\n },\n platform: p.platform\n });\n };\n })();\n extraConfig.getResolveMainModuleName = resolveMainModuleName;\n _defaultConfig.server.rewriteRequestUrl = function(url) {\n if (url.includes(\"/.expo/.virtual-metro-entry.bundle?\") || rootIndexBundleRequestPattern.test(url)) {\n return rewriteMainModuleBundleUrl(url, resolveMainModuleName);\n }\n return origRewriteRequestUrl(url);\n };\n }\n var existingBlockList = _defaultConfig === null || _defaultConfig === void 0 ? void 0 : (_defaultConfig_resolver = _defaultConfig.resolver) === null || _defaultConfig_resolver === void 0 ? void 0 : _defaultConfig_resolver.blockList;\n var blockList = [\n ...existingBlockList ? Array.isArray(existingBlockList) ? existingBlockList : [\n existingBlockList\n ] : [],\n ...metroWatchExclusions\n ];\n var { isNativeTransforms } = resolveNativeTransforms(projectRoot, metroPluginOptions);\n var nativeWorkerPath;\n if (isNativeTransforms) {\n nativeWorkerPath = projectResolve(projectRoot, \"@vxrn/vite-plugin-metro/transformer/metroNativeWorker\");\n }\n var defaultConfig = {\n ..._defaultConfig,\n resolver: {\n ..._defaultConfig === null || _defaultConfig === void 0 ? void 0 : _defaultConfig.resolver,\n useWatchman,\n blockList,\n sourceExts: [\n \"js\",\n \"jsx\",\n \"json\",\n \"ts\",\n \"tsx\",\n \"mjs\",\n \"cjs\"\n ],\n // `one` related packages are using `.mjs` extensions. This fixes `.native` files not being resolved correctly when `.mjs` files are present.\n resolveRequest: function(context, moduleName, platform) {\n var _defaultConfig_resolver2;\n var origResolveRequestFn = (_defaultConfig === null || _defaultConfig === void 0 ? void 0 : (_defaultConfig_resolver2 = _defaultConfig.resolver) === null || _defaultConfig_resolver2 === void 0 ? void 0 : _defaultConfig_resolver2.resolveRequest) || context.resolveRequest;\n if (excludeModules && excludeModules.length > 0) {\n if (micromatch.isMatch(moduleName, excludeModules)) {\n return origResolveRequestFn(context, \"@vxrn/vite-plugin-metro/empty\", platform);\n }\n }\n if (moduleName.startsWith(\"@babel/runtime\")) {\n var contextOverride = {\n ...context,\n unstable_conditionNames: context.unstable_conditionNames.filter(function(c) {\n return c !== \"import\";\n })\n };\n return origResolveRequestFn(contextOverride, moduleName, platform);\n }\n return origResolveRequestFn(context, moduleName, platform);\n }\n },\n transformer: {\n ..._defaultConfig === null || _defaultConfig === void 0 ? void 0 : _defaultConfig.transformer,\n babelTransformerPath: projectResolve(projectRoot, \"@vxrn/vite-plugin-metro/babel-transformer\")\n },\n // transformerPath is a TOP-LEVEL metro config key, not a transformer option.\n // nesting it under transformer silently leaves metro on its default worker.\n ...nativeWorkerPath ? {\n transformerPath: nativeWorkerPath\n } : {},\n reporter: await getTerminalReporter(projectRoot)\n };\n var merged = {\n ...defaultConfig,\n ...typeof defaultConfigOverrides === \"function\" ? defaultConfigOverrides(defaultConfig) : defaultConfigOverrides\n };\n return {\n defaultConfig: enforceBareMainModuleEntry(merged, mainModuleName),\n projectRoot,\n extraConfig\n };\n}\nasync function getMetroConfigFromViteConfig(config, metroPluginOptions) {\n var _ref;\n var _metroPluginOptions_argv, _defaultConfig_resolver;\n var extraConfig = {};\n var projectRoot = resolve((_ref = (_metroPluginOptions_argv = metroPluginOptions.argv) === null || _metroPluginOptions_argv === void 0 ? void 0 : _metroPluginOptions_argv.projectRoot) !== null && _ref !== void 0 ? _ref : config.root);\n var { mainModuleName, argv, defaultConfigOverrides, watchman, excludeModules } = metroPluginOptions;\n var useWatchman = watchman !== null && watchman !== void 0 ? watchman : await isWatchmanResponsive(projectRoot);\n if (watchman === void 0 && !useWatchman && !didWarnAboutWatchmanFallback) {\n didWarnAboutWatchmanFallback = true;\n console.warn(\"[vxrn/metro] Watchman is unavailable or unresponsive; falling back to Node file watching.\");\n }\n var { loadConfig } = await projectImport(projectRoot, \"metro\");\n var { getDefaultConfig } = await projectImport(projectRoot, \"@expo/metro-config\");\n var _defaultConfig = getDefaultConfig(projectRoot);\n if (mainModuleName) {\n var origRewriteRequestUrl = _defaultConfig.server.rewriteRequestUrl;\n var resolveMainModuleName = await (async function() {\n var ExpoGoManifestHandlerMiddleware = (await projectImport(projectRoot, \"@expo/cli/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js\")).default.ExpoGoManifestHandlerMiddleware;\n var manifestHandlerMiddleware = new ExpoGoManifestHandlerMiddleware(projectRoot, {});\n patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName(manifestHandlerMiddleware, mainModuleName);\n return function(p) {\n return manifestHandlerMiddleware.resolveMainModuleName({\n pkg: {\n main: mainModuleName\n },\n platform: p.platform\n });\n };\n })();\n extraConfig.getResolveMainModuleName = resolveMainModuleName;\n _defaultConfig.server.rewriteRequestUrl = function(url) {\n if (url.includes(\"/.expo/.virtual-metro-entry.bundle?\") || rootIndexBundleRequestPattern.test(url)) {\n return rewriteMainModuleBundleUrl(url, resolveMainModuleName);\n }\n return origRewriteRequestUrl(url);\n };\n }\n var existingBlockList = _defaultConfig === null || _defaultConfig === void 0 ? void 0 : (_defaultConfig_resolver = _defaultConfig.resolver) === null || _defaultConfig_resolver === void 0 ? void 0 : _defaultConfig_resolver.blockList;\n var blockList = [\n ...existingBlockList ? Array.isArray(existingBlockList) ? existingBlockList : [\n existingBlockList\n ] : [],\n ...metroWatchExclusions\n ];\n var { isNativeTransforms } = resolveNativeTransforms(projectRoot, metroPluginOptions);\n var nativeWorkerPath;\n if (isNativeTransforms) {\n nativeWorkerPath = projectResolve(projectRoot, \"@vxrn/vite-plugin-metro/transformer/metroNativeWorker\");\n }\n var defaultConfig = {\n ..._defaultConfig,\n resolver: {\n ..._defaultConfig === null || _defaultConfig === void 0 ? void 0 : _defaultConfig.resolver,\n useWatchman,\n blockList,\n sourceExts: [\n \"js\",\n \"jsx\",\n \"json\",\n \"ts\",\n \"tsx\",\n \"mjs\",\n \"cjs\"\n ],\n // `one` related packages are using `.mjs` extensions. This somehow fixes `.native` files not being resolved correctly when `.mjs` files are present.\n resolveRequest: function(context, moduleName, platform) {\n var _defaultConfig_resolver2;\n var origResolveRequestFn = (_defaultConfig === null || _defaultConfig === void 0 ? void 0 : (_defaultConfig_resolver2 = _defaultConfig.resolver) === null || _defaultConfig_resolver2 === void 0 ? void 0 : _defaultConfig_resolver2.resolveRequest) || context.resolveRequest;\n if (excludeModules && excludeModules.length > 0) {\n if (micromatch.isMatch(moduleName, excludeModules)) {\n return origResolveRequestFn(context, \"@vxrn/vite-plugin-metro/empty\", platform);\n }\n }\n if (moduleName.startsWith(\"@babel/runtime\")) {\n var contextOverride = {\n ...context,\n unstable_conditionNames: context.unstable_conditionNames.filter(function(c) {\n return c !== \"import\";\n })\n };\n return origResolveRequestFn(contextOverride, moduleName, platform);\n }\n return origResolveRequestFn(context, moduleName, platform);\n }\n },\n transformer: {\n ..._defaultConfig === null || _defaultConfig === void 0 ? void 0 : _defaultConfig.transformer,\n babelTransformerPath: projectResolve(projectRoot, \"@vxrn/vite-plugin-metro/babel-transformer\")\n },\n // transformerPath is a TOP-LEVEL metro config key, not a transformer option.\n // nesting it under transformer silently leaves metro on its default worker.\n ...nativeWorkerPath ? {\n transformerPath: nativeWorkerPath\n } : {},\n reporter: await getTerminalReporter(projectRoot)\n };\n var metroConfig = await loadConfig({\n cwd: projectRoot,\n projectRoot,\n \"reset-cache\": !!process.env.METRO_RESET_CACHE,\n ...argv\n }, {\n ...defaultConfig,\n ...typeof defaultConfigOverrides === \"function\" ? defaultConfigOverrides(defaultConfig) : defaultConfigOverrides\n });\n return {\n ...enforceBareMainModuleEntry(metroConfig, mainModuleName),\n ...extraConfig\n };\n}\nexport {\n buildMetroConfigInputFromViteConfig,\n getMetroConfigFromViteConfig\n};\n//# sourceMappingURL=getMetroConfigFromViteConfig.js.map\n"],"mappings":"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"}