UNPKG

@pomgui/deep

Version:

Ultrasmall footprint deepmerge, deepfreeze, diff, patch tools

2 lines 2.23 kB
function p(...e){let t=[];for(let i of e)t.push(y(i));return t.length==1?t[0]:t}function y(e){if(!e||typeof e!="object")return e;for(let t in Object.getOwnPropertyNames(e))y(e[t]);return Object.freeze(e)}function f(e,...t){for(let i of t)e!==i&&Object.entries(i).forEach(([r,o])=>{let n=e[r];(n!==o||!e.hasOwnProperty(r))&&(typeof o=="object"&&o!==null?(Array.isArray(o)&&!Array.isArray(n)?n=e[r]=[]:typeof n!="object"&&(n=e[r]={}),f(n,o)):(n===void 0||o!==void 0)&&(e[r]=o))});return e}function l(e,t,i,r){let o={};if(typeof e=="object"&&typeof t=="object"&&e!==null&&t!==null){if(r.has(e)&&r.has(t))return{};if(r.add(e),r.add(t),Array.isArray(e)&&Array.isArray(t)){for(let n=0;n<e.length;n++){let s=c(i,n);Object.hasOwn(t,n)?Object.assign(o,l(e[n],t[n],s,r)):o["-"+s]=0}for(let n=0;n<t.length;n++)if(!Object.hasOwn(e,n)){let s=c(i,n);o["+"+s]=t[n]}return r.delete(e),r.delete(t),o}if(Object.prototype.toString.call(e)==="[object Object]"&&Object.prototype.toString.call(t)==="[object Object]"){for(let n in e){let s=c(i,n);Object.hasOwn(t,n)?Object.assign(o,l(e[n],t[n],s,r)):o["-"+s]=0}for(let n of Object.keys(t))if(!Object.hasOwn(e,n)){let s=c(i,n);o["+"+s]=t[n]}return r.delete(e),r.delete(t),o}if(e instanceof Date&&t instanceof Date&&!Object.is(e.getTime(),t.getTime()))return{["="+i]:t};if(Object.prototype.toString.call(e)!==Object.prototype.toString.call(t))return{["="+i]:t}}else if(!Object.is(e,t))return{["="+i]:t};return o}function c(e,t){let i=typeof t=="string"?t.replace(".","\\."):t.toString();return e!=""?e+"."+i:i}function u(e,t){return l(e,t,"",new WeakSet)}function g(e,t){let i=f(Array.isArray(e)?[]:{},e);for(let r in t)(r[0]=="+"||r[0]=="=")&&d(i,r.substring(1),t[r]),r[0]=="-"&&O(i,r.substring(1));return i}function d(e,t,i){let r=t.split(/(?<!\\)\./).map(n=>n.replace(/\\./g,".")),o=r.pop();for(let n=0;n<r.length;n++){let s=r[n],a=r[n+1];(!(s in e)||!e[s]||typeof e[s]!="object")&&(e[s]=/^\d+$/.test(a!=null?a:o)?[]:{}),e=e[s]}e[o]=i}function O(e,t){let i=t.split(/(?<!\\)\./).map(o=>o.replace(/\\./g,".")),r=i.pop();for(let o=0;o<i.length;o++){let n=i[o];if(!(n in e)||(e=e[n],!e))return}delete e[r]}export{p as deepFreeze,f as deepMerge,u as diff,g as patch}; //# sourceMappingURL=index.mjs.map