Repository URL to install this package:
|
Version:
9.0.35-framework ▾
|
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const child_process_1 = require("child_process");
const log_1 = require("../../log");
const transform_1 = require("./transform");
const fixture_1 = require("./fixture");
// if we load pm2 inside test env, it does not exit
// tslint:disable:no-var-requires
const pm = process.env.NODE_ENV === 'test' || process.env.NODE_ENV === 'testing'
? require('./deps.pm2.mock').pm
: require('./deps.pm2').pm;
exports.isProcessManagerRunning = async () => {
if (process.env.IS_INSIDE_PM2) {
log_1.logger.debug('[@skava/graphql]{pm2} used IS_INSIDE_PM2 env');
return true;
}
try {
const list = await pm.list();
return list.length === 0;
}
catch (pm2Exception) {
log_1.logger.warn('[@skava/graphql]{pm2} could not get list');
log_1.logger.error(pm2Exception);
return false;
}
};
/**
* @todo could process.exit if we pass an arg or set in config
*/
exports.restart = async (appName = 'skava-graphql') => {
const isRunning = await exports.isProcessManagerRunning();
if (isRunning === false) {
if (process.env.NODE_ENV === 'test') {
return;
}
else {
log_1.logger.warn(`[${appName}]{pm2} no restart, is not running`);
child_process_1.execSync('pm2 restart all --update-env');
}
}
else {
return pm.restart(appName);
}
};
/**
* @todo execSync('pm2 status')
*/
exports.stats = async (appName = 'skava-graphql') => {
const isRunning = await exports.isProcessManagerRunning();
if (isRunning === false) {
log_1.logger.warn(`[${appName}]{pm2} no restart, is not running`);
return fixture_1.fixture;
}
else {
const processList = await pm.describe(appName);
return transform_1.fromProcessDescriptionListToResponse(processList);
}
};
const fs_1 = require("fs");
const isJSON = x => {
try {
return JSON.parse(x);
}
catch (exception) {
return false;
}
};
/**
* @see http://pm2.keymetrics.io/docs/usage/log-management/#log-configuration
* @todo need to be careful about memory size reading a file that big
* could stream them
*/
exports.readLogs = async () => {
// @todo move these out into params
// then we could read orchestration/stream/any log file
// ^ would need super security
const { env } = await exports.stats();
const logPath = env.logPath;
const logs = fs_1.readFileSync(logPath).toString('utf-8');
const logObj = logs
.split('\n')
.filter(x => x && x !== '\n' && x !== '\r')
.map(x => {
const asJSON = isJSON(x);
if (!asJSON) {
return { message: x, timestamp: 'missing' };
}
else if (asJSON.message && asJSON.timestamp) {
return asJSON;
}
else {
return { message: x, timestamp: 'missing' };
}
});
// const list = fromLogListToFormatted(logObj)
const list = logObj;
const uniq = [...new Set(list)];
return uniq;
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ncmFwaHFsLW1vZHVsZXMvcG0yL2RlcHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxpREFBd0M7QUFDeEMsbUNBQWtDO0FBQ2xDLDJDQUdvQjtBQUNwQix1Q0FBbUM7QUFFbkMsbURBQW1EO0FBQ25ELGlDQUFpQztBQUNqQyxNQUFNLEVBQUUsR0FDTixPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsS0FBSyxNQUFNLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEtBQUssU0FBUztJQUNuRSxDQUFDLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUMsRUFBRTtJQUMvQixDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUUsQ0FBQTtBQUVqQixRQUFBLHVCQUF1QixHQUFHLEtBQUssSUFBSSxFQUFFO0lBQ2hELElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUU7UUFDN0IsWUFBTSxDQUFDLEtBQUssQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFBO1FBQzVELE9BQU8sSUFBSSxDQUFBO0tBQ1o7SUFFRCxJQUFJO1FBQ0YsTUFBTSxJQUFJLEdBQUcsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUE7UUFDNUIsT0FBTyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQTtLQUN6QjtJQUFDLE9BQU8sWUFBWSxFQUFFO1FBQ3JCLFlBQU0sQ0FBQyxJQUFJLENBQUMsMENBQTBDLENBQUMsQ0FBQTtRQUN2RCxZQUFNLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFBO1FBQzFCLE9BQU8sS0FBSyxDQUFBO0tBQ2I7QUFDSCxDQUFDLENBQUE7QUFFRDs7R0FFRztBQUNVLFFBQUEsT0FBTyxHQUFHLEtBQUssRUFBRSxVQUFrQixlQUFlLEVBQUUsRUFBRTtJQUNqRSxNQUFNLFNBQVMsR0FBRyxNQUFNLCtCQUF1QixFQUFFLENB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