UNPKG

@dynatrace/react-native-plugin

Version:

This plugin gives you the ability to use the Dynatrace Mobile agent in your react native application.

54 lines (53 loc) 2.01 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.StringLengthEventModifier = void 0; const ConsoleLogger_1 = require("../../../core/logging/ConsoleLogger"); const EventSpecContstants_1 = require("../spec/EventSpecContstants"); const EventModifierUtil_1 = require("./EventModifierUtil"); class StringLengthEventModifier { constructor() { this.logger = new ConsoleLogger_1.ConsoleLogger('StringLengthEventModifier'); } modifyEvent(event) { if (event == null) { this.logger.debug(`modifyEvent(${JSON.stringify(event)}): Event is null!`); return event; } if (event["characteristics.is_api_reported"] === true) { this.trimStringValuesInObject(event); } else { this.trimStringValuesInObject(event, EventSpecContstants_1.EVENT_WHITELIST_SIZE); } return event; } trimStringValuesInObject(jsonData, keyWhitelist = []) { for (const key in jsonData) { if (!keyWhitelist.includes(key) && Object.prototype.hasOwnProperty.call(jsonData, key)) { jsonData[key] = this.trimStringValue(key, jsonData[key]); } } return jsonData; } trimStringValuesInArray(key, arrayData) { arrayData.forEach((value, index, array) => { array[index] = this.trimStringValue(key, value); }); return arrayData; } trimStringValue(key, data) { if (typeof data === 'string') { return (0, EventModifierUtil_1.trimString)(key, data, EventSpecContstants_1.MAX_CUSTOM_EVENT_VALUE_LENGTH); } else if (Array.isArray(data)) { return this.trimStringValuesInArray(key, data); } else if ((0, EventModifierUtil_1.isObject)(data)) { return this.trimStringValuesInObject(data); } return data; } } exports.StringLengthEventModifier = StringLengthEventModifier;