@vtex/api
Version:
VTEX I/O API client
44 lines (43 loc) • 1.95 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.broadcastStatusTrack = exports.trackStatus = exports.statusTrackHandler = exports.isStatusTrackBroadcast = exports.isStatusTrack = void 0;
const cluster_1 = __importDefault(require("cluster"));
const constants_1 = require("../../../constants");
const BROADCAST_STATUS_TRACK = 'broadcastStatusTrack';
const STATUS_TRACK = 'statusTrack';
const isStatusTrack = (message) => message === STATUS_TRACK;
exports.isStatusTrack = isStatusTrack;
const isStatusTrackBroadcast = (message) => message === BROADCAST_STATUS_TRACK;
exports.isStatusTrackBroadcast = isStatusTrackBroadcast;
const statusTrackHandler = async (ctx) => {
var _a, _b, _c;
(_b = (_a = ctx.tracing) === null || _a === void 0 ? void 0 : _a.currentSpan) === null || _b === void 0 ? void 0 : _b.setOperationName('builtin:status-track');
if (!constants_1.LINKED) {
(_c = process.send) === null || _c === void 0 ? void 0 : _c.call(process, BROADCAST_STATUS_TRACK);
}
ctx.body = [];
return;
};
exports.statusTrackHandler = statusTrackHandler;
const trackStatus = () => {
global.metrics.statusTrack().forEach(status => {
logStatus(status);
});
};
exports.trackStatus = trackStatus;
const broadcastStatusTrack = () => Object.values(cluster_1.default.workers).forEach(worker => worker === null || worker === void 0 ? void 0 : worker.send(STATUS_TRACK));
exports.broadcastStatusTrack = broadcastStatusTrack;
const logStatus = (status) => console.log(JSON.stringify({
__VTEX_IO_LOG: true,
account: constants_1.ACCOUNT,
app: constants_1.APP.ID,
isLink: constants_1.LINKED,
pid: process.pid,
production: constants_1.PRODUCTION,
status,
type: 'metric/status',
workspace: constants_1.WORKSPACE,
}));