2024-01-04 12:10:01 +01:00

40 lines
941 B
JavaScript

const portfinder = require('portfinder')
const { logger } = require("./filesystem")
/** Checks if a port is already in use
*
*/
function checkPort(port, callback) {
portfinder.getPort({ port: port, stopPort: port }, (err, res) => {
if (err !== null) {
logger.error(`Port ${port} already in use`);
callback(false);
} else {
callback(true);
}
});
}
/** Performs a fetch request, with a configurable timeout
*
*/
async function fetchWithTimeout(resource, options = {}) {
const { timeout = 8000 } = options;
const controller = new AbortController();
const id = setTimeout(() => controller.abort(), timeout);
const response = await fetch(resource, {
...options,
signal: controller.signal
});
clearTimeout(id);
return response;
}
module.exports = {
checkPort: checkPort,
fetchWithTimeout: fetchWithTimeout
}