- Add explicit IRouter type to all route files - Add explicit Express type to app.ts - Fix env.ts by moving getCorsOrigins after parsing - Fix token.ts SignOptions type for expiresIn - Cast req.params.id to String() in controllers Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
31 lines
940 B
TypeScript
31 lines
940 B
TypeScript
import { z } from 'zod';
|
|
import { config } from 'dotenv';
|
|
import { resolve } from 'path';
|
|
|
|
// Load .env file from the api package root
|
|
config({ path: resolve(process.cwd(), '.env') });
|
|
|
|
const envSchema = z.object({
|
|
NODE_ENV: z.enum(['development', 'production', 'test']).default('development'),
|
|
PORT: z.string().default('4000'),
|
|
DATABASE_URL: z.string(),
|
|
JWT_SECRET: z.string().min(32),
|
|
JWT_EXPIRES_IN: z.string().default('15m'),
|
|
JWT_REFRESH_EXPIRES_IN: z.string().default('7d'),
|
|
CORS_ORIGIN: z.string().default('http://localhost:3000'),
|
|
});
|
|
|
|
const parsed = envSchema.safeParse(process.env);
|
|
|
|
if (!parsed.success) {
|
|
console.error('❌ Invalid environment variables:', parsed.error.flatten().fieldErrors);
|
|
process.exit(1);
|
|
}
|
|
|
|
export const env = parsed.data;
|
|
|
|
// Parse CORS origins (comma-separated) into array
|
|
export function getCorsOrigins(): string[] {
|
|
return env.CORS_ORIGIN.split(',').map(origin => origin.trim());
|
|
}
|