UNPKG

lakutata

Version:

An IoC-based universal application framework.

1,853 lines (1,692 loc) 392 kB
/* Build Date: Mon Jan 05 2026 23:52:23 GMT+0800 (China Standard Time) */ import { a as e, g as t, c as r } from "../../../vendor/Package.internal.2.mjs"; import * as n from "url"; import * as s from "util"; import { InvalidValueException as i } from "../../exceptions/dto/InvalidValueException.mjs"; import { As as a } from "../helpers/As.mjs"; import "../base/abstracts/Exception.mjs"; import "../../../vendor/Package.internal.5.mjs"; import "../../../vendor/Package.internal.6.mjs"; import "../base/internal/ThrowWarning.mjs"; import "../helpers/Templating.mjs"; import "../base/internal/CamelCase.mjs"; import "../helpers/NoCase.mjs"; import "../helpers/DevNull.mjs"; var o = {}; var l = { exports: {} }; var u = class AssertError extends Error { name="AssertError"; constructor(e, t) { super(e || "Unknown error"); if (typeof Error.captureStackTrace === "function") { Error.captureStackTrace(this, t); } } }; var c = function(...e) { try { return JSON.stringify(...e); } catch (e) { return "[Cannot display object: " + e.message + "]"; } }; l.exports; const f = u; const d = c; const m = l.exports = function(e, ...t) { if (e) { return; } if (t.length === 1 && t[0] instanceof Error) { throw t[0]; } const r = t.filter(e => e !== "").map(e => typeof e === "string" ? e : e instanceof Error ? e.message : d(e)); throw new f(r.join(" "), m); }; var h = l.exports; const p = e(h); const g = h; const y = {}; var b = function(e, t, r) { if (t === false || t === null || t === undefined) { return e; } r = r || {}; if (typeof r === "string") { r = { separator: r }; } const n = Array.isArray(t); g(!n || !r.separator, "Separator option is not valid for array-based chain"); const s = n ? t : t.split(r.separator || "."); let i = e; for (let e = 0; e < s.length; ++e) { let n = s[e]; const a = r.iterables && y.iterables(i); if (Array.isArray(i) || a === "set") { const e = Number(n); if (Number.isInteger(e)) { n = e < 0 ? i.length + e : e; } } if (!i || typeof i === "function" && r.functions === false || !a && i[n] === undefined) { g(!r.strict || e + 1 === s.length, "Missing segment", n, "in reach path ", t); g(typeof i === "object" || r.functions === true || typeof i !== "function", "Invalid segment", n, "in reach path ", t); i = r.default; break; } if (!a) { i = i[n]; } else if (a === "set") { i = [ ...i ][n]; } else { i = i.get(n); } } return i; }; y.iterables = function(e) { if (e instanceof Set) { return "set"; } if (e instanceof Map) { return "map"; } }; var _ = { exports: {} }; _.exports; (function(e, t) { const r = {}; t = e.exports = { array: Array.prototype, buffer: Buffer && Buffer.prototype, 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 }; r.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 (Buffer && e instanceof Buffer) { return t.buffer; } if (e instanceof Date) { return t.date; } if (e instanceof RegExp) { return t.regex; } if (e instanceof Error) { return t.error; } const n = Object.prototype.toString.call(e); return r.typeMap.get(n) || t.generic; }; })(_, _.exports); var v = _.exports; var A = {}; A.keys = function(e, t = {}) { return t.symbols !== false ? Reflect.ownKeys(e) : Object.getOwnPropertyNames(e); }; const E = b; const R = v; const S = A; const O = { needsProtoHack: new Set([ R.set, R.map, R.weakSet, R.weakMap ]), structuredCloneExists: typeof structuredClone === "function" }; var w = O.clone = function(e, t = {}, r = null) { if (typeof e !== "object" || e === null) { return e; } let n = O.clone; let s = r; if (t.shallow) { if (t.shallow !== true) { return O.cloneWithShallow(e, t); } n = e => e; } else if (s) { const t = s.get(e); if (t) { return t; } } else { s = new Map; } const i = R.getInternalProto(e); switch (i) { case R.buffer: return Buffer?.from(e); case R.date: return new Date(e.getTime()); case R.regex: case R.url: return new i.constructor(e); } const a = O.base(e, i, t); if (a === e) { return e; } if (s) { s.set(e, a); } if (i === R.set) { for (const r of e) { a.add(n(r, t, s)); } } else if (i === R.map) { for (const [r, i] of e) { a.set(r, n(i, t, s)); } } const o = S.keys(e, t); for (const r of o) { if (r === "__proto__") { continue; } if (i === R.array && r === "length") { a.length = e.length; continue; } if (O.structuredCloneExists && i === R.error && r === "stack") { continue; } const o = Object.getOwnPropertyDescriptor(e, r); if (o) { if (o.get || o.set) { Object.defineProperty(a, r, o); } else if (o.enumerable) { a[r] = n(e[r], t, s); } else { Object.defineProperty(a, r, { enumerable: false, writable: true, configurable: true, value: n(e[r], t, s) }); } } else { Object.defineProperty(a, r, { enumerable: true, writable: true, configurable: true, value: n(e[r], t, s) }); } } return a; }; O.cloneWithShallow = function(e, t) { const r = t.shallow; t = Object.assign({}, t); t.shallow = false; const n = new Map; for (const t of r) { const r = E(e, t); if (typeof r === "object" || typeof r === "function") { n.set(r, r); } } return O.clone(e, t, n); }; O.base = function(e, t, r) { if (r.prototype === false) { if (O.needsProtoHack.has(t)) { return new t.constructor; } return t === R.array ? [] : {}; } const n = Object.getPrototypeOf(e); if (n && n.isImmutable) { return e; } if (t === R.array) { const e = []; if (n !== t) { Object.setPrototypeOf(e, n); } return e; } else if (t === R.error && O.structuredCloneExists && (n === t || Error.isPrototypeOf(n.constructor))) { const t = structuredClone(e); if (Object.getPrototypeOf(t) !== n) { Object.setPrototypeOf(t, n); } return t; } if (O.needsProtoHack.has(t)) { const e = new n.constructor; if (n !== t) { Object.setPrototypeOf(e, n); } return e; } return Object.create(n); }; const N = h; const I = w; const $ = A; const T = {}; var C = T.merge = function(e, t, r) { N(e && typeof e === "object", "Invalid target value: must be an object"); N(t === null || t === undefined || typeof t === "object", "Invalid source value: must be null, undefined, or an object"); if (!t) { return e; } r = Object.assign({ nullOverride: true, mergeArrays: true }, r); if (Array.isArray(t)) { N(Array.isArray(e), "Cannot merge array onto an object"); if (!r.mergeArrays) { e.length = 0; } for (let n = 0; n < t.length; ++n) { e.push(I(t[n], { symbols: r.symbols })); } return e; } const n = $.keys(t, r); for (let s = 0; s < n.length; ++s) { const i = n[s]; if (i === "__proto__" || !Object.prototype.propertyIsEnumerable.call(t, i)) { continue; } const a = t[i]; if (a && typeof a === "object") { if (e[i] === a) { continue; } if (!e[i] || typeof e[i] !== "object" || Array.isArray(e[i]) !== Array.isArray(a) || a instanceof Date || Buffer && Buffer.isBuffer(a) || a instanceof RegExp) { e[i] = I(a, { symbols: r.symbols }); } else { T.merge(e[i], a, r); } } else { if (a !== null && a !== undefined) { e[i] = a; } else if (r.nullOverride) { e[i] = a; } } } return e; }; const x = h; const L = w; const D = C; const M = b; const j = {}; var k = function(e, t, r = {}) { x(e && typeof e === "object", "Invalid defaults value: must be an object"); x(!t || t === true || typeof t === "object", "Invalid source value: must be true, falsy or an object"); x(typeof r === "object", "Invalid options: must be an object"); if (!t) { return null; } if (r.shallow) { return j.applyToDefaultsWithShallow(e, t, r); } const n = L(e); if (t === true) { return n; } const s = r.nullOverride !== undefined ? r.nullOverride : false; return D(n, t, { nullOverride: s, mergeArrays: false }); }; j.applyToDefaultsWithShallow = function(e, t, r) { const n = r.shallow; x(Array.isArray(n), "Invalid keys"); const s = new Map; const i = t === true ? null : new Set; for (let r of n) { r = Array.isArray(r) ? r : r.split("."); const n = M(e, r); if (n && typeof n === "object") { s.set(n, i && M(t, r) || n); } else if (i) { i.add(r); } } const a = L(e, {}, s); if (!i) { return a; } for (const e of i) { j.reachCopy(a, t, e); } const o = r.nullOverride !== undefined ? r.nullOverride : false; return D(a, t, { nullOverride: o, mergeArrays: false }); }; j.reachCopy = function(e, t, r) { for (const e of r) { if (!(e in t)) { return; } const r = t[e]; if (typeof r !== "object" || r === null) { return; } t = r; } const n = t; let s = e; for (let e = 0; e < r.length - 1; ++e) { const t = r[e]; if (typeof s[t] !== "object") { s[t] = {}; } s = s[t]; } s[r[r.length - 1]] = n; }; const B = {}; var P = B.Bench = class { constructor() { this.ts = 0; this.reset(); } reset() { this.ts = B.Bench.now(); } elapsed() { return B.Bench.now() - this.ts; } static now() { const e = process.hrtime(); return e[0] * 1e3 + e[1] / 1e6; } }; var U = function() {}; const G = U; var F = function() { return new Promise(G); }; const X = v; const H = { mismatched: null }; var K = function(e, t, r) { r = Object.assign({ prototype: true }, r); return !!H.isDeepEqual(e, t, r, []); }; H.isDeepEqual = function(e, t, r, n) { if (e === t) { return e !== 0 || 1 / e === 1 / t; } const s = typeof e; if (s !== typeof t) { return false; } if (e === null || t === null) { return false; } if (s === "function") { if (!r.deepFunction || e.toString() !== t.toString()) { return false; } } else if (s !== "object") { return e !== e && t !== t; } const i = H.getSharedType(e, t, !!r.prototype); switch (i) { case X.buffer: return Buffer && Buffer.prototype.equals.call(e, t); case X.promise: return e === t; case X.regex: case X.url: return e.toString() === t.toString(); case H.mismatched: return false; } for (let r = n.length - 1; r >= 0; --r) { if (n[r].isSame(e, t)) { return true; } } n.push(new H.SeenEntry(e, t)); try { return !!H.isDeepEqualObj(i, e, t, r, n); } finally { n.pop(); } }; H.getSharedType = function(e, t, r) { if (r) { if (Object.getPrototypeOf(e) !== Object.getPrototypeOf(t)) { return H.mismatched; } return X.getInternalProto(e); } const n = X.getInternalProto(e); if (n !== X.getInternalProto(t)) { return H.mismatched; } return n; }; H.valueOf = function(e) { const t = e.valueOf; if (t === undefined) { return e; } try { return t.call(e); } catch (e) { return e; } }; H.hasOwnEnumerableProperty = function(e, t) { return Object.prototype.propertyIsEnumerable.call(e, t); }; H.isSetSimpleEqual = function(e, t) { for (const r of Set.prototype.values.call(e)) { if (!Set.prototype.has.call(t, r)) { return false; } } return true; }; H.isDeepEqualObj = function(e, t, r, n, s) { const {isDeepEqual: i, valueOf: a, hasOwnEnumerableProperty: o} = H; const {keys: l, getOwnPropertySymbols: u} = Object; if (e === X.array) { if (n.part) { for (const e of t) { for (const t of r) { if (i(e, t, n, s)) { return true; } } } } else { if (t.length !== r.length) { return false; } for (let e = 0; e < t.length; ++e) { if (!i(t[e], r[e], n, s)) { return false; } } return true; } } else if (e === X.set) { if (t.size !== r.size) { return false; } if (!H.isSetSimpleEqual(t, r)) { const e = new Set(Set.prototype.values.call(r)); for (const r of Set.prototype.values.call(t)) { if (e.delete(r)) { continue; } let t = false; for (const a of e) { if (i(r, a, n, s)) { e.delete(a); t = true; break; } } if (!t) { return false; } } } } else if (e === X.map) { if (t.size !== r.size) { return false; } for (const [e, a] of Map.prototype.entries.call(t)) { if (a === undefined && !Map.prototype.has.call(r, e)) { return false; } if (!i(a, Map.prototype.get.call(r, e), n, s)) { return false; } } } else if (e === X.error) { if (t.name !== r.name || t.message !== r.message) { return false; } } const c = a(t); const f = a(r); if ((t !== c || r !== f) && !i(c, f, n, s)) { return false; } const d = l(t); if (!n.part && d.length !== l(r).length && !n.skip) { return false; } let m = 0; for (const e of d) { if (n.skip && n.skip.includes(e)) { if (r[e] === undefined) { ++m; } continue; } if (!o(r, e)) { return false; } if (!i(t[e], r[e], n, s)) { return false; } } if (!n.part && d.length - m !== l(r).length) { return false; } if (n.symbols !== false) { const e = u(t); const a = new Set(u(r)); for (const l of e) { if (!n.skip?.includes(l)) { if (o(t, l)) { if (!o(r, l)) { return false; } if (!i(t[l], r[l], n, s)) { return false; } } else if (o(r, l)) { return false; } } a.delete(l); } for (const e of a) { if (o(r, e)) { return false; } } } return true; }; H.SeenEntry = class { constructor(e, t) { this.obj = e; this.ref = t; } isSame(e, t) { return this.obj === e && this.ref === t; } }; var V = function(e) { return e.replace(/[\^\$\.\*\+\-\?\=\!\:\|\\\/\(\)\[\]\{\}\,]/g, "\\$&"); }; const W = e(V); const Y = h; const q = K; const z = V; const Z = A; const J = {}; var Q = function(e, t, r = {}) { if (typeof t !== "object") { t = [ t ]; } Y(!Array.isArray(t) || t.length, "Values array cannot be empty"); if (typeof e === "string") { return J.string(e, t, r); } if (Array.isArray(e)) { return J.array(e, t, r); } Y(typeof e === "object", "Reference must be string or an object"); return J.object(e, t, r); }; J.array = function(e, t, r) { if (!Array.isArray(t)) { t = [ t ]; } if (!e.length) { return false; } if (r.only && r.once && e.length !== t.length) { return false; } let n; const s = new Map; for (const e of t) { if (!r.deep || !e || typeof e !== "object") { const t = s.get(e); if (t) { ++t.allowed; } else { s.set(e, { allowed: 1, hits: 0 }); } } else { n = n ?? J.compare(r); let t = false; for (const [r, i] of s.entries()) { if (n(r, e)) { ++i.allowed; t = true; break; } } if (!t) { s.set(e, { allowed: 1, hits: 0 }); } } } let i = 0; for (const t of e) { let e; if (!r.deep || !t || typeof t !== "object") { e = s.get(t); } else { n = n ?? J.compare(r); for (const [r, i] of s.entries()) { if (n(r, t)) { e = i; break; } } } if (e) { ++e.hits; ++i; if (r.once && e.hits > e.allowed) { return false; } } } if (r.only && i !== e.length) { return false; } for (const e of s.values()) { if (e.hits === e.allowed) { continue; } if (e.hits < e.allowed && !r.part) { return false; } } return !!i; }; J.object = function(e, t, r) { Y(r.once === undefined, "Cannot use option once with object"); const n = Z.keys(e, r); if (!n.length) { return false; } if (Array.isArray(t)) { return J.array(n, t, r); } const s = Object.getOwnPropertySymbols(t).filter(e => t.propertyIsEnumerable(e)); const i = [ ...Object.keys(t), ...s ]; const a = J.compare(r); const o = new Set(i); for (const s of n) { if (!o.has(s)) { if (r.only) { return false; } continue; } if (!a(t[s], e[s])) { return false; } o.delete(s); } if (o.size) { return r.part ? o.size < i.length : false; } return true; }; J.string = function(e, t, r) { if (e === "") { return t.length === 1 && t[0] === "" || !r.once && !t.some(e => e !== ""); } const n = new Map; const s = []; for (const e of t) { Y(typeof e === "string", "Cannot compare string reference to non-string value"); if (e) { const t = n.get(e); if (t) { ++t.allowed; } else { n.set(e, { allowed: 1, hits: 0 }); s.push(z(e)); } } else if (r.once || r.only) { return false; } } if (!s.length) { return true; } const i = new RegExp(`(${s.join("|")})`, "g"); const a = e.replace(i, (e, t) => { ++n.get(t).hits; return ""; }); if (r.only && a) { return false; } let o = false; for (const e of n.values()) { if (e.hits) { o = true; } if (e.hits === e.allowed) { continue; } if (e.hits < e.allowed && !r.part) { return false; } if (r.once) { return false; } } return !!o; }; J.compare = function(e) { if (!e.deep) { return J.shallow; } const t = e.only !== undefined; const r = e.part !== undefined; const n = { prototype: t ? e.only : r ? !e.part : false, part: t ? !e.only : r ? e.part : false }; return (e, t) => q(e, t, n); }; J.shallow = function(e, t) { return e === t; }; const ee = h; var te = function(e) { ee(/^[ \w\!#\$%&'\(\)\*\+,\-\.\/\:;<\=>\?@\[\]\^`\{\|\}~\"\\]*$/.test(e), "Bad attribute value (" + e + ")"); return e.replace(/\\/g, "\\\\").replace(/\"/g, '\\"'); }; const re = {}; var ne = function(e) { if (!e) { return ""; } let t = ""; for (let r = 0; r < e.length; ++r) { const n = e.charCodeAt(r); if (re.isSafe(n)) { t += e[r]; } else { t += re.escapeHtmlChar(n); } } return t; }; re.escapeHtmlChar = function(e) { const t = re.namedHtml.get(e); if (t) { return t; } if (e >= 256) { return "&#" + e + ";"; } const r = e.toString(16).padStart(2, "0"); return `&#x${r};`; }; re.isSafe = function(e) { return re.safeCharCodes.has(e); }; re.namedHtml = new Map([ [ 38, "&amp;" ], [ 60, "&lt;" ], [ 62, "&gt;" ], [ 34, "&quot;" ], [ 160, "&nbsp;" ], [ 162, "&cent;" ], [ 163, "&pound;" ], [ 164, "&curren;" ], [ 169, "&copy;" ], [ 174, "&reg;" ] ]); re.safeCharCodes = function() { const e = new Set; for (let t = 32; t < 123; ++t) { if (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; }(); const se = {}; var ie = function(e) { if (!e) { return ""; } return e.replace(/[<>&\u2028\u2029]/g, se.escape); }; se.escape = function(e) { return se.replacements.get(e); }; se.replacements = new Map([ [ "<", "\\u003c" ], [ ">", "\\u003e" ], [ "&", "\\u0026" ], [ "\u2028", "\\u2028" ], [ "\u2029", "\\u2029" ] ]); const ae = {}; var oe = ae.flatten = function(e, t) { const r = t || []; for (const t of e) { if (Array.isArray(t)) { ae.flatten(t, r); } else { r.push(t); } } return r; }; const le = {}; var ue = function(e, t, r = {}) { if (!e || !t) { return r.first ? null : []; } const n = []; const s = Array.isArray(e) ? new Set(e) : e; const i = new Set; for (const e of t) { if (le.has(s, e) && !i.has(e)) { if (r.first) { return e; } n.push(e); i.add(e); } } return r.first ? null : n; }; le.has = function(e, t) { if (typeof e.has === "function") { return e.has(t); } return e[t] !== undefined; }; var ce = function(e) { return typeof e?.then === "function"; }; const fe = { wrapped: Symbol("wrapped") }; var de = function(e) { if (e[fe.wrapped]) { return e; } let t = false; const r = function(...r) { if (!t) { t = true; e(...r); } }; r[fe.wrapped] = true; return r; }; const me = b; var he = function(e, t, r) { return t.replace(/{([^{}]+)}/g, (t, n) => { const s = me(e, n, r); return s ?? ""; }); }; const pe = { maxTimer: 2 ** 31 - 1 }; var ge = function(e, t, r) { if (typeof e === "bigint") { e = Number(e); } if (e >= Number.MAX_SAFE_INTEGER) { e = Infinity; } if (typeof e !== "number" && e !== undefined) { throw new TypeError("Timeout must be a number or bigint"); } return new Promise(n => { const s = r ? r.setTimeout : setTimeout; const i = () => { const r = Math.min(e, pe.maxTimer); e -= r; s(() => e > 0 ? i() : n(t), r); }; if (e !== Infinity) { i(); } }); }; o.applyToDefaults = k; o.assert = h; o.AssertError = u; o.Bench = P; o.block = F; o.clone = w; o.contain = Q; o.deepEqual = K; o.escapeHeaderAttribute = te; o.escapeHtml = ne; o.escapeJson = ie; o.escapeRegex = V; o.flatten = oe; o.ignore = U; o.intersect = ue; o.isPromise = ce; o.merge = C; o.once = de; o.reach = b; o.reachTemplate = he; o.stringify = c; o.wait = ge; var ye = {}; var be = {}; var _e = "18.0.2"; const ve = { version: _e }; var Ae = {}; var Ee; function Re() { if (Ee) return Ae; Ee = 1; const e = Yr(); const t = {}; t.wrap = e.string().min(1).max(2).allow(false); Ae.preferences = e.object({ allowUnknown: e.boolean(), abortEarly: e.boolean(), artifacts: e.boolean(), cache: e.boolean(), context: e.object(), convert: e.boolean(), dateFormat: e.valid("date", "iso", "string", "time", "utc"), debug: e.boolean(), errors: { escapeHtml: e.boolean(), label: e.valid("path", "key", false), language: [ e.string(), e.object().ref() ], render: e.boolean(), stack: e.boolean(), wrap: { label: t.wrap, array: t.wrap, string: t.wrap } }, externals: e.boolean(), messages: e.object(), noDefaults: e.boolean(), nonEnumerables: e.boolean(), presence: e.valid("required", "optional", "forbidden"), skipFunctions: e.boolean(), stripUnknown: e.object({ arrays: e.boolean(), objects: e.boolean() }).or("arrays", "objects").allow(true, false), warnings: e.boolean() }).strict(); t.nameRx = /^[a-zA-Z0-9]\w*$/; t.rule = e.object({ alias: e.array().items(e.string().pattern(t.nameRx)).single(), args: e.array().items(e.string(), e.object({ name: e.string().pattern(t.nameRx).required(), ref: e.boolean(), assert: e.alternatives([ e.function(), e.object().schema() ]).conditional("ref", { is: true, then: e.required() }), normalize: e.function(), message: e.string().when("assert", { is: e.function(), then: e.required() }) })), convert: e.boolean(), manifest: e.boolean(), method: e.function().allow(false), multi: e.boolean(), validate: e.function() }); Ae.extension = e.object({ type: e.alternatives([ e.string(), e.object().regex() ]).required(), args: e.function(), cast: e.object().pattern(t.nameRx, e.object({ from: e.function().maxArity(1).required(), to: e.function().minArity(1).maxArity(2).required() })), base: e.object().schema().when("type", { is: e.object().regex(), then: e.forbidden() }), coerce: [ e.function().maxArity(3), e.object({ method: e.function().maxArity(3).required(), from: e.array().items(e.string()).single() }) ], flags: e.object().pattern(t.nameRx, e.object({ setter: e.string(), default: e.any() })), manifest: { build: e.function().arity(2) }, messages: [ e.object(), e.string() ], modifiers: e.object().pattern(t.nameRx, e.function().minArity(1).maxArity(2)), overrides: e.object().pattern(t.nameRx, e.function()), prepare: e.function().maxArity(3), rebuild: e.function().arity(1), rules: e.object().pattern(t.nameRx, t.rule), terms: e.object().pattern(t.nameRx, e.object({ init: e.array().allow(null).required(), manifest: e.object().pattern(/.+/, [ e.valid("schema", "single"), e.object({ mapped: e.object({ from: e.string().required(), to: e.string().required() }).required() }) ]) })), validate: e.function().maxArity(3) }).strict(); Ae.extensions = e.array().items(e.object(), e.function().arity(1)).strict(); t.desc = { buffer: e.object({ buffer: e.string() }), func: e.object({ function: e.function().required(), options: { literal: true } }), override: e.object({ override: true }), ref: e.object({ ref: e.object({ type: e.valid("value", "global", "local"), path: e.array().required(), separator: e.string().length(1).allow(false), ancestor: e.number().min(0).integer().allow("root"), map: e.array().items(e.array().length(2)).min(1), adjust: e.function(), iterables: e.boolean(), in: e.boolean(), render: e.boolean() }).required() }), regex: e.object({ regex: e.string().min(3) }), special: e.object({ special: e.valid("deep").required() }), template: e.object({ template: e.string().required(), options: e.object() }), value: e.object({ value: e.alternatives([ e.object(), e.array() ]).required() }) }; t.desc.entity = e.alternatives([ e.array().items(e.link("...")), e.boolean(), e.function(), e.number(), e.string(), t.desc.buffer, t.desc.func, t.desc.ref, t.desc.regex, t.desc.special, t.desc.template, t.desc.value, e.link("/") ]); t.desc.values = e.array().items(null, e.boolean(), e.function(), e.number().allow(Infinity, -Infinity), e.string().allow(""), e.symbol(), t.desc.buffer, t.desc.func, t.desc.override, t.desc.ref, t.desc.regex, t.desc.template, t.desc.value); t.desc.messages = e.object().pattern(/.+/, [ e.string(), t.desc.template, e.object().pattern(/.+/, [ e.string(), t.desc.template ]) ]); Ae.description = e.object({ type: e.string().required(), flags: e.object({ cast: e.string(), default: e.any(), description: e.string(), empty: e.link("/"), failover: t.desc.entity, id: e.string(), label: e.string(), only: true, presence: [ "optional", "required", "forbidden" ], result: [ "raw", "strip" ], strip: e.boolean(), unit: e.string() }).unknown(), preferences: { allowUnknown: e.boolean(), abortEarly: e.boolean(), artifacts: e.boolean(), cache: e.boolean(), convert: e.boolean(), dateFormat: [ "date", "iso", "string", "time", "utc" ], errors: { escapeHtml: e.boolean(), label: [ "path", "key" ], language: [ e.string(), t.desc.ref ], wrap: { label: t.wrap, array: t.wrap } }, externals: e.boolean(), messages: t.desc.messages, noDefaults: e.boolean(), nonEnumerables: e.boolean(), presence: [ "required", "optional", "forbidden" ], skipFunctions: e.boolean(), stripUnknown: e.object({ arrays: e.boolean(), objects: e.boolean() }).or("arrays", "objects").allow(true, false), warnings: e.boolean() }, allow: t.desc.values, invalid: t.desc.values, rules: e.array().min(1).items({ name: e.string().required(), args: e.object().min(1), keep: e.boolean(), message: [ e.string(), t.desc.messages ], warn: e.boolean() }), keys: e.object().pattern(/.*/, e.link("/")), link: t.desc.ref }).pattern(/^[a-z]\w*$/, e.any()); return Ae; } var Se = {}; var Oe = { exports: {} }; var we = {}; (function(e) { const t = { operators: [ "!", "^", "*", "/", "%", "+", "-", "<", "<=", ">", ">=", "==", "!=", "&&", "||", "??" ], operatorCharacters: [ "!", "^", "*", "/", "%", "+", "-", "<", "=", ">", "&", "|", "?" ], operatorsOrder: [ [ "^" ], [ "*", "/", "%" ], [ "+", "-" ], [ "<", "<=", ">", ">=" ], [ "==", "!=" ], [ "&&" ], [ "||", "??" ] ], operatorsPrefix: [ "!", "n" ], literals: { '"': '"', "`": "`", "'": "'", "[": "]" }, numberRx: /^(?:[0-9]*(\.[0-9]*)?){1}$/, tokenRx: /^[\w\$\#\.\@\:\{\}]+$/, symbol: Symbol("formula"), settings: Symbol("settings") }; e.Parser = class { constructor(e, r = {}) { if (!r[t.settings] && r.constants) { for (const e in r.constants) { const t = r.constants[e]; if (t !== null && ![ "boolean", "number", "string" ].includes(typeof t)) { throw new Error(`Formula constant ${e} contains invalid ${typeof t} value type`); } } } this.settings = r[t.settings] ? r : Object.assign({ [t.settings]: true, constants: {}, functions: {} }, r); this.single = null; this._parts = null; this._parse(e); } _parse(r) { let n = []; let s = ""; let i = 0; let a = false; const o = r => { if (i) { throw new Error("Formula missing closing parenthesis"); } const o = n.length ? n[n.length - 1] : null; if (!a && !s && !r) { return; } if (o && o.type === "reference" && r === ")") { o.type = "function"; o.value = this._subFormula(s, o.value); s = ""; return; } if (r === ")") { const t = new e.Parser(s, this.settings); n.push({ type: "segment", value: t }); } else if (a) { if (a === "]") { n.push({ type: "reference", value: s }); s = ""; return; } n.push({ type: "literal", value: s }); } else if (t.operatorCharacters.includes(s)) { if (o && o.type === "operator" && t.operators.includes(o.value + s)) { o.value += s; } else { n.push({ type: "operator", value: s }); } } else if (s.match(t.numberRx)) { n.push({ type: "constant", value: parseFloat(s) }); } else if (this.settings.constants[s] !== undefined) { n.push({ type: "constant", value: this.settings.constants[s] }); } else { if (!s.match(t.tokenRx)) { throw new Error(`Formula contains invalid token: ${s}`); } n.push({ type: "reference", value: s }); } s = ""; }; for (const e of r) { if (a) { if (e === a) { o(); a = false; } else { s += e; } } else if (i) { if (e === "(") { s += e; ++i; } else if (e === ")") { --i; if (!i) { o(e); } else { s += e; } } else { s += e; } } else if (e in t.literals) { a = t.literals[e]; } else if (e === "(") { o(); ++i; } else if (t.operatorCharacters.includes(e)) { o(); s = e; o(); } else if (e !== " ") { s += e; } else { o(); } } o(); n = n.map((e, t) => { if (e.type !== "operator" || e.value !== "-" || t && n[t - 1].type !== "operator") { return e; } return { type: "operator", value: "n" }; }); let l = false; for (const e of n) { if (e.type === "operator") { if (t.operatorsPrefix.includes(e.value)) { continue; } if (!l) { throw new Error("Formula contains an operator in invalid position"); } if (!t.operators.includes(e.value)) { throw new Error(`Formula contains an unknown operator ${e.value}`); } } else if (l) { throw new Error("Formula missing expected operator"); } l = !l; } if (!l) { throw new Error("Formula contains invalid trailing operator"); } if (n.length === 1 && [ "reference", "literal", "constant" ].includes(n[0].type)) { this.single = { type: n[0].type === "reference" ? "reference" : "value", value: n[0].value }; } this._parts = n.map(e => { if (e.type === "operator") { return t.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 new Error(`Formula contains invalid reference ${e.value}`); } if (this.settings.reference) { return this.settings.reference(e.value); } return t.reference(e.value); }); } _subFormula(r, n) { const s = this.settings.functions[n]; if (typeof s !== "function") { throw new Error(`Formula contains unknown function ${n}`); } let i = []; if (r) { let e = ""; let s = 0; let a = false; const o = () => { if (!e) { throw new Error(`Formula contains function ${n} with invalid arguments ${r}`); } i.push(e); e = ""; }; for (let n = 0; n < r.length; ++n) { const i = r[n]; if (a) { e += i; if (i === a) { a = false; } } else if (i in t.literals && !s) { e += i; a = t.literals[i]; } else if (i === "," && !s) { o(); } else { e += i; if (i === "(") { ++s; } else if (i === ")") { --s; } } } o(); } i = i.map(t => new e.Parser(t, this.settings)); return function(e) { const t = []; for (const r of i) { t.push(r.evaluate(e)); } return s.call(e, ...t); }; } evaluate(e) { const r = this._parts.slice(); for (let n = r.length - 2; n >= 0; --n) { const s = r[n]; if (s && s.type === "operator") { const i = r[n + 1]; r.splice(n + 1, 1); const a = t.evaluate(i, e); r[n] = t.single(s.value, a); } } t.operatorsOrder.forEach(n => { for (let s = 1; s < r.length - 1; ) { if (n.includes(r[s])) { const n = r[s]; const i = t.evaluate(r[s - 1], e); const a = t.evaluate(r[s + 1], e); r.splice(s, 2); const o = t.calculate(n, i, a); r[s - 1] = o === 0 ? 0 : o; } else { s += 2; } } }); return t.evaluate(r[0], e); } }; e.Parser.prototype[t.symbol] = true; t.reference = function(e) { return function(t) { return t && t[e] !== undefined ? t[e] : null; }; }; t.evaluate = function(e, r) { if (e === null) { return null; } if (typeof e === "function") { return e(r); } if (e[t.symbol]) { return e.evaluate(r); } return e; }; t.single = function(e, t) { if (e === "!") { return t ? false : true; } const r = -t; if (r === 0) { return 0; } return r; }; t.calculate = function(e, r, n) { if (e === "??") { return t.exists(r) ? r : n; } if (typeof r === "string" || typeof n === "string") { if (e === "+") { r = t.exists(r) ? r : ""; n = t.exists(n) ? n : ""; return r + n; } } else { switch (e) { case "^": return Math.pow(r, n); case "*": return r * n; case "/": return r / n; case "%": return r % n; case "+": return r + n; case "-": return r - n; } } switch (e) { case "<": return r < n; case "<=": return r <= n; case ">": return r > n; case ">=": return r >= n; case "==": return r === n; case "!=": return r !== n; case "&&": return r && n; case "||": return r || n; } return null; }; t.exists = function(e) { return e !== null && e !== undefined; }; })(we); var Ne = {}; var Ie = {}; var $e; function Te() { if ($e) return Ie; $e = 1; const {clone: e} = o; const t = Ge(); const r = { annotations: Symbol("annotations") }; Ie.error = function(n) { if (!this._original || typeof this._original !== "object") { return this.details[0].message; } const s = n ? "" : ""; const i = n ? "" : ""; const a = n ? "" : ""; const o = e(this._original); for (let e = this.details.length - 1; e >= 0; --e) { const n = e + 1; const s = this.details[e]; const i = s.path; let a = o; for (let e = 0; ;++e) { const o = i[e]; if (t.isSchema(a)) { a = a.clone(); } if (e + 1 < i.length && typeof a[o] !== "string") { a = a[o]; } else { const e = a[r.annotations] || { errors: {}, missing: {} }; a[r.annotations] = e; const t = o || s.context.key; if (a[o] !== undefined) { e.errors[t] = e.errors[t] || []; e.errors[t].push(n); } else { e.missing[t] = n; } break; } } } const l = { key: /_\$key\$_([, \d]+)_\$end\$_"/g, missing: /"_\$miss\$_([^|]+)\|(\d+)_\$end\$_": "__missing__"/g, arrayIndex: /\s*"_\$idx\$_([, \d]+)_\$end\$_",?\n(.*)/g, specials: /"\[(NaN|Symbol.*|-?Infinity|function.*|\(.*)]"/g }; let u = r.safeStringify(o, 2).replace(l.key, (e, t) => `" ${s}[${t}]${a}`).replace(l.missing, (e, t, r) => `${i}"${t}"${a}${s} [${r}]: -- missing --${a}`).replace(l.arrayIndex, (e, t, r) => `\n${r} ${s}[${t}]${a}`).replace(l.specials, (e, t) => t); u = `${u}\n${s}`; for (let e = 0; e < this.details.length; ++e) { const t = e + 1; u = `${u}\n[${t}] ${this.details[e].message}`; } u = u + a; return u; }; r.safeStringify = function(e, t) { return JSON.stringify(e, r.serializer(), t); }; r.serializer = function() { const e = []; const t = []; const n = (r, n) => { if (t[0] === n) { return "[Circular ~]"; } return "[Circular ~." + e.slice(0, t.indexOf(n)).join(".") + "]"; }; return function(s, i) { if (t.length > 0) { const r = t.indexOf(this); if (~r) { t.length = r + 1; e.length = r + 1; e[r] = s; } else { t.push(this); e.push(s); } if (~t.indexOf(i)) { i = n.call(this, s, i); } } else { t.push(i); } if (i) { const e = i[r.annotations]; if (e) { if (Array.isArray(i)) { const t = []; for (let r = 0; r < i.length; ++r) { if (e.errors[r]) { t.push(`_$idx$_${e.errors[r].sort().join(", ")}_$end$_`); } t.push(i[r]); } i = t; } else { for (const t in e.errors) { i[`${t}_$key$_${e.errors[t].sort().join(", ")}_$end$_`] = i[t]; i[t] = undefined; } for (const t in e.missing) { i[`_$miss$_${t}|${e.missing[t]}_$end$_`] = "__missing__"; } } return i; } } if (i === Infinity || i === -Infinity || Number.isNaN(i) || typeof i === "function" || typeof i === "symbol") { return "[" + i.toString() + "]"; } return i; }; }; return Ie; } var Ce; function xe() {