Files
Papo/src/config/env.ts
2025-12-03 00:40:43 +01:00

40 lines
1.4 KiB
TypeScript

import dotenv from 'dotenv';
import path from 'path';
dotenv.config({ path: path.resolve(process.cwd(), '.env') });
const required = ['DISCORD_TOKEN', 'DISCORD_CLIENT_ID', 'DISCORD_CLIENT_SECRET', 'DATABASE_URL'] as const;
required.forEach((key) => {
if (!process.env[key]) {
console.warn(`[config] Missing environment variable ${key}`);
}
});
const normalizeBasePath = (raw?: string) => {
if (!raw) return '/ucp';
const withSlash = raw.startsWith('/') ? raw : `/${raw}`;
return withSlash.replace(/\/+$/, '');
};
export const env = {
token: process.env.DISCORD_TOKEN ?? '',
clientId: process.env.DISCORD_CLIENT_ID ?? '',
clientSecret: process.env.DISCORD_CLIENT_SECRET ?? '',
guildId: process.env.DISCORD_GUILD_ID ?? '',
guildIds: (process.env.DISCORD_GUILD_IDS ?? process.env.DISCORD_GUILD_ID ?? '')
.split(',')
.map((s) => s.trim())
.filter(Boolean),
databaseUrl: process.env.DATABASE_URL ?? '',
port: Number(process.env.PORT ?? 3000),
sessionSecret: process.env.SESSION_SECRET ?? 'papo_dev_secret',
supportRoleId: process.env.SUPPORT_ROLE_ID ?? '',
webBasePath: normalizeBasePath(process.env.WEB_BASE_PATH ?? '/ucp'),
publicBaseUrl: process.env.DASHBOARD_BASE_URL ? process.env.DASHBOARD_BASE_URL.replace(/\/+$/, '') : undefined,
ownerIds: (process.env.OWNER_IDS ?? process.env.OWNER_ID ?? '')
.split(',')
.map((s) => s.trim())
.filter(Boolean)
};