import { registerAs } from "@nestjs/config"; export const appConfig = registerAs("app", () => ({ env: process.env.NODE_ENV || "development", port: parseInt(process.env.PORT || "3005", 10), isDevelopment: process.env.NODE_ENV === "development", isProduction: process.env.NODE_ENV === "production", })); export const databaseConfig = registerAs("database", () => ({ url: process.env.DATABASE_URL, })); export const jwtConfig = registerAs("jwt", () => ({ secret: process.env.JWT_SECRET, accessExpiration: process.env.JWT_ACCESS_EXPIRATION || "15m", refreshExpiration: process.env.JWT_REFRESH_EXPIRATION || "7d", })); export const redisConfig = registerAs("redis", () => ({ enabled: process.env.REDIS_ENABLED === "true", host: process.env.REDIS_HOST || "localhost", port: parseInt(process.env.REDIS_PORT || "6379", 10), password: process.env.REDIS_PASSWORD || undefined, })); export const i18nConfig = registerAs("i18n", () => ({ defaultLanguage: process.env.DEFAULT_LANGUAGE || "en", fallbackLanguage: process.env.FALLBACK_LANGUAGE || "en", })); export const featuresConfig = registerAs("features", () => ({ mail: process.env.ENABLE_MAIL === "true", s3: process.env.ENABLE_S3 === "true", websocket: process.env.ENABLE_WEBSOCKET === "true", multiTenancy: process.env.ENABLE_MULTI_TENANCY === "true", })); export const mailConfig = registerAs("mail", () => ({ host: process.env.MAIL_HOST, port: parseInt(process.env.MAIL_PORT || "587", 10), user: process.env.MAIL_USER, password: process.env.MAIL_PASSWORD, from: process.env.MAIL_FROM, })); export const s3Config = registerAs("s3", () => ({ endpoint: process.env.S3_ENDPOINT, accessKey: process.env.S3_ACCESS_KEY, secretKey: process.env.S3_SECRET_KEY, bucket: process.env.S3_BUCKET, region: process.env.S3_REGION || "us-east-1", })); export const throttleConfig = registerAs("throttle", () => ({ ttl: parseInt(process.env.THROTTLE_TTL || "60000", 10), limit: parseInt(process.env.THROTTLE_LIMIT || "100", 10), }));