@raminy/ajv-ts-schema
Version:
Simplify AJV Schema Validation with TypeScript
908 lines (905 loc) • 25.7 kB
JavaScript
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
};