// env.ts
import { z } from 'zod';
import dotenv from 'dotenv';
import path from 'path';

const APP_DIR = 'apps/concrete-api';

const envSchema = z.object({
  NODE_ENV: z.string(),
  SUPABASE_DATABASE_URL: z.string(),
  SUPABASE_ANON_KEY: z.string(),
  SUPABASE_API_URL: z.string(),
});

// Load the correct environment variables based on the current NODE_ENV value
const envPath = path.join(
  APP_DIR,
  `./.env.${process.env.NODE_ENV || 'development'}`,
);
dotenv.config({ path: envPath });

envSchema.parse(process.env);

declare global {
  // eslint-disable-next-line @typescript-eslint/no-namespace
  namespace NodeJS {
    // eslint-disable-next-line @typescript-eslint/no-empty-interface
    interface ProcessEnv extends z.infer<typeof envSchema> {}
  }
}

export const env = process.env;
console.log(JSON.stringify(envSchema.parse(env), null, 2));