UNPKG

@js-utility/object

Version:

Comprehensive utility library for advanced object manipulation in JavaScript: deep get/set, clone, merge, flatten, and more. Ideal for Node.js and browser projects as a lightweight lodash alternative.

2 lines (1 loc) 6.81 kB
"use strict";var N=Object.defineProperty;var M=Object.getOwnPropertyDescriptor;var z=Object.getOwnPropertyNames;var V=Object.prototype.hasOwnProperty;var q=(e,o)=>{for(var n in o)N(e,n,{get:o[n],enumerable:!0})},w=(e,o,n,i)=>{if(o&&typeof o=="object"||typeof o=="function")for(let s of z(o))!V.call(e,s)&&s!==n&&N(e,s,{get:()=>o[s],enumerable:!(i=M(o,s))||i.enumerable});return e};var B=e=>w(N({},"__esModule",{value:!0}),e);var I={};q(I,{arrayEquals:()=>K,cloneDeep:()=>D,deepAssign:()=>P,deepEqual:()=>A,deepExtract:()=>O,deepOmit:()=>T,difference:()=>G,fromNestedJson:()=>_,getDeep:()=>W,groupBy:()=>F,hasProperty:()=>J,intersect:()=>X,isNotNull:()=>E,isNull:()=>b,jsonify:()=>H,mergeObjs:()=>x,pickDeep:()=>k,removeDuplicates:()=>S,setDeep:()=>R,sort:()=>Y,toNestedJson:()=>C,union:()=>$});module.exports=B(I);function A(e,o){let n=new WeakMap,i=new WeakMap;function s(r,f){if(r===f||typeof r=="number"&&typeof f=="number"&&isNaN(r)&&isNaN(f))return!0;if(r==null||f==null)return r===f;if(typeof r!="object"||typeof f!="object"||Object.getPrototypeOf(r)!==Object.getPrototypeOf(f))return!1;if(n.has(r))return n.get(r)===f;if(i.has(f))return i.get(f)===r;if(n.set(r,f),i.set(f,r),Array.isArray(r)){if(!Array.isArray(f)||r.length!==f.length)return!1;for(let a=0;a<r.length;a++)if(!s(r[a],f[a]))return!1;return!0}if(r instanceof Date&&f instanceof Date)return r.getTime()===f.getTime();if(r instanceof RegExp&&f instanceof RegExp)return r.toString()===f.toString();if(r instanceof Map&&f instanceof Map){if(r.size!==f.size)return!1;for(let[a,d]of r)if(!f.has(a)||!s(d,f.get(a)))return!1;return!0}if(r instanceof Set&&f instanceof Set){if(r.size!==f.size)return!1;for(let a of r)if(!f.has(a))return!1;return!0}let u=Object.keys(r),y=Object.keys(f);if(u.length!==y.length)return!1;for(let a of u)if(!y.includes(a)||!s(r[a],f[a]))return!1;return!0}return s(e,o)}function E(e){return e==null?!1:((e instanceof Number||e instanceof String||e instanceof Boolean)&&(e=e.valueOf()),typeof e=="string"?e.trim().length>0:typeof e=="boolean"?!0:typeof e=="number"?!isNaN(e):e instanceof Date?!isNaN(e.getTime()):Array.isArray(e)?e.length>0:e instanceof Map||e instanceof Set?e.size>0:typeof e=="object"?Object.keys(e).length>0:!0)}function b(e){return!E(e)}function g(e){if(Array.isArray(e))return e;let o=/([^[.\]]+)|\[(\d+|\*)\]/g,n=[];for(let i of e.matchAll(o))i[1]?n.push(i[1]):i[2]&&n.push(i[2]==="*"?"*":Number(i[2]));return n}function O(e,o,n){let{resolveRefs:i,maxRefVisits:s=5,default:r}=n||{};if(b(o)||b(e))return r;let f=new Map,u=g(o),y=t=>{if(!i)return t;if(typeof t=="string"&&e[t]){let p=f.get(t)||0;return p>=s?void 0:(f.set(t,p+1),y(e[t]))}if(Array.isArray(t)){let p=[];for(let c of t){let l=y(c);l!==void 0&&(Array.isArray(l)?p.push(...l):p.push(l))}return p}return t},a=(t,p)=>{if(t=y(t),p>=u.length)return t;let c=u[p];if(Array.isArray(t)){let l=[];if(c==="*"){for(let h of t){let m=a(h,p+1);m!=null&&(Array.isArray(m)?l.push(...m):l.push(m))}return l}else{if(typeof c=="number")return a(t[c],p+1);for(let h of t){let m=a(h?.[c],p+1);m!=null&&(Array.isArray(m)?l.push(...m):l.push(m))}return l}}if(typeof t=="object"&&t!==null)return a(t[c],p+1)};return a(e,0)??r}var W=O;var D=e=>e&&structuredClone(e),J=(e,o)=>e?Object.prototype.hasOwnProperty.call(e,o):!1,C=(e,o=1)=>e.reduce((n,i)=>(i?.split(".")?.reduce((s,r,f,{length:u})=>(f===u-1?s[r]=o:(typeof s[r]!="object"||s[r]===null)&&(s[r]={}),s[r]),n),n),{}),_=(e,o="")=>{let n=[];for(let i in e){let s=o?`${o}.${i}`:i;typeof e[i]=="object"&&e[i]!==null?n=n.concat(_(e[i],s)):n.push(s)}return n},S=e=>(e||[]).filter((o,n)=>!e.some((i,s)=>s<n&&A(o,i))),$=S,K=(e,o)=>e===o?!0:e?.length!==o?.length?!1:!!e?.every((n,i)=>A(n,o?.[i])),X=(e,o)=>(e||[]).filter((n,i)=>o?.some((s,r)=>A(n,s))),Y=(e,o)=>(e.sort((n,i)=>{let s=0;for(let r of o){let f=O(n,r.key),u=O(i,r.key),y=r.priority_prefix&&f?.toString()?.startsWith(r.priority_prefix),a=r.priority_prefix&&u?.toString()?.startsWith(r.priority_prefix);if(y&&!a)return-1;if(!y&&a)return 1;if(s=(f??"").toString().localeCompare(u??"",void 0,{numeric:!0,sensitivity:"base"}),r.order===-1&&(s*=-1),s!==0)return s}return 0}),e);function F(e,o){return e.reduce((n,i)=>{let s=O(i,o)?.toString()??"";return n[s]||(n[s]=[]),n[s].push(i),n},{})}function T(e,o){if(!e)return e;if(Array.isArray(e))return e.map(s=>T(s,o)).filter(Boolean);function n(s,r){if(!s||!r?.length||typeof s!="object")return;let[f,...u]=r;u.length===0?Array.isArray(s)&&typeof f=="number"?s.splice(f,1):delete s[f]:f in s&&n(s[f],u)}let i=D(e);return o.forEach(s=>{n(i,g(s))}),i}function P(e,o,n,i){if(e==null)return;if(Array.isArray(e))return e.forEach(t=>P(t,o,n,i));let{resolveRefs:s,maxRefVisits:r=5,set_forcefully:f}=i||{},u=g(o),y=new Map,a=t=>{if(!s)return t;if(typeof t=="string"&&e[t]){let p=y.get(t)||0;return p>=r?void 0:(y.set(t,p+1),a(e[t]))}return t},d=(t,p)=>{let c=u[p];if(p===u.length-1){if(c==="*"){if(Array.isArray(t))for(let l=0;l<t.length;l++)t[l]=n}else(typeof c=="number"&&Array.isArray(t)||typeof t=="object"&&t!==null)&&(t[c]=n);return}if(c==="*"){if(Array.isArray(t))for(let l=0;l<t.length;l++){let h=a(t[l]);h==null&&(t[l]=typeof u[p+1]=="number"?[]:{}),d(t[l],p+1)}}else{if(typeof t!="object"||t===null)return;c in t||(t[c]=typeof u[p+1]=="number"?[]:{});let l=a(t[c]);if(l==null&&(t[c]=typeof u[p+1]=="number"?[]:{}),f){if(Array.isArray(t[c]))return t[c].forEach((h,m)=>{typeof h!="object"&&(t[c][m]={}),d(t[c][m],p+1)});typeof t[c]!="object"?t[c]={}:(u[p+1]==="*"||typeof u[p+1]=="number")&&(t[c]=[])}d(t[c],p+1)}};d(e,0)}var R=P;function k(e,o){if(Array.isArray(e))return e.map(r=>k(r,o)).filter(Boolean);let n=(r,f,u=[])=>{if(f.length===0)return[{path:u,value:r}];let[y,...a]=f;return y==="*"?Array.isArray(r)?r.flatMap((d,t)=>n(d,a,[...u,t])):[]:r&&y in r?n(r[y],a,[...u,y]):[]},i=o.flatMap(r=>n(e,g(r))),s=Array.isArray(e)?[]:{};for(let{path:r,value:f}of i)R(s,r,f);return s}var G=(e,o)=>b(e)||b(o)||typeof e!="object"||typeof o!="object"?e:Array.isArray(e)&&Array.isArray(o)?e.filter((n,i)=>!o.some((s,r)=>A(n,s))):Object.keys(e).reduce((n,i)=>(A(e[i],o[i])||(n[i]=e[i]),n),{});var H=(e,o=null)=>{if(e==null)return o;if(typeof e!="string")return e;let n=e.trim();if(n==="")return o;if(n==="null")return null;if(n==="undefined")return;if(n==="true")return!0;if(n==="false")return!1;let i=Number(n);if(!isNaN(i))return i;try{return JSON.parse(n)}catch{return n}};var x=(e,...o)=>{if(!e||!o?.length)return e;let n=i=>i&&typeof i=="object"&&!Array.isArray(i);return o.reduce((i,s)=>(s&&Object.keys(s).forEach(r=>{let f=i[r],u=s[r];n(f)&&n(u)?i[r]=x(f,u):i[r]=u}),i),e)};0&&(module.exports={arrayEquals,cloneDeep,deepAssign,deepEqual,deepExtract,deepOmit,difference,fromNestedJson,getDeep,groupBy,hasProperty,intersect,isNotNull,isNull,jsonify,mergeObjs,pickDeep,removeDuplicates,setDeep,sort,toNestedJson,union});