Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); //#region src/core/validator.ts const string = (value) => typeof value === "string"; const number = (value) => typeof value === "number"; const boolean = (value) => typeof value === "boolean"; const bigint = (value) => typeof value === "bigint"; /** Matches an instance of the given constructor. */ function instanceOf(ctor) { return (value) => value instanceof ctor; } /** Matches when any of the given validators match. */ function union(...validators) { return (value) => { for (let i = 0, len = validators.length; i < len; i++) if (validators[i](value)) return true; return false; }; } /** Matches the given validator or `undefined`. */ function optional(validator) { return (value) => value === void 0 || validator(value); } /** Matches an array whose items each match `item`. */ function array(item) { return (value) => { if (!Array.isArray(value)) return false; for (let i = 0, len = value.length; i < len; i++) if (!item(value[i])) return false; return true; }; } /** * Matches an object whose declared keys each pass their validator. Extra keys * are not checked. */ function object(shape) { const keys = Object.keys(shape); return (value) => { if (value == null || typeof value !== "object") return false; for (let i = 0, len = keys.length; i < len; i++) { const key = keys[i]; if (!shape[key](Reflect.get(value, key))) return false; } return true; }; } //#endregion exports.array = array; exports.bigint = bigint; exports.boolean = boolean; exports.instanceOf = instanceOf; exports.number = number; exports.object = object; exports.optional = optional; exports.string = string; exports.union = union;