UNPKG

doublescore

Version:

Utility functions for managing data structures and measurement.

37 lines 1.1 kB
'use strict'; 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