UNPKG

@vtex/api

Version:
58 lines (57 loc) 2.04 kB
"use strict"; 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;