Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
const applyDeletes = (document, deletes, nullify = true) => {
const modified = _.cloneDeep(document);
// const modified = JSON.parse(JSON.stringify(document));
for (const path of deletes) {
const parent = jp.parent(modified, path);
if (_.isArray(parent)) {
const _subscript = /\[([\d]+)\]$/;
const subscript = _subscript.exec(path)[1];
if (nullify) {
parent[subscript] = null; // delete array['0'] doesn't work with jsonpath! list items should be deleted by setting to null or undefined,
} else {
parent.splice(subscript, 1);
}
} else {
delete parent[path.split('.').pop()];
}
}
return modified;
};
if(Array.isArray(parent)) {
let enriched_intermediate_object = {value: node.value};
enriched_intermediate_object[enriched_property_name] = deep_copied_intermediate_result;
object_path.set(data, parent_object_path, enriched_intermediate_object);
} else {
parent[enriched_property_name] = deep_copied_intermediate_result;
}
}
if(typeof node.value === 'object' && !Array.isArray(node.value)) {
object_path.set(data, node_path + '.' + enriched_property_name, deep_copied_intermediate_result);
}
if(Array.isArray(node.value)) {
path_expression = jp.stringify(node.path);
parent = jp.parent(data, path_expression);
parent[enriched_property_name] = deep_copied_intermediate_result;
}
// check if there is some kind of rate limit defined within the configuration
if(typeof promise.getConfig().rate_limit !== 'undefined' && typeof promise.getConfig().rate_limit !== 'undefined') {
await RateLimiter.async_stall(promise.getConfig().rate_limit.number_of_requests, promise.getConfig().rate_limit.time_window);
}
}
}
return {data: result};
}
return chain_enricher_promises(enrichers, self);
promise.setData(enrichment_target);
intermediate_result = enrichment_target;
intermediate_result = await promise.process(intermediate_result);
let deep_copied_intermediate_result = JSON.parse(JSON.stringify(intermediate_result));
// Check node type
if(typeof node.value !== 'object' && !Array.isArray(node.value)) {
path_expression = jp.stringify(node.path);
let node_path_deep_copy = JSON.parse(JSON.stringify(node.path));
//node_path_deep_copy.pop();
node_path_deep_copy.shift();
parent_object_path = node_path_deep_copy.join('.');
// get parent and check if it's an array
parent = jp.parent(data, path_expression);
if(Array.isArray(parent)) {
let enriched_intermediate_object = {value: node.value};
enriched_intermediate_object[enriched_property_name] = deep_copied_intermediate_result;
object_path.set(data, parent_object_path, enriched_intermediate_object);
} else {
parent[enriched_property_name] = deep_copied_intermediate_result;
}
}
if(typeof node.value === 'object' && !Array.isArray(node.value)) {
object_path.set(data, node_path + '.' + enriched_property_name, deep_copied_intermediate_result);
}
if(Array.isArray(node.value)) {
path_expression = jp.stringify(node.path);
parent = jp.parent(data, path_expression);
deleteKey: function (path) {
const parent = jp.parent(this.jsonObj, path);
const paths = jp.paths(this.jsonObj, path);
const item = paths[0].pop();
if (Array.isArray(parent)) {
parent.splice(item, 1);
} else {
delete parent[item];
}
}
}