UNPKG

@raminy/ajv-ts-schema

Version:
908 lines (905 loc) 25.7 kB
var We = Object.defineProperty; var He = (c, l, d) => l in c ? We(c, l, { enumerable: !0, configurable: !0, writable: !0, value: d }) : c[l] = d; var de = (c, l, d) => (He(c, typeof l != "symbol" ? l + "" : l, d), d); const q = class q { static getSchema() { return Reflect.getMetadata("schema", this); } }; /** * Converts a JSON object to an instance of a schema class that extends AjvSchema. * e.g. * If we have `class MySchema extends AjvSchema { foo: number; }` and `json = { foo: 2 }`, * `AjvSchema.fromJson(MySchema, json)` will return an instance of `MySchema` with `foo` set to `2`. */ de(q, "fromJson", (l, d) => { const g = new l(); return Object.keys(d).forEach((_) => { var O; let k; d[_] && typeof d[_] == "object" && ((O = l.prototype[_]) != null && O.constructor) ? k = q.fromJson(l.prototype[_].constructor, d[_]) : k = d[_], g[_] = k; }), g; }); let J = q; var le = typeof globalThis < "u" ? globalThis : typeof window < "u" ? window : typeof global < "u" ? global : typeof self < "u" ? self : {}; /*! ***************************************************************************** Copyright (C) Microsoft. All rights reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABLITY OR NON-INFRINGEMENT. See the Apache Version 2.0 License for specific language governing permissions and limitations under the License. ***************************************************************************** */ var he; (function(c) { (function(l) { var d = typeof globalThis == "object" ? globalThis : typeof le == "object" ? le : typeof self == "object" ? self : typeof this == "object" ? this : D(), g = _(c); typeof d.Reflect < "u" && (g = _(d.Reflect, g)), l(g, d), typeof d.Reflect > "u" && (d.Reflect = c); function _(P, I) { return function(E, C) { Object.defineProperty(P, E, { configurable: !0, writable: !0, value: C }), I && I(E, C); }; } function k() { try { return Function("return this;")(); } catch { } } function O() { try { return (0, eval)("(function() { return this; })()"); } catch { } } function D() { return k() || O(); } })(function(l, d) { var g = Object.prototype.hasOwnProperty, _ = typeof Symbol == "function", k = _ && typeof Symbol.toPrimitive < "u" ? Symbol.toPrimitive : "@@toPrimitive", O = _ && typeof Symbol.iterator < "u" ? Symbol.iterator : "@@iterator", D = typeof Object.create == "function", P = { __proto__: [] } instanceof Array, I = !D && !P, E = { // create an object in dictionary mode (a.k.a. "slow" mode in v8) create: D ? function() { return B(/* @__PURE__ */ Object.create(null)); } : P ? function() { return B({ __proto__: null }); } : function() { return B({}); }, has: I ? function(e, t) { return g.call(e, t); } : function(e, t) { return t in e; }, get: I ? function(e, t) { return g.call(e, t) ? e[t] : void 0; } : function(e, t) { return e[t]; } }, C = Object.getPrototypeOf(Function), x = typeof Map == "function" && typeof Map.prototype.entries == "function" ? Map : De(), U = typeof Set == "function" && typeof Set.prototype.entries == "function" ? Set : Ae(), W = typeof WeakMap == "function" ? WeakMap : Fe(), R = _ ? Symbol.for("@reflect-metadata:registry") : void 0, A = Ce(), Z = xe(A); function ve(e, t, r, n) { if (s(r)) { if (!ne(e)) throw new TypeError(); if (!ae(t)) throw new TypeError(); return ke(e, t); } else { if (!ne(e)) throw new TypeError(); if (!p(t)) throw new TypeError(); if (!p(n) && !s(n) && !j(n)) throw new TypeError(); return j(n) && (n = void 0), r = T(r), Te(e, t, r, n); } } l("decorate", ve); function ye(e, t) { function r(n, o) { if (!p(n)) throw new TypeError(); if (!s(o) && !Se(o)) throw new TypeError(); Y(e, t, n, o); } return r; } l("metadata", ye); function pe(e, t, r, n) { if (!p(r)) throw new TypeError(); return s(n) || (n = T(n)), Y(e, t, r, n); } l("defineMetadata", pe); function we(e, t, r) { if (!p(t)) throw new TypeError(); return s(r) || (r = T(r)), $(e, t, r); } l("hasMetadata", we); function Me(e, t, r) { if (!p(t)) throw new TypeError(); return s(r) || (r = T(r)), H(e, t, r); } l("hasOwnMetadata", Me); function _e(e, t, r) { if (!p(t)) throw new TypeError(); return s(r) || (r = T(r)), Q(e, t, r); } l("getMetadata", _e); function be(e, t, r) { if (!p(t)) throw new TypeError(); return s(r) || (r = T(r)), X(e, t, r); } l("getOwnMetadata", be); function ge(e, t) { if (!p(e)) throw new TypeError(); return s(t) || (t = T(t)), K(e, t); } l("getMetadataKeys", ge); function Oe(e, t) { if (!p(e)) throw new TypeError(); return s(t) || (t = T(t)), ee(e, t); } l("getOwnMetadataKeys", Oe); function me(e, t, r) { if (!p(t)) throw new TypeError(); if (s(r) || (r = T(r)), !p(t)) throw new TypeError(); s(r) || (r = T(r)); var n = G( t, r, /*Create*/ !1 ); return s(n) ? !1 : n.OrdinaryDeleteMetadata(e, t, r); } l("deleteMetadata", me); function ke(e, t) { for (var r = e.length - 1; r >= 0; --r) { var n = e[r], o = n(t); if (!s(o) && !j(o)) { if (!ae(o)) throw new TypeError(); t = o; } } return t; } function Te(e, t, r, n) { for (var o = e.length - 1; o >= 0; --o) { var w = e[o], b = w(t, r, n); if (!s(b) && !j(b)) { if (!p(b)) throw new TypeError(); n = b; } } return n; } function $(e, t, r) { var n = H(e, t, r); if (n) return !0; var o = z(t); return j(o) ? !1 : $(e, o, r); } function H(e, t, r) { var n = G( t, r, /*Create*/ !1 ); return s(n) ? !1 : re(n.OrdinaryHasOwnMetadata(e, t, r)); } function Q(e, t, r) { var n = H(e, t, r); if (n) return X(e, t, r); var o = z(t); if (!j(o)) return Q(e, o, r); } function X(e, t, r) { var n = G( t, r, /*Create*/ !1 ); if (!s(n)) return n.OrdinaryGetOwnMetadata(e, t, r); } function Y(e, t, r, n) { var o = G( r, n, /*Create*/ !0 ); o.OrdinaryDefineOwnMetadata(e, t, r, n); } function K(e, t) { var r = ee(e, t), n = z(e); if (n === null) return r; var o = K(n, t); if (o.length <= 0) return r; if (r.length <= 0) return o; for (var w = new U(), b = [], h = 0, a = r; h < a.length; h++) { var i = a[h], f = w.has(i); f || (w.add(i), b.push(i)); } for (var u = 0, v = o; u < v.length; u++) { var i = v[u], f = w.has(i); f || (w.add(i), b.push(i)); } return b; } function ee(e, t) { var r = G( e, t, /*create*/ !1 ); return r ? r.OrdinaryOwnMetadataKeys(e, t) : []; } function te(e) { if (e === null) return 1; switch (typeof e) { case "undefined": return 0; case "boolean": return 2; case "string": return 3; case "symbol": return 4; case "number": return 5; case "object": return e === null ? 1 : 6; default: return 6; } } function s(e) { return e === void 0; } function j(e) { return e === null; } function Ee(e) { return typeof e == "symbol"; } function p(e) { return typeof e == "object" ? e !== null : typeof e == "function"; } function Pe(e, t) { switch (te(e)) { case 0: return e; case 1: return e; case 2: return e; case 3: return e; case 4: return e; case 5: return e; } var r = t === 3 ? "string" : t === 5 ? "number" : "default", n = ie(e, k); if (n !== void 0) { var o = n.call(e, r); if (p(o)) throw new TypeError(); return o; } return Re(e, r === "default" ? "number" : r); } function Re(e, t) { if (t === "string") { var r = e.toString; if (S(r)) { var n = r.call(e); if (!p(n)) return n; } var o = e.valueOf; if (S(o)) { var n = o.call(e); if (!p(n)) return n; } } else { var o = e.valueOf; if (S(o)) { var n = o.call(e); if (!p(n)) return n; } var w = e.toString; if (S(w)) { var n = w.call(e); if (!p(n)) return n; } } throw new TypeError(); } function re(e) { return !!e; } function je(e) { return "" + e; } function T(e) { var t = Pe( e, 3 /* String */ ); return Ee(t) ? t : je(t); } function ne(e) { return Array.isArray ? Array.isArray(e) : e instanceof Object ? e instanceof Array : Object.prototype.toString.call(e) === "[object Array]"; } function S(e) { return typeof e == "function"; } function ae(e) { return typeof e == "function"; } function Se(e) { switch (te(e)) { case 3: return !0; case 4: return !0; default: return !1; } } function V(e, t) { return e === t || e !== e && t !== t; } function ie(e, t) { var r = e[t]; if (r != null) { if (!S(r)) throw new TypeError(); return r; } } function fe(e) { var t = ie(e, O); if (!S(t)) throw new TypeError(); var r = t.call(e); if (!p(r)) throw new TypeError(); return r; } function ue(e) { return e.value; } function oe(e) { var t = e.next(); return t.done ? !1 : t; } function se(e) { var t = e.return; t && t.call(e); } function z(e) { var t = Object.getPrototypeOf(e); if (typeof e != "function" || e === C || t !== C) return t; var r = e.prototype, n = r && Object.getPrototypeOf(r); if (n == null || n === Object.prototype) return t; var o = n.constructor; return typeof o != "function" || o === e ? t : o; } function Ie() { var e; !s(R) && typeof d.Reflect < "u" && !(R in d.Reflect) && typeof d.Reflect.defineMetadata == "function" && (e = Ge(d.Reflect)); var t, r, n, o = new W(), w = { registerProvider: b, getProvider: a, setProvider: f }; return w; function b(u) { if (!Object.isExtensible(w)) throw new Error("Cannot add provider to a frozen registry."); switch (!0) { case e === u: break; case s(t): t = u; break; case t === u: break; case s(r): r = u; break; case r === u: break; default: n === void 0 && (n = new U()), n.add(u); break; } } function h(u, v) { if (!s(t)) { if (t.isProviderFor(u, v)) return t; if (!s(r)) { if (r.isProviderFor(u, v)) return t; if (!s(n)) for (var y = fe(n); ; ) { var M = oe(y); if (!M) return; var m = ue(M); if (m.isProviderFor(u, v)) return se(y), m; } } } if (!s(e) && e.isProviderFor(u, v)) return e; } function a(u, v) { var y = o.get(u), M; return s(y) || (M = y.get(v)), s(M) && (M = h(u, v), s(M) || (s(y) && (y = new x(), o.set(u, y)), y.set(v, M))), M; } function i(u) { if (s(u)) throw new TypeError(); return t === u || r === u || !s(n) && n.has(u); } function f(u, v, y) { if (!i(y)) throw new Error("Metadata provider not registered."); var M = a(u, v); if (M !== y) { if (!s(M)) return !1; var m = o.get(u); s(m) && (m = new x(), o.set(u, m)), m.set(v, y); } return !0; } } function Ce() { var e; return !s(R) && p(d.Reflect) && Object.isExtensible(d.Reflect) && (e = d.Reflect[R]), s(e) && (e = Ie()), !s(R) && p(d.Reflect) && Object.isExtensible(d.Reflect) && Object.defineProperty(d.Reflect, R, { enumerable: !1, configurable: !1, writable: !1, value: e }), e; } function xe(e) { var t = new W(), r = { isProviderFor: function(i, f) { var u = t.get(i); return s(u) ? !1 : u.has(f); }, OrdinaryDefineOwnMetadata: b, OrdinaryHasOwnMetadata: o, OrdinaryGetOwnMetadata: w, OrdinaryOwnMetadataKeys: h, OrdinaryDeleteMetadata: a }; return A.registerProvider(r), r; function n(i, f, u) { var v = t.get(i), y = !1; if (s(v)) { if (!u) return; v = new x(), t.set(i, v), y = !0; } var M = v.get(f); if (s(M)) { if (!u) return; if (M = new x(), v.set(f, M), !e.setProvider(i, f, r)) throw v.delete(f), y && t.delete(i), new Error("Wrong provider for target."); } return M; } function o(i, f, u) { var v = n( f, u, /*Create*/ !1 ); return s(v) ? !1 : re(v.has(i)); } function w(i, f, u) { var v = n( f, u, /*Create*/ !1 ); if (!s(v)) return v.get(i); } function b(i, f, u, v) { var y = n( u, v, /*Create*/ !0 ); y.set(i, f); } function h(i, f) { var u = [], v = n( i, f, /*Create*/ !1 ); if (s(v)) return u; for (var y = v.keys(), M = fe(y), m = 0; ; ) { var ce = oe(M); if (!ce) return u.length = m, u; var qe = ue(ce); try { u[m] = qe; } catch (Ue) { try { se(M); } finally { throw Ue; } } m++; } } function a(i, f, u) { var v = n( f, u, /*Create*/ !1 ); if (s(v) || !v.delete(i)) return !1; if (v.size === 0) { var y = t.get(f); s(y) || (y.delete(u), y.size === 0 && t.delete(y)); } return !0; } } function Ge(e) { var t = e.defineMetadata, r = e.hasOwnMetadata, n = e.getOwnMetadata, o = e.getOwnMetadataKeys, w = e.deleteMetadata, b = new W(), h = { isProviderFor: function(a, i) { var f = b.get(a); return !s(f) && f.has(i) ? !0 : o(a, i).length ? (s(f) && (f = new U(), b.set(a, f)), f.add(i), !0) : !1; }, OrdinaryDefineOwnMetadata: t, OrdinaryHasOwnMetadata: r, OrdinaryGetOwnMetadata: n, OrdinaryOwnMetadataKeys: o, OrdinaryDeleteMetadata: w }; return h; } function G(e, t, r) { var n = A.getProvider(e, t); if (!s(n)) return n; if (r) { if (A.setProvider(e, t, Z)) return Z; throw new Error("Illegal state."); } } function De() { var e = {}, t = [], r = ( /** @class */ function() { function h(a, i, f) { this._index = 0, this._keys = a, this._values = i, this._selector = f; } return h.prototype["@@iterator"] = function() { return this; }, h.prototype[O] = function() { return this; }, h.prototype.next = function() { var a = this._index; if (a >= 0 && a < this._keys.length) { var i = this._selector(this._keys[a], this._values[a]); return a + 1 >= this._keys.length ? (this._index = -1, this._keys = t, this._values = t) : this._index++, { value: i, done: !1 }; } return { value: void 0, done: !0 }; }, h.prototype.throw = function(a) { throw this._index >= 0 && (this._index = -1, this._keys = t, this._values = t), a; }, h.prototype.return = function(a) { return this._index >= 0 && (this._index = -1, this._keys = t, this._values = t), { value: a, done: !0 }; }, h; }() ), n = ( /** @class */ function() { function h() { this._keys = [], this._values = [], this._cacheKey = e, this._cacheIndex = -2; } return Object.defineProperty(h.prototype, "size", { get: function() { return this._keys.length; }, enumerable: !0, configurable: !0 }), h.prototype.has = function(a) { return this._find( a, /*insert*/ !1 ) >= 0; }, h.prototype.get = function(a) { var i = this._find( a, /*insert*/ !1 ); return i >= 0 ? this._values[i] : void 0; }, h.prototype.set = function(a, i) { var f = this._find( a, /*insert*/ !0 ); return this._values[f] = i, this; }, h.prototype.delete = function(a) { var i = this._find( a, /*insert*/ !1 ); if (i >= 0) { for (var f = this._keys.length, u = i + 1; u < f; u++) this._keys[u - 1] = this._keys[u], this._values[u - 1] = this._values[u]; return this._keys.length--, this._values.length--, V(a, this._cacheKey) && (this._cacheKey = e, this._cacheIndex = -2), !0; } return !1; }, h.prototype.clear = function() { this._keys.length = 0, this._values.length = 0, this._cacheKey = e, this._cacheIndex = -2; }, h.prototype.keys = function() { return new r(this._keys, this._values, o); }, h.prototype.values = function() { return new r(this._keys, this._values, w); }, h.prototype.entries = function() { return new r(this._keys, this._values, b); }, h.prototype["@@iterator"] = function() { return this.entries(); }, h.prototype[O] = function() { return this.entries(); }, h.prototype._find = function(a, i) { if (!V(this._cacheKey, a)) { this._cacheIndex = -1; for (var f = 0; f < this._keys.length; f++) if (V(this._keys[f], a)) { this._cacheIndex = f; break; } } return this._cacheIndex < 0 && i && (this._cacheIndex = this._keys.length, this._keys.push(a), this._values.push(void 0)), this._cacheIndex; }, h; }() ); return n; function o(h, a) { return h; } function w(h, a) { return a; } function b(h, a) { return [h, a]; } } function Ae() { var e = ( /** @class */ function() { function t() { this._map = new x(); } return Object.defineProperty(t.prototype, "size", { get: function() { return this._map.size; }, enumerable: !0, configurable: !0 }), t.prototype.has = function(r) { return this._map.has(r); }, t.prototype.add = function(r) { return this._map.set(r, r), this; }, t.prototype.delete = function(r) { return this._map.delete(r); }, t.prototype.clear = function() { this._map.clear(); }, t.prototype.keys = function() { return this._map.keys(); }, t.prototype.values = function() { return this._map.keys(); }, t.prototype.entries = function() { return this._map.entries(); }, t.prototype["@@iterator"] = function() { return this.keys(); }, t.prototype[O] = function() { return this.keys(); }, t; }() ); return e; } function Fe() { var e = 16, t = E.create(), r = n(); return ( /** @class */ function() { function a() { this._key = n(); } return a.prototype.has = function(i) { var f = o( i, /*create*/ !1 ); return f !== void 0 ? E.has(f, this._key) : !1; }, a.prototype.get = function(i) { var f = o( i, /*create*/ !1 ); return f !== void 0 ? E.get(f, this._key) : void 0; }, a.prototype.set = function(i, f) { var u = o( i, /*create*/ !0 ); return u[this._key] = f, this; }, a.prototype.delete = function(i) { var f = o( i, /*create*/ !1 ); return f !== void 0 ? delete f[this._key] : !1; }, a.prototype.clear = function() { this._key = n(); }, a; }() ); function n() { var a; do a = "@@WeakMap@@" + h(); while (E.has(t, a)); return t[a] = !0, a; } function o(a, i) { if (!g.call(a, r)) { if (!i) return; Object.defineProperty(a, r, { value: E.create() }); } return a[r]; } function w(a, i) { for (var f = 0; f < i; ++f) a[f] = Math.random() * 255 | 0; return a; } function b(a) { if (typeof Uint8Array == "function") { var i = new Uint8Array(a); return typeof crypto < "u" ? crypto.getRandomValues(i) : typeof msCrypto < "u" ? msCrypto.getRandomValues(i) : w(i, a), i; } return w(new Array(a), a); } function h() { var a = b(e); a[6] = a[6] & 79 | 64, a[8] = a[8] & 191 | 128; for (var i = "", f = 0; f < e; ++f) { var u = a[f]; (f === 4 || f === 6 || f === 8) && (i += "-"), u < 16 && (i += "0"), i += u.toString(16).toLowerCase(); } return i; } } function B(e) { return e.__ = void 0, delete e.__, e; } }); })(he || (he = {})); function L(c) { for (; c; ) { if (c === J) return !0; c = Object.getPrototypeOf(c); } return !1; } const F = (c) => { if (!(typeof c > "u")) return Array.isArray(c) ? c.map((l) => F(l)) : L(c) ? N(c) : typeof c == "object" ? Object.keys(c).reduce((l, d) => { if (["enum", "const", "default", "meta"].some((g) => g === d)) l[d] = c[d]; else if (d === "type" && c[d] === "formatted-string") l.type = "string"; else { if (d === "required") return l; l[d] = F(c[d]); } return l; }, {}) : c; }, N = (c) => { if (c) return L(c) ? c.getSchema() : F(c); }, Ve = (c) => c ? L(c) ? !!Reflect.getMetadata("objectIsRequired", c) : !!c.required : !1; function Be(c) { return function(l, d) { const g = Reflect.getMetadata("properties", l) || {}; g[d] = c, Reflect.defineMetadata("properties", g, l); }; } function Je(c) { return function(l) { const d = Reflect.getMetadata("properties", l.prototype) || {}, g = { type: "object", ...F(c) || {}, properties: Object.keys(d).reduce( (_, k) => { const O = N(d[k]); return O && (_[k] = O), _; }, {} ), required: Object.keys(d).filter((_) => Ve(d[_])) }; Reflect.defineMetadata("schema", g, l), Reflect.defineMetadata("objectIsRequired", c == null ? void 0 : c.required, l); }; } const Le = (c) => N(c); export { Je as AjvObject, Be as AjvProperty, J as AjvSchema, Le as getSchema };