/**
 * 环境变量加载模块
 * 根据 NODE_ENV 自动加载对应的 .env 文件
 */
import { config } from 'dotenv';
import { resolve } from 'path';

/** 运行环境类型 */
export type NodeEnv = 'development' | 'production';

/** 获取当前运行环境 */
export const getNodeEnv = (): NodeEnv => {
  const env = process.env.NODE_ENV;
  if (env === 'production') {
    return 'production';
  }
  return 'development';
};

/** 是否生产环境 */
export const isProduction = (): boolean => getNodeEnv() === 'production';

/** 是否开发环境 */
export const isDevelopment = (): boolean => getNodeEnv() === 'development';

/** 加载环境变量 */
export const loadEnv = (): void => {
  const env = getNodeEnv();
  const envFile = `.env.${env}`;

  // 先加载默认 .env 文件（如果存在）
  config({ path: resolve(process.cwd(), '.env') });

  // 再加载环境特定的 .env 文件（覆盖默认值）
  config({ path: resolve(process.cwd(), envFile) });

  // 最后加载本地 .env.local 文件（最高优先级，不提交到版本控制）
  config({ path: resolve(process.cwd(), '.env.local'), override: true });
};

// 自动加载环境变量
loadEnv();
