@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.
- package/dist/cjs/env/platformEnv.cjs +2 -0
- package/dist/cjs/env/platformEnv.native.cjs +2 -0
- package/dist/cjs/env/platformEnv.native.js +2 -0
- package/dist/cjs/env/platformEnv.native.js.map +1 -1
- package/dist/cjs/index.cjs +0 -2
- package/dist/cjs/index.native.cjs +0 -2
- package/dist/cjs/index.native.js +0 -2
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/metro-config/getMetroBabelConfigFromViteConfig.cjs +10 -15
- package/dist/cjs/metro-config/getMetroBabelConfigFromViteConfig.native.cjs +27 -48
- package/dist/cjs/metro-config/getMetroBabelConfigFromViteConfig.native.js +27 -48
- package/dist/cjs/metro-config/getMetroBabelConfigFromViteConfig.native.js.map +1 -1
- package/dist/cjs/metro-config/getMetroConfigFromViteConfig.cjs +71 -38
- package/dist/cjs/metro-config/getMetroConfigFromViteConfig.native.cjs +86 -42
- package/dist/cjs/metro-config/getMetroConfigFromViteConfig.native.js +86 -42
- package/dist/cjs/metro-config/getMetroConfigFromViteConfig.native.js.map +1 -1
- package/dist/cjs/transformer/babel-transformer.cjs +53 -4
- package/dist/cjs/transformer/babel-transformer.native.cjs +65 -6
- package/dist/cjs/transformer/babel-transformer.native.js +65 -6
- package/dist/cjs/transformer/babel-transformer.native.js.map +1 -1
- package/dist/cjs/transformer/expoVirtualEnv.cjs +92 -0
- package/dist/cjs/transformer/expoVirtualEnv.native.cjs +113 -0
- package/dist/cjs/transformer/expoVirtualEnv.native.js +115 -0
- package/dist/cjs/transformer/expoVirtualEnv.native.js.map +1 -0
- package/dist/cjs/transformer/loadBabelConfig.cjs +1 -1
- package/dist/cjs/transformer/loadBabelConfig.native.cjs +1 -1
- package/dist/cjs/transformer/loadBabelConfig.native.js +1 -1
- package/dist/cjs/transformer/loadBabelConfig.native.js.map +1 -1
- package/dist/cjs/transformer/metroNativeWorker.cjs +20 -29
- package/dist/cjs/transformer/metroNativeWorker.native.cjs +24 -30
- package/dist/cjs/transformer/metroNativeWorker.native.js +24 -30
- package/dist/cjs/transformer/metroNativeWorker.native.js.map +1 -1
- package/dist/cjs/transformer/transformSync.cjs +3 -3
- package/dist/cjs/transformer/transformSync.native.cjs +3 -3
- package/dist/cjs/transformer/transformSync.native.js +3 -3
- package/dist/cjs/transformer/transformSync.native.js.map +1 -1
- package/dist/cjs/utils/exit.cjs +1 -1
- package/dist/cjs/utils/exit.native.cjs +1 -1
- package/dist/cjs/utils/exit.native.js +1 -1
- package/dist/cjs/utils/exit.native.js.map +1 -1
- package/dist/esm/env/platformEnv.mjs +2 -0
- package/dist/esm/env/platformEnv.mjs.map +1 -1
- package/dist/esm/env/platformEnv.native.js +2 -0
- package/dist/esm/env/platformEnv.native.js.map +1 -1
- package/dist/esm/index.js +1 -2
- package/dist/esm/index.mjs +1 -2
- package/dist/esm/index.native.js +1 -2
- package/dist/esm/metro-config/getMetroBabelConfigFromViteConfig.mjs +11 -15
- package/dist/esm/metro-config/getMetroBabelConfigFromViteConfig.mjs.map +1 -1
- package/dist/esm/metro-config/getMetroBabelConfigFromViteConfig.native.js +28 -48
- package/dist/esm/metro-config/getMetroBabelConfigFromViteConfig.native.js.map +1 -1
- package/dist/esm/metro-config/getMetroConfigFromViteConfig.mjs +71 -38
- package/dist/esm/metro-config/getMetroConfigFromViteConfig.mjs.map +1 -1
- package/dist/esm/metro-config/getMetroConfigFromViteConfig.native.js +86 -42
- package/dist/esm/metro-config/getMetroConfigFromViteConfig.native.js.map +1 -1
- package/dist/esm/transformer/babel-transformer.mjs +133 -96
- package/dist/esm/transformer/babel-transformer.mjs.map +1 -1
- package/dist/esm/transformer/babel-transformer.native.js +147 -103
- package/dist/esm/transformer/babel-transformer.native.js.map +1 -1
- package/dist/esm/transformer/expoVirtualEnv.mjs +67 -0
- package/dist/esm/transformer/expoVirtualEnv.mjs.map +1 -0
- package/dist/esm/transformer/expoVirtualEnv.native.js +86 -0
- package/dist/esm/transformer/expoVirtualEnv.native.js.map +1 -0
- package/dist/esm/transformer/loadBabelConfig.mjs +1 -1
- package/dist/esm/transformer/loadBabelConfig.mjs.map +1 -1
- package/dist/esm/transformer/loadBabelConfig.native.js +1 -1
- package/dist/esm/transformer/loadBabelConfig.native.js.map +1 -1
- package/dist/esm/transformer/metroNativeWorker.mjs +20 -29
- package/dist/esm/transformer/metroNativeWorker.mjs.map +1 -1
- package/dist/esm/transformer/metroNativeWorker.native.js +24 -30
- package/dist/esm/transformer/metroNativeWorker.native.js.map +1 -1
- package/dist/esm/transformer/transformSync.mjs +3 -3
- package/dist/esm/transformer/transformSync.mjs.map +1 -1
- package/dist/esm/transformer/transformSync.native.js +3 -3
- package/dist/esm/transformer/transformSync.native.js.map +1 -1
- package/dist/esm/utils/exit.mjs +1 -1
- package/dist/esm/utils/exit.mjs.map +1 -1
- package/dist/esm/utils/exit.native.js +1 -1
- package/dist/esm/utils/exit.native.js.map +1 -1
- package/package.json +7 -9
- package/src/babel-plugins/import-meta-env-plugin.ts +1 -1
- package/src/env/platformEnv.test.ts +12 -2
- package/src/env/platformEnv.ts +3 -0
- package/src/index.ts +0 -2
- package/src/metro-config/getMetroBabelConfigFromViteConfig.test.ts +19 -25
- package/src/metro-config/getMetroBabelConfigFromViteConfig.ts +8 -27
- package/src/metro-config/getMetroConfigFromViteConfig.test.ts +60 -0
- package/src/metro-config/getMetroConfigFromViteConfig.ts +119 -96
- package/src/plugins/metroPlugin.ts +3 -6
- package/src/transformer/babel-transformer.test.ts +118 -0
- package/src/transformer/babel-transformer.ts +82 -15
- package/src/transformer/expoVirtualEnv.integration.test.ts +106 -0
- package/src/transformer/expoVirtualEnv.test.ts +72 -0
- package/src/transformer/expoVirtualEnv.ts +115 -0
- package/src/transformer/loadBabelConfig.ts +1 -1
- package/src/transformer/metroNativeWorker.test.ts +134 -17
- package/src/transformer/metroNativeWorker.ts +43 -51
- package/src/transformer/transformSync.test.ts +22 -0
- package/src/transformer/transformSync.ts +4 -4
- package/src/utils/exit.ts +2 -2
- package/src/utils/getTerminalReporter.ts +1 -1
- package/src/utils/projectImport.ts +2 -2
- package/types/babel-plugins/import-meta-env-plugin.d.ts +1 -1
- package/types/env/platformEnv.d.ts +1 -0
- package/types/env/platformEnv.d.ts.map +1 -1
- package/types/index.d.ts +0 -2
- package/types/index.d.ts.map +1 -1
- package/types/metro-config/getMetroBabelConfigFromViteConfig.d.ts +1 -1
- package/types/metro-config/getMetroBabelConfigFromViteConfig.d.ts.map +1 -1
- package/types/metro-config/getMetroConfigFromViteConfig.d.ts +2 -2
- package/types/metro-config/getMetroConfigFromViteConfig.d.ts.map +1 -1
- package/types/plugins/metroPlugin.d.ts +2 -4
- package/types/plugins/metroPlugin.d.ts.map +1 -1
- package/types/transformer/babel-transformer.d.ts +10 -1
- package/types/transformer/babel-transformer.d.ts.map +1 -1
- package/types/transformer/expoVirtualEnv.d.ts +8 -0
- package/types/transformer/expoVirtualEnv.d.ts.map +1 -0
- package/types/transformer/metroNativeWorker.d.ts +3 -5
- package/types/transformer/metroNativeWorker.d.ts.map +1 -1
- package/types/utils/projectImport.d.ts +2 -2
- package/dist/cjs/plugins/expoManifestRequestHandlerPlugin.cjs +0 -59
- package/dist/cjs/plugins/expoManifestRequestHandlerPlugin.native.cjs +0 -62
- package/dist/cjs/plugins/expoManifestRequestHandlerPlugin.native.js +0 -64
- package/dist/cjs/plugins/expoManifestRequestHandlerPlugin.native.js.map +0 -1
- package/dist/cjs/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.cjs +0 -35
- package/dist/cjs/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.native.cjs +0 -37
- package/dist/cjs/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.native.js +0 -39
- package/dist/cjs/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.native.js.map +0 -1
- package/dist/esm/plugins/expoManifestRequestHandlerPlugin.mjs +0 -40
- package/dist/esm/plugins/expoManifestRequestHandlerPlugin.mjs.map +0 -1
- package/dist/esm/plugins/expoManifestRequestHandlerPlugin.native.js +0 -41
- package/dist/esm/plugins/expoManifestRequestHandlerPlugin.native.js.map +0 -1
- package/dist/esm/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.mjs +0 -15
- package/dist/esm/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.mjs.map +0 -1
- package/dist/esm/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.native.js +0 -15
- package/dist/esm/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.native.js.map +0 -1
- package/src/plugins/expoManifestRequestHandlerPlugin.ts +0 -88
- package/src/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.ts +0 -28
- package/types/plugins/expoManifestRequestHandlerPlugin.d.ts +0 -14
- package/types/plugins/expoManifestRequestHandlerPlugin.d.ts.map +0 -1
- package/types/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.d.ts +0 -5
- package/types/utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName.d.ts.map +0 -1
|
@@ -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"}
|
|
@@ -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
|
|
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"}
|
|
@@ -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
|
|
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"}
|
|
@@ -7,6 +7,8 @@ import MagicString from "magic-string";
|
|
|
7
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
|
+
import { withExpoPublicEnvAliases } from "@vxrn/utils/publicEnv";
|
|
11
|
+
import { substituteExpoVirtualEnvSource } from "./expoVirtualEnv.mjs";
|
|
10
12
|
import { getPlatformEnv, metroPlatformToViteEnvironment } from "../env/platformEnv.mjs";
|
|
11
13
|
|
|
12
14
|
function collectModuleLiteralBindings(program) {
|
|
@@ -240,6 +242,11 @@ function applyInlineEnvVars(code, filename, isProduction, env = {}) {
|
|
|
240
242
|
throw new Error(`[vxrn/metro] Failed to parse ${filename} for env inlining: ${parsed.errors[0].message}`);
|
|
241
243
|
}
|
|
242
244
|
if (!parsed?.program) return code;
|
|
245
|
+
const processPublicEnv = Object.fromEntries(Object.entries(process.env).filter(([key]) => key.startsWith("ONE_PUBLIC_") || key.startsWith("EXPO_PUBLIC_")));
|
|
246
|
+
const effectiveEnv = withExpoPublicEnvAliases({
|
|
247
|
+
...processPublicEnv,
|
|
248
|
+
...env
|
|
249
|
+
});
|
|
243
250
|
const ms = new MagicString(code);
|
|
244
251
|
const edits = [];
|
|
245
252
|
const known = /* @__PURE__ */ new Map();
|
|
@@ -272,27 +279,24 @@ function applyInlineEnvVars(code, filename, isProduction, env = {}) {
|
|
|
272
279
|
replace(node, process.env.ONE_SERVER_URL || "");
|
|
273
280
|
return;
|
|
274
281
|
}
|
|
275
|
-
if (isProcessEnv && !isAssignmentTarget && key?.startsWith("EXPO_PUBLIC_")) {
|
|
276
|
-
|
|
277
|
-
}
|
|
278
|
-
if (isProcessEnv && !isAssignmentTarget && key?.startsWith("ONE_PUBLIC_")) {
|
|
279
|
-
replace(node, env[key] ?? process.env[key] ?? void 0);
|
|
282
|
+
if (isProcessEnv && !isAssignmentTarget && (key?.startsWith("ONE_PUBLIC_") || key?.startsWith("EXPO_PUBLIC_"))) {
|
|
283
|
+
replace(node, effectiveEnv[key] ?? void 0);
|
|
280
284
|
return;
|
|
281
285
|
}
|
|
282
286
|
if (!isAssignmentTarget && isMember && isImportMeta(obj.object) && keyOf(obj.property, obj.computed) === "env" && key !== void 0) {
|
|
283
|
-
replace(node,
|
|
287
|
+
replace(node, effectiveEnv[key]);
|
|
284
288
|
return;
|
|
285
289
|
}
|
|
286
290
|
if (!isAssignmentTarget && isImportMeta(obj) && key === "env") {
|
|
287
291
|
edits.push({
|
|
288
292
|
start: node.start,
|
|
289
293
|
end: node.end,
|
|
290
|
-
text: JSON.stringify(
|
|
294
|
+
text: JSON.stringify(effectiveEnv)
|
|
291
295
|
});
|
|
292
296
|
return;
|
|
293
297
|
}
|
|
294
|
-
if (isProcessEnv && !isAssignmentTarget && key !== void 0 && key in
|
|
295
|
-
replace(node,
|
|
298
|
+
if (isProcessEnv && !isAssignmentTarget && key !== void 0 && key in effectiveEnv) {
|
|
299
|
+
replace(node, effectiveEnv[key]);
|
|
296
300
|
return;
|
|
297
301
|
}
|
|
298
302
|
}
|
|
@@ -1078,26 +1082,13 @@ async function configureWorkletsForWorker(projectRoot) {
|
|
|
1078
1082
|
async function transform(config, projectRoot, filename, data, options) {
|
|
1079
1083
|
assertNoUnportedBabelPlugins(options);
|
|
1080
1084
|
let sourceCode = typeof data === "string" ? data : data.toString("utf8");
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
return { ...acc, ...(dotEnvModules(file)?.default ?? {}) };
|
|
1089
|
-
}, {}) };`;
|
|
1090
|
-
} else {
|
|
1091
|
-
sourceCode = `export const env = new Proxy({}, {
|
|
1092
|
-
get(target, key) {
|
|
1093
|
-
throw new Error(\`Attempting to access internal environment variable "\${String(key)}" is not supported in production bundles.\`);
|
|
1094
|
-
},
|
|
1095
|
-
});`;
|
|
1096
|
-
}
|
|
1097
|
-
} else if (/(^|[\\/])\.env(\.(local|(development|production)(\.local)?))?$/.test(filename)) {
|
|
1098
|
-
const { parseEnvFile } = await import("@expo/metro-config/build/transform-worker/dot-env-development");
|
|
1099
|
-
sourceCode = `export default ${JSON.stringify(parseEnvFile(sourceCode, isClientEnvironment))};`;
|
|
1100
|
-
}
|
|
1085
|
+
sourceCode = substituteExpoVirtualEnvSource({
|
|
1086
|
+
filename,
|
|
1087
|
+
src: sourceCode,
|
|
1088
|
+
projectRoot,
|
|
1089
|
+
dev: options.dev,
|
|
1090
|
+
environment: options.customTransformOptions?.environment
|
|
1091
|
+
});
|
|
1101
1092
|
checkReservedStrings(sourceCode, config, options);
|
|
1102
1093
|
if (filename.endsWith(".json")) {
|
|
1103
1094
|
try {
|