49 lines
1.7 KiB
TypeScript
49 lines
1.7 KiB
TypeScript
import consola from "consola";
|
|
import { config as configDotenv } from 'dotenv';
|
|
|
|
configDotenv();
|
|
export const config = {
|
|
internal_port: parseInt(process.env.APP_PORT) || 4010,
|
|
development: process.env.NODE_ENV === "production",
|
|
version: process.env.VERSION || require('../package.json').version,
|
|
api_key: getApiKey(),
|
|
app_url: process.env.APP_URL || "http://localhost:8080",
|
|
mail_server: process.env.MAIL_SERVER,
|
|
mail_port: Number(process.env.MAIL_PORT) || 25,
|
|
mail_user: process.env.MAIL_USER,
|
|
mail_password: process.env.MAIL_PASSWORD,
|
|
mail_from: process.env.MAIL_FROM,
|
|
privacy_url: process.env.PRIVACY_URL || "/privacy",
|
|
imprint_url: process.env.IMPRINT_URL || "/imprint",
|
|
copyright_owner: process.env.COPYRIGHT_OWNER || "LfK!",
|
|
event_name: process.env.EVENT_NAME || "Testing 4 Kaya!",
|
|
contact_mail: process.env.CONTACT_MAIL || process.env.MAIL_FROM,
|
|
}
|
|
let errors = 0
|
|
if (typeof config.internal_port !== "number") {
|
|
errors++
|
|
}
|
|
if (typeof config.development !== "boolean") {
|
|
errors++
|
|
}
|
|
|
|
function getApiKey(): string {
|
|
const key = process.env.API_KEY;
|
|
if (!key) {
|
|
consola.info("No API key set - generating a random one...");
|
|
let result = '';
|
|
const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
|
const charactersLength = characters.length;
|
|
for (var i = 0; i < 64; i++) {
|
|
result += characters.charAt(Math.floor(Math.random() * charactersLength));
|
|
}
|
|
consola.info(`API KEY: ${result}`)
|
|
return result;
|
|
}
|
|
if (key.length < 64) {
|
|
consola.error(`API key is too short - minimum: 64, current: ${key.length}`)
|
|
throw new Error("API_KEY too short.")
|
|
}
|
|
return key
|
|
}
|
|
export let e = errors |