@vxrn/vite-plugin-metro 2.0.0-beta.51.1 → 2.0.0-beta.56.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 (142) 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/index.cjs +0 -2
  6. package/dist/cjs/index.native.cjs +0 -2
  7. package/dist/cjs/index.native.js +0 -2
  8. package/dist/cjs/index.native.js.map +1 -1
  9. package/dist/cjs/metro-config/getMetroBabelConfigFromViteConfig.cjs +10 -15
  10. package/dist/cjs/metro-config/getMetroBabelConfigFromViteConfig.native.cjs +27 -48
  11. package/dist/cjs/metro-config/getMetroBabelConfigFromViteConfig.native.js +27 -48
  12. package/dist/cjs/metro-config/getMetroBabelConfigFromViteConfig.native.js.map +1 -1
  13. package/dist/cjs/metro-config/getMetroConfigFromViteConfig.cjs +71 -38
  14. package/dist/cjs/metro-config/getMetroConfigFromViteConfig.native.cjs +86 -42
  15. package/dist/cjs/metro-config/getMetroConfigFromViteConfig.native.js +86 -42
  16. package/dist/cjs/metro-config/getMetroConfigFromViteConfig.native.js.map +1 -1
  17. package/dist/cjs/transformer/babel-transformer.cjs +53 -4
  18. package/dist/cjs/transformer/babel-transformer.native.cjs +65 -6
  19. package/dist/cjs/transformer/babel-transformer.native.js +65 -6
  20. package/dist/cjs/transformer/babel-transformer.native.js.map +1 -1
  21. package/dist/cjs/transformer/expoVirtualEnv.cjs +92 -0
  22. package/dist/cjs/transformer/expoVirtualEnv.native.cjs +113 -0
  23. package/dist/cjs/transformer/expoVirtualEnv.native.js +115 -0
  24. package/dist/cjs/transformer/expoVirtualEnv.native.js.map +1 -0
  25. package/dist/cjs/transformer/loadBabelConfig.cjs +1 -1
  26. package/dist/cjs/transformer/loadBabelConfig.native.cjs +1 -1
  27. package/dist/cjs/transformer/loadBabelConfig.native.js +1 -1
  28. package/dist/cjs/transformer/loadBabelConfig.native.js.map +1 -1
  29. package/dist/cjs/transformer/metroNativeWorker.cjs +20 -29
  30. package/dist/cjs/transformer/metroNativeWorker.native.cjs +24 -30
  31. package/dist/cjs/transformer/metroNativeWorker.native.js +24 -30
  32. package/dist/cjs/transformer/metroNativeWorker.native.js.map +1 -1
  33. package/dist/cjs/transformer/transformSync.cjs +3 -3
  34. package/dist/cjs/transformer/transformSync.native.cjs +3 -3
  35. package/dist/cjs/transformer/transformSync.native.js +3 -3
  36. package/dist/cjs/transformer/transformSync.native.js.map +1 -1
  37. package/dist/cjs/utils/exit.cjs +1 -1
  38. package/dist/cjs/utils/exit.native.cjs +1 -1
  39. package/dist/cjs/utils/exit.native.js +1 -1
  40. package/dist/cjs/utils/exit.native.js.map +1 -1
  41. package/dist/esm/env/platformEnv.mjs +2 -0
  42. package/dist/esm/env/platformEnv.mjs.map +1 -1
  43. package/dist/esm/env/platformEnv.native.js +2 -0
  44. package/dist/esm/env/platformEnv.native.js.map +1 -1
  45. package/dist/esm/index.js +1 -2
  46. package/dist/esm/index.mjs +1 -2
  47. package/dist/esm/index.native.js +1 -2
  48. package/dist/esm/metro-config/getMetroBabelConfigFromViteConfig.mjs +11 -15
  49. package/dist/esm/metro-config/getMetroBabelConfigFromViteConfig.mjs.map +1 -1
  50. package/dist/esm/metro-config/getMetroBabelConfigFromViteConfig.native.js +28 -48
  51. package/dist/esm/metro-config/getMetroBabelConfigFromViteConfig.native.js.map +1 -1
  52. package/dist/esm/metro-config/getMetroConfigFromViteConfig.mjs +71 -38
  53. package/dist/esm/metro-config/getMetroConfigFromViteConfig.mjs.map +1 -1
  54. package/dist/esm/metro-config/getMetroConfigFromViteConfig.native.js +86 -42
  55. package/dist/esm/metro-config/getMetroConfigFromViteConfig.native.js.map +1 -1
  56. package/dist/esm/transformer/babel-transformer.mjs +133 -96
  57. package/dist/esm/transformer/babel-transformer.mjs.map +1 -1
  58. package/dist/esm/transformer/babel-transformer.native.js +147 -103
  59. package/dist/esm/transformer/babel-transformer.native.js.map +1 -1
  60. package/dist/esm/transformer/expoVirtualEnv.mjs +67 -0
  61. package/dist/esm/transformer/expoVirtualEnv.mjs.map +1 -0
  62. package/dist/esm/transformer/expoVirtualEnv.native.js +86 -0
  63. package/dist/esm/transformer/expoVirtualEnv.native.js.map +1 -0
  64. package/dist/esm/transformer/loadBabelConfig.mjs +1 -1
  65. package/dist/esm/transformer/loadBabelConfig.mjs.map +1 -1
  66. package/dist/esm/transformer/loadBabelConfig.native.js +1 -1
  67. package/dist/esm/transformer/loadBabelConfig.native.js.map +1 -1
  68. package/dist/esm/transformer/metroNativeWorker.mjs +20 -29
  69. package/dist/esm/transformer/metroNativeWorker.mjs.map +1 -1
  70. package/dist/esm/transformer/metroNativeWorker.native.js +24 -30
  71. package/dist/esm/transformer/metroNativeWorker.native.js.map +1 -1
  72. package/dist/esm/transformer/transformSync.mjs +3 -3
  73. package/dist/esm/transformer/transformSync.mjs.map +1 -1
  74. package/dist/esm/transformer/transformSync.native.js +3 -3
  75. package/dist/esm/transformer/transformSync.native.js.map +1 -1
  76. package/dist/esm/utils/exit.mjs +1 -1
  77. package/dist/esm/utils/exit.mjs.map +1 -1
  78. package/dist/esm/utils/exit.native.js +1 -1
  79. package/dist/esm/utils/exit.native.js.map +1 -1
  80. package/package.json +7 -9
  81. package/src/babel-plugins/import-meta-env-plugin.ts +1 -1
  82. package/src/env/platformEnv.test.ts +12 -2
  83. package/src/env/platformEnv.ts +3 -0
  84. package/src/index.ts +0 -2
  85. package/src/metro-config/getMetroBabelConfigFromViteConfig.test.ts +19 -25
  86. package/src/metro-config/getMetroBabelConfigFromViteConfig.ts +8 -27
  87. package/src/metro-config/getMetroConfigFromViteConfig.test.ts +60 -0
  88. package/src/metro-config/getMetroConfigFromViteConfig.ts +119 -96
  89. package/src/plugins/metroPlugin.ts +3 -6
  90. package/src/transformer/babel-transformer.test.ts +118 -0
  91. package/src/transformer/babel-transformer.ts +82 -15
  92. package/src/transformer/expoVirtualEnv.integration.test.ts +106 -0
  93. package/src/transformer/expoVirtualEnv.test.ts +72 -0
  94. package/src/transformer/expoVirtualEnv.ts +115 -0
  95. package/src/transformer/loadBabelConfig.ts +1 -1
  96. package/src/transformer/metroNativeWorker.test.ts +134 -17
  97. package/src/transformer/metroNativeWorker.ts +43 -51
  98. package/src/transformer/transformSync.test.ts +22 -0
  99. package/src/transformer/transformSync.ts +4 -4
  100. package/src/utils/exit.ts +2 -2
  101. package/src/utils/getTerminalReporter.ts +1 -1
  102. package/src/utils/projectImport.ts +2 -2
  103. package/types/babel-plugins/import-meta-env-plugin.d.ts +1 -1
  104. package/types/env/platformEnv.d.ts +1 -0
  105. package/types/env/platformEnv.d.ts.map +1 -1
  106. package/types/index.d.ts +0 -2
  107. package/types/index.d.ts.map +1 -1
  108. package/types/metro-config/getMetroBabelConfigFromViteConfig.d.ts +1 -1
  109. package/types/metro-config/getMetroBabelConfigFromViteConfig.d.ts.map +1 -1
  110. package/types/metro-config/getMetroConfigFromViteConfig.d.ts +2 -2
  111. package/types/metro-config/getMetroConfigFromViteConfig.d.ts.map +1 -1
  112. package/types/plugins/metroPlugin.d.ts +2 -4
  113. package/types/plugins/metroPlugin.d.ts.map +1 -1
  114. package/types/transformer/babel-transformer.d.ts +10 -1
  115. package/types/transformer/babel-transformer.d.ts.map +1 -1
  116. package/types/transformer/expoVirtualEnv.d.ts +8 -0
  117. package/types/transformer/expoVirtualEnv.d.ts.map +1 -0
  118. package/types/transformer/metroNativeWorker.d.ts +3 -5
  119. package/types/transformer/metroNativeWorker.d.ts.map +1 -1
  120. package/types/utils/projectImport.d.ts +2 -2
  121. package/dist/cjs/plugins/expoManifestRequestHandlerPlugin.cjs +0 -59
  122. package/dist/cjs/plugins/expoManifestRequestHandlerPlugin.native.cjs +0 -62
  123. package/dist/cjs/plugins/expoManifestRequestHandlerPlugin.native.js +0 -64
  124. package/dist/cjs/plugins/expoManifestRequestHandlerPlugin.native.js.map +0 -1
  125. package/dist/cjs/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.cjs +0 -35
  126. package/dist/cjs/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.native.cjs +0 -37
  127. package/dist/cjs/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.native.js +0 -39
  128. package/dist/cjs/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.native.js.map +0 -1
  129. package/dist/esm/plugins/expoManifestRequestHandlerPlugin.mjs +0 -40
  130. package/dist/esm/plugins/expoManifestRequestHandlerPlugin.mjs.map +0 -1
  131. package/dist/esm/plugins/expoManifestRequestHandlerPlugin.native.js +0 -41
  132. package/dist/esm/plugins/expoManifestRequestHandlerPlugin.native.js.map +0 -1
  133. package/dist/esm/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.mjs +0 -15
  134. package/dist/esm/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.mjs.map +0 -1
  135. package/dist/esm/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.native.js +0 -15
  136. package/dist/esm/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.native.js.map +0 -1
  137. package/src/plugins/expoManifestRequestHandlerPlugin.ts +0 -88
  138. package/src/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.ts +0 -28
  139. package/types/plugins/expoManifestRequestHandlerPlugin.d.ts +0 -14
  140. package/types/plugins/expoManifestRequestHandlerPlugin.d.ts.map +0 -1
  141. package/types/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.d.ts +0 -5
  142. package/types/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.d.ts.map +0 -1
@@ -61,6 +61,8 @@ var import_magic_string = __toESM(require("magic-string"), 1);
61
61
  var import_remapping = __toESM(require("@jridgewell/remapping"), 1);
62
62
  var import_trace_mapping = require("@jridgewell/trace-mapping");
63
63
  var import_compiler = require("@vxrn/compiler");
64
+ var import_publicEnv = require("@vxrn/utils/publicEnv");
65
+ var import_expoVirtualEnv = require("./expoVirtualEnv.cjs");
64
66
  var import_platformEnv = require("../env/platformEnv.cjs");
65
67
  function collectModuleLiteralBindings(program) {
66
68
  const reassigned = /* @__PURE__ */ new Set();
@@ -293,6 +295,11 @@ function applyInlineEnvVars(code, filename, isProduction, env = {}) {
293
295
  throw new Error(`[vxrn/metro] Failed to parse ${filename} for env inlining: ${parsed.errors[0].message}`);
294
296
  }
295
297
  if (!parsed?.program) return code;
298
+ const processPublicEnv = Object.fromEntries(Object.entries(process.env).filter(([key]) => key.startsWith("ONE_PUBLIC_") || key.startsWith("EXPO_PUBLIC_")));
299
+ const effectiveEnv = (0, import_publicEnv.withExpoPublicEnvAliases)({
300
+ ...processPublicEnv,
301
+ ...env
302
+ });
296
303
  const ms = new import_magic_string.default(code);
297
304
  const edits = [];
298
305
  const known = /* @__PURE__ */ new Map();
@@ -325,27 +332,24 @@ function applyInlineEnvVars(code, filename, isProduction, env = {}) {
325
332
  replace(node, process.env.ONE_SERVER_URL || "");
326
333
  return;
327
334
  }
328
- if (isProcessEnv && !isAssignmentTarget && key?.startsWith("EXPO_PUBLIC_")) {
329
- throw new Error(`[vxrn/metro] ${key} uses the removed expo prefix. rename it to ONE_PUBLIC_*`);
330
- }
331
- if (isProcessEnv && !isAssignmentTarget && key?.startsWith("ONE_PUBLIC_")) {
332
- replace(node, env[key] ?? process.env[key] ?? void 0);
335
+ if (isProcessEnv && !isAssignmentTarget && (key?.startsWith("ONE_PUBLIC_") || key?.startsWith("EXPO_PUBLIC_"))) {
336
+ replace(node, effectiveEnv[key] ?? void 0);
333
337
  return;
334
338
  }
335
339
  if (!isAssignmentTarget && isMember && isImportMeta(obj.object) && keyOf(obj.property, obj.computed) === "env" && key !== void 0) {
336
- replace(node, env[key]);
340
+ replace(node, effectiveEnv[key]);
337
341
  return;
338
342
  }
339
343
  if (!isAssignmentTarget && isImportMeta(obj) && key === "env") {
340
344
  edits.push({
341
345
  start: node.start,
342
346
  end: node.end,
343
- text: JSON.stringify(env)
347
+ text: JSON.stringify(effectiveEnv)
344
348
  });
345
349
  return;
346
350
  }
347
- if (isProcessEnv && !isAssignmentTarget && key !== void 0 && key in env) {
348
- replace(node, env[key]);
351
+ if (isProcessEnv && !isAssignmentTarget && key !== void 0 && key in effectiveEnv) {
352
+ replace(node, effectiveEnv[key]);
349
353
  return;
350
354
  }
351
355
  }
@@ -1131,26 +1135,13 @@ async function configureWorkletsForWorker(projectRoot) {
1131
1135
  async function transform(config, projectRoot, filename, data, options) {
1132
1136
  assertNoUnportedBabelPlugins(options);
1133
1137
  let sourceCode = typeof data === "string" ? data : data.toString("utf8");
1134
- const environment = options.customTransformOptions?.environment;
1135
- const isClientEnvironment = environment !== "node" && environment !== "react-server";
1136
- if (isClientEnvironment && /[\\/]expo[\\/]virtual[\\/]env\.js$/.test(filename)) {
1137
- if (options.dev) {
1138
- const rel = import_node_path.default.relative(import_node_path.default.dirname(filename), projectRoot).split(import_node_path.default.sep).join("/");
1139
- sourceCode = `const dotEnvModules = require.context(${JSON.stringify(rel)},false,/^\\.\\/\\.env/);
1140
- export const env = !dotEnvModules.keys().length ? process.env : { ...process.env, ...['.env', '.env.development', '.env.local', '.env.development.local'].reduce((acc, file) => {
1141
- return { ...acc, ...(dotEnvModules(file)?.default ?? {}) };
1142
- }, {}) };`;
1143
- } else {
1144
- sourceCode = `export const env = new Proxy({}, {
1145
- get(target, key) {
1146
- throw new Error(\`Attempting to access internal environment variable "\${String(key)}" is not supported in production bundles.\`);
1147
- },
1148
- });`;
1149
- }
1150
- } else if (/(^|[\\/])\.env(\.(local|(development|production)(\.local)?))?$/.test(filename)) {
1151
- const { parseEnvFile } = await import("@expo/metro-config/build/transform-worker/dot-env-development");
1152
- sourceCode = `export default ${JSON.stringify(parseEnvFile(sourceCode, isClientEnvironment))};`;
1153
- }
1138
+ sourceCode = (0, import_expoVirtualEnv.substituteExpoVirtualEnvSource)({
1139
+ filename,
1140
+ src: sourceCode,
1141
+ projectRoot,
1142
+ dev: options.dev,
1143
+ environment: options.customTransformOptions?.environment
1144
+ });
1154
1145
  checkReservedStrings(sourceCode, config, options);
1155
1146
  if (filename.endsWith(".json")) {
1156
1147
  try {
@@ -63,6 +63,8 @@ var import_magic_string = __toESM(require("magic-string"), 1);
63
63
  var import_remapping = __toESM(require("@jridgewell/remapping"), 1);
64
64
  var import_trace_mapping = require("@jridgewell/trace-mapping");
65
65
  var import_compiler = require("@vxrn/compiler");
66
+ var import_publicEnv = require("@vxrn/utils/publicEnv");
67
+ var import_expoVirtualEnv = require("./expoVirtualEnv.native.js");
66
68
  var import_platformEnv = require("../env/platformEnv.native.js");
67
69
  function _class_call_check(instance, Constructor) {
68
70
  if (!(instance instanceof Constructor)) {
@@ -580,6 +582,14 @@ function applyInlineEnvVars(code, filename, isProduction) {
580
582
  throw new Error(`[vxrn/metro] Failed to parse ${filename} for env inlining: ${parsed.errors[0].message}`);
581
583
  }
582
584
  if (!(parsed === null || parsed === void 0 ? void 0 : parsed.program)) return code;
585
+ var processPublicEnv = Object.fromEntries(Object.entries(process.env).filter(function(param) {
586
+ var [key] = param;
587
+ return key.startsWith("ONE_PUBLIC_") || key.startsWith("EXPO_PUBLIC_");
588
+ }));
589
+ var effectiveEnv = (0, import_publicEnv.withExpoPublicEnvAliases)({
590
+ ...processPublicEnv,
591
+ ...env
592
+ });
583
593
  var ms = new import_magic_string.default(code);
584
594
  var edits = [];
585
595
  var known = /* @__PURE__ */ new Map();
@@ -614,28 +624,25 @@ function applyInlineEnvVars(code, filename, isProduction) {
614
624
  replace(node, process.env.ONE_SERVER_URL || "");
615
625
  return;
616
626
  }
617
- if (isProcessEnv && !isAssignmentTarget && (key === null || key === void 0 ? void 0 : key.startsWith("EXPO_PUBLIC_"))) {
618
- throw new Error(`[vxrn/metro] ${key} uses the removed expo prefix. rename it to ONE_PUBLIC_*`);
619
- }
620
- if (isProcessEnv && !isAssignmentTarget && (key === null || key === void 0 ? void 0 : key.startsWith("ONE_PUBLIC_"))) {
621
- var _ref, _env_key;
622
- replace(node, (_ref = (_env_key = env[key]) !== null && _env_key !== void 0 ? _env_key : process.env[key]) !== null && _ref !== void 0 ? _ref : void 0);
627
+ if (isProcessEnv && !isAssignmentTarget && ((key === null || key === void 0 ? void 0 : key.startsWith("ONE_PUBLIC_")) || (key === null || key === void 0 ? void 0 : key.startsWith("EXPO_PUBLIC_")))) {
628
+ var _effectiveEnv_key;
629
+ replace(node, (_effectiveEnv_key = effectiveEnv[key]) !== null && _effectiveEnv_key !== void 0 ? _effectiveEnv_key : void 0);
623
630
  return;
624
631
  }
625
632
  if (!isAssignmentTarget && isMember && isImportMeta(obj.object) && keyOf(obj.property, obj.computed) === "env" && key !== void 0) {
626
- replace(node, env[key]);
633
+ replace(node, effectiveEnv[key]);
627
634
  return;
628
635
  }
629
636
  if (!isAssignmentTarget && isImportMeta(obj) && key === "env") {
630
637
  edits.push({
631
638
  start: node.start,
632
639
  end: node.end,
633
- text: JSON.stringify(env)
640
+ text: JSON.stringify(effectiveEnv)
634
641
  });
635
642
  return;
636
643
  }
637
- if (isProcessEnv && !isAssignmentTarget && key !== void 0 && key in env) {
638
- replace(node, env[key]);
644
+ if (isProcessEnv && !isAssignmentTarget && key !== void 0 && key in effectiveEnv) {
645
+ replace(node, effectiveEnv[key]);
639
646
  return;
640
647
  }
641
648
  }
@@ -2034,26 +2041,13 @@ async function transform(config, projectRoot, filename, data, options) {
2034
2041
  var _options_customTransformOptions, _options_customTransformOptions1, _options_customTransformOptions2, _oxcRes_errors;
2035
2042
  assertNoUnportedBabelPlugins(options);
2036
2043
  var sourceCode = typeof data === "string" ? data : data.toString("utf8");
2037
- var environment = (_options_customTransformOptions = options.customTransformOptions) === null || _options_customTransformOptions === void 0 ? void 0 : _options_customTransformOptions.environment;
2038
- var isClientEnvironment = environment !== "node" && environment !== "react-server";
2039
- if (isClientEnvironment && /[\\/]expo[\\/]virtual[\\/]env\.js$/.test(filename)) {
2040
- if (options.dev) {
2041
- var rel = import_path.default.relative(import_path.default.dirname(filename), projectRoot).split(import_path.default.sep).join("/");
2042
- sourceCode = `const dotEnvModules = require.context(${JSON.stringify(rel)},false,/^\\.\\/\\.env/);
2043
- export const env = !dotEnvModules.keys().length ? process.env : { ...process.env, ...['.env', '.env.development', '.env.local', '.env.development.local'].reduce((acc, file) => {
2044
- return { ...acc, ...(dotEnvModules(file)?.default ?? {}) };
2045
- }, {}) };`;
2046
- } else {
2047
- sourceCode = `export const env = new Proxy({}, {
2048
- get(target, key) {
2049
- throw new Error(\`Attempting to access internal environment variable "\${String(key)}" is not supported in production bundles.\`);
2050
- },
2051
- });`;
2052
- }
2053
- } else if (/(^|[\\/])\.env(\.(local|(development|production)(\.local)?))?$/.test(filename)) {
2054
- var { parseEnvFile } = await import("@expo/metro-config/build/transform-worker/dot-env-development");
2055
- sourceCode = `export default ${JSON.stringify(parseEnvFile(sourceCode, isClientEnvironment))};`;
2056
- }
2044
+ sourceCode = (0, import_expoVirtualEnv.substituteExpoVirtualEnvSource)({
2045
+ filename,
2046
+ src: sourceCode,
2047
+ projectRoot,
2048
+ dev: options.dev,
2049
+ environment: (_options_customTransformOptions = options.customTransformOptions) === null || _options_customTransformOptions === void 0 ? void 0 : _options_customTransformOptions.environment
2050
+ });
2057
2051
  checkReservedStrings(sourceCode, config, options);
2058
2052
  if (filename.endsWith(".json")) {
2059
2053
  try {
@@ -63,6 +63,8 @@ var import_magic_string = __toESM(require("magic-string"), 1);
63
63
  var import_remapping = __toESM(require("@jridgewell/remapping"), 1);
64
64
  var import_trace_mapping = require("@jridgewell/trace-mapping");
65
65
  var import_compiler = require("@vxrn/compiler");
66
+ var import_publicEnv = require("@vxrn/utils/publicEnv");
67
+ var import_expoVirtualEnv = require("./expoVirtualEnv.native.js");
66
68
  var import_platformEnv = require("../env/platformEnv.native.js");
67
69
  function _class_call_check(instance, Constructor) {
68
70
  if (!(instance instanceof Constructor)) {
@@ -580,6 +582,14 @@ function applyInlineEnvVars(code, filename, isProduction) {
580
582
  throw new Error(`[vxrn/metro] Failed to parse ${filename} for env inlining: ${parsed.errors[0].message}`);
581
583
  }
582
584
  if (!(parsed === null || parsed === void 0 ? void 0 : parsed.program)) return code;
585
+ var processPublicEnv = Object.fromEntries(Object.entries(process.env).filter(function(param) {
586
+ var [key] = param;
587
+ return key.startsWith("ONE_PUBLIC_") || key.startsWith("EXPO_PUBLIC_");
588
+ }));
589
+ var effectiveEnv = (0, import_publicEnv.withExpoPublicEnvAliases)({
590
+ ...processPublicEnv,
591
+ ...env
592
+ });
583
593
  var ms = new import_magic_string.default(code);
584
594
  var edits = [];
585
595
  var known = /* @__PURE__ */ new Map();
@@ -614,28 +624,25 @@ function applyInlineEnvVars(code, filename, isProduction) {
614
624
  replace(node, process.env.ONE_SERVER_URL || "");
615
625
  return;
616
626
  }
617
- if (isProcessEnv && !isAssignmentTarget && (key === null || key === void 0 ? void 0 : key.startsWith("EXPO_PUBLIC_"))) {
618
- throw new Error(`[vxrn/metro] ${key} uses the removed expo prefix. rename it to ONE_PUBLIC_*`);
619
- }
620
- if (isProcessEnv && !isAssignmentTarget && (key === null || key === void 0 ? void 0 : key.startsWith("ONE_PUBLIC_"))) {
621
- var _ref, _env_key;
622
- replace(node, (_ref = (_env_key = env[key]) !== null && _env_key !== void 0 ? _env_key : process.env[key]) !== null && _ref !== void 0 ? _ref : void 0);
627
+ if (isProcessEnv && !isAssignmentTarget && ((key === null || key === void 0 ? void 0 : key.startsWith("ONE_PUBLIC_")) || (key === null || key === void 0 ? void 0 : key.startsWith("EXPO_PUBLIC_")))) {
628
+ var _effectiveEnv_key;
629
+ replace(node, (_effectiveEnv_key = effectiveEnv[key]) !== null && _effectiveEnv_key !== void 0 ? _effectiveEnv_key : void 0);
623
630
  return;
624
631
  }
625
632
  if (!isAssignmentTarget && isMember && isImportMeta(obj.object) && keyOf(obj.property, obj.computed) === "env" && key !== void 0) {
626
- replace(node, env[key]);
633
+ replace(node, effectiveEnv[key]);
627
634
  return;
628
635
  }
629
636
  if (!isAssignmentTarget && isImportMeta(obj) && key === "env") {
630
637
  edits.push({
631
638
  start: node.start,
632
639
  end: node.end,
633
- text: JSON.stringify(env)
640
+ text: JSON.stringify(effectiveEnv)
634
641
  });
635
642
  return;
636
643
  }
637
- if (isProcessEnv && !isAssignmentTarget && key !== void 0 && key in env) {
638
- replace(node, env[key]);
644
+ if (isProcessEnv && !isAssignmentTarget && key !== void 0 && key in effectiveEnv) {
645
+ replace(node, effectiveEnv[key]);
639
646
  return;
640
647
  }
641
648
  }
@@ -2034,26 +2041,13 @@ async function transform(config, projectRoot, filename, data, options) {
2034
2041
  var _options_customTransformOptions, _options_customTransformOptions1, _options_customTransformOptions2, _oxcRes_errors;
2035
2042
  assertNoUnportedBabelPlugins(options);
2036
2043
  var sourceCode = typeof data === "string" ? data : data.toString("utf8");
2037
- var environment = (_options_customTransformOptions = options.customTransformOptions) === null || _options_customTransformOptions === void 0 ? void 0 : _options_customTransformOptions.environment;
2038
- var isClientEnvironment = environment !== "node" && environment !== "react-server";
2039
- if (isClientEnvironment && /[\\/]expo[\\/]virtual[\\/]env\.js$/.test(filename)) {
2040
- if (options.dev) {
2041
- var rel = import_path.default.relative(import_path.default.dirname(filename), projectRoot).split(import_path.default.sep).join("/");
2042
- sourceCode = `const dotEnvModules = require.context(${JSON.stringify(rel)},false,/^\\.\\/\\.env/);
2043
- export const env = !dotEnvModules.keys().length ? process.env : { ...process.env, ...['.env', '.env.development', '.env.local', '.env.development.local'].reduce((acc, file) => {
2044
- return { ...acc, ...(dotEnvModules(file)?.default ?? {}) };
2045
- }, {}) };`;
2046
- } else {
2047
- sourceCode = `export const env = new Proxy({}, {
2048
- get(target, key) {
2049
- throw new Error(\`Attempting to access internal environment variable "\${String(key)}" is not supported in production bundles.\`);
2050
- },
2051
- });`;
2052
- }
2053
- } else if (/(^|[\\/])\.env(\.(local|(development|production)(\.local)?))?$/.test(filename)) {
2054
- var { parseEnvFile } = await import("@expo/metro-config/build/transform-worker/dot-env-development");
2055
- sourceCode = `export default ${JSON.stringify(parseEnvFile(sourceCode, isClientEnvironment))};`;
2056
- }
2044
+ sourceCode = (0, import_expoVirtualEnv.substituteExpoVirtualEnvSource)({
2045
+ filename,
2046
+ src: sourceCode,
2047
+ projectRoot,
2048
+ dev: options.dev,
2049
+ environment: (_options_customTransformOptions = options.customTransformOptions) === null || _options_customTransformOptions === void 0 ? void 0 : _options_customTransformOptions.environment
2050
+ });
2057
2051
  checkReservedStrings(sourceCode, config, options);
2058
2052
  if (filename.endsWith(".json")) {
2059
2053
  try {