Socket
Socket
Sign inDemoInstall

omniclone

Package Overview
Dependencies
Maintainers
1
Versions
26
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

omniclone - npm Package Compare versions

Comparing version 0.2.2 to 0.3.0

2

dist/main.js

@@ -1,1 +0,1 @@

module.exports=function(e){var r={};function o(t){if(r[t])return r[t].exports;var n=r[t]={i:t,l:!1,exports:{}};return e[t].call(n.exports,n,n.exports,o),n.l=!0,n.exports}return o.m=e,o.c=r,o.d=function(e,r,t){o.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(e,r){if(1&r&&(e=o(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(o.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var n in e)o.d(t,n,function(r){return e[r]}.bind(null,n));return t},o.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(r,"a",r),r},o.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},o.p="",o(o.s=0)}([function(e,r){e.exports=function(e={},{setPrototype:r=!1,invokeConstructors:o=!0,copyNonEnumerables:t=!1,copySymbols:n=!1,copyGettersSetters:s=!1,allowCircularReferences:i=!1}={}){if(!e||"object"!=typeof e)throw new TypeError("TypeError: invalid 'obj' argument's type");if(e instanceof Number||e instanceof String||e instanceof Boolean)throw new TypeError("TypeError: wrapper objects are not allowed as source");if(e instanceof Promise)throw new TypeError("TypeError: Promises are not allowed as source");if(e instanceof Error)throw new TypeError("TypeError: cannot copy Error objects");if(e instanceof RegExp){const{source:r,flags:o,lastIndex:t}=e,n=new RegExp(r,o);return n.lastIndex=t,n}if(e instanceof Date)return new Date(e.getTime());const a={setPrototype:r,invokeConstructors:o,copyNonEnumerables:t,copySymbols:n,copyGettersSetters:s,allowCircularReferences:i};if("boolean"!=typeof r)throw new TypeError("TypeError: invalid 'setPrototype' flag's type");if("boolean"!=typeof o)throw new TypeError("TypeError: invalid 'invokeConstructors' flag's type");if("boolean"!=typeof t)throw new TypeError("TypeError: invalid 'copyNonEnumerables' flag's type");if("boolean"!=typeof n)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 i)throw new TypeError("TypeError: invalid 'allowCircularReferences' flag's type");return function e(r,{setPrototype:o,invokeConstructors:t,copyNonEnumerables:n,copySymbols:s,copyGettersSetters:i,allowCircularReferences:a},c,f){c.set(r,r);let l=null;const p=Object.getOwnPropertyDescriptors(r);l=t?new r.constructor:o?Object.create(Object.getPrototypeOf(r)):{};const u=new WeakMap;if(Object.entries(p).forEach(([r,p])=>{const{value:y,enumerable:b}=p;if((n||b)&&(s||"symbol"!=typeof y)&&(i||!p.get&&!p.set))if(y&&"object"==typeof y){if(u.has(y))return void(l[r]=u.get(y));if(c.has(y)){if(a)return void(l[r]=c.get(y));throw new TypeError("TypeError: circular reference found")}if(y instanceof Error)throw new TypeError("TypeError: cannot copy Error objects");if(y instanceof Number||y instanceof Boolean){const e=p.value.valueOf();return void Object.defineProperty(l,r,{...p,...{value:e}})}if(y instanceof String){const e=p.value.toString();return void Object.defineProperty(l,r,{...p,...{value:e}})}if(y instanceof Date){const e=new Date(p.value.getTime());return void Object.defineProperty(l,r,{...p,...{value:e}})}if(y instanceof RegExp){const{value:{lastIndex:e}}=p,o=new RegExp(p.value.source,p.value.flags);return Object.defineProperty(l,r,{...p,...{value:o}}),void(l[r].lastIndex=e)}if(y instanceof Promise)return void Object.defineProperty(l,r,p);l[r]=e(y,{setPrototype:o,invokeConstructors:t,copyNonEnumerables:n,copySymbols:s,copyGettersSetters:i,allowCircularReferences:a},c,f),u.set(y,l[r])}else{const e=Object.getOwnPropertyDescriptor(l,r);e&&!e.configurable||Object.defineProperty(l,r,p)}}),a&&(c.set(r,l),f===r)){const e=new WeakMap;e.set(l),function r(o,t){Object.entries(o).forEach(([n,s])=>{if(s&&"object"==typeof s)if(t.has(s))o[n]=t.get(s);else{if(e.has(s))return;e.set(s),r(s,t)}})}(l,c)}return l}(e,a,new WeakMap,e)}}]);
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){e.exports=function(e={},{setPrototype:r=!1,invokeConstructors:t=!0,copyNonEnumerables:o=!1,copySymbols:n=!1,copyGettersSetters:i=!1,allowCircularReferences:s=!1,discardErrorObjects:c=!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)return e;if(e instanceof Error){if(c)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());const a={setPrototype:r,invokeConstructors:t,copyNonEnumerables:o,copySymbols:n,copyGettersSetters:i,allowCircularReferences:s,discardErrorObjects:c};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 o)throw new TypeError("TypeError: invalid 'copyNonEnumerables' flag's type");if("boolean"!=typeof n)throw new TypeError("TypeError: invalid 'copySymbols' flag's type");if("boolean"!=typeof i)throw new TypeError("TypeError: invalid 'copyGettersSetters' flag's type");if("boolean"!=typeof s)throw new TypeError("TypeError: invalid 'allowCircularReferences' flag's type");if("boolean"!=typeof c)throw new TypeError("TypeError: invalid 'discardErrorObjects' flag's type");return function e(r,{setPrototype:t,invokeConstructors:o,copyNonEnumerables:n,copySymbols:i,copyGettersSetters:s,allowCircularReferences:c,discardErrorObjects:a},f,l){f.set(r,r);let p=null;const u=Object.getOwnPropertyDescriptors(r);p=o?new r.constructor:t?Object.create(Object.getPrototypeOf(r)):{};const y=new WeakMap;if(Object.entries(u).forEach(([r,u])=>{const{value:b,enumerable:d}=u;if((n||d)&&(i||"symbol"!=typeof b)&&(s||!u.get&&!u.set))if(b&&"object"==typeof b){if(y.has(b))return void(p[r]=y.get(b));if(f.has(b)){if(c)return void(p[r]=f.get(b));throw new TypeError("TypeError: circular reference found")}if(b instanceof Error){if(a)return;throw new TypeError("TypeError: cannot copy Error objects")}if(b instanceof Number||b instanceof Boolean){const e=u.value.valueOf();return void Object.defineProperty(p,r,{...u,...{value:e}})}if(b instanceof String){const e=u.value.toString();return void Object.defineProperty(p,r,{...u,...{value:e}})}if(b instanceof Date){const e=new Date(u.value.getTime());return void Object.defineProperty(p,r,{...u,...{value:e}})}if(b instanceof RegExp){const{value:{lastIndex:e}}=u,t=new RegExp(u.value.source,u.value.flags);return Object.defineProperty(p,r,{...u,...{value:t}}),void(p[r].lastIndex=e)}if(b instanceof Promise)return void Object.defineProperty(p,r,u);p[r]=e(b,{setPrototype:t,invokeConstructors:o,copyNonEnumerables:n,copySymbols:i,copyGettersSetters:s,allowCircularReferences:c,discardErrorObjects:a},f,l),y.set(b,p[r])}else{const e=Object.getOwnPropertyDescriptor(p,r);e&&!e.configurable||Object.defineProperty(p,r,u)}}),c&&(f.set(r,p),l===r)){const e=new WeakMap;e.set(p),function r(t,o){Object.entries(t).forEach(([n,i])=>{if(i&&"object"==typeof i)if(o.has(i))t[n]=o.get(i);else{if(e.has(i))return;e.set(i),r(i,o)}})}(p,f)}return p}(e,a,new WeakMap,e)}}]);
{
"name": "omniclone",
"version": "0.2.2",
"version": "0.3.0",
"description": "deep cloning function for js objects",

@@ -5,0 +5,0 @@ "main": "dist/main.js",

# omniclone
A customizable and fool proof javascript function for object deep cloning
An isomorphic, customizable and fool proof javascript function for object deep cloning
```js

@@ -30,7 +30,7 @@ omniclone(source, config);

3. let you to clone objects with circular references (customizable behavior)
4. handle String, Boolean, Number and Date objects in the right way: String, Boolean, and Number objects are unwrapped - Date objects are exactly copied
5. let you to copy getters and setters, non enumerables properties and also symbols (customizable behavior)
4. let you to copy getters and setters, non enumerables properties and also symbols (customizable behavior)
5. correct handling of String, Boolean, Number, Error and Promise objects
6. safe similar sibilings references are not duplicated
7. correct cloning of Array objects (if the `invokeConstructors` flagis setted)
8. correct cloning of RegExp objects
7. correct cloning of Array objects (if the `invokeConstructors` flag is setted)
8. correct cloning of RegExp and Date objects

@@ -147,2 +147,12 @@ ## config

### discardErrorObjects (default true)
Enable it to discard Error objects props.\
Know that `omnicopy` will return `null` if one is passed as source.\
Disable it to throw an error if one is met.
```js
const res = omniclone(source, {
discardErrorObjects: true
});
```
## default config

@@ -158,6 +168,19 @@ The default config is the following:

allowCircularReferences: false,
discardErrorObjects: true,
});
```
## what about String, Boolean, Number, Error and Promise objects?
String, Boolean and Number objects passed to `omniclone` as sources will produce `null`.\
Error objects passed to `omniclone` as sources will produce `null` if the `discardErrorObjects` is set to `true` (as default).\
Error objects passed to `omniclone` as sources will produce a `TypeError` if the `discardErrorObjects` is set to `false` (not the predefined behaviour).
String, Boolean and Number objects props will be unwrapped.\
Error objects props will be discarded if the `discardErrorObjects` is set to `true` (as default).\
Error objects props will produce a `TypeError` if the `discardErrorObjects` is set to `false` (not the predefined behaviour).
Promise objects will be returned if passed to `omniclone` as sources.\
Promise objects props will be shallow copied.
## what about the 6th strength?

@@ -164,0 +187,0 @@

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc