var e = Object.create,
t = Object.defineProperty,
n = Object.getOwnPropertyDescriptor,
r = Object.getOwnPropertyNames,
i = Object.getPrototypeOf,
a = Object.prototype.hasOwnProperty,
o = (e, t) => () => (t || (e((t = { exports: {} }).exports, t), (e = null)), t.exports),
s = (e, i, o, s) => {
if ((i && typeof i == `object`) || typeof i == `function`)
for (var c = r(i), l = 0, u = c.length, d; l < u; l++)
((d = c[l]),
!a.call(e, d) &&
d !== o &&
t(e, d, {
get: ((e) => i[e]).bind(null, d),
enumerable: !(s = n(i, d)) || s.enumerable,
}));
return e;
},
c = ((n, r, a) => (
(a = n == null ? {} : e(i(n))),
s(r || !n || !n.__esModule ? t(a, `default`, { value: n, enumerable: !0 }) : a, n)
))(
o((e, t) => {
(function (n, r) {
typeof e == `object` && typeof t == `object`
? (t.exports = r())
: typeof define == `function` && define.amd
? define([], r)
: typeof e == `object`
? (e.joi = r())
: (n.joi = r());
})(self, () =>
(() => {
var e = {
2115(e, t, n) {
let { assert: r, clone: i, deepEqual: a, merge: o } = n(3115),
s = n(2130),
c = n(9415),
l = n(3541),
u = n(8013),
d = n(2062),
f = n(9017),
p = n(6162),
m = n(5844),
h = n(8529),
g = n(125),
_ = n(1190),
v = n(6220),
y = {
standardTypes: new Set([
`string`,
`number`,
`integer`,
`boolean`,
`object`,
`array`,
`null`,
]),
jsonSchemaTarget: `draft-2020-12`,
primitiveTypes: new Set([`string`, `number`, `boolean`]),
nullSchema: () => ({ type: `null` }),
Base: class {
constructor(e) {
((this.type = e),
(this.$_root = null),
(this._definition = {}),
this._reset());
}
_reset() {
((this._ids = new m.Ids()),
(this._preferences = null),
(this._refs = new h.Manager()),
(this._cache = null),
(this._valids = null),
(this._invalids = null),
(this._flags = {}),
(this._rules = []),
(this._singleRules = new Map()),
(this.$_terms = {}),
(this.$_temp = { ruleset: null, whens: {} }));
}
describe() {
return (
r(typeof f.describe == `function`, `Manifest functionality disabled`),
f.describe(this)
);
}
$_jsonSchema(e, t = {}) {
if (t.target !== void 0 && t.target !== y.jsonSchemaTarget)
throw Error(`Unsupported JSON Schema target: ${t.target}`);
let n = !t.$defs,
r = t.$defs ?? {},
i = {},
o = this.type === `any`,
s = this._flags.only,
l =
this._valids &&
Array.from(this._valids._values).filter((e) => e !== null),
u = !0;
if (l && l.length && s && !o) {
let e = new Set(l.map((e) => typeof e));
u = e.has(this.type) || (this.type === `date` && e.has(`object`));
}
(!o && u && y.standardTypes.has(this.type) && (i.type = this.type),
this._flags.description && (i.description = this._flags.description),
this._flags.default !== void 0 &&
typeof this._flags.default != `function` &&
(i.default = this._flags.default));
let d = { ...t, $defs: r };
this._definition.jsonSchema &&
u &&
(i = this._definition.jsonSchema(this, i, e, d));
for (let t of this._rules) {
let n = this._definition.rules[t.name];
n.jsonSchema &&
u &&
!t._resolve.length &&
(i = n.jsonSchema(t, i, s, e, d));
}
if (this.$_terms.shared)
for (let t of this.$_terms.shared) r[t._flags.id] = t.$_jsonSchema(e, d);
if ((n && Object.keys(r).length && (i.$defs = r), this._valids)) {
let e = l.filter((e) => typeof e != `symbol`);
if (e.length)
if (this._flags.only) {
i.enum = e;
let t = c.intersect(
new Set(e.map((e) => typeof e)),
y.primitiveTypes,
);
if (t.size) {
let e = [...t];
i.type = e.length === 1 ? e[0] : e;
}
} else {
let t = e.filter((e) => typeof e !== this.type || o);
!t.length ||
(o && !s) ||
(i.anyOf || (i = { anyOf: [i] }), i.anyOf.push({ enum: t }));
}
}
if (
(this._valids &&
this._valids.has(null) &&
(!o || s) &&
(this._valids.length === 1 && (o || s)
? (i.type = `null`)
: i.type
? (i.type = [i.type, `null`])
: i.anyOf
? i.anyOf.unshift(y.nullSchema())
: (i = { anyOf: [y.nullSchema(), i] })),
this.$_terms.whens)
) {
let t = this.clone();
t.$_terms.whens = null;
let n = [];
for (let r of this.$_terms.whens) {
let i = r.is ? [r] : r.switch;
for (let r = 0; r < i.length; ++r) {
let a = i[r];
(a.then && n.push(t.concat(a.then).$_jsonSchema(e, d)),
a.otherwise && n.push(t.concat(a.otherwise).$_jsonSchema(e, d)),
(a.then && (r !== i.length - 1 || a.otherwise)) ||
n.push(t.$_jsonSchema(e, d)));
}
}
let r = [];
for (let e of n) r.some((t) => a(t, e)) || r.push(e);
return { anyOf: r };
}
return i;
}
allow(...e) {
return (c.verifyFlat(e, `allow`), this._values(e, `_valids`));
}
alter(e) {
(r(
e && typeof e == `object` && !Array.isArray(e),
`Invalid targets argument`,
),
r(!this._inRuleset(), `Cannot set alterations inside a ruleset`));
let t = this.clone();
t.$_terms.alterations = t.$_terms.alterations || [];
for (let n of Object.keys(e)) {
let i = e[n];
(r(
typeof i == `function`,
`Alteration adjuster for`,
n,
`must be a function`,
),
t.$_terms.alterations.push({ target: n, adjuster: i }));
}
return ((t.$_temp.ruleset = !1), t);
}
artifact(e) {
return (
r(e !== void 0, `Artifact cannot be undefined`),
r(!this._cache, `Cannot set an artifact with a rule cache`),
this.$_setFlag(`artifact`, e)
);
}
cast(e) {
return (
r(!1 === e || typeof e == `string`, `Invalid to value`),
r(
!1 === e || this._definition.cast[e],
`Type`,
this.type,
`does not support casting to`,
e,
),
this.$_setFlag(`cast`, !1 === e ? void 0 : e)
);
}
default(e, t) {
return this._default(`default`, e, t);
}
description(e) {
return (
r(e && typeof e == `string`, `Description must be a non-empty string`),
this.$_setFlag(`description`, e)
);
}
empty(e) {
let t = this.clone();
return (
e !== void 0 && (e = t.$_compile(e, { override: !1 })),
t.$_setFlag(`empty`, e, { clone: !1 })
);
}
error(e) {
return (
r(e, `Missing error`),
r(
e instanceof Error || typeof e == `function`,
`Must provide a valid Error object or a function`,
),
this.$_setFlag(`error`, e)
);
}
example(e, t = {}) {
return (
r(e !== void 0, `Missing example`),
c.assertOptions(t, [`override`]),
this._inner(`examples`, e, { single: !0, override: t.override })
);
}
external(e, t) {
return (
typeof e == `object` &&
(r(!t, `Cannot combine options with description`),
(t = e.description),
(e = e.method)),
r(typeof e == `function`, `Method must be a function`),
r(
t === void 0 || (t && typeof t == `string`),
`Description must be a non-empty string`,
),
this._inner(`externals`, { method: e, description: t }, { single: !0 })
);
}
failover(e, t) {
return this._default(`failover`, e, t);
}
forbidden() {
return this.presence(`forbidden`);
}
id(e) {
return e
? (r(typeof e == `string`, `id must be a non-empty string`),
r(/^[^\.]+$/.test(e), `id cannot contain period character`),
this.$_setFlag(`id`, e))
: this.$_setFlag(`id`, void 0);
}
invalid(...e) {
return this._values(e, `_invalids`);
}
label(e) {
return (
r(e && typeof e == `string`, `Label name must be a non-empty string`),
this.$_setFlag(`label`, e)
);
}
meta(e) {
return (
r(e !== void 0, `Meta cannot be undefined`),
this._inner(`metas`, e, { single: !0 })
);
}
note(...e) {
r(e.length, `Missing notes`);
for (let t of e)
r(t && typeof t == `string`, `Notes must be non-empty strings`);
return this._inner(`notes`, e);
}
only(e = !0) {
return (
r(typeof e == `boolean`, `Invalid mode:`, e), this.$_setFlag(`only`, e)
);
}
optional() {
return this.presence(`optional`);
}
prefs(e) {
(r(e, `Missing preferences`),
r(e.context === void 0, `Cannot override context`),
r(e.externals === void 0, `Cannot override externals`),
r(e.warnings === void 0, `Cannot override warnings`),
r(e.debug === void 0, `Cannot override debug`),
c.checkPreferences(e));
let t = this.clone();
return ((t._preferences = c.preferences(t._preferences, e)), t);
}
presence(e) {
return (
r(
[`optional`, `required`, `forbidden`].includes(e),
`Unknown presence mode`,
e,
),
this.$_setFlag(`presence`, e)
);
}
raw(e = !0) {
return this.$_setFlag(`result`, e ? `raw` : void 0);
}
result(e) {
return (
r([`raw`, `strip`].includes(e), `Unknown result mode`, e),
this.$_setFlag(`result`, e)
);
}
required() {
return this.presence(`required`);
}
strict(e) {
let t = this.clone(),
n = e !== void 0 && !e;
return (
(t._preferences = c.preferences(t._preferences, { convert: n })), t
);
}
strip(e = !0) {
return this.$_setFlag(`result`, e ? `strip` : void 0);
}
tag(...e) {
r(e.length, `Missing tags`);
for (let t of e)
r(t && typeof t == `string`, `Tags must be non-empty strings`);
return this._inner(`tags`, e);
}
unit(e) {
return (
r(e && typeof e == `string`, `Unit name must be a non-empty string`),
this.$_setFlag(`unit`, e)
);
}
valid(...e) {
c.verifyFlat(e, `valid`);
let t = this.allow(...e);
return (t.$_setFlag(`only`, !!t._valids, { clone: !1 }), t);
}
when(e, t) {
let n = this.clone();
n.$_terms.whens || (n.$_terms.whens = []);
let i = l.when(n, e, t);
if (![`any`, `link`].includes(n.type)) {
let e = i.is ? [i] : i.switch;
for (let t of e)
(r(
!t.then || t.then.type === `any` || t.then.type === n.type,
`Cannot combine`,
n.type,
`with`,
t.then && t.then.type,
),
r(
!t.otherwise ||
t.otherwise.type === `any` ||
t.otherwise.type === n.type,
`Cannot combine`,
n.type,
`with`,
t.otherwise && t.otherwise.type,
));
}
return (n.$_terms.whens.push(i), n.$_mutateRebuild());
}
cache(e) {
(r(!this._inRuleset(), `Cannot set caching inside a ruleset`),
r(!this._cache, `Cannot override schema cache`),
r(
this._flags.artifact === void 0,
`Cannot cache a rule with an artifact`,
));
let t = this.clone();
return (
(t._cache = e || s.provider.provision()), (t.$_temp.ruleset = !1), t
);
}
clone() {
let e = Object.create(Object.getPrototypeOf(this));
return this._assign(e);
}
concat(e) {
(r(c.isSchema(e), `Invalid schema object`),
r(
this.type === `any` || e.type === `any` || e.type === this.type,
`Cannot merge type`,
this.type,
`with another type:`,
e.type,
),
r(
!this._inRuleset(),
`Cannot concatenate onto a schema with open ruleset`,
),
r(!e._inRuleset(), `Cannot concatenate a schema with open ruleset`));
let t = this.clone();
if (this.type === `any` && e.type !== `any`) {
let n = e.clone();
for (let e of Object.keys(t)) e !== `type` && (n[e] = t[e]);
t = n;
}
(t._ids.concat(e._ids),
t._refs.register(e, h.toSibling),
(t._preferences = t._preferences
? c.preferences(t._preferences, e._preferences)
: e._preferences),
(t._valids = v.merge(t._valids, e._valids, e._invalids)),
(t._invalids = v.merge(t._invalids, e._invalids, e._valids)));
for (let n of e._singleRules.keys())
t._singleRules.has(n) &&
((t._rules = t._rules.filter((e) => e.keep || e.name !== n)),
t._singleRules.delete(n));
for (let n of e._rules)
(e._definition.rules[n.method].multi || t._singleRules.set(n.name, n),
t._rules.push(n));
if (t._flags.empty && e._flags.empty) {
t._flags.empty = t._flags.empty.concat(e._flags.empty);
let n = Object.assign({}, e._flags);
(delete n.empty, o(t._flags, n));
} else if (e._flags.empty) {
t._flags.empty = e._flags.empty;
let n = Object.assign({}, e._flags);
(delete n.empty, o(t._flags, n));
} else o(t._flags, e._flags);
for (let n of Object.keys(e.$_terms)) {
let r = e.$_terms[n];
r
? t.$_terms[n]
? (t.$_terms[n] = t.$_terms[n].concat(r))
: (t.$_terms[n] = r.slice())
: t.$_terms[n] || (t.$_terms[n] = r);
}
return (
this.$_root._tracer && this.$_root._tracer._combine(t, [this, e]),
t.$_mutateRebuild()
);
}
extend(e) {
return (
r(!e.base, `Cannot extend type with another base`), d.type(this, e)
);
}
extract(e) {
return ((e = Array.isArray(e) ? e : e.split(`.`)), this._ids.reach(e));
}
fork(e, t) {
r(!this._inRuleset(), `Cannot fork inside a ruleset`);
let n = this;
for (let r of [].concat(e))
((r = Array.isArray(r) ? r : r.split(`.`)), (n = n._ids.fork(r, t, n)));
return ((n.$_temp.ruleset = !1), n);
}
isAsync() {
if (this.$_terms.externals?.length) return !0;
if (this.$_terms.whens)
for (let i of this.$_terms.whens) {
var e, t;
if (
((e = i.then) != null && e.isAsync()) ||
((t = i.otherwise) != null && t.isAsync())
)
return !0;
if (i.switch)
for (let e of i.switch) {
var n, r;
if (
((n = e.then) != null && n.isAsync()) ||
((r = e.otherwise) != null && r.isAsync())
)
return !0;
}
}
return !1;
}
rule(e) {
let t = this._definition;
(c.assertOptions(e, Object.keys(t.modifiers)),
r(
!1 !== this.$_temp.ruleset,
`Cannot apply rules to empty ruleset or the last rule added does not support rule properties`,
));
let n =
this.$_temp.ruleset === null
? this._rules.length - 1
: this.$_temp.ruleset;
r(n >= 0 && n < this._rules.length, `Cannot apply rules to empty ruleset`);
let a = this.clone();
for (let o = n; o < a._rules.length; ++o) {
let n = a._rules[o],
s = i(n);
for (let i of Object.keys(e))
(t.modifiers[i](s, e[i]),
r(s.name === n.name, `Cannot change rule name`));
((a._rules[o] = s),
a._singleRules.get(s.name) === n && a._singleRules.set(s.name, s));
}
return ((a.$_temp.ruleset = !1), a.$_mutateRebuild());
}
get ruleset() {
r(
!this._inRuleset(),
`Cannot start a new ruleset without closing the previous one`,
);
let e = this.clone();
return ((e.$_temp.ruleset = e._rules.length), e);
}
get $() {
return this.ruleset;
}
tailor(e) {
((e = [].concat(e)),
r(!this._inRuleset(), `Cannot tailor inside a ruleset`));
let t = this;
if (this.$_terms.alterations)
for (let { target: n, adjuster: i } of this.$_terms.alterations)
e.includes(n) &&
((t = i(t)),
r(
c.isSchema(t),
`Alteration adjuster for`,
n,
`failed to return a schema object`,
));
return (
(t = t.$_modify({ each: (t) => t.tailor(e), ref: !1 })),
(t.$_temp.ruleset = !1),
t.$_mutateRebuild()
);
}
tracer() {
return g.location ? g.location(this) : this;
}
validate(e, t) {
return _.entry(e, this, t);
}
validateAsync(e, t) {
return _.entryAsync(e, this, t);
}
$_addRule(e) {
(typeof e == `string` && (e = { name: e }),
r(e && typeof e == `object`, `Invalid options`),
r(e.name && typeof e.name == `string`, `Invalid rule name`));
for (let t of Object.keys(e))
r(t[0] !== `_`, `Cannot set private rule properties`);
let t = Object.assign({}, e);
((t._resolve = []), (t.method = t.method || t.name));
let n = this._definition.rules[t.method],
i = t.args;
r(n, `Unknown rule`, t.method);
let a = this.clone();
if (i) {
r(
Object.keys(i).length === 1 ||
Object.keys(i).length === this._definition.rules[t.name].args.length,
`Invalid rule definition for`,
this.type,
t.name,
);
for (let e of Object.keys(i)) {
let o = i[e];
if (n.argsByName) {
let s = n.argsByName.get(e);
if (s.ref && c.isResolvable(o))
(t._resolve.push(e), a.$_mutateRegister(o));
else if (
(s.normalize && ((o = s.normalize(o)), (i[e] = o)), s.assert)
) {
let t = c.validateArg(o, e, s);
r(!t, t, `or reference`);
}
}
o === void 0 ? delete i[e] : (i[e] = o);
}
}
return (
n.multi ||
(a._ruleRemove(t.name, { clone: !1 }), a._singleRules.set(t.name, t)),
!1 === a.$_temp.ruleset && (a.$_temp.ruleset = null),
n.priority ? a._rules.unshift(t) : a._rules.push(t),
a
);
}
$_compile(e, t) {
return l.schema(this.$_root, e, t);
}
$_createError(e, t, n, r, i, a = {}) {
let o = !1 === a.flags ? {} : this._flags,
s = a.messages
? p.merge(this._definition.messages, a.messages)
: this._definition.messages;
return new u.Report(e, t, n, o, s, r, i);
}
$_getFlag(e) {
return this._flags[e];
}
$_getRule(e) {
return this._singleRules.get(e);
}
$_mapLabels(e) {
return ((e = Array.isArray(e) ? e : e.split(`.`)), this._ids.labels(e));
}
$_match(e, t, n, r) {
(((n = Object.assign({}, n)).abortEarly = !0),
(n._externals = !1),
t.snapshot());
let i = !_.validate(e, this, t, n, r).errors;
return (t.restore(), i);
}
$_modify(e) {
return (
c.assertOptions(e, [`each`, `once`, `ref`, `schema`]),
m.schema(this, e) || this
);
}
$_mutateRebuild() {
return (
r(!this._inRuleset(), `Cannot add this rule inside a ruleset`),
this._refs.reset(),
this._ids.reset(),
this.$_modify({
each: (e, { source: t, name: n, path: r, key: i }) => {
let a = this._definition[t][n] && this._definition[t][n].register;
!1 !== a && this.$_mutateRegister(e, { family: a, key: i });
},
}),
this._definition.rebuild && this._definition.rebuild(this),
(this.$_temp.ruleset = !1),
this
);
}
$_mutateRegister(e, { family: t, key: n } = {}) {
(this._refs.register(e, t), this._ids.register(e, { key: n }));
}
$_property(e) {
return this._definition.properties[e];
}
$_reach(e) {
return this._ids.reach(e);
}
$_rootReferences() {
return this._refs.roots();
}
$_setFlag(e, t, n = {}) {
r(e[0] === `_` || !this._inRuleset(), `Cannot set flag inside a ruleset`);
let i = this._definition.flags[e] || {};
if ((a(t, i.default) && (t = void 0), a(t, this._flags[e]))) return this;
let o = !1 === n.clone ? this : this.clone();
return (
t === void 0
? delete o._flags[e]
: ((o._flags[e] = t), o.$_mutateRegister(t)),
e[0] !== `_` && (o.$_temp.ruleset = !1),
o
);
}
$_parent(e, ...t) {
return this[e][c.symbols.parent].call(this, ...t);
}
$_validate(e, t, n) {
return _.validate(e, this, t, n);
}
_assign(e) {
((e.type = this.type),
(e.$_root = this.$_root),
(e.$_temp = Object.assign({}, this.$_temp)),
(e.$_temp.whens = {}),
(e._ids = this._ids.clone()),
(e._preferences = this._preferences),
(e._valids = this._valids && this._valids.clone()),
(e._invalids = this._invalids && this._invalids.clone()),
(e._rules = this._rules.slice()),
(e._singleRules = i(this._singleRules, { shallow: !0 })),
(e._refs = this._refs.clone()),
(e._flags = Object.assign({}, this._flags)),
(e._cache = null),
(e.$_terms = {}));
for (let t of Object.keys(this.$_terms))
e.$_terms[t] = this.$_terms[t] ? this.$_terms[t].slice() : null;
if (((e.$_super = {}), this.$_super))
for (let t of Object.keys(this.$_super))
e.$_super[t] = this._super[t].bind(e);
return e;
}
_bare() {
let e = this.clone();
e._reset();
let t = e._definition.terms;
for (let n of Object.keys(t)) {
let r = t[n];
e.$_terms[n] = r.init;
}
return e.$_mutateRebuild();
}
_default(e, t, n = {}) {
return (
c.assertOptions(n, `literal`),
r(t !== void 0, `Missing`, e, `value`),
r(
typeof t == `function` || !n.literal,
`Only function value supports literal option`,
),
typeof t == `function` &&
n.literal &&
(t = { [c.symbols.literal]: !0, literal: t }),
this.$_setFlag(e, t)
);
}
_generate(e, t, n) {
if (!this.$_terms.whens) return { schema: this };
let r = [],
i = [];
for (let a = 0; a < this.$_terms.whens.length; ++a) {
let o = this.$_terms.whens[a];
if (o.concat) {
(r.push(o.concat), i.push(`${a}.concat`));
continue;
}
let s = o.ref ? o.ref.resolve(e, t, n) : e,
c = o.is ? [o] : o.switch,
l = i.length;
for (let l = 0; l < c.length; ++l) {
let { is: u, then: d, otherwise: f } = c[l],
p = `${a}${o.switch ? `.` + l : ``}`;
if (u.$_match(s, t.nest(u, `${p}.is`), n)) {
if (d) {
let a = t.localize(
[...t.path, `${p}.then`],
t.ancestors,
t.schemas,
),
{ schema: o, id: s } = d._generate(e, a, n);
(r.push(o), i.push(`${p}.then${s ? `(${s})` : ``}`));
break;
}
} else if (f) {
let a = t.localize(
[...t.path, `${p}.otherwise`],
t.ancestors,
t.schemas,
),
{ schema: o, id: s } = f._generate(e, a, n);
(r.push(o), i.push(`${p}.otherwise${s ? `(${s})` : ``}`));
break;
}
}
if (o.break && i.length > l) break;
}
let a = i.join(`, `);
if ((t.mainstay.tracer.debug(t, `rule`, `when`, a), !a))
return { schema: this };
if (!t.mainstay.tracer.active && this.$_temp.whens[a])
return { schema: this.$_temp.whens[a], id: a };
let o = this;
this._definition.generate && (o = this._definition.generate(this, e, t, n));
for (let e of r) o = o.concat(e);
return (
this.$_root._tracer && this.$_root._tracer._combine(o, [this, ...r]),
(this.$_temp.whens[a] = o),
{ schema: o, id: a }
);
}
_inner(e, t, n = {}) {
r(!this._inRuleset(), `Cannot set ${e} inside a ruleset`);
let i = this.clone();
return (
(i.$_terms[e] && !n.override) || (i.$_terms[e] = []),
n.single ? i.$_terms[e].push(t) : i.$_terms[e].push(...t),
(i.$_temp.ruleset = !1),
i
);
}
_inRuleset() {
return this.$_temp.ruleset !== null && !1 !== this.$_temp.ruleset;
}
_ruleRemove(e, t = {}) {
if (!this._singleRules.has(e)) return this;
let n = !1 === t.clone ? this : this.clone();
n._singleRules.delete(e);
let r = [];
for (let t = 0; t < n._rules.length; ++t) {
let i = n._rules[t];
i.name !== e || i.keep
? r.push(i)
: n._inRuleset() && t < n.$_temp.ruleset && --n.$_temp.ruleset;
}
return ((n._rules = r), n);
}
_values(e, t) {
c.verifyFlat(e, t.slice(1, -1));
let n = this.clone(),
i = e[0] === c.symbols.override;
if (
(i && (e = e.slice(1)),
!n[t] && e.length
? (n[t] = new v())
: i && ((n[t] = e.length ? new v() : null), n.$_mutateRebuild()),
!n[t])
)
return n;
i && n[t].override();
for (let i of e) {
(r(i !== void 0, `Cannot call allow/valid/invalid with undefined`),
r(i !== c.symbols.override, `Override must be the first value`));
let e = t === `_invalids` ? `_valids` : `_invalids`;
(n[e] &&
(n[e].remove(i),
n[e].length ||
(r(
t === `_valids` || !n._flags.only,
`Setting invalid value`,
i,
`leaves schema rejecting all values due to previous valid rule`,
),
(n[e] = null))),
n[t].add(i, n._refs));
}
return n;
}
get "~standard"() {
let e = (e) => {
let t;
return (
(t = u.ValidationError.isError(e)
? e.details.map(({ message: e, path: t }) => ({
message: e,
path: t,
}))
: [{ message: e.message }]),
{ issues: t }
);
},
t = (e) => ({ value: e });
return {
version: 1,
vendor: `joi`,
validate: (n, r) => {
let i = _.standard(n, this, r);
return i instanceof Promise
? i.then(t, e)
: i.error
? e(i.error)
: t(i.value);
},
jsonSchema: {
input: (e) => this.$_jsonSchema(`input`, e),
output: (e) => this.$_jsonSchema(`output`, e),
},
};
}
},
};
((y.Base.prototype[c.symbols.any] = {
version: c.version,
compile: l.compile,
root: `$_root`,
}),
(y.Base.prototype.isImmutable = !0),
(y.Base.prototype.deny = y.Base.prototype.invalid),
(y.Base.prototype.disallow = y.Base.prototype.invalid),
(y.Base.prototype.equal = y.Base.prototype.valid),
(y.Base.prototype.exist = y.Base.prototype.required),
(y.Base.prototype.not = y.Base.prototype.invalid),
(y.Base.prototype.options = y.Base.prototype.prefs),
(y.Base.prototype.preferences = y.Base.prototype.prefs),
(e.exports = new y.Base()));
},
2130(e, t, n) {
let { assert: r, clone: i } = n(3115),
a = n(9415),
o = {
max: 1e3,
supported: new Set([`undefined`, `boolean`, `number`, `string`]),
};
((t.provider = { provision: (e) => new o.Cache(e) }),
(o.Cache = class {
constructor(e = {}) {
(a.assertOptions(e, [`max`]),
r(
e.max === void 0 || (e.max && e.max > 0 && isFinite(e.max)),
`Invalid max cache size`,
),
(this._max = e.max || o.max),
(this._map = new Map()),
(this._list = new o.List()));
}
get length() {
return this._map.size;
}
set(e, t) {
if (e !== null && !o.supported.has(typeof e)) return;
let n = this._map.get(e);
if (n) return ((n.value = t), void this._list.first(n));
((n = this._list.unshift({ key: e, value: t })),
this._map.set(e, n),
this._compact());
}
get(e) {
let t = this._map.get(e);
if (t) return (this._list.first(t), i(t.value));
}
_compact() {
if (this._map.size > this._max) {
let e = this._list.pop();
this._map.delete(e.key);
}
}
}),
(o.List = class {
constructor() {
((this.tail = null), (this.head = null));
}
unshift(e) {
return (
(e.next = null),
(e.prev = this.head),
this.head && (this.head.next = e),
(this.head = e),
(this.tail ||= e),
e
);
}
first(e) {
e !== this.head && (this._remove(e), this.unshift(e));
}
pop() {
return this._remove(this.tail);
}
_remove(e) {
let { next: t, prev: n } = e;
return (
(t.prev = n),
n && (n.next = t),
e === this.tail && (this.tail = t),
(e.prev = null),
(e.next = null),
e
);
}
}));
},
9415(e, t, n) {
let { assert: r, AssertError: i } = n(3115),
a = n(6913),
o,
s,
c = {
isoDate:
/^(?:[-+]\d{2})?(?:\d{4}(?!\d{2}\b))(?:(-?)(?:(?:0[1-9]|1[0-2])(?:\1(?:[12]\d|0[1-9]|3[01]))?|W(?:[0-4]\d|5[0-2])(?:-?[1-7])?|(?:00[1-9]|0[1-9]\d|[12]\d{2}|3(?:[0-5]\d|6[1-6])))(?![T]$|[T][\d]+Z$)(?:[T\s](?:(?:(?:[01]\d|2[0-3])(?:(:?)[0-5]\d)?|24\:?00)(?:[.,]\d+(?!:))?)(?:\2[0-5]\d(?:[.,]\d+)?)?(?:[Z]|(?:[+-])(?:[01]\d|2[0-3])(?::?[0-5]\d)?)?)?)?$/,
};
((t.version = a.version),
(t.defaults = {
abortEarly: !0,
allowUnknown: !1,
artifacts: !1,
cache: !0,
context: null,
convert: !0,
dateFormat: `iso`,
errors: {
escapeHtml: !1,
label: `path`,
language: null,
render: !0,
stack: !1,
wrap: { label: `"`, array: `[]` },
},
externals: !0,
messages: {},
nonEnumerables: !1,
noDefaults: !1,
presence: `optional`,
skipFunctions: !1,
stripUnknown: !1,
warnings: !1,
}),
(t.symbols = {
any: Symbol.for(`@hapi/joi/schema`),
arraySingle: Symbol(`arraySingle`),
deepDefault: Symbol(`deepDefault`),
errors: Symbol(`errors`),
literal: Symbol(`literal`),
override: Symbol(`override`),
parent: Symbol(`parent`),
prefs: Symbol(`prefs`),
ref: Symbol(`ref`),
template: Symbol(`template`),
values: Symbol(`values`),
}),
(t.assertOptions = function (e, t, n = `Options`) {
r(
e && typeof e == `object` && !Array.isArray(e),
`Options must be of type object`,
);
let i = Object.keys(e).filter((e) => !t.includes(e));
r(i.length === 0, `${n} contain unknown keys: ${i}`);
}),
(t.checkPreferences = function (e) {
s ||= n(1688);
let t = s.preferences.validate(e);
if (t.error) throw new i([t.error.details[0].message]);
}),
(t.compare = function (e, t, n) {
switch (n) {
case `=`:
return e === t;
case `>`:
return e > t;
case `<`:
return e < t;
case `>=`:
return e >= t;
case `<=`:
return e <= t;
}
}),
(t.default = function (e, t) {
return e === void 0 ? t : e;
}),
(t.intersect = function (e, t) {
if (typeof e.intersection == `function`) return e.intersection(t);
let n = new Set();
for (let r of e) t.has(r) && n.add(r);
return n;
}),
(t.isIsoDate = function (e) {
return c.isoDate.test(e);
}),
(t.isNumber = function (e) {
return typeof e == `number` && !isNaN(e);
}),
(t.isResolvable = function (e) {
return !!e && (e[t.symbols.ref] || e[t.symbols.template]);
}),
(t.isSchema = function (e, n = {}) {
let i = e && e[t.symbols.any];
return (
!!i &&
(r(
n.legacy || i.version === t.version,
`Cannot mix different versions of joi schemas`,
),
!0)
);
}),
(t.isValues = function (e) {
return e[t.symbols.values];
}),
(t.limit = function (e) {
return Number.isSafeInteger(e) && e >= 0;
}),
(t.preferences = function (e, r) {
((o ||= n(6162)), (e ||= {}), (r ||= {}));
let i = Object.assign({}, e, r);
return (
r.errors &&
e.errors &&
((i.errors = Object.assign({}, e.errors, r.errors)),
(i.errors.wrap = Object.assign({}, e.errors.wrap, r.errors.wrap))),
r.messages && (i.messages = o.compile(r.messages, e.messages)),
delete i[t.symbols.prefs],
i
);
}),
(t.tryWithPath = function (e, t, n = {}) {
try {
return e();
} catch (e) {
throw (
e.path === void 0 ? (e.path = t) : (e.path = t + `.` + e.path),
n.append && (e.message = `${e.message} (${e.path})`),
e
);
}
}),
(t.validateArg = function (e, n, { assert: r, message: i }) {
if (t.isSchema(r)) {
let t = r.validate(e);
return t.error ? t.error.message : void 0;
}
if (!r(e)) return n ? `${n} ${i}` : i;
}),
(t.verifyFlat = function (e, t) {
for (let n of e)
r(!Array.isArray(n), `Method no longer accepts array arguments:`, t);
}));
},
3541(e, t, n) {
let { assert: r } = n(3115),
i = n(9415),
a = n(8529),
o = {};
((t.schema = function (e, t, n = {}) {
i.assertOptions(n, [`appendPath`, `override`]);
try {
return o.schema(e, t, n);
} catch (e) {
throw (
n.appendPath && e.path !== void 0 && (e.message = `${e.message} (${e.path})`),
e
);
}
}),
(o.schema = function (e, t, n) {
(r(t !== void 0, `Invalid undefined schema`),
Array.isArray(t) &&
(r(t.length, `Invalid empty array schema`), t.length === 1 && (t = t[0])));
let a = (t, ...r) =>
!1 === n.override ? t.valid(...r) : t.valid(e.override, ...r);
if (o.simple(t)) return a(e, t);
if (typeof t == `function`) return e.custom(t);
if (
(r(typeof t == `object`, `Invalid schema content:`, typeof t),
i.isResolvable(t))
)
return a(e, t);
if (i.isSchema(t)) return t;
if (Array.isArray(t)) {
for (let n of t) if (!o.simple(n)) return e.alternatives().try(...t);
return a(e, ...t);
}
return t instanceof RegExp
? e.string().regex(t)
: t instanceof Date
? a(e.date(), t)
: (r(
Object.getPrototypeOf(t) === Object.getPrototypeOf({}),
`Schema can only contain plain objects`,
),
e.object().keys(t));
}),
(t.ref = function (e, t) {
return a.isRef(e) ? e : a.create(e, t);
}),
(t.compile = function (e, n, a = {}) {
i.assertOptions(a, [`legacy`]);
let s = n && n[i.symbols.any];
if (s)
return (
r(
a.legacy || s.version === i.version,
`Cannot mix different versions of joi schemas:`,
s.version,
i.version,
),
n
);
if (typeof n != `object` || !a.legacy)
return t.schema(e, n, { appendPath: !0 });
let c = o.walk(n);
return c ? c.compile(c.root, n) : t.schema(e, n, { appendPath: !0 });
}),
(o.walk = function (e) {
if (typeof e != `object`) return null;
if (Array.isArray(e)) {
for (let t of e) {
let e = o.walk(t);
if (e) return e;
}
return null;
}
let t = e[i.symbols.any];
if (t) return { root: e[t.root], compile: t.compile };
r(
Object.getPrototypeOf(e) === Object.getPrototypeOf({}),
`Schema can only contain plain objects`,
);
for (let t of Object.keys(e)) {
let n = o.walk(e[t]);
if (n) return n;
}
return null;
}),
(o.simple = function (e) {
return e === null || [`boolean`, `string`, `number`].includes(typeof e);
}),
(t.when = function (e, n, s) {
if (
(s === void 0 &&
(r(n && typeof n == `object`, `Missing options`),
(s = n),
(n = a.create(`.`))),
Array.isArray(s) && (s = { switch: s }),
i.assertOptions(s, [`is`, `not`, `then`, `otherwise`, `switch`, `break`]),
i.isSchema(n))
)
return (
r(s.is === void 0, `"is" can not be used with a schema condition`),
r(s.not === void 0, `"not" can not be used with a schema condition`),
r(s.switch === void 0, `"switch" can not be used with a schema condition`),
o.condition(e, {
is: n,
then: s.then,
otherwise: s.otherwise,
break: s.break,
})
);
if (
(r(a.isRef(n) || typeof n == `string`, `Invalid condition:`, n),
r(s.not === void 0 || s.is === void 0, `Cannot combine "is" with "not"`),
s.switch === void 0)
) {
let c = s;
s.not !== void 0 &&
(c = { is: s.not, then: s.otherwise, otherwise: s.then, break: s.break });
let l =
c.is === void 0
? e.$_root.invalid(null, !1, 0, ``).required()
: e.$_compile(c.is);
return (
r(
c.then !== void 0 || c.otherwise !== void 0,
`options must have at least one of "then", "otherwise", or "switch"`,
),
r(
c.break === void 0 || c.then === void 0 || c.otherwise === void 0,
`Cannot specify then, otherwise, and break all together`,
),
s.is === void 0 || a.isRef(s.is) || i.isSchema(s.is) || (l = l.required()),
o.condition(e, {
ref: t.ref(n),
is: l,
then: c.then,
otherwise: c.otherwise,
break: c.break,
})
);
}
(r(Array.isArray(s.switch), `"switch" must be an array`),
r(s.is === void 0, `Cannot combine "switch" with "is"`),
r(s.not === void 0, `Cannot combine "switch" with "not"`),
r(s.then === void 0, `Cannot combine "switch" with "then"`));
let c = { ref: t.ref(n), switch: [], break: s.break };
for (let t = 0; t < s.switch.length; ++t) {
let n = s.switch[t],
o = t === s.switch.length - 1;
(i.assertOptions(n, o ? [`is`, `then`, `otherwise`] : [`is`, `then`]),
r(n.is !== void 0, `Switch statement missing "is"`),
r(n.then !== void 0, `Switch statement missing "then"`));
let l = { is: e.$_compile(n.is), then: e.$_compile(n.then) };
if ((a.isRef(n.is) || i.isSchema(n.is) || (l.is = l.is.required()), o)) {
r(
s.otherwise === void 0 || n.otherwise === void 0,
`Cannot specify "otherwise" inside and outside a "switch"`,
);
let t = s.otherwise === void 0 ? n.otherwise : s.otherwise;
t !== void 0 &&
(r(c.break === void 0, `Cannot specify both otherwise and break`),
(l.otherwise = e.$_compile(t)));
}
c.switch.push(l);
}
return c;
}),
(o.condition = function (e, t) {
for (let n of [`then`, `otherwise`])
t[n] === void 0 ? delete t[n] : (t[n] = e.$_compile(t[n]));
return t;
}));
},
8013(e, t, n) {
let r = n(554),
i = n(9415),
a = n(1532);
((t.Report = class {
constructor(e, n, r, i, a, o, s) {
if (
((this.code = e),
(this.flags = i),
(this.messages = a),
(this.path = o.path),
(this.prefs = s),
(this.state = o),
(this.value = n),
(this.message = null),
(this.template = null),
(this.local = r || {}),
(this.local.label = t.label(
this.flags,
this.state,
this.prefs,
this.messages,
)),
this.value === void 0 ||
this.local.hasOwnProperty(`value`) ||
(this.local.value = this.value),
this.path.length)
) {
let e = this.path[this.path.length - 1];
typeof e != `object` && (this.local.key = e);
}
}
_setTemplate(e) {
if (((this.template = e), !this.flags.label && this.path.length === 0)) {
let e = this._template(this.template, `root`);
e && (this.local.label = e);
}
}
toString() {
if (this.message) return this.message;
let e = this.code;
if (!this.prefs.errors.render) return this.code;
let t =
this._template(this.template) ||
this._template(this.prefs.messages) ||
this._template(this.messages);
return t === void 0
? `Error code "${e}" is not defined, your custom type is missing the correct messages definition`
: ((this.message = t.render(this.value, this.state, this.prefs, this.local, {
errors: this.prefs.errors,
messages: [this.prefs.messages, this.messages],
})),
this.prefs.errors.label ||
(this.message = this.message.replace(/^"" /, ``).trim()),
this.message);
}
_template(e, n) {
return t.template(this.value, e, n || this.code, this.state, this.prefs);
}
}),
(t.path = function (e) {
let t = ``;
for (let n of e)
typeof n != `object` &&
(typeof n == `string` ? (t && (t += `.`), (t += n)) : (t += `[${n}]`));
return t;
}),
(t.template = function (e, t, n, r, o) {
if (!t) return;
if (a.isTemplate(t)) return n === `root` ? null : t;
let s = o.errors.language;
if ((i.isResolvable(s) && (s = s.resolve(e, r, o)), s && t[s])) {
if (t[s][n] !== void 0) return t[s][n];
if (t[s][`*`] !== void 0) return t[s][`*`];
}
return t[n] ? t[n] : t[`*`];
}),
(t.label = function (e, n, r, i) {
if (!r.errors.label) return ``;
if (e.label) return e.label;
let a = n.path;
return (
r.errors.label === `key` && n.path.length > 1 && (a = n.path.slice(-1)),
t.path(a) ||
t.template(null, r.messages, `root`, n, r) ||
(i && t.template(null, i, `root`, n, r)) ||
`value`
);
}),
(t.process = function (e, n, r) {
if (!e) return null;
let { override: i, message: a, details: o } = t.details(e);
if (i) return i;
if (r.errors.stack) return new t.ValidationError(a, o, n);
let s = Error.stackTraceLimit;
Error.stackTraceLimit = 0;
let c = new t.ValidationError(a, o, n);
return ((Error.stackTraceLimit = s), c);
}),
(t.details = function (e, t = {}) {
let n = [],
r = [];
for (let i of e) {
if (i instanceof Error) {
if (!1 !== t.override) return { override: i };
let e = i.toString();
(n.push(e),
r.push({ message: e, type: `override`, context: { error: i } }));
continue;
}
let e = i.toString();
(n.push(e),
r.push({
message: e,
path: i.path.filter((e) => typeof e != `object`),
type: i.code,
context: i.local,
}));
}
return (
n.length > 1 && (n = [...new Set(n)]), { message: n.join(`. `), details: r }
);
}),
(t.ValidationError = class extends Error {
constructor(e, t, n) {
(super(e), (this._original = n), (this.details = t));
}
static isError(e) {
return e instanceof t.ValidationError;
}
}),
(t.ValidationError.prototype.isJoi = !0),
(t.ValidationError.prototype.name = `ValidationError`),
(t.ValidationError.prototype.annotate = r.error));
},
2062(e, t, n) {
let { assert: r, clone: i } = n(3115),
a = n(9415),
o = n(6162),
s = {};
((t.type = function (e, t) {
let n = Object.getPrototypeOf(e),
c = i(n),
l = e._assign(Object.create(c)),
u = Object.assign({}, t);
(delete u.base, (c._definition = u));
let d = n._definition || {};
((u.messages = o.merge(d.messages, u.messages)),
(u.properties = Object.assign({}, d.properties, u.properties)),
(l.type = u.type),
(u.flags = Object.assign({}, d.flags, u.flags)));
let f = Object.assign({}, d.terms);
if (u.terms)
for (let e of Object.keys(u.terms)) {
let t = u.terms[e];
(r(l.$_terms[e] === void 0, `Invalid term override for`, u.type, e),
(l.$_terms[e] = t.init),
(f[e] = t));
}
((u.terms = f),
(u.args ||= d.args),
(u.prepare = s.prepare(u.prepare, d.prepare)),
u.coerce &&
(typeof u.coerce == `function` && (u.coerce = { method: u.coerce }),
u.coerce.from &&
!Array.isArray(u.coerce.from) &&
(u.coerce = { method: u.coerce.method, from: [].concat(u.coerce.from) })),
(u.coerce = s.coerce(u.coerce, d.coerce)),
(u.validate = s.validate(u.validate, d.validate)));
let p = Object.assign({}, d.rules);
if (u.rules)
for (let e of Object.keys(u.rules)) {
let t = u.rules[e];
r(typeof t == `object`, `Invalid rule definition for`, u.type, e);
let n = t.method;
if (
(n === void 0 &&
(n = function () {
return this.$_addRule(e);
}),
n && (r(!c[e], `Rule conflict in`, u.type, e), (c[e] = n)),
r(!p[e], `Rule conflict in`, u.type, e),
(p[e] = t),
t.alias)
) {
let e = [].concat(t.alias);
for (let n of e) c[n] = t.method;
}
t.args &&=
((t.argsByName = new Map()),
t.args.map(
(e) => (
typeof e == `string` && (e = { name: e }),
r(!t.argsByName.has(e.name), `Duplicated argument name`, e.name),
a.isSchema(e.assert) && (e.assert = e.assert.strict().label(e.name)),
t.argsByName.set(e.name, e),
e
),
));
}
((u.rules = p), (u.jsonSchema ||= d.jsonSchema));
let m = Object.assign({}, d.modifiers);
if (u.modifiers)
for (let e of Object.keys(u.modifiers)) {
r(!c[e], `Rule conflict in`, u.type, e);
let t = u.modifiers[e];
(r(typeof t == `function`, `Invalid modifier definition for`, u.type, e),
(c[e] = function (t) {
return this.rule({ [e]: t });
}),
(m[e] = t));
}
if (((u.modifiers = m), u.overrides)) {
((c._super = n), (l.$_super = {}));
for (let e of Object.keys(u.overrides))
(r(n[e], `Cannot override missing`, e),
(u.overrides[e][a.symbols.parent] = n[e]),
(l.$_super[e] = n[e].bind(l)));
Object.assign(c, u.overrides);
}
u.cast = Object.assign({}, d.cast, u.cast);
let h = Object.assign({}, d.manifest, u.manifest);
return (
(h.build = s.build(
u.manifest && u.manifest.build,
d.manifest && d.manifest.build,
)),
(u.manifest = h),
(u.rebuild = s.rebuild(u.rebuild, d.rebuild)),
l
);
}),
(s.build = function (e, t) {
return e && t
? function (n, r) {
return t(e(n, r), r);
}
: e || t;
}),
(s.coerce = function (e, t) {
return e && t
? {
from: e.from && t.from ? [...new Set([...e.from, ...t.from])] : null,
method(n, r) {
let i;
if (
(!t.from || t.from.includes(typeof n)) &&
((i = t.method(n, r)), i)
) {
if (i.errors || i.value === void 0) return i;
n = i.value;
}
if (!e.from || e.from.includes(typeof n)) {
let t = e.method(n, r);
if (t) return t;
}
return i;
},
}
: e || t;
}),
(s.prepare = function (e, t) {
return e && t
? function (n, r) {
let i = e(n, r);
if (i) {
if (i.errors || i.value === void 0) return i;
n = i.value;
}
return t(n, r) || i;
}
: e || t;
}),
(s.rebuild = function (e, t) {
return e && t
? function (n) {
(t(n), e(n));
}
: e || t;
}),
(s.validate = function (e, t) {
return e && t
? function (n, r) {
let i = t(n, r);
if (i) {
if (i.errors && (!Array.isArray(i.errors) || i.errors.length)) return i;
n = i.value;
}
return e(n, r) || i;
}
: e || t;
}));
},
1100(e, t, n) {
let { assert: r, clone: i } = n(3115),
a = n(2130),
o = n(9415),
s = n(3541),
c = n(8013),
l = n(2062),
u = n(9017),
d = n(8529),
f = n(1532),
p = n(125),
m,
h = {
types: {
alternatives: n(4972),
any: n(680),
array: n(2591),
boolean: n(6186),
date: n(2588),
function: n(4840),
link: n(9556),
number: n(4709),
object: n(7487),
string: n(9033),
symbol: n(5008),
},
aliases: { alt: `alternatives`, bool: `boolean`, func: `function` },
root: function () {
let e = { _types: new Set(Object.keys(h.types)) };
for (let t of e._types)
e[t] = function (...e) {
return (
r(
!e.length || [`alternatives`, `link`, `object`].includes(t),
`The`,
t,
`type does not allow arguments`,
),
h.generate(this, h.types[t], e)
);
};
for (let t of [
`allow`,
`custom`,
`disallow`,
`equal`,
`exist`,
`forbidden`,
`invalid`,
`not`,
`only`,
`optional`,
`options`,
`prefs`,
`preferences`,
`required`,
`strip`,
`valid`,
`when`,
])
e[t] = function (...e) {
return this.any()[t](...e);
};
Object.assign(e, h.methods);
for (let t of Object.keys(h.aliases)) e[t] = e[h.aliases[t]];
return ((e.x = e.expression), p.setup && p.setup(e), e);
},
};
((h.methods = {
ValidationError: c.ValidationError,
version: o.version,
cache: a.provider,
assert(e, t, ...n) {
h.assert(e, t, !0, n);
},
attempt: (e, t, ...n) => h.assert(e, t, !1, n),
build(e) {
return (
r(typeof u.build == `function`, `Manifest functionality disabled`),
u.build(this, e)
);
},
checkPreferences(e) {
o.checkPreferences(e);
},
compile(e, t) {
return s.compile(this, e, t);
},
defaults(e) {
r(typeof e == `function`, `modifier must be a function`);
let t = Object.assign({}, this);
for (let n of t._types) {
let i = e(t[n]());
(r(o.isSchema(i), `modifier must return a valid schema object`),
(t[n] = function (...e) {
return h.generate(this, i, e);
}));
}
return t;
},
expression: (...e) => new f(...e),
extend(...e) {
(o.verifyFlat(e, `extend`),
(m ||= n(1688)),
r(e.length, `You need to provide at least one extension`),
this.assert(e, m.extensions));
let t = Object.assign({}, this);
t._types = new Set(t._types);
for (let n of e) {
(typeof n == `function` && (n = n(t)), this.assert(n, m.extension));
let e = h.expandExtension(n, t);
for (let n of e) {
r(
t[n.type] === void 0 || t._types.has(n.type),
`Cannot override name`,
n.type,
);
let e = n.base || this.any(),
i = l.type(e, n);
(t._types.add(n.type),
(t[n.type] = function (...e) {
return h.generate(this, i, e);
}));
}
}
return t;
},
isError: c.ValidationError.isError,
isExpression: f.isTemplate,
isRef: d.isRef,
isSchema: o.isSchema,
in: (...e) => d.in(...e),
override: o.symbols.override,
ref: (...e) => d.create(...e),
types() {
let e = {};
for (let t of this._types) e[t] = this[t]();
for (let t of Object.keys(h.aliases)) e[t] = this[t]();
return e;
},
}),
(h.assert = function (e, t, n, r) {
let a = r[0] instanceof Error || typeof r[0] == `string` ? r[0] : null,
s = a === null ? r[0] : r[1],
l = t.validate(e, o.preferences({ errors: { stack: !0 } }, s || {})),
u = l.error;
if (!u) return l.value;
if (a instanceof Error) throw a;
let d = n && typeof u.annotate == `function` ? u.annotate() : u.message;
throw (
u instanceof c.ValidationError == 0 && (u = i(u)),
(u.message = a ? `${a} ${d}` : d),
u
);
}),
(h.generate = function (e, t, n) {
return (
r(e, `Must be invoked on a Joi instance.`),
(t.$_root = e),
t._definition.args && n.length ? t._definition.args(t, ...n) : t
);
}),
(h.expandExtension = function (e, t) {
if (typeof e.type == `string`) return [e];
let n = [];
for (let r of t._types)
if (e.type.test(r)) {
let i = Object.assign({}, e);
((i.type = r), (i.base = t[r]()), n.push(i));
}
return n;
}),
(e.exports = h.root()));
},
6162(e, t, n) {
let { assert: r, clone: i } = n(3115),
a = n(1532);
((t.compile = function (e, t) {
if (typeof e == `string`)
return (r(!t, `Cannot set single message string`), new a(e));
if (a.isTemplate(e)) return (r(!t, `Cannot set single message template`), e);
(r(typeof e == `object` && !Array.isArray(e), `Invalid message options`),
(t = t ? i(t) : {}));
for (let n of Object.keys(e)) {
let i = e[n];
if (n === `root` || a.isTemplate(i)) {
t[n] = i;
continue;
}
if (typeof i == `string`) {
t[n] = new a(i);
continue;
}
r(typeof i == `object` && !Array.isArray(i), `Invalid message for`, n);
let o = n;
t[o] = t[o] || {};
for (let e of Object.keys(i)) {
let n = i[e];
e === `root` || a.isTemplate(n)
? (t[o][e] = n)
: (r(typeof n == `string`, `Invalid message for`, e, `in`, o),
(t[o][e] = new a(n)));
}
}
return t;
}),
(t.decompile = function (e) {
let t = {};
for (let n of Object.keys(e)) {
let r = e[n];
if (n === `root`) {
t.root = r;
continue;
}
if (a.isTemplate(r)) {
t[n] = r.describe({ compact: !0 });
continue;
}
let i = n;
t[i] = {};
for (let e of Object.keys(r)) {
let n = r[e];
e === `root` ? (t[i].root = n) : (t[i][e] = n.describe({ compact: !0 }));
}
}
return t;
}),
(t.merge = function (e, n) {
if (!e) return t.compile(n);
if (!n) return e;
if (typeof n == `string`) return new a(n);
if (a.isTemplate(n)) return n;
let o = i(e);
for (let e of Object.keys(n)) {
let t = n[e];
if (e === `root` || a.isTemplate(t)) {
o[e] = t;
continue;
}
if (typeof t == `string`) {
o[e] = new a(t);
continue;
}
r(typeof t == `object` && !Array.isArray(t), `Invalid message for`, e);
let i = e;
o[i] = o[i] || {};
for (let e of Object.keys(t)) {
let n = t[e];
e === `root` || a.isTemplate(n)
? (o[i][e] = n)
: (r(typeof n == `string`, `Invalid message for`, e, `in`, i),
(o[i][e] = new a(n)));
}
}
return o;
}));
},
5844(e, t, n) {
let { assert: r } = n(3115),
i = n(9415),
a = n(8529),
o = {};
((t.Ids = o.Ids =
class {
constructor() {
((this._byId = new Map()),
(this._byKey = new Map()),
(this._schemaChain = !1));
}
clone() {
let e = new o.Ids();
return (
(e._byId = new Map(this._byId)),
(e._byKey = new Map(this._byKey)),
(e._schemaChain = this._schemaChain),
e
);
}
concat(e) {
e._schemaChain && (this._schemaChain = !0);
for (let [t, n] of e._byId.entries())
(r(!this._byKey.has(t), `Schema id conflicts with existing key:`, t),
this._byId.set(t, n));
for (let [t, n] of e._byKey.entries())
(r(!this._byId.has(t), `Schema key conflicts with existing id:`, t),
this._byKey.set(t, n));
}
fork(e, t, n) {
let a = this._collect(e);
a.push({ schema: n });
let s = a.shift(),
c = { id: s.id, schema: t(s.schema) };
r(
i.isSchema(c.schema),
`adjuster function failed to return a joi schema type`,
);
for (let e of a) c = { id: e.id, schema: o.fork(e.schema, c.id, c.schema) };
return c.schema;
}
labels(e, t = []) {
let n = e[0],
r = this._get(n);
if (!r) return [...t, ...e].join(`.`);
let i = e.slice(1);
return (
(t = [...t, r.schema._flags.label || n]),
i.length ? r.schema._ids.labels(i, t) : t.join(`.`)
);
}
reach(e, t = []) {
let n = e[0],
i = this._get(n);
r(i, `Schema does not contain path`, [...t, ...e].join(`.`));
let a = e.slice(1);
return a.length ? i.schema._ids.reach(a, [...t, n]) : i.schema;
}
register(e, { key: t } = {}) {
if (!e || !i.isSchema(e)) return;
(e.$_property(`schemaChain`) || e._ids._schemaChain) &&
(this._schemaChain = !0);
let n = e._flags.id;
if (n) {
let t = this._byId.get(n);
(r(
!t || t.schema === e,
`Cannot add different schemas with the same id:`,
n,
),
r(!this._byKey.has(n), `Schema id conflicts with existing key:`, n),
this._byId.set(n, { schema: e, id: n }));
}
t &&
(r(!this._byKey.has(t), `Schema already contains key:`, t),
r(!this._byId.has(t), `Schema key conflicts with existing id:`, t),
this._byKey.set(t, { schema: e, id: t }));
}
reset() {
((this._byId = new Map()),
(this._byKey = new Map()),
(this._schemaChain = !1));
}
_collect(e, t = [], n = []) {
let i = e[0],
a = this._get(i);
(r(a, `Schema does not contain path`, [...t, ...e].join(`.`)),
(n = [a, ...n]));
let o = e.slice(1);
return o.length ? a.schema._ids._collect(o, [...t, i], n) : n;
}
_get(e) {
return this._byId.get(e) || this._byKey.get(e);
}
}),
(o.fork = function (e, n, r) {
let i = t.schema(e, {
each: (e, { key: t }) => {
if (n === (e._flags.id || t)) return r;
},
ref: !1,
});
return i ? i.$_mutateRebuild() : e;
}),
(t.schema = function (e, t) {
let n;
for (let r of Object.keys(e._flags)) {
if (r[0] === `_`) continue;
let i = o.scan(e._flags[r], { source: `flags`, name: r }, t);
i !== void 0 && ((n ||= e.clone()), (n._flags[r] = i));
}
for (let r = 0; r < e._rules.length; ++r) {
let i = e._rules[r],
a = o.scan(i.args, { source: `rules`, name: i.name }, t);
if (a !== void 0) {
n ||= e.clone();
let t = Object.assign({}, i);
((t.args = a),
(n._rules[r] = t),
n._singleRules.get(i.name) === i && n._singleRules.set(i.name, t));
}
}
for (let r of Object.keys(e.$_terms)) {
if (r[0] === `_`) continue;
let i = o.scan(e.$_terms[r], { source: `terms`, name: r }, t);
i !== void 0 && ((n ||= e.clone()), (n.$_terms[r] = i));
}
return n;
}),
(o.scan = function (e, t, n, r, s) {
let c = r || [];
if (typeof e != `object` || !e) return;
let l;
if (Array.isArray(e)) {
for (let r = 0; r < e.length; ++r) {
let i = t.source === `terms` && t.name === `keys` && e[r].key,
a = o.scan(e[r], t, n, [r, ...c], i);
a !== void 0 && ((l ||= e.slice()), (l[r] = a));
}
return l;
}
if ((!1 !== n.schema && i.isSchema(e)) || (!1 !== n.ref && a.isRef(e))) {
let r = n.each(e, { ...t, path: c, key: s });
return r === e ? void 0 : r;
}
for (let r of Object.keys(e)) {
if (r[0] === `_`) continue;
let i = o.scan(e[r], t, n, [r, ...c], s);
i !== void 0 && ((l ||= Object.assign({}, e)), (l[r] = i));
}
return l;
}));
},
8529(e, t, n) {
let { assert: r, clone: i, reach: a } = n(3115),
o = n(9415),
s,
c = {
symbol: Symbol(`ref`),
defaults: {
adjust: null,
in: !1,
iterables: null,
map: null,
separator: `.`,
type: `value`,
},
};
((t.create = function (e, t = {}) {
(r(typeof e == `string`, `Invalid reference key:`, e),
o.assertOptions(t, [
`adjust`,
`ancestor`,
`in`,
`iterables`,
`map`,
`prefix`,
`render`,
`separator`,
]),
r(
!t.prefix || typeof t.prefix == `object`,
`options.prefix must be of type object`,
));
let n = Object.assign({}, c.defaults, t);
delete n.prefix;
let i = n.separator,
a = c.context(e, i, t.prefix);
if (((n.type = a.type), (e = a.key), n.type === `value`))
if (
(a.root &&
(r(!i || e[0] !== i, `Cannot specify relative path with root prefix`),
(n.ancestor = `root`),
(e ||= null)),
i && i === e)
)
((e = null), (n.ancestor = 0));
else if (n.ancestor !== void 0)
r(!i || !e || e[0] !== i, `Cannot combine prefix with ancestor option`);
else {
let [t, r] = c.ancestor(e, i);
(r && (e = e.slice(r)) === `` && (e = null), (n.ancestor = t));
}
return ((n.path = i ? (e === null ? [] : e.split(i)) : [e]), new c.Ref(n));
}),
(t.in = function (e, n = {}) {
return t.create(e, { ...n, in: !0 });
}),
(t.isRef = function (e) {
return !!e && !!e[o.symbols.ref];
}),
(c.Ref = class {
constructor(e) {
(r(typeof e == `object`, `Invalid reference construction`),
o.assertOptions(e, [
`adjust`,
`ancestor`,
`in`,
`iterables`,
`map`,
`path`,
`render`,
`separator`,
`type`,
`depth`,
`key`,
`root`,
`display`,
]),
r(
[!1, void 0].includes(e.separator) ||
(typeof e.separator == `string` && e.separator.length === 1),
`Invalid separator`,
),
r(
!e.adjust || typeof e.adjust == `function`,
`options.adjust must be a function`,
),
r(!e.map || Array.isArray(e.map), `options.map must be an array`),
r(!e.map || !e.adjust, `Cannot set both map and adjust options`),
Object.assign(this, c.defaults, e),
r(
this.type === `value` || this.ancestor === void 0,
`Non-value references cannot reference ancestors`,
),
Array.isArray(this.map) && (this.map = new Map(this.map)),
(this.depth = this.path.length),
(this.key = this.path.length ? this.path.join(this.separator) : null),
(this.root = this.path[0]),
this.updateDisplay());
}
resolve(e, t, n, i, a = {}) {
return (
r(!this.in || a.in, `Invalid in() reference usage`),
this.type === `global`
? this._resolve(n.context, t, a)
: this.type === `local`
? this._resolve(i, t, a)
: this.ancestor
? this.ancestor === `root`
? this._resolve(t.ancestors[t.ancestors.length - 1], t, a)
: (r(
this.ancestor <= t.ancestors.length,
`Invalid reference exceeds the schema root:`,
this.display,
),
this._resolve(t.ancestors[this.ancestor - 1], t, a))
: this._resolve(e, t, a)
);
}
_resolve(e, t, n) {
let r;
if (
(this.type === `value` &&
t.mainstay.shadow &&
!1 !== n.shadow &&
(r = t.mainstay.shadow.get(this.absolute(t))),
r === void 0 &&
(r = a(e, this.path, { iterables: this.iterables, functions: !0 })),
this.adjust && (r = this.adjust(r)),
this.map)
) {
let e = this.map.get(r);
e !== void 0 && (r = e);
}
return (t.mainstay && t.mainstay.tracer.resolve(t, this, r), r);
}
toString() {
return this.display;
}
absolute(e) {
return [...e.path.slice(0, -this.ancestor), ...this.path];
}
clone() {
return new c.Ref(this);
}
describe() {
let e = { path: this.path };
(this.type !== `value` && (e.type = this.type),
this.separator !== `.` && (e.separator = this.separator),
this.type === `value` &&
this.ancestor !== 1 &&
(e.ancestor = this.ancestor),
this.map && (e.map = [...this.map]));
for (let t of [`adjust`, `iterables`, `render`])
this[t] !== null && this[t] !== void 0 && (e[t] = this[t]);
return (!1 !== this.in && (e.in = !0), { ref: e });
}
updateDisplay() {
let e = this.key === null ? `` : this.key;
if (this.type !== `value`)
return void (this.display = `ref:${this.type}:${e}`);
if (!this.separator) return void (this.display = `ref:${e}`);
if (!this.ancestor) return void (this.display = `ref:${this.separator}${e}`);
if (this.ancestor === `root`) return void (this.display = `ref:root:${e}`);
if (this.ancestor === 1) return void (this.display = `ref:${e || `..`}`);
let t = Array(this.ancestor + 1)
.fill(this.separator)
.join(``);
this.display = `ref:${t}${e || ``}`;
}
}),
(c.Ref.prototype[o.symbols.ref] = !0),
(t.build = function (e) {
return (
(e = Object.assign({}, c.defaults, e)).type === `value` &&
e.ancestor === void 0 &&
(e.ancestor = 1),
new c.Ref(e)
);
}),
(c.context = function (e, t, n = {}) {
if (((e = e.trim()), n)) {
let r = n.global === void 0 ? `$` : n.global;
if (r !== t && e.startsWith(r))
return { key: e.slice(r.length), type: `global` };
let i = n.local === void 0 ? `#` : n.local;
if (i !== t && e.startsWith(i))
return { key: e.slice(i.length), type: `local` };
let a = n.root === void 0 ? `/` : n.root;
if (a !== t && e.startsWith(a))
return { key: e.slice(a.length), type: `value`, root: !0 };
}
return { key: e, type: `value` };
}),
(c.ancestor = function (e, t) {
if (!t || e[0] !== t) return [1, 0];
if (e[1] !== t) return [0, 1];
let n = 2;
for (; e[n] === t;) ++n;
return [n - 1, n];
}),
(t.toSibling = 0),
(t.toParent = 1),
(t.Manager = class {
constructor() {
this.refs = [];
}
register(e, r) {
if (e)
if (((r = r === void 0 ? t.toParent : r), Array.isArray(e)))
for (let t of e) this.register(t, r);
else if (o.isSchema(e))
for (let t of e._refs.refs)
t.ancestor - r >= 0 &&
this.refs.push({ ancestor: t.ancestor - r, root: t.root });
else
(t.isRef(e) &&
e.type === `value` &&
e.ancestor - r >= 0 &&
this.refs.push({ ancestor: e.ancestor - r, root: e.root }),
(s ||= n(1532)),
s.isTemplate(e) && this.register(e.refs(), r));
}
get length() {
return this.refs.length;
}
clone() {
let e = new t.Manager();
return ((e.refs = i(this.refs)), e);
}
reset() {
this.refs = [];
}
roots() {
return this.refs.filter((e) => !e.ancestor).map((e) => e.root);
}
}));
},
1688(e, t, n) {
let r = n(1100),
i = {};
((i.wrap = r.string().min(1).max(2).allow(!1)),
(t.preferences = r
.object({
allowUnknown: r.boolean(),
abortEarly: r.boolean(),
artifacts: r.boolean(),
cache: r.boolean(),
context: r.object(),
convert: r.boolean(),
dateFormat: r.valid(`date`, `iso`, `string`, `time`, `utc`),
debug: r.boolean(),
errors: {
escapeHtml: r.boolean(),
label: r.valid(`path`, `key`, !1),
language: [r.string(), r.object().ref()],
render: r.boolean(),
stack: r.boolean(),
wrap: { label: i.wrap, array: i.wrap, string: i.wrap },
},
externals: r.boolean(),
messages: r.object(),
noDefaults: r.boolean(),
nonEnumerables: r.boolean(),
presence: r.valid(`required`, `optional`, `forbidden`),
skipFunctions: r.boolean(),
stripUnknown: r
.object({ arrays: r.boolean(), objects: r.boolean() })
.or(`arrays`, `objects`)
.allow(!0, !1),
warnings: r.boolean(),
})
.strict()),
(i.nameRx = /^[a-zA-Z0-9]\w*$/),
(i.rule = r.object({
alias: r.array().items(r.string().pattern(i.nameRx)).single(),
args: r
.array()
.items(
r.string(),
r.object({
name: r.string().pattern(i.nameRx).required(),
ref: r.boolean(),
assert: r
.alternatives([r.function(), r.object().schema()])
.conditional(`ref`, { is: !0, then: r.required() }),
normalize: r.function(),
message: r
.string()
.when(`assert`, { is: r.function(), then: r.required() }),
}),
),
convert: r.boolean(),
manifest: r.boolean(),
method: r.function().allow(!1),
multi: r.boolean(),
validate: r.function(),
jsonSchema: r.function(),
})),
(t.extension = r
.object({
type: r.alternatives([r.string(), r.object().regex()]).required(),
args: r.function(),
cast: r
.object()
.pattern(
i.nameRx,
r.object({
from: r.function().maxArity(1).required(),
to: r.function().minArity(1).maxArity(2).required(),
}),
),
base: r
.object()
.schema()
.when(`type`, { is: r.object().regex(), then: r.forbidden() }),
coerce: [
r.function().maxArity(3),
r.object({
method: r.function().maxArity(3).required(),
from: r.array().items(r.string()).single(),
}),
],
flags: r
.object()
.pattern(i.nameRx, r.object({ setter: r.string(), default: r.any() })),
manifest: { build: r.function().arity(2) },
messages: [r.object(), r.string()],
modifiers: r.object().pattern(i.nameRx, r.function().minArity(1).maxArity(2)),
overrides: r.object().pattern(i.nameRx, r.function()),
prepare: r.function().maxArity(3),
rebuild: r.function().arity(1),
rules: r.object().pattern(i.nameRx, i.rule),
jsonSchema: r.function(),
terms: r
.object()
.pattern(
i.nameRx,
r.object({
init: r.array().allow(null).required(),
manifest: r
.object()
.pattern(/.+/, [
r.valid(`schema`, `single`),
r.object({
mapped: r
.object({
from: r.string().required(),
to: r.string().required(),
})
.required(),
}),
]),
}),
),
validate: r.function().maxArity(3),
})
.strict()),
(t.extensions = r.array().items(r.object(), r.function().arity(1)).strict()),
(i.desc = {
buffer: r.object({ buffer: r.string() }),
func: r.object({ function: r.function().required(), options: { literal: !0 } }),
override: r.object({ override: !0 }),
ref: r.object({
ref: r
.object({
type: r.valid(`value`, `global`, `local`),
path: r.array().required(),
separator: r.string().length(1).allow(!1),
ancestor: r.number().min(0).integer().allow(`root`),
map: r.array().items(r.array().length(2)).min(1),
adjust: r.function(),
iterables: r.boolean(),
in: r.boolean(),
render: r.boolean(),
})
.required(),
}),
regex: r.object({ regex: r.string().min(3) }),
special: r.object({ special: r.valid(`deep`).required() }),
template: r.object({ template: r.string().required(), options: r.object() }),
value: r.object({ value: r.alternatives([r.object(), r.array()]).required() }),
}),
(i.desc.entity = r.alternatives([
r.array().items(r.link(`...`)),
r.boolean(),
r.function(),
r.number(),
r.string(),
i.desc.buffer,
i.desc.func,
i.desc.ref,
i.desc.regex,
i.desc.special,
i.desc.template,
i.desc.value,
r.link(`/`),
])),
(i.desc.values = r
.array()
.items(
null,
r.boolean(),
r.function(),
r.number().allow(1 / 0, -1 / 0, NaN),
r.string().allow(``),
r.symbol(),
i.desc.buffer,
i.desc.func,
i.desc.override,
i.desc.ref,
i.desc.regex,
i.desc.template,
i.desc.value,
)),
(i.desc.messages = r
.object()
.pattern(/.+/, [
r.string(),
i.desc.template,
r.object().pattern(/.+/, [r.string(), i.desc.template]),
])),
(t.description = r
.object({
type: r.string().required(),
flags: r
.object({
cast: r.string(),
default: r.any(),
description: r.string(),
empty: r.link(`/`),
failover: i.desc.entity,
id: r.string(),
label: r.string(),
only: !0,
presence: [`optional`, `required`, `forbidden`],
result: [`raw`, `strip`],
strip: r.boolean(),
unit: r.string(),
})
.unknown(),
preferences: {
allowUnknown: r.boolean(),
abortEarly: r.boolean(),
artifacts: r.boolean(),
cache: r.boolean(),
convert: r.boolean(),
dateFormat: [`date`, `iso`, `string`, `time`, `utc`],
errors: {
escapeHtml: r.boolean(),
label: [`path`, `key`],
language: [r.string(), i.desc.ref],
wrap: { label: i.wrap, array: i.wrap },
},
externals: r.boolean(),
messages: i.desc.messages,
noDefaults: r.boolean(),
nonEnumerables: r.boolean(),
presence: [`required`, `optional`, `forbidden`],
skipFunctions: r.boolean(),
stripUnknown: r
.object({ arrays: r.boolean(), objects: r.boolean() })
.or(`arrays`, `objects`)
.allow(!0, !1),
warnings: r.boolean(),
},
allow: i.desc.values,
invalid: i.desc.values,
rules: r
.array()
.min(1)
.items({
name: r.string().required(),
args: r.object().min(1),
keep: r.boolean(),
message: [r.string(), i.desc.messages],
warn: r.boolean(),
}),
keys: r.object().pattern(/.*/, r.link(`/`)),
link: i.desc.ref,
})
.pattern(/^[a-z]\w*$/, r.any())));
},
4957(e, t, n) {
let { clone: r, reach: i } = n(3115),
a = n(9415),
o = { value: Symbol(`value`) };
((e.exports = o.State =
class {
constructor(e, t, n) {
((this.path = e),
(this.ancestors = t),
(this.mainstay = n.mainstay),
(this.schemas = n.schemas),
(this.debug = null));
}
localize(e, t = null, n = null) {
let r = new o.State(e, t, this);
return (n && r.schemas && (r.schemas = [o.schemas(n), ...r.schemas]), r);
}
nest(e, t) {
let n = new o.State(this.path, this.ancestors, this);
return (
(n.schemas = n.schemas && [o.schemas(e), ...n.schemas]), (n.debug = t), n
);
}
shadow(e, t) {
((this.mainstay.shadow = this.mainstay.shadow || new o.Shadow()),
this.mainstay.shadow.set(this.path, e, t));
}
snapshot() {
(this.mainstay.shadow &&
(this._snapshot = r(this.mainstay.shadow.node(this.path))),
this.mainstay.snapshot());
}
restore() {
(this.mainstay.shadow &&
(this.mainstay.shadow.override(this.path, this._snapshot),
(this._snapshot = void 0)),
this.mainstay.restore());
}
commit() {
(this.mainstay.shadow &&
(this.mainstay.shadow.override(this.path, this._snapshot),
(this._snapshot = void 0)),
this.mainstay.commit());
}
}),
(o.schemas = function (e) {
return a.isSchema(e) ? { schema: e } : e;
}),
(o.Shadow = class {
constructor() {
this._values = null;
}
set(e, t, n) {
if (!e.length || (n === `strip` && typeof e[e.length - 1] == `number`))
return;
this._values = this._values || new Map();
let r = this._values;
for (let t = 0; t < e.length; ++t) {
let n = e[t],
i = r.get(n);
(i || ((i = new Map()), r.set(n, i)), (r = i));
}
r[o.value] = t;
}
get(e) {
let t = this.node(e);
if (t) return t[o.value];
}
node(e) {
if (this._values) return i(this._values, e, { iterables: !0 });
}
override(e, t) {
if (!this._values) return;
let n = e.slice(0, -1),
r = e[e.length - 1],
a = i(this._values, n, { iterables: !0 });
t ? a.set(r, t) : a && a.delete(r);
}
}));
},
1532(e, t, n) {
let { assert: r, clone: i, escapeHtml: a } = n(3115),
o = n(679),
s = n(9415),
c = n(8013),
l = n(8529),
u = {
symbol: Symbol(`template`),
opens: Array(1e3).join(`\0`),
closes: Array(1e3).join(``),
dateFormat: {
date: Date.prototype.toDateString,
iso: Date.prototype.toISOString,
string: Date.prototype.toString,
time: Date.prototype.toTimeString,
utc: Date.prototype.toUTCString,
},
};
((e.exports = u.Template =
class {
constructor(e, t) {
if (
(r(typeof e == `string`, `Template source must be a string`),
r(
!e.includes(`\0`) && !e.includes(``),
`Template source cannot contain reserved control characters`,
),
(this.source = e),
(this.rendered = e),
(this._template = null),
t)
) {
let { functions: e, ...n } = t;
((this._settings = Object.keys(n).length ? i(n) : void 0),
(this._functions = e),
this._functions &&
(r(
Object.keys(this._functions).every((e) => typeof e == `string`),
`Functions keys must be strings`,
),
r(
Object.values(this._functions).every((e) => typeof e == `function`),
`Functions values must be functions`,
)));
} else ((this._settings = void 0), (this._functions = void 0));
this._parse();
}
_parse() {
if (!this.source.includes(`{`)) return;
let e = u.encode(this.source),
t = u.split(e),
n = !1,
r = [],
i = t.shift();
i && r.push(u.decode(i));
for (let e of t) {
let t = e[0] !== `{`,
i = t ? `}` : `}}`,
a = e.indexOf(i);
if (a === -1 || e[1] === `{`) {
r.push(`{${u.decode(e)}`);
continue;
}
let o = e.slice(+!t, a),
s = o[0] === `:`;
s && (o = o.slice(1));
let c = this._ref(u.decode(o), { raw: t, wrapped: s });
(r.push(c), typeof c != `string` && (n = !0));
let l = e.slice(a + i.length);
l && r.push(u.decode(l));
}
n ? (this._template = r) : (this.rendered = r.join(``));
}
static date(e, t) {
return u.dateFormat[t.dateFormat].call(e);
}
describe(e = {}) {
if (!this._settings && e.compact) return this.source;
let t = { template: this.source };
return (
this._settings && (t.options = this._settings),
this._functions && (t.functions = this._functions),
t
);
}
static build(e) {
return new u.Template(
e.template,
e.options || e.functions
? { ...e.options, functions: e.functions }
: void 0,
);
}
isDynamic() {
return !!this._template;
}
static isTemplate(e) {
return !!e && !!e[s.symbols.template];
}
refs() {
if (!this._template) return;
let e = [];
for (let t of this._template) typeof t != `string` && e.push(...t.refs);
return e;
}
resolve(e, t, n, r) {
return this._template && this._template.length === 1
? this._part(this._template[0], e, t, n, r, {})
: this.render(e, t, n, r);
}
_part(e, ...t) {
return e.ref ? e.ref.resolve(...t) : e.formula.evaluate(t);
}
render(e, t, n, r, i = {}) {
if (!this.isDynamic()) return this.rendered;
let o = [];
for (let s of this._template)
if (typeof s == `string`) o.push(s);
else {
let c = this._part(s, e, t, n, r, i),
l = u.stringify(c, e, t, n, r, i);
if (l !== void 0) {
let e = s.raw || !1 === (i.errors && i.errors.escapeHtml) ? l : a(l);
o.push(u.wrap(e, s.wrapped && n.errors.wrap.label));
}
}
return o.join(``);
}
_ref(e, { raw: t, wrapped: n }) {
let r = [],
i = (e) => {
let t = l.create(e, this._settings);
return (
r.push(t),
(e) => {
let n = t.resolve(...e);
return n === void 0 ? null : n;
}
);
};
try {
let t = this._functions
? { ...u.functions, ...this._functions }
: u.functions;
var a = new o.Parser(e, {
reference: i,
functions: t,
constants: u.constants,
});
} catch (t) {
throw (
(t.message = `Invalid template variable "${e}" fails due to: ${t.message}`),
t
);
}
if (a.single) {
if (a.single.type === `reference`) {
let e = r[0];
return {
ref: e,
raw: t,
refs: r,
wrapped: n || (e.type === `local` && e.key === `label`),
};
}
return u.stringify(a.single.value);
}
return { formula: a, raw: t, refs: r };
}
toString() {
return this.source;
}
}),
(u.Template.prototype[s.symbols.template] = !0),
(u.Template.prototype.isImmutable = !0),
(u.encode = function (e) {
return e
.replace(/\\(\{+)/g, (e, t) => u.opens.slice(0, t.length))
.replace(/\\(\}+)/g, (e, t) => u.closes.slice(0, t.length));
}),
(u.decode = function (e) {
return e.replace(/\u0000/g, `{`).replace(/\u0001/g, `}`);
}),
(u.split = function (e) {
let t = [],
n = ``;
for (let r = 0; r < e.length; ++r) {
let i = e[r];
if (i === `{`) {
let i = ``;
for (; r + 1 < e.length && e[r + 1] === `{`;) ((i += `{`), ++r);
(t.push(n), (n = i));
} else n += i;
}
return (t.push(n), t);
}),
(u.wrap = function (e, t) {
return t ? (t.length === 1 ? `${t}${e}${t}` : `${t[0]}${e}${t[1]}`) : e;
}),
(u.stringify = function (e, t, n, r, i, a = {}) {
let o = typeof e,
s = (r && r.errors && r.errors.wrap) || {},
c = !1;
if (
(l.isRef(e) &&
e.render &&
((c = e.in), (e = e.resolve(t, n, r, i, { in: e.in, ...a }))),
e === null)
)
return `null`;
if (o === `string`) return u.wrap(e, a.arrayItems && s.string);
if (o === `number` || o === `function` || o === `symbol`) return e.toString();
if (o !== `object`) return JSON.stringify(e);
if (e instanceof Date) return u.Template.date(e, r);
if (e instanceof Map) {
let t = [];
for (let [n, r] of e.entries()) t.push(`${n.toString()} -> ${r.toString()}`);
e = t;
}
if (!Array.isArray(e)) return e.toString();
let d = [];
for (let o of e) d.push(u.stringify(o, t, n, r, i, { arrayItems: !0, ...a }));
return u.wrap(d.join(`, `), !c && s.array);
}),
(u.constants = {
true: !0,
false: !1,
null: null,
second: 1e3,
minute: 6e4,
hour: 36e5,
day: 864e5,
}),
(u.functions = {
if: (e, t, n) => (e ? t : n),
length: (e) =>
typeof e == `string`
? e.length
: e && typeof e == `object`
? Array.isArray(e)
? e.length
: Object.keys(e).length
: null,
msg(e) {
let [t, n, r, i, a] = this,
o = a.messages;
if (!o) return ``;
let s = c.template(t, o[0], e, n, r) || c.template(t, o[1], e, n, r);
return s ? s.render(t, n, r, i, a) : ``;
},
number: (e) =>
typeof e == `number`
? e
: typeof e == `string`
? parseFloat(e)
: typeof e == `boolean`
? +!!e
: e instanceof Date
? e.getTime()
: null,
}));
},
4972(e, t, n) {
let { assert: r, merge: i } = n(3115),
a = n(680),
o = n(9415),
s = n(3541),
c = n(8013),
l = n(8529),
u = {};
((e.exports = a.extend({
type: `alternatives`,
flags: { match: { default: `any` } },
terms: { matches: { init: [], register: l.toSibling } },
args: (e, ...t) =>
t.length === 1 && Array.isArray(t[0]) ? e.try(...t[0]) : e.try(...t),
validate(e, t) {
let { schema: n, error: r, state: a, prefs: o } = t;
if (n._flags.match) {
let t = [],
s = [];
for (let r = 0; r < n.$_terms.matches.length; ++r) {
let i = n.$_terms.matches[r],
c = a.nest(i.schema, `match.${r}`);
c.snapshot();
let l = i.schema.$_validate(e, c, o);
l.errors ? (s.push(l.errors), c.restore()) : (t.push(l.value), c.commit());
}
if (t.length === 0)
return {
errors: r(`alternatives.any`, {
details: s.map((e) => c.details(e, { override: !1 })),
}),
};
if (n._flags.match === `one`)
return t.length === 1 ? { value: t[0] } : { errors: r(`alternatives.one`) };
if (t.length !== n.$_terms.matches.length)
return {
errors: r(`alternatives.all`, {
details: s.map((e) => c.details(e, { override: !1 })),
}),
};
let l = (e) =>
e.$_terms.matches.some(
(e) =>
e.schema.type === `object` ||
(e.schema.type === `alternatives` && l(e.schema)),
);
return l(n)
? { value: t.reduce((e, t) => i(e, t, { mergeArrays: !1 })) }
: { value: t[t.length - 1] };
}
let s = [];
for (let t = 0; t < n.$_terms.matches.length; ++t) {
let r = n.$_terms.matches[t];
if (r.schema) {
let n = a.nest(r.schema, `match.${t}`);
n.snapshot();
let i = r.schema.$_validate(e, n, o);
if (!i.errors) return (n.commit(), i);
(n.restore(), s.push({ schema: r.schema, reports: i.errors }));
continue;
}
let i = r.ref ? r.ref.resolve(e, a, o) : e,
c = r.is ? [r] : r.switch;
for (let n = 0; n < c.length; ++n) {
let { is: s, then: l, otherwise: u } = c[n],
d = `match.${t}${r.switch ? `.` + n : ``}`;
if (s.$_match(i, a.nest(s, `${d}.is`), o)) {
if (l) return l.$_validate(e, a.nest(l, `${d}.then`), o);
} else if (u) return u.$_validate(e, a.nest(u, `${d}.otherwise`), o);
}
}
return u.errors(s, t);
},
jsonSchema(e, t, n, r) {
let i = [];
for (let t of e.$_terms.matches)
if (t.schema) i.push(t.schema.$_jsonSchema(n, r));
else {
let e = t.is ? [t] : t.switch;
for (let t of e)
(t.then && i.push(t.then.$_jsonSchema(n, r)),
t.otherwise && i.push(t.otherwise.$_jsonSchema(n, r)));
}
if (i.length) {
delete t.type;
let n = e._flags.match ?? `any`;
n === `one` ? (t.oneOf = i) : n === `all` ? (t.allOf = i) : (t.anyOf = i);
}
return t;
},
rules: {
conditional: {
method(e, t) {
(r(!this._flags._endedSwitch, `Unreachable condition`),
r(
!this._flags.match,
`Cannot combine match mode`,
this._flags.match,
`with conditional rule`,
),
r(
t.break === void 0,
`Cannot use break option with alternatives conditional`,
));
let n = this.clone(),
i = s.when(n, e, t),
a = i.is ? [i] : i.switch;
for (let e of a)
if (e.then && e.otherwise) {
n.$_setFlag(`_endedSwitch`, !0, { clone: !1 });
break;
}
return (n.$_terms.matches.push(i), n.$_mutateRebuild());
},
},
match: {
method(e) {
if (
(r(
[`any`, `one`, `all`].includes(e),
`Invalid alternatives match mode`,
e,
),
e !== `any`)
)
for (let t of this.$_terms.matches)
r(t.schema, `Cannot combine match mode`, e, `with conditional rules`);
return this.$_setFlag(`match`, e);
},
},
try: {
method(...e) {
(r(e.length, `Missing alternative schemas`),
o.verifyFlat(e, `try`),
r(!this._flags._endedSwitch, `Unreachable condition`));
let t = this.clone();
for (let n of e) t.$_terms.matches.push({ schema: t.$_compile(n) });
return t.$_mutateRebuild();
},
},
},
overrides: {
label(e) {
return this.$_parent(`label`, e).$_modify({
each: (t, n) =>
n.path[0] !== `is` && typeof t._flags.label != `string`
? t.label(e)
: void 0,
ref: !1,
});
},
isAsync() {
var e;
if ((e = this.$_terms.externals) != null && e.length) return !0;
for (let e of this.$_terms.matches) {
var t, n, r;
if (
((t = e.schema) != null && t.isAsync()) ||
((n = e.then) != null && n.isAsync()) ||
((r = e.otherwise) != null && r.isAsync())
)
return !0;
}
return !1;
},
},
rebuild(e) {
e.$_modify({
each: (t) => {
o.isSchema(t) &&
t.type === `array` &&
e.$_setFlag(`_arrayItems`, !0, { clone: !1 });
},
});
},
manifest: {
build(e, t) {
if (t.matches)
for (let n of t.matches) {
let { schema: t, ref: r, is: i, not: a, then: o, otherwise: s } = n;
e = t
? e.try(t)
: r
? e.conditional(r, {
is: i,
then: o,
not: a,
otherwise: s,
switch: n.switch,
})
: e.conditional(i, { then: o, otherwise: s });
}
return e;
},
},
messages: {
"alternatives.all": `{{#label}} does not match all of the required types`,
"alternatives.any": `{{#label}} does not match any of the allowed types`,
"alternatives.match": `{{#label}} does not match any of the allowed types`,
"alternatives.one": `{{#label}} matches more than one allowed type`,
"alternatives.types": `{{#label}} must be one of {{#types}}`,
},
})),
(u.errors = function (e, { error: t, state: n }) {
if (!e.length) return { errors: t(`alternatives.any`) };
if (e.length === 1) return { errors: e[0].reports };
let r = new Set(),
i = [];
for (let { reports: a, schema: o } of e) {
if (a.length > 1) return u.unmatched(e, t);
let s = a[0];
if (s instanceof c.Report == 0) return u.unmatched(e, t);
if (s.state.path.length !== n.path.length) {
i.push({ type: o.type, report: s });
continue;
}
if (s.code === `any.only`) {
for (let e of s.local.valids) r.add(e);
continue;
}
let [l, d] = s.code.split(`.`);
d === `base`
? s.code === `object.base`
? r.add(s.local.type)
: r.add(l)
: i.push({ type: o.type, report: s });
}
return i.length
? i.length === 1
? { errors: i[0].report }
: u.unmatched(e, t)
: { errors: t(`alternatives.types`, { types: [...r] }) };
}),
(u.unmatched = function (e, t) {
let n = [];
for (let t of e) n.push(...t.reports);
return { errors: t(`alternatives.match`, c.details(n, { override: !1 })) };
}));
},
680(e, t, n) {
let { assert: r } = n(3115),
i = n(2115),
a = n(9415),
o = n(6162);
e.exports = i.extend({
type: `any`,
flags: { only: { default: !1 } },
terms: {
alterations: { init: null },
examples: { init: null },
externals: { init: null },
metas: { init: [] },
notes: { init: [] },
shared: { init: null },
tags: { init: [] },
whens: { init: null },
},
rules: {
custom: {
method(e, t) {
return (
r(typeof e == `function`, `Method must be a function`),
r(
t === void 0 || (t && typeof t == `string`),
`Description must be a non-empty string`,
),
this.$_addRule({ name: `custom`, args: { method: e, description: t } })
);
},
validate(e, t, { method: n }) {
try {
return n(e, t);
} catch (e) {
return t.error(`any.custom`, { error: e });
}
},
args: [`method`, `description`],
multi: !0,
},
messages: {
method(e) {
return this.prefs({ messages: e });
},
},
shared: {
method(e) {
r(a.isSchema(e) && e._flags.id, `Schema must be a schema with an id`);
let t = this.clone();
return (
(t.$_terms.shared = t.$_terms.shared || []),
t.$_terms.shared.push(e),
t.$_mutateRegister(e),
t
);
},
},
warning: {
method(e, t) {
return (
r(e && typeof e == `string`, `Invalid warning code`),
this.$_addRule({ name: `warning`, args: { code: e, local: t }, warn: !0 })
);
},
validate: (e, t, { code: n, local: r }) => t.error(n, r),
args: [`code`, `local`],
multi: !0,
},
},
modifiers: {
keep(e, t = !0) {
e.keep = t;
},
message(e, t) {
e.message = o.compile(t);
},
warn(e, t = !0) {
e.warn = t;
},
},
manifest: {
build(e, t) {
for (let n of Object.keys(t)) {
let r = t[n];
if ([`examples`, `externals`, `metas`, `notes`, `tags`].includes(n))
for (let t of r) e = e[n.slice(0, -1)](t);
else {
if (n === `alterations`) {
let t = {};
for (let { target: e, adjuster: n } of r) t[e] = n;
e = e.alter(t);
continue;
}
if (n !== `whens`) {
if (n === `shared`) for (let t of r) e = e.shared(t);
} else
for (let t of r) {
let { ref: n, is: r, not: i, then: a, otherwise: o, concat: s } = t;
e = s
? e.concat(s)
: n
? e.when(n, {
is: r,
not: i,
then: a,
otherwise: o,
switch: t.switch,
break: t.break,
})
: e.when(r, { then: a, otherwise: o, break: t.break });
}
}
}
return e;
},
},
messages: {
"any.custom": `{{#label}} failed custom validation because {{#error.message}}`,
"any.default": `{{#label}} threw an error when running default method`,
"any.failover": `{{#label}} threw an error when running failover method`,
"any.invalid": `{{#label}} contains an invalid value`,
"any.only": `{{#label}} must be {if(#valids.length == 1, "", "one of ")}{{#valids}}`,
"any.ref": `{{#label}} {{#arg}} references {{:#ref}} which {{#reason}}`,
"any.required": `{{#label}} is required`,
"any.unknown": `{{#label}} is not allowed`,
},
});
},
2591(e, t, n) {
let { assert: r, deepEqual: i, reach: a } = n(3115),
o = n(680),
s = n(9415),
c = n(3541),
l = {};
((e.exports = o.extend({
type: `array`,
flags: { single: { default: !1 }, sparse: { default: !1 } },
terms: {
items: { init: [], manifest: `schema` },
ordered: { init: [], manifest: `schema` },
_exclusions: { init: [] },
_inclusions: { init: [] },
_requireds: { init: [] },
},
coerce: {
from: `object`,
method(e, { schema: t, state: n, prefs: r }) {
if (!Array.isArray(e)) return;
let i = t.$_getRule(`sort`);
return i ? l.sort(t, e, i.args.options, n, r) : void 0;
},
},
validate(e, { schema: t, error: n }) {
if (!Array.isArray(e)) {
if (t._flags.single) {
let t = [e];
return ((t[s.symbols.arraySingle] = !0), { value: t });
}
return { errors: n(`array.base`) };
}
if (t.$_getRule(`items`) || t.$_terms.externals) return { value: e.slice() };
},
jsonSchema(e, t, n, r) {
let i = e.$_terms.ordered;
if (
(i.length && (t.prefixItems = i.map((e) => e.$_jsonSchema(n, r))),
e.$_terms.items.length)
) {
let a;
((a =
e.$_terms.items.length === 1
? e.$_terms.items[0].$_jsonSchema(n, r)
: { anyOf: e.$_terms.items.map((e) => e.$_jsonSchema(n, r)) }),
i.length
? ((t.unevaluatedItems = a), l.setOrderedMinItems(t, i))
: (t.items = a));
} else
i.length &&
((t.unevaluatedItems = !1),
l.setOrderedMinItems(t, i),
(t.maxItems = i.length));
let a = [];
for (let t of e._rules)
t.name !== `has` ||
t.args.schema._refs.refs.length ||
a.push(t.args.schema.$_jsonSchema(n, r));
if (
(a.length &&
(a.length === 1
? (t.contains = a[0])
: (t.allOf = a.map((e) => ({ contains: e })))),
e._flags.single && e.$_terms.items.length)
) {
let i;
((i =
e.$_terms.items.length === 1
? e.$_terms.items[0].$_jsonSchema(n, r)
: { anyOf: e.$_terms.items.map((e) => e.$_jsonSchema(n, r)) }),
(t = { anyOf: [t, i] }));
}
return t;
},
rules: {
has: {
method(e) {
e = this.$_compile(e, { appendPath: !0 });
let t = this.$_addRule({ name: `has`, args: { schema: e } });
return (t.$_mutateRegister(e), t);
},
validate(e, { state: t, prefs: n, error: r }, { schema: i }) {
let a = [e, ...t.ancestors];
for (let r = 0; r < e.length; ++r) {
let o = t.localize([...t.path, r], a, i);
if (i.$_match(e[r], o, n)) return e;
}
let o = i._flags.label;
return o
? r(`array.hasKnown`, { patternLabel: o })
: r(`array.hasUnknown`, null);
},
multi: !0,
},
items: {
method(...e) {
s.verifyFlat(e, `items`);
let t = this.$_addRule(`items`);
for (let n = 0; n < e.length; ++n) {
let r = s.tryWithPath(() => this.$_compile(e[n]), n, { append: !0 });
t.$_terms.items.push(r);
}
return t.$_mutateRebuild();
},
validate(e, { schema: t, error: n, state: r, prefs: i, errorsArray: a }) {
let o = t.$_terms._requireds.slice(),
c = t.$_terms.ordered.slice(),
u = [...t.$_terms._inclusions, ...o],
d = !e[s.symbols.arraySingle];
delete e[s.symbols.arraySingle];
let f = a(),
p = e.length;
for (let a = 0; a < p; ++a) {
let s = e[a],
m = !1,
h = !1,
g = d ? a : new Number(a),
_ = [...r.path, g];
if (!t._flags.sparse && s === void 0) {
if (
(f.push(
n(
`array.sparse`,
{ key: g, path: _, pos: a, value: void 0 },
r.localize(_),
),
),
i.abortEarly)
)
return f;
c.shift();
continue;
}
let v = [e, ...r.ancestors];
for (let e of t.$_terms._exclusions)
if (e.$_match(s, r.localize(_, v, e), i, { presence: `ignore` })) {
if (
(f.push(n(`array.excludes`, { pos: a, value: s }, r.localize(_))),
i.abortEarly)
)
return f;
((m = !0), c.shift());
break;
}
if (m) continue;
if (t.$_terms.ordered.length) {
if (c.length) {
let o = c.shift(),
u = o.$_validate(s, r.localize(_, v, o), i);
if (u.errors) {
if ((f.push(...u.errors), i.abortEarly)) return f;
} else if (o._flags.result === `strip`)
(l.fastSplice(e, a), --a, --p);
else {
if (!t._flags.sparse && u.value === void 0) {
if (
(f.push(
n(
`array.sparse`,
{ key: g, path: _, pos: a, value: void 0 },
r.localize(_),
),
),
i.abortEarly)
)
return f;
continue;
}
e[a] = u.value;
}
continue;
}
if (!t.$_terms.items.length) {
if (
(f.push(
n(`array.orderedLength`, {
pos: a,
limit: t.$_terms.ordered.length,
}),
),
i.abortEarly)
)
return f;
break;
}
}
let y = [],
b = o.length;
for (let c = 0; c < b; ++c) {
let u = r.localize(_, v, o[c]);
u.snapshot();
let d = o[c].$_validate(s, u, i);
if (((y[c] = d), !d.errors)) {
if (
(u.commit(),
(e[a] = d.value),
(h = !0),
l.fastSplice(o, c),
--c,
--b,
!t._flags.sparse &&
d.value === void 0 &&
(f.push(
n(
`array.sparse`,
{ key: g, path: _, pos: a, value: void 0 },
r.localize(_),
),
),
i.abortEarly))
)
return f;
break;
}
u.restore();
}
if (h) continue;
let x = (i.stripUnknown && !!i.stripUnknown.arrays) || !1;
b = u.length;
for (let c of u) {
let u,
d = o.indexOf(c);
if (d !== -1) u = y[d];
else {
let o = r.localize(_, v, c);
if ((o.snapshot(), (u = c.$_validate(s, o, i)), !u.errors)) {
(o.commit(),
c._flags.result === `strip`
? (l.fastSplice(e, a), --a, --p)
: t._flags.sparse || u.value !== void 0
? (e[a] = u.value)
: (f.push(
n(
`array.sparse`,
{ key: g, path: _, pos: a, value: void 0 },
r.localize(_),
),
),
(m = !0)),
(h = !0));
break;
}
o.restore();
}
if (b === 1) {
if (x) {
(l.fastSplice(e, a), --a, --p, (h = !0));
break;
}
if ((f.push(...u.errors), i.abortEarly)) return f;
m = !0;
break;
}
}
if (
!m &&
(t.$_terms._inclusions.length || t.$_terms._requireds.length) &&
!h
) {
if (x) {
(l.fastSplice(e, a), --a, --p);
continue;
}
if (
(f.push(n(`array.includes`, { pos: a, value: s }, r.localize(_))),
i.abortEarly)
)
return f;
}
}
return (
o.length && l.fillMissedErrors(t, f, o, e, r, i),
c.length &&
(l.fillOrderedErrors(t, f, c, e, r, i),
f.length || l.fillDefault(c, e, r, i)),
f.length ? f : e
);
},
priority: !0,
manifest: !1,
},
length: {
method(e) {
return this.$_addRule({
name: `length`,
args: { limit: e },
operator: `=`,
});
},
validate: (e, t, { limit: n }, { name: r, operator: i, args: a }) =>
s.compare(e.length, n, i)
? e
: t.error(`array.` + r, { limit: a.limit, value: e }),
jsonSchema: (e, t) => (
(t.minItems = e.args.limit),
(t.maxItems = e.args.limit),
t
),
args: [
{
name: `limit`,
ref: !0,
assert: s.limit,
message: `must be a positive integer`,
},
],
},
max: {
method(e) {
return this.$_addRule({
name: `max`,
method: `length`,
args: { limit: e },
operator: `<=`,
});
},
jsonSchema: (e, t) => ((t.maxItems = e.args.limit), t),
},
min: {
method(e) {
return this.$_addRule({
name: `min`,
method: `length`,
args: { limit: e },
operator: `>=`,
});
},
jsonSchema: (e, t) => ((t.minItems = e.args.limit), t),
},
ordered: {
method(...e) {
s.verifyFlat(e, `ordered`);
let t = this.$_addRule(`items`);
for (let n = 0; n < e.length; ++n) {
let r = s.tryWithPath(() => this.$_compile(e[n]), n, { append: !0 });
(l.validateSingle(r, t),
t.$_mutateRegister(r),
t.$_terms.ordered.push(r));
}
return t.$_mutateRebuild();
},
},
single: {
method(e) {
let t = e === void 0 || !!e;
return (
r(
!t || !this._flags._arrayItems,
`Cannot specify single rule when array has array items`,
),
this.$_setFlag(`single`, t)
);
},
},
sort: {
method(e = {}) {
s.assertOptions(e, [`by`, `order`]);
let t = { order: e.order || `ascending` };
return (
e.by &&
((t.by = c.ref(e.by, { ancestor: 0 })),
r(!t.by.ancestor, `Cannot sort by ancestor`)),
this.$_addRule({ name: `sort`, args: { options: t } })
);
},
validate(e, { error: t, state: n, prefs: r, schema: i }, { options: a }) {
let { value: o, errors: s } = l.sort(i, e, a, n, r);
if (s) return s;
for (let n = 0; n < e.length; ++n)
if (e[n] !== o[n])
return t(`array.sort`, {
order: a.order,
by: a.by ? a.by.key : `value`,
});
return e;
},
convert: !0,
},
sparse: {
method(e) {
let t = e === void 0 || !!e;
return this._flags.sparse === t
? this
: (t ? this.clone() : this.$_addRule(`items`)).$_setFlag(`sparse`, t, {
clone: !1,
});
},
},
unique: {
method(e, t = {}) {
(r(
!e || typeof e == `function` || typeof e == `string`,
`comparator must be a function or a string`,
),
s.assertOptions(t, [`ignoreUndefined`, `separator`]));
let n = { name: `unique`, args: { options: t, comparator: e } };
if (e)
if (typeof e == `string`) {
let r = s.default(t.separator, `.`);
n.path = r ? e.split(r) : [e];
} else n.comparator = e;
return this.$_addRule(n);
},
validate(
e,
{ state: t, error: n, schema: o },
{ comparator: s, options: c },
{ comparator: l, path: u },
) {
let d = {
string: Object.create(null),
number: Object.create(null),
undefined: Object.create(null),
boolean: Object.create(null),
bigint: Object.create(null),
object: new Map(),
function: new Map(),
custom: new Map(),
},
f = l || i,
p = c.ignoreUndefined;
for (let i = 0; i < e.length; ++i) {
let o = u ? a(e[i], u) : e[i],
c = l ? d.custom : d[typeof o];
if (
(r(c, `Failed to find unique map container for type`, typeof o),
c instanceof Map)
) {
let r = c.entries(),
a;
for (; !(a = r.next()).done;)
if (f(a.value[0], o)) {
let r = t.localize([...t.path, i], [e, ...t.ancestors]),
o = {
pos: i,
value: e[i],
dupePos: a.value[1],
dupeValue: e[a.value[1]],
};
return (u && (o.path = s), n(`array.unique`, o, r));
}
c.set(o, i);
} else {
if ((!p || o !== void 0) && c[o] !== void 0) {
let r = { pos: i, value: e[i], dupePos: c[o], dupeValue: e[c[o]] };
return (
u && (r.path = s),
n(
`array.unique`,
r,
t.localize([...t.path, i], [e, ...t.ancestors]),
)
);
}
c[o] = i;
}
}
return e;
},
jsonSchema: (e, t) => (e.args.comparator || (t.uniqueItems = !0), t),
args: [`comparator`, `options`],
multi: !0,
},
},
overrides: {
isAsync() {
var e;
if ((e = this.$_terms.externals) != null && e.length) return !0;
for (let e of this.$_terms.items) if (e.isAsync()) return !0;
for (let e of this.$_terms.ordered) if (e.isAsync()) return !0;
return !1;
},
},
cast: { set: { from: Array.isArray, to: (e, t) => new Set(e) } },
rebuild(e) {
((e.$_terms._inclusions = []),
(e.$_terms._exclusions = []),
(e.$_terms._requireds = []));
for (let t of e.$_terms.items)
(l.validateSingle(t, e),
t._flags.presence === `required`
? e.$_terms._requireds.push(t)
: t._flags.presence === `forbidden`
? e.$_terms._exclusions.push(t)
: e.$_terms._inclusions.push(t));
for (let t of e.$_terms.ordered) l.validateSingle(t, e);
},
manifest: {
build: (e, t) => (
t.items && (e = e.items(...t.items)),
t.ordered && (e = e.ordered(...t.ordered)),
e
),
},
messages: {
"array.base": `{{#label}} must be an array`,
"array.excludes": `{{#label}} contains an excluded value`,
"array.hasKnown": `{{#label}} does not contain at least one required match for type {:#patternLabel}`,
"array.hasUnknown": `{{#label}} does not contain at least one required match`,
"array.includes": `{{#label}} does not match any of the allowed types`,
"array.includesRequiredBoth": `{{#label}} does not contain {{#knownMisses}} and {{#unknownMisses}} other required value(s)`,
"array.includesRequiredKnowns": `{{#label}} does not contain {{#knownMisses}}`,
"array.includesRequiredUnknowns": `{{#label}} does not contain {{#unknownMisses}} required value(s)`,
"array.length": `{{#label}} must contain {{#limit}} items`,
"array.max": `{{#label}} must contain less than or equal to {{#limit}} items`,
"array.min": `{{#label}} must contain at least {{#limit}} items`,
"array.orderedLength": `{{#label}} must contain at most {{#limit}} items`,
"array.sort": `{{#label}} must be sorted in {#order} order by {{#by}}`,
"array.sort.mismatching": `{{#label}} cannot be sorted due to mismatching types`,
"array.sort.unsupported": `{{#label}} cannot be sorted due to unsupported type {#type}`,
"array.sparse": `{{#label}} must not be a sparse array item`,
"array.unique": `{{#label}} contains a duplicate value`,
},
})),
(l.setOrderedMinItems = function (e, t) {
let n = l.orderedMinItems(t);
n && (e.minItems = n);
}),
(l.orderedMinItems = function (e) {
for (let t = e.length - 1; t >= 0; --t)
if (e[t]._flags.presence === `required`) return t + 1;
return 0;
}),
(l.fillMissedErrors = function (e, t, n, r, i, a) {
let o = [],
s = 0;
for (let e of n) {
let t = e._flags.label;
t ? o.push(t) : ++s;
}
o.length
? s
? t.push(
e.$_createError(
`array.includesRequiredBoth`,
r,
{ knownMisses: o, unknownMisses: s },
i,
a,
),
)
: t.push(
e.$_createError(
`array.includesRequiredKnowns`,
r,
{ knownMisses: o },
i,
a,
),
)
: t.push(
e.$_createError(
`array.includesRequiredUnknowns`,
r,
{ unknownMisses: s },
i,
a,
),
);
}),
(l.fillOrderedErrors = function (e, t, n, r, i, a) {
let o = [];
for (let e of n) e._flags.presence === `required` && o.push(e);
o.length && l.fillMissedErrors(e, t, o, r, i, a);
}),
(l.fillDefault = function (e, t, n, r) {
let i = [],
a = !0;
for (let o = e.length - 1; o >= 0; --o) {
let s = e[o],
c = [t, ...n.ancestors],
l = s.$_validate(void 0, n.localize(n.path, c, s), r).value;
if (a) {
if (l === void 0) continue;
a = !1;
}
i.unshift(l);
}
i.length && t.push(...i);
}),
(l.fastSplice = function (e, t) {
let n = t;
for (; n < e.length;) e[n++] = e[n];
--e.length;
}),
(l.validateSingle = function (e, t) {
(e.type === `array` || e._flags._arrayItems) &&
(r(!t._flags.single, `Cannot specify array item with single rule enabled`),
t.$_setFlag(`_arrayItems`, !0, { clone: !1 }));
}),
(l.sort = function (e, t, n, r, i) {
let a = n.order === `ascending` ? 1 : -1,
o = -1 * a,
s = a,
c = (c, u) => {
let d = l.compare(c, u, o, s);
if (
d !== null ||
(n.by && ((c = n.by.resolve(c, r, i)), (u = n.by.resolve(u, r, i))),
(d = l.compare(c, u, o, s)),
d !== null)
)
return d;
let f = typeof c;
if (f !== typeof u)
throw e.$_createError(`array.sort.mismatching`, t, null, r, i);
if (f !== `number` && f !== `string`)
throw e.$_createError(`array.sort.unsupported`, t, { type: f }, r, i);
return f === `number` ? (c - u) * a : c < u ? o : s;
};
try {
return { value: t.slice().sort(c) };
} catch (e) {
return { errors: e };
}
}),
(l.compare = function (e, t, n, r) {
return e === t
? 0
: e === void 0
? 1
: t === void 0
? -1
: e === null
? r
: t === null
? n
: null;
}));
},
6186(e, t, n) {
let { assert: r } = n(3115),
i = n(680),
a = n(9415),
o = n(6220),
s = {
isBool: function (e) {
return typeof e == `boolean`;
},
};
e.exports = i.extend({
type: `boolean`,
flags: { sensitive: { default: !1 } },
terms: {
falsy: { init: null, manifest: `values` },
truthy: { init: null, manifest: `values` },
},
coerce(e, { schema: t }) {
if (typeof e != `boolean`) {
if (typeof e == `string`) {
let n = e.trim(),
r = t._flags.sensitive ? n : n.toLowerCase();
e = r === `true` || (r !== `false` && e);
}
return (
typeof e != `boolean` &&
(e =
(t.$_terms.truthy &&
t.$_terms.truthy.has(e, null, null, !t._flags.sensitive)) ||
((!t.$_terms.falsy ||
!t.$_terms.falsy.has(e, null, null, !t._flags.sensitive)) &&
e)),
{ value: e }
);
}
},
validate(e, { error: t }) {
if (typeof e != `boolean`) return { value: e, errors: t(`boolean.base`) };
},
rules: {
truthy: {
method(...e) {
a.verifyFlat(e, `truthy`);
let t = this.clone();
t.$_terms.truthy = t.$_terms.truthy || new o();
for (let n = 0; n < e.length; ++n) {
let i = e[n];
(r(i !== void 0, `Cannot call truthy with undefined`),
t.$_terms.truthy.add(i));
}
return t;
},
},
falsy: {
method(...e) {
a.verifyFlat(e, `falsy`);
let t = this.clone();
t.$_terms.falsy = t.$_terms.falsy || new o();
for (let n = 0; n < e.length; ++n) {
let i = e[n];
(r(i !== void 0, `Cannot call falsy with undefined`),
t.$_terms.falsy.add(i));
}
return t;
},
},
sensitive: {
method(e = !0) {
return this.$_setFlag(`sensitive`, e);
},
},
},
cast: {
number: { from: s.isBool, to: (e, t) => +!!e },
string: { from: s.isBool, to: (e, t) => (e ? `true` : `false`) },
},
manifest: {
build: (e, t) => (
t.truthy && (e = e.truthy(...t.truthy)),
t.falsy && (e = e.falsy(...t.falsy)),
e
),
},
messages: { "boolean.base": `{{#label}} must be a boolean` },
});
},
2588(e, t, n) {
let { assert: r } = n(3115),
i = n(680),
a = n(9415),
o = n(1532),
s = {
formats: [`iso`, `javascript`, `unix`],
isDate: function (e) {
return e instanceof Date;
},
};
((e.exports = i.extend({
type: `date`,
coerce: {
from: [`number`, `string`],
method: (e, { schema: t }) => ({ value: s.parse(e, t._flags.format) || e }),
},
validate(e, { schema: t, error: n, prefs: r }) {
if (e instanceof Date && !isNaN(e.getTime())) return;
let i = t._flags.format;
return r.convert && i && typeof e == `string`
? { value: e, errors: n(`date.format`, { format: i }) }
: { value: e, errors: n(`date.base`) };
},
jsonSchema: (e, t, n, r) => ((t.type = `string`), (t.format = `date-time`), t),
rules: {
compare: {
method: !1,
validate(e, t, { date: n }, { name: r, operator: i, args: o }) {
let s = n === `now` ? Date.now() : n.getTime();
return a.compare(e.getTime(), s, i)
? e
: t.error(`date.` + r, { limit: o.date, value: e });
},
args: [
{
name: `date`,
ref: !0,
normalize: (e) => (e === `now` ? e : s.parse(e)),
assert: (e) => e !== null,
message: `must have a valid date format`,
},
],
},
format: {
method(e) {
return (
r(s.formats.includes(e), `Unknown date format`, e),
this.$_setFlag(`format`, e)
);
},
},
greater: {
method(e) {
return this.$_addRule({
name: `greater`,
method: `compare`,
args: { date: e },
operator: `>`,
});
},
jsonSchema(e, t) {
let n = e.args.date;
return (
n instanceof Date &&
(t[`x-constraint`] = {
...t[`x-constraint`],
greater: n.toISOString(),
}),
t
);
},
},
iso: {
method() {
return this.format(`iso`);
},
},
less: {
method(e) {
return this.$_addRule({
name: `less`,
method: `compare`,
args: { date: e },
operator: `<`,
});
},
jsonSchema(e, t) {
let n = e.args.date;
return (
n instanceof Date &&
(t[`x-constraint`] = { ...t[`x-constraint`], less: n.toISOString() }),
t
);
},
},
max: {
method(e) {
return this.$_addRule({
name: `max`,
method: `compare`,
args: { date: e },
operator: `<=`,
});
},
jsonSchema(e, t) {
let n = e.args.date;
return (
n instanceof Date &&
(t[`x-constraint`] = { ...t[`x-constraint`], max: n.toISOString() }),
t
);
},
},
min: {
method(e) {
return this.$_addRule({
name: `min`,
method: `compare`,
args: { date: e },
operator: `>=`,
});
},
jsonSchema(e, t) {
let n = e.args.date;
return (
n instanceof Date &&
(t[`x-constraint`] = { ...t[`x-constraint`], min: n.toISOString() }),
t
);
},
},
timestamp: {
method(e = `javascript`) {
return (
r(
[`javascript`, `unix`].includes(e),
`"type" must be one of "javascript, unix"`,
),
this.format(e)
);
},
},
},
cast: {
number: { from: s.isDate, to: (e, t) => e.getTime() },
string: { from: s.isDate, to: (e, { prefs: t }) => o.date(e, t) },
},
messages: {
"date.base": `{{#label}} must be a valid date`,
"date.format": `{{#label}} must be in {msg("date.format." + #format) || #format} format`,
"date.greater": `{{#label}} must be greater than {{:#limit}}`,
"date.less": `{{#label}} must be less than {{:#limit}}`,
"date.max": `{{#label}} must be less than or equal to {{:#limit}}`,
"date.min": `{{#label}} must be greater than or equal to {{:#limit}}`,
"date.format.iso": `ISO 8601 date`,
"date.format.javascript": `timestamp or number of milliseconds`,
"date.format.unix": `timestamp or number of seconds`,
},
})),
(s.parse = function (e, t) {
if (e instanceof Date) return e;
if ((typeof e != `string` && (isNaN(e) || !isFinite(e))) || /^\s*$/.test(e))
return null;
if (t === `iso`) return a.isIsoDate(e) ? s.date(e.toString()) : null;
let n = e;
if (
(typeof e == `string` && /^[+-]?\d+(\.\d+)?$/.test(e) && (e = parseFloat(e)),
t)
) {
if (t === `javascript`) return s.date(1 * e);
if (t === `unix`) return s.date(1e3 * e);
if (typeof n == `string`) return null;
}
return s.date(e);
}),
(s.date = function (e) {
let t = new Date(e);
return isNaN(t.getTime()) ? null : t;
}));
},
4840(e, t, n) {
let { assert: r } = n(3115);
e.exports = n(2888).extend({
type: `function`,
properties: { typeof: `function` },
rules: {
arity: {
method(e) {
return (
r(Number.isSafeInteger(e) && e >= 0, `n must be a positive integer`),
this.$_addRule({ name: `arity`, args: { n: e } })
);
},
validate: (e, t, { n }) =>
e.length === n ? e : t.error(`function.arity`, { n }),
},
class: {
method() {
return this.$_addRule(`class`);
},
validate: (e, t) =>
/^\s*class\s/.test(e.toString())
? e
: t.error(`function.class`, { value: e }),
},
minArity: {
method(e) {
return (
r(
Number.isSafeInteger(e) && e > 0,
`n must be a strict positive integer`,
),
this.$_addRule({ name: `minArity`, args: { n: e } })
);
},
validate: (e, t, { n }) =>
e.length >= n ? e : t.error(`function.minArity`, { n }),
},
maxArity: {
method(e) {
return (
r(Number.isSafeInteger(e) && e >= 0, `n must be a positive integer`),
this.$_addRule({ name: `maxArity`, args: { n: e } })
);
},
validate: (e, t, { n }) =>
e.length <= n ? e : t.error(`function.maxArity`, { n }),
},
},
messages: {
"function.arity": `{{#label}} must have an arity of {{#n}}`,
"function.class": `{{#label}} must be a class`,
"function.maxArity": `{{#label}} must have an arity lesser or equal to {{#n}}`,
"function.minArity": `{{#label}} must have an arity greater or equal to {{#n}}`,
},
});
},
2888(e, t, n) {
let { applyToDefaults: r, assert: i, clone: a } = n(3115),
o = n(8248),
s = n(680),
c = n(9415),
l = n(3541),
u = n(8013),
d = n(8529),
f = n(1532),
p = { renameDefaults: { alias: !1, multiple: !1, override: !1 } };
((e.exports = s.extend({
type: `_keys`,
properties: { typeof: `object` },
flags: { unknown: { default: void 0 } },
terms: {
dependencies: { init: null },
keys: { init: null, manifest: { mapped: { from: `schema`, to: `key` } } },
patterns: { init: null },
renames: { init: null },
},
args: (e, t) => e.keys(t),
jsonSchema(e, t, n, r) {
if (((t.type = `object`), e.$_terms.keys)) {
t.properties = {};
let i = [];
for (let a of e.$_terms.keys) {
let e = a.schema.$_jsonSchema(n, r);
((t.properties[a.key] = e),
a.schema._flags.id && (r.$defs[a.schema._flags.id] = e),
(a.schema._flags.presence === `required` ||
(n === `output` && a.schema._flags.default !== void 0)) &&
i.push(a.key));
}
i.length && (t.required = i.sort());
}
if (e.$_terms.patterns) {
let i = {};
for (let a of e.$_terms.patterns)
a.regex
? (i[a.regex.source] = a.rule.$_jsonSchema(n, r))
: a.schema.type === `any`
? (t.additionalProperties = a.rule.$_jsonSchema(n, r))
: (i[`.*`] = a.rule.$_jsonSchema(n, r));
Object.keys(i).length && (t.patternProperties = i);
}
return (
t.additionalProperties === void 0 &&
(!0 === e._flags.unknown ||
(e._flags.unknown === void 0 &&
!e.$_terms.keys &&
!e.$_terms.patterns &&
!e._flags.only)) == 0 &&
(t.additionalProperties = !1),
t
);
},
validate(e, { schema: t, error: n, state: r, prefs: i }) {
if (!e || typeof e !== t.$_property(`typeof`) || Array.isArray(e))
return {
value: e,
errors: n(`object.base`, { type: t.$_property(`typeof`) }),
};
if (
!(
t.$_terms.renames ||
t.$_terms.dependencies ||
t.$_terms.keys ||
t.$_terms.patterns ||
t.$_terms.externals
)
)
return;
e = p.clone(e, i);
let a = [];
if (
(t.$_terms.renames && !p.rename(t, e, r, i, a)) ||
(!t.$_terms.keys && !t.$_terms.patterns && !t.$_terms.dependencies)
)
return { value: e, errors: a };
let o = new Set(Object.keys(e));
if (t.$_terms.keys) {
let n = [e, ...r.ancestors];
for (let s of t.$_terms.keys) {
let t = s.key,
c = e[t];
o.delete(t);
let l = r.localize([...r.path, t], n, s),
u = s.schema.$_validate(c, l, i);
if (u.errors) {
if (i.abortEarly) return { value: e, errors: u.errors };
(u.value !== void 0 && (e[t] = u.value), a.push(...u.errors));
} else
s.schema._flags.result === `strip` || (u.value === void 0 && c !== void 0)
? delete e[t]
: u.value !== void 0 && (e[t] = u.value);
}
}
if (o.size || t._flags._hasPatternMatch) {
let n = p.unknown(t, e, o, a, r, i);
if (n) return n;
}
if (t.$_terms.dependencies)
for (let n of t.$_terms.dependencies) {
if (
n.key !== null &&
!1 ===
p.isPresent(n.options)(n.key.resolve(e, r, i, null, { shadow: !1 }))
)
continue;
let o = p.dependencies[n.rel](t, n, e, r, i);
if (o) {
let n = t.$_createError(o.code, e, o.context, r, i);
if (i.abortEarly) return { value: e, errors: n };
a.push(n);
}
}
return { value: e, errors: a };
},
rules: {
and: {
method(...e) {
return (c.verifyFlat(e, `and`), p.dependency(this, `and`, null, e));
},
},
append: {
method(e) {
return e == null || Object.keys(e).length === 0 ? this : this.keys(e);
},
},
assert: {
method(e, t, n) {
(f.isTemplate(e) || (e = l.ref(e)),
i(n === void 0 || typeof n == `string`, `Message must be a string`),
(t = this.$_compile(t, { appendPath: !0 })));
let r = this.$_addRule({
name: `assert`,
args: { subject: e, schema: t, message: n },
});
return (r.$_mutateRegister(e), r.$_mutateRegister(t), r);
},
validate(
e,
{ error: t, prefs: n, state: r },
{ subject: i, schema: a, message: o },
) {
let s = i.resolve(e, r, n),
c = d.isRef(i) ? i.absolute(r) : [];
return a.$_match(s, r.localize(c, [e, ...r.ancestors], a), n)
? e
: t(`object.assert`, { subject: i, message: o });
},
args: [`subject`, `schema`, `message`],
multi: !0,
},
instance: {
method(e, t) {
return (
i(typeof e == `function`, `constructor must be a function`),
(t ||= e.name),
this.$_addRule({ name: `instance`, args: { constructor: e, name: t } })
);
},
validate: (e, t, { constructor: n, name: r }) =>
e instanceof n ? e : t.error(`object.instance`, { type: r, value: e }),
args: [`constructor`, `name`],
},
keys: {
method(e) {
(i(
e === void 0 || typeof e == `object`,
`Object schema must be a valid object`,
),
i(!c.isSchema(e), `Object schema cannot be a joi schema`));
let t = this.clone();
if (e)
if (Object.keys(e).length) {
t.$_terms.keys = t.$_terms.keys
? t.$_terms.keys.filter((t) => !e.hasOwnProperty(t.key))
: new p.Keys();
for (let n of Object.keys(e))
c.tryWithPath(
() => t.$_terms.keys.push({ key: n, schema: this.$_compile(e[n]) }),
n,
);
} else t.$_terms.keys = new p.Keys();
else t.$_terms.keys = null;
return t.$_mutateRebuild();
},
},
length: {
method(e) {
return this.$_addRule({
name: `length`,
args: { limit: e },
operator: `=`,
});
},
validate: (e, t, { limit: n }, { name: r, operator: i, args: a }) =>
c.compare(Object.keys(e).length, n, i)
? e
: t.error(`object.` + r, { limit: a.limit, value: e }),
jsonSchema: (e, t) => (
(t.minProperties = e.args.limit),
(t.maxProperties = e.args.limit),
t
),
args: [
{
name: `limit`,
ref: !0,
assert: c.limit,
message: `must be a positive integer`,
},
],
},
max: {
method(e) {
return this.$_addRule({
name: `max`,
method: `length`,
args: { limit: e },
operator: `<=`,
});
},
jsonSchema: (e, t) => ((t.maxProperties = e.args.limit), t),
},
min: {
method(e) {
return this.$_addRule({
name: `min`,
method: `length`,
args: { limit: e },
operator: `>=`,
});
},
jsonSchema: (e, t) => ((t.minProperties = e.args.limit), t),
},
nand: {
method(...e) {
return (c.verifyFlat(e, `nand`), p.dependency(this, `nand`, null, e));
},
},
or: {
method(...e) {
return (c.verifyFlat(e, `or`), p.dependency(this, `or`, null, e));
},
},
oxor: {
method(...e) {
return p.dependency(this, `oxor`, null, e);
},
},
pattern: {
method(e, t, n = {}) {
let r = e instanceof RegExp;
(r || (e = this.$_compile(e, { appendPath: !0 })),
i(t !== void 0, `Invalid rule`),
c.assertOptions(n, [`fallthrough`, `matches`]),
r &&
i(
!e.flags.includes(`g`) && !e.flags.includes(`y`),
`pattern should not use global or sticky mode`,
),
(t = this.$_compile(t, { appendPath: !0 })));
let a = this.clone();
a.$_terms.patterns = a.$_terms.patterns || [];
let o = { [r ? `regex` : `schema`]: e, rule: t };
return (
n.matches &&
((o.matches = this.$_compile(n.matches)),
o.matches.type !== `array` &&
(o.matches = o.matches.$_root.array().items(o.matches)),
a.$_mutateRegister(o.matches),
a.$_setFlag(`_hasPatternMatch`, !0, { clone: !1 })),
n.fallthrough && (o.fallthrough = !0),
a.$_terms.patterns.push(o),
a.$_mutateRegister(t),
a
);
},
},
ref: {
method() {
return this.$_addRule(`ref`);
},
validate: (e, t) =>
d.isRef(e) ? e : t.error(`object.refType`, { value: e }),
},
regex: {
method() {
return this.$_addRule(`regex`);
},
validate: (e, t) =>
e instanceof RegExp ? e : t.error(`object.regex`, { value: e }),
},
rename: {
method(e, t, n = {}) {
(i(
typeof e == `string` || e instanceof RegExp,
`Rename missing the from argument`,
),
i(typeof t == `string` || t instanceof f, `Invalid rename to argument`),
i(t !== e, `Cannot rename key to same name:`, e),
c.assertOptions(n, [`alias`, `ignoreUndefined`, `override`, `multiple`]));
let a = this.clone();
a.$_terms.renames = a.$_terms.renames || [];
for (let t of a.$_terms.renames)
i(t.from !== e, `Cannot rename the same key multiple times`);
return (
t instanceof f && a.$_mutateRegister(t),
a.$_terms.renames.push({
from: e,
to: t,
options: r(p.renameDefaults, n),
}),
a
);
},
},
schema: {
method(e = `any`) {
return this.$_addRule({ name: `schema`, args: { type: e } });
},
validate: (e, t, { type: n }) =>
!c.isSchema(e) || (n !== `any` && e.type !== n)
? t.error(`object.schema`, { type: n })
: e,
},
unknown: {
method(e) {
return this.$_setFlag(`unknown`, !1 !== e);
},
},
with: {
method(e, t, n = {}) {
return p.dependency(this, `with`, e, t, n);
},
},
without: {
method(e, t, n = {}) {
return p.dependency(this, `without`, e, t, n);
},
},
xor: {
method(...e) {
return (c.verifyFlat(e, `xor`), p.dependency(this, `xor`, null, e));
},
},
},
overrides: {
default(e, t) {
return (
e === void 0 && (e = c.symbols.deepDefault), this.$_parent(`default`, e, t)
);
},
isAsync() {
var e, t, n;
if ((e = this.$_terms.externals) != null && e.length) return !0;
if ((t = this.$_terms.keys) != null && t.length) {
for (let e of this.$_terms.keys) if (e.schema.isAsync()) return !0;
}
if ((n = this.$_terms.patterns) != null && n.length) {
for (let e of this.$_terms.patterns) if (e.rule.isAsync()) return !0;
}
return !1;
},
},
rebuild(e) {
if (e.$_terms.keys) {
let t = new o.Sorter();
for (let n of e.$_terms.keys)
c.tryWithPath(
() => t.add(n, { after: n.schema.$_rootReferences(), group: n.key }),
n.key,
);
e.$_terms.keys = new p.Keys(...t.nodes);
}
},
manifest: {
build(e, t) {
if ((t.keys && (e = e.keys(t.keys)), t.dependencies))
for (let { rel: n, key: r = null, peers: i, options: a } of t.dependencies)
e = p.dependency(e, n, r, i, a);
if (t.patterns)
for (let {
regex: n,
schema: r,
rule: i,
fallthrough: a,
matches: o,
} of t.patterns)
e = e.pattern(n || r, i, { fallthrough: a, matches: o });
if (t.renames)
for (let { from: n, to: r, options: i } of t.renames) e = e.rename(n, r, i);
return e;
},
},
messages: {
"object.and": `{{#label}} contains {{#presentWithLabels}} without its required peers {{#missingWithLabels}}`,
"object.assert":
'{{#label}} is invalid because {if(#subject.key, `"` + #subject.key + `" failed to ` + (#message || "pass the assertion test"), #message || "the assertion failed")}',
"object.base": `{{#label}} must be of type {{#type}}`,
"object.instance": `{{#label}} must be an instance of {{:#type}}`,
"object.length": `{{#label}} must have {{#limit}} key{if(#limit == 1, "", "s")}`,
"object.max": `{{#label}} must have less than or equal to {{#limit}} key{if(#limit == 1, "", "s")}`,
"object.min": `{{#label}} must have at least {{#limit}} key{if(#limit == 1, "", "s")}`,
"object.missing": `{{#label}} must contain at least one of {{#peersWithLabels}}`,
"object.nand": `{{:#mainWithLabel}} must not exist simultaneously with {{#peersWithLabels}}`,
"object.oxor": `{{#label}} contains a conflict between optional exclusive peers {{#peersWithLabels}}`,
"object.pattern.match": `{{#label}} keys failed to match pattern requirements`,
"object.refType": `{{#label}} must be a Joi reference`,
"object.regex": `{{#label}} must be a RegExp object`,
"object.rename.multiple": `{{#label}} cannot rename {{:#from}} because multiple renames are disabled and another key was already renamed to {{:#to}}`,
"object.rename.override": `{{#label}} cannot rename {{:#from}} because override is disabled and target {{:#to}} exists`,
"object.schema": `{{#label}} must be a Joi schema of {{#type}} type`,
"object.unknown": `{{#label}} is not allowed`,
"object.with": `{{:#mainWithLabel}} missing required peer {{:#peerWithLabel}}`,
"object.without": `{{:#mainWithLabel}} conflict with forbidden peer {{:#peerWithLabel}}`,
"object.xor": `{{#label}} contains a conflict between exclusive peers {{#peersWithLabels}}`,
},
})),
(p.clone = function (e, t) {
if (typeof e == `object`) {
if (t.nonEnumerables) return a(e, { shallow: !0 });
let n = Object.getPrototypeOf(e),
r = Object.create(n);
return (
Object.assign(r, e),
Object.getPrototypeOf(r) !== n && Object.setPrototypeOf(r, n),
r
);
}
let n = function (...t) {
return e.apply(this, t);
};
return (
(n.prototype = a(e.prototype)),
Object.defineProperty(n, "name", { value: e.name, writable: !1 }),
Object.defineProperty(n, "length", { value: e.length, writable: !1 }),
Object.assign(n, e),
n
);
}),
(p.dependency = function (e, t, n, r, a) {
(i(n === null || typeof n == `string`, t, `key must be a strings`),
(a ||= r.length > 1 && typeof r[r.length - 1] == `object` ? r.pop() : {}),
c.assertOptions(a, [`separator`, `isPresent`]),
(r = [].concat(r)));
let o = c.default(a.separator, `.`),
s = [];
for (let e of r)
(i(typeof e == `string`, t, `peers must be strings`),
s.push(l.ref(e, { separator: o, ancestor: 0, prefix: !1 })));
n !== null && (n = l.ref(n, { separator: o, ancestor: 0, prefix: !1 }));
let u = e.clone();
return (
(u.$_terms.dependencies = u.$_terms.dependencies || []),
u.$_terms.dependencies.push(new p.Dependency(t, n, s, r, a)),
u
);
}),
(p.dependencies = {
and(e, t, n, r, i) {
let a = [],
o = [],
s = t.peers.length,
c = p.isPresent(t.options);
for (let e of t.peers)
!1 === c(e.resolve(n, r, i, null, { shadow: !1 }))
? a.push(e.key)
: o.push(e.key);
if (a.length !== s && o.length !== s)
return {
code: `object.and`,
context: {
present: o,
presentWithLabels: p.keysToLabels(e, o),
missing: a,
missingWithLabels: p.keysToLabels(e, a),
},
};
},
nand(e, t, n, r, i) {
let a = [],
o = p.isPresent(t.options);
for (let e of t.peers)
o(e.resolve(n, r, i, null, { shadow: !1 })) && a.push(e.key);
if (a.length !== t.peers.length) return;
let s = t.paths[0],
c = t.paths.slice(1);
return {
code: `object.nand`,
context: {
main: s,
mainWithLabel: p.keysToLabels(e, s),
peers: c,
peersWithLabels: p.keysToLabels(e, c),
},
};
},
or(e, t, n, r, i) {
let a = p.isPresent(t.options);
for (let e of t.peers)
if (a(e.resolve(n, r, i, null, { shadow: !1 }))) return;
return {
code: `object.missing`,
context: { peers: t.paths, peersWithLabels: p.keysToLabels(e, t.paths) },
};
},
oxor(e, t, n, r, i) {
let a = [],
o = p.isPresent(t.options);
for (let e of t.peers)
o(e.resolve(n, r, i, null, { shadow: !1 })) && a.push(e.key);
if (!a.length || a.length === 1) return;
let s = { peers: t.paths, peersWithLabels: p.keysToLabels(e, t.paths) };
return (
(s.present = a),
(s.presentWithLabels = p.keysToLabels(e, a)),
{ code: `object.oxor`, context: s }
);
},
with(e, t, n, r, i) {
let a = p.isPresent(t.options);
for (let o of t.peers)
if (!1 === a(o.resolve(n, r, i, null, { shadow: !1 })))
return {
code: `object.with`,
context: {
main: t.key.key,
mainWithLabel: p.keysToLabels(e, t.key.key),
peer: o.key,
peerWithLabel: p.keysToLabels(e, o.key),
},
};
},
without(e, t, n, r, i) {
let a = p.isPresent(t.options);
for (let o of t.peers)
if (a(o.resolve(n, r, i, null, { shadow: !1 })))
return {
code: `object.without`,
context: {
main: t.key.key,
mainWithLabel: p.keysToLabels(e, t.key.key),
peer: o.key,
peerWithLabel: p.keysToLabels(e, o.key),
},
};
},
xor(e, t, n, r, i) {
let a = [],
o = p.isPresent(t.options);
for (let e of t.peers)
o(e.resolve(n, r, i, null, { shadow: !1 })) && a.push(e.key);
if (a.length === 1) return;
let s = { peers: t.paths, peersWithLabels: p.keysToLabels(e, t.paths) };
return a.length === 0
? { code: `object.missing`, context: s }
: ((s.present = a),
(s.presentWithLabels = p.keysToLabels(e, a)),
{ code: `object.xor`, context: s });
},
}),
(p.keysToLabels = function (e, t) {
return Array.isArray(t) ? t.map((t) => e.$_mapLabels(t)) : e.$_mapLabels(t);
}),
(p.isPresent = function (e) {
return typeof e.isPresent == `function` ? e.isPresent : (e) => e !== void 0;
}),
(p.rename = function (e, t, n, r, i) {
let a = {};
for (let o of e.$_terms.renames) {
let s = [],
c = typeof o.from != `string`;
if (c)
for (let e of Object.keys(t)) {
if ((t[e] === void 0 && o.options.ignoreUndefined) || e === o.to)
continue;
let n = o.from.exec(e);
n && s.push({ from: e, to: o.to, match: n });
}
else
!Object.prototype.hasOwnProperty.call(t, o.from) ||
(t[o.from] === void 0 && o.options.ignoreUndefined) ||
s.push(o);
for (let l of s) {
let s = l.from,
u = l.to;
if ((u instanceof f && (u = u.render(t, n, r, l.match)), s !== u)) {
if (
(!o.options.multiple &&
a[u] &&
(i.push(
e.$_createError(
`object.rename.multiple`,
t,
{ from: s, to: u, pattern: c },
n,
r,
),
),
r.abortEarly)) ||
(Object.prototype.hasOwnProperty.call(t, u) &&
!o.options.override &&
!a[u] &&
(i.push(
e.$_createError(
`object.rename.override`,
t,
{ from: s, to: u, pattern: c },
n,
r,
),
),
r.abortEarly))
)
return !1;
(t[s] === void 0 ? delete t[u] : (t[u] = t[s]),
(a[u] = !0),
o.options.alias || delete t[s]);
}
}
}
return !0;
}),
(p.unknown = function (e, t, n, r, i, a) {
if (e.$_terms.patterns) {
let o = !1,
s = e.$_terms.patterns.map((e) => {
if (e.matches) return ((o = !0), []);
}),
c = [t, ...i.ancestors];
for (let o of n) {
let l = t[o],
u = [...i.path, o];
for (let d = 0; d < e.$_terms.patterns.length; ++d) {
let f = e.$_terms.patterns[d];
if (f.regex) {
let e = f.regex.test(o);
if (
(i.mainstay.tracer.debug(
i,
`rule`,
`pattern.${d}`,
e ? `pass` : `error`,
),
!e)
)
continue;
} else if (!f.schema.$_match(o, i.nest(f.schema, `pattern.${d}`), a))
continue;
n.delete(o);
let p = i.localize(u, c, { schema: f.rule, key: o }),
m = f.rule.$_validate(l, p, a);
if (m.errors) {
if (a.abortEarly) return { value: t, errors: m.errors };
r.push(...m.errors);
}
if ((f.matches && s[d].push(o), (t[o] = m.value), !f.fallthrough)) break;
}
}
if (o)
for (let n = 0; n < s.length; ++n) {
let o = s[n];
if (!o) continue;
let l = e.$_terms.patterns[n].matches,
d = i.localize(i.path, c, l),
f = l.$_validate(o, d, a);
if (f.errors) {
let n = u.details(f.errors, { override: !1 });
n.matches = o;
let s = e.$_createError(`object.pattern.match`, t, n, i, a);
if (a.abortEarly) return { value: t, errors: s };
r.push(s);
}
}
}
if (n.size && (e.$_terms.keys || e.$_terms.patterns)) {
if ((a.stripUnknown && e._flags.unknown === void 0) || a.skipFunctions) {
let e = !(
!a.stripUnknown ||
(!0 !== a.stripUnknown && !a.stripUnknown.objects)
);
for (let r of n)
e ? (delete t[r], n.delete(r)) : typeof t[r] == `function` && n.delete(r);
}
if (!c.default(e._flags.unknown, a.allowUnknown))
for (let o of n) {
let n = i.localize([...i.path, o], []),
s = e.$_createError(`object.unknown`, t[o], { child: o }, n, a, {
flags: !1,
});
if (a.abortEarly) return { value: t, errors: s };
r.push(s);
}
}
}),
(p.Dependency = class {
constructor(e, t, n, r, i) {
((this.rel = e),
(this.key = t),
(this.peers = n),
(this.paths = r),
(this.options = i));
}
describe() {
let e = { rel: this.rel, peers: this.paths };
return (
this.key !== null && (e.key = this.key.key),
this.peers[0].separator !== `.` &&
(e.options = { ...e.options, separator: this.peers[0].separator }),
this.options.isPresent &&
(e.options = { ...e.options, isPresent: this.options.isPresent }),
e
);
}
}),
(p.Keys = class extends Array {
concat(e) {
let t = this.slice(),
n = new Map();
for (let e = 0; e < t.length; ++e) n.set(t[e].key, e);
for (let r of e) {
let e = r.key,
i = n.get(e);
i === void 0
? t.push(r)
: (t[i] = { key: e, schema: t[i].schema.concat(r.schema) });
}
return t;
}
}));
},
9556(e, t, n) {
let { assert: r } = n(3115),
i = n(680),
a = n(9415),
o = n(3541),
s = n(8013),
c = {};
((e.exports = i.extend({
type: `link`,
properties: { schemaChain: !0 },
terms: { link: { init: null, manifest: `single`, register: !1 } },
args: (e, t) => e.ref(t),
jsonSchema(e, t, n, r) {
if (!e.$_terms.link) return t;
let { ref: i } = e.$_terms.link[0];
return i.ancestor === `root` || i.ancestor > 0
? ((t.$ref = `#/${i.path.map((e) => `properties/${e}`).join(`/`)}`), t)
: (i.path.length === 1
? (t.$ref = `#/$defs/${i.path[0]}`)
: (t.$ref = `#/${i.path
.slice(1)
.map((e) => `properties/${e}`)
.join(`/`)}`),
t);
},
validate(e, { schema: t, state: n, prefs: i, error: a }) {
r(t.$_terms.link, `Uninitialized link schema`);
let o = t._flags.maxRecursion;
if (o !== void 0 && n.schemas.filter((e) => e.schema === t).length > o)
return { value: e, errors: a(`link.maxRecursion`, { limit: o }) };
let s = c.generate(t, e, n, i),
l = t.$_terms.link[0].ref;
try {
return s.$_validate(e, n.nest(s, `link:${l.display}:${s.type}`), i);
} catch (t) {
if (!(t instanceof RangeError)) throw t;
return { value: e, errors: a(`link.depth`) };
}
},
generate: (e, t, n, r) => c.generate(e, t, n, r),
rules: {
ref: {
method(e) {
(r(!this.$_terms.link, `Cannot reinitialize schema`),
(e = o.ref(e)),
r(
e.type === `value` || e.type === `local`,
`Invalid reference type:`,
e.type,
),
r(
e.type === `local` || e.ancestor === `root` || e.ancestor > 0,
`Link cannot reference itself`,
));
let t = this.clone();
return ((t.$_terms.link = [{ ref: e }]), t);
},
},
relative: {
method(e = !0) {
return this.$_setFlag(`relative`, e);
},
},
maxRecursion: {
method(e) {
return (
r(Number.isSafeInteger(e) && e >= 1, `limit must be a positive integer`),
this.$_setFlag(`maxRecursion`, e)
);
},
},
},
messages: {
"link.depth": `{{#label}} exceeds maximum recursion depth supported by the runtime`,
"link.maxRecursion": `{{#label}} exceeds maximum recursion depth of {{#limit}}`,
},
overrides: {
concat(e) {
(r(this.$_terms.link, `Uninitialized link schema`),
r(a.isSchema(e), `Invalid schema object`),
r(e.type !== `link`, `Cannot merge type link with another link`));
let t = this.clone();
return (
t.$_terms.whens || (t.$_terms.whens = []),
t.$_terms.whens.push({ concat: e }),
t.$_mutateRebuild()
);
},
},
manifest: {
build: (e, t) => (
r(t.link, `Invalid link description missing link`),
e.ref(t.link)
),
},
})),
(c.generate = function (e, t, n, r) {
let i = n.mainstay.links.get(e);
if (i) return i._generate(t, n, r).schema;
let a = e.$_terms.link[0].ref,
{ perspective: o, path: s } = c.perspective(a, n);
c.assert(o, `which is outside of schema boundaries`, a, e, n, r);
try {
i = s.length ? o.$_reach(s) : o;
} catch {
c.assert(!1, `to non-existing schema`, a, e, n, r);
}
return (
c.assert(i.type !== `link`, `which is another link`, a, e, n, r),
e._flags.relative || n.mainstay.links.set(e, i),
i._generate(t, n, r).schema
);
}),
(c.perspective = function (e, t) {
if (e.type === `local`) {
for (let { schema: n, key: r } of t.schemas) {
if ((n._flags.id || r) === e.path[0])
return { perspective: n, path: e.path.slice(1) };
if (n.$_terms.shared) {
for (let t of n.$_terms.shared)
if (t._flags.id === e.path[0])
return { perspective: t, path: e.path.slice(1) };
}
}
return { perspective: null, path: null };
}
return e.ancestor === `root`
? { perspective: t.schemas[t.schemas.length - 1].schema, path: e.path }
: {
perspective: t.schemas[e.ancestor] && t.schemas[e.ancestor].schema,
path: e.path,
};
}),
(c.assert = function (e, t, n, i, a, o) {
e ||
r(
!1,
`"${s.label(i._flags, a, o)}" contains link reference "${n.display}" ${t}`,
);
}));
},
4709(e, t, n) {
let { assert: r } = n(3115),
i = n(680),
a = n(9415),
o = {
numberRx: /^\s*[+-]?(?:(?:\d+(?:\.\d*)?)|(?:\.\d+))(?:e([+-]?\d+))?\s*$/i,
precisionRx: /(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/,
exponentialPartRegex: /[eE][+-]?\d+$/,
leadingSignAndZerosRegex: /^[+-]?(0*)?/,
dotRegex: /\./,
trailingZerosRegex: /0+$/,
decimalPlaces(e) {
let t = e.toString(),
n = t.indexOf(`.`),
r = t.indexOf(`e`);
return (
(n < 0 ? 0 : (r < 0 ? t.length : r) - n - 1) +
(r < 0 ? 0 : Math.max(0, -parseInt(t.slice(r + 1))))
);
},
};
((e.exports = i.extend({
type: `number`,
flags: { unsafe: { default: !1 } },
coerce: {
from: `string`,
method(e, { schema: t, error: n }) {
if (!e.match(o.numberRx)) return;
e = e.trim();
let r = { value: parseFloat(e) };
if ((r.value === 0 && (r.value = 0), !t._flags.unsafe))
if (e.match(/e/i)) {
if (
o.extractSignificantDigits(e) !==
o.extractSignificantDigits(String(r.value))
)
return ((r.errors = n(`number.unsafe`)), r);
} else {
let t = r.value.toString();
if (t.match(/e/i)) return r;
if (t !== o.normalizeDecimal(e))
return ((r.errors = n(`number.unsafe`)), r);
}
return r;
},
},
validate(e, { schema: t, error: n, prefs: r }) {
if (e === 1 / 0 || e === -1 / 0)
return { value: e, errors: n(`number.infinity`) };
if (!a.isNumber(e)) return { value: e, errors: n(`number.base`) };
let i = { value: e };
if (r.convert) {
let e = t.$_getRule(`precision`);
if (e) {
let t = 10 ** e.args.limit;
i.value = Math.round(i.value * t) / t;
}
}
return (
i.value === 0 && (i.value = 0),
!t._flags.unsafe &&
(e > 2 ** 53 - 1 || e < -(2 ** 53 - 1)) &&
(i.errors = n(`number.unsafe`)),
i
);
},
rules: {
compare: {
method: !1,
validate: (e, t, { limit: n }, { name: r, operator: i, args: o }) =>
a.compare(e, n, i)
? e
: t.error(`number.` + r, { limit: o.limit, value: e }),
args: [
{ name: `limit`, ref: !0, assert: a.isNumber, message: `must be a number` },
],
},
greater: {
method(e) {
return this.$_addRule({
name: `greater`,
method: `compare`,
args: { limit: e },
operator: `>`,
});
},
jsonSchema: (e, t) => ((t.exclusiveMinimum = e.args.limit), t),
},
integer: {
method() {
return this.$_addRule(`integer`);
},
validate: (e, t) => (Math.trunc(e) - e === 0 ? e : t.error(`number.integer`)),
jsonSchema: (e, t) => ((t.type = `integer`), t),
},
less: {
method(e) {
return this.$_addRule({
name: `less`,
method: `compare`,
args: { limit: e },
operator: `<`,
});
},
jsonSchema: (e, t) => ((t.exclusiveMaximum = e.args.limit), t),
},
max: {
method(e) {
return this.$_addRule({
name: `max`,
method: `compare`,
args: { limit: e },
operator: `<=`,
});
},
jsonSchema: (e, t) => ((t.maximum = e.args.limit), t),
},
min: {
method(e) {
return this.$_addRule({
name: `min`,
method: `compare`,
args: { limit: e },
operator: `>=`,
});
},
jsonSchema: (e, t) => ((t.minimum = e.args.limit), t),
},
multiple: {
method(e) {
let t = typeof e == `number` ? o.decimalPlaces(e) : null,
n = 10 ** t;
return this.$_addRule({
name: `multiple`,
args: { base: e, baseDecimalPlace: t, pfactor: n },
});
},
validate: (e, t, { base: n, baseDecimalPlace: r, pfactor: i }, a) =>
o.decimalPlaces(e) > r
? t.error(`number.multiple`, { multiple: a.args.base, value: e })
: Math.round(i * e) % Math.round(i * n) === 0
? e
: t.error(`number.multiple`, { multiple: a.args.base, value: e }),
jsonSchema: (e, t) => ((t.multipleOf = e.args.base), t),
args: [
{
name: `base`,
ref: !0,
assert: (e) => typeof e == `number` && isFinite(e) && e > 0,
message: `must be a positive number`,
},
`baseDecimalPlace`,
`pfactor`,
],
multi: !0,
},
negative: {
method() {
return this.sign(`negative`);
},
},
port: {
method() {
return this.$_addRule(`port`);
},
validate: (e, t) =>
Number.isSafeInteger(e) && e >= 0 && e <= 65535
? e
: t.error(`number.port`),
jsonSchema: (e, t) => (
(t.type = `integer`),
(t.minimum = 0),
(t.maximum = 65535),
t
),
},
positive: {
method() {
return this.sign(`positive`);
},
},
precision: {
method(e) {
return (
r(Number.isSafeInteger(e), `limit must be an integer`),
this.$_addRule({ name: `precision`, args: { limit: e } })
);
},
validate(e, t, { limit: n }) {
let r = e.toString().match(o.precisionRx);
return Math.max(
(r[1] ? r[1].length : 0) - (r[2] ? parseInt(r[2], 10) : 0),
0,
) <= n
? e
: t.error(`number.precision`, { limit: n, value: e });
},
convert: !0,
},
sign: {
method(e) {
return (
r([`negative`, `positive`].includes(e), `Invalid sign`, e),
this.$_addRule({ name: `sign`, args: { sign: e } })
);
},
validate: (e, t, { sign: n }) =>
(n === `negative` && e < 0) || (n === `positive` && e > 0)
? e
: t.error(`number.${n}`),
jsonSchema: (e, t) => (
e.args.sign === `positive`
? (t.exclusiveMinimum = 0)
: (t.exclusiveMaximum = 0),
t
),
},
unsafe: {
method(e = !0) {
return (
r(typeof e == `boolean`, `enabled must be a boolean`),
this.$_setFlag(`unsafe`, e)
);
},
},
},
cast: {
string: { from: (e) => typeof e == `number`, to: (e, t) => e.toString() },
},
messages: {
"number.base": `{{#label}} must be a number`,
"number.greater": `{{#label}} must be greater than {{#limit}}`,
"number.infinity": `{{#label}} cannot be infinity`,
"number.integer": `{{#label}} must be an integer`,
"number.less": `{{#label}} must be less than {{#limit}}`,
"number.max": `{{#label}} must be less than or equal to {{#limit}}`,
"number.min": `{{#label}} must be greater than or equal to {{#limit}}`,
"number.multiple": `{{#label}} must be a multiple of {{#multiple}}`,
"number.negative": `{{#label}} must be a negative number`,
"number.port": `{{#label}} must be a valid port`,
"number.positive": `{{#label}} must be a positive number`,
"number.precision": `{{#label}} must have no more than {{#limit}} decimal places`,
"number.unsafe": `{{#label}} must be a safe number`,
},
})),
(o.extractSignificantDigits = function (e) {
return e
.replace(o.exponentialPartRegex, ``)
.replace(o.dotRegex, ``)
.replace(o.trailingZerosRegex, ``)
.replace(o.leadingSignAndZerosRegex, ``);
}),
(o.normalizeDecimal = function (e) {
return (
(e = e
.replace(/^\+/, ``)
.replace(/\.0*$/, ``)
.replace(/^(-?)\.([^\.]*)$/, `$10.$2`)
.replace(/^(-?)0+([0-9])/, `$1$2`)).includes(`.`) &&
e.endsWith(`0`) &&
(e = e.replace(/0+$/, ``)),
e === `-0` ? `0` : e
);
}));
},
7487(e, t, n) {
e.exports = n(2888).extend({
type: `object`,
cast: {
map: {
from: (e) => e && typeof e == `object`,
to: (e, t) => new Map(Object.entries(e)),
},
},
});
},
9033(e, t, n) {
let { assert: r, escapeRegex: i } = n(3115),
{ isDomainValid: a, isEmailValid: o, ipRegex: s, uriRegex: c } = n(9089),
l = n(7368),
u = n(680),
d = n(9415),
f = {
tlds: l.tlds instanceof Set && { tlds: { allow: l.tlds, deny: null } },
base64Regex: {
true: {
true: /^(?:[\w\-]{2}[\w\-]{2})*(?:[\w\-]{2}==|[\w\-]{3}=)?$/,
false:
/^(?:[A-Za-z0-9+\/]{2}[A-Za-z0-9+\/]{2})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$/,
},
false: {
true: /^(?:[\w\-]{2}[\w\-]{2})*(?:[\w\-]{2}(==)?|[\w\-]{3}=?)?$/,
false:
/^(?:[A-Za-z0-9+\/]{2}[A-Za-z0-9+\/]{2})*(?:[A-Za-z0-9+\/]{2}(==)?|[A-Za-z0-9+\/]{3}=?)?$/,
},
},
dataUriRegex: /^data:[\w+.-]+\/[\w+.-]+;((charset=[\w-]+|base64),)?(.*)$/,
hexRegex: {
withPrefix: /^0x[0-9a-f]+$/i,
withOptionalPrefix: /^(?:0x)?[0-9a-f]+$/i,
withoutPrefix: /^[0-9a-f]+$/i,
},
ipRegex: s({ cidr: `forbidden` }).regex,
isoDurationRegex:
/^P(?!$)(\d+Y)?(\d+M)?(\d+W)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+S)?)?$/,
guidBrackets: { "{": `}`, "[": `]`, "(": `)`, "": `` },
guidVersions: {
uuidv1: `1`,
uuidv2: `2`,
uuidv3: `3`,
uuidv4: `4`,
uuidv5: `5`,
uuidv6: `6`,
uuidv7: `7`,
uuidv8: `8`,
},
guidSeparators: new Set([void 0, !0, !1, `-`, `:`]),
normalizationForms: [`NFC`, `NFD`, `NFKC`, `NFKD`],
};
((e.exports = u.extend({
type: `string`,
flags: { insensitive: { default: !1 }, truncate: { default: !1 } },
terms: { replacements: { init: null } },
coerce: {
from: `string`,
method(e, { schema: t, state: n, prefs: r }) {
let i = t.$_getRule(`normalize`);
i && (e = e.normalize(i.args.form));
let a = t.$_getRule(`case`);
a &&
(e =
a.args.direction === `upper`
? e.toLocaleUpperCase()
: e.toLocaleLowerCase());
let o = t.$_getRule(`trim`);
if ((o && o.args.enabled && (e = e.trim()), t.$_terms.replacements))
for (let n of t.$_terms.replacements)
e = e.replace(n.pattern, n.replacement);
let s = t.$_getRule(`hex`);
if (
(s && s.args.options.byteAligned && e.length % 2 != 0 && (e = `0${e}`),
t.$_getRule(`isoDate`))
) {
let t = f.isoDate(e);
t && (e = t);
}
if (t._flags.truncate) {
let i = t.$_getRule(`max`);
if (i) {
let a = i.args.limit;
if (d.isResolvable(a) && ((a = a.resolve(e, n, r)), !d.limit(a)))
return {
value: e,
errors: t.$_createError(
`any.ref`,
a,
{
ref: i.args.limit,
arg: `limit`,
reason: `must be a positive integer`,
},
n,
r,
),
};
e = e.slice(0, a);
}
}
return { value: e };
},
},
validate(e, { schema: t, error: n }) {
if (typeof e != `string`) return { value: e, errors: n(`string.base`) };
if (e === ``) {
let r = t.$_getRule(`min`);
return r && r.args.limit === 0
? void 0
: { value: e, errors: n(`string.empty`) };
}
},
jsonSchema(e, t, n, r) {
var i;
if (!(((i = e._valids) != null && i.has(``)) || e._flags.only)) {
let n = e.$_getRule(`min`),
r = e.$_getRule(`length`);
(!n || n.args.limit > 0) && (!r || r.args.limit > 0) && (t.minLength = 1);
}
return t;
},
rules: {
alphanum: {
method() {
return this.$_addRule(`alphanum`);
},
validate: (e, t) =>
/^[a-zA-Z0-9]+$/.test(e) ? e : t.error(`string.alphanum`),
},
base64: {
method(e = {}) {
return (
d.assertOptions(e, [`paddingRequired`, `urlSafe`]),
(e = { urlSafe: !1, paddingRequired: !0, ...e }),
r(
typeof e.paddingRequired == `boolean`,
`paddingRequired must be boolean`,
),
r(typeof e.urlSafe == `boolean`, `urlSafe must be boolean`),
this.$_addRule({ name: `base64`, args: { options: e } })
);
},
validate: (e, t, { options: n }) =>
f.base64Regex[n.paddingRequired][n.urlSafe].test(e)
? e
: t.error(`string.base64`),
jsonSchema: (e, t) => ((t.format = `base64`), t),
},
case: {
method(e) {
return (
r([`lower`, `upper`].includes(e), `Invalid case:`, e),
this.$_addRule({ name: `case`, args: { direction: e } })
);
},
validate: (e, t, { direction: n }) =>
(n === `lower` && e === e.toLocaleLowerCase()) ||
(n === `upper` && e === e.toLocaleUpperCase())
? e
: t.error(`string.${n}case`),
convert: !0,
},
creditCard: {
method() {
return this.$_addRule(`creditCard`);
},
validate(e, t) {
let n = e.length,
r = 0,
i = 1;
for (; n--;) {
let t = e.charAt(n) * i;
((r += t - 9 * (t > 9)), (i ^= 3));
}
return r > 0 && r % 10 == 0 ? e : t.error(`string.creditCard`);
},
},
dataUri: {
method(e = {}) {
return (
d.assertOptions(e, [`paddingRequired`]),
(e = { paddingRequired: !0, ...e }),
r(
typeof e.paddingRequired == `boolean`,
`paddingRequired must be boolean`,
),
this.$_addRule({ name: `dataUri`, args: { options: e } })
);
},
validate(e, t, { options: n }) {
let r = e.match(f.dataUriRegex);
return r &&
(!r[2] ||
r[2] !== `base64` ||
f.base64Regex[n.paddingRequired].false.test(r[3]))
? e
: t.error(`string.dataUri`);
},
jsonSchema: (e, t) => ((t.format = `data-uri`), t),
},
domain: {
method(e) {
e &&
d.assertOptions(e, [
`allowFullyQualified`,
`allowUnicode`,
`allowUnderscore`,
`maxDomainSegments`,
`minDomainSegments`,
`tlds`,
]);
let t = f.addressOptions(e);
return this.$_addRule({ name: `domain`, args: { options: e }, address: t });
},
validate: (e, t, n, { address: r }) =>
a(e, r) ? e : t.error(`string.domain`),
},
email: {
method(e = {}) {
(d.assertOptions(e, [
`allowFullyQualified`,
`allowUnicode`,
`ignoreLength`,
`maxDomainSegments`,
`minDomainSegments`,
`multiple`,
`separator`,
`tlds`,
]),
r(
e.multiple === void 0 || typeof e.multiple == `boolean`,
`multiple option must be an boolean`,
));
let t = f.addressOptions(e),
n = RegExp(`\\s*[${e.separator ? i(e.separator) : `,`}]\\s*`);
return this.$_addRule({
name: `email`,
args: { options: e },
regex: n,
address: t,
});
},
validate(e, t, { options: n }, { regex: r, address: i }) {
let a = n.multiple ? e.split(r) : [e],
s = [];
for (let e of a) o(e, i) || s.push(e);
return s.length ? t.error(`string.email`, { value: e, invalids: s }) : e;
},
jsonSchema: (e, t) => ((t.format = `email`), t),
},
guid: {
alias: `uuid`,
method(e = {}) {
(d.assertOptions(e, [`version`, `separator`, `wrapper`]),
r(
e.wrapper === void 0 ||
typeof e.wrapper == `boolean` ||
(typeof e.wrapper == `string` &&
typeof f.guidBrackets[e.wrapper] == `string`),
`"wrapper" must be true, false, or one of "${Object.keys(f.guidBrackets).filter(Boolean).join(`", "`)}"`,
));
let t = ``;
if (e.version) {
let n = [].concat(e.version);
r(n.length >= 1, `version must have at least 1 valid version specified`);
let i = new Set();
for (let e = 0; e < n.length; ++e) {
let a = n[e];
r(
typeof a == `string`,
`version at position ` + e + ` must be a string`,
);
let o = f.guidVersions[a.toLowerCase()];
(r(
o,
`version at position ` +
e +
` must be one of ` +
Object.keys(f.guidVersions).join(`, `),
),
r(!i.has(o), `version at position ` + e + ` must not be a duplicate`),
(t += o),
i.add(o));
}
}
r(
f.guidSeparators.has(e.separator),
`separator must be one of true, false, "-", or ":"`,
);
let n =
e.separator === void 0
? `[:-]?`
: !0 === e.separator
? `[:-]`
: !1 === e.separator
? `[]?`
: `\\${e.separator}`,
a,
o;
e.wrapper === void 0
? ((a = `[\\[{\\(]?`), (o = `[\\]}\\)]?`))
: !0 === e.wrapper
? ((a = `[\\[{\\(]`), (o = `[\\]}\\)]`))
: !1 === e.wrapper
? ((a = ``), (o = ``))
: ((a = i(e.wrapper)), (o = i(f.guidBrackets[e.wrapper])));
let s = RegExp(
`^(${a})[0-9A-F]{8}(${n})[0-9A-F]{4}\\2?[${t || `0-9A-F`}][0-9A-F]{3}\\2?[${t ? `89AB` : `0-9A-F`}][0-9A-F]{3}\\2?[0-9A-F]{12}(${o})$`,
`i`,
);
return this.$_addRule({ name: `guid`, args: { options: e }, regex: s });
},
validate(e, t, n, { regex: r }) {
let i = r.exec(e);
if (!i) return t.error(`string.guid`);
let a = i[1],
o = i[i.length - 1];
return (a || o) && f.guidBrackets[a] !== o ? t.error(`string.guid`) : e;
},
jsonSchema: (e, t) => ((t.format = `uuid`), t),
},
hex: {
method(e = {}) {
return (
d.assertOptions(e, [`byteAligned`, `prefix`]),
(e = { byteAligned: !1, prefix: !1, ...e }),
r(typeof e.byteAligned == `boolean`, `byteAligned must be boolean`),
r(
typeof e.prefix == `boolean` || e.prefix === `optional`,
`prefix must be boolean or "optional"`,
),
this.$_addRule({ name: `hex`, args: { options: e } })
);
},
validate: (e, t, { options: n }) =>
(n.prefix === `optional`
? f.hexRegex.withOptionalPrefix
: !0 === n.prefix
? f.hexRegex.withPrefix
: f.hexRegex.withoutPrefix
).test(e)
? n.byteAligned && e.length % 2 != 0
? t.error(`string.hexAlign`)
: e
: t.error(`string.hex`),
jsonSchema: (e, t) => ((t.format = `hex`), t),
},
hostname: {
method() {
return this.$_addRule(`hostname`);
},
validate: (e, t) =>
a(e, { minDomainSegments: 1 }) || f.ipRegex.test(e)
? e
: t.error(`string.hostname`),
jsonSchema: (e, t) => ((t.format = `hostname`), t),
},
insensitive: {
method() {
return this.$_setFlag(`insensitive`, !0);
},
},
ip: {
method(e = {}) {
d.assertOptions(e, [`cidr`, `version`]);
let { cidr: t, versions: n, regex: r } = s(e),
i = e.version ? n : void 0;
return this.$_addRule({
name: `ip`,
args: { options: { cidr: t, version: i } },
regex: r,
});
},
validate: (e, t, { options: n }, { regex: r }) =>
r.test(e)
? e
: n.version
? t.error(`string.ipVersion`, {
value: e,
cidr: n.cidr,
version: n.version,
})
: t.error(`string.ip`, { value: e, cidr: n.cidr }),
jsonSchema(e, t) {
let n = e.args.options.version;
return (n && n.length === 1 ? (t.format = n[0]) : (t.format = `ip`), t);
},
},
isoDate: {
method() {
return this.$_addRule(`isoDate`);
},
validate: (e, { error: t }) => (f.isoDate(e) ? e : t(`string.isoDate`)),
jsonSchema: (e, t) => ((t.format = `date-time`), t),
},
isoDuration: {
method() {
return this.$_addRule(`isoDuration`);
},
validate: (e, t) =>
f.isoDurationRegex.test(e) ? e : t.error(`string.isoDuration`),
jsonSchema: (e, t) => ((t.format = `duration`), t),
},
length: {
method(e, t) {
return f.length(this, `length`, e, `=`, t);
},
validate(e, t, { limit: n, encoding: r }, { name: i, operator: a, args: o }) {
let s = !r && e.length;
return d.compare(s, n, a)
? e
: t.error(`string.` + i, { limit: o.limit, value: e, encoding: r });
},
jsonSchema: (e, t) => (
(t.minLength = e.args.limit),
(t.maxLength = e.args.limit),
t
),
args: [
{
name: `limit`,
ref: !0,
assert: d.limit,
message: `must be a positive integer`,
},
`encoding`,
],
},
lowercase: {
method() {
return this.case(`lower`);
},
},
max: {
method(e, t) {
return f.length(this, `max`, e, `<=`, t);
},
jsonSchema: (e, t) => ((t.maxLength = e.args.limit), t),
args: [`limit`, `encoding`],
},
min: {
method(e, t) {
return f.length(this, `min`, e, `>=`, t);
},
jsonSchema: (e, t) => (e.args.limit > 0 && (t.minLength = e.args.limit), t),
args: [`limit`, `encoding`],
},
normalize: {
method(e = `NFC`) {
return (
r(
f.normalizationForms.includes(e),
`normalization form must be one of ` + f.normalizationForms.join(`, `),
),
this.$_addRule({ name: `normalize`, args: { form: e } })
);
},
validate: (e, { error: t }, { form: n }) =>
e === e.normalize(n) ? e : t(`string.normalize`, { value: e, form: n }),
convert: !0,
},
pattern: {
alias: `regex`,
method(e, t = {}) {
(r(e instanceof RegExp, `regex must be a RegExp`),
r(
!e.flags.includes(`g`) && !e.flags.includes(`y`),
`regex should not use global or sticky mode`,
),
typeof t == `string` && (t = { name: t }),
d.assertOptions(t, [`invert`, `name`]));
let n = [
`string.pattern`,
t.invert ? `.invert` : ``,
t.name ? `.name` : `.base`,
].join(``);
return this.$_addRule({
name: `pattern`,
args: { regex: e, options: t },
errorCode: n,
});
},
validate: (e, t, { regex: n, options: r }, { errorCode: i }) =>
n.test(e) ^ r.invert ? e : t.error(i, { name: r.name, regex: n, value: e }),
jsonSchema(e, t) {
let n = e.args.regex.source;
return (
t.allOf
? t.allOf.push({ pattern: n })
: t.pattern === void 0
? (t.pattern = n)
: ((t.allOf = [{ pattern: t.pattern }, { pattern: n }]),
delete t.pattern),
t
);
},
args: [`regex`, `options`],
multi: !0,
},
replace: {
method(e, t) {
(typeof e == `string` && (e = new RegExp(i(e), `g`)),
r(e instanceof RegExp, `pattern must be a RegExp`),
r(typeof t == `string`, `replacement must be a String`));
let n = this.clone();
return (
n.$_terms.replacements || (n.$_terms.replacements = []),
n.$_terms.replacements.push({ pattern: e, replacement: t }),
n
);
},
},
token: {
method() {
return this.$_addRule(`token`);
},
validate: (e, t) => (/^\w+$/.test(e) ? e : t.error(`string.token`)),
jsonSchema: (e, t) => ((t.format = `token`), t),
},
trim: {
method(e = !0) {
return (
r(typeof e == `boolean`, `enabled must be a boolean`),
this.$_addRule({ name: `trim`, args: { enabled: e } })
);
},
validate: (e, t, { enabled: n }) =>
n && e !== e.trim() ? t.error(`string.trim`) : e,
convert: !0,
},
truncate: {
method(e = !0) {
return (
r(typeof e == `boolean`, `enabled must be a boolean`),
this.$_setFlag(`truncate`, e)
);
},
},
uppercase: {
method() {
return this.case(`upper`);
},
},
uri: {
method(e = {}) {
(d.assertOptions(e, [
`allowRelative`,
`allowQuerySquareBrackets`,
`domain`,
`relativeOnly`,
`scheme`,
`encodeUri`,
]),
e.domain &&
d.assertOptions(e.domain, [
`allowFullyQualified`,
`allowUnicode`,
`maxDomainSegments`,
`minDomainSegments`,
`tlds`,
]));
let { regex: t, scheme: n } = c(e),
r = e.domain ? f.addressOptions(e.domain) : null;
return this.$_addRule({
name: `uri`,
args: { options: e },
regex: t,
domain: r,
scheme: n,
});
},
validate(e, t, { options: n }, { regex: r, domain: i, scheme: o }) {
if ([`http:/`, `https:/`].includes(e)) return t.error(`string.uri`);
let s = r.exec(e);
if (!s && t.prefs.convert && n.encodeUri) {
let t = encodeURI(e);
((s = r.exec(t)), s && (e = t));
}
if (s) {
let r = s[1] || s[2];
return !i || (n.allowRelative && !r) || a(r, i)
? e
: t.error(`string.domain`, { value: r });
}
return n.relativeOnly
? t.error(`string.uriRelativeOnly`)
: n.scheme
? t.error(`string.uriCustomScheme`, { scheme: o, value: e })
: t.error(`string.uri`);
},
jsonSchema: (e, t) => ((t.format = `uri`), t),
},
},
manifest: {
build(e, t) {
if (t.replacements)
for (let { pattern: n, replacement: r } of t.replacements)
e = e.replace(n, r);
return e;
},
},
messages: {
"string.alphanum": `{{#label}} must only contain alpha-numeric characters`,
"string.base": `{{#label}} must be a string`,
"string.base64": `{{#label}} must be a valid base64 string`,
"string.creditCard": `{{#label}} must be a credit card`,
"string.dataUri": `{{#label}} must be a valid dataUri string`,
"string.domain": `{{#label}} must contain a valid domain name`,
"string.email": `{{#label}} must be a valid email`,
"string.empty": `{{#label}} is not allowed to be empty`,
"string.guid": `{{#label}} must be a valid GUID`,
"string.hex": `{{#label}} must only contain hexadecimal characters`,
"string.hexAlign": `{{#label}} hex decoded representation must be byte aligned`,
"string.hostname": `{{#label}} must be a valid hostname`,
"string.ip": `{{#label}} must be a valid ip address with a {{#cidr}} CIDR`,
"string.ipVersion": `{{#label}} must be a valid ip address of one of the following versions {{#version}} with a {{#cidr}} CIDR`,
"string.isoDate": `{{#label}} must be in iso format`,
"string.isoDuration": `{{#label}} must be a valid ISO 8601 duration`,
"string.length": `{{#label}} length must be {{#limit}} characters long`,
"string.lowercase": `{{#label}} must only contain lowercase characters`,
"string.max": `{{#label}} length must be less than or equal to {{#limit}} characters long`,
"string.min": `{{#label}} length must be at least {{#limit}} characters long`,
"string.normalize": `{{#label}} must be unicode normalized in the {{#form}} form`,
"string.token": `{{#label}} must only contain alpha-numeric and underscore characters`,
"string.pattern.base": `{{#label}} with value {:[.]} fails to match the required pattern: {{#regex}}`,
"string.pattern.name": `{{#label}} with value {:[.]} fails to match the {{#name}} pattern`,
"string.pattern.invert.base": `{{#label}} with value {:[.]} matches the inverted pattern: {{#regex}}`,
"string.pattern.invert.name": `{{#label}} with value {:[.]} matches the inverted {{#name}} pattern`,
"string.trim": `{{#label}} must not have leading or trailing whitespace`,
"string.uri": `{{#label}} must be a valid uri`,
"string.uriCustomScheme": `{{#label}} must be a valid uri with a scheme matching the {{#scheme}} pattern`,
"string.uriRelativeOnly": `{{#label}} must be a valid relative uri`,
"string.uppercase": `{{#label}} must only contain uppercase characters`,
},
})),
(f.addressOptions = function (e) {
if (!e) return f.tlds || e;
if (
(r(
e.minDomainSegments === void 0 ||
(Number.isSafeInteger(e.minDomainSegments) && e.minDomainSegments > 0),
`minDomainSegments must be a positive integer`,
),
r(
e.maxDomainSegments === void 0 ||
(Number.isSafeInteger(e.maxDomainSegments) && e.maxDomainSegments > 0),
`maxDomainSegments must be a positive integer`,
),
!1 === e.tlds)
)
return e;
if (!0 === e.tlds || e.tlds === void 0)
return (
r(f.tlds, `Built-in TLD list disabled`), Object.assign({}, e, f.tlds)
);
r(typeof e.tlds == `object`, `tlds must be true, false, or an object`);
let t = e.tlds.deny;
if (t)
return (
Array.isArray(t) &&
(e = Object.assign({}, e, { tlds: { deny: new Set(t) } })),
r(
e.tlds.deny instanceof Set,
`tlds.deny must be an array, Set, or boolean`,
),
r(!e.tlds.allow, `Cannot specify both tlds.allow and tlds.deny lists`),
f.validateTlds(e.tlds.deny, `tlds.deny`),
e
);
let n = e.tlds.allow;
return n
? !0 === n
? (r(f.tlds, `Built-in TLD list disabled`), Object.assign({}, e, f.tlds))
: (Array.isArray(n) &&
(e = Object.assign({}, e, { tlds: { allow: new Set(n) } })),
r(
e.tlds.allow instanceof Set,
`tlds.allow must be an array, Set, or boolean`,
),
f.validateTlds(e.tlds.allow, `tlds.allow`),
e)
: { ...e, tlds: !1 };
}),
(f.validateTlds = function (e, t) {
for (let n of e)
r(
a(n, { minDomainSegments: 1, maxDomainSegments: 1 }),
`${t} must contain valid top level domain names`,
);
}),
(f.isoDate = function (e) {
if (!d.isIsoDate(e)) return null;
/.*T.*[+-]\d\d$/.test(e) && (e += `00`);
let t = new Date(e);
return isNaN(t.getTime()) ? null : t.toISOString();
}),
(f.length = function (e, t, n, i, a) {
return (
r(!a || !1, `Invalid encoding:`, a),
e.$_addRule({
name: t,
method: `length`,
args: { limit: n, encoding: a },
operator: i,
})
);
}));
},
5008(e, t, n) {
let { assert: r } = n(3115),
i = n(680),
a = {};
((a.Map = class extends Map {
slice() {
return new a.Map(this);
}
}),
(e.exports = i.extend({
type: `symbol`,
terms: { map: { init: new a.Map() } },
coerce: {
method(e, { schema: t, error: n }) {
let r = t.$_terms.map.get(e);
return (
r && (e = r),
t._flags.only && typeof e != `symbol`
? { value: e, errors: n(`symbol.map`, { map: t.$_terms.map }) }
: { value: e }
);
},
},
validate(e, { error: t }) {
if (typeof e != `symbol`) return { value: e, errors: t(`symbol.base`) };
},
rules: {
map: {
method(e) {
(e &&
!e[Symbol.iterator] &&
typeof e == `object` &&
(e = Object.entries(e)),
r(e && e[Symbol.iterator], `Iterable must be an iterable or object`));
let t = this.clone(),
n = [];
for (let i of e) {
r(i && i[Symbol.iterator], `Entry must be an iterable`);
let [e, a] = i;
(r(
typeof e != `object` &&
typeof e != `function` &&
typeof e != `symbol`,
`Key must not be of type object, function, or Symbol`,
),
r(typeof a == `symbol`, `Value must be a Symbol`),
t.$_terms.map.set(e, a),
n.push(a));
}
return t.valid(...n);
},
},
},
manifest: { build: (e, t) => (t.map && (e = e.map(t.map)), e) },
jsonSchema(e, t, n, r) {
let i = e.$_terms.map;
return i.size
? { anyOf: Array.from(i.keys()).map((e) => ({ const: e })) }
: {};
},
messages: {
"symbol.base": `{{#label}} must be a symbol`,
"symbol.map": `{{#label}} must be one of {{#map}}`,
},
})));
},
1190(e, t, n) {
let { assert: r, clone: i, ignore: a, reach: o } = n(3115),
s = n(9415),
c = n(8013),
l = n(4957),
u = { result: Symbol(`result`) };
((t.entry = function (e, t, n) {
let i = s.defaults;
n &&
(r(
n.warnings === void 0,
`Cannot override warnings preference in synchronous validation`,
),
r(
n.artifacts === void 0,
`Cannot override artifacts preference in synchronous validation`,
),
(i = s.preferences(s.defaults, n)));
let a = u.entry(e, t, i);
r(
!a.mainstay.externals.length,
`Schema with external rules must use validateAsync()`,
);
let o = { value: a.value };
return (
a.error && (o.error = a.error),
a.mainstay.warnings.length && (o.warning = c.details(a.mainstay.warnings)),
a.mainstay.debug && (o.debug = a.mainstay.debug),
a.mainstay.artifacts && (o.artifacts = a.mainstay.artifacts),
o
);
}),
(t.entryAsync = async function (e, t, n) {
let r = s.defaults;
n && (r = s.preferences(s.defaults, n));
let i = u.entry(e, t, r),
a = i.mainstay;
if (i.error) throw (a.debug && (i.error.debug = a.debug), i.error);
if (a.externals.length) {
let t = i.value,
l = [];
for (let i of a.externals) {
let d = i.state.path,
f = i.schema.type === `link` ? a.links.get(i.schema) : null,
p,
m,
h = t,
g = d.length ? [t] : [],
_ = d.length ? o(e, d) : e;
if (d.length) {
p = d[d.length - 1];
let e = t;
for (let t of d.slice(0, -1)) ((e = e[t]), g.unshift(e));
((m = g[0]), (h = m[p]));
}
try {
let e = await i.method(h, {
schema: i.schema,
linked: f,
state: i.state,
prefs: n,
original: _,
error: (e, t) => (f || i.schema).$_createError(e, h, t, i.state, r),
errorsArray: u.errorsArray,
warn: (e, t) =>
a.warnings.push((f || i.schema).$_createError(e, h, t, i.state, r)),
message: (e, t) =>
(f || i.schema).$_createError(`external`, h, t, i.state, r, {
messages: e,
}),
});
if (e === void 0 || e === h) continue;
if (e instanceof c.Report) {
if (
(a.tracer.log(i.schema, i.state, `rule`, `external`, `error`),
l.push(e),
r.abortEarly)
)
break;
continue;
}
if (Array.isArray(e) && e[s.symbols.errors]) {
if (
(a.tracer.log(i.schema, i.state, `rule`, `external`, `error`),
l.push(...e),
r.abortEarly)
)
break;
continue;
}
m
? (a.tracer.value(i.state, `rule`, h, e, `external`), (m[p] = e))
: (a.tracer.value(i.state, `rule`, t, e, `external`), (t = e));
} catch (e) {
throw (r.errors.label && (e.message += ` (${i.label})`), e);
}
}
if (((i.value = t), l.length))
throw (
(i.error = c.process(l, e, r)),
a.debug && (i.error.debug = a.debug),
i.error
);
}
if (!r.warnings && !r.debug && !r.artifacts) return i.value;
let l = { value: i.value };
return (
a.warnings.length && (l.warning = c.details(a.warnings)),
a.debug && (l.debug = a.debug),
a.artifacts && (l.artifacts = a.artifacts),
l
);
}),
(t.standard = function (e, n, r) {
let i = r?.libraryOptions;
return n.isAsync() ? t.entryAsync(e, n, i) : t.entry(e, n, i);
}),
(u.Mainstay = class {
constructor(e, t, n) {
((this.externals = []),
(this.warnings = []),
(this.tracer = e),
(this.debug = t),
(this.links = n),
(this.shadow = null),
(this.artifacts = null),
(this._snapshots = []));
}
snapshot() {
this._snapshots.push({
externals: this.externals.slice(),
warnings: this.warnings.slice(),
});
}
restore() {
let e = this._snapshots.pop();
((this.externals = e.externals), (this.warnings = e.warnings));
}
commit() {
this._snapshots.pop();
}
}),
(u.entry = function (e, n, r) {
let { tracer: i, cleanup: a } = u.tracer(n, r),
o = r.debug ? [] : null,
s = n._ids._schemaChain ? new Map() : null,
d = new u.Mainstay(i, o, s),
f = n._ids._schemaChain ? [{ schema: n }] : null,
p = new l([], [], { mainstay: d, schemas: f }),
m = t.validate(e, n, p, r);
a && n.$_root.untrace();
let h = c.process(m.errors, e, r);
return { value: m.value, error: h, mainstay: d };
}),
(u.tracer = function (e, t) {
return e.$_root._tracer
? { tracer: e.$_root._tracer._register(e) }
: t.debug
? (r(e.$_root.trace, `Debug mode not supported`),
{ tracer: e.$_root.trace()._register(e), cleanup: !0 })
: { tracer: u.ignore };
}),
(t.validate = function (e, t, n, r, i = {}) {
if (
(t.$_terms.whens && (t = t._generate(e, n, r).schema),
t._preferences && (r = u.prefs(t, r)),
t._cache && r.cache)
) {
let r = t._cache.get(e);
if ((n.mainstay.tracer.debug(n, `validate`, `cached`, !!r), r)) return r;
}
let a = (i, a, o) => t.$_createError(i, e, a, o || n, r),
o = {
original: e,
prefs: r,
schema: t,
state: n,
error: a,
errorsArray: u.errorsArray,
warn: (e, t, r) => n.mainstay.warnings.push(a(e, t, r)),
message: (i, a) => t.$_createError(`custom`, e, a, n, r, { messages: i }),
};
n.mainstay.tracer.entry(t, n);
let c = t._definition;
if (c.prepare && e !== void 0 && r.convert) {
let t = c.prepare(e, o);
if (t) {
if ((n.mainstay.tracer.value(n, `prepare`, e, t.value), t.errors))
return u.finalize(t.value, [].concat(t.errors), o);
e = t.value;
}
}
if (
c.coerce &&
e !== void 0 &&
r.convert &&
(!c.coerce.from || c.coerce.from.includes(typeof e))
) {
let t = c.coerce.method(e, o);
if (t) {
if ((n.mainstay.tracer.value(n, `coerced`, e, t.value), t.errors))
return u.finalize(t.value, [].concat(t.errors), o);
e = t.value;
}
}
let l = t._flags.empty;
l &&
l.$_match(u.trim(e, t), n.nest(l), s.defaults) &&
(n.mainstay.tracer.value(n, `empty`, e, void 0), (e = void 0));
let d =
i.presence ||
t._flags.presence ||
(t._flags._endedSwitch ? null : r.presence);
if (e === void 0) {
if (d === `forbidden`) return u.finalize(e, null, o);
if (d === `required`)
return u.finalize(e, [t.$_createError(`any.required`, e, null, n, r)], o);
if (d === `optional`) {
if (t._flags.default !== s.symbols.deepDefault)
return u.finalize(e, null, o);
(n.mainstay.tracer.value(n, `default`, e, {}), (e = {}));
}
} else if (d === `forbidden`)
return u.finalize(e, [t.$_createError(`any.unknown`, e, null, n, r)], o);
let f = [];
if (t._valids) {
let i = t._valids.get(e, n, r, t._flags.insensitive);
if (i)
return (
r.convert &&
(n.mainstay.tracer.value(n, `valids`, e, i.value), (e = i.value)),
n.mainstay.tracer.filter(t, n, `valid`, i),
u.finalize(e, null, o)
);
if (t._flags.only) {
let i = t.$_createError(
`any.only`,
e,
{ valids: t._valids.values({ display: !0 }) },
n,
r,
);
if (r.abortEarly) return u.finalize(e, [i], o);
f.push(i);
}
}
if (t._invalids) {
let i = t._invalids.get(e, n, r, t._flags.insensitive);
if (i) {
n.mainstay.tracer.filter(t, n, `invalid`, i);
let a = t.$_createError(
`any.invalid`,
e,
{ invalids: t._invalids.values({ display: !0 }) },
n,
r,
);
if (r.abortEarly) return u.finalize(e, [a], o);
f.push(a);
}
}
if (c.validate) {
let t = c.validate(e, o);
if (
t &&
(n.mainstay.tracer.value(n, `base`, e, t.value), (e = t.value), t.errors)
) {
if (!Array.isArray(t.errors))
return (f.push(t.errors), u.finalize(e, f, o));
if (t.errors.length) return (f.push(...t.errors), u.finalize(e, f, o));
}
}
return t._rules.length ? u.rules(e, f, o) : u.finalize(e, f, o);
}),
(u.rules = function (e, t, n) {
let { schema: r, state: i, prefs: a } = n;
for (let o of r._rules) {
let c = r._definition.rules[o.method];
if (c.convert && a.convert) {
i.mainstay.tracer.log(r, i, `rule`, o.name, `full`);
continue;
}
let l,
d = o.args;
if (o._resolve.length) {
d = Object.assign({}, d);
for (let t of o._resolve) {
let n = c.argsByName.get(t),
o = d[t].resolve(e, i, a),
u = n.normalize ? n.normalize(o) : o,
f = s.validateArg(u, null, n);
if (f) {
l = r.$_createError(
`any.ref`,
o,
{ arg: t, ref: d[t], reason: f },
i,
a,
);
break;
}
d[t] = u;
}
}
l ||= c.validate(e, n, d, o);
let f = u.rule(l, o);
if (f.errors) {
if ((i.mainstay.tracer.log(r, i, `rule`, o.name, `error`), o.warn)) {
i.mainstay.warnings.push(...f.errors);
continue;
}
if (a.abortEarly) return u.finalize(e, f.errors, n);
t.push(...f.errors);
} else
(i.mainstay.tracer.log(r, i, `rule`, o.name, `pass`),
i.mainstay.tracer.value(i, `rule`, e, f.value, o.name),
(e = f.value));
}
return u.finalize(e, t, n);
}),
(u.rule = function (e, t) {
return e instanceof c.Report
? (u.error(e, t), { errors: [e], value: null })
: Array.isArray(e) && e[s.symbols.errors]
? (e.forEach((e) => u.error(e, t)), { errors: e, value: null })
: { errors: null, value: e };
}),
(u.error = function (e, t) {
return (t.message && e._setTemplate(t.message), e);
}),
(u.finalize = function (e, t, n) {
t ||= [];
let { schema: i, state: a, prefs: o } = n;
if (t.length) {
let r = u.default(`failover`, void 0, t, n);
r !== void 0 &&
(a.mainstay.tracer.value(a, `failover`, e, r), (e = r), (t = []));
}
if (t.length && i._flags.error)
if (typeof i._flags.error == `function`) {
((t = i._flags.error(t)), Array.isArray(t) || (t = [t]));
for (let e of t)
r(
e instanceof Error || e instanceof c.Report,
`error() must return an Error object`,
);
} else t = [i._flags.error];
if (e === void 0) {
let r = u.default(`default`, e, t, n);
(a.mainstay.tracer.value(a, `default`, e, r), (e = r));
}
if (i._flags.cast && e !== void 0) {
let t = i._definition.cast[i._flags.cast];
if (t.from(e)) {
let r = t.to(e, n);
(a.mainstay.tracer.value(a, `cast`, e, r, i._flags.cast), (e = r));
}
}
if (i.$_terms.externals && o.externals && !1 !== o._externals)
for (let { method: e } of i.$_terms.externals)
a.mainstay.externals.push({
method: e,
schema: i,
state: a,
label: c.label(i._flags, a, o),
});
let s = { value: e, errors: t.length ? t : null };
return (
i._flags.result &&
((s.value = i._flags.result === `strip` ? void 0 : n.original),
a.mainstay.tracer.value(a, i._flags.result, e, s.value),
a.shadow(e, i._flags.result)),
i._cache && !1 !== o.cache && !i._refs.length && i._cache.set(n.original, s),
e === void 0 ||
s.errors ||
i._flags.artifact === void 0 ||
((a.mainstay.artifacts = a.mainstay.artifacts || new Map()),
a.mainstay.artifacts.has(i._flags.artifact) ||
a.mainstay.artifacts.set(i._flags.artifact, []),
a.mainstay.artifacts.get(i._flags.artifact).push(a.path)),
s
);
}),
(u.prefs = function (e, t) {
let n = t === s.defaults;
return n && e._preferences[s.symbols.prefs]
? e._preferences[s.symbols.prefs]
: ((t = s.preferences(t, e._preferences)),
n && (e._preferences[s.symbols.prefs] = t),
t);
}),
(u.default = function (e, t, n, r) {
let { schema: a, state: o, prefs: c } = r,
l = a._flags[e];
if (c.noDefaults || l === void 0) return t;
if ((o.mainstay.tracer.log(a, o, `rule`, e, `full`), !l)) return l;
if (typeof l == `function`) {
let t = l.length ? [i(o.ancestors[0]), r] : [];
try {
return l(...t);
} catch (t) {
n.push(a.$_createError(`any.${e}`, null, { error: t }, o, c));
return;
}
}
return typeof l == `object`
? l[s.symbols.literal]
? l.literal
: s.isResolvable(l)
? l.resolve(t, o, c)
: i(l)
: l;
}),
(u.trim = function (e, t) {
if (typeof e != `string`) return e;
let n = t.$_getRule(`trim`);
return n && n.args.enabled ? e.trim() : e;
}),
(u.ignore = {
active: !1,
debug: a,
entry: a,
filter: a,
log: a,
resolve: a,
value: a,
}),
(u.errorsArray = function () {
let e = [];
return ((e[s.symbols.errors] = !0), e);
}));
},
6220(e, t, n) {
let { assert: r, deepEqual: i } = n(3115),
a = n(9415),
o = {};
((e.exports = o.Values =
class {
constructor(e, t) {
((this._values = new Set(e)),
(this._refs = new Set(t)),
(this._lowercase = o.lowercases(e)),
(this._override = !1));
}
get length() {
return this._values.size + this._refs.size;
}
add(e, t) {
a.isResolvable(e)
? this._refs.has(e) || (this._refs.add(e), t && t.register(e))
: this.has(e, null, null, !1) ||
(this._values.add(e),
typeof e == `string` && this._lowercase.set(e.toLowerCase(), e));
}
static merge(e, t, n) {
if (((e ||= new o.Values()), t)) {
if (t._override) return t.clone();
for (let n of [...t._values, ...t._refs]) e.add(n);
}
if (n) for (let t of [...n._values, ...n._refs]) e.remove(t);
return e.length ? e : null;
}
remove(e) {
a.isResolvable(e)
? this._refs.delete(e)
: (this._values.delete(e),
typeof e == `string` && this._lowercase.delete(e.toLowerCase()));
}
has(e, t, n, r) {
return !!this.get(e, t, n, r);
}
get(e, t, n, r) {
if (!this.length) return !1;
if (this._values.has(e)) return { value: e };
if (typeof e == `string` && e && r) {
let t = this._lowercase.get(e.toLowerCase());
if (t) return { value: t };
}
if (!this._refs.size && typeof e != `object`) return !1;
if (typeof e == `object`) {
for (let t of this._values) if (i(t, e)) return { value: t };
}
if (t)
for (let a of this._refs) {
let o = a.resolve(e, t, n, null, { in: !0 });
if (o === void 0) continue;
let s =
a.in && typeof o == `object`
? Array.isArray(o)
? o
: Object.keys(o)
: [o];
for (let t of s)
if (typeof t == typeof e) {
if (r && e && typeof e == `string`) {
if (t.toLowerCase() === e.toLowerCase())
return { value: t, ref: a };
} else if (i(t, e)) return { value: t, ref: a };
}
}
return !1;
}
override() {
this._override = !0;
}
values(e) {
if (e && e.display) {
let e = [];
for (let t of [...this._values, ...this._refs]) t !== void 0 && e.push(t);
return e;
}
return Array.from([...this._values, ...this._refs]);
}
clone() {
let e = new o.Values(this._values, this._refs);
return ((e._override = this._override), e);
}
concat(e) {
r(!e._override, `Cannot concat override set of values`);
let t = new o.Values(
[...this._values, ...e._values],
[...this._refs, ...e._refs],
);
return ((t._override = this._override), t);
}
describe() {
let e = [];
this._override && e.push({ override: !0 });
for (let t of this._values.values())
e.push(t && typeof t == `object` ? { value: t } : t);
for (let t of this._refs.values()) e.push(t.describe());
return e;
}
}),
(o.Values.prototype[a.symbols.values] = !0),
(o.Values.prototype.slice = o.Values.prototype.clone),
(o.lowercases = function (e) {
let t = new Map();
if (e) for (let n of e) typeof n == `string` && t.set(n.toLowerCase(), n);
return t;
}));
},
9089(e, t, n) {
n.d(t, {
ipRegex: () => j,
isDomainValid: () => p,
isEmailValid: () => _,
uriRegex: () => A,
});
var r = n(8663);
let i = {
EMPTY_STRING: `Address must be a non-empty string`,
FORBIDDEN_UNICODE: `Address contains forbidden Unicode characters`,
MULTIPLE_AT_CHAR: `Address cannot contain more than one @ character`,
MISSING_AT_CHAR: `Address must contain one @ character`,
EMPTY_LOCAL: `Address local part cannot be empty`,
ADDRESS_TOO_LONG: `Address too long`,
LOCAL_TOO_LONG: `Address local part too long`,
EMPTY_LOCAL_SEGMENT: `Address local part contains empty dot-separated segment`,
INVALID_LOCAL_CHARS: `Address local part contains invalid character`,
DOMAIN_NON_EMPTY_STRING: `Domain must be a non-empty string`,
DOMAIN_TOO_LONG: `Domain too long`,
DOMAIN_INVALID_UNICODE_CHARS: `Domain contains forbidden Unicode characters`,
DOMAIN_INVALID_CHARS: `Domain contains invalid character`,
DOMAIN_INVALID_TLDS_CHARS: `Domain contains invalid tld character`,
DOMAIN_SEGMENTS_COUNT: `Domain lacks the minimum required number of segments`,
DOMAIN_SEGMENTS_COUNT_MAX: `Domain contains too many segments`,
DOMAIN_FORBIDDEN_TLDS: `Domain uses forbidden TLD`,
DOMAIN_EMPTY_SEGMENT: `Domain contains empty dot-separated segment`,
DOMAIN_LONG_SEGMENT: `Domain contains dot-separated segment that is too long`,
};
function a(e) {
return { code: e, error: i[e] };
}
let o = /[^\x00-\x7f]/,
s = /[\x00-\x20@\:\/\\#!\$&\'\(\)\*\+,;=\?]/,
c = /^[a-zA-Z](?:[a-zA-Z0-9\-]*[a-zA-Z0-9])?$/,
l = /^[a-zA-Z0-9](?:[a-zA-Z0-9\-]*[a-zA-Z0-9])?$/,
u = /^[a-zA-Z0-9_](?:[a-zA-Z0-9\-]*[a-zA-Z0-9])?$/,
d = r.URL || URL;
function f(e, t = {}) {
if (!e) return a(`DOMAIN_NON_EMPTY_STRING`);
if (typeof e != `string`) throw Error(`Invalid input: domain must be a string`);
if (e.length > 256) return a(`DOMAIN_TOO_LONG`);
if (o.test(e)) {
if (!1 === t.allowUnicode) return a(`DOMAIN_INVALID_UNICODE_CHARS`);
e = e.normalize(`NFC`);
}
if (s.test(e)) return a(`DOMAIN_INVALID_CHARS`);
((e = (function (e) {
e.includes(`%`) && (e = e.replace(/%/g, `%25`));
try {
return new d(`http://${e}`).host;
} catch {
return e;
}
})(e)),
t.allowFullyQualified && e[e.length - 1] === `.` && (e = e.slice(0, -1)));
let n = t.minDomainSegments || 2,
r = e.split(`.`);
if (r.length < n) return a(`DOMAIN_SEGMENTS_COUNT`);
if (t.maxDomainSegments && r.length > t.maxDomainSegments)
return a(`DOMAIN_SEGMENTS_COUNT_MAX`);
let i = t.tlds;
if (i) {
let e = r[r.length - 1].toLowerCase();
if (
(function (e) {
return !!e.allow;
})(i)
) {
if (!i.allow.has(e)) return a(`DOMAIN_FORBIDDEN_TLDS`);
} else if (i.deny.has(e)) return a(`DOMAIN_FORBIDDEN_TLDS`);
}
for (let e = 0; e < r.length; ++e) {
let n = r[e];
if (!n.length) return a(`DOMAIN_EMPTY_SEGMENT`);
if (n.length > 63) return a(`DOMAIN_LONG_SEGMENT`);
if (e < r.length - 1) {
if (t.allowUnderscore) {
if (!u.test(n)) return a(`DOMAIN_INVALID_CHARS`);
} else if (!l.test(n)) return a(`DOMAIN_INVALID_CHARS`);
} else if (!c.test(n)) return a(`DOMAIN_INVALID_TLDS_CHARS`);
}
return null;
}
function p(e, t) {
return !f(e, t);
}
var m = n(6984);
let h = /[^\x00-\x7f]/,
g = new (m.TextEncoder || TextEncoder)();
function _(e, t) {
return !(function (e, t = {}) {
if (typeof e != `string`) throw Error(`Invalid input: email must be a string`);
if (!e) return a(`EMPTY_STRING`);
let n = !h.test(e);
if (!n) {
if (!1 === t.allowUnicode) return a(`FORBIDDEN_UNICODE`);
e = e.normalize(`NFC`);
}
let r = e.split(`@`);
if (r.length !== 2)
return r.length > 2 ? a(`MULTIPLE_AT_CHAR`) : a(`MISSING_AT_CHAR`);
let [i, o] = r;
if (!i) return a(`EMPTY_LOCAL`);
if (!t.ignoreLength) {
if (e.length > 254) return a(`ADDRESS_TOO_LONG`);
if (g.encode(i).length > 64) return a(`LOCAL_TOO_LONG`);
}
return (
(function (e, t) {
let n = e.split(`.`);
for (let e of n) {
if (!e.length) return a(`EMPTY_LOCAL_SEGMENT`);
if (t) {
if (!y.test(e)) return a(`INVALID_LOCAL_CHARS`);
} else
for (let t of e) {
if (y.test(t)) continue;
let e = v(t);
if (!b.test(e)) return a(`INVALID_LOCAL_CHARS`);
}
}
return null;
})(i, n) || f(o, t)
);
})(e, t);
}
function v(e) {
return Array.from(g.encode(e), (e) => String.fromCharCode(e)).join(``);
}
let y = /^[\w!#\$%&'\*\+\-/=\?\^`\{\|\}~]+$/,
b = new RegExp(
[
`(?:[\\xc2-\\xdf][\\x80-\\xbf])`,
`(?:\\xe0[\\xa0-\\xbf][\\x80-\\xbf])|(?:[\\xe1-\\xec][\\x80-\\xbf]{2})|(?:\\xed[\\x80-\\x9f][\\x80-\\xbf])|(?:[\\xee-\\xef][\\x80-\\xbf]{2})`,
`(?:\\xf0[\\x90-\\xbf][\\x80-\\xbf]{2})|(?:[\\xf1-\\xf3][\\x80-\\xbf]{3})|(?:\\xf4[\\x80-\\x8f][\\x80-\\xbf]{2})`,
].join(`|`),
);
var x = n(8253),
S = n.n(x),
C = n(8669),
w = n.n(C);
let T = (function () {
let e = {};
e.ipv4address = `(?:(?:0{0,2}\\d|0?[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.){3}(?:0{0,2}\\d|0?[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])`;
let t = `(?:[\\dA-Fa-f]{1,4}:[\\dA-Fa-f]{1,4}|` + e.ipv4address + `)`,
n = `(?:[\\dA-Fa-f]{1,4}:){6}` + t,
r = `::(?:[\\dA-Fa-f]{1,4}:){5}` + t,
i = `(?:[\\dA-Fa-f]{1,4})?::(?:[\\dA-Fa-f]{1,4}:){4}` + t,
a =
`(?:(?:[\\dA-Fa-f]{1,4}:){0,1}[\\dA-Fa-f]{1,4})?::(?:[\\dA-Fa-f]{1,4}:){3}` +
t,
o =
`(?:(?:[\\dA-Fa-f]{1,4}:){0,2}[\\dA-Fa-f]{1,4})?::(?:[\\dA-Fa-f]{1,4}:){2}` +
t,
s = `(?:(?:[\\dA-Fa-f]{1,4}:){0,3}[\\dA-Fa-f]{1,4})?::[\\dA-Fa-f]{1,4}:` + t,
c = `(?:(?:[\\dA-Fa-f]{1,4}:){0,4}[\\dA-Fa-f]{1,4})?::` + t;
((e.ipv4Cidr = `(?:\\d|[1-2]\\d|3[0-2])`),
(e.ipv6Cidr = `(?:0{0,2}\\d|0?[1-9]\\d|1[01]\\d|12[0-8])`),
(e.ipv6address =
`(?:` +
n +
`|` +
r +
`|` +
i +
`|` +
a +
`|` +
o +
`|` +
s +
`|` +
c +
`|(?:(?:[\\dA-Fa-f]{1,4}:){0,5}[\\dA-Fa-f]{1,4})?::[\\dA-Fa-f]{1,4}|(?:(?:[\\dA-Fa-f]{1,4}:){0,6}[\\dA-Fa-f]{1,4})?::)`),
(e.ipvFuture = `v[\\dA-Fa-f]+\\.[\\w-\\.~!\\$&'\\(\\)\\*\\+,;=:]+`),
(e.scheme = `[a-zA-Z][a-zA-Z\\d+-\\.]*`),
(e.schemeRegex = new RegExp(e.scheme)));
let l =
`(?:\\[(?:` +
e.ipv6address +
`|` +
e.ipvFuture +
`)\\]|` +
e.ipv4address +
`|[\\w-\\.~%\\dA-Fa-f!\\$&'\\(\\)\\*\\+,;=]{1,255})`,
u = `(?:[\\w-\\.~%\\dA-Fa-f!\\$&'\\(\\)\\*\\+,;=:]*@)?` + l + `(?::\\d*)?`,
d = `(?:[\\w-\\.~%\\dA-Fa-f!\\$&'\\(\\)\\*\\+,;=:]*@)?(` + l + `)(?::\\d*)?`;
return (
(e.hierPart =
`(?:(?:\\/\\/` +
u +
`(?:\\/[\\w-\\.~%\\dA-Fa-f!\\$&'\\(\\)\\*\\+,;=:@]*)*)|\\/(?:[\\w-\\.~%\\dA-Fa-f!\\$&'\\(\\)\\*\\+,;=:@]+(?:\\/[\\w-\\.~%\\dA-Fa-f!\\$&'\\(\\)\\*\\+,;=:@]*)*)?|[\\w-\\.~%\\dA-Fa-f!\\$&'\\(\\)\\*\\+,;=:@]+(?:\\/[\\w-\\.~%\\dA-Fa-f!\\$&'\\(\\)\\*\\+,;=:@]*)*|(?:\\/\\/\\/[\\w-\\.~%\\dA-Fa-f!\\$&'\\(\\)\\*\\+,;=:@]*(?:\\/[\\w-\\.~%\\dA-Fa-f!\\$&'\\(\\)\\*\\+,;=:@]*)*))`),
(e.hierPartCapture =
`(?:(?:\\/\\/` +
d +
`(?:\\/[\\w-\\.~%\\dA-Fa-f!\\$&'\\(\\)\\*\\+,;=:@]*)*)|\\/(?:[\\w-\\.~%\\dA-Fa-f!\\$&'\\(\\)\\*\\+,;=:@]+(?:\\/[\\w-\\.~%\\dA-Fa-f!\\$&'\\(\\)\\*\\+,;=:@]*)*)?|[\\w-\\.~%\\dA-Fa-f!\\$&'\\(\\)\\*\\+,;=:@]+(?:\\/[\\w-\\.~%\\dA-Fa-f!\\$&'\\(\\)\\*\\+,;=:@]*)*)`),
(e.relativeRef =
`(?:(?:\\/\\/` +
u +
`(?:\\/[\\w-\\.~%\\dA-Fa-f!\\$&'\\(\\)\\*\\+,;=:@]*)*)|\\/(?:[\\w-\\.~%\\dA-Fa-f!\\$&'\\(\\)\\*\\+,;=:@]+(?:\\/[\\w-\\.~%\\dA-Fa-f!\\$&'\\(\\)\\*\\+,;=:@]*)*)?|[\\w-\\.~%\\dA-Fa-f!\\$&'\\(\\)\\*\\+,;=@]+(?:\\/[\\w-\\.~%\\dA-Fa-f!\\$&'\\(\\)\\*\\+,;=:@]*)*|)`),
(e.relativeRefCapture =
`(?:(?:\\/\\/` +
d +
`(?:\\/[\\w-\\.~%\\dA-Fa-f!\\$&'\\(\\)\\*\\+,;=:@]*)*)|\\/(?:[\\w-\\.~%\\dA-Fa-f!\\$&'\\(\\)\\*\\+,;=:@]+(?:\\/[\\w-\\.~%\\dA-Fa-f!\\$&'\\(\\)\\*\\+,;=:@]*)*)?|[\\w-\\.~%\\dA-Fa-f!\\$&'\\(\\)\\*\\+,;=@]+(?:\\/[\\w-\\.~%\\dA-Fa-f!\\$&'\\(\\)\\*\\+,;=:@]*)*|)`),
(e.query = `[\\w-\\.~%\\dA-Fa-f!\\$&'\\(\\)\\*\\+,;=:@\\/\\?]*(?=#|$)`),
(e.queryWithSquareBrackets = `[\\w-\\.~%\\dA-Fa-f!\\$&'\\(\\)\\*\\+,;=:@\\[\\]\\/\\?]*(?=#|$)`),
(e.fragment = `[\\w-\\.~%\\dA-Fa-f!\\$&'\\(\\)\\*\\+,;=:@\\/\\?]*`),
e
);
})(),
E = {
v4Cidr: T.ipv4Cidr,
v6Cidr: T.ipv6Cidr,
ipv4: T.ipv4address,
ipv6: T.ipv6address,
ipvfuture: T.ipvFuture,
};
function D(e) {
let t = T,
n =
`(?:\\?` +
(e.allowQuerySquareBrackets ? t.queryWithSquareBrackets : t.query) +
`)?(?:#` +
t.fragment +
`)?`,
r = e.domain ? t.relativeRefCapture : t.relativeRef;
if (e.relativeOnly) return O(r + n);
let i = ``;
if (e.scheme) {
S()(
e.scheme instanceof RegExp ||
typeof e.scheme == `string` ||
Array.isArray(e.scheme),
`scheme must be a RegExp, String, or Array`,
);
let n = [].concat(e.scheme);
S()(n.length >= 1, `scheme must have at least 1 scheme specified`);
let r = [];
for (let e = 0; e < n.length; ++e) {
let i = n[e];
(S()(
i instanceof RegExp || typeof i == `string`,
`scheme at position ` + e + ` must be a RegExp or String`,
),
i instanceof RegExp
? r.push(i.source.toString())
: (S()(
t.schemeRegex.test(i),
`scheme at position ` + e + ` must be a valid scheme`,
),
r.push(w()(i))));
}
i = r.join(`|`);
}
let a =
`(?:` +
(i ? `(?:` + i + `)` : t.scheme) +
`:` +
(e.domain ? t.hierPartCapture : t.hierPart) +
`)`;
return O((e.allowRelative ? `(?:` + a + `|` + r + `)` : a) + n, i);
}
function O(e, t = null) {
return {
raw: (e = `(?=.)(?!https?:/(?:$|[^/]))(?!https?:///)(?!https?:[^/])${e}`),
regex: RegExp(`^${e}$`),
scheme: t,
};
}
let k = D({});
function A(e = {}) {
return e.scheme ||
e.allowRelative ||
e.relativeOnly ||
e.allowQuerySquareBrackets ||
e.domain
? D(e)
: k;
}
function j(e = {}) {
let t = e.cidr || `optional`;
(S()(
[`required`, `optional`, `forbidden`].includes(t),
`options.cidr must be one of required, optional, forbidden`,
),
S()(
e.version === void 0 ||
typeof e.version == `string` ||
Array.isArray(e.version),
`options.version must be a string or an array of string`,
));
let n = e.version || [`ipv4`, `ipv6`, `ipvfuture`];
(Array.isArray(n) || (n = [n]),
S()(n.length >= 1, `options.version must have at least 1 version specified`));
for (let e of n)
(S()(
typeof e == `string` && e === e.toLowerCase(),
`Invalid options.version value`,
),
S()(
[`ipv4`, `ipv6`, `ipvfuture`].includes(e),
`options.version contains unknown version ` +
e +
` - must be one of ipv4, ipv6, ipvfuture`,
));
n = Array.from(new Set(n));
let r = `(?:${n
.map((e) => {
if (t === `forbidden`) return E[e];
let n = `\\/${e === `ipv4` ? E.v4Cidr : E.v6Cidr}`;
return t === `required` ? `${E[e]}${n}` : `${E[e]}(?:${n})?`;
})
.join(`|`)})`,
i = RegExp(`^${r}$`);
return { cidr: t, versions: n, regex: i, raw: r };
}
},
679(e, t) {
let n = {
operators: [
`!`,
`^`,
`*`,
`/`,
`%`,
`+`,
`-`,
`<`,
`<=`,
`>`,
`>=`,
`==`,
`!=`,
`&&`,
`||`,
`??`,
],
operatorCharacters: [
`!`,
`^`,
`*`,
`/`,
`%`,
`+`,
`-`,
`<`,
`=`,
`>`,
`&`,
`|`,
`?`,
],
operatorsOrder: [
[`^`],
[`*`, `/`, `%`],
[`+`, `-`],
[`<`, `<=`, `>`, `>=`],
[`==`, `!=`],
[`&&`],
[`||`, `??`],
],
operatorsPrefix: [`!`, `n`],
literals: { '"': `"`, "`": "`", "'": `'`, "[": `]` },
numberRx: /^(?:[0-9]*(\.[0-9]*)?){1}$/,
tokenRx: /^[\w\$\#\.\@\:\{\}]+$/,
symbol: Symbol(`formula`),
settings: Symbol(`settings`),
};
((t.Parser = class {
constructor(e, t = {}) {
if (!t[n.settings] && t.constants)
for (let e in t.constants) {
let n = t.constants[e];
if (n !== null && ![`boolean`, `number`, `string`].includes(typeof n))
throw Error(
`Formula constant ${e} contains invalid ${typeof n} value type`,
);
}
((this.settings = t[n.settings]
? t
: Object.assign({ [n.settings]: !0, constants: {}, functions: {} }, t)),
(this.single = null),
(this._parts = null),
this._parse(e));
}
_parse(e) {
let r = [],
i = ``,
a = 0,
o = !1,
s = (e) => {
if (a) throw Error(`Formula missing closing parenthesis`);
let s = r.length ? r[r.length - 1] : null;
if (o || i || e) {
if (s && s.type === `reference` && e === `)`)
return (
(s.type = `function`),
(s.value = this._subFormula(i, s.value)),
void (i = ``)
);
if (e === `)`) {
let e = new t.Parser(i, this.settings);
r.push({ type: `segment`, value: e });
} else if (o) {
if (o === `]`)
return (r.push({ type: `reference`, value: i }), void (i = ``));
r.push({ type: `literal`, value: i });
} else if (n.operatorCharacters.includes(i))
s && s.type === `operator` && n.operators.includes(s.value + i)
? (s.value += i)
: r.push({ type: `operator`, value: i });
else if (i.match(n.numberRx))
r.push({ type: `constant`, value: parseFloat(i) });
else if (this.settings.constants[i] !== void 0)
r.push({ type: `constant`, value: this.settings.constants[i] });
else {
if (!i.match(n.tokenRx))
throw Error(`Formula contains invalid token: ${i}`);
r.push({ type: `reference`, value: i });
}
i = ``;
}
};
for (let t of e)
o
? t === o
? (s(), (o = !1))
: (i += t)
: a
? t === `(`
? ((i += t), ++a)
: t === `)`
? (--a, a ? (i += t) : s(t))
: (i += t)
: t in n.literals
? (o = n.literals[t])
: t === `(`
? (s(), ++a)
: n.operatorCharacters.includes(t)
? (s(), (i = t), s())
: t === ` `
? s()
: (i += t);
(s(),
(r = r.map((e, t) =>
e.type !== `operator` ||
e.value !== `-` ||
(t && r[t - 1].type !== `operator`)
? e
: { type: `operator`, value: `n` },
)));
let c = !1;
for (let e of r) {
if (e.type === `operator`) {
if (n.operatorsPrefix.includes(e.value)) continue;
if (!c) throw Error(`Formula contains an operator in invalid position`);
if (!n.operators.includes(e.value))
throw Error(`Formula contains an unknown operator ${e.value}`);
} else if (c) throw Error(`Formula missing expected operator`);
c = !c;
}
if (!c) throw Error(`Formula contains invalid trailing operator`);
(r.length === 1 &&
[`reference`, `literal`, `constant`].includes(r[0].type) &&
(this.single = {
type: r[0].type === `reference` ? `reference` : `value`,
value: r[0].value,
}),
(this._parts = r.map((e) => {
if (e.type === `operator`)
return n.operatorsPrefix.includes(e.value) ? e : e.value;
if (e.type !== `reference`) return e.value;
if (this.settings.tokenRx && !this.settings.tokenRx.test(e.value))
throw Error(`Formula contains invalid reference ${e.value}`);
return this.settings.reference
? this.settings.reference(e.value)
: n.reference(e.value);
})));
}
_subFormula(e, r) {
let i = this.settings.functions[r];
if (typeof i != `function`)
throw Error(`Formula contains unknown function ${r}`);
let a = [];
if (e) {
let t = ``,
i = 0,
o = !1,
s = () => {
if (!t)
throw Error(
`Formula contains function ${r} with invalid arguments ${e}`,
);
(a.push(t), (t = ``));
};
for (let r = 0; r < e.length; ++r) {
let a = e[r];
o
? ((t += a), a === o && (o = !1))
: a in n.literals && !i
? ((t += a), (o = n.literals[a]))
: a !== `,` || i
? ((t += a), a === `(` ? ++i : a === `)` && --i)
: s();
}
s();
}
return (
(a = a.map((e) => new t.Parser(e, this.settings))),
function (e) {
let t = [];
for (let n of a) t.push(n.evaluate(e));
return i.call(e, ...t);
}
);
}
evaluate(e) {
let t = this._parts.slice();
for (let r = t.length - 2; r >= 0; --r) {
let i = t[r];
if (i && i.type === `operator`) {
let a = t[r + 1];
t.splice(r + 1, 1);
let o = n.evaluate(a, e);
t[r] = n.single(i.value, o);
}
}
return (
n.operatorsOrder.forEach((r) => {
for (let i = 1; i < t.length - 1;)
if (r.includes(t[i])) {
let r = t[i],
a = n.evaluate(t[i - 1], e),
o = n.evaluate(t[i + 1], e);
t.splice(i, 2);
let s = n.calculate(r, a, o);
t[i - 1] = s === 0 ? 0 : s;
} else i += 2;
}),
n.evaluate(t[0], e)
);
}
}),
(t.Parser.prototype[n.symbol] = !0),
(n.reference = function (e) {
return function (t) {
return t && t[e] !== void 0 ? t[e] : null;
};
}),
(n.evaluate = function (e, t) {
return e === null
? null
: typeof e == `function`
? e(t)
: e[n.symbol]
? e.evaluate(t)
: e;
}),
(n.single = function (e, t) {
if (e === `!`) return !t;
let n = -t;
return n === 0 ? 0 : n;
}),
(n.calculate = function (e, t, r) {
if (e === `??`) return n.exists(t) ? t : r;
if (typeof t == `string` || typeof r == `string`) {
if (e === `+`) return (t = n.exists(t) ? t : ``) + (n.exists(r) ? r : ``);
} else
switch (e) {
case `^`:
return t ** +r;
case `*`:
return t * r;
case `/`:
return t / r;
case `%`:
return t % r;
case `+`:
return t + r;
case `-`:
return t - r;
}
switch (e) {
case `<`:
return t < r;
case `<=`:
return t <= r;
case `>`:
return t > r;
case `>=`:
return t >= r;
case `==`:
return t === r;
case `!=`:
return t !== r;
case `&&`:
return t && r;
case `||`:
return t || r;
}
return null;
}),
(n.exists = function (e) {
return e != null;
}));
},
6084(e, t, n) {
let r = n(8253),
i = n(4126),
a = n(9315),
o = n(1528),
s = {};
((e.exports = function (e, t, n = {}) {
if (
(r(e && typeof e == `object`, `Invalid defaults value: must be an object`),
r(
!t || !0 === t || typeof t == `object`,
`Invalid source value: must be true, falsy or an object`,
),
r(typeof n == `object`, `Invalid options: must be an object`),
!t)
)
return null;
if (n.shallow) return s.applyToDefaultsWithShallow(e, t, n);
let o = i(e);
if (!0 === t) return o;
let c = n.nullOverride !== void 0 && n.nullOverride;
return a(o, t, { nullOverride: c, mergeArrays: !1 });
}),
(s.applyToDefaultsWithShallow = function (e, t, n) {
let c = n.shallow;
r(Array.isArray(c), `Invalid keys`);
let l = new Map(),
u = !0 === t ? null : new Set();
for (let n of c) {
n = Array.isArray(n) ? n : n.split(`.`);
let r = o(e, n);
r && typeof r == `object` ? l.set(r, (u && o(t, n)) || r) : u && u.add(n);
}
let d = i(e, {}, l);
if (!u) return d;
for (let e of u) s.reachCopy(d, t, e);
let f = n.nullOverride !== void 0 && n.nullOverride;
return a(d, t, { nullOverride: f, mergeArrays: !1 });
}),
(s.reachCopy = function (e, t, n) {
for (let e of n) {
if (!(e in t)) return;
let n = t[e];
if (typeof n != `object` || !n) return;
t = n;
}
let r = t,
i = e;
for (let e = 0; e < n.length - 1; ++e) {
let t = n[e];
(typeof i[t] != `object` && (i[t] = {}), (i = i[t]));
}
i[n[n.length - 1]] = r;
}));
},
8253(e, t, n) {
let r = n(1803),
i = n(8314),
a = (e.exports = function (e, ...t) {
if (e) return;
if (t.length === 1 && t[0] instanceof Error) throw t[0];
let n = t
.filter((e) => e !== ``)
.map((e) =>
typeof e == `string` ? e : e instanceof Error ? e.message : i(e),
);
throw new r(n.join(` `), a);
});
},
1803(e) {
e.exports = class extends Error {
constructor(e, t) {
var n, r, i;
(super(e || `Unknown error`),
(n = this),
(i = `AssertError`),
(r = (function (e) {
var t = (function (e) {
if (typeof e != `object` || !e) return e;
var t = e[Symbol.toPrimitive];
if (t !== void 0) {
var n = t.call(e, `string`);
if (typeof n != `object`) return n;
throw TypeError(`@@toPrimitive must return a primitive value.`);
}
return String(e);
})(e);
return typeof t == `symbol` ? t : t + ``;
})((r = `name`))) in n
? Object.defineProperty(n, r, {
value: i,
enumerable: !0,
configurable: !0,
writable: !0,
})
: (n[r] = i),
typeof Error.captureStackTrace == `function` &&
Error.captureStackTrace(this, t));
}
};
},
9145(e) {
let t = {};
e.exports = t.Bench = class {
constructor() {
((this.ts = 0), this.reset());
}
reset() {
this.ts = t.Bench.now();
}
elapsed() {
return t.Bench.now() - this.ts;
}
static now() {
let e = process.hrtime();
return 1e3 * e[0] + e[1] / 1e6;
}
};
},
3386(e, t, n) {
let r = n(9725);
e.exports = function () {
return new Promise(r);
};
},
4126(e, t, n) {
let r = n(1528),
i = n(3738),
a = n(86),
o = {
needsProtoHack: new Set([i.set, i.map, i.weakSet, i.weakMap]),
structuredCloneExists: typeof structuredClone == `function`,
};
((e.exports = o.clone =
function (e, t = {}, n = null) {
if (typeof e != `object` || !e) return e;
let r = o.clone,
s = n;
if (t.shallow) {
if (!0 !== t.shallow) return o.cloneWithShallow(e, t);
r = (e) => e;
} else if (s) {
let t = s.get(e);
if (t) return t;
} else s = new Map();
let c = i.getInternalProto(e);
switch (c) {
case i.buffer:
return (!1).from(e);
case i.date:
return new Date(e.getTime());
case i.regex:
case i.url:
return new c.constructor(e);
}
let l = o.base(e, c, t);
if (l === e) return e;
if ((s && s.set(e, l), c === i.set)) for (let n of e) l.add(r(n, t, s));
else if (c === i.map) for (let [n, i] of e) l.set(n, r(i, t, s));
let u = a.keys(e, t);
for (let n of u) {
if (n === `__proto__`) continue;
if (c === i.array && n === `length`) {
l.length = e.length;
continue;
}
if (o.structuredCloneExists && c === i.error && n === `stack`) continue;
let a = Object.getOwnPropertyDescriptor(e, n);
a
? a.get || a.set
? Object.defineProperty(l, n, a)
: a.enumerable
? (l[n] = r(e[n], t, s))
: Object.defineProperty(l, n, {
enumerable: !1,
writable: !0,
configurable: !0,
value: r(e[n], t, s),
})
: Object.defineProperty(l, n, {
enumerable: !0,
writable: !0,
configurable: !0,
value: r(e[n], t, s),
});
}
return l;
}),
(o.cloneWithShallow = function (e, t) {
let n = t.shallow;
(t = Object.assign({}, t)).shallow = !1;
let i = new Map();
for (let t of n) {
let n = r(e, t);
(typeof n != `object` && typeof n != `function`) || i.set(n, n);
}
return o.clone(e, t, i);
}),
(o.base = function (e, t, n) {
if (!1 === n.prototype)
return o.needsProtoHack.has(t)
? new t.constructor()
: t === i.array
? []
: {};
let r = Object.getPrototypeOf(e);
if (r && r.isImmutable) return e;
if (t === i.array) {
let e = [];
return (r !== t && Object.setPrototypeOf(e, r), e);
}
if (
t === i.error &&
o.structuredCloneExists &&
(r === t || Error.isPrototypeOf(r.constructor))
) {
let t = structuredClone(e);
return (Object.getPrototypeOf(t) !== r && Object.setPrototypeOf(t, r), t);
}
if (o.needsProtoHack.has(t)) {
let e = new r.constructor();
return (r !== t && Object.setPrototypeOf(e, r), e);
}
return Object.create(r);
}));
},
2847(e, t, n) {
let r = n(8253),
i = n(7125),
a = n(8669),
o = n(86),
s = {};
((e.exports = function (e, t, n = {}) {
return (
typeof t != `object` && (t = [t]),
r(!Array.isArray(t) || t.length, `Values array cannot be empty`),
typeof e == `string`
? s.string(e, t, n)
: Array.isArray(e)
? s.array(e, t, n)
: (r(typeof e == `object`, `Reference must be string or an object`),
s.object(e, t, n))
);
}),
(s.array = function (e, t, n) {
if (
(Array.isArray(t) || (t = [t]),
!e.length || (n.only && n.once && e.length !== t.length))
)
return !1;
let r,
i = new Map();
for (let e of t)
if (n.deep && e && typeof e == `object`) {
r ??= s.compare(n);
let t = !1;
for (let [n, a] of i.entries())
if (r(n, e)) {
(++a.allowed, (t = !0));
break;
}
t || i.set(e, { allowed: 1, hits: 0 });
} else {
let t = i.get(e);
t ? ++t.allowed : i.set(e, { allowed: 1, hits: 0 });
}
let a = 0;
for (let t of e) {
let e;
if (n.deep && t && typeof t == `object`) {
r ??= s.compare(n);
for (let [n, a] of i.entries())
if (r(n, t)) {
e = a;
break;
}
} else e = i.get(t);
if (e && (++e.hits, ++a, n.once && e.hits > e.allowed)) return !1;
}
if (n.only && a !== e.length) return !1;
for (let e of i.values())
if (e.hits !== e.allowed && e.hits < e.allowed && !n.part) return !1;
return !!a;
}),
(s.object = function (e, t, n) {
r(n.once === void 0, `Cannot use option once with object`);
let i = o.keys(e, n);
if (!i.length) return !1;
if (Array.isArray(t)) return s.array(i, t, n);
let a = Object.getOwnPropertySymbols(t).filter((e) =>
t.propertyIsEnumerable(e),
),
c = [...Object.keys(t), ...a],
l = s.compare(n),
u = new Set(c);
for (let r of i)
if (u.has(r)) {
if (!l(t[r], e[r])) return !1;
u.delete(r);
} else if (n.only) return !1;
return !u.size || (!!n.part && u.size < c.length);
}),
(s.string = function (e, t, n) {
if (e === ``)
return (
(t.length === 1 && t[0] === ``) || (!n.once && !t.some((e) => e !== ``))
);
let i = new Map(),
o = [];
for (let e of t)
if (
(r(
typeof e == `string`,
`Cannot compare string reference to non-string value`,
),
e)
) {
let t = i.get(e);
t ? ++t.allowed : (i.set(e, { allowed: 1, hits: 0 }), o.push(a(e)));
} else if (n.once || n.only) return !1;
if (!o.length) return !0;
let s = RegExp(`(${o.join(`|`)})`, `g`),
c = e.replace(s, (e, t) => (++i.get(t).hits, ``));
if (n.only && c) return !1;
let l = !1;
for (let e of i.values())
if (
(e.hits && (l = !0),
e.hits !== e.allowed && ((e.hits < e.allowed && !n.part) || n.once))
)
return !1;
return !!l;
}),
(s.compare = function (e) {
if (!e.deep) return s.shallow;
let t = e.only !== void 0,
n = e.part !== void 0,
r = {
prototype: t ? e.only : !!n && !e.part,
part: t ? !e.only : !!n && e.part,
};
return (e, t) => i(e, t, r);
}),
(s.shallow = function (e, t) {
return e === t;
}));
},
7125(e, t, n) {
let r = n(3738),
i = { mismatched: null };
((e.exports = function (e, t, n) {
return ((n = Object.assign({ prototype: !0 }, n)), !!i.isDeepEqual(e, t, n, []));
}),
(i.isDeepEqual = function (e, t, n, a) {
if (e === t) return e !== 0 || 1 / e == 1 / t;
let o = typeof e;
if (o !== typeof t || e === null || t === null) return !1;
if (o === `function`) {
if (!n.deepFunction || e.toString() !== t.toString()) return !1;
} else if (o !== `object`) return e != e && t != t;
let s = i.getSharedType(e, t, !!n.prototype);
switch (s) {
case r.buffer:
return !1;
case r.promise:
return e === t;
case r.regex:
case r.url:
return e.toString() === t.toString();
case i.mismatched:
return !1;
}
for (let n = a.length - 1; n >= 0; --n) if (a[n].isSame(e, t)) return !0;
a.push(new i.SeenEntry(e, t));
try {
return !!i.isDeepEqualObj(s, e, t, n, a);
} finally {
a.pop();
}
}),
(i.getSharedType = function (e, t, n) {
if (n)
return Object.getPrototypeOf(e) === Object.getPrototypeOf(t)
? r.getInternalProto(e)
: i.mismatched;
let a = r.getInternalProto(e);
return a === r.getInternalProto(t) ? a : i.mismatched;
}),
(i.valueOf = function (e) {
let t = e.valueOf;
if (t === void 0) return e;
try {
return t.call(e);
} catch (e) {
return e;
}
}),
(i.hasOwnEnumerableProperty = function (e, t) {
return Object.prototype.propertyIsEnumerable.call(e, t);
}),
(i.isSetSimpleEqual = function (e, t) {
for (let n of Set.prototype.values.call(e))
if (!Set.prototype.has.call(t, n)) return !1;
return !0;
}),
(i.isDeepEqualObj = function (e, t, n, a, o) {
let { isDeepEqual: s, valueOf: c, hasOwnEnumerableProperty: l } = i,
{ keys: u, getOwnPropertySymbols: d } = Object;
if (e === r.array) {
if (!a.part) {
if (t.length !== n.length) return !1;
for (let e = 0; e < t.length; ++e) if (!s(t[e], n[e], a, o)) return !1;
return !0;
}
for (let e of t) for (let t of n) if (s(e, t, a, o)) return !0;
} else if (e === r.set) {
if (t.size !== n.size) return !1;
if (!i.isSetSimpleEqual(t, n)) {
let e = new Set(Set.prototype.values.call(n));
for (let n of Set.prototype.values.call(t)) {
if (e.delete(n)) continue;
let t = !1;
for (let r of e)
if (s(n, r, a, o)) {
(e.delete(r), (t = !0));
break;
}
if (!t) return !1;
}
}
} else if (e === r.map) {
if (t.size !== n.size) return !1;
for (let [e, r] of Map.prototype.entries.call(t))
if (
(r === void 0 && !Map.prototype.has.call(n, e)) ||
!s(r, Map.prototype.get.call(n, e), a, o)
)
return !1;
} else if (e === r.error && (t.name !== n.name || t.message !== n.message))
return !1;
let f = c(t),
p = c(n);
if ((t !== f || n !== p) && !s(f, p, a, o)) return !1;
let m = u(t);
if (!a.part && m.length !== u(n).length && !a.skip) return !1;
let h = 0;
for (let e of m)
if (a.skip && a.skip.includes(e)) n[e] === void 0 && ++h;
else if (!l(n, e) || !s(t[e], n[e], a, o)) return !1;
if (!a.part && m.length - h !== u(n).length) return !1;
if (!1 !== a.symbols) {
let e = d(t),
r = new Set(d(n));
for (let i of e) {
var g;
if ((g = a.skip) == null || !g.includes(i)) {
if (l(t, i)) {
if (!l(n, i) || !s(t[i], n[i], a, o)) return !1;
} else if (l(n, i)) return !1;
}
r.delete(i);
}
for (let e of r) if (l(n, e)) return !1;
}
return !0;
}),
(i.SeenEntry = class {
constructor(e, t) {
((this.obj = e), (this.ref = t));
}
isSame(e, t) {
return this.obj === e && this.ref === t;
}
}));
},
9241(e, t, n) {
let r = n(8253);
e.exports = function (e) {
return (
r(
/^[ \w\!#\$%&'\(\)\*\+,\-\.\/\:;<\=>\?@\[\]\^`\{\|\}~\"\\]*$/.test(e),
`Bad attribute value (` + e + `)`,
),
e.replace(/\\/g, `\\\\`).replace(/\"/g, `\\"`)
);
};
},
8121(e) {
let t = {};
((e.exports = function (e) {
if (!e) return ``;
let n = ``;
for (let r = 0; r < e.length; ++r) {
let i = e.charCodeAt(r);
t.isSafe(i) ? (n += e[r]) : (n += t.escapeHtmlChar(i));
}
return n;
}),
(t.escapeHtmlChar = function (e) {
return (
t.namedHtml.get(e) ||
(e >= 256 ? `&#` + e + `;` : `&#x${e.toString(16).padStart(2, `0`)};`)
);
}),
(t.isSafe = function (e) {
return t.safeCharCodes.has(e);
}),
(t.namedHtml = new Map([
[38, `&`],
[60, `<`],
[62, `>`],
[34, `"`],
[160, ` `],
[162, `¢`],
[163, `£`],
[164, `¤`],
[169, `©`],
[174, `®`],
])),
(t.safeCharCodes = (function () {
let e = new Set();
for (let t = 32; t < 123; ++t)
(t >= 97 ||
(t >= 65 && t <= 90) ||
(t >= 48 && t <= 57) ||
t === 32 ||
t === 46 ||
t === 44 ||
t === 45 ||
t === 58 ||
t === 95) &&
e.add(t);
return e;
})()));
},
5570(e) {
let t = {};
((e.exports = function (e) {
return e ? e.replace(/[<>&\u2028\u2029]/g, t.escape) : ``;
}),
(t.escape = function (e) {
return t.replacements.get(e);
}),
(t.replacements = new Map([
[`<`, `\\u003c`],
[`>`, `\\u003e`],
[`&`, `\\u0026`],
[`\u2028`, `\\u2028`],
[`\u2029`, `\\u2029`],
])));
},
8669(e) {
e.exports = function (e) {
return e.replace(/[\^\$\.\*\+\-\?\=\!\:\|\\\/\(\)\[\]\{\}\,]/g, `\\$&`);
};
},
5553(e) {
let t = {};
e.exports = t.flatten = function (e, n) {
let r = n || [];
for (let n of e) Array.isArray(n) ? t.flatten(n, r) : r.push(n);
return r;
};
},
9725(e) {
e.exports = function () {};
},
3115(e, t, n) {
((t.applyToDefaults = n(6084)),
(t.assert = n(8253)),
(t.AssertError = n(1803)),
n(9145),
n(3386),
(t.clone = n(4126)),
n(2847),
(t.deepEqual = n(7125)),
n(9241),
(t.escapeHtml = n(8121)),
n(5570),
(t.escapeRegex = n(8669)),
n(5553),
(t.ignore = n(9725)),
n(3110),
n(834),
(t.merge = n(9315)),
n(8762),
(t.reach = n(1528)),
n(1626),
n(8314),
n(7858));
},
3110(e) {
let t = {};
((e.exports = function (e, n, r = {}) {
if (!e || !n) return r.first ? null : [];
let i = [],
a = Array.isArray(e) ? new Set(e) : e,
o = new Set();
for (let e of n)
if (t.has(a, e) && !o.has(e)) {
if (r.first) return e;
(i.push(e), o.add(e));
}
return r.first ? null : i;
}),
(t.has = function (e, t) {
return typeof e.has == `function` ? e.has(t) : e[t] !== void 0;
}));
},
834(e) {
e.exports = function (e) {
return typeof e?.then == `function`;
};
},
9315(e, t, n) {
let r = n(8253),
i = n(4126),
a = n(86),
o = {};
e.exports = o.merge = function (e, t, n) {
if (
(r(e && typeof e == `object`, `Invalid target value: must be an object`),
r(
t == null || typeof t == `object`,
`Invalid source value: must be null, undefined, or an object`,
),
!t)
)
return e;
if (
((n = Object.assign({ nullOverride: !0, mergeArrays: !0 }, n)),
Array.isArray(t))
) {
(r(Array.isArray(e), `Cannot merge array onto an object`),
n.mergeArrays || (e.length = 0));
for (let r = 0; r < t.length; ++r) e.push(i(t[r], { symbols: n.symbols }));
return e;
}
let s = a.keys(t, n);
for (let r = 0; r < s.length; ++r) {
let a = s[r];
if (a === `__proto__` || !Object.prototype.propertyIsEnumerable.call(t, a))
continue;
let c = t[a];
if (c && typeof c == `object`) {
if (e[a] === c) continue;
!e[a] ||
typeof e[a] != `object` ||
Array.isArray(e[a]) !== Array.isArray(c) ||
c instanceof Date ||
c instanceof RegExp
? (e[a] = i(c, { symbols: n.symbols }))
: o.merge(e[a], c, n);
} else (c != null || n.nullOverride) && (e[a] = c);
}
return e;
};
},
8762(e) {
let t = Symbol(`wrapped`);
e.exports = function (e) {
if (e[t]) return e;
let n = !1,
r = function (...t) {
n || ((n = !0), e(...t));
};
return ((r[t] = !0), r);
};
},
1528(e, t, n) {
let r = n(8253),
i = {};
((e.exports = function (e, t, n) {
if (!1 === t || t == null) return e;
typeof (n ||= {}) == `string` && (n = { separator: n });
let a = Array.isArray(t);
r(!a || !n.separator, `Separator option is not valid for array-based chain`);
let o = a ? t : t.split(n.separator || `.`),
s = e;
for (let e = 0; e < o.length; ++e) {
let a = o[e],
c = n.iterables && i.iterables(s);
if (Array.isArray(s) || c === `set`) {
let e = Number(a);
Number.isInteger(e) && (a = e < 0 ? s.length + e : e);
}
if (
!s ||
(typeof s == `function` && !1 === n.functions) ||
(!c && s[a] === void 0)
) {
(r(
!n.strict || e + 1 === o.length,
`Missing segment`,
a,
`in reach path `,
t,
),
r(
typeof s == `object` || !0 === n.functions || typeof s != `function`,
`Invalid segment`,
a,
`in reach path `,
t,
),
(s = n.default));
break;
}
s = c ? (c === `set` ? [...s][a] : s.get(a)) : s[a];
}
return s;
}),
(i.iterables = function (e) {
return e instanceof Set ? `set` : e instanceof Map ? `map` : void 0;
}));
},
1626(e, t, n) {
let r = n(1528);
e.exports = function (e, t, n) {
return t.replace(/{([^{}]+)}/g, (t, i) => r(e, i, n) ?? ``);
};
},
8314(e) {
e.exports = function (...e) {
try {
return JSON.stringify(...e);
} catch (e) {
return `[Cannot display object: ` + e.message + `]`;
}
};
},
3738(e, t) {
let n = {};
((t = e.exports =
{
array: Array.prototype,
buffer: !1,
date: Date.prototype,
error: Error.prototype,
generic: Object.prototype,
map: Map.prototype,
promise: Promise.prototype,
regex: RegExp.prototype,
set: Set.prototype,
url: URL.prototype,
weakMap: WeakMap.prototype,
weakSet: WeakSet.prototype,
}),
(n.typeMap = new Map([
[`[object Error]`, t.error],
[`[object Map]`, t.map],
[`[object Promise]`, t.promise],
[`[object Set]`, t.set],
[`[object URL]`, t.url],
[`[object WeakMap]`, t.weakMap],
[`[object WeakSet]`, t.weakSet],
])),
(t.getInternalProto = function (e) {
if (Array.isArray(e)) return t.array;
if (e instanceof Date) return t.date;
if (e instanceof RegExp) return t.regex;
if (e instanceof Error) return t.error;
let r = Object.prototype.toString.call(e);
return n.typeMap.get(r) || t.generic;
}));
},
86(e, t) {
t.keys = function (e, t = {}) {
return !1 === t.symbols ? Object.getOwnPropertyNames(e) : Reflect.ownKeys(e);
};
},
7858(e) {
e.exports = function (e, t, n) {
if (
(typeof e == `bigint` && (e = Number(e)),
e >= 2 ** 53 - 1 && (e = 1 / 0),
typeof e != `number` && e !== void 0)
)
throw TypeError(`Timeout must be a number or bigint`);
return new Promise((r) => {
let i = n ? n.setTimeout : setTimeout,
a = () => {
let n = Math.min(e, 2147483647);
((e -= n), i(() => (e > 0 ? a() : r(t)), n));
};
e !== 1 / 0 && a();
});
};
},
8248(e, t, n) {
let { assert: r } = n(3115),
i = {};
((t.Sorter = class {
constructor() {
((this._items = []), (this.nodes = []));
}
add(e, t) {
let n = [].concat((t ??= {}).before ?? []),
i = [].concat(t.after ?? []),
a = t.group ?? `?`,
o = t.sort ?? 0;
(r(!n.includes(a), `Item cannot come before itself: ${a}`),
r(!n.includes(`?`), `Item cannot come before unassociated items`),
r(!i.includes(a), `Item cannot come after itself: ${a}`),
r(!i.includes(`?`), `Item cannot come after unassociated items`),
Array.isArray(e) || (e = [e]));
for (let t of e) {
let e = {
seq: this._items.length,
sort: o,
before: n,
after: i,
group: a,
node: t,
};
this._items.push(e);
}
if (!t.manual) {
let e = this._sort();
r(
e,
`item`,
a === `?` ? `` : `added into group ${a}`,
`created a dependencies error`,
);
}
return this.nodes;
}
merge(e) {
Array.isArray(e) || (e = [e]);
for (let t of e)
if (t) for (let e of t._items) this._items.push(Object.assign({}, e));
this._items.sort(i.mergeSort);
for (let e = 0; e < this._items.length; ++e) this._items[e].seq = e;
let t = this._sort();
return (r(t, `merge created a dependencies error`), this.nodes);
}
sort() {
let e = this._sort();
return (r(e, `sort created a dependencies error`), this.nodes);
}
_sort() {
let e = {},
t = Object.create(null),
n = Object.create(null);
for (let r of this._items) {
let i = r.seq,
a = r.group;
((n[a] = n[a] ?? []), n[a].push(i), (e[i] = r.before));
for (let e of r.after) ((t[e] = t[e] ?? []), t[e].push(i));
}
for (let t in e) {
let r = [];
for (let i in e[t]) {
let a = e[t][i];
((n[a] = n[a] ?? []), r.push(...n[a]));
}
e[t] = r;
}
for (let r in t) if (n[r]) for (let i of n[r]) e[i].push(...t[r]);
let r = {};
for (let t in e) {
let n = e[t];
for (let e of n) ((r[e] = r[e] ?? []), r[e].push(t));
}
let i = {},
a = [];
for (let e = 0; e < this._items.length; ++e) {
let t = e;
if (r[e]) {
t = null;
for (let e = 0; e < this._items.length; ++e) {
if (!0 === i[e]) continue;
r[e] || (r[e] = []);
let n = r[e].length,
a = 0;
for (let t = 0; t < n; ++t) i[r[e][t]] && ++a;
if (a === n) {
t = e;
break;
}
}
}
t !== null && ((i[t] = !0), a.push(t));
}
if (a.length !== this._items.length) return !1;
let o = {};
for (let e of this._items) o[e.seq] = e;
((this._items = []), (this.nodes = []));
for (let e of a) {
let t = o[e];
(this.nodes.push(t.node), this._items.push(t));
}
return !0;
}
}),
(i.mergeSort = (e, t) => (e.sort === t.sort ? 0 : e.sort < t.sort ? -1 : 1)));
},
554() {},
9017() {},
125() {},
8663() {},
6984() {},
7368(e, t, n) {
t.tlds = void 0;
let r = n(1044);
t.tlds = new Set(r.TLDS.map((e) => e.toLowerCase()));
},
1044(e, t) {
((t.TLDS = void 0),
(t.TLDS =
`AAA.AARP.ABB.ABBOTT.ABBVIE.ABC.ABLE.ABOGADO.ABUDHABI.AC.ACADEMY.ACCENTURE.ACCOUNTANT.ACCOUNTANTS.ACO.ACTOR.AD.ADS.ADULT.AE.AEG.AERO.AETNA.AF.AFL.AFRICA.AG.AGAKHAN.AGENCY.AI.AIG.AIRBUS.AIRFORCE.AIRTEL.AKDN.AL.ALIBABA.ALIPAY.ALLFINANZ.ALLSTATE.ALLY.ALSACE.ALSTOM.AM.AMAZON.AMERICANEXPRESS.AMERICANFAMILY.AMEX.AMFAM.AMICA.AMSTERDAM.ANALYTICS.ANDROID.ANQUAN.ANZ.AO.AOL.APARTMENTS.APP.APPLE.AQ.AQUARELLE.AR.ARAB.ARAMCO.ARCHI.ARMY.ARPA.ART.ARTE.AS.ASDA.ASIA.ASSOCIATES.AT.ATHLETA.ATTORNEY.AU.AUCTION.AUDI.AUDIBLE.AUDIO.AUSPOST.AUTHOR.AUTO.AUTOS.AW.AWS.AX.AXA.AZ.AZURE.BA.BABY.BAIDU.BANAMEX.BAND.BANK.BAR.BARCELONA.BARCLAYCARD.BARCLAYS.BAREFOOT.BARGAINS.BASEBALL.BASKETBALL.BAUHAUS.BAYERN.BB.BBC.BBT.BBVA.BCG.BCN.BD.BE.BEATS.BEAUTY.BEER.BERLIN.BEST.BESTBUY.BET.BF.BG.BH.BHARTI.BI.BIBLE.BID.BIKE.BING.BINGO.BIO.BIZ.BJ.BLACK.BLACKFRIDAY.BLOCKBUSTER.BLOG.BLOOMBERG.BLUE.BM.BMS.BMW.BN.BNPPARIBAS.BO.BOATS.BOEHRINGER.BOFA.BOM.BOND.BOO.BOOK.BOOKING.BOSCH.BOSTIK.BOSTON.BOT.BOUTIQUE.BOX.BR.BRADESCO.BRIDGESTONE.BROADWAY.BROKER.BROTHER.BRUSSELS.BS.BT.BUILD.BUILDERS.BUSINESS.BUY.BUZZ.BV.BW.BY.BZ.BZH.CA.CAB.CAFE.CAL.CALL.CALVINKLEIN.CAM.CAMERA.CAMP.CANON.CAPETOWN.CAPITAL.CAPITALONE.CAR.CARAVAN.CARDS.CARE.CAREER.CAREERS.CARS.CASA.CASE.CASH.CASINO.CAT.CATERING.CATHOLIC.CBA.CBN.CBRE.CC.CD.CENTER.CEO.CERN.CF.CFA.CFD.CG.CH.CHANEL.CHANNEL.CHARITY.CHASE.CHAT.CHEAP.CHINTAI.CHRISTMAS.CHROME.CHURCH.CI.CIPRIANI.CIRCLE.CISCO.CITADEL.CITI.CITIC.CITY.CK.CL.CLAIMS.CLEANING.CLICK.CLINIC.CLINIQUE.CLOTHING.CLOUD.CLUB.CLUBMED.CM.CN.CO.COACH.CODES.COFFEE.COLLEGE.COLOGNE.COM.COMMBANK.COMMUNITY.COMPANY.COMPARE.COMPUTER.COMSEC.CONDOS.CONSTRUCTION.CONSULTING.CONTACT.CONTRACTORS.COOKING.COOL.COOP.CORSICA.COUNTRY.COUPON.COUPONS.COURSES.CPA.CR.CREDIT.CREDITCARD.CREDITUNION.CRICKET.CROWN.CRS.CRUISE.CRUISES.CU.CUISINELLA.CV.CW.CX.CY.CYMRU.CYOU.CZ.DAD.DANCE.DATA.DATE.DATING.DATSUN.DAY.DCLK.DDS.DE.DEAL.DEALER.DEALS.DEGREE.DELIVERY.DELL.DELOITTE.DELTA.DEMOCRAT.DENTAL.DENTIST.DESI.DESIGN.DEV.DHL.DIAMONDS.DIET.DIGITAL.DIRECT.DIRECTORY.DISCOUNT.DISCOVER.DISH.DIY.DJ.DK.DM.DNP.DO.DOCS.DOCTOR.DOG.DOMAINS.DOT.DOWNLOAD.DRIVE.DTV.DUBAI.DUPONT.DURBAN.DVAG.DVR.DZ.EARTH.EAT.EC.ECO.EDEKA.EDU.EDUCATION.EE.EG.EMAIL.EMERCK.ENERGY.ENGINEER.ENGINEERING.ENTERPRISES.EPSON.EQUIPMENT.ER.ERICSSON.ERNI.ES.ESQ.ESTATE.ET.EU.EUROVISION.EUS.EVENTS.EXCHANGE.EXPERT.EXPOSED.EXPRESS.EXTRASPACE.FAGE.FAIL.FAIRWINDS.FAITH.FAMILY.FAN.FANS.FARM.FARMERS.FASHION.FAST.FEDEX.FEEDBACK.FERRARI.FERRERO.FI.FIDELITY.FIDO.FILM.FINAL.FINANCE.FINANCIAL.FIRE.FIRESTONE.FIRMDALE.FISH.FISHING.FIT.FITNESS.FJ.FK.FLICKR.FLIGHTS.FLIR.FLORIST.FLOWERS.FLY.FM.FO.FOO.FOOD.FOOTBALL.FORD.FOREX.FORSALE.FORUM.FOUNDATION.FOX.FR.FREE.FRESENIUS.FRL.FROGANS.FRONTIER.FTR.FUJITSU.FUN.FUND.FURNITURE.FUTBOL.FYI.GA.GAL.GALLERY.GALLO.GALLUP.GAME.GAMES.GAP.GARDEN.GAY.GB.GBIZ.GD.GDN.GE.GEA.GENT.GENTING.GEORGE.GF.GG.GGEE.GH.GI.GIFT.GIFTS.GIVES.GIVING.GL.GLASS.GLE.GLOBAL.GLOBO.GM.GMAIL.GMBH.GMO.GMX.GN.GODADDY.GOLD.GOLDPOINT.GOLF.GOODYEAR.GOOG.GOOGLE.GOP.GOT.GOV.GP.GQ.GR.GRAINGER.GRAPHICS.GRATIS.GREEN.GRIPE.GROCERY.GROUP.GS.GT.GU.GUCCI.GUGE.GUIDE.GUITARS.GURU.GW.GY.HAIR.HAMBURG.HANGOUT.HAUS.HBO.HDFC.HDFCBANK.HEALTH.HEALTHCARE.HELP.HELSINKI.HERE.HERMES.HIPHOP.HISAMITSU.HITACHI.HIV.HK.HKT.HM.HN.HOCKEY.HOLDINGS.HOLIDAY.HOMEDEPOT.HOMEGOODS.HOMES.HOMESENSE.HONDA.HORSE.HOSPITAL.HOST.HOSTING.HOT.HOTELS.HOTMAIL.HOUSE.HOW.HR.HSBC.HT.HU.HUGHES.HYATT.HYUNDAI.IBM.ICBC.ICE.ICU.ID.IE.IEEE.IFM.IKANO.IL.IM.IMAMAT.IMDB.IMMO.IMMOBILIEN.IN.INC.INDUSTRIES.INFINITI.INFO.ING.INK.INSTITUTE.INSURANCE.INSURE.INT.INTERNATIONAL.INTUIT.INVESTMENTS.IO.IPIRANGA.IQ.IR.IRISH.IS.ISMAILI.IST.ISTANBUL.IT.ITAU.ITV.JAGUAR.JAVA.JCB.JE.JEEP.JETZT.JEWELRY.JIO.JLL.JM.JMP.JNJ.JO.JOBS.JOBURG.JOT.JOY.JP.JPMORGAN.JPRS.JUEGOS.JUNIPER.KAUFEN.KDDI.KE.KERRYHOTELS.KERRYPROPERTIES.KFH.KG.KH.KI.KIA.KIDS.KIM.KINDLE.KITCHEN.KIWI.KM.KN.KOELN.KOMATSU.KOSHER.KP.KPMG.KPN.KR.KRD.KRED.KUOKGROUP.KW.KY.KYOTO.KZ.LA.LACAIXA.LAMBORGHINI.LAMER.LAND.LANDROVER.LANXESS.LASALLE.LAT.LATINO.LATROBE.LAW.LAWYER.LB.LC.LDS.LEASE.LECLERC.LEFRAK.LEGAL.LEGO.LEXUS.LGBT.LI.LIDL.LIFE.LIFEINSURANCE.LIFESTYLE.LIGHTING.LIKE.LILLY.LIMITED.LIMO.LINCOLN.LINK.LIVE.LIVING.LK.LLC.LLP.LOAN.LOANS.LOCKER.LOCUS.LOL.LONDON.LOTTE.LOTTO.LOVE.LPL.LPLFINANCIAL.LR.LS.LT.LTD.LTDA.LU.LUNDBECK.LUXE.LUXURY.LV.LY.MA.MADRID.MAIF.MAISON.MAKEUP.MAN.MANAGEMENT.MANGO.MAP.MARKET.MARKETING.MARKETS.MARRIOTT.MARSHALLS.MATTEL.MBA.MC.MCKINSEY.MD.ME.MED.MEDIA.MEET.MELBOURNE.MEME.MEMORIAL.MEN.MENU.MERCK.MERCKMSD.MG.MH.MIAMI.MICROSOFT.MIL.MINI.MINT.MIT.MITSUBISHI.MK.ML.MLB.MLS.MM.MMA.MN.MO.MOBI.MOBILE.MODA.MOE.MOI.MOM.MONASH.MONEY.MONSTER.MORMON.MORTGAGE.MOSCOW.MOTO.MOTORCYCLES.MOV.MOVIE.MP.MQ.MR.MS.MSD.MT.MTN.MTR.MU.MUSEUM.MUSIC.MV.MW.MX.MY.MZ.NA.NAB.NAGOYA.NAME.NAVY.NBA.NC.NE.NEC.NET.NETBANK.NETFLIX.NETWORK.NEUSTAR.NEW.NEWS.NEXT.NEXTDIRECT.NEXUS.NF.NFL.NG.NGO.NHK.NI.NICO.NIKE.NIKON.NINJA.NISSAN.NISSAY.NL.NO.NOKIA.NORTON.NOW.NOWRUZ.NOWTV.NP.NR.NRA.NRW.NTT.NU.NYC.NZ.OBI.OBSERVER.OFFICE.OKINAWA.OLAYAN.OLAYANGROUP.OLLO.OM.OMEGA.ONE.ONG.ONL.ONLINE.OOO.OPEN.ORACLE.ORANGE.ORG.ORGANIC.ORIGINS.OSAKA.OTSUKA.OTT.OVH.PA.PAGE.PANASONIC.PARIS.PARS.PARTNERS.PARTS.PARTY.PAY.PCCW.PE.PET.PF.PFIZER.PG.PH.PHARMACY.PHD.PHILIPS.PHONE.PHOTO.PHOTOGRAPHY.PHOTOS.PHYSIO.PICS.PICTET.PICTURES.PID.PIN.PING.PINK.PIONEER.PIZZA.PK.PL.PLACE.PLAY.PLAYSTATION.PLUMBING.PLUS.PM.PN.PNC.POHL.POKER.POLITIE.PORN.POST.PR.PRAXI.PRESS.PRIME.PRO.PROD.PRODUCTIONS.PROF.PROGRESSIVE.PROMO.PROPERTIES.PROPERTY.PROTECTION.PRU.PRUDENTIAL.PS.PT.PUB.PW.PWC.PY.QA.QPON.QUEBEC.QUEST.RACING.RADIO.RE.READ.REALESTATE.REALTOR.REALTY.RECIPES.RED.REDUMBRELLA.REHAB.REISE.REISEN.REIT.RELIANCE.REN.RENT.RENTALS.REPAIR.REPORT.REPUBLICAN.REST.RESTAURANT.REVIEW.REVIEWS.REXROTH.RICH.RICHARDLI.RICOH.RIL.RIO.RIP.RO.ROCKS.RODEO.ROGERS.ROOM.RS.RSVP.RU.RUGBY.RUHR.RUN.RW.RWE.RYUKYU.SA.SAARLAND.SAFE.SAFETY.SAKURA.SALE.SALON.SAMSCLUB.SAMSUNG.SANDVIK.SANDVIKCOROMANT.SANOFI.SAP.SARL.SAS.SAVE.SAXO.SB.SBI.SBS.SC.SCB.SCHAEFFLER.SCHMIDT.SCHOLARSHIPS.SCHOOL.SCHULE.SCHWARZ.SCIENCE.SCOT.SD.SE.SEARCH.SEAT.SECURE.SECURITY.SEEK.SELECT.SENER.SERVICES.SEVEN.SEW.SEX.SEXY.SFR.SG.SH.SHANGRILA.SHARP.SHELL.SHIA.SHIKSHA.SHOES.SHOP.SHOPPING.SHOUJI.SHOW.SI.SILK.SINA.SINGLES.SITE.SJ.SK.SKI.SKIN.SKY.SKYPE.SL.SLING.SM.SMART.SMILE.SN.SNCF.SO.SOCCER.SOCIAL.SOFTBANK.SOFTWARE.SOHU.SOLAR.SOLUTIONS.SONG.SONY.SOY.SPA.SPACE.SPORT.SPOT.SR.SRL.SS.ST.STADA.STAPLES.STAR.STATEBANK.STATEFARM.STC.STCGROUP.STOCKHOLM.STORAGE.STORE.STREAM.STUDIO.STUDY.STYLE.SU.SUCKS.SUPPLIES.SUPPLY.SUPPORT.SURF.SURGERY.SUZUKI.SV.SWATCH.SWISS.SX.SY.SYDNEY.SYSTEMS.SZ.TAB.TAIPEI.TALK.TAOBAO.TARGET.TATAMOTORS.TATAR.TATTOO.TAX.TAXI.TC.TCI.TD.TDK.TEAM.TECH.TECHNOLOGY.TEL.TEMASEK.TENNIS.TEVA.TF.TG.TH.THD.THEATER.THEATRE.TIAA.TICKETS.TIENDA.TIPS.TIRES.TIROL.TJ.TJMAXX.TJX.TK.TKMAXX.TL.TM.TMALL.TN.TO.TODAY.TOKYO.TOOLS.TOP.TORAY.TOSHIBA.TOTAL.TOURS.TOWN.TOYOTA.TOYS.TR.TRADE.TRADING.TRAINING.TRAVEL.TRAVELERS.TRAVELERSINSURANCE.TRUST.TRV.TT.TUBE.TUI.TUNES.TUSHU.TV.TVS.TW.TZ.UA.UBANK.UBS.UG.UK.UNICOM.UNIVERSITY.UNO.UOL.UPS.US.UY.UZ.VA.VACATIONS.VANA.VANGUARD.VC.VE.VEGAS.VENTURES.VERISIGN.VERSICHERUNG.VET.VG.VI.VIAJES.VIDEO.VIG.VIKING.VILLAS.VIN.VIP.VIRGIN.VISA.VISION.VIVA.VIVO.VLAANDEREN.VN.VODKA.VOLVO.VOTE.VOTING.VOTO.VOYAGE.VU.WALES.WALMART.WALTER.WANG.WANGGOU.WATCH.WATCHES.WEATHER.WEATHERCHANNEL.WEBCAM.WEBER.WEBSITE.WED.WEDDING.WEIBO.WEIR.WF.WHOSWHO.WIEN.WIKI.WILLIAMHILL.WIN.WINDOWS.WINE.WINNERS.WME.WOODSIDE.WORK.WORKS.WORLD.WOW.WS.WTC.WTF.XBOX.XEROX.XIHUAN.XIN.XN--11B4C3D.XN--1CK2E1B.XN--1QQW23A.XN--2SCRJ9C.XN--30RR7Y.XN--3BST00M.XN--3DS443G.XN--3E0B707E.XN--3HCRJ9C.XN--3PXU8K.XN--42C2D9A.XN--45BR5CYL.XN--45BRJ9C.XN--45Q11C.XN--4DBRK0CE.XN--4GBRIM.XN--54B7FTA0CC.XN--55QW42G.XN--55QX5D.XN--5SU34J936BGSG.XN--5TZM5G.XN--6FRZ82G.XN--6QQ986B3XL.XN--80ADXHKS.XN--80AO21A.XN--80AQECDR1A.XN--80ASEHDB.XN--80ASWG.XN--8Y0A063A.XN--90A3AC.XN--90AE.XN--90AIS.XN--9DBQ2A.XN--9ET52U.XN--9KRT00A.XN--B4W605FERD.XN--BCK1B9A5DRE4C.XN--C1AVG.XN--C2BR7G.XN--CCK2B3B.XN--CCKWCXETD.XN--CG4BKI.XN--CLCHC0EA0B2G2A9GCD.XN--CZR694B.XN--CZRS0T.XN--CZRU2D.XN--D1ACJ3B.XN--D1ALF.XN--E1A4C.XN--ECKVDTC9D.XN--EFVY88H.XN--FCT429K.XN--FHBEI.XN--FIQ228C5HS.XN--FIQ64B.XN--FIQS8S.XN--FIQZ9S.XN--FJQ720A.XN--FLW351E.XN--FPCRJ9C3D.XN--FZC2C9E2C.XN--FZYS8D69UVGM.XN--G2XX48C.XN--GCKR3F0F.XN--GECRJ9C.XN--GK3AT1E.XN--H2BREG3EVE.XN--H2BRJ9C.XN--H2BRJ9C8C.XN--HXT814E.XN--I1B6B1A6A2E.XN--IMR513N.XN--IO0A7I.XN--J1AEF.XN--J1AMH.XN--J6W193G.XN--JLQ480N2RG.XN--JVR189M.XN--KCRX77D1X4A.XN--KPRW13D.XN--KPRY57D.XN--KPUT3I.XN--L1ACC.XN--LGBBAT1AD8J.XN--MGB9AWBF.XN--MGBA3A3EJT.XN--MGBA3A4F16A.XN--MGBA7C0BBN0A.XN--MGBAAM7A8H.XN--MGBAB2BD.XN--MGBAH1A3HJKRD.XN--MGBAI9AZGQP6J.XN--MGBAYH7GPA.XN--MGBBH1A.XN--MGBBH1A71E.XN--MGBC0A9AZCG.XN--MGBCA7DZDO.XN--MGBCPQ6GPA1A.XN--MGBERP4A5D4AR.XN--MGBGU82A.XN--MGBI4ECEXP.XN--MGBPL2FH.XN--MGBT3DHD.XN--MGBTX2B.XN--MGBX4CD0AB.XN--MIX891F.XN--MK1BU44C.XN--MXTQ1M.XN--NGBC5AZD.XN--NGBE9E0A.XN--NGBRX.XN--NODE.XN--NQV7F.XN--NQV7FS00EMA.XN--NYQY26A.XN--O3CW4H.XN--OGBPF8FL.XN--OTU796D.XN--P1ACF.XN--P1AI.XN--PGBS0DH.XN--PSSY2U.XN--Q7CE6A.XN--Q9JYB4C.XN--QCKA1PMC.XN--QXA6A.XN--QXAM.XN--RHQV96G.XN--ROVU88B.XN--RVC1E0AM3E.XN--S9BRJ9C.XN--SES554G.XN--T60B56A.XN--TCKWE.XN--TIQ49XQYJ.XN--UNUP4Y.XN--VERMGENSBERATER-CTB.XN--VERMGENSBERATUNG-PWB.XN--VHQUV.XN--VUQ861B.XN--W4R85EL8FHU5DNRA.XN--W4RS40L.XN--WGBH1C.XN--WGBL6A.XN--XHQ521B.XN--XKC2AL3HYE2A.XN--XKC2DL3A5EE0H.XN--Y9A3AQ.XN--YFRO4I67O.XN--YGBI2AMMX.XN--ZFR164B.XXX.XYZ.YACHTS.YAHOO.YAMAXUN.YANDEX.YE.YODOBASHI.YOGA.YOKOHAMA.YOU.YOUTUBE.YT.YUN.ZA.ZAPPOS.ZARA.ZERO.ZIP.ZM.ZONE.ZUERICH.ZW`.split(
`.`,
)));
},
6913(e) {
e.exports = { version: `18.2.3` };
},
},
t = {};
function n(r) {
var i = t[r];
if (i !== void 0) return i.exports;
var a = (t[r] = { exports: {} });
return (e[r](a, a.exports, n), a.exports);
}
return (
(n.n = (e) => {
var t = e && e.__esModule ? () => e.default : () => e;
return (n.d(t, { a: t }), t);
}),
(n.d = (e, t) => {
for (var r in t)
n.o(t, r) &&
!n.o(e, r) &&
Object.defineProperty(e, r, { enumerable: !0, get: t[r] });
}),
(n.o = (e, t) => Object.prototype.hasOwnProperty.call(e, t)),
n(1100)
);
})(),
);
})(),
1,
);
const l = c.default.object({
id: c.default.number().required(),
created: c.default.date().required(),
title: c.default.string().min(1).max(100).required(),
type: c.default.string().valid(`jpg`, `png`).required(),
size: c.default.number().required(),
url: c.default.string().uri().required(),
}),
u = c.default.object({
id: c.default.number().required(),
stars: c.default.number().min(0).max(5).required(),
title: c.default.string().min(1).max(100).required(),
text: c.default.string().min(1).max(1e3).required(),
images: c.default.array().items(l).required(),
});
c.default
.object({
id: c.default.number().required(),
created: c.default.date().required(),
title: c.default.string().min(1).max(100).required(),
brand: c.default.string().min(1).max(30).required(),
description: c.default.string().min(1).max(500).required(),
price: c.default.number().min(1).max(1e4).required(),
discount: c.default.number().min(1).max(100).allow(null).required(),
quantity: c.default.number().min(0).max(10).required(),
tags: c.default.array().items(c.default.string().min(1).max(30)).required(),
images: c.default.array().items(l).required(),
ratings: c.default.array().items(u).required(),
})
.validate({});