Skip to content

Commit 9d72db7

Browse files
Revert "refactor(env): remove env variable reading, reaspon: meta env is statically analyzed and does not work importing from library"
This reverts commit f30c39d.
1 parent 60359b9 commit 9d72db7

File tree

1 file changed

+62
-0
lines changed

1 file changed

+62
-0
lines changed

src/env/readEnvVariable.ts

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
import { createError, createResult, type Result } from "~utils/result/Result"
2+
3+
export function readEnvVariable(name: string): string | undefined {
4+
// Check Backend/Bun/Node.js/Convex process environment first
5+
if (typeof process !== "undefined" && process.env) {
6+
return process.env[name]
7+
}
8+
// Check Frontend/Vite-style import.meta.env
9+
if (typeof import.meta !== "undefined" && import.meta.env) {
10+
return import.meta.env[name]
11+
}
12+
return undefined
13+
}
14+
15+
export function readEnvVariableOrThrow(name: string): string | undefined {
16+
// Check Backend/Bun/Node.js/Convex process environment first
17+
if (typeof process !== "undefined" && process.env) {
18+
const variable = process.env[name]
19+
if (!variable) throw new Error("process.env." + name + " not set or defined")
20+
return variable
21+
}
22+
// Check Frontend/Vite-style import.meta.env
23+
if (typeof import.meta !== "undefined" && import.meta.env) {
24+
const variable = import.meta.env[name]
25+
if (!variable) throw new Error("import.meta.env." + name + " not set or defined")
26+
return variable
27+
}
28+
throw new Error("neither process.env." + name + " nor import.meta.env." + name + " matches")
29+
}
30+
31+
export function readEnvVariableResult(name: string): Result<string> {
32+
const op = "getEnvVariableResult"
33+
// Check Backend/Bun/Node.js/Convex process environment first
34+
if (typeof process !== "undefined" && process.env) {
35+
const variable = process.env[name]
36+
if (!variable) {
37+
return createError(op, "process.env." + name + " not set or defined")
38+
}
39+
return createResult(variable)
40+
}
41+
// Check Frontend/Vite-style import.meta.env
42+
if (typeof import.meta !== "undefined" && import.meta.env) {
43+
const variable = import.meta.env[name]
44+
if (!variable) {
45+
return createError(op, "import.meta.env." + name + " not set or defined")
46+
}
47+
return createResult(variable)
48+
}
49+
return createError(op, "neither process.env." + name + " nor import.meta.env." + name + " matches")
50+
}
51+
52+
export function readEnvVariableBackendResult(name: string): Result<string> {
53+
const op = "readEnvVariableBackendResult"
54+
if (typeof process !== "undefined" && process.env) {
55+
const variable = process.env[name]
56+
if (!variable) {
57+
return createError(op, "process.env." + name + " not set or defined")
58+
}
59+
return createResult(variable)
60+
}
61+
return createError(op, "neither process.env." + name + " nor import.meta.env." + name + " matches")
62+
}

0 commit comments

Comments
 (0)