From 886c2e85397e0f40e49a6ee26e336c795fd38c2c Mon Sep 17 00:00:00 2001 From: Anthony GAEREMYNCK <1@anthony.sh> Date: Sat, 1 Aug 2026 21:57:37 +0200 Subject: [PATCH] feat(video): add configurable VIDEO_JOB_TIMEOUT_MS Co-Authored-By: Claude Sonnet 5 --- src/config.js | 1 + test/config.test.js | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/src/config.js b/src/config.js index 25174a8..88a7c53 100644 --- a/src/config.js +++ b/src/config.js @@ -22,6 +22,7 @@ export function loadConfig() { workerPollIntervalMs: Number(process.env.WORKER_POLL_INTERVAL_MS ?? 1500), workerConcurrency: Number(process.env.WORKER_CONCURRENCY ?? 3), ebookJobTimeoutMs: Number(process.env.EBOOK_JOB_TIMEOUT_MS ?? 180000), + videoJobTimeoutMs: Number(process.env.VIDEO_JOB_TIMEOUT_MS ?? 300000), rateLimitMaxJobs: Number(process.env.RATE_LIMIT_MAX_JOBS ?? 20), rateLimitWindowMinutes: Number(process.env.RATE_LIMIT_WINDOW_MINUTES ?? 10), }; diff --git a/test/config.test.js b/test/config.test.js index fc8df86..a038f78 100644 --- a/test/config.test.js +++ b/test/config.test.js @@ -63,6 +63,20 @@ describe('loadConfig', () => { expect(loadConfig().ebookJobTimeoutMs).toBe(240000); }); + it('defaults videoJobTimeoutMs to 300000ms and reads VIDEO_JOB_TIMEOUT_MS when set', () => { + process.env.STORAGE_DIR = './storage'; + process.env.DB_HOST = 'localhost'; + process.env.DB_USER = 'user'; + process.env.DB_PASSWORD = 'pass'; + process.env.DB_NAME = 'db'; + delete process.env.VIDEO_JOB_TIMEOUT_MS; + + expect(loadConfig().videoJobTimeoutMs).toBe(300000); + + process.env.VIDEO_JOB_TIMEOUT_MS = '400000'; + expect(loadConfig().videoJobTimeoutMs).toBe(400000); + }); + it('throws listing every missing required variable', () => { for (const key of REQUIRED_VARS) delete process.env[key];