learning_ai_common_plat/services/platform-service/src/lib/config.ts
saravanakumardb1 e1ab956ac3 feat(services): add platform-service (auth, audit, flags, notifications, blob)
- Copied as-is from learning_voice_ai_agent/services/platform-service
- 55 tests passing (vitest)
- Fastify 5 + Cosmos DB + jose + bcryptjs + Zod
- Modules: auth, audit, flags, notifications, blob, ratelimit
- Port 4003
2026-02-12 11:39:00 -08:00

32 lines
1.1 KiB
TypeScript

import { z } from "zod";
const envSchema = z.object({
// Server
PORT: z.coerce.number().default(4003),
HOST: z.string().default("0.0.0.0"),
NODE_ENV: z.enum(["development", "production", "test"]).default("development"),
CORS_ORIGIN: z.string().optional(),
SERVICE_NAME: z.string().default("platform-service"),
// Database
COSMOS_ENDPOINT: z.string().min(1, "COSMOS_ENDPOINT is required"),
COSMOS_KEY: z.string().min(1, "COSMOS_KEY is required"),
COSMOS_DATABASE: z.string().default("lysnrai"),
// Auth
JWT_SECRET: z.string().min(1, "JWT_SECRET is required"),
// Blob Storage
AZURE_BLOB_CONNECTION_STRING: z.string().optional(),
AZURE_BLOB_ACCOUNT_NAME: z.string().optional(),
AZURE_BLOB_ACCOUNT_KEY: z.string().optional(),
// Features
RATE_LIMIT_CONFIG_JSON: z.string().optional(),
}).refine(data =>
data.AZURE_BLOB_CONNECTION_STRING || (data.AZURE_BLOB_ACCOUNT_NAME && data.AZURE_BLOB_ACCOUNT_KEY),
{ message: "Must provide AZURE_BLOB_CONNECTION_STRING or AZURE_BLOB_ACCOUNT_NAME/KEY" }
);
export const config = envSchema.parse(process.env);