46 lines
1.1 KiB
TypeScript
46 lines
1.1 KiB
TypeScript
/**
|
|
* Safely access environment variables across different runtimes and builders.
|
|
* Supports Vite's import.meta.env and Bun's process.env (used in bun build).
|
|
*/
|
|
export const getEnv = (key: string, defaultValue = ""): string => {
|
|
// 1. Try Vite's import.meta.env
|
|
try {
|
|
if (import.meta.env?.[key]) {
|
|
return import.meta.env[key];
|
|
}
|
|
} catch {}
|
|
|
|
// 2. Try process.env (injected by bun build --env)
|
|
try {
|
|
if (typeof process !== "undefined" && process.env[key]) {
|
|
return process.env[key];
|
|
}
|
|
} catch {}
|
|
|
|
return defaultValue;
|
|
};
|
|
|
|
export const VITE_PUBLIC_URL = (() => {
|
|
// Priority:
|
|
// 1. BETTER_AUTH_URL (standard for better-auth)
|
|
// 2. VITE_PUBLIC_URL (our app standard)
|
|
// 3. window.location.origin (browser fallback)
|
|
const envUrl = getEnv("BETTER_AUTH_URL") || getEnv("VITE_PUBLIC_URL");
|
|
if (envUrl) return envUrl;
|
|
|
|
// Fallback for browser
|
|
if (typeof window !== "undefined") {
|
|
return window.location.origin;
|
|
}
|
|
|
|
return "http://localhost:3000";
|
|
})();
|
|
|
|
export const IS_DEV = (() => {
|
|
try {
|
|
return import.meta.env?.DEV;
|
|
} catch {
|
|
return false;
|
|
}
|
|
})();
|