env.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. require("dotenv").config();
  2. const { cleanEnv, num, str, bool } = require("envalid");
  3. const supportedDBClients = [
  4. "pg",
  5. "pg-native",
  6. "sqlite3",
  7. "better-sqlite3",
  8. "mysql",
  9. "mysql2"
  10. ];
  11. const env = cleanEnv(process.env, {
  12. PORT: num({ default: 3000 }),
  13. SITE_NAME: str({ example: "Kutt" }),
  14. DEFAULT_DOMAIN: str({ example: "kutt.it" }),
  15. LINK_LENGTH: num({ default: 6 }),
  16. DB_CLIENT: str({ choices: supportedDBClients }),
  17. DB_FILENAME: str({ default: "data" }),
  18. DB_HOST: str({ default: "localhost" }),
  19. DB_PORT: num({ default: 5432 }),
  20. DB_NAME: str({ default: "postgres" }),
  21. DB_USER: str({ default: "postgres" }),
  22. DB_PASSWORD: str({ default: "" }),
  23. DB_SSL: bool({ default: false }),
  24. DB_POOL_MIN: num({ default: 0 }),
  25. DB_POOL_MAX: num({ default: 10 }),
  26. REDIS_HOST: str({ default: "127.0.0.1" }),
  27. REDIS_PORT: num({ default: 6379 }),
  28. REDIS_PASSWORD: str({ default: "" }),
  29. REDIS_DB: num({ default: 0 }),
  30. USER_LIMIT_PER_DAY: num({ default: 50 }),
  31. NON_USER_COOLDOWN: num({ default: 10 }),
  32. DEFAULT_MAX_STATS_PER_LINK: num({ default: 5000 }),
  33. DISALLOW_ANONYMOUS_LINKS: bool({ default: false }),
  34. DISALLOW_REGISTRATION: bool({ default: false }),
  35. SERVER_IP_ADDRESS: str({ default: "" }),
  36. CUSTOM_DOMAIN_USE_HTTPS: bool({ default: false }),
  37. JWT_SECRET: str(),
  38. ADMIN_EMAILS: str({ default: "" }),
  39. GOOGLE_SAFE_BROWSING_KEY: str({ default: "" }),
  40. MAIL_ENABLED: bool({ default: false }),
  41. MAIL_HOST: str({ default: "" }),
  42. MAIL_PORT: num({ default: 587 }),
  43. MAIL_SECURE: bool({ default: false }),
  44. MAIL_USER: str({ default: "" }),
  45. MAIL_FROM: str({ default: "", example: "Kutt <support@kutt.it>" }),
  46. MAIL_PASSWORD: str({ default: "" }),
  47. REPORT_EMAIL: str({ default: "" }),
  48. CONTACT_EMAIL: str({ default: "" })
  49. });
  50. module.exports = env;