config.ts
| 1 | import path from "node:path"; |
| 2 | |
| 3 | const env = process.env; |
| 4 | |
| 5 | const config = { |
| 6 | OWNER_DISPLAY_NAME: env.OWNER_DISPLAY_NAME ?? "Admin", |
| 7 | INLINE_MAX_BYTES: parseInt(env.INLINE_MAX_BYTES ?? "", 10) || 524288, |
| 8 | MAX_UPLOAD_BYTES: |
| 9 | parseInt(env.MAX_UPLOAD_BYTES ?? "", 10) || 10 * 1024 * 1024, |
| 10 | MAX_USER_UPLOAD_BYTES: |
| 11 | parseInt(env.MAX_USER_UPLOAD_BYTES ?? "", 10) || 2 * 1024 * 1024, |
| 12 | TRUSTED_PROXY: !!env.TRUSTED_PROXY, |
| 13 | RATE_LIMIT_DISABLED: !!env.RATE_LIMIT_DISABLED, |
| 14 | SSH_DISABLED: !!env.SSH_DISABLED, |
| 15 | PORT: parseInt(env.PORT ?? "", 10) || 3000, |
| 16 | SSH_PORT: parseInt(env.SSH_PORT ?? "", 10) || 2222, |
| 17 | REGISTRATION_TYPE: (env.REGISTRATION_TYPE ?? "enabled") as |
| 18 | | "enabled" |
| 19 | | "disabled" |
| 20 | | "queue", |
| 21 | REGISTER_QUESTION: env.REGISTER_QUESTION ?? "", |
| 22 | BASE_URL: |
| 23 | env.BASE_URL ?? |
| 24 | `http://localhost:${parseInt(env.PORT ?? "", 10) || 3000}`, |
| 25 | DATA_DIR: path.resolve(env.DATA_DIR ?? "./data"), |
| 26 | HIGHLIGHT_WORKERS: parseInt(env.HIGHLIGHT_WORKERS ?? "", 10) || 4, |
| 27 | COMMITTER_NAME: env.COMMITTER_NAME ?? env.OWNER_DISPLAY_NAME ?? "Admin", |
| 28 | COMMITTER_EMAIL: "", |
| 29 | EXTRA_ALLOWED_SIGNERS_PATH: env.EXTRA_ALLOWED_SIGNERS_PATH ?? null, |
| 30 | }; |
| 31 | |
| 32 | // Derived values that depend on other config fields |
| 33 | config.COMMITTER_EMAIL = |
| 34 | env.COMMITTER_EMAIL ?? |
| 35 | `${config.OWNER_DISPLAY_NAME}@${new URL(config.BASE_URL).hostname}`; |
| 36 | |
| 37 | export default config; |
| 38 |