schemas.js 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925
  1. import * as core from "../core/index.js";
  2. import * as util from "../core/util.js";
  3. import * as parse from "./parse.js";
  4. export const ZodMiniType = /*@__PURE__*/ core.$constructor("ZodMiniType", (inst, def) => {
  5. if (!inst._zod)
  6. throw new Error("Uninitialized schema in ZodMiniType.");
  7. core.$ZodType.init(inst, def);
  8. inst.def = def;
  9. inst.type = def.type;
  10. inst.parse = (data, params) => parse.parse(inst, data, params, { callee: inst.parse });
  11. inst.safeParse = (data, params) => parse.safeParse(inst, data, params);
  12. inst.parseAsync = async (data, params) => parse.parseAsync(inst, data, params, { callee: inst.parseAsync });
  13. inst.safeParseAsync = async (data, params) => parse.safeParseAsync(inst, data, params);
  14. inst.check = (...checks) => {
  15. return inst.clone({
  16. ...def,
  17. checks: [
  18. ...(def.checks ?? []),
  19. ...checks.map((ch) => typeof ch === "function" ? { _zod: { check: ch, def: { check: "custom" }, onattach: [] } } : ch),
  20. ],
  21. }, { parent: true });
  22. };
  23. inst.with = inst.check;
  24. inst.clone = (_def, params) => core.clone(inst, _def, params);
  25. inst.brand = () => inst;
  26. inst.register = ((reg, meta) => {
  27. reg.add(inst, meta);
  28. return inst;
  29. });
  30. inst.apply = (fn) => fn(inst);
  31. });
  32. export const ZodMiniString = /*@__PURE__*/ core.$constructor("ZodMiniString", (inst, def) => {
  33. core.$ZodString.init(inst, def);
  34. ZodMiniType.init(inst, def);
  35. });
  36. // @__NO_SIDE_EFFECTS__
  37. export function string(params) {
  38. return core._string(ZodMiniString, params);
  39. }
  40. export const ZodMiniStringFormat = /*@__PURE__*/ core.$constructor("ZodMiniStringFormat", (inst, def) => {
  41. core.$ZodStringFormat.init(inst, def);
  42. ZodMiniString.init(inst, def);
  43. });
  44. export const ZodMiniEmail = /*@__PURE__*/ core.$constructor("ZodMiniEmail", (inst, def) => {
  45. core.$ZodEmail.init(inst, def);
  46. ZodMiniStringFormat.init(inst, def);
  47. });
  48. // @__NO_SIDE_EFFECTS__
  49. export function email(params) {
  50. return core._email(ZodMiniEmail, params);
  51. }
  52. export const ZodMiniGUID = /*@__PURE__*/ core.$constructor("ZodMiniGUID", (inst, def) => {
  53. core.$ZodGUID.init(inst, def);
  54. ZodMiniStringFormat.init(inst, def);
  55. });
  56. // @__NO_SIDE_EFFECTS__
  57. export function guid(params) {
  58. return core._guid(ZodMiniGUID, params);
  59. }
  60. export const ZodMiniUUID = /*@__PURE__*/ core.$constructor("ZodMiniUUID", (inst, def) => {
  61. core.$ZodUUID.init(inst, def);
  62. ZodMiniStringFormat.init(inst, def);
  63. });
  64. // @__NO_SIDE_EFFECTS__
  65. export function uuid(params) {
  66. return core._uuid(ZodMiniUUID, params);
  67. }
  68. // @__NO_SIDE_EFFECTS__
  69. export function uuidv4(params) {
  70. return core._uuidv4(ZodMiniUUID, params);
  71. }
  72. // ZodMiniUUIDv6
  73. // @__NO_SIDE_EFFECTS__
  74. export function uuidv6(params) {
  75. return core._uuidv6(ZodMiniUUID, params);
  76. }
  77. // ZodMiniUUIDv7
  78. // @__NO_SIDE_EFFECTS__
  79. export function uuidv7(params) {
  80. return core._uuidv7(ZodMiniUUID, params);
  81. }
  82. export const ZodMiniURL = /*@__PURE__*/ core.$constructor("ZodMiniURL", (inst, def) => {
  83. core.$ZodURL.init(inst, def);
  84. ZodMiniStringFormat.init(inst, def);
  85. });
  86. // @__NO_SIDE_EFFECTS__
  87. export function url(params) {
  88. return core._url(ZodMiniURL, params);
  89. }
  90. // @__NO_SIDE_EFFECTS__
  91. export function httpUrl(params) {
  92. return core._url(ZodMiniURL, {
  93. protocol: /^https?$/,
  94. hostname: core.regexes.domain,
  95. ...util.normalizeParams(params),
  96. });
  97. }
  98. export const ZodMiniEmoji = /*@__PURE__*/ core.$constructor("ZodMiniEmoji", (inst, def) => {
  99. core.$ZodEmoji.init(inst, def);
  100. ZodMiniStringFormat.init(inst, def);
  101. });
  102. // @__NO_SIDE_EFFECTS__
  103. export function emoji(params) {
  104. return core._emoji(ZodMiniEmoji, params);
  105. }
  106. export const ZodMiniNanoID = /*@__PURE__*/ core.$constructor("ZodMiniNanoID", (inst, def) => {
  107. core.$ZodNanoID.init(inst, def);
  108. ZodMiniStringFormat.init(inst, def);
  109. });
  110. // @__NO_SIDE_EFFECTS__
  111. export function nanoid(params) {
  112. return core._nanoid(ZodMiniNanoID, params);
  113. }
  114. export const ZodMiniCUID = /*@__PURE__*/ core.$constructor("ZodMiniCUID", (inst, def) => {
  115. core.$ZodCUID.init(inst, def);
  116. ZodMiniStringFormat.init(inst, def);
  117. });
  118. // @__NO_SIDE_EFFECTS__
  119. export function cuid(params) {
  120. return core._cuid(ZodMiniCUID, params);
  121. }
  122. export const ZodMiniCUID2 = /*@__PURE__*/ core.$constructor("ZodMiniCUID2", (inst, def) => {
  123. core.$ZodCUID2.init(inst, def);
  124. ZodMiniStringFormat.init(inst, def);
  125. });
  126. // @__NO_SIDE_EFFECTS__
  127. export function cuid2(params) {
  128. return core._cuid2(ZodMiniCUID2, params);
  129. }
  130. export const ZodMiniULID = /*@__PURE__*/ core.$constructor("ZodMiniULID", (inst, def) => {
  131. core.$ZodULID.init(inst, def);
  132. ZodMiniStringFormat.init(inst, def);
  133. });
  134. // @__NO_SIDE_EFFECTS__
  135. export function ulid(params) {
  136. return core._ulid(ZodMiniULID, params);
  137. }
  138. export const ZodMiniXID = /*@__PURE__*/ core.$constructor("ZodMiniXID", (inst, def) => {
  139. core.$ZodXID.init(inst, def);
  140. ZodMiniStringFormat.init(inst, def);
  141. });
  142. // @__NO_SIDE_EFFECTS__
  143. export function xid(params) {
  144. return core._xid(ZodMiniXID, params);
  145. }
  146. export const ZodMiniKSUID = /*@__PURE__*/ core.$constructor("ZodMiniKSUID", (inst, def) => {
  147. core.$ZodKSUID.init(inst, def);
  148. ZodMiniStringFormat.init(inst, def);
  149. });
  150. // @__NO_SIDE_EFFECTS__
  151. export function ksuid(params) {
  152. return core._ksuid(ZodMiniKSUID, params);
  153. }
  154. export const ZodMiniIPv4 = /*@__PURE__*/ core.$constructor("ZodMiniIPv4", (inst, def) => {
  155. core.$ZodIPv4.init(inst, def);
  156. ZodMiniStringFormat.init(inst, def);
  157. });
  158. // @__NO_SIDE_EFFECTS__
  159. export function ipv4(params) {
  160. return core._ipv4(ZodMiniIPv4, params);
  161. }
  162. export const ZodMiniIPv6 = /*@__PURE__*/ core.$constructor("ZodMiniIPv6", (inst, def) => {
  163. core.$ZodIPv6.init(inst, def);
  164. ZodMiniStringFormat.init(inst, def);
  165. });
  166. // @__NO_SIDE_EFFECTS__
  167. export function ipv6(params) {
  168. return core._ipv6(ZodMiniIPv6, params);
  169. }
  170. export const ZodMiniCIDRv4 = /*@__PURE__*/ core.$constructor("ZodMiniCIDRv4", (inst, def) => {
  171. core.$ZodCIDRv4.init(inst, def);
  172. ZodMiniStringFormat.init(inst, def);
  173. });
  174. // @__NO_SIDE_EFFECTS__
  175. export function cidrv4(params) {
  176. return core._cidrv4(ZodMiniCIDRv4, params);
  177. }
  178. export const ZodMiniCIDRv6 = /*@__PURE__*/ core.$constructor("ZodMiniCIDRv6", (inst, def) => {
  179. core.$ZodCIDRv6.init(inst, def);
  180. ZodMiniStringFormat.init(inst, def);
  181. });
  182. // @__NO_SIDE_EFFECTS__
  183. export function cidrv6(params) {
  184. return core._cidrv6(ZodMiniCIDRv6, params);
  185. }
  186. export const ZodMiniMAC = /*@__PURE__*/ core.$constructor("ZodMiniMAC", (inst, def) => {
  187. core.$ZodMAC.init(inst, def);
  188. ZodMiniStringFormat.init(inst, def);
  189. });
  190. // @__NO_SIDE_EFFECTS__
  191. export function mac(params) {
  192. return core._mac(ZodMiniMAC, params);
  193. }
  194. export const ZodMiniBase64 = /*@__PURE__*/ core.$constructor("ZodMiniBase64", (inst, def) => {
  195. core.$ZodBase64.init(inst, def);
  196. ZodMiniStringFormat.init(inst, def);
  197. });
  198. // @__NO_SIDE_EFFECTS__
  199. export function base64(params) {
  200. return core._base64(ZodMiniBase64, params);
  201. }
  202. export const ZodMiniBase64URL = /*@__PURE__*/ core.$constructor("ZodMiniBase64URL", (inst, def) => {
  203. core.$ZodBase64URL.init(inst, def);
  204. ZodMiniStringFormat.init(inst, def);
  205. });
  206. // @__NO_SIDE_EFFECTS__
  207. export function base64url(params) {
  208. return core._base64url(ZodMiniBase64URL, params);
  209. }
  210. export const ZodMiniE164 = /*@__PURE__*/ core.$constructor("ZodMiniE164", (inst, def) => {
  211. core.$ZodE164.init(inst, def);
  212. ZodMiniStringFormat.init(inst, def);
  213. });
  214. // @__NO_SIDE_EFFECTS__
  215. export function e164(params) {
  216. return core._e164(ZodMiniE164, params);
  217. }
  218. export const ZodMiniJWT = /*@__PURE__*/ core.$constructor("ZodMiniJWT", (inst, def) => {
  219. core.$ZodJWT.init(inst, def);
  220. ZodMiniStringFormat.init(inst, def);
  221. });
  222. // @__NO_SIDE_EFFECTS__
  223. export function jwt(params) {
  224. return core._jwt(ZodMiniJWT, params);
  225. }
  226. export const ZodMiniCustomStringFormat = /*@__PURE__*/ core.$constructor("ZodMiniCustomStringFormat", (inst, def) => {
  227. core.$ZodCustomStringFormat.init(inst, def);
  228. ZodMiniStringFormat.init(inst, def);
  229. });
  230. // @__NO_SIDE_EFFECTS__
  231. export function stringFormat(format, fnOrRegex, _params = {}) {
  232. return core._stringFormat(ZodMiniCustomStringFormat, format, fnOrRegex, _params);
  233. }
  234. // @__NO_SIDE_EFFECTS__
  235. export function hostname(_params) {
  236. return core._stringFormat(ZodMiniCustomStringFormat, "hostname", core.regexes.hostname, _params);
  237. }
  238. // @__NO_SIDE_EFFECTS__
  239. export function hex(_params) {
  240. return core._stringFormat(ZodMiniCustomStringFormat, "hex", core.regexes.hex, _params);
  241. }
  242. // @__NO_SIDE_EFFECTS__
  243. export function hash(alg, params) {
  244. const enc = params?.enc ?? "hex";
  245. const format = `${alg}_${enc}`;
  246. const regex = core.regexes[format];
  247. // check for unrecognized format
  248. if (!regex)
  249. throw new Error(`Unrecognized hash format: ${format}`);
  250. return core._stringFormat(ZodMiniCustomStringFormat, format, regex, params);
  251. }
  252. export const ZodMiniNumber = /*@__PURE__*/ core.$constructor("ZodMiniNumber", (inst, def) => {
  253. core.$ZodNumber.init(inst, def);
  254. ZodMiniType.init(inst, def);
  255. });
  256. // @__NO_SIDE_EFFECTS__
  257. export function number(params) {
  258. return core._number(ZodMiniNumber, params);
  259. }
  260. export const ZodMiniNumberFormat = /*@__PURE__*/ core.$constructor("ZodMiniNumberFormat", (inst, def) => {
  261. core.$ZodNumberFormat.init(inst, def);
  262. ZodMiniNumber.init(inst, def);
  263. });
  264. // int
  265. // @__NO_SIDE_EFFECTS__
  266. export function int(params) {
  267. return core._int(ZodMiniNumberFormat, params);
  268. }
  269. // float32
  270. // @__NO_SIDE_EFFECTS__
  271. export function float32(params) {
  272. return core._float32(ZodMiniNumberFormat, params);
  273. }
  274. // float64
  275. // @__NO_SIDE_EFFECTS__
  276. export function float64(params) {
  277. return core._float64(ZodMiniNumberFormat, params);
  278. }
  279. // int32
  280. // @__NO_SIDE_EFFECTS__
  281. export function int32(params) {
  282. return core._int32(ZodMiniNumberFormat, params);
  283. }
  284. // uint32
  285. // @__NO_SIDE_EFFECTS__
  286. export function uint32(params) {
  287. return core._uint32(ZodMiniNumberFormat, params);
  288. }
  289. export const ZodMiniBoolean = /*@__PURE__*/ core.$constructor("ZodMiniBoolean", (inst, def) => {
  290. core.$ZodBoolean.init(inst, def);
  291. ZodMiniType.init(inst, def);
  292. });
  293. // @__NO_SIDE_EFFECTS__
  294. export function boolean(params) {
  295. return core._boolean(ZodMiniBoolean, params);
  296. }
  297. export const ZodMiniBigInt = /*@__PURE__*/ core.$constructor("ZodMiniBigInt", (inst, def) => {
  298. core.$ZodBigInt.init(inst, def);
  299. ZodMiniType.init(inst, def);
  300. });
  301. // @__NO_SIDE_EFFECTS__
  302. export function bigint(params) {
  303. return core._bigint(ZodMiniBigInt, params);
  304. }
  305. export const ZodMiniBigIntFormat = /*@__PURE__*/ core.$constructor("ZodMiniBigIntFormat", (inst, def) => {
  306. core.$ZodBigIntFormat.init(inst, def);
  307. ZodMiniBigInt.init(inst, def);
  308. });
  309. // int64
  310. // @__NO_SIDE_EFFECTS__
  311. export function int64(params) {
  312. return core._int64(ZodMiniBigIntFormat, params);
  313. }
  314. // uint64
  315. // @__NO_SIDE_EFFECTS__
  316. export function uint64(params) {
  317. return core._uint64(ZodMiniBigIntFormat, params);
  318. }
  319. export const ZodMiniSymbol = /*@__PURE__*/ core.$constructor("ZodMiniSymbol", (inst, def) => {
  320. core.$ZodSymbol.init(inst, def);
  321. ZodMiniType.init(inst, def);
  322. });
  323. // @__NO_SIDE_EFFECTS__
  324. export function symbol(params) {
  325. return core._symbol(ZodMiniSymbol, params);
  326. }
  327. export const ZodMiniUndefined = /*@__PURE__*/ core.$constructor("ZodMiniUndefined", (inst, def) => {
  328. core.$ZodUndefined.init(inst, def);
  329. ZodMiniType.init(inst, def);
  330. });
  331. // @__NO_SIDE_EFFECTS__
  332. function _undefined(params) {
  333. return core._undefined(ZodMiniUndefined, params);
  334. }
  335. export { _undefined as undefined };
  336. export const ZodMiniNull = /*@__PURE__*/ core.$constructor("ZodMiniNull", (inst, def) => {
  337. core.$ZodNull.init(inst, def);
  338. ZodMiniType.init(inst, def);
  339. });
  340. // @__NO_SIDE_EFFECTS__
  341. function _null(params) {
  342. return core._null(ZodMiniNull, params);
  343. }
  344. export { _null as null };
  345. export const ZodMiniAny = /*@__PURE__*/ core.$constructor("ZodMiniAny", (inst, def) => {
  346. core.$ZodAny.init(inst, def);
  347. ZodMiniType.init(inst, def);
  348. });
  349. // @__NO_SIDE_EFFECTS__
  350. export function any() {
  351. return core._any(ZodMiniAny);
  352. }
  353. export const ZodMiniUnknown = /*@__PURE__*/ core.$constructor("ZodMiniUnknown", (inst, def) => {
  354. core.$ZodUnknown.init(inst, def);
  355. ZodMiniType.init(inst, def);
  356. });
  357. // @__NO_SIDE_EFFECTS__
  358. export function unknown() {
  359. return core._unknown(ZodMiniUnknown);
  360. }
  361. export const ZodMiniNever = /*@__PURE__*/ core.$constructor("ZodMiniNever", (inst, def) => {
  362. core.$ZodNever.init(inst, def);
  363. ZodMiniType.init(inst, def);
  364. });
  365. // @__NO_SIDE_EFFECTS__
  366. export function never(params) {
  367. return core._never(ZodMiniNever, params);
  368. }
  369. export const ZodMiniVoid = /*@__PURE__*/ core.$constructor("ZodMiniVoid", (inst, def) => {
  370. core.$ZodVoid.init(inst, def);
  371. ZodMiniType.init(inst, def);
  372. });
  373. // @__NO_SIDE_EFFECTS__
  374. function _void(params) {
  375. return core._void(ZodMiniVoid, params);
  376. }
  377. export { _void as void };
  378. export const ZodMiniDate = /*@__PURE__*/ core.$constructor("ZodMiniDate", (inst, def) => {
  379. core.$ZodDate.init(inst, def);
  380. ZodMiniType.init(inst, def);
  381. });
  382. // @__NO_SIDE_EFFECTS__
  383. export function date(params) {
  384. return core._date(ZodMiniDate, params);
  385. }
  386. export const ZodMiniArray = /*@__PURE__*/ core.$constructor("ZodMiniArray", (inst, def) => {
  387. core.$ZodArray.init(inst, def);
  388. ZodMiniType.init(inst, def);
  389. });
  390. // @__NO_SIDE_EFFECTS__
  391. export function array(element, params) {
  392. return new ZodMiniArray({
  393. type: "array",
  394. element: element,
  395. ...util.normalizeParams(params),
  396. });
  397. }
  398. // .keyof
  399. // @__NO_SIDE_EFFECTS__
  400. export function keyof(schema) {
  401. const shape = schema._zod.def.shape;
  402. return _enum(Object.keys(shape));
  403. }
  404. export const ZodMiniObject = /*@__PURE__*/ core.$constructor("ZodMiniObject", (inst, def) => {
  405. core.$ZodObject.init(inst, def);
  406. ZodMiniType.init(inst, def);
  407. util.defineLazy(inst, "shape", () => def.shape);
  408. });
  409. // @__NO_SIDE_EFFECTS__
  410. export function object(shape, params) {
  411. const def = {
  412. type: "object",
  413. shape: shape ?? {},
  414. ...util.normalizeParams(params),
  415. };
  416. return new ZodMiniObject(def);
  417. }
  418. // strictObject
  419. // @__NO_SIDE_EFFECTS__
  420. export function strictObject(shape, params) {
  421. return new ZodMiniObject({
  422. type: "object",
  423. shape,
  424. catchall: never(),
  425. ...util.normalizeParams(params),
  426. });
  427. }
  428. // looseObject
  429. // @__NO_SIDE_EFFECTS__
  430. export function looseObject(shape, params) {
  431. return new ZodMiniObject({
  432. type: "object",
  433. shape,
  434. catchall: unknown(),
  435. ...util.normalizeParams(params),
  436. });
  437. }
  438. // object methods
  439. // @__NO_SIDE_EFFECTS__
  440. export function extend(schema, shape) {
  441. return util.extend(schema, shape);
  442. }
  443. // @__NO_SIDE_EFFECTS__
  444. export function safeExtend(schema, shape) {
  445. return util.safeExtend(schema, shape);
  446. }
  447. // @__NO_SIDE_EFFECTS__
  448. export function merge(schema, shape) {
  449. return util.extend(schema, shape);
  450. }
  451. // @__NO_SIDE_EFFECTS__
  452. export function pick(schema, mask) {
  453. return util.pick(schema, mask);
  454. }
  455. // .omit
  456. // @__NO_SIDE_EFFECTS__
  457. export function omit(schema, mask) {
  458. return util.omit(schema, mask);
  459. }
  460. // @__NO_SIDE_EFFECTS__
  461. export function partial(schema, mask) {
  462. return util.partial(ZodMiniOptional, schema, mask);
  463. }
  464. // @__NO_SIDE_EFFECTS__
  465. export function required(schema, mask) {
  466. return util.required(ZodMiniNonOptional, schema, mask);
  467. }
  468. // @__NO_SIDE_EFFECTS__
  469. export function catchall(inst, catchall) {
  470. return inst.clone({ ...inst._zod.def, catchall: catchall });
  471. }
  472. export const ZodMiniUnion = /*@__PURE__*/ core.$constructor("ZodMiniUnion", (inst, def) => {
  473. core.$ZodUnion.init(inst, def);
  474. ZodMiniType.init(inst, def);
  475. });
  476. // @__NO_SIDE_EFFECTS__
  477. export function union(options, params) {
  478. return new ZodMiniUnion({
  479. type: "union",
  480. options: options,
  481. ...util.normalizeParams(params),
  482. });
  483. }
  484. export const ZodMiniXor = /*@__PURE__*/ core.$constructor("ZodMiniXor", (inst, def) => {
  485. ZodMiniUnion.init(inst, def);
  486. core.$ZodXor.init(inst, def);
  487. });
  488. /** Creates an exclusive union (XOR) where exactly one option must match.
  489. * Unlike regular unions that succeed when any option matches, xor fails if
  490. * zero or more than one option matches the input. */
  491. export function xor(options, params) {
  492. return new ZodMiniXor({
  493. type: "union",
  494. options: options,
  495. inclusive: false,
  496. ...util.normalizeParams(params),
  497. });
  498. }
  499. export const ZodMiniDiscriminatedUnion = /*@__PURE__*/ core.$constructor("ZodMiniDiscriminatedUnion", (inst, def) => {
  500. core.$ZodDiscriminatedUnion.init(inst, def);
  501. ZodMiniType.init(inst, def);
  502. });
  503. // @__NO_SIDE_EFFECTS__
  504. export function discriminatedUnion(discriminator, options, params) {
  505. return new ZodMiniDiscriminatedUnion({
  506. type: "union",
  507. options,
  508. discriminator,
  509. ...util.normalizeParams(params),
  510. });
  511. }
  512. export const ZodMiniIntersection = /*@__PURE__*/ core.$constructor("ZodMiniIntersection", (inst, def) => {
  513. core.$ZodIntersection.init(inst, def);
  514. ZodMiniType.init(inst, def);
  515. });
  516. // @__NO_SIDE_EFFECTS__
  517. export function intersection(left, right) {
  518. return new ZodMiniIntersection({
  519. type: "intersection",
  520. left: left,
  521. right: right,
  522. });
  523. }
  524. export const ZodMiniTuple = /*@__PURE__*/ core.$constructor("ZodMiniTuple", (inst, def) => {
  525. core.$ZodTuple.init(inst, def);
  526. ZodMiniType.init(inst, def);
  527. });
  528. // @__NO_SIDE_EFFECTS__
  529. export function tuple(items, _paramsOrRest, _params) {
  530. const hasRest = _paramsOrRest instanceof core.$ZodType;
  531. const params = hasRest ? _params : _paramsOrRest;
  532. const rest = hasRest ? _paramsOrRest : null;
  533. return new ZodMiniTuple({
  534. type: "tuple",
  535. items: items,
  536. rest,
  537. ...util.normalizeParams(params),
  538. });
  539. }
  540. export const ZodMiniRecord = /*@__PURE__*/ core.$constructor("ZodMiniRecord", (inst, def) => {
  541. core.$ZodRecord.init(inst, def);
  542. ZodMiniType.init(inst, def);
  543. });
  544. // @__NO_SIDE_EFFECTS__
  545. export function record(keyType, valueType, params) {
  546. return new ZodMiniRecord({
  547. type: "record",
  548. keyType,
  549. valueType: valueType,
  550. ...util.normalizeParams(params),
  551. });
  552. }
  553. // @__NO_SIDE_EFFECTS__
  554. export function partialRecord(keyType, valueType, params) {
  555. const k = core.clone(keyType);
  556. k._zod.values = undefined;
  557. return new ZodMiniRecord({
  558. type: "record",
  559. keyType: k,
  560. valueType: valueType,
  561. ...util.normalizeParams(params),
  562. });
  563. }
  564. export function looseRecord(keyType, valueType, params) {
  565. return new ZodMiniRecord({
  566. type: "record",
  567. keyType,
  568. valueType: valueType,
  569. mode: "loose",
  570. ...util.normalizeParams(params),
  571. });
  572. }
  573. export const ZodMiniMap = /*@__PURE__*/ core.$constructor("ZodMiniMap", (inst, def) => {
  574. core.$ZodMap.init(inst, def);
  575. ZodMiniType.init(inst, def);
  576. });
  577. // @__NO_SIDE_EFFECTS__
  578. export function map(keyType, valueType, params) {
  579. return new ZodMiniMap({
  580. type: "map",
  581. keyType: keyType,
  582. valueType: valueType,
  583. ...util.normalizeParams(params),
  584. });
  585. }
  586. export const ZodMiniSet = /*@__PURE__*/ core.$constructor("ZodMiniSet", (inst, def) => {
  587. core.$ZodSet.init(inst, def);
  588. ZodMiniType.init(inst, def);
  589. });
  590. // @__NO_SIDE_EFFECTS__
  591. export function set(valueType, params) {
  592. return new ZodMiniSet({
  593. type: "set",
  594. valueType: valueType,
  595. ...util.normalizeParams(params),
  596. });
  597. }
  598. export const ZodMiniEnum = /*@__PURE__*/ core.$constructor("ZodMiniEnum", (inst, def) => {
  599. core.$ZodEnum.init(inst, def);
  600. ZodMiniType.init(inst, def);
  601. inst.options = Object.values(def.entries);
  602. });
  603. // @__NO_SIDE_EFFECTS__
  604. function _enum(values, params) {
  605. const entries = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values;
  606. return new ZodMiniEnum({
  607. type: "enum",
  608. entries,
  609. ...util.normalizeParams(params),
  610. });
  611. }
  612. export { _enum as enum };
  613. // @__NO_SIDE_EFFECTS__
  614. /** @deprecated This API has been merged into `z.enum()`. Use `z.enum()` instead.
  615. *
  616. * ```ts
  617. * enum Colors { red, green, blue }
  618. * z.enum(Colors);
  619. * ```
  620. */
  621. export function nativeEnum(entries, params) {
  622. return new ZodMiniEnum({
  623. type: "enum",
  624. entries,
  625. ...util.normalizeParams(params),
  626. });
  627. }
  628. export const ZodMiniLiteral = /*@__PURE__*/ core.$constructor("ZodMiniLiteral", (inst, def) => {
  629. core.$ZodLiteral.init(inst, def);
  630. ZodMiniType.init(inst, def);
  631. });
  632. // @__NO_SIDE_EFFECTS__
  633. export function literal(value, params) {
  634. return new ZodMiniLiteral({
  635. type: "literal",
  636. values: Array.isArray(value) ? value : [value],
  637. ...util.normalizeParams(params),
  638. });
  639. }
  640. export const ZodMiniFile = /*@__PURE__*/ core.$constructor("ZodMiniFile", (inst, def) => {
  641. core.$ZodFile.init(inst, def);
  642. ZodMiniType.init(inst, def);
  643. });
  644. // @__NO_SIDE_EFFECTS__
  645. export function file(params) {
  646. return core._file(ZodMiniFile, params);
  647. }
  648. export const ZodMiniTransform = /*@__PURE__*/ core.$constructor("ZodMiniTransform", (inst, def) => {
  649. core.$ZodTransform.init(inst, def);
  650. ZodMiniType.init(inst, def);
  651. });
  652. // @__NO_SIDE_EFFECTS__
  653. export function transform(fn) {
  654. return new ZodMiniTransform({
  655. type: "transform",
  656. transform: fn,
  657. });
  658. }
  659. export const ZodMiniOptional = /*@__PURE__*/ core.$constructor("ZodMiniOptional", (inst, def) => {
  660. core.$ZodOptional.init(inst, def);
  661. ZodMiniType.init(inst, def);
  662. });
  663. // @__NO_SIDE_EFFECTS__
  664. export function optional(innerType) {
  665. return new ZodMiniOptional({
  666. type: "optional",
  667. innerType: innerType,
  668. });
  669. }
  670. export const ZodMiniExactOptional = /*@__PURE__*/ core.$constructor("ZodMiniExactOptional", (inst, def) => {
  671. core.$ZodExactOptional.init(inst, def);
  672. ZodMiniType.init(inst, def);
  673. });
  674. // @__NO_SIDE_EFFECTS__
  675. export function exactOptional(innerType) {
  676. return new ZodMiniExactOptional({
  677. type: "optional",
  678. innerType: innerType,
  679. });
  680. }
  681. export const ZodMiniNullable = /*@__PURE__*/ core.$constructor("ZodMiniNullable", (inst, def) => {
  682. core.$ZodNullable.init(inst, def);
  683. ZodMiniType.init(inst, def);
  684. });
  685. // @__NO_SIDE_EFFECTS__
  686. export function nullable(innerType) {
  687. return new ZodMiniNullable({
  688. type: "nullable",
  689. innerType: innerType,
  690. });
  691. }
  692. // nullish
  693. // @__NO_SIDE_EFFECTS__
  694. export function nullish(innerType) {
  695. return optional(nullable(innerType));
  696. }
  697. export const ZodMiniDefault = /*@__PURE__*/ core.$constructor("ZodMiniDefault", (inst, def) => {
  698. core.$ZodDefault.init(inst, def);
  699. ZodMiniType.init(inst, def);
  700. });
  701. // @__NO_SIDE_EFFECTS__
  702. export function _default(innerType, defaultValue) {
  703. return new ZodMiniDefault({
  704. type: "default",
  705. innerType: innerType,
  706. get defaultValue() {
  707. return typeof defaultValue === "function" ? defaultValue() : util.shallowClone(defaultValue);
  708. },
  709. });
  710. }
  711. export const ZodMiniPrefault = /*@__PURE__*/ core.$constructor("ZodMiniPrefault", (inst, def) => {
  712. core.$ZodPrefault.init(inst, def);
  713. ZodMiniType.init(inst, def);
  714. });
  715. // @__NO_SIDE_EFFECTS__
  716. export function prefault(innerType, defaultValue) {
  717. return new ZodMiniPrefault({
  718. type: "prefault",
  719. innerType: innerType,
  720. get defaultValue() {
  721. return typeof defaultValue === "function" ? defaultValue() : util.shallowClone(defaultValue);
  722. },
  723. });
  724. }
  725. export const ZodMiniNonOptional = /*@__PURE__*/ core.$constructor("ZodMiniNonOptional", (inst, def) => {
  726. core.$ZodNonOptional.init(inst, def);
  727. ZodMiniType.init(inst, def);
  728. });
  729. // @__NO_SIDE_EFFECTS__
  730. export function nonoptional(innerType, params) {
  731. return new ZodMiniNonOptional({
  732. type: "nonoptional",
  733. innerType: innerType,
  734. ...util.normalizeParams(params),
  735. });
  736. }
  737. export const ZodMiniSuccess = /*@__PURE__*/ core.$constructor("ZodMiniSuccess", (inst, def) => {
  738. core.$ZodSuccess.init(inst, def);
  739. ZodMiniType.init(inst, def);
  740. });
  741. // @__NO_SIDE_EFFECTS__
  742. export function success(innerType) {
  743. return new ZodMiniSuccess({
  744. type: "success",
  745. innerType: innerType,
  746. });
  747. }
  748. export const ZodMiniCatch = /*@__PURE__*/ core.$constructor("ZodMiniCatch", (inst, def) => {
  749. core.$ZodCatch.init(inst, def);
  750. ZodMiniType.init(inst, def);
  751. });
  752. // @__NO_SIDE_EFFECTS__
  753. function _catch(innerType, catchValue) {
  754. return new ZodMiniCatch({
  755. type: "catch",
  756. innerType: innerType,
  757. catchValue: (typeof catchValue === "function" ? catchValue : () => catchValue),
  758. });
  759. }
  760. export { _catch as catch };
  761. export const ZodMiniNaN = /*@__PURE__*/ core.$constructor("ZodMiniNaN", (inst, def) => {
  762. core.$ZodNaN.init(inst, def);
  763. ZodMiniType.init(inst, def);
  764. });
  765. // @__NO_SIDE_EFFECTS__
  766. export function nan(params) {
  767. return core._nan(ZodMiniNaN, params);
  768. }
  769. export const ZodMiniPipe = /*@__PURE__*/ core.$constructor("ZodMiniPipe", (inst, def) => {
  770. core.$ZodPipe.init(inst, def);
  771. ZodMiniType.init(inst, def);
  772. });
  773. // @__NO_SIDE_EFFECTS__
  774. export function pipe(in_, out) {
  775. return new ZodMiniPipe({
  776. type: "pipe",
  777. in: in_,
  778. out: out,
  779. });
  780. }
  781. export const ZodMiniCodec = /*@__PURE__*/ core.$constructor("ZodMiniCodec", (inst, def) => {
  782. ZodMiniPipe.init(inst, def);
  783. core.$ZodCodec.init(inst, def);
  784. });
  785. // @__NO_SIDE_EFFECTS__
  786. export function codec(in_, out, params) {
  787. return new ZodMiniCodec({
  788. type: "pipe",
  789. in: in_,
  790. out: out,
  791. transform: params.decode,
  792. reverseTransform: params.encode,
  793. });
  794. }
  795. export const ZodMiniReadonly = /*@__PURE__*/ core.$constructor("ZodMiniReadonly", (inst, def) => {
  796. core.$ZodReadonly.init(inst, def);
  797. ZodMiniType.init(inst, def);
  798. });
  799. // @__NO_SIDE_EFFECTS__
  800. export function readonly(innerType) {
  801. return new ZodMiniReadonly({
  802. type: "readonly",
  803. innerType: innerType,
  804. });
  805. }
  806. export const ZodMiniTemplateLiteral = /*@__PURE__*/ core.$constructor("ZodMiniTemplateLiteral", (inst, def) => {
  807. core.$ZodTemplateLiteral.init(inst, def);
  808. ZodMiniType.init(inst, def);
  809. });
  810. // @__NO_SIDE_EFFECTS__
  811. export function templateLiteral(parts, params) {
  812. return new ZodMiniTemplateLiteral({
  813. type: "template_literal",
  814. parts,
  815. ...util.normalizeParams(params),
  816. });
  817. }
  818. export const ZodMiniLazy = /*@__PURE__*/ core.$constructor("ZodMiniLazy", (inst, def) => {
  819. core.$ZodLazy.init(inst, def);
  820. ZodMiniType.init(inst, def);
  821. });
  822. // export function lazy<T extends object>(getter: () => T): T {
  823. // return util.createTransparentProxy<T>(getter);
  824. // }
  825. // @__NO_SIDE_EFFECTS__
  826. function _lazy(getter) {
  827. return new ZodMiniLazy({
  828. type: "lazy",
  829. getter: getter,
  830. });
  831. }
  832. export { _lazy as lazy };
  833. export const ZodMiniPromise = /*@__PURE__*/ core.$constructor("ZodMiniPromise", (inst, def) => {
  834. core.$ZodPromise.init(inst, def);
  835. ZodMiniType.init(inst, def);
  836. });
  837. // @__NO_SIDE_EFFECTS__
  838. export function promise(innerType) {
  839. return new ZodMiniPromise({
  840. type: "promise",
  841. innerType: innerType,
  842. });
  843. }
  844. export const ZodMiniCustom = /*@__PURE__*/ core.$constructor("ZodMiniCustom", (inst, def) => {
  845. core.$ZodCustom.init(inst, def);
  846. ZodMiniType.init(inst, def);
  847. });
  848. // custom checks
  849. // @__NO_SIDE_EFFECTS__
  850. export function check(fn, params) {
  851. const ch = new core.$ZodCheck({
  852. check: "custom",
  853. ...util.normalizeParams(params),
  854. });
  855. ch._zod.check = fn;
  856. return ch;
  857. }
  858. // ZodCustom
  859. // custom schema
  860. // @__NO_SIDE_EFFECTS__
  861. export function custom(fn, _params) {
  862. return core._custom(ZodMiniCustom, fn ?? (() => true), _params);
  863. }
  864. // refine
  865. // @__NO_SIDE_EFFECTS__
  866. export function refine(fn, _params = {}) {
  867. return core._refine(ZodMiniCustom, fn, _params);
  868. }
  869. // superRefine
  870. // @__NO_SIDE_EFFECTS__
  871. export function superRefine(fn) {
  872. return core._superRefine(fn);
  873. }
  874. // Re-export describe and meta from core
  875. export const describe = core.describe;
  876. export const meta = core.meta;
  877. // instanceof
  878. class Class {
  879. constructor(..._args) { }
  880. }
  881. // @__NO_SIDE_EFFECTS__
  882. function _instanceof(cls, params = {}) {
  883. const inst = custom((data) => data instanceof cls, params);
  884. inst._zod.bag.Class = cls;
  885. // Override check to emit invalid_type instead of custom
  886. inst._zod.check = (payload) => {
  887. if (!(payload.value instanceof cls)) {
  888. payload.issues.push({
  889. code: "invalid_type",
  890. expected: cls.name,
  891. input: payload.value,
  892. inst,
  893. path: [...(inst._zod.def.path ?? [])],
  894. });
  895. }
  896. };
  897. return inst;
  898. }
  899. export { _instanceof as instanceof };
  900. // stringbool
  901. export const stringbool = (...args) => core._stringbool({
  902. Codec: ZodMiniCodec,
  903. Boolean: ZodMiniBoolean,
  904. String: ZodMiniString,
  905. }, ...args);
  906. // @__NO_SIDE_EFFECTS__
  907. export function json() {
  908. const jsonSchema = _lazy(() => {
  909. return union([string(), number(), boolean(), _null(), array(jsonSchema), record(string(), jsonSchema)]);
  910. });
  911. return jsonSchema;
  912. }
  913. export const ZodMiniFunction = /*@__PURE__*/ core.$constructor("ZodMiniFunction", (inst, def) => {
  914. core.$ZodFunction.init(inst, def);
  915. ZodMiniType.init(inst, def);
  916. });
  917. // @__NO_SIDE_EFFECTS__
  918. export function _function(params) {
  919. return new ZodMiniFunction({
  920. type: "function",
  921. input: Array.isArray(params?.input) ? tuple(params?.input) : (params?.input ?? array(unknown())),
  922. output: params?.output ?? unknown(),
  923. });
  924. }
  925. export { _function as function };