Current File : //lib/node_modules/pm2/node_modules/@pm2/io/build/main/src/services/transport.js
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const debug_1 = require("debug");
const semver = require("semver");
const stringify = require("json-stringify-safe");
const debug = debug_1.default('axm:transportService');
class TransportConfig {
}
exports.TransportConfig = TransportConfig;
class Actions {
}
exports.Actions = Actions;
class Process {
}
exports.Process = Process;
class Transport {
}
exports.Transport = Transport;
class Agent {
}
exports.Agent = Agent;
class TransportService {
    constructor() {
        this.isStandalone = false;
        this.initiated = false; // tslint:disable-line
    }
    init() {
        this.initiated = true;
        this.isStandalone = false;
    }
    initStandalone(config) {
        return tslib_1.__awaiter(this, void 0, void 0, function* () {
            if (!semver.satisfies(process.version, '>= 6.0.0')) {
                this.init();
                console.error('[STANDALONE MODE] Unable to set standalone mode with node < 6.0.0');
                return process.exit(1);
            }
            const AgentNode = require('@pm2/agent-node');
            this.isStandalone = true;
            this.initiated = true;
            debug('Init new transport service');
            this.config = config;
            this.process = {
                axm_actions: [],
                axm_options: {},
                axm_monitor: {}
            };
            this.agent = new AgentNode({
                publicKey: this.config.publicKey,
                secretKey: this.config.secretKey,
                appName: this.config.appName,
                serverName: this.config.serverName
            }, this.process);
            this.agent.sendLogs = config.sendLogs || false;
            try {
                yield this.agent.start();
            }
            catch (err) {
                console.error(err);
                process.exit(1);
            }
            this.transport = this.agent.transport;
            return debug('Agent launched');
        });
    }
    setMetrics(metrics) {
        if (this.isStandalone) {
            return this.process.axm_monitor = metrics;
        }
        this.send('axm:monitor', metrics);
    }
    addAction(action) {
        debug(`Add action: ${action.action_name}:${action.action_type}`);
        if (this.isStandalone) {
            return this.process.axm_actions.push(action);
        }
        return this.send('axm:action', action);
    }
    setOptions(options) {
        debug(`Set options: [${Object.keys(options).join(',')}]`);
        if (this.isStandalone) {
            return this.process.axm_options = Object.assign(this.process.axm_options, options);
        }
        return this.send('axm:option:configuration', options);
    }
    getFormattedPayload(channel, payload) {
        // Reformat for backend
        switch (channel) {
            case 'axm:reply':
                return { data: payload };
            case 'process:exception':
                return { data: payload };
        }
        return payload;
    }
    send(channel, payload) {
        if (this.isStandalone) {
            return this.agent.send(channel, this.getFormattedPayload(channel, payload)) ? 0 : -1;
        }
        if (!process.send)
            return -1;
        try {
            process.send(JSON.parse(stringify({
                type: channel,
                data: payload
            })));
        }
        catch (e) {
            debug('Process disconnected from parent !');
            debug(e.stack || e);
            return process.exit(1);
        }
        return 0;
    }
    destroy() {
        if (!this.isStandalone)
            return;
        this.transport.disconnect();
    }
}
exports.default = TransportService;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNwb3J0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3NlcnZpY2VzL3RyYW5zcG9ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxpQ0FBeUI7QUFDekIsaUNBQWdDO0FBQ2hDLGlEQUFnRDtBQUVoRCxNQUFNLEtBQUssR0FBRyxlQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQTtBQUUzQztDQU1DO0FBTkQsMENBTUM7QUFFRDtDQUlDO0FBSkQsMEJBSUM7QUFFRDtDQU9DO0FBUEQsMEJBT0M7QUFFRDtDQUlDO0FBSkQsOEJBSUM7QUFFRDtDQUtDO0FBTEQsc0JBS0M7QUFFRDtJQUFBO1FBTVUsaUJBQVksR0FBWSxLQUFLLENBQUE7UUFDN0IsY0FBUyxHQUFZLEtBQUssQ0FBQSxDQUFDLHNCQUFzQjtJQWlHM0QsQ0FBQztJQS9GQyxJQUFJO1FBQ0YsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUE7UUFDckIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUE7SUFDM0IsQ0FBQztJQUVLLGNBQWMsQ0FBRSxNQUF1Qjs7WUFDM0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsRUFBRTtnQkFDbEQsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFBO2dCQUNYLE9BQU8sQ0FBQyxLQUFLLENBQUMsbUVBQW1FLENBQUMsQ0FBQTtnQkFDbEYsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO2FBQ3ZCO1lBQ0QsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUE7WUFDNUMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUE7WUFDeEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUE7WUFDckIsS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQUE7WUFDbkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxN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