env.ts 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import { cleanEnv, num, str, bool } from "envalid";
  2. const env = cleanEnv(process.env, {
  3. PORT: num({ default: 3000 }),
  4. SITE_NAME: str({ example: "Kutt" }),
  5. DEFAULT_DOMAIN: str({ example: "kutt.it" }),
  6. LINK_LENGTH: num({ default: 6 }),
  7. DB_HOST: str({ default: "localhost" }),
  8. DB_PORT: num({ default: 5432 }),
  9. DB_NAME: str({ default: "postgres" }),
  10. DB_USER: str(),
  11. DB_PASSWORD: str(),
  12. DB_SSL: bool({ default: false }),
  13. DB_POOL_MIN: num({ default: 2 }),
  14. DB_POOL_MAX: num({ default: 10 }),
  15. NEO4J_DB_URI: str({ default: "" }),
  16. NEO4J_DB_USERNAME: str({ default: "" }),
  17. NEO4J_DB_PASSWORD: str({ default: "" }),
  18. REDIS_HOST: str({ default: "127.0.0.1" }),
  19. REDIS_PORT: num({ default: 6379 }),
  20. REDIS_PASSWORD: str({ default: "" }),
  21. USER_LIMIT_PER_DAY: num({ default: 50 }),
  22. NON_USER_COOLDOWN: num({ default: 10 }),
  23. DEFAULT_MAX_STATS_PER_LINK: num({ default: 5000 }),
  24. DISALLOW_ANONYMOUS_LINKS: bool({ default: false }),
  25. DISALLOW_REGISTRATION: bool({ default: false }),
  26. CUSTOM_DOMAIN_USE_HTTPS: bool({ default: false }),
  27. JWT_SECRET: str(),
  28. ADMIN_EMAILS: str({ default: "" }),
  29. RECAPTCHA_SITE_KEY: str({ default: "" }),
  30. RECAPTCHA_SECRET_KEY: str({ default: "" }),
  31. GOOGLE_SAFE_BROWSING_KEY: str({ default: "" }),
  32. GOOGLE_ANALYTICS: str({ default: "" }),
  33. GOOGLE_ANALYTICS_UNIVERSAL: str({ default: "" }),
  34. MAIL_HOST: str(),
  35. MAIL_PORT: num(),
  36. MAIL_SECURE: bool({ default: false }),
  37. MAIL_USER: str(),
  38. MAIL_FROM: str({ default: "", example: "Kutt <support@kutt.it>" }),
  39. MAIL_PASSWORD: str(),
  40. REPORT_EMAIL: str({ default: "" }),
  41. CONTACT_EMAIL: str({ default: "" }),
  42. SENTRY_PRIVATE_DSN: str({ default: "" }),
  43. SENTRY_PUBLIC_DSN: str({ default: "" })
  44. });
  45. export default env;