@dynatrace/react-native-plugin
Version:
This plugin gives you the ability to use the Dynatrace Mobile agent in your react native application.
90 lines (89 loc) • 2.97 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.containEventPropertiesInArray = exports.containEventProperties = exports.containSessionProperties = exports.trimStringValuesInObject = exports.trimString = exports.isObject = exports.flattenAdditionalData = void 0;
const MAX_STRING_LENGTH_FOR_VALUES = 5000;
const flattenAdditionalData = (obj, parent, res = {}) => {
for (const key in obj) {
const propName = parent != null ? parent + '.' + key : key;
const valueOfObject = obj[key];
if ((0, exports.isObject)(valueOfObject)) {
(0, exports.flattenAdditionalData)(valueOfObject, propName, res);
}
else {
res[propName] = obj[key];
}
}
return res;
};
exports.flattenAdditionalData = flattenAdditionalData;
const isObject = (obj) => {
if (obj === null || typeof obj !== 'object') {
return false;
}
return Object.prototype.toString.call(obj) === '[object Object]';
};
exports.isObject = isObject;
const trimString = (str, maxLength = MAX_STRING_LENGTH_FOR_VALUES) => {
const stringToTrim = str.toString();
if (stringToTrim.length <= maxLength) {
return stringToTrim;
}
else {
return stringToTrim.substring(0, maxLength);
}
};
exports.trimString = trimString;
const trimStringValuesInObject = (jsonData) => {
for (const key in jsonData) {
if (Object.prototype.hasOwnProperty.call(jsonData, key)) {
jsonData[key] = trimStringValue(jsonData[key]);
}
}
return jsonData;
};
exports.trimStringValuesInObject = trimStringValuesInObject;
const containSessionProperties = (jsonData) => {
for (const key in jsonData) {
if (key.startsWith(`${"session_properties"}.`)) {
return true;
}
}
return false;
};
exports.containSessionProperties = containSessionProperties;
const containEventProperties = (jsonData) => {
for (const key in jsonData) {
if (key.startsWith(`${"event_properties"}.`)) {
return true;
}
}
return false;
};
exports.containEventProperties = containEventProperties;
const containEventPropertiesInArray = (eventEntries) => {
for (const [key, value] of eventEntries) {
if (key.startsWith(`${"event_properties"}.`)) {
return true;
}
}
return false;
};
exports.containEventPropertiesInArray = containEventPropertiesInArray;
const trimStringValuesInArray = (arrayData) => {
arrayData.forEach((value, index, array) => {
array[index] = trimStringValue(value);
});
return arrayData;
};
const trimStringValue = (data) => {
if (typeof data === 'string') {
return (0, exports.trimString)(data);
}
else if (Array.isArray(data)) {
return trimStringValuesInArray(data);
}
else if ((0, exports.isObject)(data)) {
return (0, exports.trimStringValuesInObject)(data);
}
return data;
};