vtex
Version:
The platform for e-commerce apps
47 lines (46 loc) • 2.21 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const initTime = process.hrtime();
const SessionManager_1 = require("../../../api/session/SessionManager");
const TelemetryStore_1 = require("../TelemetryStore");
const PendingTelemetryDataManager_1 = require("./PendingTelemetryDataManager");
const TelemetryReporter_1 = require("./TelemetryReporter");
const reportTelemetry = async () => {
const reportTime = process.hrtime();
const telemetryObjFilePath = process.argv[3];
const reporter = TelemetryReporter_1.TelemetryReporter.getTelemetryReporter();
const { account, workspace, tokenObj } = SessionManager_1.SessionManager.getSingleton();
if (!account || !workspace || !tokenObj.isValid()) {
await reporter.moveTelemetryFileToPendingData(telemetryObjFilePath);
}
else {
await reporter.reportTelemetryFile(telemetryObjFilePath);
await reporter.sendPendingData();
}
PendingTelemetryDataManager_1.PendingTelemetryDataManager.getSingleton().registerPendingMetaMetric("telemetry:reportTime" /* REPORT_TIME */, process.hrtime(reportTime));
};
const prepareNewPendingFiles = async () => {
const pendingDataManager = PendingTelemetryDataManager_1.PendingTelemetryDataManager.getSingleton();
try {
await pendingDataManager.acquireLock();
await pendingDataManager.createPendingFiles();
await pendingDataManager.ensureTelemetryDirMaxSize();
await pendingDataManager.releaseLock();
}
catch (err) {
// At this point there's nothing much we can do, we just console.error for when the child_process is being investigated
console.error(err);
}
};
const start = async () => {
const store = new TelemetryStore_1.TelemetryLocalStore(process.argv[2]);
PendingTelemetryDataManager_1.PendingTelemetryDataManager.getSingleton().registerPendingMetaMetric("telemetry:startTime" /* START_TIME */, process.hrtime(initTime));
await reportTelemetry();
await prepareNewPendingFiles();
store.setLastRemoteFlush(Date.now());
process.exit();
};
if (require.main === module) {
process.on('exit', () => console.log('Finished reporting telemetry'));
start();
}