schemas.js 45 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157
  1. import * as core from "../core/index.js";
  2. import { util } from "../core/index.js";
  3. import * as processors from "../core/json-schema-processors.js";
  4. import { createStandardJSONSchemaMethod, createToJSONSchemaMethod } from "../core/to-json-schema.js";
  5. import * as checks from "./checks.js";
  6. import * as iso from "./iso.js";
  7. import * as parse from "./parse.js";
  8. export const ZodType = /*@__PURE__*/ core.$constructor("ZodType", (inst, def) => {
  9. core.$ZodType.init(inst, def);
  10. Object.assign(inst["~standard"], {
  11. jsonSchema: {
  12. input: createStandardJSONSchemaMethod(inst, "input"),
  13. output: createStandardJSONSchemaMethod(inst, "output"),
  14. },
  15. });
  16. inst.toJSONSchema = createToJSONSchemaMethod(inst, {});
  17. inst.def = def;
  18. inst.type = def.type;
  19. Object.defineProperty(inst, "_def", { value: def });
  20. // base methods
  21. inst.check = (...checks) => {
  22. return inst.clone(util.mergeDefs(def, {
  23. checks: [
  24. ...(def.checks ?? []),
  25. ...checks.map((ch) => typeof ch === "function" ? { _zod: { check: ch, def: { check: "custom" }, onattach: [] } } : ch),
  26. ],
  27. }), {
  28. parent: true,
  29. });
  30. };
  31. inst.with = inst.check;
  32. inst.clone = (def, params) => core.clone(inst, def, params);
  33. inst.brand = () => inst;
  34. inst.register = ((reg, meta) => {
  35. reg.add(inst, meta);
  36. return inst;
  37. });
  38. // parsing
  39. inst.parse = (data, params) => parse.parse(inst, data, params, { callee: inst.parse });
  40. inst.safeParse = (data, params) => parse.safeParse(inst, data, params);
  41. inst.parseAsync = async (data, params) => parse.parseAsync(inst, data, params, { callee: inst.parseAsync });
  42. inst.safeParseAsync = async (data, params) => parse.safeParseAsync(inst, data, params);
  43. inst.spa = inst.safeParseAsync;
  44. // encoding/decoding
  45. inst.encode = (data, params) => parse.encode(inst, data, params);
  46. inst.decode = (data, params) => parse.decode(inst, data, params);
  47. inst.encodeAsync = async (data, params) => parse.encodeAsync(inst, data, params);
  48. inst.decodeAsync = async (data, params) => parse.decodeAsync(inst, data, params);
  49. inst.safeEncode = (data, params) => parse.safeEncode(inst, data, params);
  50. inst.safeDecode = (data, params) => parse.safeDecode(inst, data, params);
  51. inst.safeEncodeAsync = async (data, params) => parse.safeEncodeAsync(inst, data, params);
  52. inst.safeDecodeAsync = async (data, params) => parse.safeDecodeAsync(inst, data, params);
  53. // refinements
  54. inst.refine = (check, params) => inst.check(refine(check, params));
  55. inst.superRefine = (refinement) => inst.check(superRefine(refinement));
  56. inst.overwrite = (fn) => inst.check(checks.overwrite(fn));
  57. // wrappers
  58. inst.optional = () => optional(inst);
  59. inst.exactOptional = () => exactOptional(inst);
  60. inst.nullable = () => nullable(inst);
  61. inst.nullish = () => optional(nullable(inst));
  62. inst.nonoptional = (params) => nonoptional(inst, params);
  63. inst.array = () => array(inst);
  64. inst.or = (arg) => union([inst, arg]);
  65. inst.and = (arg) => intersection(inst, arg);
  66. inst.transform = (tx) => pipe(inst, transform(tx));
  67. inst.default = (def) => _default(inst, def);
  68. inst.prefault = (def) => prefault(inst, def);
  69. // inst.coalesce = (def, params) => coalesce(inst, def, params);
  70. inst.catch = (params) => _catch(inst, params);
  71. inst.pipe = (target) => pipe(inst, target);
  72. inst.readonly = () => readonly(inst);
  73. // meta
  74. inst.describe = (description) => {
  75. const cl = inst.clone();
  76. core.globalRegistry.add(cl, { description });
  77. return cl;
  78. };
  79. Object.defineProperty(inst, "description", {
  80. get() {
  81. return core.globalRegistry.get(inst)?.description;
  82. },
  83. configurable: true,
  84. });
  85. inst.meta = (...args) => {
  86. if (args.length === 0) {
  87. return core.globalRegistry.get(inst);
  88. }
  89. const cl = inst.clone();
  90. core.globalRegistry.add(cl, args[0]);
  91. return cl;
  92. };
  93. // helpers
  94. inst.isOptional = () => inst.safeParse(undefined).success;
  95. inst.isNullable = () => inst.safeParse(null).success;
  96. inst.apply = (fn) => fn(inst);
  97. return inst;
  98. });
  99. /** @internal */
  100. export const _ZodString = /*@__PURE__*/ core.$constructor("_ZodString", (inst, def) => {
  101. core.$ZodString.init(inst, def);
  102. ZodType.init(inst, def);
  103. inst._zod.processJSONSchema = (ctx, json, params) => processors.stringProcessor(inst, ctx, json, params);
  104. const bag = inst._zod.bag;
  105. inst.format = bag.format ?? null;
  106. inst.minLength = bag.minimum ?? null;
  107. inst.maxLength = bag.maximum ?? null;
  108. // validations
  109. inst.regex = (...args) => inst.check(checks.regex(...args));
  110. inst.includes = (...args) => inst.check(checks.includes(...args));
  111. inst.startsWith = (...args) => inst.check(checks.startsWith(...args));
  112. inst.endsWith = (...args) => inst.check(checks.endsWith(...args));
  113. inst.min = (...args) => inst.check(checks.minLength(...args));
  114. inst.max = (...args) => inst.check(checks.maxLength(...args));
  115. inst.length = (...args) => inst.check(checks.length(...args));
  116. inst.nonempty = (...args) => inst.check(checks.minLength(1, ...args));
  117. inst.lowercase = (params) => inst.check(checks.lowercase(params));
  118. inst.uppercase = (params) => inst.check(checks.uppercase(params));
  119. // transforms
  120. inst.trim = () => inst.check(checks.trim());
  121. inst.normalize = (...args) => inst.check(checks.normalize(...args));
  122. inst.toLowerCase = () => inst.check(checks.toLowerCase());
  123. inst.toUpperCase = () => inst.check(checks.toUpperCase());
  124. inst.slugify = () => inst.check(checks.slugify());
  125. });
  126. export const ZodString = /*@__PURE__*/ core.$constructor("ZodString", (inst, def) => {
  127. core.$ZodString.init(inst, def);
  128. _ZodString.init(inst, def);
  129. inst.email = (params) => inst.check(core._email(ZodEmail, params));
  130. inst.url = (params) => inst.check(core._url(ZodURL, params));
  131. inst.jwt = (params) => inst.check(core._jwt(ZodJWT, params));
  132. inst.emoji = (params) => inst.check(core._emoji(ZodEmoji, params));
  133. inst.guid = (params) => inst.check(core._guid(ZodGUID, params));
  134. inst.uuid = (params) => inst.check(core._uuid(ZodUUID, params));
  135. inst.uuidv4 = (params) => inst.check(core._uuidv4(ZodUUID, params));
  136. inst.uuidv6 = (params) => inst.check(core._uuidv6(ZodUUID, params));
  137. inst.uuidv7 = (params) => inst.check(core._uuidv7(ZodUUID, params));
  138. inst.nanoid = (params) => inst.check(core._nanoid(ZodNanoID, params));
  139. inst.guid = (params) => inst.check(core._guid(ZodGUID, params));
  140. inst.cuid = (params) => inst.check(core._cuid(ZodCUID, params));
  141. inst.cuid2 = (params) => inst.check(core._cuid2(ZodCUID2, params));
  142. inst.ulid = (params) => inst.check(core._ulid(ZodULID, params));
  143. inst.base64 = (params) => inst.check(core._base64(ZodBase64, params));
  144. inst.base64url = (params) => inst.check(core._base64url(ZodBase64URL, params));
  145. inst.xid = (params) => inst.check(core._xid(ZodXID, params));
  146. inst.ksuid = (params) => inst.check(core._ksuid(ZodKSUID, params));
  147. inst.ipv4 = (params) => inst.check(core._ipv4(ZodIPv4, params));
  148. inst.ipv6 = (params) => inst.check(core._ipv6(ZodIPv6, params));
  149. inst.cidrv4 = (params) => inst.check(core._cidrv4(ZodCIDRv4, params));
  150. inst.cidrv6 = (params) => inst.check(core._cidrv6(ZodCIDRv6, params));
  151. inst.e164 = (params) => inst.check(core._e164(ZodE164, params));
  152. // iso
  153. inst.datetime = (params) => inst.check(iso.datetime(params));
  154. inst.date = (params) => inst.check(iso.date(params));
  155. inst.time = (params) => inst.check(iso.time(params));
  156. inst.duration = (params) => inst.check(iso.duration(params));
  157. });
  158. export function string(params) {
  159. return core._string(ZodString, params);
  160. }
  161. export const ZodStringFormat = /*@__PURE__*/ core.$constructor("ZodStringFormat", (inst, def) => {
  162. core.$ZodStringFormat.init(inst, def);
  163. _ZodString.init(inst, def);
  164. });
  165. export const ZodEmail = /*@__PURE__*/ core.$constructor("ZodEmail", (inst, def) => {
  166. // ZodStringFormat.init(inst, def);
  167. core.$ZodEmail.init(inst, def);
  168. ZodStringFormat.init(inst, def);
  169. });
  170. export function email(params) {
  171. return core._email(ZodEmail, params);
  172. }
  173. export const ZodGUID = /*@__PURE__*/ core.$constructor("ZodGUID", (inst, def) => {
  174. // ZodStringFormat.init(inst, def);
  175. core.$ZodGUID.init(inst, def);
  176. ZodStringFormat.init(inst, def);
  177. });
  178. export function guid(params) {
  179. return core._guid(ZodGUID, params);
  180. }
  181. export const ZodUUID = /*@__PURE__*/ core.$constructor("ZodUUID", (inst, def) => {
  182. // ZodStringFormat.init(inst, def);
  183. core.$ZodUUID.init(inst, def);
  184. ZodStringFormat.init(inst, def);
  185. });
  186. export function uuid(params) {
  187. return core._uuid(ZodUUID, params);
  188. }
  189. export function uuidv4(params) {
  190. return core._uuidv4(ZodUUID, params);
  191. }
  192. // ZodUUIDv6
  193. export function uuidv6(params) {
  194. return core._uuidv6(ZodUUID, params);
  195. }
  196. // ZodUUIDv7
  197. export function uuidv7(params) {
  198. return core._uuidv7(ZodUUID, params);
  199. }
  200. export const ZodURL = /*@__PURE__*/ core.$constructor("ZodURL", (inst, def) => {
  201. // ZodStringFormat.init(inst, def);
  202. core.$ZodURL.init(inst, def);
  203. ZodStringFormat.init(inst, def);
  204. });
  205. export function url(params) {
  206. return core._url(ZodURL, params);
  207. }
  208. export function httpUrl(params) {
  209. return core._url(ZodURL, {
  210. protocol: /^https?$/,
  211. hostname: core.regexes.domain,
  212. ...util.normalizeParams(params),
  213. });
  214. }
  215. export const ZodEmoji = /*@__PURE__*/ core.$constructor("ZodEmoji", (inst, def) => {
  216. // ZodStringFormat.init(inst, def);
  217. core.$ZodEmoji.init(inst, def);
  218. ZodStringFormat.init(inst, def);
  219. });
  220. export function emoji(params) {
  221. return core._emoji(ZodEmoji, params);
  222. }
  223. export const ZodNanoID = /*@__PURE__*/ core.$constructor("ZodNanoID", (inst, def) => {
  224. // ZodStringFormat.init(inst, def);
  225. core.$ZodNanoID.init(inst, def);
  226. ZodStringFormat.init(inst, def);
  227. });
  228. export function nanoid(params) {
  229. return core._nanoid(ZodNanoID, params);
  230. }
  231. export const ZodCUID = /*@__PURE__*/ core.$constructor("ZodCUID", (inst, def) => {
  232. // ZodStringFormat.init(inst, def);
  233. core.$ZodCUID.init(inst, def);
  234. ZodStringFormat.init(inst, def);
  235. });
  236. export function cuid(params) {
  237. return core._cuid(ZodCUID, params);
  238. }
  239. export const ZodCUID2 = /*@__PURE__*/ core.$constructor("ZodCUID2", (inst, def) => {
  240. // ZodStringFormat.init(inst, def);
  241. core.$ZodCUID2.init(inst, def);
  242. ZodStringFormat.init(inst, def);
  243. });
  244. export function cuid2(params) {
  245. return core._cuid2(ZodCUID2, params);
  246. }
  247. export const ZodULID = /*@__PURE__*/ core.$constructor("ZodULID", (inst, def) => {
  248. // ZodStringFormat.init(inst, def);
  249. core.$ZodULID.init(inst, def);
  250. ZodStringFormat.init(inst, def);
  251. });
  252. export function ulid(params) {
  253. return core._ulid(ZodULID, params);
  254. }
  255. export const ZodXID = /*@__PURE__*/ core.$constructor("ZodXID", (inst, def) => {
  256. // ZodStringFormat.init(inst, def);
  257. core.$ZodXID.init(inst, def);
  258. ZodStringFormat.init(inst, def);
  259. });
  260. export function xid(params) {
  261. return core._xid(ZodXID, params);
  262. }
  263. export const ZodKSUID = /*@__PURE__*/ core.$constructor("ZodKSUID", (inst, def) => {
  264. // ZodStringFormat.init(inst, def);
  265. core.$ZodKSUID.init(inst, def);
  266. ZodStringFormat.init(inst, def);
  267. });
  268. export function ksuid(params) {
  269. return core._ksuid(ZodKSUID, params);
  270. }
  271. export const ZodIPv4 = /*@__PURE__*/ core.$constructor("ZodIPv4", (inst, def) => {
  272. // ZodStringFormat.init(inst, def);
  273. core.$ZodIPv4.init(inst, def);
  274. ZodStringFormat.init(inst, def);
  275. });
  276. export function ipv4(params) {
  277. return core._ipv4(ZodIPv4, params);
  278. }
  279. export const ZodMAC = /*@__PURE__*/ core.$constructor("ZodMAC", (inst, def) => {
  280. // ZodStringFormat.init(inst, def);
  281. core.$ZodMAC.init(inst, def);
  282. ZodStringFormat.init(inst, def);
  283. });
  284. export function mac(params) {
  285. return core._mac(ZodMAC, params);
  286. }
  287. export const ZodIPv6 = /*@__PURE__*/ core.$constructor("ZodIPv6", (inst, def) => {
  288. // ZodStringFormat.init(inst, def);
  289. core.$ZodIPv6.init(inst, def);
  290. ZodStringFormat.init(inst, def);
  291. });
  292. export function ipv6(params) {
  293. return core._ipv6(ZodIPv6, params);
  294. }
  295. export const ZodCIDRv4 = /*@__PURE__*/ core.$constructor("ZodCIDRv4", (inst, def) => {
  296. core.$ZodCIDRv4.init(inst, def);
  297. ZodStringFormat.init(inst, def);
  298. });
  299. export function cidrv4(params) {
  300. return core._cidrv4(ZodCIDRv4, params);
  301. }
  302. export const ZodCIDRv6 = /*@__PURE__*/ core.$constructor("ZodCIDRv6", (inst, def) => {
  303. core.$ZodCIDRv6.init(inst, def);
  304. ZodStringFormat.init(inst, def);
  305. });
  306. export function cidrv6(params) {
  307. return core._cidrv6(ZodCIDRv6, params);
  308. }
  309. export const ZodBase64 = /*@__PURE__*/ core.$constructor("ZodBase64", (inst, def) => {
  310. // ZodStringFormat.init(inst, def);
  311. core.$ZodBase64.init(inst, def);
  312. ZodStringFormat.init(inst, def);
  313. });
  314. export function base64(params) {
  315. return core._base64(ZodBase64, params);
  316. }
  317. export const ZodBase64URL = /*@__PURE__*/ core.$constructor("ZodBase64URL", (inst, def) => {
  318. // ZodStringFormat.init(inst, def);
  319. core.$ZodBase64URL.init(inst, def);
  320. ZodStringFormat.init(inst, def);
  321. });
  322. export function base64url(params) {
  323. return core._base64url(ZodBase64URL, params);
  324. }
  325. export const ZodE164 = /*@__PURE__*/ core.$constructor("ZodE164", (inst, def) => {
  326. // ZodStringFormat.init(inst, def);
  327. core.$ZodE164.init(inst, def);
  328. ZodStringFormat.init(inst, def);
  329. });
  330. export function e164(params) {
  331. return core._e164(ZodE164, params);
  332. }
  333. export const ZodJWT = /*@__PURE__*/ core.$constructor("ZodJWT", (inst, def) => {
  334. // ZodStringFormat.init(inst, def);
  335. core.$ZodJWT.init(inst, def);
  336. ZodStringFormat.init(inst, def);
  337. });
  338. export function jwt(params) {
  339. return core._jwt(ZodJWT, params);
  340. }
  341. export const ZodCustomStringFormat = /*@__PURE__*/ core.$constructor("ZodCustomStringFormat", (inst, def) => {
  342. // ZodStringFormat.init(inst, def);
  343. core.$ZodCustomStringFormat.init(inst, def);
  344. ZodStringFormat.init(inst, def);
  345. });
  346. export function stringFormat(format, fnOrRegex, _params = {}) {
  347. return core._stringFormat(ZodCustomStringFormat, format, fnOrRegex, _params);
  348. }
  349. export function hostname(_params) {
  350. return core._stringFormat(ZodCustomStringFormat, "hostname", core.regexes.hostname, _params);
  351. }
  352. export function hex(_params) {
  353. return core._stringFormat(ZodCustomStringFormat, "hex", core.regexes.hex, _params);
  354. }
  355. export function hash(alg, params) {
  356. const enc = params?.enc ?? "hex";
  357. const format = `${alg}_${enc}`;
  358. const regex = core.regexes[format];
  359. if (!regex)
  360. throw new Error(`Unrecognized hash format: ${format}`);
  361. return core._stringFormat(ZodCustomStringFormat, format, regex, params);
  362. }
  363. export const ZodNumber = /*@__PURE__*/ core.$constructor("ZodNumber", (inst, def) => {
  364. core.$ZodNumber.init(inst, def);
  365. ZodType.init(inst, def);
  366. inst._zod.processJSONSchema = (ctx, json, params) => processors.numberProcessor(inst, ctx, json, params);
  367. inst.gt = (value, params) => inst.check(checks.gt(value, params));
  368. inst.gte = (value, params) => inst.check(checks.gte(value, params));
  369. inst.min = (value, params) => inst.check(checks.gte(value, params));
  370. inst.lt = (value, params) => inst.check(checks.lt(value, params));
  371. inst.lte = (value, params) => inst.check(checks.lte(value, params));
  372. inst.max = (value, params) => inst.check(checks.lte(value, params));
  373. inst.int = (params) => inst.check(int(params));
  374. inst.safe = (params) => inst.check(int(params));
  375. inst.positive = (params) => inst.check(checks.gt(0, params));
  376. inst.nonnegative = (params) => inst.check(checks.gte(0, params));
  377. inst.negative = (params) => inst.check(checks.lt(0, params));
  378. inst.nonpositive = (params) => inst.check(checks.lte(0, params));
  379. inst.multipleOf = (value, params) => inst.check(checks.multipleOf(value, params));
  380. inst.step = (value, params) => inst.check(checks.multipleOf(value, params));
  381. // inst.finite = (params) => inst.check(core.finite(params));
  382. inst.finite = () => inst;
  383. const bag = inst._zod.bag;
  384. inst.minValue =
  385. Math.max(bag.minimum ?? Number.NEGATIVE_INFINITY, bag.exclusiveMinimum ?? Number.NEGATIVE_INFINITY) ?? null;
  386. inst.maxValue =
  387. Math.min(bag.maximum ?? Number.POSITIVE_INFINITY, bag.exclusiveMaximum ?? Number.POSITIVE_INFINITY) ?? null;
  388. inst.isInt = (bag.format ?? "").includes("int") || Number.isSafeInteger(bag.multipleOf ?? 0.5);
  389. inst.isFinite = true;
  390. inst.format = bag.format ?? null;
  391. });
  392. export function number(params) {
  393. return core._number(ZodNumber, params);
  394. }
  395. export const ZodNumberFormat = /*@__PURE__*/ core.$constructor("ZodNumberFormat", (inst, def) => {
  396. core.$ZodNumberFormat.init(inst, def);
  397. ZodNumber.init(inst, def);
  398. });
  399. export function int(params) {
  400. return core._int(ZodNumberFormat, params);
  401. }
  402. export function float32(params) {
  403. return core._float32(ZodNumberFormat, params);
  404. }
  405. export function float64(params) {
  406. return core._float64(ZodNumberFormat, params);
  407. }
  408. export function int32(params) {
  409. return core._int32(ZodNumberFormat, params);
  410. }
  411. export function uint32(params) {
  412. return core._uint32(ZodNumberFormat, params);
  413. }
  414. export const ZodBoolean = /*@__PURE__*/ core.$constructor("ZodBoolean", (inst, def) => {
  415. core.$ZodBoolean.init(inst, def);
  416. ZodType.init(inst, def);
  417. inst._zod.processJSONSchema = (ctx, json, params) => processors.booleanProcessor(inst, ctx, json, params);
  418. });
  419. export function boolean(params) {
  420. return core._boolean(ZodBoolean, params);
  421. }
  422. export const ZodBigInt = /*@__PURE__*/ core.$constructor("ZodBigInt", (inst, def) => {
  423. core.$ZodBigInt.init(inst, def);
  424. ZodType.init(inst, def);
  425. inst._zod.processJSONSchema = (ctx, json, params) => processors.bigintProcessor(inst, ctx, json, params);
  426. inst.gte = (value, params) => inst.check(checks.gte(value, params));
  427. inst.min = (value, params) => inst.check(checks.gte(value, params));
  428. inst.gt = (value, params) => inst.check(checks.gt(value, params));
  429. inst.gte = (value, params) => inst.check(checks.gte(value, params));
  430. inst.min = (value, params) => inst.check(checks.gte(value, params));
  431. inst.lt = (value, params) => inst.check(checks.lt(value, params));
  432. inst.lte = (value, params) => inst.check(checks.lte(value, params));
  433. inst.max = (value, params) => inst.check(checks.lte(value, params));
  434. inst.positive = (params) => inst.check(checks.gt(BigInt(0), params));
  435. inst.negative = (params) => inst.check(checks.lt(BigInt(0), params));
  436. inst.nonpositive = (params) => inst.check(checks.lte(BigInt(0), params));
  437. inst.nonnegative = (params) => inst.check(checks.gte(BigInt(0), params));
  438. inst.multipleOf = (value, params) => inst.check(checks.multipleOf(value, params));
  439. const bag = inst._zod.bag;
  440. inst.minValue = bag.minimum ?? null;
  441. inst.maxValue = bag.maximum ?? null;
  442. inst.format = bag.format ?? null;
  443. });
  444. export function bigint(params) {
  445. return core._bigint(ZodBigInt, params);
  446. }
  447. export const ZodBigIntFormat = /*@__PURE__*/ core.$constructor("ZodBigIntFormat", (inst, def) => {
  448. core.$ZodBigIntFormat.init(inst, def);
  449. ZodBigInt.init(inst, def);
  450. });
  451. // int64
  452. export function int64(params) {
  453. return core._int64(ZodBigIntFormat, params);
  454. }
  455. // uint64
  456. export function uint64(params) {
  457. return core._uint64(ZodBigIntFormat, params);
  458. }
  459. export const ZodSymbol = /*@__PURE__*/ core.$constructor("ZodSymbol", (inst, def) => {
  460. core.$ZodSymbol.init(inst, def);
  461. ZodType.init(inst, def);
  462. inst._zod.processJSONSchema = (ctx, json, params) => processors.symbolProcessor(inst, ctx, json, params);
  463. });
  464. export function symbol(params) {
  465. return core._symbol(ZodSymbol, params);
  466. }
  467. export const ZodUndefined = /*@__PURE__*/ core.$constructor("ZodUndefined", (inst, def) => {
  468. core.$ZodUndefined.init(inst, def);
  469. ZodType.init(inst, def);
  470. inst._zod.processJSONSchema = (ctx, json, params) => processors.undefinedProcessor(inst, ctx, json, params);
  471. });
  472. function _undefined(params) {
  473. return core._undefined(ZodUndefined, params);
  474. }
  475. export { _undefined as undefined };
  476. export const ZodNull = /*@__PURE__*/ core.$constructor("ZodNull", (inst, def) => {
  477. core.$ZodNull.init(inst, def);
  478. ZodType.init(inst, def);
  479. inst._zod.processJSONSchema = (ctx, json, params) => processors.nullProcessor(inst, ctx, json, params);
  480. });
  481. function _null(params) {
  482. return core._null(ZodNull, params);
  483. }
  484. export { _null as null };
  485. export const ZodAny = /*@__PURE__*/ core.$constructor("ZodAny", (inst, def) => {
  486. core.$ZodAny.init(inst, def);
  487. ZodType.init(inst, def);
  488. inst._zod.processJSONSchema = (ctx, json, params) => processors.anyProcessor(inst, ctx, json, params);
  489. });
  490. export function any() {
  491. return core._any(ZodAny);
  492. }
  493. export const ZodUnknown = /*@__PURE__*/ core.$constructor("ZodUnknown", (inst, def) => {
  494. core.$ZodUnknown.init(inst, def);
  495. ZodType.init(inst, def);
  496. inst._zod.processJSONSchema = (ctx, json, params) => processors.unknownProcessor(inst, ctx, json, params);
  497. });
  498. export function unknown() {
  499. return core._unknown(ZodUnknown);
  500. }
  501. export const ZodNever = /*@__PURE__*/ core.$constructor("ZodNever", (inst, def) => {
  502. core.$ZodNever.init(inst, def);
  503. ZodType.init(inst, def);
  504. inst._zod.processJSONSchema = (ctx, json, params) => processors.neverProcessor(inst, ctx, json, params);
  505. });
  506. export function never(params) {
  507. return core._never(ZodNever, params);
  508. }
  509. export const ZodVoid = /*@__PURE__*/ core.$constructor("ZodVoid", (inst, def) => {
  510. core.$ZodVoid.init(inst, def);
  511. ZodType.init(inst, def);
  512. inst._zod.processJSONSchema = (ctx, json, params) => processors.voidProcessor(inst, ctx, json, params);
  513. });
  514. function _void(params) {
  515. return core._void(ZodVoid, params);
  516. }
  517. export { _void as void };
  518. export const ZodDate = /*@__PURE__*/ core.$constructor("ZodDate", (inst, def) => {
  519. core.$ZodDate.init(inst, def);
  520. ZodType.init(inst, def);
  521. inst._zod.processJSONSchema = (ctx, json, params) => processors.dateProcessor(inst, ctx, json, params);
  522. inst.min = (value, params) => inst.check(checks.gte(value, params));
  523. inst.max = (value, params) => inst.check(checks.lte(value, params));
  524. const c = inst._zod.bag;
  525. inst.minDate = c.minimum ? new Date(c.minimum) : null;
  526. inst.maxDate = c.maximum ? new Date(c.maximum) : null;
  527. });
  528. export function date(params) {
  529. return core._date(ZodDate, params);
  530. }
  531. export const ZodArray = /*@__PURE__*/ core.$constructor("ZodArray", (inst, def) => {
  532. core.$ZodArray.init(inst, def);
  533. ZodType.init(inst, def);
  534. inst._zod.processJSONSchema = (ctx, json, params) => processors.arrayProcessor(inst, ctx, json, params);
  535. inst.element = def.element;
  536. inst.min = (minLength, params) => inst.check(checks.minLength(minLength, params));
  537. inst.nonempty = (params) => inst.check(checks.minLength(1, params));
  538. inst.max = (maxLength, params) => inst.check(checks.maxLength(maxLength, params));
  539. inst.length = (len, params) => inst.check(checks.length(len, params));
  540. inst.unwrap = () => inst.element;
  541. });
  542. export function array(element, params) {
  543. return core._array(ZodArray, element, params);
  544. }
  545. // .keyof
  546. export function keyof(schema) {
  547. const shape = schema._zod.def.shape;
  548. return _enum(Object.keys(shape));
  549. }
  550. export const ZodObject = /*@__PURE__*/ core.$constructor("ZodObject", (inst, def) => {
  551. core.$ZodObjectJIT.init(inst, def);
  552. ZodType.init(inst, def);
  553. inst._zod.processJSONSchema = (ctx, json, params) => processors.objectProcessor(inst, ctx, json, params);
  554. util.defineLazy(inst, "shape", () => {
  555. return def.shape;
  556. });
  557. inst.keyof = () => _enum(Object.keys(inst._zod.def.shape));
  558. inst.catchall = (catchall) => inst.clone({ ...inst._zod.def, catchall: catchall });
  559. inst.passthrough = () => inst.clone({ ...inst._zod.def, catchall: unknown() });
  560. inst.loose = () => inst.clone({ ...inst._zod.def, catchall: unknown() });
  561. inst.strict = () => inst.clone({ ...inst._zod.def, catchall: never() });
  562. inst.strip = () => inst.clone({ ...inst._zod.def, catchall: undefined });
  563. inst.extend = (incoming) => {
  564. return util.extend(inst, incoming);
  565. };
  566. inst.safeExtend = (incoming) => {
  567. return util.safeExtend(inst, incoming);
  568. };
  569. inst.merge = (other) => util.merge(inst, other);
  570. inst.pick = (mask) => util.pick(inst, mask);
  571. inst.omit = (mask) => util.omit(inst, mask);
  572. inst.partial = (...args) => util.partial(ZodOptional, inst, args[0]);
  573. inst.required = (...args) => util.required(ZodNonOptional, inst, args[0]);
  574. });
  575. export function object(shape, params) {
  576. const def = {
  577. type: "object",
  578. shape: shape ?? {},
  579. ...util.normalizeParams(params),
  580. };
  581. return new ZodObject(def);
  582. }
  583. // strictObject
  584. export function strictObject(shape, params) {
  585. return new ZodObject({
  586. type: "object",
  587. shape,
  588. catchall: never(),
  589. ...util.normalizeParams(params),
  590. });
  591. }
  592. // looseObject
  593. export function looseObject(shape, params) {
  594. return new ZodObject({
  595. type: "object",
  596. shape,
  597. catchall: unknown(),
  598. ...util.normalizeParams(params),
  599. });
  600. }
  601. export const ZodUnion = /*@__PURE__*/ core.$constructor("ZodUnion", (inst, def) => {
  602. core.$ZodUnion.init(inst, def);
  603. ZodType.init(inst, def);
  604. inst._zod.processJSONSchema = (ctx, json, params) => processors.unionProcessor(inst, ctx, json, params);
  605. inst.options = def.options;
  606. });
  607. export function union(options, params) {
  608. return new ZodUnion({
  609. type: "union",
  610. options: options,
  611. ...util.normalizeParams(params),
  612. });
  613. }
  614. export const ZodXor = /*@__PURE__*/ core.$constructor("ZodXor", (inst, def) => {
  615. ZodUnion.init(inst, def);
  616. core.$ZodXor.init(inst, def);
  617. inst._zod.processJSONSchema = (ctx, json, params) => processors.unionProcessor(inst, ctx, json, params);
  618. inst.options = def.options;
  619. });
  620. /** Creates an exclusive union (XOR) where exactly one option must match.
  621. * Unlike regular unions that succeed when any option matches, xor fails if
  622. * zero or more than one option matches the input. */
  623. export function xor(options, params) {
  624. return new ZodXor({
  625. type: "union",
  626. options: options,
  627. inclusive: false,
  628. ...util.normalizeParams(params),
  629. });
  630. }
  631. export const ZodDiscriminatedUnion = /*@__PURE__*/ core.$constructor("ZodDiscriminatedUnion", (inst, def) => {
  632. ZodUnion.init(inst, def);
  633. core.$ZodDiscriminatedUnion.init(inst, def);
  634. });
  635. export function discriminatedUnion(discriminator, options, params) {
  636. // const [options, params] = args;
  637. return new ZodDiscriminatedUnion({
  638. type: "union",
  639. options,
  640. discriminator,
  641. ...util.normalizeParams(params),
  642. });
  643. }
  644. export const ZodIntersection = /*@__PURE__*/ core.$constructor("ZodIntersection", (inst, def) => {
  645. core.$ZodIntersection.init(inst, def);
  646. ZodType.init(inst, def);
  647. inst._zod.processJSONSchema = (ctx, json, params) => processors.intersectionProcessor(inst, ctx, json, params);
  648. });
  649. export function intersection(left, right) {
  650. return new ZodIntersection({
  651. type: "intersection",
  652. left: left,
  653. right: right,
  654. });
  655. }
  656. export const ZodTuple = /*@__PURE__*/ core.$constructor("ZodTuple", (inst, def) => {
  657. core.$ZodTuple.init(inst, def);
  658. ZodType.init(inst, def);
  659. inst._zod.processJSONSchema = (ctx, json, params) => processors.tupleProcessor(inst, ctx, json, params);
  660. inst.rest = (rest) => inst.clone({
  661. ...inst._zod.def,
  662. rest: rest,
  663. });
  664. });
  665. export function tuple(items, _paramsOrRest, _params) {
  666. const hasRest = _paramsOrRest instanceof core.$ZodType;
  667. const params = hasRest ? _params : _paramsOrRest;
  668. const rest = hasRest ? _paramsOrRest : null;
  669. return new ZodTuple({
  670. type: "tuple",
  671. items: items,
  672. rest,
  673. ...util.normalizeParams(params),
  674. });
  675. }
  676. export const ZodRecord = /*@__PURE__*/ core.$constructor("ZodRecord", (inst, def) => {
  677. core.$ZodRecord.init(inst, def);
  678. ZodType.init(inst, def);
  679. inst._zod.processJSONSchema = (ctx, json, params) => processors.recordProcessor(inst, ctx, json, params);
  680. inst.keyType = def.keyType;
  681. inst.valueType = def.valueType;
  682. });
  683. export function record(keyType, valueType, params) {
  684. return new ZodRecord({
  685. type: "record",
  686. keyType,
  687. valueType: valueType,
  688. ...util.normalizeParams(params),
  689. });
  690. }
  691. // type alksjf = core.output<core.$ZodRecordKey>;
  692. export function partialRecord(keyType, valueType, params) {
  693. const k = core.clone(keyType);
  694. k._zod.values = undefined;
  695. return new ZodRecord({
  696. type: "record",
  697. keyType: k,
  698. valueType: valueType,
  699. ...util.normalizeParams(params),
  700. });
  701. }
  702. export function looseRecord(keyType, valueType, params) {
  703. return new ZodRecord({
  704. type: "record",
  705. keyType,
  706. valueType: valueType,
  707. mode: "loose",
  708. ...util.normalizeParams(params),
  709. });
  710. }
  711. export const ZodMap = /*@__PURE__*/ core.$constructor("ZodMap", (inst, def) => {
  712. core.$ZodMap.init(inst, def);
  713. ZodType.init(inst, def);
  714. inst._zod.processJSONSchema = (ctx, json, params) => processors.mapProcessor(inst, ctx, json, params);
  715. inst.keyType = def.keyType;
  716. inst.valueType = def.valueType;
  717. inst.min = (...args) => inst.check(core._minSize(...args));
  718. inst.nonempty = (params) => inst.check(core._minSize(1, params));
  719. inst.max = (...args) => inst.check(core._maxSize(...args));
  720. inst.size = (...args) => inst.check(core._size(...args));
  721. });
  722. export function map(keyType, valueType, params) {
  723. return new ZodMap({
  724. type: "map",
  725. keyType: keyType,
  726. valueType: valueType,
  727. ...util.normalizeParams(params),
  728. });
  729. }
  730. export const ZodSet = /*@__PURE__*/ core.$constructor("ZodSet", (inst, def) => {
  731. core.$ZodSet.init(inst, def);
  732. ZodType.init(inst, def);
  733. inst._zod.processJSONSchema = (ctx, json, params) => processors.setProcessor(inst, ctx, json, params);
  734. inst.min = (...args) => inst.check(core._minSize(...args));
  735. inst.nonempty = (params) => inst.check(core._minSize(1, params));
  736. inst.max = (...args) => inst.check(core._maxSize(...args));
  737. inst.size = (...args) => inst.check(core._size(...args));
  738. });
  739. export function set(valueType, params) {
  740. return new ZodSet({
  741. type: "set",
  742. valueType: valueType,
  743. ...util.normalizeParams(params),
  744. });
  745. }
  746. export const ZodEnum = /*@__PURE__*/ core.$constructor("ZodEnum", (inst, def) => {
  747. core.$ZodEnum.init(inst, def);
  748. ZodType.init(inst, def);
  749. inst._zod.processJSONSchema = (ctx, json, params) => processors.enumProcessor(inst, ctx, json, params);
  750. inst.enum = def.entries;
  751. inst.options = Object.values(def.entries);
  752. const keys = new Set(Object.keys(def.entries));
  753. inst.extract = (values, params) => {
  754. const newEntries = {};
  755. for (const value of values) {
  756. if (keys.has(value)) {
  757. newEntries[value] = def.entries[value];
  758. }
  759. else
  760. throw new Error(`Key ${value} not found in enum`);
  761. }
  762. return new ZodEnum({
  763. ...def,
  764. checks: [],
  765. ...util.normalizeParams(params),
  766. entries: newEntries,
  767. });
  768. };
  769. inst.exclude = (values, params) => {
  770. const newEntries = { ...def.entries };
  771. for (const value of values) {
  772. if (keys.has(value)) {
  773. delete newEntries[value];
  774. }
  775. else
  776. throw new Error(`Key ${value} not found in enum`);
  777. }
  778. return new ZodEnum({
  779. ...def,
  780. checks: [],
  781. ...util.normalizeParams(params),
  782. entries: newEntries,
  783. });
  784. };
  785. });
  786. function _enum(values, params) {
  787. const entries = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values;
  788. return new ZodEnum({
  789. type: "enum",
  790. entries,
  791. ...util.normalizeParams(params),
  792. });
  793. }
  794. export { _enum as enum };
  795. /** @deprecated This API has been merged into `z.enum()`. Use `z.enum()` instead.
  796. *
  797. * ```ts
  798. * enum Colors { red, green, blue }
  799. * z.enum(Colors);
  800. * ```
  801. */
  802. export function nativeEnum(entries, params) {
  803. return new ZodEnum({
  804. type: "enum",
  805. entries,
  806. ...util.normalizeParams(params),
  807. });
  808. }
  809. export const ZodLiteral = /*@__PURE__*/ core.$constructor("ZodLiteral", (inst, def) => {
  810. core.$ZodLiteral.init(inst, def);
  811. ZodType.init(inst, def);
  812. inst._zod.processJSONSchema = (ctx, json, params) => processors.literalProcessor(inst, ctx, json, params);
  813. inst.values = new Set(def.values);
  814. Object.defineProperty(inst, "value", {
  815. get() {
  816. if (def.values.length > 1) {
  817. throw new Error("This schema contains multiple valid literal values. Use `.values` instead.");
  818. }
  819. return def.values[0];
  820. },
  821. });
  822. });
  823. export function literal(value, params) {
  824. return new ZodLiteral({
  825. type: "literal",
  826. values: Array.isArray(value) ? value : [value],
  827. ...util.normalizeParams(params),
  828. });
  829. }
  830. export const ZodFile = /*@__PURE__*/ core.$constructor("ZodFile", (inst, def) => {
  831. core.$ZodFile.init(inst, def);
  832. ZodType.init(inst, def);
  833. inst._zod.processJSONSchema = (ctx, json, params) => processors.fileProcessor(inst, ctx, json, params);
  834. inst.min = (size, params) => inst.check(core._minSize(size, params));
  835. inst.max = (size, params) => inst.check(core._maxSize(size, params));
  836. inst.mime = (types, params) => inst.check(core._mime(Array.isArray(types) ? types : [types], params));
  837. });
  838. export function file(params) {
  839. return core._file(ZodFile, params);
  840. }
  841. export const ZodTransform = /*@__PURE__*/ core.$constructor("ZodTransform", (inst, def) => {
  842. core.$ZodTransform.init(inst, def);
  843. ZodType.init(inst, def);
  844. inst._zod.processJSONSchema = (ctx, json, params) => processors.transformProcessor(inst, ctx, json, params);
  845. inst._zod.parse = (payload, _ctx) => {
  846. if (_ctx.direction === "backward") {
  847. throw new core.$ZodEncodeError(inst.constructor.name);
  848. }
  849. payload.addIssue = (issue) => {
  850. if (typeof issue === "string") {
  851. payload.issues.push(util.issue(issue, payload.value, def));
  852. }
  853. else {
  854. // for Zod 3 backwards compatibility
  855. const _issue = issue;
  856. if (_issue.fatal)
  857. _issue.continue = false;
  858. _issue.code ?? (_issue.code = "custom");
  859. _issue.input ?? (_issue.input = payload.value);
  860. _issue.inst ?? (_issue.inst = inst);
  861. // _issue.continue ??= true;
  862. payload.issues.push(util.issue(_issue));
  863. }
  864. };
  865. const output = def.transform(payload.value, payload);
  866. if (output instanceof Promise) {
  867. return output.then((output) => {
  868. payload.value = output;
  869. return payload;
  870. });
  871. }
  872. payload.value = output;
  873. return payload;
  874. };
  875. });
  876. export function transform(fn) {
  877. return new ZodTransform({
  878. type: "transform",
  879. transform: fn,
  880. });
  881. }
  882. export const ZodOptional = /*@__PURE__*/ core.$constructor("ZodOptional", (inst, def) => {
  883. core.$ZodOptional.init(inst, def);
  884. ZodType.init(inst, def);
  885. inst._zod.processJSONSchema = (ctx, json, params) => processors.optionalProcessor(inst, ctx, json, params);
  886. inst.unwrap = () => inst._zod.def.innerType;
  887. });
  888. export function optional(innerType) {
  889. return new ZodOptional({
  890. type: "optional",
  891. innerType: innerType,
  892. });
  893. }
  894. export const ZodExactOptional = /*@__PURE__*/ core.$constructor("ZodExactOptional", (inst, def) => {
  895. core.$ZodExactOptional.init(inst, def);
  896. ZodType.init(inst, def);
  897. inst._zod.processJSONSchema = (ctx, json, params) => processors.optionalProcessor(inst, ctx, json, params);
  898. inst.unwrap = () => inst._zod.def.innerType;
  899. });
  900. export function exactOptional(innerType) {
  901. return new ZodExactOptional({
  902. type: "optional",
  903. innerType: innerType,
  904. });
  905. }
  906. export const ZodNullable = /*@__PURE__*/ core.$constructor("ZodNullable", (inst, def) => {
  907. core.$ZodNullable.init(inst, def);
  908. ZodType.init(inst, def);
  909. inst._zod.processJSONSchema = (ctx, json, params) => processors.nullableProcessor(inst, ctx, json, params);
  910. inst.unwrap = () => inst._zod.def.innerType;
  911. });
  912. export function nullable(innerType) {
  913. return new ZodNullable({
  914. type: "nullable",
  915. innerType: innerType,
  916. });
  917. }
  918. // nullish
  919. export function nullish(innerType) {
  920. return optional(nullable(innerType));
  921. }
  922. export const ZodDefault = /*@__PURE__*/ core.$constructor("ZodDefault", (inst, def) => {
  923. core.$ZodDefault.init(inst, def);
  924. ZodType.init(inst, def);
  925. inst._zod.processJSONSchema = (ctx, json, params) => processors.defaultProcessor(inst, ctx, json, params);
  926. inst.unwrap = () => inst._zod.def.innerType;
  927. inst.removeDefault = inst.unwrap;
  928. });
  929. export function _default(innerType, defaultValue) {
  930. return new ZodDefault({
  931. type: "default",
  932. innerType: innerType,
  933. get defaultValue() {
  934. return typeof defaultValue === "function" ? defaultValue() : util.shallowClone(defaultValue);
  935. },
  936. });
  937. }
  938. export const ZodPrefault = /*@__PURE__*/ core.$constructor("ZodPrefault", (inst, def) => {
  939. core.$ZodPrefault.init(inst, def);
  940. ZodType.init(inst, def);
  941. inst._zod.processJSONSchema = (ctx, json, params) => processors.prefaultProcessor(inst, ctx, json, params);
  942. inst.unwrap = () => inst._zod.def.innerType;
  943. });
  944. export function prefault(innerType, defaultValue) {
  945. return new ZodPrefault({
  946. type: "prefault",
  947. innerType: innerType,
  948. get defaultValue() {
  949. return typeof defaultValue === "function" ? defaultValue() : util.shallowClone(defaultValue);
  950. },
  951. });
  952. }
  953. export const ZodNonOptional = /*@__PURE__*/ core.$constructor("ZodNonOptional", (inst, def) => {
  954. core.$ZodNonOptional.init(inst, def);
  955. ZodType.init(inst, def);
  956. inst._zod.processJSONSchema = (ctx, json, params) => processors.nonoptionalProcessor(inst, ctx, json, params);
  957. inst.unwrap = () => inst._zod.def.innerType;
  958. });
  959. export function nonoptional(innerType, params) {
  960. return new ZodNonOptional({
  961. type: "nonoptional",
  962. innerType: innerType,
  963. ...util.normalizeParams(params),
  964. });
  965. }
  966. export const ZodSuccess = /*@__PURE__*/ core.$constructor("ZodSuccess", (inst, def) => {
  967. core.$ZodSuccess.init(inst, def);
  968. ZodType.init(inst, def);
  969. inst._zod.processJSONSchema = (ctx, json, params) => processors.successProcessor(inst, ctx, json, params);
  970. inst.unwrap = () => inst._zod.def.innerType;
  971. });
  972. export function success(innerType) {
  973. return new ZodSuccess({
  974. type: "success",
  975. innerType: innerType,
  976. });
  977. }
  978. export const ZodCatch = /*@__PURE__*/ core.$constructor("ZodCatch", (inst, def) => {
  979. core.$ZodCatch.init(inst, def);
  980. ZodType.init(inst, def);
  981. inst._zod.processJSONSchema = (ctx, json, params) => processors.catchProcessor(inst, ctx, json, params);
  982. inst.unwrap = () => inst._zod.def.innerType;
  983. inst.removeCatch = inst.unwrap;
  984. });
  985. function _catch(innerType, catchValue) {
  986. return new ZodCatch({
  987. type: "catch",
  988. innerType: innerType,
  989. catchValue: (typeof catchValue === "function" ? catchValue : () => catchValue),
  990. });
  991. }
  992. export { _catch as catch };
  993. export const ZodNaN = /*@__PURE__*/ core.$constructor("ZodNaN", (inst, def) => {
  994. core.$ZodNaN.init(inst, def);
  995. ZodType.init(inst, def);
  996. inst._zod.processJSONSchema = (ctx, json, params) => processors.nanProcessor(inst, ctx, json, params);
  997. });
  998. export function nan(params) {
  999. return core._nan(ZodNaN, params);
  1000. }
  1001. export const ZodPipe = /*@__PURE__*/ core.$constructor("ZodPipe", (inst, def) => {
  1002. core.$ZodPipe.init(inst, def);
  1003. ZodType.init(inst, def);
  1004. inst._zod.processJSONSchema = (ctx, json, params) => processors.pipeProcessor(inst, ctx, json, params);
  1005. inst.in = def.in;
  1006. inst.out = def.out;
  1007. });
  1008. export function pipe(in_, out) {
  1009. return new ZodPipe({
  1010. type: "pipe",
  1011. in: in_,
  1012. out: out,
  1013. // ...util.normalizeParams(params),
  1014. });
  1015. }
  1016. export const ZodCodec = /*@__PURE__*/ core.$constructor("ZodCodec", (inst, def) => {
  1017. ZodPipe.init(inst, def);
  1018. core.$ZodCodec.init(inst, def);
  1019. });
  1020. export function codec(in_, out, params) {
  1021. return new ZodCodec({
  1022. type: "pipe",
  1023. in: in_,
  1024. out: out,
  1025. transform: params.decode,
  1026. reverseTransform: params.encode,
  1027. });
  1028. }
  1029. export const ZodReadonly = /*@__PURE__*/ core.$constructor("ZodReadonly", (inst, def) => {
  1030. core.$ZodReadonly.init(inst, def);
  1031. ZodType.init(inst, def);
  1032. inst._zod.processJSONSchema = (ctx, json, params) => processors.readonlyProcessor(inst, ctx, json, params);
  1033. inst.unwrap = () => inst._zod.def.innerType;
  1034. });
  1035. export function readonly(innerType) {
  1036. return new ZodReadonly({
  1037. type: "readonly",
  1038. innerType: innerType,
  1039. });
  1040. }
  1041. export const ZodTemplateLiteral = /*@__PURE__*/ core.$constructor("ZodTemplateLiteral", (inst, def) => {
  1042. core.$ZodTemplateLiteral.init(inst, def);
  1043. ZodType.init(inst, def);
  1044. inst._zod.processJSONSchema = (ctx, json, params) => processors.templateLiteralProcessor(inst, ctx, json, params);
  1045. });
  1046. export function templateLiteral(parts, params) {
  1047. return new ZodTemplateLiteral({
  1048. type: "template_literal",
  1049. parts,
  1050. ...util.normalizeParams(params),
  1051. });
  1052. }
  1053. export const ZodLazy = /*@__PURE__*/ core.$constructor("ZodLazy", (inst, def) => {
  1054. core.$ZodLazy.init(inst, def);
  1055. ZodType.init(inst, def);
  1056. inst._zod.processJSONSchema = (ctx, json, params) => processors.lazyProcessor(inst, ctx, json, params);
  1057. inst.unwrap = () => inst._zod.def.getter();
  1058. });
  1059. export function lazy(getter) {
  1060. return new ZodLazy({
  1061. type: "lazy",
  1062. getter: getter,
  1063. });
  1064. }
  1065. export const ZodPromise = /*@__PURE__*/ core.$constructor("ZodPromise", (inst, def) => {
  1066. core.$ZodPromise.init(inst, def);
  1067. ZodType.init(inst, def);
  1068. inst._zod.processJSONSchema = (ctx, json, params) => processors.promiseProcessor(inst, ctx, json, params);
  1069. inst.unwrap = () => inst._zod.def.innerType;
  1070. });
  1071. export function promise(innerType) {
  1072. return new ZodPromise({
  1073. type: "promise",
  1074. innerType: innerType,
  1075. });
  1076. }
  1077. export const ZodFunction = /*@__PURE__*/ core.$constructor("ZodFunction", (inst, def) => {
  1078. core.$ZodFunction.init(inst, def);
  1079. ZodType.init(inst, def);
  1080. inst._zod.processJSONSchema = (ctx, json, params) => processors.functionProcessor(inst, ctx, json, params);
  1081. });
  1082. export function _function(params) {
  1083. return new ZodFunction({
  1084. type: "function",
  1085. input: Array.isArray(params?.input) ? tuple(params?.input) : (params?.input ?? array(unknown())),
  1086. output: params?.output ?? unknown(),
  1087. });
  1088. }
  1089. export { _function as function };
  1090. export const ZodCustom = /*@__PURE__*/ core.$constructor("ZodCustom", (inst, def) => {
  1091. core.$ZodCustom.init(inst, def);
  1092. ZodType.init(inst, def);
  1093. inst._zod.processJSONSchema = (ctx, json, params) => processors.customProcessor(inst, ctx, json, params);
  1094. });
  1095. // custom checks
  1096. export function check(fn) {
  1097. const ch = new core.$ZodCheck({
  1098. check: "custom",
  1099. // ...util.normalizeParams(params),
  1100. });
  1101. ch._zod.check = fn;
  1102. return ch;
  1103. }
  1104. export function custom(fn, _params) {
  1105. return core._custom(ZodCustom, fn ?? (() => true), _params);
  1106. }
  1107. export function refine(fn, _params = {}) {
  1108. return core._refine(ZodCustom, fn, _params);
  1109. }
  1110. // superRefine
  1111. export function superRefine(fn) {
  1112. return core._superRefine(fn);
  1113. }
  1114. // Re-export describe and meta from core
  1115. export const describe = core.describe;
  1116. export const meta = core.meta;
  1117. function _instanceof(cls, params = {}) {
  1118. const inst = new ZodCustom({
  1119. type: "custom",
  1120. check: "custom",
  1121. fn: (data) => data instanceof cls,
  1122. abort: true,
  1123. ...util.normalizeParams(params),
  1124. });
  1125. inst._zod.bag.Class = cls;
  1126. // Override check to emit invalid_type instead of custom
  1127. inst._zod.check = (payload) => {
  1128. if (!(payload.value instanceof cls)) {
  1129. payload.issues.push({
  1130. code: "invalid_type",
  1131. expected: cls.name,
  1132. input: payload.value,
  1133. inst,
  1134. path: [...(inst._zod.def.path ?? [])],
  1135. });
  1136. }
  1137. };
  1138. return inst;
  1139. }
  1140. export { _instanceof as instanceof };
  1141. // stringbool
  1142. export const stringbool = (...args) => core._stringbool({
  1143. Codec: ZodCodec,
  1144. Boolean: ZodBoolean,
  1145. String: ZodString,
  1146. }, ...args);
  1147. export function json(params) {
  1148. const jsonSchema = lazy(() => {
  1149. return union([string(params), number(), boolean(), _null(), array(jsonSchema), record(string(), jsonSchema)]);
  1150. });
  1151. return jsonSchema;
  1152. }
  1153. // preprocess
  1154. // /** @deprecated Use `z.pipe()` and `z.transform()` instead. */
  1155. export function preprocess(fn, schema) {
  1156. return pipe(transform(fn), schema);
  1157. }