Better error handling and extract validation logic to a re-usable function.

This commit is contained in:
Sander Declerck 2025-11-03 14:54:42 +01:00
parent 1e7cd74364
commit 8c872b3861
No known key found for this signature in database

View file

@ -18,15 +18,15 @@ export function getScanTimeout() {
const config = readConfigFile(); const config = readConfigFile();
if (process.env.AIKIDO_SCAN_TIMEOUT_MS) { if (process.env.AIKIDO_SCAN_TIMEOUT_MS) {
const scanTimeout = Number(process.env.AIKIDO_SCAN_TIMEOUT_MS); const scanTimeout = validateTimeout(process.env.AIKIDO_SCAN_TIMEOUT_MS);
if (!Number.isNaN(scanTimeout) && scanTimeout > 0) { if (scanTimeout != null) {
return scanTimeout; return scanTimeout;
} }
} }
if (config.scanTimeout) { if (config.scanTimeout) {
const scanTimeout = Number(config.scanTimeout); const scanTimeout = validateTimeout(config.scanTimeout);
if (!Number.isNaN(scanTimeout) && scanTimeout > 0) { if (scanTimeout != null) {
return scanTimeout; return scanTimeout;
} }
} }
@ -34,6 +34,19 @@ export function getScanTimeout() {
return 10000; // Default to 10 seconds return 10000; // Default to 10 seconds
} }
/**
*
* @param {any} value
* @returns {number?}
*/
function validateTimeout(value) {
const timeout = Number(value);
if (!Number.isNaN(timeout) && timeout > 0) {
return timeout;
}
return null;
}
/** /**
* @param {import("../api/aikido.js").MalwarePackage[]} data * @param {import("../api/aikido.js").MalwarePackage[]} data
* @param {string | number} version * @param {string | number} version
@ -100,8 +113,14 @@ function readConfigFile() {
}; };
} }
const data = fs.readFileSync(configFilePath, "utf8"); try {
return JSON.parse(data); const data = fs.readFileSync(configFilePath, "utf8");
return JSON.parse(data);
} catch {
return {
scanTimeout: undefined,
};
}
} }
/** /**