config.ts
Raw
1import path from "node:path";
2
3const env = process.env;
4
5const 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
33config.COMMITTER_EMAIL =
34 env.COMMITTER_EMAIL ??
35 `${config.OWNER_DISPLAY_NAME}@${new URL(config.BASE_URL).hostname}`;
36
37export default config;
38