'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _isBinaryObject = require('./binary/isBinaryObject');
var _isBinaryObject2 = _interopRequireDefault(_isBinaryObject);
var _cloneBinaryObject = require('./binary/cloneBinaryObject');
var _cloneBinaryObject2 = _interopRequireDefault(_cloneBinaryObject);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function clone(object) {
var newObject;
var i;
var len;
if (!object || typeof object !== 'object') {
return object;
}
if (Array.isArray(object)) {
newObject = [];
for (i = 0, len = object.length; i < len; i++) {
newObject[i] = clone(object[i]);
}
return newObject;
}
// special case: to avoid inconsistencies between IndexedDB
// and other backends, we automatically stringify Dates
if (object instanceof Date) {
return object.toISOString();
}
if ((0, _isBinaryObject2.default)(object)) {
return (0, _cloneBinaryObject2.default)(object);
}
newObject = {};
for (i in object) {
if (Object.prototype.hasOwnProperty.call(object, i)) {
var value = clone(object[i]);
if (typeof value !== 'undefined') {
newObject[i] = value;
}
}
}
return newObject;
}
exports.default = clone;
module.exports = exports['default']; |