UNPKG

@sapphire/shapeshift

Version:

Blazing fast input validation and transformation ⚡

1,443 lines (1,429 loc) 124 kB
var SapphireShapeshift = (function (exports) { 'use strict'; var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); var __commonJS = (cb, mod) => function __require() { return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); // node_modules/fast-deep-equal/es6/index.js var require_es6 = __commonJS({ "node_modules/fast-deep-equal/es6/index.js"(exports, module) { module.exports = /* @__PURE__ */ __name(function equal2(a3, b2) { if (a3 === b2) return true; if (a3 && b2 && typeof a3 == "object" && typeof b2 == "object") { if (a3.constructor !== b2.constructor) return false; var length, i3, keys; if (Array.isArray(a3)) { length = a3.length; if (length != b2.length) return false; for (i3 = length; i3-- !== 0; ) if (!equal2(a3[i3], b2[i3])) return false; return true; } if (a3 instanceof Map && b2 instanceof Map) { if (a3.size !== b2.size) return false; for (i3 of a3.entries()) if (!b2.has(i3[0])) return false; for (i3 of a3.entries()) if (!equal2(i3[1], b2.get(i3[0]))) return false; return true; } if (a3 instanceof Set && b2 instanceof Set) { if (a3.size !== b2.size) return false; for (i3 of a3.entries()) if (!b2.has(i3[0])) return false; return true; } if (ArrayBuffer.isView(a3) && ArrayBuffer.isView(b2)) { length = a3.length; if (length != b2.length) return false; for (i3 = length; i3-- !== 0; ) if (a3[i3] !== b2[i3]) return false; return true; } if (a3.constructor === RegExp) return a3.source === b2.source && a3.flags === b2.flags; if (a3.valueOf !== Object.prototype.valueOf) return a3.valueOf() === b2.valueOf(); if (a3.toString !== Object.prototype.toString) return a3.toString() === b2.toString(); keys = Object.keys(a3); length = keys.length; if (length !== Object.keys(b2).length) return false; for (i3 = length; i3-- !== 0; ) if (!Object.prototype.hasOwnProperty.call(b2, keys[i3])) return false; for (i3 = length; i3-- !== 0; ) { var key = keys[i3]; if (!equal2(a3[key], b2[key])) return false; } return true; } return a3 !== a3 && b2 !== b2; }, "equal"); } }); // node_modules/lodash.uniqwith/index.js var require_lodash = __commonJS({ "node_modules/lodash.uniqwith/index.js"(exports, module) { var LARGE_ARRAY_SIZE = 200; var HASH_UNDEFINED = "__lodash_hash_undefined__"; var INFINITY = 1 / 0; var funcTag = "[object Function]"; var genTag = "[object GeneratorFunction]"; var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; var reIsHostCtor = /^\[object .+?Constructor\]$/; var freeGlobal = typeof globalThis == "object" && globalThis && globalThis.Object === Object && globalThis; var freeSelf = typeof self == "object" && self && self.Object === Object && self; var root = freeGlobal || freeSelf || Function("return this")(); function arrayIncludes(array, value) { var length = array ? array.length : 0; return !!length && baseIndexOf(array, value, 0) > -1; } __name(arrayIncludes, "arrayIncludes"); function arrayIncludesWith(array, value, comparator) { var index = -1, length = array ? array.length : 0; while (++index < length) { if (comparator(value, array[index])) { return true; } } return false; } __name(arrayIncludesWith, "arrayIncludesWith"); function baseFindIndex(array, predicate, fromIndex, fromRight) { var length = array.length, index = fromIndex + (fromRight ? 1 : -1); while (fromRight ? index-- : ++index < length) { if (predicate(array[index], index, array)) { return index; } } return -1; } __name(baseFindIndex, "baseFindIndex"); function baseIndexOf(array, value, fromIndex) { if (value !== value) { return baseFindIndex(array, baseIsNaN, fromIndex); } var index = fromIndex - 1, length = array.length; while (++index < length) { if (array[index] === value) { return index; } } return -1; } __name(baseIndexOf, "baseIndexOf"); function baseIsNaN(value) { return value !== value; } __name(baseIsNaN, "baseIsNaN"); function cacheHas(cache, key) { return cache.has(key); } __name(cacheHas, "cacheHas"); function getValue2(object, key) { return object == null ? void 0 : object[key]; } __name(getValue2, "getValue"); function isHostObject(value) { var result = false; if (value != null && typeof value.toString != "function") { try { result = !!(value + ""); } catch (e3) { } } return result; } __name(isHostObject, "isHostObject"); function setToArray(set) { var index = -1, result = Array(set.size); set.forEach(function(value) { result[++index] = value; }); return result; } __name(setToArray, "setToArray"); var arrayProto = Array.prototype; var funcProto = Function.prototype; var objectProto = Object.prototype; var coreJsData = root["__core-js_shared__"]; var maskSrcKey = function() { var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ""); return uid ? "Symbol(src)_1." + uid : ""; }(); var funcToString = funcProto.toString; var hasOwnProperty = objectProto.hasOwnProperty; var objectToString = objectProto.toString; var reIsNative = RegExp( "^" + funcToString.call(hasOwnProperty).replace(reRegExpChar, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$" ); var splice = arrayProto.splice; var Map2 = getNative(root, "Map"); var Set2 = getNative(root, "Set"); var nativeCreate = getNative(Object, "create"); function Hash(entries) { var index = -1, length = entries ? entries.length : 0; this.clear(); while (++index < length) { var entry = entries[index]; this.set(entry[0], entry[1]); } } __name(Hash, "Hash"); function hashClear() { this.__data__ = nativeCreate ? nativeCreate(null) : {}; } __name(hashClear, "hashClear"); function hashDelete(key) { return this.has(key) && delete this.__data__[key]; } __name(hashDelete, "hashDelete"); function hashGet(key) { var data = this.__data__; if (nativeCreate) { var result = data[key]; return result === HASH_UNDEFINED ? void 0 : result; } return hasOwnProperty.call(data, key) ? data[key] : void 0; } __name(hashGet, "hashGet"); function hashHas(key) { var data = this.__data__; return nativeCreate ? data[key] !== void 0 : hasOwnProperty.call(data, key); } __name(hashHas, "hashHas"); function hashSet(key, value) { var data = this.__data__; data[key] = nativeCreate && value === void 0 ? HASH_UNDEFINED : value; return this; } __name(hashSet, "hashSet"); Hash.prototype.clear = hashClear; Hash.prototype["delete"] = hashDelete; Hash.prototype.get = hashGet; Hash.prototype.has = hashHas; Hash.prototype.set = hashSet; function ListCache(entries) { var index = -1, length = entries ? entries.length : 0; this.clear(); while (++index < length) { var entry = entries[index]; this.set(entry[0], entry[1]); } } __name(ListCache, "ListCache"); function listCacheClear() { this.__data__ = []; } __name(listCacheClear, "listCacheClear"); function listCacheDelete(key) { var data = this.__data__, index = assocIndexOf(data, key); if (index < 0) { return false; } var lastIndex = data.length - 1; if (index == lastIndex) { data.pop(); } else { splice.call(data, index, 1); } return true; } __name(listCacheDelete, "listCacheDelete"); function listCacheGet(key) { var data = this.__data__, index = assocIndexOf(data, key); return index < 0 ? void 0 : data[index][1]; } __name(listCacheGet, "listCacheGet"); function listCacheHas(key) { return assocIndexOf(this.__data__, key) > -1; } __name(listCacheHas, "listCacheHas"); function listCacheSet(key, value) { var data = this.__data__, index = assocIndexOf(data, key); if (index < 0) { data.push([key, value]); } else { data[index][1] = value; } return this; } __name(listCacheSet, "listCacheSet"); ListCache.prototype.clear = listCacheClear; ListCache.prototype["delete"] = listCacheDelete; ListCache.prototype.get = listCacheGet; ListCache.prototype.has = listCacheHas; ListCache.prototype.set = listCacheSet; function MapCache(entries) { var index = -1, length = entries ? entries.length : 0; this.clear(); while (++index < length) { var entry = entries[index]; this.set(entry[0], entry[1]); } } __name(MapCache, "MapCache"); function mapCacheClear() { this.__data__ = { "hash": new Hash(), "map": new (Map2 || ListCache)(), "string": new Hash() }; } __name(mapCacheClear, "mapCacheClear"); function mapCacheDelete(key) { return getMapData(this, key)["delete"](key); } __name(mapCacheDelete, "mapCacheDelete"); function mapCacheGet(key) { return getMapData(this, key).get(key); } __name(mapCacheGet, "mapCacheGet"); function mapCacheHas(key) { return getMapData(this, key).has(key); } __name(mapCacheHas, "mapCacheHas"); function mapCacheSet(key, value) { getMapData(this, key).set(key, value); return this; } __name(mapCacheSet, "mapCacheSet"); MapCache.prototype.clear = mapCacheClear; MapCache.prototype["delete"] = mapCacheDelete; MapCache.prototype.get = mapCacheGet; MapCache.prototype.has = mapCacheHas; MapCache.prototype.set = mapCacheSet; function SetCache(values) { var index = -1, length = values ? values.length : 0; this.__data__ = new MapCache(); while (++index < length) { this.add(values[index]); } } __name(SetCache, "SetCache"); function setCacheAdd(value) { this.__data__.set(value, HASH_UNDEFINED); return this; } __name(setCacheAdd, "setCacheAdd"); function setCacheHas(value) { return this.__data__.has(value); } __name(setCacheHas, "setCacheHas"); SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; SetCache.prototype.has = setCacheHas; function assocIndexOf(array, key) { var length = array.length; while (length--) { if (eq(array[length][0], key)) { return length; } } return -1; } __name(assocIndexOf, "assocIndexOf"); function baseIsNative(value) { if (!isObject3(value) || isMasked(value)) { return false; } var pattern = isFunction3(value) || isHostObject(value) ? reIsNative : reIsHostCtor; return pattern.test(toSource(value)); } __name(baseIsNative, "baseIsNative"); function baseUniq(array, iteratee, comparator) { var index = -1, includes = arrayIncludes, length = array.length, isCommon = true, result = [], seen = result; if (comparator) { isCommon = false; includes = arrayIncludesWith; } else if (length >= LARGE_ARRAY_SIZE) { var set = iteratee ? null : createSet(array); if (set) { return setToArray(set); } isCommon = false; includes = cacheHas; seen = new SetCache(); } else { seen = iteratee ? [] : result; } outer: while (++index < length) { var value = array[index], computed = iteratee ? iteratee(value) : value; value = comparator || value !== 0 ? value : 0; if (isCommon && computed === computed) { var seenIndex = seen.length; while (seenIndex--) { if (seen[seenIndex] === computed) { continue outer; } } if (iteratee) { seen.push(computed); } result.push(value); } else if (!includes(seen, computed, comparator)) { if (seen !== result) { seen.push(computed); } result.push(value); } } return result; } __name(baseUniq, "baseUniq"); var createSet = !(Set2 && 1 / setToArray(new Set2([, -0]))[1] == INFINITY) ? noop : function(values) { return new Set2(values); }; function getMapData(map, key) { var data = map.__data__; return isKeyable(key) ? data[typeof key == "string" ? "string" : "hash"] : data.map; } __name(getMapData, "getMapData"); function getNative(object, key) { var value = getValue2(object, key); return baseIsNative(value) ? value : void 0; } __name(getNative, "getNative"); function isKeyable(value) { var type = typeof value; return type == "string" || type == "number" || type == "symbol" || type == "boolean" ? value !== "__proto__" : value === null; } __name(isKeyable, "isKeyable"); function isMasked(func) { return !!maskSrcKey && maskSrcKey in func; } __name(isMasked, "isMasked"); function toSource(func) { if (func != null) { try { return funcToString.call(func); } catch (e3) { } try { return func + ""; } catch (e3) { } } return ""; } __name(toSource, "toSource"); function uniqWith2(array, comparator) { return array && array.length ? baseUniq(array, void 0, comparator) : []; } __name(uniqWith2, "uniqWith"); function eq(value, other) { return value === other || value !== value && other !== other; } __name(eq, "eq"); function isFunction3(value) { var tag = isObject3(value) ? objectToString.call(value) : ""; return tag == funcTag || tag == genTag; } __name(isFunction3, "isFunction"); function isObject3(value) { var type = typeof value; return !!value && (type == "object" || type == "function"); } __name(isObject3, "isObject"); function noop() { } __name(noop, "noop"); module.exports = uniqWith2; } }); // src/lib/configs.ts var validationEnabled = true; function setGlobalValidationEnabled(enabled) { validationEnabled = enabled; } __name(setGlobalValidationEnabled, "setGlobalValidationEnabled"); function getGlobalValidationEnabled() { return validationEnabled; } __name(getGlobalValidationEnabled, "getGlobalValidationEnabled"); // src/lib/Result.ts var Result = class { constructor(success, value, error) { this.success = success; if (success) { this.value = value; } else { this.error = error; } } isOk() { return this.success; } isErr() { return !this.success; } unwrap() { if (this.isOk()) return this.value; throw this.error; } static ok(value) { return new Result(true, value); } static err(error) { return new Result(false, void 0, error); } }; __name(Result, "Result"); // src/validators/util/getValue.ts function getValue(valueOrFn) { return typeof valueOrFn === "function" ? valueOrFn() : valueOrFn; } __name(getValue, "getValue"); // src/validators/BaseValidator.ts var BaseValidator = class { constructor(constraints = []) { this.constraints = []; this.isValidationEnabled = null; this.constraints = constraints; } get optional() { return new UnionValidator([new LiteralValidator(void 0), this.clone()]); } get nullable() { return new UnionValidator([new LiteralValidator(null), this.clone()]); } get nullish() { return new UnionValidator([new NullishValidator(), this.clone()]); } get array() { return new ArrayValidator(this.clone()); } get set() { return new SetValidator(this.clone()); } or(...predicates) { return new UnionValidator([this.clone(), ...predicates]); } transform(cb) { return this.addConstraint({ run: (input) => Result.ok(cb(input)) }); } reshape(cb) { return this.addConstraint({ run: cb }); } default(value) { return new DefaultValidator(this.clone(), value); } run(value) { let result = this.handle(value); if (result.isErr()) return result; for (const constraint of this.constraints) { result = constraint.run(result.value); if (result.isErr()) break; } return result; } parse(value) { if (!this.shouldRunConstraints) { return this.handle(value).unwrap(); } return this.constraints.reduce((v2, constraint) => constraint.run(v2).unwrap(), this.handle(value).unwrap()); } is(value) { return this.run(value).isOk(); } setValidationEnabled(isValidationEnabled) { const clone = this.clone(); clone.isValidationEnabled = isValidationEnabled; return clone; } getValidationEnabled() { return getValue(this.isValidationEnabled); } get shouldRunConstraints() { return getValue(this.isValidationEnabled) ?? getGlobalValidationEnabled(); } clone() { const clone = Reflect.construct(this.constructor, [this.constraints]); clone.isValidationEnabled = this.isValidationEnabled; return clone; } addConstraint(constraint) { const clone = this.clone(); clone.constraints = clone.constraints.concat(constraint); return clone; } }; __name(BaseValidator, "BaseValidator"); // node-modules-polyfills:node:util var e; var t; var n; var r = "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : globalThis; var o = e = {}; function i() { throw new Error("setTimeout has not been defined"); } __name(i, "i"); function u() { throw new Error("clearTimeout has not been defined"); } __name(u, "u"); function c(e3) { if (t === setTimeout) return setTimeout(e3, 0); if ((t === i || !t) && setTimeout) return t = setTimeout, setTimeout(e3, 0); try { return t(e3, 0); } catch (n3) { try { return t.call(null, e3, 0); } catch (n4) { return t.call(this || r, e3, 0); } } } __name(c, "c"); !function() { try { t = "function" == typeof setTimeout ? setTimeout : i; } catch (e3) { t = i; } try { n = "function" == typeof clearTimeout ? clearTimeout : u; } catch (e3) { n = u; } }(); var l; var s = []; var f = false; var a = -1; function h() { f && l && (f = false, l.length ? s = l.concat(s) : a = -1, s.length && d()); } __name(h, "h"); function d() { if (!f) { var e3 = c(h); f = true; for (var t3 = s.length; t3; ) { for (l = s, s = []; ++a < t3; ) l && l[a].run(); a = -1, t3 = s.length; } l = null, f = false, function(e4) { if (n === clearTimeout) return clearTimeout(e4); if ((n === u || !n) && clearTimeout) return n = clearTimeout, clearTimeout(e4); try { n(e4); } catch (t4) { try { return n.call(null, e4); } catch (t5) { return n.call(this || r, e4); } } }(e3); } } __name(d, "d"); function m(e3, t3) { (this || r).fun = e3, (this || r).array = t3; } __name(m, "m"); function p() { } __name(p, "p"); o.nextTick = function(e3) { var t3 = new Array(arguments.length - 1); if (arguments.length > 1) for (var n3 = 1; n3 < arguments.length; n3++) t3[n3 - 1] = arguments[n3]; s.push(new m(e3, t3)), 1 !== s.length || f || c(d); }, m.prototype.run = function() { (this || r).fun.apply(null, (this || r).array); }, o.title = "browser", o.browser = true, o.env = {}, o.argv = [], o.version = "", o.versions = {}, o.on = p, o.addListener = p, o.once = p, o.off = p, o.removeListener = p, o.removeAllListeners = p, o.emit = p, o.prependListener = p, o.prependOnceListener = p, o.listeners = function(e3) { return []; }, o.binding = function(e3) { throw new Error("process.binding is not supported"); }, o.cwd = function() { return "/"; }, o.chdir = function(e3) { throw new Error("process.chdir is not supported"); }, o.umask = function() { return 0; }; var T = e; T.addListener; T.argv; T.binding; T.browser; T.chdir; T.cwd; T.emit; T.env; T.listeners; T.nextTick; T.off; T.on; T.once; T.prependListener; T.prependOnceListener; T.removeAllListeners; T.removeListener; T.title; T.umask; T.version; T.versions; var t2 = "function" == typeof Symbol && "symbol" == typeof Symbol.toStringTag; var e2 = Object.prototype.toString; var o2 = /* @__PURE__ */ __name(function(o3) { return !(t2 && o3 && "object" == typeof o3 && Symbol.toStringTag in o3) && "[object Arguments]" === e2.call(o3); }, "o2"); var n2 = /* @__PURE__ */ __name(function(t3) { return !!o2(t3) || null !== t3 && "object" == typeof t3 && "number" == typeof t3.length && t3.length >= 0 && "[object Array]" !== e2.call(t3) && "[object Function]" === e2.call(t3.callee); }, "n2"); var r2 = function() { return o2(arguments); }(); o2.isLegacyArguments = n2; var l2 = r2 ? o2 : n2; var t$1 = Object.prototype.toString; var o$1 = Function.prototype.toString; var n$1 = /^\s*(?:function)?\*/; var e$1 = "function" == typeof Symbol && "symbol" == typeof Symbol.toStringTag; var r$1 = Object.getPrototypeOf; var c2 = function() { if (!e$1) return false; try { return Function("return function*() {}")(); } catch (t3) { } }(); var u2 = c2 ? r$1(c2) : {}; var i2 = /* @__PURE__ */ __name(function(c3) { return "function" == typeof c3 && (!!n$1.test(o$1.call(c3)) || (e$1 ? r$1(c3) === u2 : "[object GeneratorFunction]" === t$1.call(c3))); }, "i2"); var t$2 = "function" == typeof Object.create ? function(t3, e3) { e3 && (t3.super_ = e3, t3.prototype = Object.create(e3.prototype, { constructor: { value: t3, enumerable: false, writable: true, configurable: true } })); } : function(t3, e3) { if (e3) { t3.super_ = e3; var o3 = /* @__PURE__ */ __name(function() { }, "o3"); o3.prototype = e3.prototype, t3.prototype = new o3(), t3.prototype.constructor = t3; } }; var i$1 = /* @__PURE__ */ __name(function(e3) { return e3 && "object" == typeof e3 && "function" == typeof e3.copy && "function" == typeof e3.fill && "function" == typeof e3.readUInt8; }, "i$1"); var o$2 = {}; var u$1 = i$1; var f2 = l2; var a2 = i2; function c$1(e3) { return e3.call.bind(e3); } __name(c$1, "c$1"); var s2 = "undefined" != typeof BigInt; var p2 = "undefined" != typeof Symbol; var y = p2 && void 0 !== Symbol.toStringTag; var l$1 = "undefined" != typeof Uint8Array; var d2 = "undefined" != typeof ArrayBuffer; if (l$1 && y) var g = Object.getPrototypeOf(Uint8Array.prototype), b = c$1(Object.getOwnPropertyDescriptor(g, Symbol.toStringTag).get); var m2 = c$1(Object.prototype.toString); var h2 = c$1(Number.prototype.valueOf); var j = c$1(String.prototype.valueOf); var A = c$1(Boolean.prototype.valueOf); if (s2) var w = c$1(BigInt.prototype.valueOf); if (p2) var v = c$1(Symbol.prototype.valueOf); function O(e3, t3) { if ("object" != typeof e3) return false; try { return t3(e3), true; } catch (e4) { return false; } } __name(O, "O"); function S(e3) { return l$1 && y ? void 0 !== b(e3) : B(e3) || k(e3) || E(e3) || D(e3) || U(e3) || P(e3) || x(e3) || I(e3) || M(e3) || z(e3) || F(e3); } __name(S, "S"); function B(e3) { return l$1 && y ? "Uint8Array" === b(e3) : "[object Uint8Array]" === m2(e3) || u$1(e3) && void 0 !== e3.buffer; } __name(B, "B"); function k(e3) { return l$1 && y ? "Uint8ClampedArray" === b(e3) : "[object Uint8ClampedArray]" === m2(e3); } __name(k, "k"); function E(e3) { return l$1 && y ? "Uint16Array" === b(e3) : "[object Uint16Array]" === m2(e3); } __name(E, "E"); function D(e3) { return l$1 && y ? "Uint32Array" === b(e3) : "[object Uint32Array]" === m2(e3); } __name(D, "D"); function U(e3) { return l$1 && y ? "Int8Array" === b(e3) : "[object Int8Array]" === m2(e3); } __name(U, "U"); function P(e3) { return l$1 && y ? "Int16Array" === b(e3) : "[object Int16Array]" === m2(e3); } __name(P, "P"); function x(e3) { return l$1 && y ? "Int32Array" === b(e3) : "[object Int32Array]" === m2(e3); } __name(x, "x"); function I(e3) { return l$1 && y ? "Float32Array" === b(e3) : "[object Float32Array]" === m2(e3); } __name(I, "I"); function M(e3) { return l$1 && y ? "Float64Array" === b(e3) : "[object Float64Array]" === m2(e3); } __name(M, "M"); function z(e3) { return l$1 && y ? "BigInt64Array" === b(e3) : "[object BigInt64Array]" === m2(e3); } __name(z, "z"); function F(e3) { return l$1 && y ? "BigUint64Array" === b(e3) : "[object BigUint64Array]" === m2(e3); } __name(F, "F"); function T2(e3) { return "[object Map]" === m2(e3); } __name(T2, "T2"); function N(e3) { return "[object Set]" === m2(e3); } __name(N, "N"); function W(e3) { return "[object WeakMap]" === m2(e3); } __name(W, "W"); function $(e3) { return "[object WeakSet]" === m2(e3); } __name($, "$"); function C(e3) { return "[object ArrayBuffer]" === m2(e3); } __name(C, "C"); function V(e3) { return "undefined" != typeof ArrayBuffer && (C.working ? C(e3) : e3 instanceof ArrayBuffer); } __name(V, "V"); function G(e3) { return "[object DataView]" === m2(e3); } __name(G, "G"); function R(e3) { return "undefined" != typeof DataView && (G.working ? G(e3) : e3 instanceof DataView); } __name(R, "R"); function J(e3) { return "[object SharedArrayBuffer]" === m2(e3); } __name(J, "J"); function _(e3) { return "undefined" != typeof SharedArrayBuffer && (J.working ? J(e3) : e3 instanceof SharedArrayBuffer); } __name(_, "_"); function H(e3) { return O(e3, h2); } __name(H, "H"); function Z(e3) { return O(e3, j); } __name(Z, "Z"); function q(e3) { return O(e3, A); } __name(q, "q"); function K(e3) { return s2 && O(e3, w); } __name(K, "K"); function L(e3) { return p2 && O(e3, v); } __name(L, "L"); o$2.isArgumentsObject = f2, o$2.isGeneratorFunction = a2, o$2.isPromise = function(e3) { return "undefined" != typeof Promise && e3 instanceof Promise || null !== e3 && "object" == typeof e3 && "function" == typeof e3.then && "function" == typeof e3.catch; }, o$2.isArrayBufferView = function(e3) { return d2 && ArrayBuffer.isView ? ArrayBuffer.isView(e3) : S(e3) || R(e3); }, o$2.isTypedArray = S, o$2.isUint8Array = B, o$2.isUint8ClampedArray = k, o$2.isUint16Array = E, o$2.isUint32Array = D, o$2.isInt8Array = U, o$2.isInt16Array = P, o$2.isInt32Array = x, o$2.isFloat32Array = I, o$2.isFloat64Array = M, o$2.isBigInt64Array = z, o$2.isBigUint64Array = F, T2.working = "undefined" != typeof Map && T2(/* @__PURE__ */ new Map()), o$2.isMap = function(e3) { return "undefined" != typeof Map && (T2.working ? T2(e3) : e3 instanceof Map); }, N.working = "undefined" != typeof Set && N(/* @__PURE__ */ new Set()), o$2.isSet = function(e3) { return "undefined" != typeof Set && (N.working ? N(e3) : e3 instanceof Set); }, W.working = "undefined" != typeof WeakMap && W(/* @__PURE__ */ new WeakMap()), o$2.isWeakMap = function(e3) { return "undefined" != typeof WeakMap && (W.working ? W(e3) : e3 instanceof WeakMap); }, $.working = "undefined" != typeof WeakSet && $(/* @__PURE__ */ new WeakSet()), o$2.isWeakSet = function(e3) { return $(e3); }, C.working = "undefined" != typeof ArrayBuffer && C(new ArrayBuffer()), o$2.isArrayBuffer = V, G.working = "undefined" != typeof ArrayBuffer && "undefined" != typeof DataView && G(new DataView(new ArrayBuffer(1), 0, 1)), o$2.isDataView = R, J.working = "undefined" != typeof SharedArrayBuffer && J(new SharedArrayBuffer()), o$2.isSharedArrayBuffer = _, o$2.isAsyncFunction = function(e3) { return "[object AsyncFunction]" === m2(e3); }, o$2.isMapIterator = function(e3) { return "[object Map Iterator]" === m2(e3); }, o$2.isSetIterator = function(e3) { return "[object Set Iterator]" === m2(e3); }, o$2.isGeneratorObject = function(e3) { return "[object Generator]" === m2(e3); }, o$2.isWebAssemblyCompiledModule = function(e3) { return "[object WebAssembly.Module]" === m2(e3); }, o$2.isNumberObject = H, o$2.isStringObject = Z, o$2.isBooleanObject = q, o$2.isBigIntObject = K, o$2.isSymbolObject = L, o$2.isBoxedPrimitive = function(e3) { return H(e3) || Z(e3) || q(e3) || K(e3) || L(e3); }, o$2.isAnyArrayBuffer = function(e3) { return l$1 && (V(e3) || _(e3)); }, ["isProxy", "isExternal", "isModuleNamespaceObject"].forEach(function(e3) { Object.defineProperty(o$2, e3, { enumerable: false, value: function() { throw new Error(e3 + " is not supported in userland"); } }); }); var Q = "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : globalThis; var X = {}; var Y = T; var ee = Object.getOwnPropertyDescriptors || function(e3) { for (var t3 = Object.keys(e3), r3 = {}, n3 = 0; n3 < t3.length; n3++) r3[t3[n3]] = Object.getOwnPropertyDescriptor(e3, t3[n3]); return r3; }; var te = /%[sdj%]/g; X.format = function(e3) { if (!ge(e3)) { for (var t3 = [], r3 = 0; r3 < arguments.length; r3++) t3.push(oe(arguments[r3])); return t3.join(" "); } r3 = 1; for (var n3 = arguments, i3 = n3.length, o3 = String(e3).replace(te, function(e4) { if ("%%" === e4) return "%"; if (r3 >= i3) return e4; switch (e4) { case "%s": return String(n3[r3++]); case "%d": return Number(n3[r3++]); case "%j": try { return JSON.stringify(n3[r3++]); } catch (e5) { return "[Circular]"; } default: return e4; } }), u3 = n3[r3]; r3 < i3; u3 = n3[++r3]) le(u3) || !he(u3) ? o3 += " " + u3 : o3 += " " + oe(u3); return o3; }, X.deprecate = function(e3, t3) { if (void 0 !== Y && true === Y.noDeprecation) return e3; if (void 0 === Y) return function() { return X.deprecate(e3, t3).apply(this || Q, arguments); }; var r3 = false; return function() { if (!r3) { if (Y.throwDeprecation) throw new Error(t3); Y.traceDeprecation ? console.trace(t3) : console.error(t3), r3 = true; } return e3.apply(this || Q, arguments); }; }; var re = {}; var ne = /^$/; if (Y.env.NODE_DEBUG) { ie = Y.env.NODE_DEBUG; ie = ie.replace(/[|\\{}()[\]^$+?.]/g, "\\$&").replace(/\*/g, ".*").replace(/,/g, "$|^").toUpperCase(), ne = new RegExp("^" + ie + "$", "i"); } var ie; function oe(e3, t3) { var r3 = { seen: [], stylize: fe }; return arguments.length >= 3 && (r3.depth = arguments[2]), arguments.length >= 4 && (r3.colors = arguments[3]), ye(t3) ? r3.showHidden = t3 : t3 && X._extend(r3, t3), be(r3.showHidden) && (r3.showHidden = false), be(r3.depth) && (r3.depth = 2), be(r3.colors) && (r3.colors = false), be(r3.customInspect) && (r3.customInspect = true), r3.colors && (r3.stylize = ue), ae(r3, e3, r3.depth); } __name(oe, "oe"); function ue(e3, t3) { var r3 = oe.styles[t3]; return r3 ? "\x1B[" + oe.colors[r3][0] + "m" + e3 + "\x1B[" + oe.colors[r3][1] + "m" : e3; } __name(ue, "ue"); function fe(e3, t3) { return e3; } __name(fe, "fe"); function ae(e3, t3, r3) { if (e3.customInspect && t3 && we(t3.inspect) && t3.inspect !== X.inspect && (!t3.constructor || t3.constructor.prototype !== t3)) { var n3 = t3.inspect(r3, e3); return ge(n3) || (n3 = ae(e3, n3, r3)), n3; } var i3 = function(e4, t4) { if (be(t4)) return e4.stylize("undefined", "undefined"); if (ge(t4)) { var r4 = "'" + JSON.stringify(t4).replace(/^"|"$/g, "").replace(/'/g, "\\'").replace(/\\"/g, '"') + "'"; return e4.stylize(r4, "string"); } if (de(t4)) return e4.stylize("" + t4, "number"); if (ye(t4)) return e4.stylize("" + t4, "boolean"); if (le(t4)) return e4.stylize("null", "null"); }(e3, t3); if (i3) return i3; var o3 = Object.keys(t3), u3 = function(e4) { var t4 = {}; return e4.forEach(function(e5, r4) { t4[e5] = true; }), t4; }(o3); if (e3.showHidden && (o3 = Object.getOwnPropertyNames(t3)), Ae(t3) && (o3.indexOf("message") >= 0 || o3.indexOf("description") >= 0)) return ce(t3); if (0 === o3.length) { if (we(t3)) { var f3 = t3.name ? ": " + t3.name : ""; return e3.stylize("[Function" + f3 + "]", "special"); } if (me(t3)) return e3.stylize(RegExp.prototype.toString.call(t3), "regexp"); if (je(t3)) return e3.stylize(Date.prototype.toString.call(t3), "date"); if (Ae(t3)) return ce(t3); } var a3, c3 = "", s32 = false, p3 = ["{", "}"]; (pe(t3) && (s32 = true, p3 = ["[", "]"]), we(t3)) && (c3 = " [Function" + (t3.name ? ": " + t3.name : "") + "]"); return me(t3) && (c3 = " " + RegExp.prototype.toString.call(t3)), je(t3) && (c3 = " " + Date.prototype.toUTCString.call(t3)), Ae(t3) && (c3 = " " + ce(t3)), 0 !== o3.length || s32 && 0 != t3.length ? r3 < 0 ? me(t3) ? e3.stylize(RegExp.prototype.toString.call(t3), "regexp") : e3.stylize("[Object]", "special") : (e3.seen.push(t3), a3 = s32 ? function(e4, t4, r4, n4, i4) { for (var o4 = [], u4 = 0, f4 = t4.length; u4 < f4; ++u4) ke(t4, String(u4)) ? o4.push(se(e4, t4, r4, n4, String(u4), true)) : o4.push(""); return i4.forEach(function(i5) { i5.match(/^\d+$/) || o4.push(se(e4, t4, r4, n4, i5, true)); }), o4; }(e3, t3, r3, u3, o3) : o3.map(function(n4) { return se(e3, t3, r3, u3, n4, s32); }), e3.seen.pop(), function(e4, t4, r4) { var n4 = 0; if (e4.reduce(function(e5, t5) { return n4++, t5.indexOf("\n") >= 0 && n4++, e5 + t5.replace(/\u001b\[\d\d?m/g, "").length + 1; }, 0) > 60) return r4[0] + ("" === t4 ? "" : t4 + "\n ") + " " + e4.join(",\n ") + " " + r4[1]; return r4[0] + t4 + " " + e4.join(", ") + " " + r4[1]; }(a3, c3, p3)) : p3[0] + c3 + p3[1]; } __name(ae, "ae"); function ce(e3) { return "[" + Error.prototype.toString.call(e3) + "]"; } __name(ce, "ce"); function se(e3, t3, r3, n3, i3, o3) { var u3, f3, a3; if ((a3 = Object.getOwnPropertyDescriptor(t3, i3) || { value: t3[i3] }).get ? f3 = a3.set ? e3.stylize("[Getter/Setter]", "special") : e3.stylize("[Getter]", "special") : a3.set && (f3 = e3.stylize("[Setter]", "special")), ke(n3, i3) || (u3 = "[" + i3 + "]"), f3 || (e3.seen.indexOf(a3.value) < 0 ? (f3 = le(r3) ? ae(e3, a3.value, null) : ae(e3, a3.value, r3 - 1)).indexOf("\n") > -1 && (f3 = o3 ? f3.split("\n").map(function(e4) { return " " + e4; }).join("\n").substr(2) : "\n" + f3.split("\n").map(function(e4) { return " " + e4; }).join("\n")) : f3 = e3.stylize("[Circular]", "special")), be(u3)) { if (o3 && i3.match(/^\d+$/)) return f3; (u3 = JSON.stringify("" + i3)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/) ? (u3 = u3.substr(1, u3.length - 2), u3 = e3.stylize(u3, "name")) : (u3 = u3.replace(/'/g, "\\'").replace(/\\"/g, '"').replace(/(^"|"$)/g, "'"), u3 = e3.stylize(u3, "string")); } return u3 + ": " + f3; } __name(se, "se"); function pe(e3) { return Array.isArray(e3); } __name(pe, "pe"); function ye(e3) { return "boolean" == typeof e3; } __name(ye, "ye"); function le(e3) { return null === e3; } __name(le, "le"); function de(e3) { return "number" == typeof e3; } __name(de, "de"); function ge(e3) { return "string" == typeof e3; } __name(ge, "ge"); function be(e3) { return void 0 === e3; } __name(be, "be"); function me(e3) { return he(e3) && "[object RegExp]" === ve(e3); } __name(me, "me"); function he(e3) { return "object" == typeof e3 && null !== e3; } __name(he, "he"); function je(e3) { return he(e3) && "[object Date]" === ve(e3); } __name(je, "je"); function Ae(e3) { return he(e3) && ("[object Error]" === ve(e3) || e3 instanceof Error); } __name(Ae, "Ae"); function we(e3) { return "function" == typeof e3; } __name(we, "we"); function ve(e3) { return Object.prototype.toString.call(e3); } __name(ve, "ve"); function Oe(e3) { return e3 < 10 ? "0" + e3.toString(10) : e3.toString(10); } __name(Oe, "Oe"); X.debuglog = function(e3) { if (e3 = e3.toUpperCase(), !re[e3]) if (ne.test(e3)) { var t3 = Y.pid; re[e3] = function() { var r3 = X.format.apply(X, arguments); console.error("%s %d: %s", e3, t3, r3); }; } else re[e3] = function() { }; return re[e3]; }, X.inspect = oe, oe.colors = { bold: [1, 22], italic: [3, 23], underline: [4, 24], inverse: [7, 27], white: [37, 39], grey: [90, 39], black: [30, 39], blue: [34, 39], cyan: [36, 39], green: [32, 39], magenta: [35, 39], red: [31, 39], yellow: [33, 39] }, oe.styles = { special: "cyan", number: "yellow", boolean: "yellow", undefined: "grey", null: "bold", string: "green", date: "magenta", regexp: "red" }, X.types = o$2, X.isArray = pe, X.isBoolean = ye, X.isNull = le, X.isNullOrUndefined = function(e3) { return null == e3; }, X.isNumber = de, X.isString = ge, X.isSymbol = function(e3) { return "symbol" == typeof e3; }, X.isUndefined = be, X.isRegExp = me, X.types.isRegExp = me, X.isObject = he, X.isDate = je, X.types.isDate = je, X.isError = Ae, X.types.isNativeError = Ae, X.isFunction = we, X.isPrimitive = function(e3) { return null === e3 || "boolean" == typeof e3 || "number" == typeof e3 || "string" == typeof e3 || "symbol" == typeof e3 || void 0 === e3; }, X.isBuffer = i$1; var Se = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; function Be() { var e3 = new Date(), t3 = [Oe(e3.getHours()), Oe(e3.getMinutes()), Oe(e3.getSeconds())].join(":"); return [e3.getDate(), Se[e3.getMonth()], t3].join(" "); } __name(Be, "Be"); function ke(e3, t3) { return Object.prototype.hasOwnProperty.call(e3, t3); } __name(ke, "ke"); X.log = function() { console.log("%s - %s", Be(), X.format.apply(X, arguments)); }, X.inherits = t$2, X._extend = function(e3, t3) { if (!t3 || !he(t3)) return e3; for (var r3 = Object.keys(t3), n3 = r3.length; n3--; ) e3[r3[n3]] = t3[r3[n3]]; return e3; }; var Ee = "undefined" != typeof Symbol ? Symbol("util.promisify.custom") : void 0; function De(e3, t3) { if (!e3) { var r3 = new Error("Promise was rejected with a falsy value"); r3.reason = e3, e3 = r3; } return t3(e3); } __name(De, "De"); X.promisify = function(e3) { if ("function" != typeof e3) throw new TypeError('The "original" argument must be of type Function'); if (Ee && e3[Ee]) { var t3; if ("function" != typeof (t3 = e3[Ee])) throw new TypeError('The "util.promisify.custom" argument must be of type Function'); return Object.defineProperty(t3, Ee, { value: t3, enumerable: false, writable: false, configurable: true }), t3; } function t3() { for (var t4, r3, n3 = new Promise(function(e4, n4) { t4 = e4, r3 = n4; }), i3 = [], o3 = 0; o3 < arguments.length; o3++) i3.push(arguments[o3]); i3.push(function(e4, n4) { e4 ? r3(e4) : t4(n4); }); try { e3.apply(this || Q, i3); } catch (e4) { r3(e4); } return n3; } __name(t3, "t3"); return Object.setPrototypeOf(t3, Object.getPrototypeOf(e3)), Ee && Object.defineProperty(t3, Ee, { value: t3, enumerable: false, writable: false, configurable: true }), Object.defineProperties(t3, ee(e3)); }, X.promisify.custom = Ee, X.callbackify = function(e3) { if ("function" != typeof e3) throw new TypeError('The "original" argument must be of type Function'); function t3() { for (var t4 = [], r3 = 0; r3 < arguments.length; r3++) t4.push(arguments[r3]); var n3 = t4.pop(); if ("function" != typeof n3) throw new TypeError("The last argument must be of type Function"); var i3 = this || Q, o3 = /* @__PURE__ */ __name(function() { return n3.apply(i3, arguments); }, "o3"); e3.apply(this || Q, t4).then(function(e4) { Y.nextTick(o3.bind(null, null, e4)); }, function(e4) { Y.nextTick(De.bind(null, e4, o3)); }); } __name(t3, "t3"); return Object.setPrototypeOf(t3, Object.getPrototypeOf(e3)), Object.defineProperties(t3, ee(e3)), t3; }; X._extend; X.callbackify; X.debuglog; X.deprecate; X.format; X.inherits; X.inspect; X.isArray; X.isBoolean; X.isBuffer; X.isDate; X.isError; X.isFunction; X.isNull; X.isNullOrUndefined; X.isNumber; X.isObject; X.isPrimitive; X.isRegExp; X.isString; X.isSymbol; X.isUndefined; X.log; X.promisify; X._extend; X.callbackify; X.debuglog; X.deprecate; X.format; X.inherits; X.inspect; X.isArray; X.isBoolean; X.isBuffer; X.isDate; X.isError; X.isFunction; X.isNull; X.isNullOrUndefined; X.isNumber; X.isObject; X.isPrimitive; X.isRegExp; X.isString; X.isSymbol; X.isUndefined; X.log; X.promisify; X.types; X._extend; X.callbackify; X.debuglog; X.deprecate; X.format; X.inherits; var inspect2 = X.inspect; X.isArray; X.isBoolean; X.isBuffer; X.isDate; X.isError; X.isFunction; X.isNull; X.isNullOrUndefined; X.isNumber; X.isObject; X.isPrimitive; X.isRegExp; X.isString; X.isSymbol; X.isUndefined; X.log; X.promisify; X.types; X.TextEncoder = globalThis.TextEncoder; X.TextDecoder = globalThis.TextDecoder; // src/lib/errors/BaseError.ts var customInspectSymbol = Symbol.for("nodejs.util.inspect.custom"); var customInspectSymbolStackLess = Symbol.for("nodejs.util.inspect.custom.stack-less"); var BaseError = class extends Error { [customInspectSymbol](depth, options) { return `${this[customInspectSymbolStackLess](depth, options)} ${this.stack.slice(this.stack.indexOf("\n"))}`; } }; __name(BaseError, "BaseError"); // src/lib/errors/BaseConstraintError.ts var BaseConstraintError = class extends BaseError { constructor(constraint, message, given) { super(message); this.constraint = constraint; this.given = given; } }; __name(BaseConstraintError, "BaseConstraintError"); // src/lib/errors/ExpectedConstraintError.ts var ExpectedConstraintError = class extends BaseConstraintError { constructor(constraint, message, given, expected) { super(constraint, message, given); this.expected = expected; } toJSON() { return { name: this.name, constraint: this.constraint, given: this.given, expected: this.expected }; } [customInspectSymbolStackLess](depth, options) { const constraint = options.stylize(this.constraint, "string"); if (depth < 0) { return options.stylize(`[ExpectedConstraintError: ${constraint}]`, "special"); } const newOptions = { ...options, depth: options.depth === null ? null : options.depth - 1 }; const padding = ` ${options.stylize("|", "undefined")} `; const given = inspect2(this.given, newOptions).replace(/\n/g, padding); const header = `${options.stylize("ExpectedConstraintError", "special")} > ${constraint}`; const message = options.stylize(this.message, "regexp"); const expectedBlock = ` ${options.stylize("Expected: ", "string")}${options.stylize(this.expected, "boolean")}`; const givenBlock = ` ${options.stylize("Received:", "regexp")}${padding}${given}`; return `${header} ${message} ${expectedBlock} ${givenBlock}`; } }; __name(ExpectedConstraintError, "ExpectedConstraintError"); // src/constraints/util/isUnique.ts var import_es6 = __toESM(require_es6()); var import_lodash = __toESM(require_lodash()); function isUnique(input) { if (input.length < 2) return true; const uniqueArray2 = (0, import_lodash.default)(input, import_es6.default); return uniqueArray2.length === input.length; } __name(isUnique, "isUnique"); // src/constraints/util/operators.ts function lessThan(a3, b2) { return a3 < b2; } __name(lessThan, "lessThan"); function lessThanOrEqual(a3, b2) { return a3 <= b2; } __name(lessThanOrEqual, "lessThanOrEqual"); function greaterThan(a3, b2) { return a3 > b2; } __name(greaterThan, "greaterThan"); function greaterThanOrEqual(a3, b2) { return a3 >= b2; } __name(greaterThanOrEqual, "greaterThanOrEqual"); function equal(a3, b2) { return a3 === b2; } __name(equal, "equal"); function notEqual(a3, b2) { return a3 !== b2; } __name(notEqual, "notEqual"); // src/constraints/ArrayConstraints.ts function arrayLengthComparator(comparator, name, expected, length) { return { run(input) { return comparator(input.length, length) ? Result.ok(input) : Result.err(new ExpectedConstraintError(name, "Invalid Array length", input, expected)); } }; } __name(arrayLengthComparator, "arrayLengthComparator"); function arrayLengthLessThan(value) { const expected = `expected.length < ${value}`; return arrayLengthComparator(lessThan, "s.array(T).lengthLessThan", expected, value); } __name(arrayLengthLessThan, "arrayLengthLessThan"); function arrayLengthLessThanOrEqual(value) { const expected = `expected.length <= ${value}`; return arrayLengthComparator(lessThanOrEqual, "s.array(T).lengthLessThanOrEqual", expected, value); } __name(arrayLengthLessThanOrEqual, "arrayLengthLessThanOrEqual"); function arrayLengthGreaterThan(value) { const expected = `expected.length > ${value}`; return arrayLengthComparator(greaterThan, "s.array(T).lengthGreaterThan", expected, value); } __name(arrayLengthGreaterThan, "arrayLengthGreaterThan"); function arrayLengthGreaterThanOrEqual(value) { const expected = `expected.length >= ${value}`; return arrayLengthComparator(greaterThanOrEqual, "s.array(T).lengthGreaterThanOrEqual", expected, value); } __name(arrayLengthGreaterThanOrEqual, "arrayLengthGreaterThanOrEqual"); function arrayLengthEqual(value) { const expected = `expected.length === ${value}`; return arrayLengthComparator(equal, "s.array(T).lengthEqual", expected, value); } __name(arrayLengthEqual, "arrayLengthEqual"); function arrayLengthNotEqual(value) { const expected = `expected.length !== ${valu