npm-caffeine
Version:
Keep your dev session alive by pinging a port and logging uptime.
47 lines (37 loc) • 1.07 kB
JavaScript
const axios = require("axios");
const chalk = require("chalk");
const args = process.argv.slice(2);
if (args.length < 1) {
console.log(chalk.red("Usage: caffeine <url> [interval in seconds]"));
process.exit(1);
}
const url = args[0];
const intervalSeconds = Number(args[1]) || 60;
let uptimeSeconds = 0;
console.log(
chalk.green(
`☕ Starting caffeine for ${url} every ${intervalSeconds} seconds...`
)
);
const ping = async () => {
try {
await axios.get(url);
console.log(
chalk.blue(`✅ Pinged ${url} at ${new Date().toLocaleTimeString()}`)
);
} catch (err) {
console.log(chalk.red(`❌ Error pinging ${url}: ${err.message}`));
}
};
const logUptime = () => {
uptimeSeconds += intervalSeconds;
const minutes = Math.floor(uptimeSeconds / 60);
const seconds = uptimeSeconds % 60;
console.log(chalk.yellow(`⏱️ Uptime: ${minutes}m ${seconds}s`));
};
ping(); // immediate ping
setInterval(() => {
ping();
logUptime();
}, intervalSeconds * 1000);