json-sculpt
Version:
JSON Sculpt is a utility library designed to transform or "sculpt" JSON objects into your desired shape.
2 lines (1 loc) • 9.99 kB
JavaScript
(function(f,p){typeof exports=="object"&&typeof module<"u"?p(exports):typeof define=="function"&&define.amd?define(["exports"],p):(f=typeof globalThis<"u"?globalThis:f||self,p(f["json-sculpt"]={}))})(this,function(f){"use strict";var p=(t=>(t.sculpt="sculpt",t))(p||{}),y=(t=>(t.self="self.",t.state="state.",t.root="root.",t))(y||{}),C=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function l(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var ft=Array.isArray,$=ft;const b=l($);var ut=typeof C=="object"&&C&&C.Object===Object&&C,ht=ut,lt=ht,pt=typeof self=="object"&&self&&self.Object===Object&&self,gt=lt||pt||Function("return this")(),M=gt,_t=M,dt=_t.Symbol,D=dt,k=D,U=Object.prototype,yt=U.hasOwnProperty,$t=U.toString,v=k?k.toStringTag:void 0;function bt(t){var e=yt.call(t,v),r=t[v];try{t[v]=void 0;var n=!0}catch{}var a=$t.call(t);return n&&(e?t[v]=r:delete t[v]),a}var vt=bt,mt=Object.prototype,St=mt.toString;function Ot(t){return St.call(t)}var Ct=Ot,B=D,jt=vt,Tt=Ct,Pt="[object Null]",wt="[object Undefined]",q=B?B.toStringTag:void 0;function It(t){return t==null?t===void 0?wt:Pt:q&&q in Object(t)?jt(t):Tt(t)}var m=It;function Nt(t){return t!=null&&typeof t=="object"}var j=Nt,Mt=m,Dt=j,Gt="[object Symbol]";function xt(t){return typeof t=="symbol"||Dt(t)&&Mt(t)==Gt}var G=xt,At=$,Et=G,zt=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Ft=/^\w*$/;function Ht(t,e){if(At(t))return!1;var r=typeof t;return r=="number"||r=="symbol"||r=="boolean"||t==null||Et(t)?!0:Ft.test(t)||!zt.test(t)||e!=null&&t in Object(e)}var Vt=Ht;function Kt(t){var e=typeof t;return t!=null&&(e=="object"||e=="function")}var x=Kt;const T=l(x);var Rt=m,Jt=x,Lt="[object AsyncFunction]",kt="[object Function]",Ut="[object GeneratorFunction]",Bt="[object Proxy]";function qt(t){if(!Jt(t))return!1;var e=Rt(t);return e==kt||e==Ut||e==Lt||e==Bt}var W=qt;const S=l(W);var Wt=M,Xt=Wt["__core-js_shared__"],Yt=Xt,A=Yt,X=function(){var t=/[^.]+$/.exec(A&&A.keys&&A.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}();function Zt(t){return!!X&&X in t}var Qt=Zt,te=Function.prototype,ee=te.toString;function re(t){if(t!=null){try{return ee.call(t)}catch{}try{return t+""}catch{}}return""}var ne=re,ae=W,oe=Qt,ie=x,se=ne,ce=/[\\^$.*+?()[\]{}|]/g,fe=/^\[object .+?Constructor\]$/,ue=Function.prototype,he=Object.prototype,le=ue.toString,pe=he.hasOwnProperty,ge=RegExp("^"+le.call(pe).replace(ce,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function _e(t){if(!ie(t)||oe(t))return!1;var e=ae(t)?ge:fe;return e.test(se(t))}var de=_e;function ye(t,e){return t==null?void 0:t[e]}var $e=ye,be=de,ve=$e;function me(t,e){var r=ve(t,e);return be(r)?r:void 0}var Y=me,Se=Y,Oe=Se(Object,"create"),P=Oe,Z=P;function Ce(){this.__data__=Z?Z(null):{},this.size=0}var je=Ce;function Te(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}var Pe=Te,we=P,Ie="__lodash_hash_undefined__",Ne=Object.prototype,Me=Ne.hasOwnProperty;function De(t){var e=this.__data__;if(we){var r=e[t];return r===Ie?void 0:r}return Me.call(e,t)?e[t]:void 0}var Ge=De,xe=P,Ae=Object.prototype,Ee=Ae.hasOwnProperty;function ze(t){var e=this.__data__;return xe?e[t]!==void 0:Ee.call(e,t)}var Fe=ze,He=P,Ve="__lodash_hash_undefined__";function Ke(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=He&&e===void 0?Ve:e,this}var Re=Ke,Je=je,Le=Pe,ke=Ge,Ue=Fe,Be=Re;function g(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e<r;){var n=t[e];this.set(n[0],n[1])}}g.prototype.clear=Je,g.prototype.delete=Le,g.prototype.get=ke,g.prototype.has=Ue,g.prototype.set=Be;var qe=g;function We(){this.__data__=[],this.size=0}var Xe=We;function Ye(t,e){return t===e||t!==t&&e!==e}var Ze=Ye,Qe=Ze;function tr(t,e){for(var r=t.length;r--;)if(Qe(t[r][0],e))return r;return-1}var w=tr,er=w,rr=Array.prototype,nr=rr.splice;function ar(t){var e=this.__data__,r=er(e,t);if(r<0)return!1;var n=e.length-1;return r==n?e.pop():nr.call(e,r,1),--this.size,!0}var or=ar,ir=w;function sr(t){var e=this.__data__,r=ir(e,t);return r<0?void 0:e[r][1]}var cr=sr,fr=w;function ur(t){return fr(this.__data__,t)>-1}var hr=ur,lr=w;function pr(t,e){var r=this.__data__,n=lr(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this}var gr=pr,_r=Xe,dr=or,yr=cr,$r=hr,br=gr;function _(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e<r;){var n=t[e];this.set(n[0],n[1])}}_.prototype.clear=_r,_.prototype.delete=dr,_.prototype.get=yr,_.prototype.has=$r,_.prototype.set=br;var vr=_,mr=Y,Sr=M,Or=mr(Sr,"Map"),Cr=Or,Q=qe,jr=vr,Tr=Cr;function Pr(){this.size=0,this.__data__={hash:new Q,map:new(Tr||jr),string:new Q}}var wr=Pr;function Ir(t){var e=typeof t;return e=="string"||e=="number"||e=="symbol"||e=="boolean"?t!=="__proto__":t===null}var Nr=Ir,Mr=Nr;function Dr(t,e){var r=t.__data__;return Mr(e)?r[typeof e=="string"?"string":"hash"]:r.map}var I=Dr,Gr=I;function xr(t){var e=Gr(this,t).delete(t);return this.size-=e?1:0,e}var Ar=xr,Er=I;function zr(t){return Er(this,t).get(t)}var Fr=zr,Hr=I;function Vr(t){return Hr(this,t).has(t)}var Kr=Vr,Rr=I;function Jr(t,e){var r=Rr(this,t),n=r.size;return r.set(t,e),this.size+=r.size==n?0:1,this}var Lr=Jr,kr=wr,Ur=Ar,Br=Fr,qr=Kr,Wr=Lr;function d(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e<r;){var n=t[e];this.set(n[0],n[1])}}d.prototype.clear=kr,d.prototype.delete=Ur,d.prototype.get=Br,d.prototype.has=qr,d.prototype.set=Wr;var Xr=d,tt=Xr,Yr="Expected a function";function E(t,e){if(typeof t!="function"||e!=null&&typeof e!="function")throw new TypeError(Yr);var r=function(){var n=arguments,a=e?e.apply(this,n):n[0],o=r.cache;if(o.has(a))return o.get(a);var u=t.apply(this,n);return r.cache=o.set(a,u)||o,u};return r.cache=new(E.Cache||tt),r}E.Cache=tt;var Zr=E,Qr=Zr,tn=500;function en(t){var e=Qr(t,function(n){return r.size===tn&&r.clear(),n}),r=e.cache;return e}var rn=en,nn=rn,an=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,on=/\\(\\)?/g,sn=nn(function(t){var e=[];return t.charCodeAt(0)===46&&e.push(""),t.replace(an,function(r,n,a,o){e.push(a?o.replace(on,"$1"):n||r)}),e}),cn=sn;function fn(t,e){for(var r=-1,n=t==null?0:t.length,a=Array(n);++r<n;)a[r]=e(t[r],r,t);return a}var un=fn,et=D,hn=un,ln=$,pn=G,gn=1/0,rt=et?et.prototype:void 0,nt=rt?rt.toString:void 0;function at(t){if(typeof t=="string")return t;if(ln(t))return hn(t,at)+"";if(pn(t))return nt?nt.call(t):"";var e=t+"";return e=="0"&&1/t==-gn?"-0":e}var _n=at,dn=_n;function yn(t){return t==null?"":dn(t)}var $n=yn,bn=$,vn=Vt,mn=cn,Sn=$n;function On(t,e){return bn(t)?t:vn(t,e)?[t]:mn(Sn(t))}var Cn=On,jn=G,Tn=1/0;function Pn(t){if(typeof t=="string"||jn(t))return t;var e=t+"";return e=="0"&&1/t==-Tn?"-0":e}var wn=Pn,In=Cn,Nn=wn;function Mn(t,e){e=In(e,t);for(var r=0,n=e.length;t!=null&&r<n;)t=t[Nn(e[r++])];return r&&r==n?t:void 0}var Dn=Mn,Gn=Dn;function xn(t,e,r){var n=t==null?void 0:Gn(t,e);return n===void 0?r:n}var An=xn;const z=l(An);var En=m,zn=j,Fn="[object Boolean]";function Hn(t){return t===!0||t===!1||zn(t)&&En(t)==Fn}var Vn=Hn;const Kn=l(Vn);var Rn=m,Jn=j,Ln="[object Number]";function kn(t){return typeof t=="number"||Jn(t)&&Rn(t)==Ln}var Un=kn;const Bn=l(Un);var qn=m,Wn=$,Xn=j,Yn="[object String]";function Zn(t){return typeof t=="string"||!Wn(t)&&Xn(t)&&qn(t)==Yn}var Qn=Zn;const ot=l(Qn),F=t=>t&&T(t)?JSON.parse(JSON.stringify(t)):t,ta=t=>ot(t)?t:T(t)?JSON.stringify(t):t?t.toString():"",ea=(t,e)=>{const r=t.lastIndexOf(e);return r<0?"":t.substring(r+1)},it=(t,e)=>{const r=[];for(const[n]of Object.entries(e))t[n]===e[n]&&r.push(!0);return r.length===Object.keys(e).length},ra=(t,e={},r={onlyResolveSculpt:!1,throwOnError:!1})=>{const n=F(t),a=F(t);return V(n,a,e,r)};function na(t,e={},r={allowPartialMatch:!1}){return t.replace(/\{\{([^}]*)\}\}/g,(n,a)=>{const o=H(a,e,r.allowPartialMatch);return o!==O?S(o)?String(o(t)):String(o):n})}const O=Symbol("NOT_FOUND"),H=(t,e,r=!1)=>{const n=t.split("."),a=n.shift();if(a===void 0)return O;if(a in e){if(n.length){const o=e[a];return typeof o!="object"||b(o)||S(o)||!o?O:H(n.join("."),o,r)}return e[a]}else if(r)for(const o in e){const u=[a,...n].join("."),s=e[o];if(typeof s!="object"||b(s)||S(s)||!s)continue;const i=H(u,s,r);if(i!==O)return i}return O},V=(t,e,r={},n,a,o="")=>{const[u,s]=oa(t,p.sculpt);if(T(t)&&!b(t)&&u&&(a=t,t=s),Bn(t)||Kn(t)||!t)return t;if(ot(t)&&(a||!n.onlyResolveSculpt)&&ct(t).length){const i=aa(t,e,r,n,a||e);if(i.length===1&&i[0].original===t)t=i[0].value;else if(i.length>0){let c=t;i.forEach(h=>{c=c.replace(h.original,ta(h.value))}),t=c}}if(T(t)&&!b(t))for(const[i,c]of Object.entries(t))t[`${i}`]=V(c,e,r,n,a,`${o}${o&&"."}${i}`);else b(t)&&(t=t.map((i,c)=>V(i,e,r,n,a,`${o}${o&&"."}${c}`)));return t},st=(t,e)=>t.replace(e,""),aa=(t,e,r={},n,a)=>{const{throwOnError:o=!1}=n,u=ct(t);return u.length?u.map(s=>{const i=s.substring(2,s.length-2);if(i.startsWith(y.self)){const c=ea(i,"."),h=z(a,c);return!h&&o&&K(s,a),R(h,s)}else if(i.startsWith(y.root)){const c=z(e,st(i,y.root));return!c&&o&&K(s,t),R(c,s)}else{const c=st(i,y.state),h=z(r,c),N=S(h)?h(e):h;return!N&&o&&K(s,t),R(S(N)?N(e):N,s)}}):[]},K=(t,e)=>{throw new Error(`Missing output: ${t} in ${e}`)},R=(t,e)=>({value:t,original:e}),ct=t=>t.match(/{{(.*?)}}/g)??[],oa=(t,e)=>{if(!t)return[];const r=new RegExp(`^{\\$\\s*${e}\\s*\\$}$`),[n,a]=Object.entries(t).find(([o])=>r.test(o))||[];return[n,a]},ia=(t,e)=>J(t,e),J=(t,e)=>{if(!(typeof t!="object"||t===null)){if(it(t,e))return t;if(Array.isArray(t))for(const r of t){const n=J(r,e);if(n)return n}else for(const r in t){const n=J(t[r],e);if(n)return n}}},sa=(t,e,r)=>{const n=F(t);return L(n,e,r)},L=(t,e,r)=>{if(typeof t!="object"||t===null)return t;if(it(t,r))return e;if(Array.isArray(t))return t.map(n=>L(n,e,r));for(const n in t)t[n]=L(t[n],e,r);return t};f.findObjectInJson=ia,f.replaceObjectInJson=sa,f.sculptJson=ra,f.sculptString=na,Object.defineProperty(f,Symbol.toStringTag,{value:"Module"})});