class Secrets { public readonly serverKey: string; public readonly adminPassword: string; public readonly adminEmail: string; private constructor({ serverKey, adminPassword, adminEmail, }: any) { this.serverKey = serverKey; this.adminPassword = adminPassword; this.adminEmail = adminEmail; } public static fromEnv(): Secrets { if (!process.env.SERVER_KEY?.length) { throw new Error( 'SERVER_KEY not found in environment.\n' + 'Generate one with `openssl rand -base64 32` and add it to your environment.' ); } if (!process.env.ADMIN_PASSWORD?.length) { throw new Error('ADMIN_PASSWORD not found in environment.'); } if (!process.env.ADMIN_EMAIL?.length) { throw new Error('ADMIN_EMAIL not found in environment.'); } return new Secrets({ serverKey: process.env.SERVER_KEY, adminPassword: process.env.ADMIN_PASSWORD, adminEmail: process.env.ADMIN_EMAIL, }); } } export default Secrets;