omniclone
Advanced tools
Comparing version 0.3.5 to 0.4.0
@@ -1,1 +0,1 @@ | ||
module.exports=function(e){var r={};function t(o){if(r[o])return r[o].exports;var n=r[o]={i:o,l:!1,exports:{}};return e[o].call(n.exports,n,n.exports,t),n.l=!0,n.exports}return t.m=e,t.c=r,t.d=function(e,r,o){t.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:o})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,r){if(1&r&&(e=t(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(t.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var n in e)t.d(o,n,function(r){return e[r]}.bind(null,n));return o},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},t.p="",t(t.s=0)}([function(e,r,t){const o=t(1);e.exports=function(e={},{setPrototype:r=!1,invokeConstructors:t=!0,copyNonEnumerables:n=!1,copySymbols:i=!1,copyGettersSetters:c=!1,allowCircularReferences:a=!1,discardErrorObjects:s=!0}={}){if(!e||"object"!=typeof e)throw new TypeError("TypeError: invalid 'obj' argument's type");if(e instanceof Number||e instanceof String||e instanceof Boolean)return null;if(e instanceof Promise||e instanceof WeakMap||e instanceof WeakSet)return e;if(e instanceof Error){if(s)return null;throw new TypeError("TypeError: cannot copy Error objects")}if(e instanceof RegExp){const{source:r,flags:t,lastIndex:o}=e,n=new RegExp(r,t);return n.lastIndex=o,n}if(e instanceof Date)return new Date(e.getTime());if("boolean"!=typeof r)throw new TypeError("TypeError: invalid 'setPrototype' flag's type");if("boolean"!=typeof t)throw new TypeError("TypeError: invalid 'invokeConstructors' flag's type");if("boolean"!=typeof n)throw new TypeError("TypeError: invalid 'copyNonEnumerables' flag's type");if("boolean"!=typeof i)throw new TypeError("TypeError: invalid 'copySymbols' flag's type");if("boolean"!=typeof c)throw new TypeError("TypeError: invalid 'copyGettersSetters' flag's type");if("boolean"!=typeof a)throw new TypeError("TypeError: invalid 'allowCircularReferences' flag's type");if("boolean"!=typeof s)throw new TypeError("TypeError: invalid 'discardErrorObjects' flag's type");return o(e,{setPrototype:r,invokeConstructors:t,copyNonEnumerables:n,copySymbols:i,copyGettersSetters:c,allowCircularReferences:a,discardErrorObjects:s})}},function(e,r){e.exports=function(e,r){const t=new WeakMap,o=e;function n(e,r,t,n){return function(e,r,t,n,c){const{copyNonEnumerables:a,copySymbols:s,copyGettersSetters:f,allowCircularReferences:l,discardErrorObjects:u}=t;Object.entries(r).forEach(([r,p])=>{const{value:y,enumerable:b}=p;if((a||b)&&(s||"symbol"!=typeof y)&&(f||!p.get&&!p.set))if(y&&"object"==typeof y){if(n.has(y))return void(e[r]=n.get(y));if(c.has(y)){if(l)return void(e[r]=c.get(y));throw new TypeError("TypeError: circular reference found")}if(y instanceof Error){if(u)return;throw new TypeError("TypeError: cannot copy Error objects")}if(y instanceof Number||y instanceof Boolean){const t=p.value.valueOf();return void Object.defineProperty(e,r,{...p,...{value:t}})}if(y instanceof String){const t=p.value.toString();return void Object.defineProperty(e,r,{...p,...{value:t}})}if(y instanceof Date){const t=new Date(p.value.getTime());return void Object.defineProperty(e,r,{...p,...{value:t}})}if(y instanceof RegExp){const{value:{lastIndex:t}}=p,o=new RegExp(p.value.source,p.value.flags);return Object.defineProperty(e,r,{...p,...{value:o}}),void(e[r].lastIndex=t)}if(y instanceof Promise)return void Object.defineProperty(e,r,p);if(y instanceof WeakMap)return void Object.defineProperty(e,r,p);if(y instanceof WeakSet)return void Object.defineProperty(e,r,p);e[r]=i(y,t,c,o),n.set(y,e[r])}else{const t=Object.getOwnPropertyDescriptor(e,r);t&&!t.configurable||Object.defineProperty(e,r,p)}})}(e,r,t,new WeakMap,n)}function i(e,r,t,o){const{setPrototype:i,invokeConstructors:c,allowCircularReferences:a}=r;t.set(e,e);let s=null;const f=Object.getOwnPropertyDescriptors(e);return n(s=c?new e.constructor:i?Object.create(Object.getPrototypeOf(e)):{},f,r,t),a&&(t.set(e,s),o===e&&function(e,r){const t=new WeakMap;t.set(e),function e(r,t,o){Object.entries(r).forEach(([n,i])=>{if(i&&"object"==typeof i)if(t.has(i))r[n]=t.get(i);else{if(o.has(i))return;o.set(i),e(i,t,o)}})}(e,r,t)}(s,t)),s}return i(e,r,t,o)}}]); | ||
module.exports=function(e){var t={};function r(o){if(t[o])return t[o].exports;var n=t[o]={i:o,l:!1,exports:{}};return e[o].call(n.exports,n,n.exports,r),n.l=!0,n.exports}return r.m=e,r.c=t,r.d=function(e,t,o){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(r.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)r.d(o,n,function(t){return e[t]}.bind(null,n));return o},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=0)}([function(e,t,r){const o=r(1);e.exports=function(e={},{setPrototype:t=!1,invokeConstructors:r=!0,copyNonEnumerables:n=!1,copySymbols:i=!1,copyGettersSetters:s=!1,allowCircularReferences:c=!1,discardErrorObjects:f=!0}={}){if(!e||"object"!=typeof e)throw new TypeError("TypeError: invalid 'obj' argument's type");if(e instanceof Number||e instanceof String||e instanceof Boolean)return null;if(e instanceof Promise||e instanceof WeakMap||e instanceof WeakSet)return e;if(e instanceof Error){if(f)return null;throw new TypeError("TypeError: cannot copy Error objects")}if(e instanceof RegExp){const{source:t,flags:r,lastIndex:o}=e,n=new RegExp(t,r);return n.lastIndex=o,n}if(e instanceof Date)return new Date(e.getTime());if("boolean"!=typeof t)throw new TypeError("TypeError: invalid 'setPrototype' flag's type");if("boolean"!=typeof r)throw new TypeError("TypeError: invalid 'invokeConstructors' flag's type");if("boolean"!=typeof n)throw new TypeError("TypeError: invalid 'copyNonEnumerables' flag's type");if("boolean"!=typeof i)throw new TypeError("TypeError: invalid 'copySymbols' flag's type");if("boolean"!=typeof s)throw new TypeError("TypeError: invalid 'copyGettersSetters' flag's type");if("boolean"!=typeof c)throw new TypeError("TypeError: invalid 'allowCircularReferences' flag's type");if("boolean"!=typeof f)throw new TypeError("TypeError: invalid 'discardErrorObjects' flag's type");return o(e,{setPrototype:t,invokeConstructors:r,copyNonEnumerables:n,copySymbols:i,copyGettersSetters:s,allowCircularReferences:c,discardErrorObjects:f})}},function(e,t){e.exports=function(e,t){const r=new WeakMap,o=e;function n(e,t,r,n){return function(e,t,r,n,s){const{copyNonEnumerables:c,copySymbols:f,copyGettersSetters:a,allowCircularReferences:u,discardErrorObjects:l}=r;if(Array.isArray(t))for(const[c,f]of t)if(f&&"object"==typeof f){if(n.has(f)){e.set(c,n.get(f));continue}if(s.has(f)){if(u){e.set(c,s.get(f));continue}throw new TypeError("TypeError: circular reference found")}if(f instanceof Error){if(l)continue;throw new TypeError("TypeError: cannot copy Error objects")}if(f instanceof Number||f instanceof Boolean){e.set(c,f.valueOf());continue}if(f instanceof String){e.set(c,f.toString());continue}if(f instanceof Date){e.set(c,new Date(f.getTime())),n.set(f,e.get(c));continue}if(f instanceof RegExp){const{lastIndex:t}=f,r=new RegExp(f.source,f.flags);r.lastIndex=t,e.set(c,r),n.set(f,e.get(c));continue}if(f instanceof Promise){e.set(c,f);continue}if(f instanceof WeakMap){e.set(c,f);continue}if(f instanceof WeakSet){e.set(c,f);continue}e.set(c,i(f,r,s,o)),n.set(f,e.get(c))}else e.set(c,f);Object.entries(t).forEach(([t,p])=>{const{value:y,enumerable:b}=p;if((c||b)&&(f||"symbol"!=typeof y)&&(a||!p.get&&!p.set))if(y&&"object"==typeof y){if(n.has(y))return void(e[t]=n.get(y));if(s.has(y)){if(u)return void(e[t]=s.get(y));throw new TypeError("TypeError: circular reference found")}if(y instanceof Error){if(l)return;throw new TypeError("TypeError: cannot copy Error objects")}if(y instanceof Number||y instanceof Boolean){const r=p.value.valueOf();return void Object.defineProperty(e,t,{...p,...{value:r}})}if(y instanceof String){const r=p.value.toString();return void Object.defineProperty(e,t,{...p,...{value:r}})}if(y instanceof Date){const r=new Date(p.value.getTime());return Object.defineProperty(e,t,{...p,...{value:r}}),void n.set(y,e[t])}if(y instanceof RegExp){const{value:{lastIndex:r}}=p,o=new RegExp(p.value.source,p.value.flags);return Object.defineProperty(e,t,{...p,...{value:o}}),e[t].lastIndex=r,void n.set(y,e[t])}if(y instanceof Promise)return void Object.defineProperty(e,t,p);if(y instanceof WeakMap)return void Object.defineProperty(e,t,p);if(y instanceof WeakSet)return void Object.defineProperty(e,t,p);e[t]=i(y,r,s,o),n.set(y,e[t])}else{const r=Object.getOwnPropertyDescriptor(e,t);r&&!r.configurable||Object.defineProperty(e,t,p)}})}(e,t,r,new WeakMap,n)}function i(e,t,r,o){const{setPrototype:i,invokeConstructors:s,allowCircularReferences:c}=t;r.set(e,e);let f=null;return f=s?new e.constructor:i?Object.create(Object.getPrototypeOf(e)):{},e instanceof Map?n(f,[...e.entries()],t,r):n(f,Object.getOwnPropertyDescriptors(e),t,r),c&&(r.set(e,f),o===e&&function(e,t){const r=new WeakMap;r.set(e),function e(t,r,o){if(t instanceof Map){const n=[...t.entries()];for(const[i,s]of n)if(s&&"object"==typeof s)if(r.has(s))t.set(i,r.get(s));else{if(o.has(s))continue;o.set(s),e(s,r,o)}}else Object.entries(t).forEach(([n,i])=>{if(i&&"object"==typeof i)if(r.has(i))t[n]=r.get(i);else{if(o.has(i))return;o.set(i),e(i,r,o)}})}(e,t,r)}(f,r)),f}return i(e,t,r,o)}}]); |
{ | ||
"name": "omniclone", | ||
"version": "0.3.5", | ||
"version": "0.4.0", | ||
"description": "deep cloning function for js objects", | ||
@@ -54,2 +54,2 @@ "main": "dist/main.js", | ||
} | ||
} | ||
} |
@@ -32,3 +32,3 @@ # omniclone | ||
4. let you to copy getters and setters, non enumerables properties and also symbols (customizable behavior) | ||
5. correct handling of String, Boolean, Number, Error, Promise, WeakMapm and WeakSet objects | ||
5. correct handling of String, Boolean, Number, Error, Promise, WeakMap and WeakSet objects | ||
6. safe similar sibilings references are not duplicated | ||
@@ -35,0 +35,0 @@ 7. correct cloning of Array objects (if the `invokeConstructors` flag is setted) |
15377