@airwallex/node-sdk
Version:
Airwallex Node.js SDK
53 lines • 1.87 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.AnalyticsClient = exports.ANALYTICS_CODES = void 0;
const tslib_1 = require("tslib");
const uuid_1 = require("uuid");
const os_1 = tslib_1.__importDefault(require("os"));
const package_json_1 = tslib_1.__importDefault(require("../../package.json"));
const apiConstants_1 = require("../constants/apiConstants");
const httpClient_1 = require("./httpClient");
const maskHelper_1 = require("../utils/maskHelper");
exports.ANALYTICS_CODES = {
latency: 'LATENCY',
};
const DEFAULT_COMMON_DATA = {
appName: 'airwallex-node-sdk',
sessionId: (0, uuid_1.v4)(),
deviceId: 'deviceId',
platform: os_1.default.platform(),
accountId: 'accountId',
appVersion: package_json_1.default.version,
apiVersion: apiConstants_1.API_VERSION,
networkType: 'net4g',
env: 'demo',
};
const EXTERNAL_METRICS_URL = '/airtracker/logs';
class AnalyticsClient {
constructor(basePath, config, httpClient = new httpClient_1.HttpClientImpl(basePath, config)) {
this.analyticsInstance = httpClient;
this.enableTelemetry = config.enableTelemetry !== false;
this.commonData = {
...DEFAULT_COMMON_DATA,
env: config.env,
};
}
async sendTelemetry(eventName, data) {
this._sendLog({ ...(0, maskHelper_1.maskSensitiveData)(data), eventName });
}
async _sendLog(payload) {
if (!this.enableTelemetry) {
return;
}
this.analyticsInstance
.post(EXTERNAL_METRICS_URL, {
commonData: this.commonData,
data: [{ ...payload, severity: 'info' }],
})
.catch(() => {
console.log('Failed to send analytics log');
});
}
}
exports.AnalyticsClient = AnalyticsClient;
//# sourceMappingURL=analyticsClient.js.map