UNPKG

json-sculpt

Version:

JSON Sculpt is a utility library designed to transform or "sculpt" JSON objects into your desired shape.

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