doublescore
Version:
Utility functions for managing data structures and measurement.
37 lines • 1.1 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var types_1 = require("./types");
var cloneDepth = 0;
var clone = function (arg) {
cloneDepth++;
if (cloneDepth >= 100) {
cloneDepth = 0;
throw new Error('max clone depth of 100 reached');
}
var target;
if (arg instanceof Date) {
target = new Date(arg.toISOString());
}
else if (types_1.isArray(arg)) {
target = [];
arg.forEach(function (value, i) {
target[i] = clone(value);
});
}
else if (types_1.isObject(arg) && arg !== null) {
target = {};
var myArg_1 = arg;
Object.keys(myArg_1).forEach(function (field) {
if ((myArg_1).hasOwnProperty(field)) {
target[field] = clone(myArg_1[field]);
}
});
}
else { // functions, etc. not cloneable, and will pass through, though for primitives like strings and numbers, arg is cloning
target = arg;
}
cloneDepth--;
return target;
};
exports.default = clone;
//# sourceMappingURL=clone.js.map