@vxrn/vite-plugin-metro 2.0.0-beta.53.1 → 2.0.0-beta.57.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 (115) hide show
  1. package/dist/cjs/index.cjs +0 -2
  2. package/dist/cjs/index.native.cjs +0 -2
  3. package/dist/cjs/index.native.js +0 -2
  4. package/dist/cjs/index.native.js.map +1 -1
  5. package/dist/cjs/metro-config/getMetroConfigFromViteConfig.cjs +48 -38
  6. package/dist/cjs/metro-config/getMetroConfigFromViteConfig.native.cjs +62 -42
  7. package/dist/cjs/metro-config/getMetroConfigFromViteConfig.native.js +62 -42
  8. package/dist/cjs/metro-config/getMetroConfigFromViteConfig.native.js.map +1 -1
  9. package/dist/cjs/transformer/babel-transformer.cjs +53 -4
  10. package/dist/cjs/transformer/babel-transformer.native.cjs +65 -6
  11. package/dist/cjs/transformer/babel-transformer.native.js +65 -6
  12. package/dist/cjs/transformer/babel-transformer.native.js.map +1 -1
  13. package/dist/cjs/transformer/expoVirtualEnv.cjs +92 -0
  14. package/dist/cjs/transformer/expoVirtualEnv.native.cjs +113 -0
  15. package/dist/cjs/transformer/expoVirtualEnv.native.js +115 -0
  16. package/dist/cjs/transformer/expoVirtualEnv.native.js.map +1 -0
  17. package/dist/cjs/transformer/loadBabelConfig.cjs +1 -1
  18. package/dist/cjs/transformer/loadBabelConfig.native.cjs +1 -1
  19. package/dist/cjs/transformer/loadBabelConfig.native.js +1 -1
  20. package/dist/cjs/transformer/loadBabelConfig.native.js.map +1 -1
  21. package/dist/cjs/transformer/metroNativeWorker.cjs +8 -20
  22. package/dist/cjs/transformer/metroNativeWorker.native.cjs +8 -20
  23. package/dist/cjs/transformer/metroNativeWorker.native.js +8 -20
  24. package/dist/cjs/transformer/metroNativeWorker.native.js.map +1 -1
  25. package/dist/cjs/transformer/transformSync.cjs +3 -3
  26. package/dist/cjs/transformer/transformSync.native.cjs +3 -3
  27. package/dist/cjs/transformer/transformSync.native.js +3 -3
  28. package/dist/cjs/transformer/transformSync.native.js.map +1 -1
  29. package/dist/cjs/utils/exit.cjs +1 -1
  30. package/dist/cjs/utils/exit.native.cjs +1 -1
  31. package/dist/cjs/utils/exit.native.js +1 -1
  32. package/dist/cjs/utils/exit.native.js.map +1 -1
  33. package/dist/esm/index.js +1 -2
  34. package/dist/esm/index.mjs +1 -2
  35. package/dist/esm/index.native.js +1 -2
  36. package/dist/esm/metro-config/getMetroConfigFromViteConfig.mjs +48 -38
  37. package/dist/esm/metro-config/getMetroConfigFromViteConfig.mjs.map +1 -1
  38. package/dist/esm/metro-config/getMetroConfigFromViteConfig.native.js +62 -42
  39. package/dist/esm/metro-config/getMetroConfigFromViteConfig.native.js.map +1 -1
  40. package/dist/esm/transformer/babel-transformer.mjs +133 -96
  41. package/dist/esm/transformer/babel-transformer.mjs.map +1 -1
  42. package/dist/esm/transformer/babel-transformer.native.js +147 -103
  43. package/dist/esm/transformer/babel-transformer.native.js.map +1 -1
  44. package/dist/esm/transformer/expoVirtualEnv.mjs +67 -0
  45. package/dist/esm/transformer/expoVirtualEnv.mjs.map +1 -0
  46. package/dist/esm/transformer/expoVirtualEnv.native.js +86 -0
  47. package/dist/esm/transformer/expoVirtualEnv.native.js.map +1 -0
  48. package/dist/esm/transformer/loadBabelConfig.mjs +1 -1
  49. package/dist/esm/transformer/loadBabelConfig.mjs.map +1 -1
  50. package/dist/esm/transformer/loadBabelConfig.native.js +1 -1
  51. package/dist/esm/transformer/loadBabelConfig.native.js.map +1 -1
  52. package/dist/esm/transformer/metroNativeWorker.mjs +8 -20
  53. package/dist/esm/transformer/metroNativeWorker.mjs.map +1 -1
  54. package/dist/esm/transformer/metroNativeWorker.native.js +8 -20
  55. package/dist/esm/transformer/metroNativeWorker.native.js.map +1 -1
  56. package/dist/esm/transformer/transformSync.mjs +3 -3
  57. package/dist/esm/transformer/transformSync.mjs.map +1 -1
  58. package/dist/esm/transformer/transformSync.native.js +3 -3
  59. package/dist/esm/transformer/transformSync.native.js.map +1 -1
  60. package/dist/esm/utils/exit.mjs +1 -1
  61. package/dist/esm/utils/exit.mjs.map +1 -1
  62. package/dist/esm/utils/exit.native.js +1 -1
  63. package/dist/esm/utils/exit.native.js.map +1 -1
  64. package/package.json +7 -9
  65. package/src/index.ts +0 -2
  66. package/src/metro-config/getMetroConfigFromViteConfig.test.ts +5 -0
  67. package/src/metro-config/getMetroConfigFromViteConfig.ts +81 -96
  68. package/src/plugins/metroPlugin.ts +3 -6
  69. package/src/transformer/babel-transformer.test.ts +118 -0
  70. package/src/transformer/babel-transformer.ts +82 -15
  71. package/src/transformer/expoVirtualEnv.integration.test.ts +106 -0
  72. package/src/transformer/expoVirtualEnv.test.ts +72 -0
  73. package/src/transformer/expoVirtualEnv.ts +115 -0
  74. package/src/transformer/loadBabelConfig.ts +1 -1
  75. package/src/transformer/metroNativeWorker.test.ts +105 -1
  76. package/src/transformer/metroNativeWorker.ts +12 -33
  77. package/src/transformer/transformSync.test.ts +22 -0
  78. package/src/transformer/transformSync.ts +4 -4
  79. package/src/utils/exit.ts +2 -2
  80. package/src/utils/getTerminalReporter.ts +1 -1
  81. package/src/utils/projectImport.ts +2 -2
  82. package/types/index.d.ts +0 -2
  83. package/types/index.d.ts.map +1 -1
  84. package/types/metro-config/getMetroConfigFromViteConfig.d.ts +2 -2
  85. package/types/metro-config/getMetroConfigFromViteConfig.d.ts.map +1 -1
  86. package/types/plugins/metroPlugin.d.ts +2 -4
  87. package/types/plugins/metroPlugin.d.ts.map +1 -1
  88. package/types/transformer/babel-transformer.d.ts +10 -1
  89. package/types/transformer/babel-transformer.d.ts.map +1 -1
  90. package/types/transformer/expoVirtualEnv.d.ts +8 -0
  91. package/types/transformer/expoVirtualEnv.d.ts.map +1 -0
  92. package/types/transformer/metroNativeWorker.d.ts.map +1 -1
  93. package/types/utils/projectImport.d.ts +2 -2
  94. package/dist/cjs/plugins/expoManifestRequestHandlerPlugin.cjs +0 -59
  95. package/dist/cjs/plugins/expoManifestRequestHandlerPlugin.native.cjs +0 -62
  96. package/dist/cjs/plugins/expoManifestRequestHandlerPlugin.native.js +0 -64
  97. package/dist/cjs/plugins/expoManifestRequestHandlerPlugin.native.js.map +0 -1
  98. package/dist/cjs/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.cjs +0 -35
  99. package/dist/cjs/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.native.cjs +0 -37
  100. package/dist/cjs/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.native.js +0 -39
  101. package/dist/cjs/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.native.js.map +0 -1
  102. package/dist/esm/plugins/expoManifestRequestHandlerPlugin.mjs +0 -40
  103. package/dist/esm/plugins/expoManifestRequestHandlerPlugin.mjs.map +0 -1
  104. package/dist/esm/plugins/expoManifestRequestHandlerPlugin.native.js +0 -41
  105. package/dist/esm/plugins/expoManifestRequestHandlerPlugin.native.js.map +0 -1
  106. package/dist/esm/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.mjs +0 -15
  107. package/dist/esm/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.mjs.map +0 -1
  108. package/dist/esm/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.native.js +0 -15
  109. package/dist/esm/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.native.js.map +0 -1
  110. package/src/plugins/expoManifestRequestHandlerPlugin.ts +0 -88
  111. package/src/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.ts +0 -28
  112. package/types/plugins/expoManifestRequestHandlerPlugin.d.ts +0 -14
  113. package/types/plugins/expoManifestRequestHandlerPlugin.d.ts.map +0 -1
  114. package/types/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.d.ts +0 -5
  115. package/types/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.d.ts.map +0 -1
@@ -1,119 +1,163 @@
1
1
  import assert from "assert";
2
+ import { createHash } from "crypto";
3
+ import { readFileSync } from "fs";
4
+ import path from "path";
5
+ import { substituteExpoVirtualEnvSource } from "./expoVirtualEnv.native.js";
2
6
  import { loadBabelConfig } from "./loadBabelConfig.native.js";
3
7
  import { transformSync } from "./transformSync.native.js";
4
8
 
5
- var __commonJSMin = (cb, mod) => () => (mod || (cb((mod = { exports: {} }).exports, mod), cb = null), mod.exports);
6
-
7
- var require_babel_transformer_native = /* @__PURE__ */ __commonJSMin(((exports, module) => {
8
- var debug = require("debug")("expo:metro-config:babel-transformer");
9
- function isCustomTruthy(value) {
10
- return String(value) === "true";
11
- }
12
- function memoize(fn) {
13
- var cache = /* @__PURE__ */ new Map();
14
- return function() {
15
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
16
- args[_key] = arguments[_key];
17
- }
18
- var key = JSON.stringify(args);
19
- if (cache.has(key)) {
20
- return cache.get(key);
21
- }
22
- var result = fn(...args);
23
- cache.set(key, result);
24
- return result;
25
- };
9
+ var debug = require("debug")("vxrn:metro-config:babel-transformer");
10
+ function isCustomTruthy(value) {
11
+ return String(value) === "true";
12
+ }
13
+ function memoize(fn) {
14
+ var cache = /* @__PURE__ */ new Map();
15
+ return function() {
16
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
17
+ args[_key] = arguments[_key];
18
+ }
19
+ var key = JSON.stringify(args);
20
+ if (cache.has(key)) {
21
+ return cache.get(key);
22
+ }
23
+ var result = fn(...args);
24
+ cache.set(key, result);
25
+ return result;
26
+ };
27
+ }
28
+ var memoizeWarning = memoize(function(message) {
29
+ debug(message);
30
+ });
31
+ function getBabelCaller(param) {
32
+ var { filename, options, oneViteMetroBabelConfig } = param;
33
+ var _options_customTransformOptions, _options_customTransformOptions1, _options_customTransformOptions2, _options_customTransformOptions3, _options_customTransformOptions4, _options_customTransformOptions5, _options_customTransformOptions6, _options_customTransformOptions7, _options_customTransformOptions8;
34
+ var isNodeModule = filename.includes("node_modules");
35
+ var isReactServer = ((_options_customTransformOptions = options.customTransformOptions) === null || _options_customTransformOptions === void 0 ? void 0 : _options_customTransformOptions.environment) === "react-server";
36
+ var isGenericServer = ((_options_customTransformOptions1 = options.customTransformOptions) === null || _options_customTransformOptions1 === void 0 ? void 0 : _options_customTransformOptions1.environment) === "node";
37
+ var isServer = isReactServer || isGenericServer;
38
+ var routerRoot = typeof ((_options_customTransformOptions2 = options.customTransformOptions) === null || _options_customTransformOptions2 === void 0 ? void 0 : _options_customTransformOptions2.routerRoot) === "string" ? decodeURI(options.customTransformOptions.routerRoot) : void 0;
39
+ if (routerRoot == null) {
40
+ memoizeWarning("Warning: Missing transform.routerRoot option in Metro bundling request, falling back to `app` as routes directory.");
26
41
  }
27
- var memoizeWarning = memoize(function(message) {
28
- debug(message);
42
+ return {
43
+ name: "metro",
44
+ bundler: "metro",
45
+ platform: options.platform,
46
+ isServer,
47
+ isReactServer,
48
+ baseUrl: typeof ((_options_customTransformOptions3 = options.customTransformOptions) === null || _options_customTransformOptions3 === void 0 ? void 0 : _options_customTransformOptions3.baseUrl) === "string" ? decodeURI(options.customTransformOptions.baseUrl) : "",
49
+ routerRoot: routerRoot !== null && routerRoot !== void 0 ? routerRoot : "app",
50
+ isDev: options.dev,
51
+ preserveEnvVars: isCustomTruthy((_options_customTransformOptions4 = options.customTransformOptions) === null || _options_customTransformOptions4 === void 0 ? void 0 : _options_customTransformOptions4.preserveEnvVars) ? true : void 0,
52
+ asyncRoutes: isCustomTruthy((_options_customTransformOptions5 = options.customTransformOptions) === null || _options_customTransformOptions5 === void 0 ? void 0 : _options_customTransformOptions5.asyncRoutes) ? true : void 0,
53
+ engine: stringOrUndefined((_options_customTransformOptions6 = options.customTransformOptions) === null || _options_customTransformOptions6 === void 0 ? void 0 : _options_customTransformOptions6.engine),
54
+ projectRoot: options.projectRoot,
55
+ oneViteMetroBabelConfig,
56
+ isNodeModule,
57
+ isHMREnabled: options.dev,
58
+ supportsStaticESM: isCustomTruthy((_options_customTransformOptions7 = options.customTransformOptions) === null || _options_customTransformOptions7 === void 0 ? void 0 : _options_customTransformOptions7.optimize) || options.experimentalImportSupport,
59
+ supportsReactCompiler: isCustomTruthy((_options_customTransformOptions8 = options.customTransformOptions) === null || _options_customTransformOptions8 === void 0 ? void 0 : _options_customTransformOptions8.reactCompiler) ? true : void 0
60
+ };
61
+ }
62
+ function stringOrUndefined(value) {
63
+ return typeof value === "string" ? value : void 0;
64
+ }
65
+ var transform = function(param) {
66
+ var { filename, src: originalSrc, options, plugins } = param;
67
+ var _options_customTransformOptions, _options_customTransformOptions1;
68
+ var src = substituteExpoVirtualEnvSource({
69
+ filename,
70
+ src: originalSrc,
71
+ projectRoot: options.projectRoot,
72
+ dev: options.dev,
73
+ environment: (_options_customTransformOptions = options.customTransformOptions) === null || _options_customTransformOptions === void 0 ? void 0 : _options_customTransformOptions.environment
29
74
  });
30
- function getBabelCaller(param) {
31
- var { filename, options, oneViteMetroBabelConfig } = param;
32
- var _options_customTransformOptions, _options_customTransformOptions1, _options_customTransformOptions2, _options_customTransformOptions3, _options_customTransformOptions4, _options_customTransformOptions5, _options_customTransformOptions6, _options_customTransformOptions7, _options_customTransformOptions8;
33
- var isNodeModule = filename.includes("node_modules");
34
- var isReactServer = ((_options_customTransformOptions = options.customTransformOptions) === null || _options_customTransformOptions === void 0 ? void 0 : _options_customTransformOptions.environment) === "react-server";
35
- var isGenericServer = ((_options_customTransformOptions1 = options.customTransformOptions) === null || _options_customTransformOptions1 === void 0 ? void 0 : _options_customTransformOptions1.environment) === "node";
36
- var isServer = isReactServer || isGenericServer;
37
- var routerRoot = typeof ((_options_customTransformOptions2 = options.customTransformOptions) === null || _options_customTransformOptions2 === void 0 ? void 0 : _options_customTransformOptions2.routerRoot) === "string" ? decodeURI(options.customTransformOptions.routerRoot) : void 0;
38
- if (routerRoot == null) {
39
- memoizeWarning("Warning: Missing transform.routerRoot option in Metro bundling request, falling back to `app` as routes directory. This can occur if you bundle without Expo CLI or expo/metro-config.");
75
+ var viteCustomTransformOptions = (_options_customTransformOptions1 = options.customTransformOptions) === null || _options_customTransformOptions1 === void 0 ? void 0 : _options_customTransformOptions1.vite;
76
+ var customOptionsFromVite = (function() {
77
+ var c = viteCustomTransformOptions;
78
+ if (!c || typeof c !== "object") {
79
+ return { babelConfig: {} };
40
80
  }
81
+ return c;
82
+ })();
83
+ var hasOneViteMetroBabelConfig = customOptionsFromVite.oneViteMetroBabelConfig === true;
84
+ var babelConfigFromVitePlugin = customOptionsFromVite.babelConfig || {};
85
+ var OLD_BABEL_ENV = process.env.BABEL_ENV;
86
+ process.env.BABEL_ENV = options.dev ? "development" : process.env.BABEL_ENV || "production";
87
+ try {
88
+ var babelConfig = {
89
+ sourceType: "unambiguous",
90
+ ast: true,
91
+ code: false,
92
+ cloneInputAst: false,
93
+ cwd: options.projectRoot,
94
+ filename,
95
+ highlightCode: true,
96
+ ...babelConfigFromVitePlugin,
97
+ ...loadBabelConfig(options),
98
+ babelrc: typeof options.enableBabelRCLookup === "boolean" ? options.enableBabelRCLookup : true,
99
+ plugins: [...babelConfigFromVitePlugin.plugins || [], ...plugins],
100
+ caller: getBabelCaller({
101
+ filename,
102
+ options,
103
+ oneViteMetroBabelConfig: hasOneViteMetroBabelConfig
104
+ })
105
+ };
106
+ var result = transformSync(src, babelConfig, options);
107
+ if (!result) {
108
+ return { ast: null };
109
+ }
110
+ assert(result.ast);
41
111
  return {
42
- name: "metro",
43
- bundler: "metro",
44
- platform: options.platform,
45
- isServer,
46
- isReactServer,
47
- baseUrl: typeof ((_options_customTransformOptions3 = options.customTransformOptions) === null || _options_customTransformOptions3 === void 0 ? void 0 : _options_customTransformOptions3.baseUrl) === "string" ? decodeURI(options.customTransformOptions.baseUrl) : "",
48
- routerRoot: routerRoot !== null && routerRoot !== void 0 ? routerRoot : "app",
49
- isDev: options.dev,
50
- preserveEnvVars: isCustomTruthy((_options_customTransformOptions4 = options.customTransformOptions) === null || _options_customTransformOptions4 === void 0 ? void 0 : _options_customTransformOptions4.preserveEnvVars) ? true : void 0,
51
- asyncRoutes: isCustomTruthy((_options_customTransformOptions5 = options.customTransformOptions) === null || _options_customTransformOptions5 === void 0 ? void 0 : _options_customTransformOptions5.asyncRoutes) ? true : void 0,
52
- engine: stringOrUndefined((_options_customTransformOptions6 = options.customTransformOptions) === null || _options_customTransformOptions6 === void 0 ? void 0 : _options_customTransformOptions6.engine),
53
- projectRoot: options.projectRoot,
54
- oneViteMetroBabelConfig,
55
- isNodeModule,
56
- isHMREnabled: options.dev,
57
- supportsStaticESM: isCustomTruthy((_options_customTransformOptions7 = options.customTransformOptions) === null || _options_customTransformOptions7 === void 0 ? void 0 : _options_customTransformOptions7.optimize) || options.experimentalImportSupport,
58
- supportsReactCompiler: isCustomTruthy((_options_customTransformOptions8 = options.customTransformOptions) === null || _options_customTransformOptions8 === void 0 ? void 0 : _options_customTransformOptions8.reactCompiler) ? true : void 0
112
+ ast: result.ast,
113
+ metadata: result.metadata
59
114
  };
115
+ } finally {
116
+ if (OLD_BABEL_ENV) {
117
+ process.env.BABEL_ENV = OLD_BABEL_ENV;
118
+ }
60
119
  }
61
- function stringOrUndefined(value) {
62
- return typeof value === "string" ? value : void 0;
120
+ };
121
+ function getCacheKey(options) {
122
+ var hash = createHash("sha256");
123
+ hash.update("vxrn-metro-babel-transformer-v1");
124
+ var projectRoot = options === null || options === void 0 ? void 0 : options.projectRoot;
125
+ if (!projectRoot) {
126
+ return hash.digest("hex");
63
127
  }
64
- var transform = function(param) {
65
- var { filename, src, options, plugins } = param;
66
- var _options_customTransformOptions;
67
- var viteCustomTransformOptions = (_options_customTransformOptions = options.customTransformOptions) === null || _options_customTransformOptions === void 0 ? void 0 : _options_customTransformOptions.vite;
68
- var customOptionsFromVite = (function() {
69
- var c = viteCustomTransformOptions;
70
- if (!c || typeof c !== "object") {
71
- return { babelConfig: {} };
72
- }
73
- return c;
74
- })();
75
- var hasOneViteMetroBabelConfig = customOptionsFromVite.oneViteMetroBabelConfig === true;
76
- var babelConfigFromVitePlugin = customOptionsFromVite.babelConfig || {};
77
- var OLD_BABEL_ENV = process.env.BABEL_ENV;
78
- process.env.BABEL_ENV = options.dev ? "development" : process.env.BABEL_ENV || "production";
128
+ hash.update(projectRoot);
129
+ for (var _i = 0, _iter = [
130
+ ".env",
131
+ ".env.development",
132
+ ".env.local",
133
+ ".env.development.local"
134
+ ]; _i < _iter.length; _i++) {
135
+ var file = _iter[_i];
136
+ var filename = path.join(projectRoot, file);
137
+ hash.update(filename);
79
138
  try {
80
- var babelConfig = {
81
- sourceType: "unambiguous",
82
- ast: true,
83
- code: false,
84
- cloneInputAst: false,
85
- cwd: options.projectRoot,
86
- filename,
87
- highlightCode: true,
88
- ...babelConfigFromVitePlugin,
89
- ...loadBabelConfig(options),
90
- babelrc: typeof options.enableBabelRCLookup === "boolean" ? options.enableBabelRCLookup : true,
91
- plugins: [...babelConfigFromVitePlugin.plugins || [], ...plugins],
92
- caller: getBabelCaller({
93
- filename,
94
- options,
95
- oneViteMetroBabelConfig: hasOneViteMetroBabelConfig
96
- })
97
- };
98
- var result = transformSync(src, babelConfig, options);
99
- if (!result) {
100
- return { ast: null };
101
- }
102
- assert(result.ast);
103
- return {
104
- ast: result.ast,
105
- metadata: result.metadata
106
- };
107
- } finally {
108
- if (OLD_BABEL_ENV) {
109
- process.env.BABEL_ENV = OLD_BABEL_ENV;
139
+ hash.update(readFileSync(filename));
140
+ } catch (error) {
141
+ if (typeof error === "object" && error !== null && "code" in error && error.code === "ENOENT") {
142
+ continue;
110
143
  }
144
+ throw error;
111
145
  }
112
- };
113
- var babelTransformer = { transform };
114
- module.exports = babelTransformer;
115
- }));
116
-
117
- export default require_babel_transformer_native();
146
+ }
147
+ hash.update(JSON.stringify(Object.entries(process.env).filter(function(param) {
148
+ var [key] = param;
149
+ return key.startsWith("ONE_PUBLIC_") || key.startsWith("EXPO_PUBLIC_");
150
+ }).sort(function(param, param1) {
151
+ var [left] = param, [right] = param1;
152
+ return left.localeCompare(right);
153
+ })));
154
+ return hash.digest("hex");
155
+ }
156
+ var babelTransformer = {
157
+ transform,
158
+ getCacheKey
159
+ };
160
+ module.exports = babelTransformer;
118
161
 
162
+ export { getCacheKey };
119
163
  //# sourceMappingURL=babel-transformer.native.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"babel-transformer.native.js","names":[],"sources":["esm/transformer/babel-transformer.native.js"],"sourcesContent":["import assert from \"assert\";\nimport { loadBabelConfig } from \"./loadBabelConfig\";\nimport { transformSync } from \"./transformSync\";\nvar debug = require(\"debug\")(\"expo:metro-config:babel-transformer\");\nfunction isCustomTruthy(value) {\n return String(value) === \"true\";\n}\nfunction memoize(fn) {\n var cache = /* @__PURE__ */ new Map();\n return function() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var key = JSON.stringify(args);\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = fn(...args);\n cache.set(key, result);\n return result;\n };\n}\nvar memoizeWarning = memoize(function(message) {\n debug(message);\n});\nfunction getBabelCaller(param) {\n var { filename, options, oneViteMetroBabelConfig } = param;\n var _options_customTransformOptions, _options_customTransformOptions1, _options_customTransformOptions2, _options_customTransformOptions3, _options_customTransformOptions4, _options_customTransformOptions5, _options_customTransformOptions6, _options_customTransformOptions7, _options_customTransformOptions8;\n var isNodeModule = filename.includes(\"node_modules\");\n var isReactServer = ((_options_customTransformOptions = options.customTransformOptions) === null || _options_customTransformOptions === void 0 ? void 0 : _options_customTransformOptions.environment) === \"react-server\";\n var isGenericServer = ((_options_customTransformOptions1 = options.customTransformOptions) === null || _options_customTransformOptions1 === void 0 ? void 0 : _options_customTransformOptions1.environment) === \"node\";\n var isServer = isReactServer || isGenericServer;\n var routerRoot = typeof ((_options_customTransformOptions2 = options.customTransformOptions) === null || _options_customTransformOptions2 === void 0 ? void 0 : _options_customTransformOptions2.routerRoot) === \"string\" ? decodeURI(options.customTransformOptions.routerRoot) : void 0;\n if (routerRoot == null) {\n memoizeWarning(\"Warning: Missing transform.routerRoot option in Metro bundling request, falling back to `app` as routes directory. This can occur if you bundle without Expo CLI or expo/metro-config.\");\n }\n return {\n name: \"metro\",\n bundler: \"metro\",\n platform: options.platform,\n // Empower the babel preset to know the env it's bundling for.\n // Metro automatically updates the cache to account for the custom transform options.\n isServer,\n // Enable React Server Component rules for AST. The naming maps to the resolver property `--conditions=react-server`.\n isReactServer,\n // The base url to make requests from, used for hosting from non-standard locations.\n baseUrl: typeof ((_options_customTransformOptions3 = options.customTransformOptions) === null || _options_customTransformOptions3 === void 0 ? void 0 : _options_customTransformOptions3.baseUrl) === \"string\" ? decodeURI(options.customTransformOptions.baseUrl) : \"\",\n // Ensure we always use a mostly-valid router root.\n routerRoot: routerRoot !== null && routerRoot !== void 0 ? routerRoot : \"app\",\n isDev: options.dev,\n // This value indicates if the user has disabled the feature or not.\n // Other criteria may still cause the feature to be disabled, but all inputs used are\n // already considered in the cache key.\n preserveEnvVars: isCustomTruthy((_options_customTransformOptions4 = options.customTransformOptions) === null || _options_customTransformOptions4 === void 0 ? void 0 : _options_customTransformOptions4.preserveEnvVars) ? true : void 0,\n asyncRoutes: isCustomTruthy((_options_customTransformOptions5 = options.customTransformOptions) === null || _options_customTransformOptions5 === void 0 ? void 0 : _options_customTransformOptions5.asyncRoutes) ? true : void 0,\n // Pass the engine to babel so we can automatically transpile for the correct\n // target environment.\n engine: stringOrUndefined((_options_customTransformOptions6 = options.customTransformOptions) === null || _options_customTransformOptions6 === void 0 ? void 0 : _options_customTransformOptions6.engine),\n // Provide the project root for accurately reading the Expo config.\n projectRoot: options.projectRoot,\n oneViteMetroBabelConfig,\n isNodeModule,\n isHMREnabled: options.dev,\n // Set the standard Babel flag to disable ESM transformations.\n supportsStaticESM: isCustomTruthy((_options_customTransformOptions7 = options.customTransformOptions) === null || _options_customTransformOptions7 === void 0 ? void 0 : _options_customTransformOptions7.optimize) || options.experimentalImportSupport,\n // Enable React compiler support in Babel.\n // TODO: Remove this in the future when compiler is on by default.\n supportsReactCompiler: isCustomTruthy((_options_customTransformOptions8 = options.customTransformOptions) === null || _options_customTransformOptions8 === void 0 ? void 0 : _options_customTransformOptions8.reactCompiler) ? true : void 0\n };\n}\nfunction stringOrUndefined(value) {\n return typeof value === \"string\" ? value : void 0;\n}\nvar transform = function(param) {\n var {\n filename,\n src,\n options,\n // `plugins` is used for `functionMapBabelPlugin` from `metro-source-map`. Could make sense to move this to `babel-preset-expo` too.\n plugins\n } = param;\n var _options_customTransformOptions;\n var viteCustomTransformOptions = (_options_customTransformOptions = options.customTransformOptions) === null || _options_customTransformOptions === void 0 ? void 0 : _options_customTransformOptions.vite;\n var customOptionsFromVite = (function() {\n var c = viteCustomTransformOptions;\n if (!c || typeof c !== \"object\") {\n return {\n babelConfig: {}\n };\n }\n return c;\n })();\n var hasOneViteMetroBabelConfig = customOptionsFromVite.oneViteMetroBabelConfig === true;\n var babelConfigFromVitePlugin = customOptionsFromVite.babelConfig || {};\n var OLD_BABEL_ENV = process.env.BABEL_ENV;\n process.env.BABEL_ENV = options.dev ? \"development\" : process.env.BABEL_ENV || \"production\";\n try {\n var babelConfig = {\n // ES modules require sourceType='module' but OSS may not always want that\n sourceType: \"unambiguous\",\n // The output we want from Babel methods\n ast: true,\n code: false,\n // NOTE(EvanBacon): We split the parse/transform steps up to accommodate\n // Hermes parsing, but this defaults to cloning the AST which increases\n // the transformation time by a fair amount.\n // You get this behavior by default when using Babel's `transform` method directly.\n cloneInputAst: false,\n // Options for debugging\n cwd: options.projectRoot,\n filename,\n highlightCode: true,\n ...babelConfigFromVitePlugin,\n ...loadBabelConfig(options),\n babelrc: typeof options.enableBabelRCLookup === \"boolean\" ? options.enableBabelRCLookup : true,\n plugins: [\n ...babelConfigFromVitePlugin.plugins || [],\n ...plugins\n ],\n // NOTE(EvanBacon): We heavily leverage the caller functionality to mutate the babel config.\n // This compensates for the lack of a format plugin system in Metro. Users can modify the\n // all (most) of the transforms in their local Babel config.\n // This also helps us keep the transform layers small and focused on a single task. We can also use this to\n // ensure the Babel config caching is more accurate.\n // Additionally, by moving everything Babel-related to the Babel preset, it makes it easier for users to reason\n // about the requirements of an Expo project, making it easier to migrate to other transpilers in the future.\n caller: getBabelCaller({\n filename,\n options,\n oneViteMetroBabelConfig: hasOneViteMetroBabelConfig\n })\n };\n var result = transformSync(src, babelConfig, options);\n if (!result) {\n return {\n ast: null\n };\n }\n assert(result.ast);\n return {\n ast: result.ast,\n metadata: result.metadata\n };\n } finally {\n if (OLD_BABEL_ENV) {\n process.env.BABEL_ENV = OLD_BABEL_ENV;\n }\n }\n};\nvar babelTransformer = {\n transform\n};\nmodule.exports = babelTransformer;\n//# sourceMappingURL=babel-transformer.js.map\n"],"mappings":"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"}
1
+ {"version":3,"file":"babel-transformer.native.js","names":[],"sources":["esm/transformer/babel-transformer.native.js"],"sourcesContent":["import assert from \"assert\";\nimport { createHash } from \"crypto\";\nimport { readFileSync } from \"fs\";\nimport path from \"path\";\nimport { substituteExpoVirtualEnvSource } from \"./expoVirtualEnv\";\nimport { loadBabelConfig } from \"./loadBabelConfig\";\nimport { transformSync } from \"./transformSync\";\nvar debug = require(\"debug\")(\"vxrn:metro-config:babel-transformer\");\nfunction isCustomTruthy(value) {\n return String(value) === \"true\";\n}\nfunction memoize(fn) {\n var cache = /* @__PURE__ */ new Map();\n return function() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var key = JSON.stringify(args);\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = fn(...args);\n cache.set(key, result);\n return result;\n };\n}\nvar memoizeWarning = memoize(function(message) {\n debug(message);\n});\nfunction getBabelCaller(param) {\n var { filename, options, oneViteMetroBabelConfig } = param;\n var _options_customTransformOptions, _options_customTransformOptions1, _options_customTransformOptions2, _options_customTransformOptions3, _options_customTransformOptions4, _options_customTransformOptions5, _options_customTransformOptions6, _options_customTransformOptions7, _options_customTransformOptions8;\n var isNodeModule = filename.includes(\"node_modules\");\n var isReactServer = ((_options_customTransformOptions = options.customTransformOptions) === null || _options_customTransformOptions === void 0 ? void 0 : _options_customTransformOptions.environment) === \"react-server\";\n var isGenericServer = ((_options_customTransformOptions1 = options.customTransformOptions) === null || _options_customTransformOptions1 === void 0 ? void 0 : _options_customTransformOptions1.environment) === \"node\";\n var isServer = isReactServer || isGenericServer;\n var routerRoot = typeof ((_options_customTransformOptions2 = options.customTransformOptions) === null || _options_customTransformOptions2 === void 0 ? void 0 : _options_customTransformOptions2.routerRoot) === \"string\" ? decodeURI(options.customTransformOptions.routerRoot) : void 0;\n if (routerRoot == null) {\n memoizeWarning(\"Warning: Missing transform.routerRoot option in Metro bundling request, falling back to `app` as routes directory.\");\n }\n return {\n name: \"metro\",\n bundler: \"metro\",\n platform: options.platform,\n // Empower the babel preset to know the env it's bundling for.\n // Metro automatically updates the cache to account for the custom transform options.\n isServer,\n // Enable React Server Component rules for AST. The naming maps to the resolver property `--conditions=react-server`.\n isReactServer,\n // The base url to make requests from, used for hosting from non-standard locations.\n baseUrl: typeof ((_options_customTransformOptions3 = options.customTransformOptions) === null || _options_customTransformOptions3 === void 0 ? void 0 : _options_customTransformOptions3.baseUrl) === \"string\" ? decodeURI(options.customTransformOptions.baseUrl) : \"\",\n // Ensure we always use a mostly-valid router root.\n routerRoot: routerRoot !== null && routerRoot !== void 0 ? routerRoot : \"app\",\n isDev: options.dev,\n // This value indicates if the user has disabled the feature or not.\n // Other criteria may still cause the feature to be disabled, but all inputs used are\n // already considered in the cache key.\n preserveEnvVars: isCustomTruthy((_options_customTransformOptions4 = options.customTransformOptions) === null || _options_customTransformOptions4 === void 0 ? void 0 : _options_customTransformOptions4.preserveEnvVars) ? true : void 0,\n asyncRoutes: isCustomTruthy((_options_customTransformOptions5 = options.customTransformOptions) === null || _options_customTransformOptions5 === void 0 ? void 0 : _options_customTransformOptions5.asyncRoutes) ? true : void 0,\n // Pass the engine to babel so we can automatically transpile for the correct\n // target environment.\n engine: stringOrUndefined((_options_customTransformOptions6 = options.customTransformOptions) === null || _options_customTransformOptions6 === void 0 ? void 0 : _options_customTransformOptions6.engine),\n // provide the project root for reading the app babel config\n projectRoot: options.projectRoot,\n oneViteMetroBabelConfig,\n isNodeModule,\n isHMREnabled: options.dev,\n // Set the standard Babel flag to disable ESM transformations.\n supportsStaticESM: isCustomTruthy((_options_customTransformOptions7 = options.customTransformOptions) === null || _options_customTransformOptions7 === void 0 ? void 0 : _options_customTransformOptions7.optimize) || options.experimentalImportSupport,\n // Enable React compiler support in Babel.\n // TODO: Remove this in the future when compiler is on by default.\n supportsReactCompiler: isCustomTruthy((_options_customTransformOptions8 = options.customTransformOptions) === null || _options_customTransformOptions8 === void 0 ? void 0 : _options_customTransformOptions8.reactCompiler) ? true : void 0\n };\n}\nfunction stringOrUndefined(value) {\n return typeof value === \"string\" ? value : void 0;\n}\nvar transform = function(param) {\n var {\n filename,\n src: originalSrc,\n options,\n // `plugins` is used for `functionMapBabelPlugin` from `metro-source-map`.\n plugins\n } = param;\n var _options_customTransformOptions, _options_customTransformOptions1;\n var src = substituteExpoVirtualEnvSource({\n filename,\n src: originalSrc,\n projectRoot: options.projectRoot,\n dev: options.dev,\n environment: (_options_customTransformOptions = options.customTransformOptions) === null || _options_customTransformOptions === void 0 ? void 0 : _options_customTransformOptions.environment\n });\n var viteCustomTransformOptions = (_options_customTransformOptions1 = options.customTransformOptions) === null || _options_customTransformOptions1 === void 0 ? void 0 : _options_customTransformOptions1.vite;\n var customOptionsFromVite = (function() {\n var c = viteCustomTransformOptions;\n if (!c || typeof c !== \"object\") {\n return {\n babelConfig: {}\n };\n }\n return c;\n })();\n var hasOneViteMetroBabelConfig = customOptionsFromVite.oneViteMetroBabelConfig === true;\n var babelConfigFromVitePlugin = customOptionsFromVite.babelConfig || {};\n var OLD_BABEL_ENV = process.env.BABEL_ENV;\n process.env.BABEL_ENV = options.dev ? \"development\" : process.env.BABEL_ENV || \"production\";\n try {\n var babelConfig = {\n // ES modules require sourceType='module' but OSS may not always want that\n sourceType: \"unambiguous\",\n // The output we want from Babel methods\n ast: true,\n code: false,\n // NOTE(EvanBacon): We split the parse/transform steps up to accommodate\n // Hermes parsing, but this defaults to cloning the AST which increases\n // the transformation time by a fair amount.\n // You get this behavior by default when using Babel's `transform` method directly.\n cloneInputAst: false,\n // Options for debugging\n cwd: options.projectRoot,\n filename,\n highlightCode: true,\n ...babelConfigFromVitePlugin,\n ...loadBabelConfig(options),\n babelrc: typeof options.enableBabelRCLookup === \"boolean\" ? options.enableBabelRCLookup : true,\n plugins: [\n ...babelConfigFromVitePlugin.plugins || [],\n ...plugins\n ],\n // NOTE(EvanBacon): We heavily leverage the caller functionality to mutate the babel config.\n // This compensates for the lack of a format plugin system in Metro. Users can modify the\n // all (most) of the transforms in their local Babel config.\n // This also helps us keep the transform layers small and focused on a single task. We can also use this to\n // ensure the Babel config caching is more accurate.\n // moving everything babel-related to the preset also keeps the transform\n // requirements explicit for users who opt into babel.\n caller: getBabelCaller({\n filename,\n options,\n oneViteMetroBabelConfig: hasOneViteMetroBabelConfig\n })\n };\n var result = transformSync(src, babelConfig, options);\n if (!result) {\n return {\n ast: null\n };\n }\n assert(result.ast);\n return {\n ast: result.ast,\n metadata: result.metadata\n };\n } finally {\n if (OLD_BABEL_ENV) {\n process.env.BABEL_ENV = OLD_BABEL_ENV;\n }\n }\n};\nfunction getCacheKey(options) {\n var hash = createHash(\"sha256\");\n hash.update(\"vxrn-metro-babel-transformer-v1\");\n var projectRoot = options === null || options === void 0 ? void 0 : options.projectRoot;\n if (!projectRoot) {\n return hash.digest(\"hex\");\n }\n hash.update(projectRoot);\n for (var _i = 0, _iter = [\n \".env\",\n \".env.development\",\n \".env.local\",\n \".env.development.local\"\n ]; _i < _iter.length; _i++) {\n var file = _iter[_i];\n var filename = path.join(projectRoot, file);\n hash.update(filename);\n try {\n hash.update(readFileSync(filename));\n } catch (error) {\n if (typeof error === \"object\" && error !== null && \"code\" in error && error.code === \"ENOENT\") {\n continue;\n }\n throw error;\n }\n }\n hash.update(JSON.stringify(Object.entries(process.env).filter(function(param) {\n var [key] = param;\n return key.startsWith(\"ONE_PUBLIC_\") || key.startsWith(\"EXPO_PUBLIC_\");\n }).sort(function(param, param1) {\n var [left] = param, [right] = param1;\n return left.localeCompare(right);\n })));\n return hash.digest(\"hex\");\n}\nvar babelTransformer = {\n transform,\n getCacheKey\n};\nmodule.exports = babelTransformer;\nexport {\n getCacheKey\n};\n//# sourceMappingURL=babel-transformer.js.map\n"],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ import { createRequire } from "node:module";
2
+ import { readFileSync } from "node:fs";
3
+ import path from "node:path";
4
+
5
+ function loadExpoParseEnvFile(projectRoot) {
6
+ try {
7
+ const requireFromProject = createRequire(path.join(projectRoot, "package.json"));
8
+ const expoMetroConfigPkg = requireFromProject.resolve("@expo/metro-config/package.json");
9
+ const dotEnvDevelopment = requireFromProject(path.join(path.dirname(expoMetroConfigPkg), "build", "transform-worker", "dot-env-development"));
10
+ return dotEnvDevelopment?.parseEnvFile ?? null;
11
+ } catch {
12
+ return null;
13
+ }
14
+ }
15
+ const virtualEnvPattern = /[\\/]expo[\\/]virtual[\\/]env\.js$/;
16
+ const dotEnvPattern = /(^|[\\/])\.env(\.(local|(development|production)(\.local)?))?$/;
17
+ const developmentEnvFiles = [
18
+ ".env",
19
+ ".env.development",
20
+ ".env.local",
21
+ ".env.development.local"
22
+ ];
23
+ function substituteExpoVirtualEnvSource({ filename, src, projectRoot, dev, environment }) {
24
+ const isClientEnvironment = environment !== "node" && environment !== "react-server";
25
+ if (isClientEnvironment && virtualEnvPattern.test(filename)) {
26
+ if (dev) {
27
+ const fileEnv = {};
28
+ const parseEnvFile = loadExpoParseEnvFile(projectRoot);
29
+ if (parseEnvFile) {
30
+ for (const file of developmentEnvFiles) {
31
+ try {
32
+ Object.assign(fileEnv, parseEnvFile(readFileSync(path.join(projectRoot, file), "utf8"), true));
33
+ } catch (error) {
34
+ if (typeof error === "object" && error !== null && "code" in error && error.code === "ENOENT") {
35
+ continue;
36
+ }
37
+ throw error;
38
+ }
39
+ }
40
+ }
41
+ const relativePath = path.relative(path.dirname(filename), projectRoot).split(path.sep).join("/");
42
+ return `const dotEnvModules = require.context(${JSON.stringify(relativePath)},false,/^\\.\\/\\.env/);
43
+
44
+ export const env = { ...process.env, ...${JSON.stringify(fileEnv)}, ...${JSON.stringify(developmentEnvFiles)}.reduce((acc, file) => {
45
+ const key = './' + file;
46
+ return { ...acc, ...(dotEnvModules.keys().includes(key) ? dotEnvModules(key)?.default : {}) };
47
+ }, {}) };`;
48
+ }
49
+ return `
50
+ export const env = new Proxy({}, {
51
+ get(target, key) {
52
+ throw new Error(\`Attempting to access internal environment variable "\${key}" is not supported in production bundles. Environment variables should be inlined in production by Babel.\`);
53
+ },
54
+ });`;
55
+ }
56
+ if (dotEnvPattern.test(filename)) {
57
+ const parseEnvFile = loadExpoParseEnvFile(projectRoot);
58
+ if (!parseEnvFile) {
59
+ return src;
60
+ }
61
+ return `export default ${JSON.stringify(parseEnvFile(src, isClientEnvironment))};`;
62
+ }
63
+ return src;
64
+ }
65
+
66
+ export { substituteExpoVirtualEnvSource };
67
+ //# sourceMappingURL=expoVirtualEnv.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expoVirtualEnv.js","names":[],"sources":["esm/transformer/expoVirtualEnv.js"],"sourcesContent":["import { createRequire } from \"node:module\";\nimport { readFileSync } from \"node:fs\";\nimport path from \"node:path\";\nfunction loadExpoParseEnvFile(projectRoot) {\n try {\n const requireFromProject = createRequire(path.join(projectRoot, \"package.json\"));\n const expoMetroConfigPkg = requireFromProject.resolve(\n \"@expo/metro-config/package.json\"\n );\n const dotEnvDevelopment = requireFromProject(\n path.join(\n path.dirname(expoMetroConfigPkg),\n \"build\",\n \"transform-worker\",\n \"dot-env-development\"\n )\n );\n return dotEnvDevelopment?.parseEnvFile ?? null;\n } catch {\n return null;\n }\n}\nconst virtualEnvPattern = /[\\\\/]expo[\\\\/]virtual[\\\\/]env\\.js$/;\nconst dotEnvPattern = /(^|[\\\\/])\\.env(\\.(local|(development|production)(\\.local)?))?$/;\nconst developmentEnvFiles = [\n \".env\",\n \".env.development\",\n \".env.local\",\n \".env.development.local\"\n];\nfunction substituteExpoVirtualEnvSource({\n filename,\n src,\n projectRoot,\n dev,\n environment\n}) {\n const isClientEnvironment = environment !== \"node\" && environment !== \"react-server\";\n if (isClientEnvironment && virtualEnvPattern.test(filename)) {\n if (dev) {\n const fileEnv = {};\n const parseEnvFile = loadExpoParseEnvFile(projectRoot);\n if (parseEnvFile) {\n for (const file of developmentEnvFiles) {\n try {\n Object.assign(\n fileEnv,\n parseEnvFile(readFileSync(path.join(projectRoot, file), \"utf8\"), true)\n );\n } catch (error) {\n if (typeof error === \"object\" && error !== null && \"code\" in error && error.code === \"ENOENT\") {\n continue;\n }\n throw error;\n }\n }\n }\n const relativePath = path.relative(path.dirname(filename), projectRoot).split(path.sep).join(\"/\");\n return `const dotEnvModules = require.context(${JSON.stringify(relativePath)},false,/^\\\\.\\\\/\\\\.env/);\n\nexport const env = { ...process.env, ...${JSON.stringify(fileEnv)}, ...${JSON.stringify(developmentEnvFiles)}.reduce((acc, file) => {\n const key = './' + file;\n return { ...acc, ...(dotEnvModules.keys().includes(key) ? dotEnvModules(key)?.default : {}) };\n}, {}) };`;\n }\n return `\nexport const env = new Proxy({}, {\n get(target, key) {\n throw new Error(\\`Attempting to access internal environment variable \"\\${key}\" is not supported in production bundles. Environment variables should be inlined in production by Babel.\\`);\n },\n});`;\n }\n if (dotEnvPattern.test(filename)) {\n const parseEnvFile = loadExpoParseEnvFile(projectRoot);\n if (!parseEnvFile) {\n return src;\n }\n return `export default ${JSON.stringify(parseEnvFile(src, isClientEnvironment))};`;\n }\n return src;\n}\nexport {\n substituteExpoVirtualEnvSource\n};\n//# sourceMappingURL=expoVirtualEnv.js.map\n"],"mappings":";;;;;AAGA,SAAS,qBAAqB,aAAa;CACzC,IAAI;EACF,MAAM,qBAAqB,cAAc,KAAK,KAAK,aAAa,cAAc,CAAC;EAC/E,MAAM,qBAAqB,mBAAmB,QAC5C,iCACF;EACA,MAAM,oBAAoB,mBACxB,KAAK,KACH,KAAK,QAAQ,kBAAkB,GAC/B,SACA,oBACA,qBACF,CACF;EACA,OAAO,mBAAmB,gBAAgB;CAC5C,QAAQ;EACN,OAAO;CACT;AACF;AACA,MAAM,oBAAoB;AAC1B,MAAM,gBAAgB;AACtB,MAAM,sBAAsB;CAC1B;CACA;CACA;CACA;AACF;AACA,SAAS,+BAA+B,EACtC,UACA,KACA,aACA,KACA,eACC;CACD,MAAM,sBAAsB,gBAAgB,UAAU,gBAAgB;CACtE,IAAI,uBAAuB,kBAAkB,KAAK,QAAQ,GAAG;EAC3D,IAAI,KAAK;GACP,MAAM,UAAU,CAAC;GACjB,MAAM,eAAe,qBAAqB,WAAW;GACrD,IAAI,cAAc;IAChB,KAAK,MAAM,QAAQ,qBAAqB;KACtC,IAAI;MACF,OAAO,OACL,SACA,aAAa,aAAa,KAAK,KAAK,aAAa,IAAI,GAAG,MAAM,GAAG,IAAI,CACvE;KACF,SAAS,OAAO;MACd,IAAI,OAAO,UAAU,YAAY,UAAU,QAAQ,UAAU,SAAS,MAAM,SAAS,UAAU;OAC7F;MACF;MACA,MAAM;KACR;IACF;GACF;GACA,MAAM,eAAe,KAAK,SAAS,KAAK,QAAQ,QAAQ,GAAG,WAAW,CAAC,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG;GAChG,OAAO,yCAAyC,KAAK,UAAU,YAAY,EAAE;;0CAEzC,KAAK,UAAU,OAAO,EAAE,OAAO,KAAK,UAAU,mBAAmB,EAAE;;;;EAIzG;EACA,OAAO;;;;;;CAMT;CACA,IAAI,cAAc,KAAK,QAAQ,GAAG;EAChC,MAAM,eAAe,qBAAqB,WAAW;EACrD,IAAI,CAAC,cAAc;GACjB,OAAO;EACT;EACA,OAAO,kBAAkB,KAAK,UAAU,aAAa,KAAK,mBAAmB,CAAC,EAAE;CAClF;CACA,OAAO;AACT"}
@@ -0,0 +1,86 @@
1
+ import { createRequire } from "module";
2
+ import { readFileSync } from "fs";
3
+ import path from "path";
4
+
5
+ function loadExpoParseEnvFile(projectRoot) {
6
+ try {
7
+ var _ref;
8
+ var requireFromProject = createRequire(path.join(projectRoot, "package.json"));
9
+ var expoMetroConfigPkg = requireFromProject.resolve("@expo/metro-config/package.json");
10
+ var dotEnvDevelopment = requireFromProject(path.join(path.dirname(expoMetroConfigPkg), "build", "transform-worker", "dot-env-development"));
11
+ return (_ref = dotEnvDevelopment === null || dotEnvDevelopment === void 0 ? void 0 : dotEnvDevelopment.parseEnvFile) !== null && _ref !== void 0 ? _ref : null;
12
+ } catch (unused) {
13
+ return null;
14
+ }
15
+ }
16
+ var virtualEnvPattern = /[\\/]expo[\\/]virtual[\\/]env\.js$/;
17
+ var dotEnvPattern = /(^|[\\/])\.env(\.(local|(development|production)(\.local)?))?$/;
18
+ var developmentEnvFiles = [
19
+ ".env",
20
+ ".env.development",
21
+ ".env.local",
22
+ ".env.development.local"
23
+ ];
24
+ function substituteExpoVirtualEnvSource(param) {
25
+ var { filename, src, projectRoot, dev, environment } = param;
26
+ var isClientEnvironment = environment !== "node" && environment !== "react-server";
27
+ if (isClientEnvironment && virtualEnvPattern.test(filename)) {
28
+ if (dev) {
29
+ var fileEnv = {};
30
+ var parseEnvFile = loadExpoParseEnvFile(projectRoot);
31
+ if (parseEnvFile) {
32
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
33
+ try {
34
+ for (var _iterator = developmentEnvFiles[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
35
+ var file = _step.value;
36
+ try {
37
+ Object.assign(fileEnv, parseEnvFile(readFileSync(path.join(projectRoot, file), "utf8"), true));
38
+ } catch (error) {
39
+ if (typeof error === "object" && error !== null && "code" in error && error.code === "ENOENT") {
40
+ continue;
41
+ }
42
+ throw error;
43
+ }
44
+ }
45
+ } catch (err) {
46
+ _didIteratorError = true;
47
+ _iteratorError = err;
48
+ } finally {
49
+ try {
50
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
51
+ _iterator.return();
52
+ }
53
+ } finally {
54
+ if (_didIteratorError) {
55
+ throw _iteratorError;
56
+ }
57
+ }
58
+ }
59
+ }
60
+ var relativePath = path.relative(path.dirname(filename), projectRoot).split(path.sep).join("/");
61
+ return `const dotEnvModules = require.context(${JSON.stringify(relativePath)},false,/^\\.\\/\\.env/);
62
+
63
+ export const env = { ...process.env, ...${JSON.stringify(fileEnv)}, ...${JSON.stringify(developmentEnvFiles)}.reduce((acc, file) => {
64
+ const key = './' + file;
65
+ return { ...acc, ...(dotEnvModules.keys().includes(key) ? dotEnvModules(key)?.default : {}) };
66
+ }, {}) };`;
67
+ }
68
+ return `
69
+ export const env = new Proxy({}, {
70
+ get(target, key) {
71
+ throw new Error(\`Attempting to access internal environment variable "\${key}" is not supported in production bundles. Environment variables should be inlined in production by Babel.\`);
72
+ },
73
+ });`;
74
+ }
75
+ if (dotEnvPattern.test(filename)) {
76
+ var parseEnvFile1 = loadExpoParseEnvFile(projectRoot);
77
+ if (!parseEnvFile1) {
78
+ return src;
79
+ }
80
+ return `export default ${JSON.stringify(parseEnvFile1(src, isClientEnvironment))};`;
81
+ }
82
+ return src;
83
+ }
84
+
85
+ export { substituteExpoVirtualEnvSource };
86
+ //# sourceMappingURL=expoVirtualEnv.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expoVirtualEnv.native.js","names":[],"sources":["esm/transformer/expoVirtualEnv.native.js"],"sourcesContent":["import { createRequire } from \"module\";\nimport { readFileSync } from \"fs\";\nimport path from \"path\";\nfunction loadExpoParseEnvFile(projectRoot) {\n try {\n var _ref;\n var requireFromProject = createRequire(path.join(projectRoot, \"package.json\"));\n var expoMetroConfigPkg = requireFromProject.resolve(\"@expo/metro-config/package.json\");\n var dotEnvDevelopment = requireFromProject(path.join(path.dirname(expoMetroConfigPkg), \"build\", \"transform-worker\", \"dot-env-development\"));\n return (_ref = dotEnvDevelopment === null || dotEnvDevelopment === void 0 ? void 0 : dotEnvDevelopment.parseEnvFile) !== null && _ref !== void 0 ? _ref : null;\n } catch (unused) {\n return null;\n }\n}\nvar virtualEnvPattern = /[\\\\/]expo[\\\\/]virtual[\\\\/]env\\.js$/;\nvar dotEnvPattern = /(^|[\\\\/])\\.env(\\.(local|(development|production)(\\.local)?))?$/;\nvar developmentEnvFiles = [\n \".env\",\n \".env.development\",\n \".env.local\",\n \".env.development.local\"\n];\nfunction substituteExpoVirtualEnvSource(param) {\n var { filename, src, projectRoot, dev, environment } = param;\n var isClientEnvironment = environment !== \"node\" && environment !== \"react-server\";\n if (isClientEnvironment && virtualEnvPattern.test(filename)) {\n if (dev) {\n var fileEnv = {};\n var parseEnvFile = loadExpoParseEnvFile(projectRoot);\n if (parseEnvFile) {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = developmentEnvFiles[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var file = _step.value;\n try {\n Object.assign(fileEnv, parseEnvFile(readFileSync(path.join(projectRoot, file), \"utf8\"), true));\n } catch (error) {\n if (typeof error === \"object\" && error !== null && \"code\" in error && error.code === \"ENOENT\") {\n continue;\n }\n throw error;\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 }\n var relativePath = path.relative(path.dirname(filename), projectRoot).split(path.sep).join(\"/\");\n return `const dotEnvModules = require.context(${JSON.stringify(relativePath)},false,/^\\\\.\\\\/\\\\.env/);\n\nexport const env = { ...process.env, ...${JSON.stringify(fileEnv)}, ...${JSON.stringify(developmentEnvFiles)}.reduce((acc, file) => {\n const key = './' + file;\n return { ...acc, ...(dotEnvModules.keys().includes(key) ? dotEnvModules(key)?.default : {}) };\n}, {}) };`;\n }\n return `\nexport const env = new Proxy({}, {\n get(target, key) {\n throw new Error(\\`Attempting to access internal environment variable \"\\${key}\" is not supported in production bundles. Environment variables should be inlined in production by Babel.\\`);\n },\n});`;\n }\n if (dotEnvPattern.test(filename)) {\n var parseEnvFile1 = loadExpoParseEnvFile(projectRoot);\n if (!parseEnvFile1) {\n return src;\n }\n return `export default ${JSON.stringify(parseEnvFile1(src, isClientEnvironment))};`;\n }\n return src;\n}\nexport {\n substituteExpoVirtualEnvSource\n};\n//# sourceMappingURL=expoVirtualEnv.js.map\n"],"mappings":";;;;;AAGA,SAAS,qBAAqB,aAAa;CACzC,IAAI;EACF,IAAI;EACJ,IAAI,qBAAqB,cAAc,KAAK,KAAK,aAAa,cAAc,CAAC;EAC7E,IAAI,qBAAqB,mBAAmB,QAAQ,iCAAiC;EACrF,IAAI,oBAAoB,mBAAmB,KAAK,KAAK,KAAK,QAAQ,kBAAkB,GAAG,SAAS,oBAAoB,qBAAqB,CAAC;EAC1I,QAAQ,OAAO,sBAAsB,QAAQ,sBAAsB,KAAK,IAAI,KAAK,IAAI,kBAAkB,kBAAkB,QAAQ,SAAS,KAAK,IAAI,OAAO;CAC5J,SAAS,QAAQ;EACf,OAAO;CACT;AACF;AACA,IAAI,oBAAoB;AACxB,IAAI,gBAAgB;AACpB,IAAI,sBAAsB;CACxB;CACA;CACA;CACA;AACF;AACA,SAAS,+BAA+B,OAAO;CAC7C,IAAI,EAAE,UAAU,KAAK,aAAa,KAAK,gBAAgB;CACvD,IAAI,sBAAsB,gBAAgB,UAAU,gBAAgB;CACpE,IAAI,uBAAuB,kBAAkB,KAAK,QAAQ,GAAG;EAC3D,IAAI,KAAK;GACP,IAAI,UAAU,CAAC;GACf,IAAI,eAAe,qBAAqB,WAAW;GACnD,IAAI,cAAc;IAChB,IAAI,4BAA4B,MAAM,oBAAoB,OAAO,iBAAiB,KAAK;IACvF,IAAI;KACF,KAAK,IAAI,YAAY,oBAAoB,OAAO,SAAS,CAAC,GAAG,OAAO,EAAE,6BAA6B,QAAQ,UAAU,KAAK,EAAC,CAAE,OAAO,4BAA4B,MAAM;MACpK,IAAI,OAAO,MAAM;MACjB,IAAI;OACF,OAAO,OAAO,SAAS,aAAa,aAAa,KAAK,KAAK,aAAa,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC;MAC/F,SAAS,OAAO;OACd,IAAI,OAAO,UAAU,YAAY,UAAU,QAAQ,UAAU,SAAS,MAAM,SAAS,UAAU;QAC7F;OACF;OACA,MAAM;MACR;KACF;IACF,SAAS,KAAK;KACZ,oBAAoB;KACpB,iBAAiB;IACnB,UAAU;KACR,IAAI;MACF,IAAI,CAAC,6BAA6B,UAAU,UAAU,MAAM;OAC1D,UAAU,OAAO;MACnB;KACF,UAAU;MACR,IAAI,mBAAmB;OACrB,MAAM;MACR;KACF;IACF;GACF;GACA,IAAI,eAAe,KAAK,SAAS,KAAK,QAAQ,QAAQ,GAAG,WAAW,CAAC,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG;GAC9F,OAAO,yCAAyC,KAAK,UAAU,YAAY,EAAE;;0CAEzC,KAAK,UAAU,OAAO,EAAE,OAAO,KAAK,UAAU,mBAAmB,EAAE;;;;EAIzG;EACA,OAAO;;;;;;CAMT;CACA,IAAI,cAAc,KAAK,QAAQ,GAAG;EAChC,IAAI,gBAAgB,qBAAqB,WAAW;EACpD,IAAI,CAAC,eAAe;GAClB,OAAO;EACT;EACA,OAAO,kBAAkB,KAAK,UAAU,cAAc,KAAK,mBAAmB,CAAC,EAAE;CACnF;CACA,OAAO;AACT"}
@@ -24,7 +24,7 @@ const loadBabelConfig = /* @__PURE__ */ (() => {
24
24
  }
25
25
  }
26
26
  if (!babelRC.extends) {
27
- babelRC.presets = [require("babel-preset-expo")];
27
+ babelRC.presets = [require("@react-native/babel-preset")];
28
28
  }
29
29
  return babelRC;
30
30
  };
@@ -1 +1 @@
1
- {"version":3,"file":"loadBabelConfig.js","names":[],"sources":["esm/transformer/loadBabelConfig.js"],"sourcesContent":["import fs from \"node:fs\";\nimport path from \"node:path\";\nconst loadBabelConfig = /* @__PURE__ */ (() => {\n let babelRC = null;\n return function _getBabelRC({ projectRoot }) {\n if (babelRC !== null) {\n return babelRC;\n }\n babelRC = {};\n if (projectRoot) {\n const possibleBabelRCPaths = [\n \".babelrc\",\n \".babelrc.js\",\n \".babelrc.json\",\n \"babel.config.js\",\n \"babel.config.cjs\",\n \"babel.config.mjs\",\n \"babel.config.json\"\n ];\n const foundBabelRCPath = possibleBabelRCPaths.find(\n (configFileName) => fs.existsSync(path.resolve(projectRoot, configFileName))\n );\n if (foundBabelRCPath) {\n babelRC.extends = path.resolve(projectRoot, foundBabelRCPath);\n }\n }\n if (!babelRC.extends) {\n babelRC.presets = [\n // { plugins: [transformImportMetaGlobPlugin] }, // Added to support Vite's `import.meta.glob`\n require(\"babel-preset-expo\")\n ];\n }\n return babelRC;\n };\n})();\nexport {\n loadBabelConfig\n};\n//# sourceMappingURL=loadBabelConfig.js.map\n"],"mappings":";;;;;;;;;;;AAEA,MAAM,kBAAkC,uBAAO;CAC7C,IAAI,UAAU;CACd,OAAO,SAAS,YAAY,EAAE,eAAe;EAC3C,IAAI,YAAY,MAAM;GACpB,OAAO;EACT;EACA,UAAU,CAAC;EACX,IAAI,aAAa;GACf,MAAM,uBAAuB;IAC3B;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GACA,MAAM,mBAAmB,qBAAqB,MAC3C,mBAAmB,GAAG,WAAW,KAAK,QAAQ,aAAa,cAAc,CAAC,CAC7E;GACA,IAAI,kBAAkB;IACpB,QAAQ,UAAU,KAAK,QAAQ,aAAa,gBAAgB;GAC9D;EACF;EACA,IAAI,CAAC,QAAQ,SAAS;GACpB,QAAQ,UAAU,WAER,mBAAmB,CAC7B;EACF;EACA,OAAO;CACT;AACF,EAAC,CAAE"}
1
+ {"version":3,"file":"loadBabelConfig.js","names":[],"sources":["esm/transformer/loadBabelConfig.js"],"sourcesContent":["import fs from \"node:fs\";\nimport path from \"node:path\";\nconst loadBabelConfig = /* @__PURE__ */ (() => {\n let babelRC = null;\n return function _getBabelRC({ projectRoot }) {\n if (babelRC !== null) {\n return babelRC;\n }\n babelRC = {};\n if (projectRoot) {\n const possibleBabelRCPaths = [\n \".babelrc\",\n \".babelrc.js\",\n \".babelrc.json\",\n \"babel.config.js\",\n \"babel.config.cjs\",\n \"babel.config.mjs\",\n \"babel.config.json\"\n ];\n const foundBabelRCPath = possibleBabelRCPaths.find(\n (configFileName) => fs.existsSync(path.resolve(projectRoot, configFileName))\n );\n if (foundBabelRCPath) {\n babelRC.extends = path.resolve(projectRoot, foundBabelRCPath);\n }\n }\n if (!babelRC.extends) {\n babelRC.presets = [\n // { plugins: [transformImportMetaGlobPlugin] }, // Added to support Vite's `import.meta.glob`\n require(\"@react-native/babel-preset\")\n ];\n }\n return babelRC;\n };\n})();\nexport {\n loadBabelConfig\n};\n//# sourceMappingURL=loadBabelConfig.js.map\n"],"mappings":";;;;;;;;;;;AAEA,MAAM,kBAAkC,uBAAO;CAC7C,IAAI,UAAU;CACd,OAAO,SAAS,YAAY,EAAE,eAAe;EAC3C,IAAI,YAAY,MAAM;GACpB,OAAO;EACT;EACA,UAAU,CAAC;EACX,IAAI,aAAa;GACf,MAAM,uBAAuB;IAC3B;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GACA,MAAM,mBAAmB,qBAAqB,MAC3C,mBAAmB,GAAG,WAAW,KAAK,QAAQ,aAAa,cAAc,CAAC,CAC7E;GACA,IAAI,kBAAkB;IACpB,QAAQ,UAAU,KAAK,QAAQ,aAAa,gBAAgB;GAC9D;EACF;EACA,IAAI,CAAC,QAAQ,SAAS;GACpB,QAAQ,UAAU,WAER,4BAA4B,CACtC;EACF;EACA,OAAO;CACT;AACF,EAAC,CAAE"}
@@ -27,7 +27,7 @@ var loadBabelConfig = /* @__PURE__ */ (function() {
27
27
  }
28
28
  }
29
29
  if (!babelRC.extends) {
30
- babelRC.presets = [require("babel-preset-expo")];
30
+ babelRC.presets = [require("@react-native/babel-preset")];
31
31
  }
32
32
  return babelRC;
33
33
  };
@@ -1 +1 @@
1
- {"version":3,"file":"loadBabelConfig.native.js","names":[],"sources":["esm/transformer/loadBabelConfig.native.js"],"sourcesContent":["import fs from \"fs\";\nimport path from \"path\";\nvar loadBabelConfig = /* @__PURE__ */ (function() {\n var babelRC = null;\n return function _getBabelRC(param) {\n var { projectRoot } = param;\n if (babelRC !== null) {\n return babelRC;\n }\n babelRC = {};\n if (projectRoot) {\n var possibleBabelRCPaths = [\n \".babelrc\",\n \".babelrc.js\",\n \".babelrc.json\",\n \"babel.config.js\",\n \"babel.config.cjs\",\n \"babel.config.mjs\",\n \"babel.config.json\"\n ];\n var foundBabelRCPath = possibleBabelRCPaths.find(function(configFileName) {\n return fs.existsSync(path.resolve(projectRoot, configFileName));\n });\n if (foundBabelRCPath) {\n babelRC.extends = path.resolve(projectRoot, foundBabelRCPath);\n }\n }\n if (!babelRC.extends) {\n babelRC.presets = [\n // { plugins: [transformImportMetaGlobPlugin] }, // Added to support Vite's `import.meta.glob`\n require(\"babel-preset-expo\")\n ];\n }\n return babelRC;\n };\n})();\nexport {\n loadBabelConfig\n};\n//# sourceMappingURL=loadBabelConfig.js.map\n"],"mappings":";;;;;;;;;;;AAEA,IAAI,kBAAkC,iBAAC,WAAW;CAChD,IAAI,UAAU;CACd,OAAO,SAAS,YAAY,OAAO;EACjC,IAAI,EAAE,gBAAgB;EACtB,IAAI,YAAY,MAAM;GACpB,OAAO;EACT;EACA,UAAU,CAAC;EACX,IAAI,aAAa;GACf,IAAI,uBAAuB;IACzB;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GACA,IAAI,mBAAmB,qBAAqB,KAAK,SAAS,gBAAgB;IACxE,OAAO,GAAG,WAAW,KAAK,QAAQ,aAAa,cAAc,CAAC;GAChE,CAAC;GACD,IAAI,kBAAkB;IACpB,QAAQ,UAAU,KAAK,QAAQ,aAAa,gBAAgB;GAC9D;EACF;EACA,IAAI,CAAC,QAAQ,SAAS;GACpB,QAAQ,UAAU,WAER,mBAAmB,CAC7B;EACF;EACA,OAAO;CACT;AACF,EAAC,CAAE"}
1
+ {"version":3,"file":"loadBabelConfig.native.js","names":[],"sources":["esm/transformer/loadBabelConfig.native.js"],"sourcesContent":["import fs from \"fs\";\nimport path from \"path\";\nvar loadBabelConfig = /* @__PURE__ */ (function() {\n var babelRC = null;\n return function _getBabelRC(param) {\n var { projectRoot } = param;\n if (babelRC !== null) {\n return babelRC;\n }\n babelRC = {};\n if (projectRoot) {\n var possibleBabelRCPaths = [\n \".babelrc\",\n \".babelrc.js\",\n \".babelrc.json\",\n \"babel.config.js\",\n \"babel.config.cjs\",\n \"babel.config.mjs\",\n \"babel.config.json\"\n ];\n var foundBabelRCPath = possibleBabelRCPaths.find(function(configFileName) {\n return fs.existsSync(path.resolve(projectRoot, configFileName));\n });\n if (foundBabelRCPath) {\n babelRC.extends = path.resolve(projectRoot, foundBabelRCPath);\n }\n }\n if (!babelRC.extends) {\n babelRC.presets = [\n // { plugins: [transformImportMetaGlobPlugin] }, // Added to support Vite's `import.meta.glob`\n require(\"@react-native/babel-preset\")\n ];\n }\n return babelRC;\n };\n})();\nexport {\n loadBabelConfig\n};\n//# sourceMappingURL=loadBabelConfig.js.map\n"],"mappings":";;;;;;;;;;;AAEA,IAAI,kBAAkC,iBAAC,WAAW;CAChD,IAAI,UAAU;CACd,OAAO,SAAS,YAAY,OAAO;EACjC,IAAI,EAAE,gBAAgB;EACtB,IAAI,YAAY,MAAM;GACpB,OAAO;EACT;EACA,UAAU,CAAC;EACX,IAAI,aAAa;GACf,IAAI,uBAAuB;IACzB;IACA;IACA;IACA;IACA;IACA;IACA;GACF;GACA,IAAI,mBAAmB,qBAAqB,KAAK,SAAS,gBAAgB;IACxE,OAAO,GAAG,WAAW,KAAK,QAAQ,aAAa,cAAc,CAAC;GAChE,CAAC;GACD,IAAI,kBAAkB;IACpB,QAAQ,UAAU,KAAK,QAAQ,aAAa,gBAAgB;GAC9D;EACF;EACA,IAAI,CAAC,QAAQ,SAAS;GACpB,QAAQ,UAAU,WAER,4BAA4B,CACtC;EACF;EACA,OAAO;CACT;AACF,EAAC,CAAE"}
@@ -8,6 +8,7 @@ import remapping from "@jridgewell/remapping";
8
8
  import { TraceMap, eachMapping } from "@jridgewell/trace-mapping";
9
9
  import { shouldStripFlow, stripFlowTypes, transformHermesAsync, transformHermesLoops, transformReactNativeCodegen } from "@vxrn/compiler";
10
10
  import { withExpoPublicEnvAliases } from "@vxrn/utils/publicEnv";
11
+ import { substituteExpoVirtualEnvSource } from "./expoVirtualEnv.mjs";
11
12
  import { getPlatformEnv, metroPlatformToViteEnvironment } from "../env/platformEnv.mjs";
12
13
 
13
14
  function collectModuleLiteralBindings(program) {
@@ -1081,26 +1082,13 @@ async function configureWorkletsForWorker(projectRoot) {
1081
1082
  async function transform(config, projectRoot, filename, data, options) {
1082
1083
  assertNoUnportedBabelPlugins(options);
1083
1084
  let sourceCode = typeof data === "string" ? data : data.toString("utf8");
1084
- const environment = options.customTransformOptions?.environment;
1085
- const isClientEnvironment = environment !== "node" && environment !== "react-server";
1086
- if (isClientEnvironment && /[\\/]expo[\\/]virtual[\\/]env\.js$/.test(filename)) {
1087
- if (options.dev) {
1088
- const rel = path.relative(path.dirname(filename), projectRoot).split(path.sep).join("/");
1089
- sourceCode = `const dotEnvModules = require.context(${JSON.stringify(rel)},false,/^\\.\\/\\.env/);
1090
- export const env = !dotEnvModules.keys().length ? process.env : { ...process.env, ...['.env', '.env.development', '.env.local', '.env.development.local'].reduce((acc, file) => {
1091
- return { ...acc, ...(dotEnvModules(file)?.default ?? {}) };
1092
- }, {}) };`;
1093
- } else {
1094
- sourceCode = `export const env = new Proxy({}, {
1095
- get(target, key) {
1096
- throw new Error(\`Attempting to access internal environment variable "\${String(key)}" is not supported in production bundles.\`);
1097
- },
1098
- });`;
1099
- }
1100
- } else if (/(^|[\\/])\.env(\.(local|(development|production)(\.local)?))?$/.test(filename)) {
1101
- const { parseEnvFile } = await import("@expo/metro-config/build/transform-worker/dot-env-development");
1102
- sourceCode = `export default ${JSON.stringify(parseEnvFile(sourceCode, isClientEnvironment))};`;
1103
- }
1085
+ sourceCode = substituteExpoVirtualEnvSource({
1086
+ filename,
1087
+ src: sourceCode,
1088
+ projectRoot,
1089
+ dev: options.dev,
1090
+ environment: options.customTransformOptions?.environment
1091
+ });
1104
1092
  checkReservedStrings(sourceCode, config, options);
1105
1093
  if (filename.endsWith(".json")) {
1106
1094
  try {