http-alive
Version:
keep your web service always online
66 lines (65 loc) • 1.79 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const fs = require('fs');
const CONF_FILE = '.httpalive';
const DEFAULT_CONF = { arbiter: 3000, master: 3001, slave: 3002 };
const PID_FILE = '.httpalive.pid';
const DEFAULT_PID = { arbiter: null, master: null, slave: null };
exports.checkPid = (pid) => {
try {
process.kill(pid, 0);
return true;
}
catch (e) {
return e.code === 'EPERM';
}
};
exports.parseConf = () => {
let exist = fs.existsSync(CONF_FILE);
if (exist) {
let data = fs.readFileSync(CONF_FILE, 'utf-8');
return JSON.parse(data);
}
else {
console.log('please edit your config file `.httpalive`');
fs.writeFileSync(CONF_FILE, JSON.stringify(DEFAULT_CONF));
process.exit(0);
}
return DEFAULT_CONF;
};
exports.delay = (wait, fn) => setTimeout(fn, wait);
exports.setPid = (type, pid) => {
let exist = fs.existsSync(PID_FILE);
if (exist) {
let data = fs.readFileSync(PID_FILE, 'utf-8');
let j = JSON.parse(data);
j[type] = pid;
fs.writeFileSync(PID_FILE, JSON.stringify(j));
}
else {
fs.writeFileSync(PID_FILE, JSON.stringify(DEFAULT_PID));
return exports.setPid(type, pid);
}
};
exports.getPid = (type) => {
let exist = fs.existsSync(PID_FILE);
if (exist) {
let data = fs.readFileSync(PID_FILE, 'utf-8');
let j = JSON.parse(data);
return j[type];
}
else {
return null;
}
};
exports.sample = (arr) => {
if (arr.length === 1) {
return arr[0];
}
if (Math.random() > 0.5) {
return arr[1];
}
else {
return arr[0];
}
};