UNPKG

safe-clone-deep

Version:

Safely deep clone an object. Will not clone nested objects.

83 lines (67 loc) 2.85 kB
/* safe-clone-deep v1.1.4 - https://github.com/tracker1/safe-clone-deep */ !function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var f;"undefined"!=typeof window?f=window:"undefined"!=typeof global?f=global:"undefined"!=typeof self&&(f=self),(f.Object||(f.Object={})).safeCloneDeep=e()}}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){ 'use strict'; var safeDeepClone = require('./safe-deep-clone'); //method to wrap the cloning method function cloneWrap(obj, circularValue) { circularValue = safeDeepClone(undefined, [], circularValue); return safeDeepClone(circularValue, [], obj); } //value to use when a circular reference is found cloneWrap.circularValue = undefined; module.exports = cloneWrap; },{"./safe-deep-clone":2}],2:[function(require,module,exports){ 'use-strict'; module.exports = safeDeepClone; //method to perform the clone function safeDeepClone(circularValue, refs, obj, Buffer) { var copy, tmp; // object is a false or empty value, or otherwise not an object if (!obj || "object" !== typeof obj) return obj; // Handle Date if (obj instanceof Date) { copy = new Date(); copy.setTime(obj.getTime()); return copy; } // Handle Array - or array-like items (Buffers) if (obj instanceof Array || obj.length) { //return Buffer as-is if (typeof Buffer === "function" && typeof Buffer.isBuffer === "function" && Buffer.Buffer(obj)) { return new Buffer(obj); } refs.push(obj); copy = []; for (var i = 0, len = obj.length; i < len; i++) { if (refs.indexOf(obj[i]) >= 0) { copy[i] = circularValue; } else { copy[i] = safeDeepClone(circularValue, refs, obj[i]); } } refs.pop(); return copy; } // Handle Object refs.push(obj); copy = {}; if (obj instanceof Error) { //raise inherited error properties for the clone copy.name = obj.name; copy.message = obj.message; copy.stack = obj.stack; } for (var attr in obj) { if (Object.prototype.hasOwnProperty.call(obj, attr)) { if (refs.indexOf(obj[attr]) >= 0) { copy[attr] = circularValue; } else { copy[attr] = safeDeepClone(circularValue, refs, obj[attr]); } } } refs.pop(); return copy; } },{}]},{},[1])(1) });