diff --git a/dist/index.js b/dist/index.js index f77c9ba..5838cd5 100644 --- a/dist/index.js +++ b/dist/index.js @@ -42930,7 +42930,7 @@ exports["default"] = z; "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.toUpperCase = exports.toLowerCase = exports.trim = exports.normalize = exports.overwrite = exports.mime = exports.property = exports.endsWith = exports.startsWith = exports.includes = exports.uppercase = exports.lowercase = exports.regex = exports.length = exports.minLength = exports.maxLength = exports.size = exports.minSize = exports.maxSize = exports.multipleOf = exports.nonnegative = exports.nonpositive = exports.negative = exports.positive = exports.gte = exports.gt = exports.lte = exports.lt = void 0; +exports.slugify = exports.toUpperCase = exports.toLowerCase = exports.trim = exports.normalize = exports.overwrite = exports.mime = exports.property = exports.endsWith = exports.startsWith = exports.includes = exports.uppercase = exports.lowercase = exports.regex = exports.length = exports.minLength = exports.maxLength = exports.size = exports.minSize = exports.maxSize = exports.multipleOf = exports.nonnegative = exports.nonpositive = exports.negative = exports.positive = exports.gte = exports.gt = exports.lte = exports.lt = void 0; var index_js_1 = __nccwpck_require__(8117); Object.defineProperty(exports, "lt", ({ enumerable: true, get: function () { return index_js_1._lt; } })); Object.defineProperty(exports, "lte", ({ enumerable: true, get: function () { return index_js_1._lte; } })); @@ -42960,6 +42960,7 @@ Object.defineProperty(exports, "normalize", ({ enumerable: true, get: function ( Object.defineProperty(exports, "trim", ({ enumerable: true, get: function () { return index_js_1._trim; } })); Object.defineProperty(exports, "toLowerCase", ({ enumerable: true, get: function () { return index_js_1._toLowerCase; } })); Object.defineProperty(exports, "toUpperCase", ({ enumerable: true, get: function () { return index_js_1._toUpperCase; } })); +Object.defineProperty(exports, "slugify", ({ enumerable: true, get: function () { return index_js_1._slugify; } })); /***/ }), @@ -43394,8 +43395,8 @@ var __importStar = (this && this.__importStar) || function (mod) { return result; }; Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.ZodTransform = exports.ZodFile = exports.ZodLiteral = exports.ZodEnum = exports.ZodSet = exports.ZodMap = exports.ZodRecord = exports.ZodTuple = exports.ZodIntersection = exports.ZodDiscriminatedUnion = exports.ZodUnion = exports.ZodObject = exports.ZodArray = exports.ZodDate = exports.ZodVoid = exports.ZodNever = exports.ZodUnknown = exports.ZodAny = exports.ZodNull = exports.ZodUndefined = exports.ZodSymbol = exports.ZodBigIntFormat = exports.ZodBigInt = exports.ZodBoolean = exports.ZodNumberFormat = exports.ZodNumber = exports.ZodCustomStringFormat = exports.ZodJWT = exports.ZodE164 = exports.ZodBase64URL = exports.ZodBase64 = exports.ZodCIDRv6 = exports.ZodCIDRv4 = exports.ZodIPv6 = exports.ZodIPv4 = exports.ZodKSUID = exports.ZodXID = exports.ZodULID = exports.ZodCUID2 = exports.ZodCUID = exports.ZodNanoID = exports.ZodEmoji = exports.ZodURL = exports.ZodUUID = exports.ZodGUID = exports.ZodEmail = exports.ZodStringFormat = exports.ZodString = exports._ZodString = exports.ZodType = void 0; -exports.stringbool = exports.ZodCustom = exports.ZodFunction = exports.ZodPromise = exports.ZodLazy = exports.ZodTemplateLiteral = exports.ZodReadonly = exports.ZodCodec = exports.ZodPipe = exports.ZodNaN = exports.ZodCatch = exports.ZodSuccess = exports.ZodNonOptional = exports.ZodPrefault = exports.ZodDefault = exports.ZodNullable = exports.ZodOptional = void 0; +exports.ZodFile = exports.ZodLiteral = exports.ZodEnum = exports.ZodSet = exports.ZodMap = exports.ZodRecord = exports.ZodTuple = exports.ZodIntersection = exports.ZodDiscriminatedUnion = exports.ZodUnion = exports.ZodObject = exports.ZodArray = exports.ZodDate = exports.ZodVoid = exports.ZodNever = exports.ZodUnknown = exports.ZodAny = exports.ZodNull = exports.ZodUndefined = exports.ZodSymbol = exports.ZodBigIntFormat = exports.ZodBigInt = exports.ZodBoolean = exports.ZodNumberFormat = exports.ZodNumber = exports.ZodCustomStringFormat = exports.ZodJWT = exports.ZodE164 = exports.ZodBase64URL = exports.ZodBase64 = exports.ZodCIDRv6 = exports.ZodCIDRv4 = exports.ZodIPv6 = exports.ZodMAC = exports.ZodIPv4 = exports.ZodKSUID = exports.ZodXID = exports.ZodULID = exports.ZodCUID2 = exports.ZodCUID = exports.ZodNanoID = exports.ZodEmoji = exports.ZodURL = exports.ZodUUID = exports.ZodGUID = exports.ZodEmail = exports.ZodStringFormat = exports.ZodString = exports._ZodString = exports.ZodType = void 0; +exports.stringbool = exports.meta = exports.describe = exports.ZodCustom = exports.ZodFunction = exports.ZodPromise = exports.ZodLazy = exports.ZodTemplateLiteral = exports.ZodReadonly = exports.ZodCodec = exports.ZodPipe = exports.ZodNaN = exports.ZodCatch = exports.ZodSuccess = exports.ZodNonOptional = exports.ZodPrefault = exports.ZodDefault = exports.ZodNullable = exports.ZodOptional = exports.ZodTransform = void 0; exports.string = string; exports.email = email; exports.guid = guid; @@ -43413,6 +43414,7 @@ exports.ulid = ulid; exports.xid = xid; exports.ksuid = ksuid; exports.ipv4 = ipv4; +exports.mac = mac; exports.ipv6 = ipv6; exports.cidrv4 = cidrv4; exports.cidrv6 = cidrv6; @@ -43594,6 +43596,7 @@ exports._ZodString = core.$constructor("_ZodString", (inst, def) => { inst.normalize = (...args) => inst.check(checks.normalize(...args)); inst.toLowerCase = () => inst.check(checks.toLowerCase()); inst.toUpperCase = () => inst.check(checks.toUpperCase()); + inst.slugify = () => inst.check(checks.slugify()); }); exports.ZodString = core.$constructor("ZodString", (inst, def) => { core.$ZodString.init(inst, def); @@ -43748,6 +43751,14 @@ exports.ZodIPv4 = core.$constructor("ZodIPv4", (inst, def) => { function ipv4(params) { return core._ipv4(exports.ZodIPv4, params); } +exports.ZodMAC = core.$constructor("ZodMAC", (inst, def) => { + // ZodStringFormat.init(inst, def); + core.$ZodMAC.init(inst, def); + exports.ZodStringFormat.init(inst, def); +}); +function mac(params) { + return core._mac(exports.ZodMAC, params); +} exports.ZodIPv6 = core.$constructor("ZodIPv6", (inst, def) => { // ZodStringFormat.init(inst, def); core.$ZodIPv6.init(inst, def); @@ -44489,6 +44500,9 @@ function refine(fn, _params = {}) { function superRefine(fn) { return core._superRefine(fn); } +// Re-export describe and meta from core +exports.describe = core.describe; +exports.meta = core.meta; function _instanceof(cls, params = { error: `Input not instance of ${cls.name}`, }) { @@ -44572,6 +44586,7 @@ exports._xid = _xid; exports._ksuid = _ksuid; exports._ipv4 = _ipv4; exports._ipv6 = _ipv6; +exports._mac = _mac; exports._cidrv4 = _cidrv4; exports._cidrv6 = _cidrv6; exports._base64 = _base64; @@ -44639,6 +44654,7 @@ exports._normalize = _normalize; exports._trim = _trim; exports._toLowerCase = _toLowerCase; exports._toUpperCase = _toUpperCase; +exports._slugify = _slugify; exports._array = _array; exports._union = _union; exports._discriminatedUnion = _discriminatedUnion; @@ -44667,9 +44683,12 @@ exports._custom = _custom; exports._refine = _refine; exports._superRefine = _superRefine; exports._check = _check; +exports.describe = describe; +exports.meta = meta; exports._stringbool = _stringbool; exports._stringFormat = _stringFormat; const checks = __importStar(__nccwpck_require__(5880)); +const registries = __importStar(__nccwpck_require__(1446)); const schemas = __importStar(__nccwpck_require__(4433)); const util = __importStar(__nccwpck_require__(1327)); function _string(Class, params) { @@ -44832,6 +44851,15 @@ function _ipv6(Class, params) { ...util.normalizeParams(params), }); } +function _mac(Class, params) { + return new Class({ + type: "string", + format: "mac", + check: "string_format", + abort: false, + ...util.normalizeParams(params), + }); +} function _cidrv4(Class, params) { return new Class({ type: "string", @@ -45272,6 +45300,10 @@ function _toLowerCase() { function _toUpperCase() { return _overwrite((input) => input.toUpperCase()); } +// slugify +function _slugify() { + return _overwrite((input) => util.slugify(input)); +} function _array(Class, element, params) { return new Class({ type: "array", @@ -45519,6 +45551,28 @@ function _check(fn, params) { ch._zod.check = fn; return ch; } +function describe(description) { + const ch = new checks.$ZodCheck({ check: "describe" }); + ch._zod.onattach = [ + (inst) => { + const existing = registries.globalRegistry.get(inst) ?? {}; + registries.globalRegistry.add(inst, { ...existing, description }); + }, + ]; + ch._zod.check = () => { }; // no-op check + return ch; +} +function meta(metadata) { + const ch = new checks.$ZodCheck({ check: "meta" }); + ch._zod.onattach = [ + (inst) => { + const existing = registries.globalRegistry.get(inst) ?? {}; + registries.globalRegistry.add(inst, { ...existing, ...metadata }); + }, + ]; + ch._zod.check = () => { }; // no-op check + return ch; +} function _stringbool(Classes, _params) { const params = util.normalizeParams(_params); let truthyArray = params.truthy ?? ["true", "1", "yes", "on", "y", "enabled"]; @@ -46210,21 +46264,30 @@ exports.NEVER = Object.freeze({ }); function $constructor(name, initializer, params) { function init(inst, def) { - var _a; - Object.defineProperty(inst, "_zod", { - value: inst._zod ?? {}, - enumerable: false, - }); - (_a = inst._zod).traits ?? (_a.traits = new Set()); + if (!inst._zod) { + Object.defineProperty(inst, "_zod", { + value: { + def, + constr: _, + traits: new Set(), + }, + enumerable: false, + }); + } + if (inst._zod.traits.has(name)) { + return; + } inst._zod.traits.add(name); initializer(inst, def); // support prototype modifications - for (const k in _.prototype) { - if (!(k in inst)) - Object.defineProperty(inst, k, { value: _.prototype[k].bind(inst) }); + const proto = _.prototype; + const keys = Object.keys(proto); + for (let i = 0; i < keys.length; i++) { + const k = keys[i]; + if (!(k in inst)) { + inst[k] = proto[k].bind(inst); + } } - inst._zod.constr = _; - inst._zod.def = def; } // doesn't work if Parent has a constructor with arguments const Parent = params?.Parent ?? Object; @@ -46746,16 +46809,40 @@ exports.safeDecodeAsync = (0, exports._safeDecodeAsync)(errors.$ZodRealError); /***/ }), /***/ 5592: -/***/ ((__unused_webpack_module, exports) => { +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { "use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.sha384_base64 = exports.sha384_hex = exports.sha256_base64url = exports.sha256_base64 = exports.sha256_hex = exports.sha1_base64url = exports.sha1_base64 = exports.sha1_hex = exports.md5_base64url = exports.md5_base64 = exports.md5_hex = exports.hex = exports.uppercase = exports.lowercase = exports.undefined = exports["null"] = exports.boolean = exports.number = exports.integer = exports.bigint = exports.string = exports.date = exports.e164 = exports.domain = exports.hostname = exports.base64url = exports.base64 = exports.cidrv6 = exports.cidrv4 = exports.ipv6 = exports.ipv4 = exports.browserEmail = exports.idnEmail = exports.unicodeEmail = exports.rfc5322Email = exports.html5Email = exports.email = exports.uuid7 = exports.uuid6 = exports.uuid4 = exports.uuid = exports.guid = exports.extendedDuration = exports.duration = exports.nanoid = exports.ksuid = exports.xid = exports.ulid = exports.cuid2 = exports.cuid = void 0; -exports.sha512_base64url = exports.sha512_base64 = exports.sha512_hex = exports.sha384_base64url = void 0; +exports.sha384_hex = exports.sha256_base64url = exports.sha256_base64 = exports.sha256_hex = exports.sha1_base64url = exports.sha1_base64 = exports.sha1_hex = exports.md5_base64url = exports.md5_base64 = exports.md5_hex = exports.hex = exports.uppercase = exports.lowercase = exports.undefined = exports["null"] = exports.boolean = exports.number = exports.integer = exports.bigint = exports.string = exports.date = exports.e164 = exports.domain = exports.hostname = exports.base64url = exports.base64 = exports.cidrv6 = exports.cidrv4 = exports.mac = exports.ipv6 = exports.ipv4 = exports.browserEmail = exports.idnEmail = exports.unicodeEmail = exports.rfc5322Email = exports.html5Email = exports.email = exports.uuid7 = exports.uuid6 = exports.uuid4 = exports.uuid = exports.guid = exports.extendedDuration = exports.duration = exports.nanoid = exports.ksuid = exports.xid = exports.ulid = exports.cuid2 = exports.cuid = void 0; +exports.sha512_base64url = exports.sha512_base64 = exports.sha512_hex = exports.sha384_base64url = exports.sha384_base64 = void 0; exports.emoji = emoji; exports.time = time; exports.datetime = datetime; +const util = __importStar(__nccwpck_require__(1327)); exports.cuid = /^[cC][^\s-]{8,}$/; exports.cuid2 = /^[0-9a-z]+$/; exports.ulid = /^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/; @@ -46797,6 +46884,11 @@ function emoji() { } exports.ipv4 = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/; exports.ipv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/; +const mac = (delimiter) => { + const escapedDelim = util.escapeRegex(delimiter ?? ":"); + return new RegExp(`^(?:[0-9A-F]{2}${escapedDelim}){5}[0-9A-F]{2}$|^(?:[0-9a-f]{2}${escapedDelim}){5}[0-9a-f]{2}$`); +}; +exports.mac = mac; exports.cidrv4 = /^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/; exports.cidrv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/; // https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript @@ -46894,6 +46986,7 @@ exports.sha512_base64url = fixedBase64url(86); "use strict"; +var _a; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.globalRegistry = exports.$ZodRegistry = exports.$input = exports.$output = void 0; exports.registry = registry; @@ -46949,7 +47042,8 @@ exports.$ZodRegistry = $ZodRegistry; function registry() { return new $ZodRegistry(); } -exports.globalRegistry = registry(); +(_a = globalThis).__zod_globalRegistry ?? (_a.__zod_globalRegistry = registry()); +exports.globalRegistry = globalThis.__zod_globalRegistry; /***/ }), @@ -46983,8 +47077,8 @@ var __importStar = (this && this.__importStar) || function (mod) { return result; }; Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.$ZodMap = exports.$ZodRecord = exports.$ZodTuple = exports.$ZodIntersection = exports.$ZodDiscriminatedUnion = exports.$ZodUnion = exports.$ZodObjectJIT = exports.$ZodObject = exports.$ZodArray = exports.$ZodDate = exports.$ZodVoid = exports.$ZodNever = exports.$ZodUnknown = exports.$ZodAny = exports.$ZodNull = exports.$ZodUndefined = exports.$ZodSymbol = exports.$ZodBigIntFormat = exports.$ZodBigInt = exports.$ZodBoolean = exports.$ZodNumberFormat = exports.$ZodNumber = exports.$ZodCustomStringFormat = exports.$ZodJWT = exports.$ZodE164 = exports.$ZodBase64URL = exports.$ZodBase64 = exports.$ZodCIDRv6 = exports.$ZodCIDRv4 = exports.$ZodIPv6 = exports.$ZodIPv4 = exports.$ZodISODuration = exports.$ZodISOTime = exports.$ZodISODate = exports.$ZodISODateTime = exports.$ZodKSUID = exports.$ZodXID = exports.$ZodULID = exports.$ZodCUID2 = exports.$ZodCUID = exports.$ZodNanoID = exports.$ZodEmoji = exports.$ZodURL = exports.$ZodEmail = exports.$ZodUUID = exports.$ZodGUID = exports.$ZodStringFormat = exports.$ZodString = exports.clone = exports.$ZodType = void 0; -exports.$ZodCustom = exports.$ZodLazy = exports.$ZodPromise = exports.$ZodFunction = exports.$ZodTemplateLiteral = exports.$ZodReadonly = exports.$ZodCodec = exports.$ZodPipe = exports.$ZodNaN = exports.$ZodCatch = exports.$ZodSuccess = exports.$ZodNonOptional = exports.$ZodPrefault = exports.$ZodDefault = exports.$ZodNullable = exports.$ZodOptional = exports.$ZodTransform = exports.$ZodFile = exports.$ZodLiteral = exports.$ZodEnum = exports.$ZodSet = void 0; +exports.$ZodRecord = exports.$ZodTuple = exports.$ZodIntersection = exports.$ZodDiscriminatedUnion = exports.$ZodUnion = exports.$ZodObjectJIT = exports.$ZodObject = exports.$ZodArray = exports.$ZodDate = exports.$ZodVoid = exports.$ZodNever = exports.$ZodUnknown = exports.$ZodAny = exports.$ZodNull = exports.$ZodUndefined = exports.$ZodSymbol = exports.$ZodBigIntFormat = exports.$ZodBigInt = exports.$ZodBoolean = exports.$ZodNumberFormat = exports.$ZodNumber = exports.$ZodCustomStringFormat = exports.$ZodJWT = exports.$ZodE164 = exports.$ZodBase64URL = exports.$ZodBase64 = exports.$ZodCIDRv6 = exports.$ZodCIDRv4 = exports.$ZodMAC = exports.$ZodIPv6 = exports.$ZodIPv4 = exports.$ZodISODuration = exports.$ZodISOTime = exports.$ZodISODate = exports.$ZodISODateTime = exports.$ZodKSUID = exports.$ZodXID = exports.$ZodULID = exports.$ZodCUID2 = exports.$ZodCUID = exports.$ZodNanoID = exports.$ZodEmoji = exports.$ZodURL = exports.$ZodEmail = exports.$ZodUUID = exports.$ZodGUID = exports.$ZodStringFormat = exports.$ZodString = exports.clone = exports.$ZodType = void 0; +exports.$ZodCustom = exports.$ZodLazy = exports.$ZodPromise = exports.$ZodFunction = exports.$ZodTemplateLiteral = exports.$ZodReadonly = exports.$ZodCodec = exports.$ZodPipe = exports.$ZodNaN = exports.$ZodCatch = exports.$ZodSuccess = exports.$ZodNonOptional = exports.$ZodPrefault = exports.$ZodDefault = exports.$ZodNullable = exports.$ZodOptional = exports.$ZodTransform = exports.$ZodFile = exports.$ZodLiteral = exports.$ZodEnum = exports.$ZodSet = exports.$ZodMap = void 0; exports.isValidBase64 = isValidBase64; exports.isValidBase64URL = isValidBase64URL; exports.isValidJWT = isValidJWT; @@ -47197,7 +47291,7 @@ exports.$ZodURL = core.$constructor("$ZodURL", (inst, def) => { code: "invalid_format", format: "url", note: "Invalid hostname", - pattern: regexes.hostname.source, + pattern: def.hostname.source, input: payload.value, inst, continue: !def.abort, @@ -47287,18 +47381,12 @@ exports.$ZodISODuration = core.$constructor("$ZodISODuration", (inst, def) => { exports.$ZodIPv4 = core.$constructor("$ZodIPv4", (inst, def) => { def.pattern ?? (def.pattern = regexes.ipv4); exports.$ZodStringFormat.init(inst, def); - inst._zod.onattach.push((inst) => { - const bag = inst._zod.bag; - bag.format = `ipv4`; - }); + inst._zod.bag.format = `ipv4`; }); exports.$ZodIPv6 = core.$constructor("$ZodIPv6", (inst, def) => { def.pattern ?? (def.pattern = regexes.ipv6); exports.$ZodStringFormat.init(inst, def); - inst._zod.onattach.push((inst) => { - const bag = inst._zod.bag; - bag.format = `ipv6`; - }); + inst._zod.bag.format = `ipv6`; inst._zod.check = (payload) => { try { // @ts-ignore @@ -47316,6 +47404,11 @@ exports.$ZodIPv6 = core.$constructor("$ZodIPv6", (inst, def) => { } }; }); +exports.$ZodMAC = core.$constructor("$ZodMAC", (inst, def) => { + def.pattern ?? (def.pattern = regexes.mac(def.delimiter)); + exports.$ZodStringFormat.init(inst, def); + inst._zod.bag.format = `mac`; +}); exports.$ZodCIDRv4 = core.$constructor("$ZodCIDRv4", (inst, def) => { def.pattern ?? (def.pattern = regexes.cidrv4); exports.$ZodStringFormat.init(inst, def); @@ -47368,9 +47461,7 @@ function isValidBase64(data) { exports.$ZodBase64 = core.$constructor("$ZodBase64", (inst, def) => { def.pattern ?? (def.pattern = regexes.base64); exports.$ZodStringFormat.init(inst, def); - inst._zod.onattach.push((inst) => { - inst._zod.bag.contentEncoding = "base64"; - }); + inst._zod.bag.contentEncoding = "base64"; inst._zod.check = (payload) => { if (isValidBase64(payload.value)) return; @@ -47394,9 +47485,7 @@ function isValidBase64URL(data) { exports.$ZodBase64URL = core.$constructor("$ZodBase64URL", (inst, def) => { def.pattern ?? (def.pattern = regexes.base64url); exports.$ZodStringFormat.init(inst, def); - inst._zod.onattach.push((inst) => { - inst._zod.bag.contentEncoding = "base64url"; - }); + inst._zod.bag.contentEncoding = "base64url"; inst._zod.check = (payload) => { if (isValidBase64URL(payload.value)) return; @@ -47494,9 +47583,9 @@ exports.$ZodNumber = core.$constructor("$ZodNumber", (inst, def) => { return payload; }; }); -exports.$ZodNumberFormat = core.$constructor("$ZodNumber", (inst, def) => { +exports.$ZodNumberFormat = core.$constructor("$ZodNumberFormat", (inst, def) => { checks.$ZodCheckNumberFormat.init(inst, def); - exports.$ZodNumber.init(inst, def); // no format checksp + exports.$ZodNumber.init(inst, def); // no format checks }); exports.$ZodBoolean = core.$constructor("$ZodBoolean", (inst, def) => { exports.$ZodType.init(inst, def); @@ -47539,7 +47628,7 @@ exports.$ZodBigInt = core.$constructor("$ZodBigInt", (inst, def) => { return payload; }; }); -exports.$ZodBigIntFormat = core.$constructor("$ZodBigInt", (inst, def) => { +exports.$ZodBigIntFormat = core.$constructor("$ZodBigIntFormat", (inst, def) => { checks.$ZodCheckBigIntFormat.init(inst, def); exports.$ZodBigInt.init(inst, def); // no format checks }); @@ -47728,7 +47817,7 @@ function handleCatchall(proms, input, payload, ctx, def, inst) { const keySet = def.keySet; const _catchall = def.catchall._zod; const t = _catchall.def.type; - for (const key of Object.keys(input)) { + for (const key in input) { if (keySet.has(key)) continue; if (t === "never") { @@ -48116,7 +48205,6 @@ function handleIntersectionResults(result, left, right) { exports.$ZodTuple = core.$constructor("$ZodTuple", (inst, def) => { exports.$ZodType.init(inst, def); const items = def.items; - const optStart = items.length - [...items].reverse().findIndex((item) => item._zod.optin !== "optional"); inst._zod.parse = (payload, ctx) => { const input = payload.value; if (!Array.isArray(input)) { @@ -48130,6 +48218,8 @@ exports.$ZodTuple = core.$constructor("$ZodTuple", (inst, def) => { } payload.value = []; const proms = []; + const reversedIndex = [...items].reverse().findIndex((item) => item._zod.optin !== "optional"); + const optStart = reversedIndex === -1 ? 0 : items.length - reversedIndex; if (!def.rest) { const tooBig = input.length > items.length; const tooSmall = input.length < optStart - 1; @@ -48201,11 +48291,13 @@ exports.$ZodRecord = core.$constructor("$ZodRecord", (inst, def) => { return payload; } const proms = []; - if (def.keyType._zod.values) { - const values = def.keyType._zod.values; + const values = def.keyType._zod.values; + if (values) { payload.value = {}; + const recordKeys = new Set(); for (const key of values) { if (typeof key === "string" || typeof key === "number" || typeof key === "symbol") { + recordKeys.add(typeof key === "number" ? key.toString() : key); const result = def.valueType._zod.run({ value: input[key], issues: [] }, ctx); if (result instanceof Promise) { proms.push(result.then((result) => { @@ -48225,7 +48317,7 @@ exports.$ZodRecord = core.$constructor("$ZodRecord", (inst, def) => { } let unrecognized; for (const key in input) { - if (!values.has(key)) { + if (!recordKeys.has(key)) { unrecognized = unrecognized ?? []; unrecognized.push(key); } @@ -48409,13 +48501,14 @@ exports.$ZodLiteral = core.$constructor("$ZodLiteral", (inst, def) => { if (def.values.length === 0) { throw new Error("Cannot create literal schema with no valid values"); } - inst._zod.values = new Set(def.values); + const values = new Set(def.values); + inst._zod.values = values; inst._zod.pattern = new RegExp(`^(${def.values .map((o) => (typeof o === "string" ? util.escapeRegex(o) : o ? util.escapeRegex(o.toString()) : String(o))) .join("|")})$`); inst._zod.parse = (payload, _ctx) => { const input = payload.value; - if (inst._zod.values.has(input)) { + if (values.has(input)) { return payload; } payload.issues.push({ @@ -48743,8 +48836,8 @@ exports.$ZodReadonly = core.$constructor("$ZodReadonly", (inst, def) => { exports.$ZodType.init(inst, def); util.defineLazy(inst._zod, "propValues", () => def.innerType._zod.propValues); util.defineLazy(inst._zod, "values", () => def.innerType._zod.values); - util.defineLazy(inst._zod, "optin", () => def.innerType._zod.optin); - util.defineLazy(inst._zod, "optout", () => def.innerType._zod.optout); + util.defineLazy(inst._zod, "optin", () => def.innerType?._zod?.optin); + util.defineLazy(inst._zod, "optout", () => def.innerType?._zod?.optout); inst._zod.parse = (payload, ctx) => { if (ctx.direction === "backward") { return def.innerType._zod.run(payload, ctx); @@ -48904,10 +48997,10 @@ exports.$ZodLazy = core.$constructor("$ZodLazy", (inst, def) => { // return () => _innerType; // }); util.defineLazy(inst._zod, "innerType", () => def.getter()); - util.defineLazy(inst._zod, "pattern", () => inst._zod.innerType._zod.pattern); - util.defineLazy(inst._zod, "propValues", () => inst._zod.innerType._zod.propValues); - util.defineLazy(inst._zod, "optin", () => inst._zod.innerType._zod.optin ?? undefined); - util.defineLazy(inst._zod, "optout", () => inst._zod.innerType._zod.optout ?? undefined); + util.defineLazy(inst._zod, "pattern", () => inst._zod.innerType?._zod?.pattern); + util.defineLazy(inst._zod, "propValues", () => inst._zod.innerType?._zod?.propValues); + util.defineLazy(inst._zod, "optin", () => inst._zod.innerType?._zod?.optin ?? undefined); + util.defineLazy(inst._zod, "optout", () => inst._zod.innerType?._zod?.optout ?? undefined); inst._zod.parse = (payload, ctx) => { const inner = inst._zod.innerType; return inner._zod.run(payload, ctx); @@ -49206,11 +49299,19 @@ class JSONSchemaGenerator { } case "union": { const json = _json; + // Discriminated unions use oneOf (exactly one match) instead of anyOf (one or more matches) + // because the discriminator field ensures mutual exclusivity between options in JSON Schema + const isDiscriminated = def.discriminator !== undefined; const options = def.options.map((x, i) => this.process(x, { ...params, - path: [...params.path, "anyOf", i], + path: [...params.path, isDiscriminated ? "oneOf" : "anyOf", i], })); - json.anyOf = options; + if (isDiscriminated) { + json.oneOf = options; + } + else { + json.anyOf = options; + } break; } case "intersection": { @@ -49775,102 +49876,57 @@ function isTransforming(_schema, _ctx) { if (ctx.seen.has(_schema)) return false; ctx.seen.add(_schema); - const schema = _schema; - const def = schema._zod.def; - switch (def.type) { - case "string": - case "number": - case "bigint": - case "boolean": - case "date": - case "symbol": - case "undefined": - case "null": - case "any": - case "unknown": - case "never": - case "void": - case "literal": - case "enum": - case "nan": - case "file": - case "template_literal": - return false; - case "array": { - return isTransforming(def.element, ctx); - } - case "object": { - for (const key in def.shape) { - if (isTransforming(def.shape[key], ctx)) - return true; - } - return false; - } - case "union": { - for (const option of def.options) { - if (isTransforming(option, ctx)) - return true; - } - return false; - } - case "intersection": { - return isTransforming(def.left, ctx) || isTransforming(def.right, ctx); - } - case "tuple": { - for (const item of def.items) { - if (isTransforming(item, ctx)) - return true; - } - if (def.rest && isTransforming(def.rest, ctx)) + const def = _schema._zod.def; + if (def.type === "transform") + return true; + if (def.type === "array") + return isTransforming(def.element, ctx); + if (def.type === "set") + return isTransforming(def.valueType, ctx); + if (def.type === "lazy") + return isTransforming(def.getter(), ctx); + if (def.type === "promise" || + def.type === "optional" || + def.type === "nonoptional" || + def.type === "nullable" || + def.type === "readonly" || + def.type === "default" || + def.type === "prefault") { + return isTransforming(def.innerType, ctx); + } + if (def.type === "intersection") { + return isTransforming(def.left, ctx) || isTransforming(def.right, ctx); + } + if (def.type === "record" || def.type === "map") { + return isTransforming(def.keyType, ctx) || isTransforming(def.valueType, ctx); + } + if (def.type === "pipe") { + return isTransforming(def.in, ctx) || isTransforming(def.out, ctx); + } + if (def.type === "object") { + for (const key in def.shape) { + if (isTransforming(def.shape[key], ctx)) return true; - return false; - } - case "record": { - return isTransforming(def.keyType, ctx) || isTransforming(def.valueType, ctx); - } - case "map": { - return isTransforming(def.keyType, ctx) || isTransforming(def.valueType, ctx); } - case "set": { - return isTransforming(def.valueType, ctx); - } - // inner types - case "promise": - case "optional": - case "nonoptional": - case "nullable": - case "readonly": - return isTransforming(def.innerType, ctx); - case "lazy": - return isTransforming(def.getter(), ctx); - case "default": { - return isTransforming(def.innerType, ctx); - } - case "prefault": { - return isTransforming(def.innerType, ctx); + return false; + } + if (def.type === "union") { + for (const option of def.options) { + if (isTransforming(option, ctx)) + return true; } - case "custom": { - return false; + return false; + } + if (def.type === "tuple") { + for (const item of def.items) { + if (isTransforming(item, ctx)) + return true; } - case "transform": { + if (def.rest && isTransforming(def.rest, ctx)) return true; - } - case "pipe": { - return isTransforming(def.in, ctx) || isTransforming(def.out, ctx); - } - case "success": { - return false; - } - case "catch": { - return false; - } - case "function": { - return false; - } - default: - def; + return false; } - throw new Error(`Unknown schema type: ${def.type}`); + return false; } @@ -49904,6 +49960,7 @@ exports.getElementAtPath = getElementAtPath; exports.promiseAllObject = promiseAllObject; exports.randomString = randomString; exports.esc = esc; +exports.slugify = slugify; exports.isObject = isObject; exports.isPlainObject = isPlainObject; exports.shallowClone = shallowClone; @@ -50072,6 +50129,14 @@ function randomString(length = 10) { function esc(str) { return JSON.stringify(str); } +function slugify(input) { + return input + .toLowerCase() + .trim() + .replace(/[^\w\s-]/g, "") + .replace(/[\s_-]+/g, "-") + .replace(/^-+|-+$/g, ""); +} exports.captureStackTrace = ("captureStackTrace" in Error ? Error.captureStackTrace : (..._args) => { }); function isObject(data) { return typeof data === "object" && data !== null && !Array.isArray(data); @@ -50097,6 +50162,8 @@ function isPlainObject(o) { const ctor = o.constructor; if (ctor === undefined) return true; + if (typeof ctor !== "function") + return true; // modified prototype const prot = ctor.prototype; if (isObject(prot) === false) @@ -50552,7 +50619,7 @@ exports.version = void 0; exports.version = { major: 4, minor: 1, - patch: 12, + patch: 13, }; @@ -51946,6 +52013,7 @@ const error = () => { duration: "ISO duration", ipv4: "IPv4 address", ipv6: "IPv6 address", + mac: "MAC address", cidrv4: "IPv4 range", cidrv6: "IPv6 range", base64: "base64-encoded string", @@ -53000,111 +53068,222 @@ Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = default_1; const util = __importStar(__nccwpck_require__(1327)); const error = () => { + // Hebrew labels + grammatical gender + const TypeNames = { + string: { label: "מחרוזת", gender: "f" }, + number: { label: "מספר", gender: "m" }, + boolean: { label: "ערך בוליאני", gender: "m" }, + bigint: { label: "BigInt", gender: "m" }, + date: { label: "תאריך", gender: "m" }, + array: { label: "מערך", gender: "m" }, + object: { label: "אובייקט", gender: "m" }, + null: { label: "ערך ריק (null)", gender: "m" }, + undefined: { label: "ערך לא מוגדר (undefined)", gender: "m" }, + symbol: { label: "סימבול (Symbol)", gender: "m" }, + function: { label: "פונקציה", gender: "f" }, + map: { label: "מפה (Map)", gender: "f" }, + set: { label: "קבוצה (Set)", gender: "f" }, + file: { label: "קובץ", gender: "m" }, + promise: { label: "Promise", gender: "m" }, + NaN: { label: "NaN", gender: "m" }, + unknown: { label: "ערך לא ידוע", gender: "m" }, + value: { label: "ערך", gender: "m" }, + }; + // Sizing units for size-related messages + localized origin labels const Sizable = { - string: { unit: "אותיות", verb: "לכלול" }, - file: { unit: "בייטים", verb: "לכלול" }, - array: { unit: "פריטים", verb: "לכלול" }, - set: { unit: "פריטים", verb: "לכלול" }, - }; - function getSizing(origin) { + string: { unit: "תווים", shortLabel: "קצר", longLabel: "ארוך" }, + file: { unit: "בייטים", shortLabel: "קטן", longLabel: "גדול" }, + array: { unit: "פריטים", shortLabel: "קטן", longLabel: "גדול" }, + set: { unit: "פריטים", shortLabel: "קטן", longLabel: "גדול" }, + number: { unit: "", shortLabel: "קטן", longLabel: "גדול" }, // no unit + }; + // Helpers — labels, articles, and verbs + const typeEntry = (t) => (t ? TypeNames[t] : undefined); + const typeLabel = (t) => { + const e = typeEntry(t); + if (e) + return e.label; + // fallback: show raw string if unknown + return t ?? TypeNames.unknown.label; + }; + const withDefinite = (t) => `ה${typeLabel(t)}`; + const verbFor = (t) => { + const e = typeEntry(t); + const gender = e?.gender ?? "m"; + return gender === "f" ? "צריכה להיות" : "צריך להיות"; + }; + const getSizing = (origin) => { + if (!origin) + return null; return Sizable[origin] ?? null; - } + }; + // Robust type parser for "received" — returns a key we understand or a constructor name const parsedType = (data) => { const t = typeof data; switch (t) { - case "number": { + case "number": return Number.isNaN(data) ? "NaN" : "number"; - } case "object": { - if (Array.isArray(data)) { + if (Array.isArray(data)) return "array"; - } - if (data === null) { + if (data === null) return "null"; - } if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) { - return data.constructor.name; + return data.constructor.name; // keep as-is (e.g., "Date") } + return "object"; } + default: + return t; } - return t; }; const Nouns = { - regex: "קלט", - email: "כתובת אימייל", - url: "כתובת רשת", - emoji: "אימוג'י", - uuid: "UUID", - uuidv4: "UUIDv4", - uuidv6: "UUIDv6", - nanoid: "nanoid", - guid: "GUID", - cuid: "cuid", - cuid2: "cuid2", - ulid: "ULID", - xid: "XID", - ksuid: "KSUID", - datetime: "תאריך וזמן ISO", - date: "תאריך ISO", - time: "זמן ISO", - duration: "משך זמן ISO", - ipv4: "כתובת IPv4", - ipv6: "כתובת IPv6", - cidrv4: "טווח IPv4", - cidrv6: "טווח IPv6", - base64: "מחרוזת בבסיס 64", - base64url: "מחרוזת בבסיס 64 לכתובות רשת", - json_string: "מחרוזת JSON", - e164: "מספר E.164", - jwt: "JWT", - template_literal: "קלט", + regex: { label: "קלט", gender: "m" }, + email: { label: "כתובת אימייל", gender: "f" }, + url: { label: "כתובת רשת", gender: "f" }, + emoji: { label: "אימוג'י", gender: "m" }, + uuid: { label: "UUID", gender: "m" }, + nanoid: { label: "nanoid", gender: "m" }, + guid: { label: "GUID", gender: "m" }, + cuid: { label: "cuid", gender: "m" }, + cuid2: { label: "cuid2", gender: "m" }, + ulid: { label: "ULID", gender: "m" }, + xid: { label: "XID", gender: "m" }, + ksuid: { label: "KSUID", gender: "m" }, + datetime: { label: "תאריך וזמן ISO", gender: "m" }, + date: { label: "תאריך ISO", gender: "m" }, + time: { label: "זמן ISO", gender: "m" }, + duration: { label: "משך זמן ISO", gender: "m" }, + ipv4: { label: "כתובת IPv4", gender: "f" }, + ipv6: { label: "כתובת IPv6", gender: "f" }, + cidrv4: { label: "טווח IPv4", gender: "m" }, + cidrv6: { label: "טווח IPv6", gender: "m" }, + base64: { label: "מחרוזת בבסיס 64", gender: "f" }, + base64url: { label: "מחרוזת בבסיס 64 לכתובות רשת", gender: "f" }, + json_string: { label: "מחרוזת JSON", gender: "f" }, + e164: { label: "מספר E.164", gender: "m" }, + jwt: { label: "JWT", gender: "m" }, + ends_with: { label: "קלט", gender: "m" }, + includes: { label: "קלט", gender: "m" }, + lowercase: { label: "קלט", gender: "m" }, + starts_with: { label: "קלט", gender: "m" }, + uppercase: { label: "קלט", gender: "m" }, }; return (issue) => { switch (issue.code) { - case "invalid_type": - return `קלט לא תקין: צריך ${issue.expected}, התקבל ${parsedType(issue.input)}`; - // return `Invalid input: expected ${issue.expected}, received ${util.getParsedType(issue.input)}`; - case "invalid_value": - if (issue.values.length === 1) - return `קלט לא תקין: צריך ${util.stringifyPrimitive(issue.values[0])}`; - return `קלט לא תקין: צריך אחת מהאפשרויות ${util.joinValues(issue.values, "|")}`; + case "invalid_type": { + // Expected type: show without definite article for clearer Hebrew + const expectedKey = issue.expected; + const expected = typeLabel(expectedKey); + // Received: show localized label if known, otherwise constructor/raw + const receivedKey = parsedType(issue.input); + const received = TypeNames[receivedKey]?.label ?? receivedKey; + return `קלט לא תקין: צריך להיות ${expected}, התקבל ${received}`; + } + case "invalid_value": { + if (issue.values.length === 1) { + return `ערך לא תקין: הערך חייב להיות ${util.stringifyPrimitive(issue.values[0])}`; + } + // Join values with proper Hebrew formatting + const stringified = issue.values.map((v) => util.stringifyPrimitive(v)); + if (issue.values.length === 2) { + return `ערך לא תקין: האפשרויות המתאימות הן ${stringified[0]} או ${stringified[1]}`; + } + // For 3+ values: "a", "b" או "c" + const lastValue = stringified[stringified.length - 1]; + const restValues = stringified.slice(0, -1).join(", "); + return `ערך לא תקין: האפשרויות המתאימות הן ${restValues} או ${lastValue}`; + } case "too_big": { - const adj = issue.inclusive ? "<=" : "<"; const sizing = getSizing(issue.origin); - if (sizing) - return `גדול מדי: ${issue.origin ?? "value"} צריך להיות ${adj}${issue.maximum.toString()} ${sizing.unit ?? "elements"}`; - return `גדול מדי: ${issue.origin ?? "value"} צריך להיות ${adj}${issue.maximum.toString()}`; + const subject = withDefinite(issue.origin ?? "value"); + if (issue.origin === "string") { + // Special handling for strings - more natural Hebrew + return `${sizing?.longLabel ?? "ארוך"} מדי: ${subject} צריכה להכיל ${issue.maximum.toString()} ${sizing?.unit ?? ""} ${issue.inclusive ? "או פחות" : "לכל היותר"}`.trim(); + } + if (issue.origin === "number") { + // Natural Hebrew for numbers + const comparison = issue.inclusive ? `קטן או שווה ל-${issue.maximum}` : `קטן מ-${issue.maximum}`; + return `גדול מדי: ${subject} צריך להיות ${comparison}`; + } + if (issue.origin === "array" || issue.origin === "set") { + // Natural Hebrew for arrays and sets + const verb = issue.origin === "set" ? "צריכה" : "צריך"; + const comparison = issue.inclusive + ? `${issue.maximum} ${sizing?.unit ?? ""} או פחות` + : `פחות מ-${issue.maximum} ${sizing?.unit ?? ""}`; + return `גדול מדי: ${subject} ${verb} להכיל ${comparison}`.trim(); + } + const adj = issue.inclusive ? "<=" : "<"; + const be = verbFor(issue.origin ?? "value"); + if (sizing?.unit) { + return `${sizing.longLabel} מדי: ${subject} ${be} ${adj}${issue.maximum.toString()} ${sizing.unit}`; + } + return `${sizing?.longLabel ?? "גדול"} מדי: ${subject} ${be} ${adj}${issue.maximum.toString()}`; } case "too_small": { - const adj = issue.inclusive ? ">=" : ">"; const sizing = getSizing(issue.origin); - if (sizing) { - return `קטן מדי: ${issue.origin} צריך להיות ${adj}${issue.minimum.toString()} ${sizing.unit}`; + const subject = withDefinite(issue.origin ?? "value"); + if (issue.origin === "string") { + // Special handling for strings - more natural Hebrew + return `${sizing?.shortLabel ?? "קצר"} מדי: ${subject} צריכה להכיל ${issue.minimum.toString()} ${sizing?.unit ?? ""} ${issue.inclusive ? "או יותר" : "לפחות"}`.trim(); + } + if (issue.origin === "number") { + // Natural Hebrew for numbers + const comparison = issue.inclusive ? `גדול או שווה ל-${issue.minimum}` : `גדול מ-${issue.minimum}`; + return `קטן מדי: ${subject} צריך להיות ${comparison}`; + } + if (issue.origin === "array" || issue.origin === "set") { + // Natural Hebrew for arrays and sets + const verb = issue.origin === "set" ? "צריכה" : "צריך"; + // Special case for singular (minimum === 1) + if (issue.minimum === 1 && issue.inclusive) { + const singularPhrase = issue.origin === "set" ? "לפחות פריט אחד" : "לפחות פריט אחד"; + return `קטן מדי: ${subject} ${verb} להכיל ${singularPhrase}`; + } + const comparison = issue.inclusive + ? `${issue.minimum} ${sizing?.unit ?? ""} או יותר` + : `יותר מ-${issue.minimum} ${sizing?.unit ?? ""}`; + return `קטן מדי: ${subject} ${verb} להכיל ${comparison}`.trim(); + } + const adj = issue.inclusive ? ">=" : ">"; + const be = verbFor(issue.origin ?? "value"); + if (sizing?.unit) { + return `${sizing.shortLabel} מדי: ${subject} ${be} ${adj}${issue.minimum.toString()} ${sizing.unit}`; } - return `קטן מדי: ${issue.origin} צריך להיות ${adj}${issue.minimum.toString()}`; + return `${sizing?.shortLabel ?? "קטן"} מדי: ${subject} ${be} ${adj}${issue.minimum.toString()}`; } case "invalid_format": { const _issue = issue; + // These apply to strings — use feminine grammar + ה׳ הידיעה if (_issue.format === "starts_with") - return `מחרוזת לא תקינה: חייבת להתחיל ב"${_issue.prefix}"`; + return `המחרוזת חייבת להתחיל ב "${_issue.prefix}"`; if (_issue.format === "ends_with") - return `מחרוזת לא תקינה: חייבת להסתיים ב "${_issue.suffix}"`; + return `המחרוזת חייבת להסתיים ב "${_issue.suffix}"`; if (_issue.format === "includes") - return `מחרוזת לא תקינה: חייבת לכלול "${_issue.includes}"`; + return `המחרוזת חייבת לכלול "${_issue.includes}"`; if (_issue.format === "regex") - return `מחרוזת לא תקינה: חייבת להתאים לתבנית ${_issue.pattern}`; - return `${Nouns[_issue.format] ?? issue.format} לא תקין`; + return `המחרוזת חייבת להתאים לתבנית ${_issue.pattern}`; + // Handle gender agreement for formats + const nounEntry = Nouns[_issue.format]; + const noun = nounEntry?.label ?? _issue.format; + const gender = nounEntry?.gender ?? "m"; + const adjective = gender === "f" ? "תקינה" : "תקין"; + return `${noun} לא ${adjective}`; } case "not_multiple_of": return `מספר לא תקין: חייב להיות מכפלה של ${issue.divisor}`; case "unrecognized_keys": return `מפתח${issue.keys.length > 1 ? "ות" : ""} לא מזוה${issue.keys.length > 1 ? "ים" : "ה"}: ${util.joinValues(issue.keys, ", ")}`; - case "invalid_key": - return `מפתח לא תקין ב${issue.origin}`; + case "invalid_key": { + return `שדה לא תקין באובייקט`; + } case "invalid_union": return "קלט לא תקין"; - case "invalid_element": - return `ערך לא תקין ב${issue.origin}`; + case "invalid_element": { + const place = withDefinite(issue.origin ?? "array"); + return `ערך לא תקין ב${place}`; + } default: return `קלט לא תקין`; } @@ -55078,10 +55257,10 @@ exports["default"] = default_1; const util = __importStar(__nccwpck_require__(1327)); const error = () => { const Sizable = { - string: { unit: "tekens" }, - file: { unit: "bytes" }, - array: { unit: "elementen" }, - set: { unit: "elementen" }, + string: { unit: "tekens", verb: "te hebben" }, + file: { unit: "bytes", verb: "te hebben" }, + array: { unit: "elementen", verb: "te hebben" }, + set: { unit: "elementen", verb: "te hebben" }, }; function getSizing(origin) { return Sizable[origin] ?? null; @@ -55148,16 +55327,16 @@ const error = () => { const adj = issue.inclusive ? "<=" : "<"; const sizing = getSizing(issue.origin); if (sizing) - return `Te lang: verwacht dat ${issue.origin ?? "waarde"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? "elementen"} bevat`; - return `Te lang: verwacht dat ${issue.origin ?? "waarde"} ${adj}${issue.maximum.toString()} is`; + return `Te groot: verwacht dat ${issue.origin ?? "waarde"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? "elementen"}`; + return `Te groot: verwacht dat ${issue.origin ?? "waarde"} ${adj}${issue.maximum.toString()} is`; } case "too_small": { const adj = issue.inclusive ? ">=" : ">"; const sizing = getSizing(issue.origin); if (sizing) { - return `Te kort: verwacht dat ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit} bevat`; + return `Te klein: verwacht dat ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`; } - return `Te kort: verwacht dat ${issue.origin} ${adj}${issue.minimum.toString()} is`; + return `Te klein: verwacht dat ${issue.origin} ${adj}${issue.minimum.toString()} is`; } case "invalid_format": { const _issue = issue; diff --git a/package-lock.json b/package-lock.json index 1e49c7a..75653ff 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,7 @@ "@actions/github": "^6.0.1", "inversify": "^7.10.4", "reflect-metadata": "^0.2.2", - "zod": "^4.1.12", + "zod": "^4.1.13", "zod-validation-error": "^5.0.0" }, "devDependencies": { @@ -122,6 +122,7 @@ "integrity": "sha512-BU2f9tlKQ5CAthiMIgpzAh4eDTLWo1mqi9jqE2OxMG0E/OM199VJt2q8BztTxpnSW0i1ymdwLXRJnYzvDM5r2w==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.27.1", @@ -1641,6 +1642,7 @@ "integrity": "sha512-fIduqNyYpMeeSr5iEAiMn15KxCzvrmxl7X7VwLDRGj7t5CoHtbF+7K3EvKk32mOUIJ4kIvFRlaixClMH2h/Vaw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@jest/environment": "30.0.2", "@jest/expect": "30.0.3", @@ -1790,6 +1792,7 @@ "integrity": "sha512-kJIuhLMTxRF7sc0gPzPtCDib/V9KwW3I2U25b+lYCYMVqHHSrcZopS8J8H+znx9yixuFv+Iozl8raLt/4MoxrA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/core": "^7.27.4", "@jest/types": "30.0.1", @@ -1817,6 +1820,7 @@ "integrity": "sha512-HGwoYRVF0QSKJu1ZQX0o5ZrUrrhj0aOOFA8hXrumD7SIzjouevhawbTjmXdwOmURdGluU9DM/XvGm3NyFoiQjw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@jest/pattern": "30.0.1", "@jest/schemas": "30.0.1", @@ -1948,6 +1952,7 @@ "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.2.1.tgz", "integrity": "sha512-dKYCMuPO1bmrpuogcjQ8z7ICCH3FP6WmxpwC03yjzGfZhj9fTJg6+bS1+UAplekbN2C+M61UNllGOOoAfGCrdQ==", "license": "MIT", + "peer": true, "dependencies": { "@octokit/auth-token": "^4.0.0", "@octokit/graphql": "^7.1.0", @@ -2592,6 +2597,7 @@ "integrity": "sha512-ulyqAkrhnuNq9pB76DRBTkcS6YsmDALy6Ua63V8OhrOBgbcYt6IOdzpw5P1+dyRIyMerzLkeYWBeOXPpA9GMAA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "undici-types": "~7.8.0" } @@ -2834,6 +2840,188 @@ "dev": true, "license": "ISC" }, + "node_modules/@unrs/resolver-binding-android-arm-eabi": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.9.2.tgz", + "integrity": "sha512-tS+lqTU3N0kkthU+rYp0spAYq15DU8ld9kXkaKg9sbQqJNF+WPMuNHZQGCgdxrUOEO0j22RKMwRVhF1HTl+X8A==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-android-arm64": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.9.2.tgz", + "integrity": "sha512-MffGiZULa/KmkNjHeuuflLVqfhqLv1vZLm8lWIyeADvlElJ/GLSOkoUX+5jf4/EGtfwrNFcEaB8BRas03KT0/Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-arm64": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.9.2.tgz", + "integrity": "sha512-dzJYK5rohS1sYl1DHdJ3mwfwClJj5BClQnQSyAgEfggbUwA9RlROQSSbKBLqrGfsiC/VyrDPtbO8hh56fnkbsQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-x64": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.9.2.tgz", + "integrity": "sha512-gaIMWK+CWtXcg9gUyznkdV54LzQ90S3X3dn8zlh+QR5Xy7Y+Efqw4Rs4im61K1juy4YNb67vmJsCDAGOnIeffQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-freebsd-x64": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.9.2.tgz", + "integrity": "sha512-S7QpkMbVoVJb0xwHFwujnwCAEDe/596xqY603rpi/ioTn9VDgBHnCCxh+UFrr5yxuMH+dliHfjwCZJXOPJGPnw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.9.2.tgz", + "integrity": "sha512-+XPUMCuCCI80I46nCDFbGum0ZODP5NWGiwS3Pj8fOgsG5/ctz+/zzuBlq/WmGa+EjWZdue6CF0aWWNv84sE1uw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.9.2.tgz", + "integrity": "sha512-sqvUyAd1JUpwbz33Ce2tuTLJKM+ucSsYpPGl2vuFwZnEIg0CmdxiZ01MHQ3j6ExuRqEDUCy8yvkDKvjYFPb8Zg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.9.2.tgz", + "integrity": "sha512-UYA0MA8ajkEDCFRQdng/FVx3F6szBvk3EPnkTTQuuO9lV1kPGuTB+V9TmbDxy5ikaEgyWKxa4CI3ySjklZ9lFA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-musl": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.9.2.tgz", + "integrity": "sha512-P/CO3ODU9YJIHFqAkHbquKtFst0COxdphc8TKGL5yCX75GOiVpGqd1d15ahpqu8xXVsqP4MGFP2C3LRZnnL5MA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.9.2.tgz", + "integrity": "sha512-uKStFlOELBxBum2s1hODPtgJhY4NxYJE9pAeyBgNEzHgTqTiVBPjfTlPFJkfxyTjQEuxZbbJlJnMCrRgD7ubzw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.9.2.tgz", + "integrity": "sha512-LkbNnZlhINfY9gK30AHs26IIVEZ9PEl9qOScYdmY2o81imJYI4IMnJiW0vJVtXaDHvBvxeAgEy5CflwJFIl3tQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.9.2.tgz", + "integrity": "sha512-vI+e6FzLyZHSLFNomPi+nT+qUWN4YSj8pFtQZSFTtmgFoxqB6NyjxSjAxEC1m93qn6hUXhIsh8WMp+fGgxCoRg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.9.2.tgz", + "integrity": "sha512-sSO4AlAYhSM2RAzBsRpahcJB1msc6uYLAtP6pesPbZtptF8OU/CbCPhSRW6cnYOGuVmEmWVW5xVboAqCnWTeHQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, "node_modules/@unrs/resolver-binding-linux-x64-gnu": { "version": "1.9.2", "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.9.2.tgz", @@ -2862,6 +3050,78 @@ "linux" ] }, + "node_modules/@unrs/resolver-binding-wasm32-wasi": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.9.2.tgz", + "integrity": "sha512-EpBGwkcjDicjR/ybC0g8wO5adPNdVuMrNalVgYcWi+gYtC1XYNuxe3rufcO7dA76OHGeVabcO6cSkPJKVcbCXQ==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^0.2.11" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@unrs/resolver-binding-wasm32-wasi/node_modules/@napi-rs/wasm-runtime": { + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", + "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.4.3", + "@emnapi/runtime": "^1.4.3", + "@tybys/wasm-util": "^0.10.0" + } + }, + "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.9.2.tgz", + "integrity": "sha512-EdFbGn7o1SxGmN6aZw9wAkehZJetFPao0VGZ9OMBwKx6TkvDuj6cNeLimF/Psi6ts9lMOe+Dt6z19fZQ9Ye2fw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.9.2.tgz", + "integrity": "sha512-JY9hi1p7AG+5c/dMU8o2kWemM8I6VZxfGwn1GCtf3c5i+IKcMo2NQ8OjZ4Z3/itvY/Si3K10jOBQn7qsD/whUA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-x64-msvc": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.9.2.tgz", + "integrity": "sha512-ryoo+EB19lMxAd80ln9BVf8pdOAxLb97amrQ3SFN9OCRn/5M5wvwDgAe4i8ZjhpbiHoDeP8yavcTEnpKBo7lZg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/@vercel/ncc": { "version": "0.38.4", "resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.38.4.tgz", @@ -2878,6 +3138,7 @@ "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, "license": "MIT", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -3186,6 +3447,7 @@ "integrity": "sha512-A5kqR1/EUTidM2YC2YMEUDP2+19ppgOwK0IAd9Swc3q2KqFb5f9PtRUXVeZcngu0z5mDMyZ9zH2huJZSOMLiTQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@jest/transform": "30.0.2", "@types/babel__core": "^7.20.5", @@ -3334,6 +3596,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "caniuse-lite": "^1.0.30001726", "electron-to-chromium": "^1.5.173", @@ -4380,6 +4643,7 @@ "integrity": "sha512-TS9bTNIryDzStCpJN93aC5VRSW3uTx9sClUn4B87pwiCaJh220otoI0X8mJKr+VcPtniMdN8GKjlwgWGUv5ZKA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", @@ -4695,6 +4959,7 @@ "integrity": "sha512-6sMvZePQrnZH2/cJkwRpkT7DxoAWh+g6+GFRK6bV3YQo7ogi3SX5rgF6099r5Q53Ma5qeT7LGmOmuIutF4t3lA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.35.0", "@typescript-eslint/types": "8.35.0", @@ -5677,6 +5942,21 @@ "dev": true, "license": "ISC" }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -7024,6 +7304,7 @@ "integrity": "sha512-Uy8xfeE/WpT2ZLGDXQmaYNzw2v8NUKuYeKGtkS6sDxwsdQihdgYCXaKIYnph1h95DN5H35ubFDm0dfmsQnjn4Q==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@jest/core": "30.0.3", "@jest/types": "30.0.1", @@ -7530,6 +7811,7 @@ "integrity": "sha512-8IyqfKS4MqprBuUpZNlFB5l+WFehc8bfCe1HSZFHzft2mOuND8Cvi9r1musli+u6F3TqanCZ/Ik4H4pXUolZIg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@jest/types": "30.0.1", "@types/node": "*", @@ -7737,6 +8019,7 @@ "integrity": "sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "acorn": "^8.5.0", "eslint-visitor-keys": "^3.0.0", @@ -8890,6 +9173,7 @@ "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", "dev": true, "license": "MIT", + "peer": true, "bin": { "prettier": "bin/prettier.cjs" }, @@ -9067,7 +9351,8 @@ "version": "0.2.2", "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==", - "license": "Apache-2.0" + "license": "Apache-2.0", + "peer": true }, "node_modules/reflect.getprototypeof": { "version": "1.0.10", @@ -10294,6 +10579,7 @@ "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", "dev": true, "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -10361,6 +10647,7 @@ "integrity": "sha512-6sMvZePQrnZH2/cJkwRpkT7DxoAWh+g6+GFRK6bV3YQo7ogi3SX5rgF6099r5Q53Ma5qeT7LGmOmuIutF4t3lA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.35.0", "@typescript-eslint/types": "8.35.0", @@ -11049,10 +11336,11 @@ } }, "node_modules/zod": { - "version": "4.1.12", - "resolved": "https://registry.npmjs.org/zod/-/zod-4.1.12.tgz", - "integrity": "sha512-JInaHOamG8pt5+Ey8kGmdcAcg3OL9reK8ltczgHTAwNhMys/6ThXHityHxVV2p3fkw/c+MAvBHFVYHFZDmjMCQ==", + "version": "4.1.13", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.1.13.tgz", + "integrity": "sha512-AvvthqfqrAhNH9dnfmrfKzX5upOdjUVJYFqNSlkmGf64gRaTzlPwz99IHYnVs28qYAybvAlBV+H7pn0saFY4Ig==", "license": "MIT", + "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } diff --git a/package.json b/package.json index dd625ad..9d1f9d9 100644 --- a/package.json +++ b/package.json @@ -79,7 +79,7 @@ "@actions/github": "^6.0.1", "inversify": "^7.10.4", "reflect-metadata": "^0.2.2", - "zod": "^4.1.12", + "zod": "^4.1.13", "zod-validation-error": "^5.0.0" }, "devDependencies": {