@vtex/api
Version:
VTEX I/O API client
58 lines (57 loc) • 2.04 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.resetTelemetryClient = exports.getTelemetryClient = void 0;
const diagnostics_nodejs_1 = require("@vtex/diagnostics-nodejs");
const constants_1 = require("../../constants");
class TelemetryClientSingleton {
constructor() {
this.initializationPromise = undefined;
}
static getInstance() {
if (!TelemetryClientSingleton.instance) {
TelemetryClientSingleton.instance = new TelemetryClientSingleton();
}
return TelemetryClientSingleton.instance;
}
async initTelemetryClient() {
try {
const telemetryClient = await (0, diagnostics_nodejs_1.NewTelemetryClient)('node-vtex-api', constants_1.APP.ID || 'vtex-app', {
additionalAttrs: {
'version': constants_1.APP.VERSION || '',
'environment': process.env.VTEX_WORKSPACE || 'development',
},
});
this.telemetryClient = telemetryClient;
return telemetryClient;
}
catch (error) {
console.error('Failed to initialize telemetry client:', error);
throw error;
}
finally {
this.initializationPromise = undefined;
}
}
async getClient() {
if (this.telemetryClient) {
return this.telemetryClient;
}
if (this.initializationPromise) {
return this.initializationPromise;
}
this.initializationPromise = this.initTelemetryClient();
return this.initializationPromise;
}
reset() {
this.telemetryClient = undefined;
this.initializationPromise = undefined;
}
}
async function getTelemetryClient() {
return TelemetryClientSingleton.getInstance().getClient();
}
exports.getTelemetryClient = getTelemetryClient;
function resetTelemetryClient() {
TelemetryClientSingleton.getInstance().reset();
}
exports.resetTelemetryClient = resetTelemetryClient;