@segment/analytics-react-native
Version:
The hassle-free way to add Segment analytics to your React-Native app.
44 lines (43 loc) • 1.45 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.generateMapTransform = void 0;
var _util = require("./util");
/**
* Generates a mapTransform function from a keymap and a transform map.
* The resulting function can be called with any object/dictionary and return
* a new object with key replacements and value transformations applied
*
* @param keyMap A dictionary of key mappings in format: ['OLD':'NEW']
* @param transformMap A map of transformations by key (new key if the key was replaced)
* @returns A function that maps keys from an object and transforms its values
*/
const generateMapTransform = (keyMap, transformMap) => {
const mapTransform = json => {
// Clone at top level
const result = {};
for (const key in json) {
const newKey = keyMap[key] ?? key;
let value = json[key];
if (Array.isArray(value)) {
value = value.map(nestedValue => {
if ((0, _util.isObject)(nestedValue)) {
return mapTransform(nestedValue);
}
return nestedValue;
});
} else if ((0, _util.isObject)(value)) {
value = mapTransform(value);
}
if (newKey in transformMap) {
value = transformMap[newKey](value);
}
result[newKey] = value;
}
return result;
};
return mapTransform;
};
exports.generateMapTransform = generateMapTransform;
//# sourceMappingURL=mapTransform.js.map