vulpes
Version:
Job management framework
64 lines (56 loc) • 2.03 kB
JavaScript
;
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
function clone(obj) {
return rebaseObjectDeep(obj);
}
function cloneJob(job) {
var output = rebaseObject(job);
if (output.predicate) {
output.predicate = rebaseObject(output.predicate);
}
if (output.times) {
output.times = rebaseObject(output.times);
}
if (output.data) {
output.data = rebaseObjectDeep(output.data);
}
if (output.result) {
output.result = rebaseObject(output.result);
if (output.result.data) {
output.result.data = rebaseObjectDeep(output.result.data);
}
}
if (output.parents) {
output.parents = [].concat(_toConsumableArray(output.parents));
}
return output;
}
function rebaseArrayDeep(arr) {
return arr.map(function (item) {
if (Array.isArray(item)) {
return rebaseArrayDeep(item);
} else if (item && (typeof item === "undefined" ? "undefined" : _typeof(item)) === "object") {
return rebaseObjectDeep(item);
}
return item;
});
}
function rebaseObject(obj) {
return Object.assign({}, obj);
}
function rebaseObjectDeep(obj) {
var output = rebaseObject(obj);
Object.keys(output).forEach(function (key) {
if (Array.isArray(output[key])) {
output[key] = rebaseArrayDeep(output[key]);
} else if (output[key] && _typeof(output[key]) === "object") {
output[key] = rebaseObjectDeep(output[key]);
}
});
return output;
}
module.exports = {
clone: clone,
cloneJob: cloneJob
};