@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
JavaScript
;
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;