1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066 |
- (function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
- typeof define === 'function' && define.amd ? define(['exports'], factory) :
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.Zod = {}));
- })(this, (function (exports) { 'use strict';
-
- exports.util = void 0;
- (function (util) {
- util.assertEqual = (val) => val;
- function assertIs(_arg) { }
- util.assertIs = assertIs;
- function assertNever(_x) {
- throw new Error();
- }
- util.assertNever = assertNever;
- util.arrayToEnum = (items) => {
- const obj = {};
- for (const item of items) {
- obj[item] = item;
- }
- return obj;
- };
- util.getValidEnumValues = (obj) => {
- const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== "number");
- const filtered = {};
- for (const k of validKeys) {
- filtered[k] = obj[k];
- }
- return util.objectValues(filtered);
- };
- util.objectValues = (obj) => {
- return util.objectKeys(obj).map(function (e) {
- return obj[e];
- });
- };
- util.objectKeys = typeof Object.keys === "function" // eslint-disable-line ban/ban
- ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban
- : (object) => {
- const keys = [];
- for (const key in object) {
- if (Object.prototype.hasOwnProperty.call(object, key)) {
- keys.push(key);
- }
- }
- return keys;
- };
- util.find = (arr, checker) => {
- for (const item of arr) {
- if (checker(item))
- return item;
- }
- return undefined;
- };
- util.isInteger = typeof Number.isInteger === "function"
- ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban
- : (val) => typeof val === "number" && isFinite(val) && Math.floor(val) === val;
- function joinValues(array, separator = " | ") {
- return array
- .map((val) => (typeof val === "string" ? `'${val}'` : val))
- .join(separator);
- }
- util.joinValues = joinValues;
- util.jsonStringifyReplacer = (_, value) => {
- if (typeof value === "bigint") {
- return value.toString();
- }
- return value;
- };
- })(exports.util || (exports.util = {}));
- exports.objectUtil = void 0;
- (function (objectUtil) {
- objectUtil.mergeShapes = (first, second) => {
- return {
- ...first,
- ...second, // second overwrites first
- };
- };
- })(exports.objectUtil || (exports.objectUtil = {}));
- const ZodParsedType = exports.util.arrayToEnum([
- "string",
- "nan",
- "number",
- "integer",
- "float",
- "boolean",
- "date",
- "bigint",
- "symbol",
- "function",
- "undefined",
- "null",
- "array",
- "object",
- "unknown",
- "promise",
- "void",
- "never",
- "map",
- "set",
- ]);
- const getParsedType = (data) => {
- const t = typeof data;
- switch (t) {
- case "undefined":
- return ZodParsedType.undefined;
- case "string":
- return ZodParsedType.string;
- case "number":
- return isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;
- case "boolean":
- return ZodParsedType.boolean;
- case "function":
- return ZodParsedType.function;
- case "bigint":
- return ZodParsedType.bigint;
- case "symbol":
- return ZodParsedType.symbol;
- case "object":
- if (Array.isArray(data)) {
- return ZodParsedType.array;
- }
- if (data === null) {
- return ZodParsedType.null;
- }
- if (data.then &&
- typeof data.then === "function" &&
- data.catch &&
- typeof data.catch === "function") {
- return ZodParsedType.promise;
- }
- if (typeof Map !== "undefined" && data instanceof Map) {
- return ZodParsedType.map;
- }
- if (typeof Set !== "undefined" && data instanceof Set) {
- return ZodParsedType.set;
- }
- if (typeof Date !== "undefined" && data instanceof Date) {
- return ZodParsedType.date;
- }
- return ZodParsedType.object;
- default:
- return ZodParsedType.unknown;
- }
- };
-
- const ZodIssueCode = exports.util.arrayToEnum([
- "invalid_type",
- "invalid_literal",
- "custom",
- "invalid_union",
- "invalid_union_discriminator",
- "invalid_enum_value",
- "unrecognized_keys",
- "invalid_arguments",
- "invalid_return_type",
- "invalid_date",
- "invalid_string",
- "too_small",
- "too_big",
- "invalid_intersection_types",
- "not_multiple_of",
- "not_finite",
- ]);
- const quotelessJson = (obj) => {
- const json = JSON.stringify(obj, null, 2);
- return json.replace(/"([^"]+)":/g, "$1:");
- };
- class ZodError extends Error {
- constructor(issues) {
- super();
- this.issues = [];
- this.addIssue = (sub) => {
- this.issues = [...this.issues, sub];
- };
- this.addIssues = (subs = []) => {
- this.issues = [...this.issues, ...subs];
- };
- const actualProto = new.target.prototype;
- if (Object.setPrototypeOf) {
- // eslint-disable-next-line ban/ban
- Object.setPrototypeOf(this, actualProto);
- }
- else {
- this.__proto__ = actualProto;
- }
- this.name = "ZodError";
- this.issues = issues;
- }
- get errors() {
- return this.issues;
- }
- format(_mapper) {
- const mapper = _mapper ||
- function (issue) {
- return issue.message;
- };
- const fieldErrors = { _errors: [] };
- const processError = (error) => {
- for (const issue of error.issues) {
- if (issue.code === "invalid_union") {
- issue.unionErrors.map(processError);
- }
- else if (issue.code === "invalid_return_type") {
- processError(issue.returnTypeError);
- }
- else if (issue.code === "invalid_arguments") {
- processError(issue.argumentsError);
- }
- else if (issue.path.length === 0) {
- fieldErrors._errors.push(mapper(issue));
- }
- else {
- let curr = fieldErrors;
- let i = 0;
- while (i < issue.path.length) {
- const el = issue.path[i];
- const terminal = i === issue.path.length - 1;
- if (!terminal) {
- curr[el] = curr[el] || { _errors: [] };
- // if (typeof el === "string") {
- // curr[el] = curr[el] || { _errors: [] };
- // } else if (typeof el === "number") {
- // const errorArray: any = [];
- // errorArray._errors = [];
- // curr[el] = curr[el] || errorArray;
- // }
- }
- else {
- curr[el] = curr[el] || { _errors: [] };
- curr[el]._errors.push(mapper(issue));
- }
- curr = curr[el];
- i++;
- }
- }
- }
- };
- processError(this);
- return fieldErrors;
- }
- toString() {
- return this.message;
- }
- get message() {
- return JSON.stringify(this.issues, exports.util.jsonStringifyReplacer, 2);
- }
- get isEmpty() {
- return this.issues.length === 0;
- }
- flatten(mapper = (issue) => issue.message) {
- const fieldErrors = {};
- const formErrors = [];
- for (const sub of this.issues) {
- if (sub.path.length > 0) {
- fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || [];
- fieldErrors[sub.path[0]].push(mapper(sub));
- }
- else {
- formErrors.push(mapper(sub));
- }
- }
- return { formErrors, fieldErrors };
- }
- get formErrors() {
- return this.flatten();
- }
- }
- ZodError.create = (issues) => {
- const error = new ZodError(issues);
- return error;
- };
-
- const errorMap = (issue, _ctx) => {
- let message;
- switch (issue.code) {
- case ZodIssueCode.invalid_type:
- if (issue.received === ZodParsedType.undefined) {
- message = "Required";
- }
- else {
- message = `Expected ${issue.expected}, received ${issue.received}`;
- }
- break;
- case ZodIssueCode.invalid_literal:
- message = `Invalid literal value, expected ${JSON.stringify(issue.expected, exports.util.jsonStringifyReplacer)}`;
- break;
- case ZodIssueCode.unrecognized_keys:
- message = `Unrecognized key(s) in object: ${exports.util.joinValues(issue.keys, ", ")}`;
- break;
- case ZodIssueCode.invalid_union:
- message = `Invalid input`;
- break;
- case ZodIssueCode.invalid_union_discriminator:
- message = `Invalid discriminator value. Expected ${exports.util.joinValues(issue.options)}`;
- break;
- case ZodIssueCode.invalid_enum_value:
- message = `Invalid enum value. Expected ${exports.util.joinValues(issue.options)}, received '${issue.received}'`;
- break;
- case ZodIssueCode.invalid_arguments:
- message = `Invalid function arguments`;
- break;
- case ZodIssueCode.invalid_return_type:
- message = `Invalid function return type`;
- break;
- case ZodIssueCode.invalid_date:
- message = `Invalid date`;
- break;
- case ZodIssueCode.invalid_string:
- if (typeof issue.validation === "object") {
- if ("includes" in issue.validation) {
- message = `Invalid input: must include "${issue.validation.includes}"`;
- if (typeof issue.validation.position === "number") {
- message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;
- }
- }
- else if ("startsWith" in issue.validation) {
- message = `Invalid input: must start with "${issue.validation.startsWith}"`;
- }
- else if ("endsWith" in issue.validation) {
- message = `Invalid input: must end with "${issue.validation.endsWith}"`;
- }
- else {
- exports.util.assertNever(issue.validation);
- }
- }
- else if (issue.validation !== "regex") {
- message = `Invalid ${issue.validation}`;
- }
- else {
- message = "Invalid";
- }
- break;
- case ZodIssueCode.too_small:
- if (issue.type === "array")
- message = `Array must contain ${issue.exact ? "exactly" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;
- else if (issue.type === "string")
- message = `String must contain ${issue.exact ? "exactly" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;
- else if (issue.type === "number")
- message = `Number must be ${issue.exact
- ? `exactly equal to `
- : issue.inclusive
- ? `greater than or equal to `
- : `greater than `}${issue.minimum}`;
- else if (issue.type === "date")
- message = `Date must be ${issue.exact
- ? `exactly equal to `
- : issue.inclusive
- ? `greater than or equal to `
- : `greater than `}${new Date(Number(issue.minimum))}`;
- else
- message = "Invalid input";
- break;
- case ZodIssueCode.too_big:
- if (issue.type === "array")
- message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;
- else if (issue.type === "string")
- message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;
- else if (issue.type === "number")
- message = `Number must be ${issue.exact
- ? `exactly`
- : issue.inclusive
- ? `less than or equal to`
- : `less than`} ${issue.maximum}`;
- else if (issue.type === "bigint")
- message = `BigInt must be ${issue.exact
- ? `exactly`
- : issue.inclusive
- ? `less than or equal to`
- : `less than`} ${issue.maximum}`;
- else if (issue.type === "date")
- message = `Date must be ${issue.exact
- ? `exactly`
- : issue.inclusive
- ? `smaller than or equal to`
- : `smaller than`} ${new Date(Number(issue.maximum))}`;
- else
- message = "Invalid input";
- break;
- case ZodIssueCode.custom:
- message = `Invalid input`;
- break;
- case ZodIssueCode.invalid_intersection_types:
- message = `Intersection results could not be merged`;
- break;
- case ZodIssueCode.not_multiple_of:
- message = `Number must be a multiple of ${issue.multipleOf}`;
- break;
- case ZodIssueCode.not_finite:
- message = "Number must be finite";
- break;
- default:
- message = _ctx.defaultError;
- exports.util.assertNever(issue);
- }
- return { message };
- };
-
- let overrideErrorMap = errorMap;
- function setErrorMap(map) {
- overrideErrorMap = map;
- }
- function getErrorMap() {
- return overrideErrorMap;
- }
-
- const makeIssue = (params) => {
- const { data, path, errorMaps, issueData } = params;
- const fullPath = [...path, ...(issueData.path || [])];
- const fullIssue = {
- ...issueData,
- path: fullPath,
- };
- let errorMessage = "";
- const maps = errorMaps
- .filter((m) => !!m)
- .slice()
- .reverse();
- for (const map of maps) {
- errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message;
- }
- return {
- ...issueData,
- path: fullPath,
- message: issueData.message || errorMessage,
- };
- };
- const EMPTY_PATH = [];
- function addIssueToContext(ctx, issueData) {
- const issue = makeIssue({
- issueData: issueData,
- data: ctx.data,
- path: ctx.path,
- errorMaps: [
- ctx.common.contextualErrorMap,
- ctx.schemaErrorMap,
- getErrorMap(),
- errorMap, // then global default map
- ].filter((x) => !!x),
- });
- ctx.common.issues.push(issue);
- }
- class ParseStatus {
- constructor() {
- this.value = "valid";
- }
- dirty() {
- if (this.value === "valid")
- this.value = "dirty";
- }
- abort() {
- if (this.value !== "aborted")
- this.value = "aborted";
- }
- static mergeArray(status, results) {
- const arrayValue = [];
- for (const s of results) {
- if (s.status === "aborted")
- return INVALID;
- if (s.status === "dirty")
- status.dirty();
- arrayValue.push(s.value);
- }
- return { status: status.value, value: arrayValue };
- }
- static async mergeObjectAsync(status, pairs) {
- const syncPairs = [];
- for (const pair of pairs) {
- syncPairs.push({
- key: await pair.key,
- value: await pair.value,
- });
- }
- return ParseStatus.mergeObjectSync(status, syncPairs);
- }
- static mergeObjectSync(status, pairs) {
- const finalObject = {};
- for (const pair of pairs) {
- const { key, value } = pair;
- if (key.status === "aborted")
- return INVALID;
- if (value.status === "aborted")
- return INVALID;
- if (key.status === "dirty")
- status.dirty();
- if (value.status === "dirty")
- status.dirty();
- if (typeof value.value !== "undefined" || pair.alwaysSet) {
- finalObject[key.value] = value.value;
- }
- }
- return { status: status.value, value: finalObject };
- }
- }
- const INVALID = Object.freeze({
- status: "aborted",
- });
- const DIRTY = (value) => ({ status: "dirty", value });
- const OK = (value) => ({ status: "valid", value });
- const isAborted = (x) => x.status === "aborted";
- const isDirty = (x) => x.status === "dirty";
- const isValid = (x) => x.status === "valid";
- const isAsync = (x) => typeof Promise !== "undefined" && x instanceof Promise;
-
- var errorUtil;
- (function (errorUtil) {
- errorUtil.errToObj = (message) => typeof message === "string" ? { message } : message || {};
- errorUtil.toString = (message) => typeof message === "string" ? message : message === null || message === void 0 ? void 0 : message.message;
- })(errorUtil || (errorUtil = {}));
-
- class ParseInputLazyPath {
- constructor(parent, value, path, key) {
- this._cachedPath = [];
- this.parent = parent;
- this.data = value;
- this._path = path;
- this._key = key;
- }
- get path() {
- if (!this._cachedPath.length) {
- if (this._key instanceof Array) {
- this._cachedPath.push(...this._path, ...this._key);
- }
- else {
- this._cachedPath.push(...this._path, this._key);
- }
- }
- return this._cachedPath;
- }
- }
- const handleResult = (ctx, result) => {
- if (isValid(result)) {
- return { success: true, data: result.value };
- }
- else {
- if (!ctx.common.issues.length) {
- throw new Error("Validation failed but no issues detected.");
- }
- return {
- success: false,
- get error() {
- if (this._error)
- return this._error;
- const error = new ZodError(ctx.common.issues);
- this._error = error;
- return this._error;
- },
- };
- }
- };
- function processCreateParams(params) {
- if (!params)
- return {};
- const { errorMap, invalid_type_error, required_error, description } = params;
- if (errorMap && (invalid_type_error || required_error)) {
- throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);
- }
- if (errorMap)
- return { errorMap: errorMap, description };
- const customMap = (iss, ctx) => {
- if (iss.code !== "invalid_type")
- return { message: ctx.defaultError };
- if (typeof ctx.data === "undefined") {
- return { message: required_error !== null && required_error !== void 0 ? required_error : ctx.defaultError };
- }
- return { message: invalid_type_error !== null && invalid_type_error !== void 0 ? invalid_type_error : ctx.defaultError };
- };
- return { errorMap: customMap, description };
- }
- class ZodType {
- constructor(def) {
- /** Alias of safeParseAsync */
- this.spa = this.safeParseAsync;
- this._def = def;
- this.parse = this.parse.bind(this);
- this.safeParse = this.safeParse.bind(this);
- this.parseAsync = this.parseAsync.bind(this);
- this.safeParseAsync = this.safeParseAsync.bind(this);
- this.spa = this.spa.bind(this);
- this.refine = this.refine.bind(this);
- this.refinement = this.refinement.bind(this);
- this.superRefine = this.superRefine.bind(this);
- this.optional = this.optional.bind(this);
- this.nullable = this.nullable.bind(this);
- this.nullish = this.nullish.bind(this);
- this.array = this.array.bind(this);
- this.promise = this.promise.bind(this);
- this.or = this.or.bind(this);
- this.and = this.and.bind(this);
- this.transform = this.transform.bind(this);
- this.brand = this.brand.bind(this);
- this.default = this.default.bind(this);
- this.catch = this.catch.bind(this);
- this.describe = this.describe.bind(this);
- this.pipe = this.pipe.bind(this);
- this.isNullable = this.isNullable.bind(this);
- this.isOptional = this.isOptional.bind(this);
- }
- get description() {
- return this._def.description;
- }
- _getType(input) {
- return getParsedType(input.data);
- }
- _getOrReturnCtx(input, ctx) {
- return (ctx || {
- common: input.parent.common,
- data: input.data,
- parsedType: getParsedType(input.data),
- schemaErrorMap: this._def.errorMap,
- path: input.path,
- parent: input.parent,
- });
- }
- _processInputParams(input) {
- return {
- status: new ParseStatus(),
- ctx: {
- common: input.parent.common,
- data: input.data,
- parsedType: getParsedType(input.data),
- schemaErrorMap: this._def.errorMap,
- path: input.path,
- parent: input.parent,
- },
- };
- }
- _parseSync(input) {
- const result = this._parse(input);
- if (isAsync(result)) {
- throw new Error("Synchronous parse encountered promise.");
- }
- return result;
- }
- _parseAsync(input) {
- const result = this._parse(input);
- return Promise.resolve(result);
- }
- parse(data, params) {
- const result = this.safeParse(data, params);
- if (result.success)
- return result.data;
- throw result.error;
- }
- safeParse(data, params) {
- var _a;
- const ctx = {
- common: {
- issues: [],
- async: (_a = params === null || params === void 0 ? void 0 : params.async) !== null && _a !== void 0 ? _a : false,
- contextualErrorMap: params === null || params === void 0 ? void 0 : params.errorMap,
- },
- path: (params === null || params === void 0 ? void 0 : params.path) || [],
- schemaErrorMap: this._def.errorMap,
- parent: null,
- data,
- parsedType: getParsedType(data),
- };
- const result = this._parseSync({ data, path: ctx.path, parent: ctx });
- return handleResult(ctx, result);
- }
- async parseAsync(data, params) {
- const result = await this.safeParseAsync(data, params);
- if (result.success)
- return result.data;
- throw result.error;
- }
- async safeParseAsync(data, params) {
- const ctx = {
- common: {
- issues: [],
- contextualErrorMap: params === null || params === void 0 ? void 0 : params.errorMap,
- async: true,
- },
- path: (params === null || params === void 0 ? void 0 : params.path) || [],
- schemaErrorMap: this._def.errorMap,
- parent: null,
- data,
- parsedType: getParsedType(data),
- };
- const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });
- const result = await (isAsync(maybeAsyncResult)
- ? maybeAsyncResult
- : Promise.resolve(maybeAsyncResult));
- return handleResult(ctx, result);
- }
- refine(check, message) {
- const getIssueProperties = (val) => {
- if (typeof message === "string" || typeof message === "undefined") {
- return { message };
- }
- else if (typeof message === "function") {
- return message(val);
- }
- else {
- return message;
- }
- };
- return this._refinement((val, ctx) => {
- const result = check(val);
- const setError = () => ctx.addIssue({
- code: ZodIssueCode.custom,
- ...getIssueProperties(val),
- });
- if (typeof Promise !== "undefined" && result instanceof Promise) {
- return result.then((data) => {
- if (!data) {
- setError();
- return false;
- }
- else {
- return true;
- }
- });
- }
- if (!result) {
- setError();
- return false;
- }
- else {
- return true;
- }
- });
- }
- refinement(check, refinementData) {
- return this._refinement((val, ctx) => {
- if (!check(val)) {
- ctx.addIssue(typeof refinementData === "function"
- ? refinementData(val, ctx)
- : refinementData);
- return false;
- }
- else {
- return true;
- }
- });
- }
- _refinement(refinement) {
- return new ZodEffects({
- schema: this,
- typeName: exports.ZodFirstPartyTypeKind.ZodEffects,
- effect: { type: "refinement", refinement },
- });
- }
- superRefine(refinement) {
- return this._refinement(refinement);
- }
- optional() {
- return ZodOptional.create(this, this._def);
- }
- nullable() {
- return ZodNullable.create(this, this._def);
- }
- nullish() {
- return this.nullable().optional();
- }
- array() {
- return ZodArray.create(this, this._def);
- }
- promise() {
- return ZodPromise.create(this, this._def);
- }
- or(option) {
- return ZodUnion.create([this, option], this._def);
- }
- and(incoming) {
- return ZodIntersection.create(this, incoming, this._def);
- }
- transform(transform) {
- return new ZodEffects({
- ...processCreateParams(this._def),
- schema: this,
- typeName: exports.ZodFirstPartyTypeKind.ZodEffects,
- effect: { type: "transform", transform },
- });
- }
- default(def) {
- const defaultValueFunc = typeof def === "function" ? def : () => def;
- return new ZodDefault({
- ...processCreateParams(this._def),
- innerType: this,
- defaultValue: defaultValueFunc,
- typeName: exports.ZodFirstPartyTypeKind.ZodDefault,
- });
- }
- brand() {
- return new ZodBranded({
- typeName: exports.ZodFirstPartyTypeKind.ZodBranded,
- type: this,
- ...processCreateParams(this._def),
- });
- }
- catch(def) {
- const catchValueFunc = typeof def === "function" ? def : () => def;
- return new ZodCatch({
- ...processCreateParams(this._def),
- innerType: this,
- catchValue: catchValueFunc,
- typeName: exports.ZodFirstPartyTypeKind.ZodCatch,
- });
- }
- describe(description) {
- const This = this.constructor;
- return new This({
- ...this._def,
- description,
- });
- }
- pipe(target) {
- return ZodPipeline.create(this, target);
- }
- isOptional() {
- return this.safeParse(undefined).success;
- }
- isNullable() {
- return this.safeParse(null).success;
- }
- }
- const cuidRegex = /^c[^\s-]{8,}$/i;
- const cuid2Regex = /^[a-z][a-z0-9]*$/;
- const ulidRegex = /[0-9A-HJKMNP-TV-Z]{26}/;
- const uuidRegex = /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;
- // from https://stackoverflow.com/a/46181/1550155
- // old version: too slow, didn't support unicode
- // const emailRegex = /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i;
- //old email regex
- // const emailRegex = /^(([^<>()[\].,;:\s@"]+(\.[^<>()[\].,;:\s@"]+)*)|(".+"))@((?!-)([^<>()[\].,;:\s@"]+\.)+[^<>()[\].,;:\s@"]{1,})[^-<>()[\].,;:\s@"]$/i;
- // eslint-disable-next-line
- const emailRegex = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\])|(\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\.[A-Za-z]{2,})+))$/;
- // from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression
- const emojiRegex = /^(\p{Extended_Pictographic}|\p{Emoji_Component})+$/u;
- const ipv4Regex = /^(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))$/;
- const ipv6Regex = /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;
- // Adapted from https://stackoverflow.com/a/3143231
- const datetimeRegex = (args) => {
- if (args.precision) {
- if (args.offset) {
- return new RegExp(`^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{${args.precision}}(([+-]\\d{2}(:?\\d{2})?)|Z)$`);
- }
- else {
- return new RegExp(`^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{${args.precision}}Z$`);
- }
- }
- else if (args.precision === 0) {
- if (args.offset) {
- return new RegExp(`^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(([+-]\\d{2}(:?\\d{2})?)|Z)$`);
- }
- else {
- return new RegExp(`^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$`);
- }
- }
- else {
- if (args.offset) {
- return new RegExp(`^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(([+-]\\d{2}(:?\\d{2})?)|Z)$`);
- }
- else {
- return new RegExp(`^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?Z$`);
- }
- }
- };
- function isValidIP(ip, version) {
- if ((version === "v4" || !version) && ipv4Regex.test(ip)) {
- return true;
- }
- if ((version === "v6" || !version) && ipv6Regex.test(ip)) {
- return true;
- }
- return false;
- }
- class ZodString extends ZodType {
- constructor() {
- super(...arguments);
- this._regex = (regex, validation, message) => this.refinement((data) => regex.test(data), {
- validation,
- code: ZodIssueCode.invalid_string,
- ...errorUtil.errToObj(message),
- });
- /**
- * @deprecated Use z.string().min(1) instead.
- * @see {@link ZodString.min}
- */
- this.nonempty = (message) => this.min(1, errorUtil.errToObj(message));
- this.trim = () => new ZodString({
- ...this._def,
- checks: [...this._def.checks, { kind: "trim" }],
- });
- this.toLowerCase = () => new ZodString({
- ...this._def,
- checks: [...this._def.checks, { kind: "toLowerCase" }],
- });
- this.toUpperCase = () => new ZodString({
- ...this._def,
- checks: [...this._def.checks, { kind: "toUpperCase" }],
- });
- }
- _parse(input) {
- if (this._def.coerce) {
- input.data = String(input.data);
- }
- const parsedType = this._getType(input);
- if (parsedType !== ZodParsedType.string) {
- const ctx = this._getOrReturnCtx(input);
- addIssueToContext(ctx, {
- code: ZodIssueCode.invalid_type,
- expected: ZodParsedType.string,
- received: ctx.parsedType,
- }
- //
- );
- return INVALID;
- }
- const status = new ParseStatus();
- let ctx = undefined;
- for (const check of this._def.checks) {
- if (check.kind === "min") {
- if (input.data.length < check.value) {
- ctx = this._getOrReturnCtx(input, ctx);
- addIssueToContext(ctx, {
- code: ZodIssueCode.too_small,
- minimum: check.value,
- type: "string",
- inclusive: true,
- exact: false,
- message: check.message,
- });
- status.dirty();
- }
- }
- else if (check.kind === "max") {
- if (input.data.length > check.value) {
- ctx = this._getOrReturnCtx(input, ctx);
- addIssueToContext(ctx, {
- code: ZodIssueCode.too_big,
- maximum: check.value,
- type: "string",
- inclusive: true,
- exact: false,
- message: check.message,
- });
- status.dirty();
- }
- }
- else if (check.kind === "length") {
- const tooBig = input.data.length > check.value;
- const tooSmall = input.data.length < check.value;
- if (tooBig || tooSmall) {
- ctx = this._getOrReturnCtx(input, ctx);
- if (tooBig) {
- addIssueToContext(ctx, {
- code: ZodIssueCode.too_big,
- maximum: check.value,
- type: "string",
- inclusive: true,
- exact: true,
- message: check.message,
- });
- }
- else if (tooSmall) {
- addIssueToContext(ctx, {
- code: ZodIssueCode.too_small,
- minimum: check.value,
- type: "string",
- inclusive: true,
- exact: true,
- message: check.message,
- });
- }
- status.dirty();
- }
- }
- else if (check.kind === "email") {
- if (!emailRegex.test(input.data)) {
- ctx = this._getOrReturnCtx(input, ctx);
- addIssueToContext(ctx, {
- validation: "email",
- code: ZodIssueCode.invalid_string,
- message: check.message,
- });
- status.dirty();
- }
- }
- else if (check.kind === "emoji") {
- if (!emojiRegex.test(input.data)) {
- ctx = this._getOrReturnCtx(input, ctx);
- addIssueToContext(ctx, {
- validation: "emoji",
- code: ZodIssueCode.invalid_string,
- message: check.message,
- });
- status.dirty();
- }
- }
- else if (check.kind === "uuid") {
- if (!uuidRegex.test(input.data)) {
- ctx = this._getOrReturnCtx(input, ctx);
- addIssueToContext(ctx, {
- validation: "uuid",
- code: ZodIssueCode.invalid_string,
- message: check.message,
- });
- status.dirty();
- }
- }
- else if (check.kind === "cuid") {
- if (!cuidRegex.test(input.data)) {
- ctx = this._getOrReturnCtx(input, ctx);
- addIssueToContext(ctx, {
- validation: "cuid",
- code: ZodIssueCode.invalid_string,
- message: check.message,
- });
- status.dirty();
- }
- }
- else if (check.kind === "cuid2") {
- if (!cuid2Regex.test(input.data)) {
- ctx = this._getOrReturnCtx(input, ctx);
- addIssueToContext(ctx, {
- validation: "cuid2",
- code: ZodIssueCode.invalid_string,
- message: check.message,
- });
- status.dirty();
- }
- }
- else if (check.kind === "ulid") {
- if (!ulidRegex.test(input.data)) {
- ctx = this._getOrReturnCtx(input, ctx);
- addIssueToContext(ctx, {
- validation: "ulid",
- code: ZodIssueCode.invalid_string,
- message: check.message,
- });
- status.dirty();
- }
- }
- else if (check.kind === "url") {
- try {
- new URL(input.data);
- }
- catch (_a) {
- ctx = this._getOrReturnCtx(input, ctx);
- addIssueToContext(ctx, {
- validation: "url",
- code: ZodIssueCode.invalid_string,
- message: check.message,
- });
- status.dirty();
- }
- }
- else if (check.kind === "regex") {
- check.regex.lastIndex = 0;
- const testResult = check.regex.test(input.data);
- if (!testResult) {
- ctx = this._getOrReturnCtx(input, ctx);
- addIssueToContext(ctx, {
- validation: "regex",
- code: ZodIssueCode.invalid_string,
- message: check.message,
- });
- status.dirty();
- }
- }
- else if (check.kind === "trim") {
- input.data = input.data.trim();
- }
- else if (check.kind === "includes") {
- if (!input.data.includes(check.value, check.position)) {
- ctx = this._getOrReturnCtx(input, ctx);
- addIssueToContext(ctx, {
- code: ZodIssueCode.invalid_string,
- validation: { includes: check.value, position: check.position },
- message: check.message,
- });
- status.dirty();
- }
- }
- else if (check.kind === "toLowerCase") {
- input.data = input.data.toLowerCase();
- }
- else if (check.kind === "toUpperCase") {
- input.data = input.data.toUpperCase();
- }
- else if (check.kind === "startsWith") {
- if (!input.data.startsWith(check.value)) {
- ctx = this._getOrReturnCtx(input, ctx);
- addIssueToContext(ctx, {
- code: ZodIssueCode.invalid_string,
- validation: { startsWith: check.value },
- message: check.message,
- });
- status.dirty();
- }
- }
- else if (check.kind === "endsWith") {
- if (!input.data.endsWith(check.value)) {
- ctx = this._getOrReturnCtx(input, ctx);
- addIssueToContext(ctx, {
- code: ZodIssueCode.invalid_string,
- validation: { endsWith: check.value },
- message: check.message,
- });
- status.dirty();
- }
- }
- else if (check.kind === "datetime") {
- const regex = datetimeRegex(check);
- if (!regex.test(input.data)) {
- ctx = this._getOrReturnCtx(input, ctx);
- addIssueToContext(ctx, {
- code: ZodIssueCode.invalid_string,
- validation: "datetime",
- message: check.message,
- });
- status.dirty();
- }
- }
- else if (check.kind === "ip") {
- if (!isValidIP(input.data, check.version)) {
- ctx = this._getOrReturnCtx(input, ctx);
- addIssueToContext(ctx, {
- validation: "ip",
- code: ZodIssueCode.invalid_string,
- message: check.message,
- });
- status.dirty();
- }
- }
- else {
- exports.util.assertNever(check);
- }
- }
- return { status: status.value, value: input.data };
- }
- _addCheck(check) {
- return new ZodString({
- ...this._def,
- checks: [...this._def.checks, check],
- });
- }
- email(message) {
- return this._addCheck({ kind: "email", ...errorUtil.errToObj(message) });
- }
- url(message) {
- return this._addCheck({ kind: "url", ...errorUtil.errToObj(message) });
- }
- emoji(message) {
- return this._addCheck({ kind: "emoji", ...errorUtil.errToObj(message) });
- }
- uuid(message) {
- return this._addCheck({ kind: "uuid", ...errorUtil.errToObj(message) });
- }
- cuid(message) {
- return this._addCheck({ kind: "cuid", ...errorUtil.errToObj(message) });
- }
- cuid2(message) {
- return this._addCheck({ kind: "cuid2", ...errorUtil.errToObj(message) });
- }
- ulid(message) {
- return this._addCheck({ kind: "ulid", ...errorUtil.errToObj(message) });
- }
- ip(options) {
- return this._addCheck({ kind: "ip", ...errorUtil.errToObj(options) });
- }
- datetime(options) {
- var _a;
- if (typeof options === "string") {
- return this._addCheck({
- kind: "datetime",
- precision: null,
- offset: false,
- message: options,
- });
- }
- return this._addCheck({
- kind: "datetime",
- precision: typeof (options === null || options === void 0 ? void 0 : options.precision) === "undefined" ? null : options === null || options === void 0 ? void 0 : options.precision,
- offset: (_a = options === null || options === void 0 ? void 0 : options.offset) !== null && _a !== void 0 ? _a : false,
- ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message),
- });
- }
- regex(regex, message) {
- return this._addCheck({
- kind: "regex",
- regex: regex,
- ...errorUtil.errToObj(message),
- });
- }
- includes(value, options) {
- return this._addCheck({
- kind: "includes",
- value: value,
- position: options === null || options === void 0 ? void 0 : options.position,
- ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message),
- });
- }
- startsWith(value, message) {
- return this._addCheck({
- kind: "startsWith",
- value: value,
- ...errorUtil.errToObj(message),
- });
- }
- endsWith(value, message) {
- return this._addCheck({
- kind: "endsWith",
- value: value,
- ...errorUtil.errToObj(message),
- });
- }
- min(minLength, message) {
- return this._addCheck({
- kind: "min",
- value: minLength,
- ...errorUtil.errToObj(message),
- });
- }
- max(maxLength, message) {
- return this._addCheck({
- kind: "max",
- value: maxLength,
- ...errorUtil.errToObj(message),
- });
- }
- length(len, message) {
- return this._addCheck({
- kind: "length",
- value: len,
- ...errorUtil.errToObj(message),
- });
- }
- get isDatetime() {
- return !!this._def.checks.find((ch) => ch.kind === "datetime");
- }
- get isEmail() {
- return !!this._def.checks.find((ch) => ch.kind === "email");
- }
- get isURL() {
- return !!this._def.checks.find((ch) => ch.kind === "url");
- }
- get isEmoji() {
- return !!this._def.checks.find((ch) => ch.kind === "emoji");
- }
- get isUUID() {
- return !!this._def.checks.find((ch) => ch.kind === "uuid");
- }
- get isCUID() {
- return !!this._def.checks.find((ch) => ch.kind === "cuid");
- }
- get isCUID2() {
- return !!this._def.checks.find((ch) => ch.kind === "cuid2");
- }
- get isULID() {
- return !!this._def.checks.find((ch) => ch.kind === "ulid");
- }
- get isIP() {
- return !!this._def.checks.find((ch) => ch.kind === "ip");
- }
- get minLength() {
- let min = null;
- for (const ch of this._def.checks) {
- if (ch.kind === "min") {
- if (min === null || ch.value > min)
- min = ch.value;
- }
- }
- return min;
- }
- get maxLength() {
- let max = null;
- for (const ch of this._def.checks) {
- if (ch.kind === "max") {
- if (max === null || ch.value < max)
- max = ch.value;
- }
- }
- return max;
- }
- }
- ZodString.create = (params) => {
- var _a;
- return new ZodString({
- checks: [],
- typeName: exports.ZodFirstPartyTypeKind.ZodString,
- coerce: (_a = params === null || params === void 0 ? void 0 : params.coerce) !== null && _a !== void 0 ? _a : false,
- ...processCreateParams(params),
- });
- };
- // https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034
- function floatSafeRemainder(val, step) {
- const valDecCount = (val.toString().split(".")[1] || "").length;
- const stepDecCount = (step.toString().split(".")[1] || "").length;
- const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;
- const valInt = parseInt(val.toFixed(decCount).replace(".", ""));
- const stepInt = parseInt(step.toFixed(decCount).replace(".", ""));
- return (valInt % stepInt) / Math.pow(10, decCount);
- }
- class ZodNumber extends ZodType {
- constructor() {
- super(...arguments);
- this.min = this.gte;
- this.max = this.lte;
- this.step = this.multipleOf;
- }
- _parse(input) {
- if (this._def.coerce) {
- input.data = Number(input.data);
- }
- const parsedType = this._getType(input);
- if (parsedType !== ZodParsedType.number) {
- const ctx = this._getOrReturnCtx(input);
- addIssueToContext(ctx, {
- code: ZodIssueCode.invalid_type,
- expected: ZodParsedType.number,
- received: ctx.parsedType,
- });
- return INVALID;
- }
- let ctx = undefined;
- const status = new ParseStatus();
- for (const check of this._def.checks) {
- if (check.kind === "int") {
- if (!exports.util.isInteger(input.data)) {
- ctx = this._getOrReturnCtx(input, ctx);
- addIssueToContext(ctx, {
- code: ZodIssueCode.invalid_type,
- expected: "integer",
- received: "float",
- message: check.message,
- });
- status.dirty();
- }
- }
- else if (check.kind === "min") {
- const tooSmall = check.inclusive
- ? input.data < check.value
- : input.data <= check.value;
- if (tooSmall) {
- ctx = this._getOrReturnCtx(input, ctx);
- addIssueToContext(ctx, {
- code: ZodIssueCode.too_small,
- minimum: check.value,
- type: "number",
- inclusive: check.inclusive,
- exact: false,
- message: check.message,
- });
- status.dirty();
- }
- }
- else if (check.kind === "max") {
- const tooBig = check.inclusive
- ? input.data > check.value
- : input.data >= check.value;
- if (tooBig) {
- ctx = this._getOrReturnCtx(input, ctx);
- addIssueToContext(ctx, {
- code: ZodIssueCode.too_big,
- maximum: check.value,
- type: "number",
- inclusive: check.inclusive,
- exact: false,
- message: check.message,
- });
- status.dirty();
- }
- }
- else if (check.kind === "multipleOf") {
- if (floatSafeRemainder(input.data, check.value) !== 0) {
- ctx = this._getOrReturnCtx(input, ctx);
- addIssueToContext(ctx, {
- code: ZodIssueCode.not_multiple_of,
- multipleOf: check.value,
- message: check.message,
- });
- status.dirty();
- }
- }
- else if (check.kind === "finite") {
- if (!Number.isFinite(input.data)) {
- ctx = this._getOrReturnCtx(input, ctx);
- addIssueToContext(ctx, {
- code: ZodIssueCode.not_finite,
- message: check.message,
- });
- status.dirty();
- }
- }
- else {
- exports.util.assertNever(check);
- }
- }
- return { status: status.value, value: input.data };
- }
- gte(value, message) {
- return this.setLimit("min", value, true, errorUtil.toString(message));
- }
- gt(value, message) {
- return this.setLimit("min", value, false, errorUtil.toString(message));
- }
- lte(value, message) {
- return this.setLimit("max", value, true, errorUtil.toString(message));
- }
- lt(value, message) {
- return this.setLimit("max", value, false, errorUtil.toString(message));
- }
- setLimit(kind, value, inclusive, message) {
- return new ZodNumber({
- ...this._def,
- checks: [
- ...this._def.checks,
- {
- kind,
- value,
- inclusive,
- message: errorUtil.toString(message),
- },
- ],
- });
- }
- _addCheck(check) {
- return new ZodNumber({
- ...this._def,
- checks: [...this._def.checks, check],
- });
- }
- int(message) {
- return this._addCheck({
- kind: "int",
- message: errorUtil.toString(message),
- });
- }
- positive(message) {
- return this._addCheck({
- kind: "min",
- value: 0,
- inclusive: false,
- message: errorUtil.toString(message),
- });
- }
- negative(message) {
- return this._addCheck({
- kind: "max",
- value: 0,
- inclusive: false,
- message: errorUtil.toString(message),
- });
- }
- nonpositive(message) {
- return this._addCheck({
- kind: "max",
- value: 0,
- inclusive: true,
- message: errorUtil.toString(message),
- });
- }
- nonnegative(message) {
- return this._addCheck({
- kind: "min",
- value: 0,
- inclusive: true,
- message: errorUtil.toString(message),
- });
- }
- multipleOf(value, message) {
- return this._addCheck({
- kind: "multipleOf",
- value: value,
- message: errorUtil.toString(message),
- });
- }
- finite(message) {
- return this._addCheck({
- kind: "finite",
- message: errorUtil.toString(message),
- });
- }
- safe(message) {
- return this._addCheck({
- kind: "min",
- inclusive: true,
- value: Number.MIN_SAFE_INTEGER,
- message: errorUtil.toString(message),
- })._addCheck({
- kind: "max",
- inclusive: true,
- value: Number.MAX_SAFE_INTEGER,
- message: errorUtil.toString(message),
- });
- }
- get minValue() {
- let min = null;
- for (const ch of this._def.checks) {
- if (ch.kind === "min") {
- if (min === null || ch.value > min)
- min = ch.value;
- }
- }
- return min;
- }
- get maxValue() {
- let max = null;
- for (const ch of this._def.checks) {
- if (ch.kind === "max") {
- if (max === null || ch.value < max)
- max = ch.value;
- }
- }
- return max;
- }
- get isInt() {
- return !!this._def.checks.find((ch) => ch.kind === "int" ||
- (ch.kind === "multipleOf" && exports.util.isInteger(ch.value)));
- }
- get isFinite() {
- let max = null, min = null;
- for (const ch of this._def.checks) {
- if (ch.kind === "finite" ||
- ch.kind === "int" ||
- ch.kind === "multipleOf") {
- return true;
- }
- else if (ch.kind === "min") {
- if (min === null || ch.value > min)
- min = ch.value;
- }
- else if (ch.kind === "max") {
- if (max === null || ch.value < max)
- max = ch.value;
- }
- }
- return Number.isFinite(min) && Number.isFinite(max);
- }
- }
- ZodNumber.create = (params) => {
- return new ZodNumber({
- checks: [],
- typeName: exports.ZodFirstPartyTypeKind.ZodNumber,
- coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,
- ...processCreateParams(params),
- });
- };
- class ZodBigInt extends ZodType {
- constructor() {
- super(...arguments);
- this.min = this.gte;
- this.max = this.lte;
- }
- _parse(input) {
- if (this._def.coerce) {
- input.data = BigInt(input.data);
- }
- const parsedType = this._getType(input);
- if (parsedType !== ZodParsedType.bigint) {
- const ctx = this._getOrReturnCtx(input);
- addIssueToContext(ctx, {
- code: ZodIssueCode.invalid_type,
- expected: ZodParsedType.bigint,
- received: ctx.parsedType,
- });
- return INVALID;
- }
- let ctx = undefined;
- const status = new ParseStatus();
- for (const check of this._def.checks) {
- if (check.kind === "min") {
- const tooSmall = check.inclusive
- ? input.data < check.value
- : input.data <= check.value;
- if (tooSmall) {
- ctx = this._getOrReturnCtx(input, ctx);
- addIssueToContext(ctx, {
- code: ZodIssueCode.too_small,
- type: "bigint",
- minimum: check.value,
- inclusive: check.inclusive,
- message: check.message,
- });
- status.dirty();
- }
- }
- else if (check.kind === "max") {
- const tooBig = check.inclusive
- ? input.data > check.value
- : input.data >= check.value;
- if (tooBig) {
- ctx = this._getOrReturnCtx(input, ctx);
- addIssueToContext(ctx, {
- code: ZodIssueCode.too_big,
- type: "bigint",
- maximum: check.value,
- inclusive: check.inclusive,
- message: check.message,
- });
- status.dirty();
- }
- }
- else if (check.kind === "multipleOf") {
- if (input.data % check.value !== BigInt(0)) {
- ctx = this._getOrReturnCtx(input, ctx);
- addIssueToContext(ctx, {
- code: ZodIssueCode.not_multiple_of,
- multipleOf: check.value,
- message: check.message,
- });
- status.dirty();
- }
- }
- else {
- exports.util.assertNever(check);
- }
- }
- return { status: status.value, value: input.data };
- }
- gte(value, message) {
- return this.setLimit("min", value, true, errorUtil.toString(message));
- }
- gt(value, message) {
- return this.setLimit("min", value, false, errorUtil.toString(message));
- }
- lte(value, message) {
- return this.setLimit("max", value, true, errorUtil.toString(message));
- }
- lt(value, message) {
- return this.setLimit("max", value, false, errorUtil.toString(message));
- }
- setLimit(kind, value, inclusive, message) {
- return new ZodBigInt({
- ...this._def,
- checks: [
- ...this._def.checks,
- {
- kind,
- value,
- inclusive,
- message: errorUtil.toString(message),
- },
- ],
- });
- }
- _addCheck(check) {
- return new ZodBigInt({
- ...this._def,
- checks: [...this._def.checks, check],
- });
- }
- positive(message) {
- return this._addCheck({
- kind: "min",
- value: BigInt(0),
- inclusive: false,
- message: errorUtil.toString(message),
- });
- }
- negative(message) {
- return this._addCheck({
- kind: "max",
- value: BigInt(0),
- inclusive: false,
- message: errorUtil.toString(message),
- });
- }
- nonpositive(message) {
- return this._addCheck({
- kind: "max",
- value: BigInt(0),
- inclusive: true,
- message: errorUtil.toString(message),
- });
- }
- nonnegative(message) {
- return this._addCheck({
- kind: "min",
- value: BigInt(0),
- inclusive: true,
- message: errorUtil.toString(message),
- });
- }
- multipleOf(value, message) {
- return this._addCheck({
- kind: "multipleOf",
- value,
- message: errorUtil.toString(message),
- });
- }
- get minValue() {
- let min = null;
- for (const ch of this._def.checks) {
- if (ch.kind === "min") {
- if (min === null || ch.value > min)
- min = ch.value;
- }
- }
- return min;
- }
- get maxValue() {
- let max = null;
- for (const ch of this._def.checks) {
- if (ch.kind === "max") {
- if (max === null || ch.value < max)
- max = ch.value;
- }
- }
- return max;
- }
- }
- ZodBigInt.create = (params) => {
- var _a;
- return new ZodBigInt({
- checks: [],
- typeName: exports.ZodFirstPartyTypeKind.ZodBigInt,
- coerce: (_a = params === null || params === void 0 ? void 0 : params.coerce) !== null && _a !== void 0 ? _a : false,
- ...processCreateParams(params),
- });
- };
- class ZodBoolean extends ZodType {
- _parse(input) {
- if (this._def.coerce) {
- input.data = Boolean(input.data);
- }
- const parsedType = this._getType(input);
- if (parsedType !== ZodParsedType.boolean) {
- const ctx = this._getOrReturnCtx(input);
- addIssueToContext(ctx, {
- code: ZodIssueCode.invalid_type,
- expected: ZodParsedType.boolean,
- received: ctx.parsedType,
- });
- return INVALID;
- }
- return OK(input.data);
- }
- }
- ZodBoolean.create = (params) => {
- return new ZodBoolean({
- typeName: exports.ZodFirstPartyTypeKind.ZodBoolean,
- coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,
- ...processCreateParams(params),
- });
- };
- class ZodDate extends ZodType {
- _parse(input) {
- if (this._def.coerce) {
- input.data = new Date(input.data);
- }
- const parsedType = this._getType(input);
- if (parsedType !== ZodParsedType.date) {
- const ctx = this._getOrReturnCtx(input);
- addIssueToContext(ctx, {
- code: ZodIssueCode.invalid_type,
- expected: ZodParsedType.date,
- received: ctx.parsedType,
- });
- return INVALID;
- }
- if (isNaN(input.data.getTime())) {
- const ctx = this._getOrReturnCtx(input);
- addIssueToContext(ctx, {
- code: ZodIssueCode.invalid_date,
- });
- return INVALID;
- }
- const status = new ParseStatus();
- let ctx = undefined;
- for (const check of this._def.checks) {
- if (check.kind === "min") {
- if (input.data.getTime() < check.value) {
- ctx = this._getOrReturnCtx(input, ctx);
- addIssueToContext(ctx, {
- code: ZodIssueCode.too_small,
- message: check.message,
- inclusive: true,
- exact: false,
- minimum: check.value,
- type: "date",
- });
- status.dirty();
- }
- }
- else if (check.kind === "max") {
- if (input.data.getTime() > check.value) {
- ctx = this._getOrReturnCtx(input, ctx);
- addIssueToContext(ctx, {
- code: ZodIssueCode.too_big,
- message: check.message,
- inclusive: true,
- exact: false,
- maximum: check.value,
- type: "date",
- });
- status.dirty();
- }
- }
- else {
- exports.util.assertNever(check);
- }
- }
- return {
- status: status.value,
- value: new Date(input.data.getTime()),
- };
- }
- _addCheck(check) {
- return new ZodDate({
- ...this._def,
- checks: [...this._def.checks, check],
- });
- }
- min(minDate, message) {
- return this._addCheck({
- kind: "min",
- value: minDate.getTime(),
- message: errorUtil.toString(message),
- });
- }
- max(maxDate, message) {
- return this._addCheck({
- kind: "max",
- value: maxDate.getTime(),
- message: errorUtil.toString(message),
- });
- }
- get minDate() {
- let min = null;
- for (const ch of this._def.checks) {
- if (ch.kind === "min") {
- if (min === null || ch.value > min)
- min = ch.value;
- }
- }
- return min != null ? new Date(min) : null;
- }
- get maxDate() {
- let max = null;
- for (const ch of this._def.checks) {
- if (ch.kind === "max") {
- if (max === null || ch.value < max)
- max = ch.value;
- }
- }
- return max != null ? new Date(max) : null;
- }
- }
- ZodDate.create = (params) => {
- return new ZodDate({
- checks: [],
- coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,
- typeName: exports.ZodFirstPartyTypeKind.ZodDate,
- ...processCreateParams(params),
- });
- };
- class ZodSymbol extends ZodType {
- _parse(input) {
- const parsedType = this._getType(input);
- if (parsedType !== ZodParsedType.symbol) {
- const ctx = this._getOrReturnCtx(input);
- addIssueToContext(ctx, {
- code: ZodIssueCode.invalid_type,
- expected: ZodParsedType.symbol,
- received: ctx.parsedType,
- });
- return INVALID;
- }
- return OK(input.data);
- }
- }
- ZodSymbol.create = (params) => {
- return new ZodSymbol({
- typeName: exports.ZodFirstPartyTypeKind.ZodSymbol,
- ...processCreateParams(params),
- });
- };
- class ZodUndefined extends ZodType {
- _parse(input) {
- const parsedType = this._getType(input);
- if (parsedType !== ZodParsedType.undefined) {
- const ctx = this._getOrReturnCtx(input);
- addIssueToContext(ctx, {
- code: ZodIssueCode.invalid_type,
- expected: ZodParsedType.undefined,
- received: ctx.parsedType,
- });
- return INVALID;
- }
- return OK(input.data);
- }
- }
- ZodUndefined.create = (params) => {
- return new ZodUndefined({
- typeName: exports.ZodFirstPartyTypeKind.ZodUndefined,
- ...processCreateParams(params),
- });
- };
- class ZodNull extends ZodType {
- _parse(input) {
- const parsedType = this._getType(input);
- if (parsedType !== ZodParsedType.null) {
- const ctx = this._getOrReturnCtx(input);
- addIssueToContext(ctx, {
- code: ZodIssueCode.invalid_type,
- expected: ZodParsedType.null,
- received: ctx.parsedType,
- });
- return INVALID;
- }
- return OK(input.data);
- }
- }
- ZodNull.create = (params) => {
- return new ZodNull({
- typeName: exports.ZodFirstPartyTypeKind.ZodNull,
- ...processCreateParams(params),
- });
- };
- class ZodAny extends ZodType {
- constructor() {
- super(...arguments);
- // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.
- this._any = true;
- }
- _parse(input) {
- return OK(input.data);
- }
- }
- ZodAny.create = (params) => {
- return new ZodAny({
- typeName: exports.ZodFirstPartyTypeKind.ZodAny,
- ...processCreateParams(params),
- });
- };
- class ZodUnknown extends ZodType {
- constructor() {
- super(...arguments);
- // required
- this._unknown = true;
- }
- _parse(input) {
- return OK(input.data);
- }
- }
- ZodUnknown.create = (params) => {
- return new ZodUnknown({
- typeName: exports.ZodFirstPartyTypeKind.ZodUnknown,
- ...processCreateParams(params),
- });
- };
- class ZodNever extends ZodType {
- _parse(input) {
- const ctx = this._getOrReturnCtx(input);
- addIssueToContext(ctx, {
- code: ZodIssueCode.invalid_type,
- expected: ZodParsedType.never,
- received: ctx.parsedType,
- });
- return INVALID;
- }
- }
- ZodNever.create = (params) => {
- return new ZodNever({
- typeName: exports.ZodFirstPartyTypeKind.ZodNever,
- ...processCreateParams(params),
- });
- };
- class ZodVoid extends ZodType {
- _parse(input) {
- const parsedType = this._getType(input);
- if (parsedType !== ZodParsedType.undefined) {
- const ctx = this._getOrReturnCtx(input);
- addIssueToContext(ctx, {
- code: ZodIssueCode.invalid_type,
- expected: ZodParsedType.void,
- received: ctx.parsedType,
- });
- return INVALID;
- }
- return OK(input.data);
- }
- }
- ZodVoid.create = (params) => {
- return new ZodVoid({
- typeName: exports.ZodFirstPartyTypeKind.ZodVoid,
- ...processCreateParams(params),
- });
- };
- class ZodArray extends ZodType {
- _parse(input) {
- const { ctx, status } = this._processInputParams(input);
- const def = this._def;
- if (ctx.parsedType !== ZodParsedType.array) {
- addIssueToContext(ctx, {
- code: ZodIssueCode.invalid_type,
- expected: ZodParsedType.array,
- received: ctx.parsedType,
- });
- return INVALID;
- }
- if (def.exactLength !== null) {
- const tooBig = ctx.data.length > def.exactLength.value;
- const tooSmall = ctx.data.length < def.exactLength.value;
- if (tooBig || tooSmall) {
- addIssueToContext(ctx, {
- code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small,
- minimum: (tooSmall ? def.exactLength.value : undefined),
- maximum: (tooBig ? def.exactLength.value : undefined),
- type: "array",
- inclusive: true,
- exact: true,
- message: def.exactLength.message,
- });
- status.dirty();
- }
- }
- if (def.minLength !== null) {
- if (ctx.data.length < def.minLength.value) {
- addIssueToContext(ctx, {
- code: ZodIssueCode.too_small,
- minimum: def.minLength.value,
- type: "array",
- inclusive: true,
- exact: false,
- message: def.minLength.message,
- });
- status.dirty();
- }
- }
- if (def.maxLength !== null) {
- if (ctx.data.length > def.maxLength.value) {
- addIssueToContext(ctx, {
- code: ZodIssueCode.too_big,
- maximum: def.maxLength.value,
- type: "array",
- inclusive: true,
- exact: false,
- message: def.maxLength.message,
- });
- status.dirty();
- }
- }
- if (ctx.common.async) {
- return Promise.all([...ctx.data].map((item, i) => {
- return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));
- })).then((result) => {
- return ParseStatus.mergeArray(status, result);
- });
- }
- const result = [...ctx.data].map((item, i) => {
- return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));
- });
- return ParseStatus.mergeArray(status, result);
- }
- get element() {
- return this._def.type;
- }
- min(minLength, message) {
- return new ZodArray({
- ...this._def,
- minLength: { value: minLength, message: errorUtil.toString(message) },
- });
- }
- max(maxLength, message) {
- return new ZodArray({
- ...this._def,
- maxLength: { value: maxLength, message: errorUtil.toString(message) },
- });
- }
- length(len, message) {
- return new ZodArray({
- ...this._def,
- exactLength: { value: len, message: errorUtil.toString(message) },
- });
- }
- nonempty(message) {
- return this.min(1, message);
- }
- }
- ZodArray.create = (schema, params) => {
- return new ZodArray({
- type: schema,
- minLength: null,
- maxLength: null,
- exactLength: null,
- typeName: exports.ZodFirstPartyTypeKind.ZodArray,
- ...processCreateParams(params),
- });
- };
- function deepPartialify(schema) {
- if (schema instanceof ZodObject) {
- const newShape = {};
- for (const key in schema.shape) {
- const fieldSchema = schema.shape[key];
- newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));
- }
- return new ZodObject({
- ...schema._def,
- shape: () => newShape,
- });
- }
- else if (schema instanceof ZodArray) {
- return new ZodArray({
- ...schema._def,
- type: deepPartialify(schema.element),
- });
- }
- else if (schema instanceof ZodOptional) {
- return ZodOptional.create(deepPartialify(schema.unwrap()));
- }
- else if (schema instanceof ZodNullable) {
- return ZodNullable.create(deepPartialify(schema.unwrap()));
- }
- else if (schema instanceof ZodTuple) {
- return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));
- }
- else {
- return schema;
- }
- }
- class ZodObject extends ZodType {
- constructor() {
- super(...arguments);
- this._cached = null;
- /**
- * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped.
- * If you want to pass through unknown properties, use `.passthrough()` instead.
- */
- this.nonstrict = this.passthrough;
- // extend<
- // Augmentation extends ZodRawShape,
- // NewOutput extends util.flatten<{
- // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation
- // ? Augmentation[k]["_output"]
- // : k extends keyof Output
- // ? Output[k]
- // : never;
- // }>,
- // NewInput extends util.flatten<{
- // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation
- // ? Augmentation[k]["_input"]
- // : k extends keyof Input
- // ? Input[k]
- // : never;
- // }>
- // >(
- // augmentation: Augmentation
- // ): ZodObject<
- // extendShape<T, Augmentation>,
- // UnknownKeys,
- // Catchall,
- // NewOutput,
- // NewInput
- // > {
- // return new ZodObject({
- // ...this._def,
- // shape: () => ({
- // ...this._def.shape(),
- // ...augmentation,
- // }),
- // }) as any;
- // }
- /**
- * @deprecated Use `.extend` instead
- * */
- this.augment = this.extend;
- }
- _getCached() {
- if (this._cached !== null)
- return this._cached;
- const shape = this._def.shape();
- const keys = exports.util.objectKeys(shape);
- return (this._cached = { shape, keys });
- }
- _parse(input) {
- const parsedType = this._getType(input);
- if (parsedType !== ZodParsedType.object) {
- const ctx = this._getOrReturnCtx(input);
- addIssueToContext(ctx, {
- code: ZodIssueCode.invalid_type,
- expected: ZodParsedType.object,
- received: ctx.parsedType,
- });
- return INVALID;
- }
- const { status, ctx } = this._processInputParams(input);
- const { shape, keys: shapeKeys } = this._getCached();
- const extraKeys = [];
- if (!(this._def.catchall instanceof ZodNever &&
- this._def.unknownKeys === "strip")) {
- for (const key in ctx.data) {
- if (!shapeKeys.includes(key)) {
- extraKeys.push(key);
- }
- }
- }
- const pairs = [];
- for (const key of shapeKeys) {
- const keyValidator = shape[key];
- const value = ctx.data[key];
- pairs.push({
- key: { status: "valid", value: key },
- value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),
- alwaysSet: key in ctx.data,
- });
- }
- if (this._def.catchall instanceof ZodNever) {
- const unknownKeys = this._def.unknownKeys;
- if (unknownKeys === "passthrough") {
- for (const key of extraKeys) {
- pairs.push({
- key: { status: "valid", value: key },
- value: { status: "valid", value: ctx.data[key] },
- });
- }
- }
- else if (unknownKeys === "strict") {
- if (extraKeys.length > 0) {
- addIssueToContext(ctx, {
- code: ZodIssueCode.unrecognized_keys,
- keys: extraKeys,
- });
- status.dirty();
- }
- }
- else if (unknownKeys === "strip") ;
- else {
- throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);
- }
- }
- else {
- // run catchall validation
- const catchall = this._def.catchall;
- for (const key of extraKeys) {
- const value = ctx.data[key];
- pairs.push({
- key: { status: "valid", value: key },
- value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value)
- ),
- alwaysSet: key in ctx.data,
- });
- }
- }
- if (ctx.common.async) {
- return Promise.resolve()
- .then(async () => {
- const syncPairs = [];
- for (const pair of pairs) {
- const key = await pair.key;
- syncPairs.push({
- key,
- value: await pair.value,
- alwaysSet: pair.alwaysSet,
- });
- }
- return syncPairs;
- })
- .then((syncPairs) => {
- return ParseStatus.mergeObjectSync(status, syncPairs);
- });
- }
- else {
- return ParseStatus.mergeObjectSync(status, pairs);
- }
- }
- get shape() {
- return this._def.shape();
- }
- strict(message) {
- errorUtil.errToObj;
- return new ZodObject({
- ...this._def,
- unknownKeys: "strict",
- ...(message !== undefined
- ? {
- errorMap: (issue, ctx) => {
- var _a, _b, _c, _d;
- const defaultError = (_c = (_b = (_a = this._def).errorMap) === null || _b === void 0 ? void 0 : _b.call(_a, issue, ctx).message) !== null && _c !== void 0 ? _c : ctx.defaultError;
- if (issue.code === "unrecognized_keys")
- return {
- message: (_d = errorUtil.errToObj(message).message) !== null && _d !== void 0 ? _d : defaultError,
- };
- return {
- message: defaultError,
- };
- },
- }
- : {}),
- });
- }
- strip() {
- return new ZodObject({
- ...this._def,
- unknownKeys: "strip",
- });
- }
- passthrough() {
- return new ZodObject({
- ...this._def,
- unknownKeys: "passthrough",
- });
- }
- // const AugmentFactory =
- // <Def extends ZodObjectDef>(def: Def) =>
- // <Augmentation extends ZodRawShape>(
- // augmentation: Augmentation
- // ): ZodObject<
- // extendShape<ReturnType<Def["shape"]>, Augmentation>,
- // Def["unknownKeys"],
- // Def["catchall"]
- // > => {
- // return new ZodObject({
- // ...def,
- // shape: () => ({
- // ...def.shape(),
- // ...augmentation,
- // }),
- // }) as any;
- // };
- extend(augmentation) {
- return new ZodObject({
- ...this._def,
- shape: () => ({
- ...this._def.shape(),
- ...augmentation,
- }),
- });
- }
- /**
- * Prior to zod@1.0.12 there was a bug in the
- * inferred type of merged objects. Please
- * upgrade if you are experiencing issues.
- */
- merge(merging) {
- const merged = new ZodObject({
- unknownKeys: merging._def.unknownKeys,
- catchall: merging._def.catchall,
- shape: () => ({
- ...this._def.shape(),
- ...merging._def.shape(),
- }),
- typeName: exports.ZodFirstPartyTypeKind.ZodObject,
- });
- return merged;
- }
- // merge<
- // Incoming extends AnyZodObject,
- // Augmentation extends Incoming["shape"],
- // NewOutput extends {
- // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation
- // ? Augmentation[k]["_output"]
- // : k extends keyof Output
- // ? Output[k]
- // : never;
- // },
- // NewInput extends {
- // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation
- // ? Augmentation[k]["_input"]
- // : k extends keyof Input
- // ? Input[k]
- // : never;
- // }
- // >(
- // merging: Incoming
- // ): ZodObject<
- // extendShape<T, ReturnType<Incoming["_def"]["shape"]>>,
- // Incoming["_def"]["unknownKeys"],
- // Incoming["_def"]["catchall"],
- // NewOutput,
- // NewInput
- // > {
- // const merged: any = new ZodObject({
- // unknownKeys: merging._def.unknownKeys,
- // catchall: merging._def.catchall,
- // shape: () =>
- // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),
- // typeName: ZodFirstPartyTypeKind.ZodObject,
- // }) as any;
- // return merged;
- // }
- setKey(key, schema) {
- return this.augment({ [key]: schema });
- }
- // merge<Incoming extends AnyZodObject>(
- // merging: Incoming
- // ): //ZodObject<T & Incoming["_shape"], UnknownKeys, Catchall> = (merging) => {
- // ZodObject<
- // extendShape<T, ReturnType<Incoming["_def"]["shape"]>>,
- // Incoming["_def"]["unknownKeys"],
- // Incoming["_def"]["catchall"]
- // > {
- // // const mergedShape = objectUtil.mergeShapes(
- // // this._def.shape(),
- // // merging._def.shape()
- // // );
- // const merged: any = new ZodObject({
- // unknownKeys: merging._def.unknownKeys,
- // catchall: merging._def.catchall,
- // shape: () =>
- // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),
- // typeName: ZodFirstPartyTypeKind.ZodObject,
- // }) as any;
- // return merged;
- // }
- catchall(index) {
- return new ZodObject({
- ...this._def,
- catchall: index,
- });
- }
- pick(mask) {
- const shape = {};
- exports.util.objectKeys(mask).forEach((key) => {
- if (mask[key] && this.shape[key]) {
- shape[key] = this.shape[key];
- }
- });
- return new ZodObject({
- ...this._def,
- shape: () => shape,
- });
- }
- omit(mask) {
- const shape = {};
- exports.util.objectKeys(this.shape).forEach((key) => {
- if (!mask[key]) {
- shape[key] = this.shape[key];
- }
- });
- return new ZodObject({
- ...this._def,
- shape: () => shape,
- });
- }
- /**
- * @deprecated
- */
- deepPartial() {
- return deepPartialify(this);
- }
- partial(mask) {
- const newShape = {};
- exports.util.objectKeys(this.shape).forEach((key) => {
- const fieldSchema = this.shape[key];
- if (mask && !mask[key]) {
- newShape[key] = fieldSchema;
- }
- else {
- newShape[key] = fieldSchema.optional();
- }
- });
- return new ZodObject({
- ...this._def,
- shape: () => newShape,
- });
- }
- required(mask) {
- const newShape = {};
- exports.util.objectKeys(this.shape).forEach((key) => {
- if (mask && !mask[key]) {
- newShape[key] = this.shape[key];
- }
- else {
- const fieldSchema = this.shape[key];
- let newField = fieldSchema;
- while (newField instanceof ZodOptional) {
- newField = newField._def.innerType;
- }
- newShape[key] = newField;
- }
- });
- return new ZodObject({
- ...this._def,
- shape: () => newShape,
- });
- }
- keyof() {
- return createZodEnum(exports.util.objectKeys(this.shape));
- }
- }
- ZodObject.create = (shape, params) => {
- return new ZodObject({
- shape: () => shape,
- unknownKeys: "strip",
- catchall: ZodNever.create(),
- typeName: exports.ZodFirstPartyTypeKind.ZodObject,
- ...processCreateParams(params),
- });
- };
- ZodObject.strictCreate = (shape, params) => {
- return new ZodObject({
- shape: () => shape,
- unknownKeys: "strict",
- catchall: ZodNever.create(),
- typeName: exports.ZodFirstPartyTypeKind.ZodObject,
- ...processCreateParams(params),
- });
- };
- ZodObject.lazycreate = (shape, params) => {
- return new ZodObject({
- shape,
- unknownKeys: "strip",
- catchall: ZodNever.create(),
- typeName: exports.ZodFirstPartyTypeKind.ZodObject,
- ...processCreateParams(params),
- });
- };
- class ZodUnion extends ZodType {
- _parse(input) {
- const { ctx } = this._processInputParams(input);
- const options = this._def.options;
- function handleResults(results) {
- // return first issue-free validation if it exists
- for (const result of results) {
- if (result.result.status === "valid") {
- return result.result;
- }
- }
- for (const result of results) {
- if (result.result.status === "dirty") {
- // add issues from dirty option
- ctx.common.issues.push(...result.ctx.common.issues);
- return result.result;
- }
- }
- // return invalid
- const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues));
- addIssueToContext(ctx, {
- code: ZodIssueCode.invalid_union,
- unionErrors,
- });
- return INVALID;
- }
- if (ctx.common.async) {
- return Promise.all(options.map(async (option) => {
- const childCtx = {
- ...ctx,
- common: {
- ...ctx.common,
- issues: [],
- },
- parent: null,
- };
- return {
- result: await option._parseAsync({
- data: ctx.data,
- path: ctx.path,
- parent: childCtx,
- }),
- ctx: childCtx,
- };
- })).then(handleResults);
- }
- else {
- let dirty = undefined;
- const issues = [];
- for (const option of options) {
- const childCtx = {
- ...ctx,
- common: {
- ...ctx.common,
- issues: [],
- },
- parent: null,
- };
- const result = option._parseSync({
- data: ctx.data,
- path: ctx.path,
- parent: childCtx,
- });
- if (result.status === "valid") {
- return result;
- }
- else if (result.status === "dirty" && !dirty) {
- dirty = { result, ctx: childCtx };
- }
- if (childCtx.common.issues.length) {
- issues.push(childCtx.common.issues);
- }
- }
- if (dirty) {
- ctx.common.issues.push(...dirty.ctx.common.issues);
- return dirty.result;
- }
- const unionErrors = issues.map((issues) => new ZodError(issues));
- addIssueToContext(ctx, {
- code: ZodIssueCode.invalid_union,
- unionErrors,
- });
- return INVALID;
- }
- }
- get options() {
- return this._def.options;
- }
- }
- ZodUnion.create = (types, params) => {
- return new ZodUnion({
- options: types,
- typeName: exports.ZodFirstPartyTypeKind.ZodUnion,
- ...processCreateParams(params),
- });
- };
- /////////////////////////////////////////////////////
- /////////////////////////////////////////////////////
- ////////// //////////
- ////////// ZodDiscriminatedUnion //////////
- ////////// //////////
- /////////////////////////////////////////////////////
- /////////////////////////////////////////////////////
- const getDiscriminator = (type) => {
- if (type instanceof ZodLazy) {
- return getDiscriminator(type.schema);
- }
- else if (type instanceof ZodEffects) {
- return getDiscriminator(type.innerType());
- }
- else if (type instanceof ZodLiteral) {
- return [type.value];
- }
- else if (type instanceof ZodEnum) {
- return type.options;
- }
- else if (type instanceof ZodNativeEnum) {
- // eslint-disable-next-line ban/ban
- return Object.keys(type.enum);
- }
- else if (type instanceof ZodDefault) {
- return getDiscriminator(type._def.innerType);
- }
- else if (type instanceof ZodUndefined) {
- return [undefined];
- }
- else if (type instanceof ZodNull) {
- return [null];
- }
- else {
- return null;
- }
- };
- class ZodDiscriminatedUnion extends ZodType {
- _parse(input) {
- const { ctx } = this._processInputParams(input);
- if (ctx.parsedType !== ZodParsedType.object) {
- addIssueToContext(ctx, {
- code: ZodIssueCode.invalid_type,
- expected: ZodParsedType.object,
- received: ctx.parsedType,
- });
- return INVALID;
- }
- const discriminator = this.discriminator;
- const discriminatorValue = ctx.data[discriminator];
- const option = this.optionsMap.get(discriminatorValue);
- if (!option) {
- addIssueToContext(ctx, {
- code: ZodIssueCode.invalid_union_discriminator,
- options: Array.from(this.optionsMap.keys()),
- path: [discriminator],
- });
- return INVALID;
- }
- if (ctx.common.async) {
- return option._parseAsync({
- data: ctx.data,
- path: ctx.path,
- parent: ctx,
- });
- }
- else {
- return option._parseSync({
- data: ctx.data,
- path: ctx.path,
- parent: ctx,
- });
- }
- }
- get discriminator() {
- return this._def.discriminator;
- }
- get options() {
- return this._def.options;
- }
- get optionsMap() {
- return this._def.optionsMap;
- }
- /**
- * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.
- * However, it only allows a union of objects, all of which need to share a discriminator property. This property must
- * have a different value for each object in the union.
- * @param discriminator the name of the discriminator property
- * @param types an array of object schemas
- * @param params
- */
- static create(discriminator, options, params) {
- // Get all the valid discriminator values
- const optionsMap = new Map();
- // try {
- for (const type of options) {
- const discriminatorValues = getDiscriminator(type.shape[discriminator]);
- if (!discriminatorValues) {
- throw new Error(`A discriminator value for key \`${discriminator}\` could not be extracted from all schema options`);
- }
- for (const value of discriminatorValues) {
- if (optionsMap.has(value)) {
- throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);
- }
- optionsMap.set(value, type);
- }
- }
- return new ZodDiscriminatedUnion({
- typeName: exports.ZodFirstPartyTypeKind.ZodDiscriminatedUnion,
- discriminator,
- options,
- optionsMap,
- ...processCreateParams(params),
- });
- }
- }
- function mergeValues(a, b) {
- const aType = getParsedType(a);
- const bType = getParsedType(b);
- if (a === b) {
- return { valid: true, data: a };
- }
- else if (aType === ZodParsedType.object && bType === ZodParsedType.object) {
- const bKeys = exports.util.objectKeys(b);
- const sharedKeys = exports.util
- .objectKeys(a)
- .filter((key) => bKeys.indexOf(key) !== -1);
- const newObj = { ...a, ...b };
- for (const key of sharedKeys) {
- const sharedValue = mergeValues(a[key], b[key]);
- if (!sharedValue.valid) {
- return { valid: false };
- }
- newObj[key] = sharedValue.data;
- }
- return { valid: true, data: newObj };
- }
- else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {
- if (a.length !== b.length) {
- return { valid: false };
- }
- const newArray = [];
- for (let index = 0; index < a.length; index++) {
- const itemA = a[index];
- const itemB = b[index];
- const sharedValue = mergeValues(itemA, itemB);
- if (!sharedValue.valid) {
- return { valid: false };
- }
- newArray.push(sharedValue.data);
- }
- return { valid: true, data: newArray };
- }
- else if (aType === ZodParsedType.date &&
- bType === ZodParsedType.date &&
- +a === +b) {
- return { valid: true, data: a };
- }
- else {
- return { valid: false };
- }
- }
- class ZodIntersection extends ZodType {
- _parse(input) {
- const { status, ctx } = this._processInputParams(input);
- const handleParsed = (parsedLeft, parsedRight) => {
- if (isAborted(parsedLeft) || isAborted(parsedRight)) {
- return INVALID;
- }
- const merged = mergeValues(parsedLeft.value, parsedRight.value);
- if (!merged.valid) {
- addIssueToContext(ctx, {
- code: ZodIssueCode.invalid_intersection_types,
- });
- return INVALID;
- }
- if (isDirty(parsedLeft) || isDirty(parsedRight)) {
- status.dirty();
- }
- return { status: status.value, value: merged.data };
- };
- if (ctx.common.async) {
- return Promise.all([
- this._def.left._parseAsync({
- data: ctx.data,
- path: ctx.path,
- parent: ctx,
- }),
- this._def.right._parseAsync({
- data: ctx.data,
- path: ctx.path,
- parent: ctx,
- }),
- ]).then(([left, right]) => handleParsed(left, right));
- }
- else {
- return handleParsed(this._def.left._parseSync({
- data: ctx.data,
- path: ctx.path,
- parent: ctx,
- }), this._def.right._parseSync({
- data: ctx.data,
- path: ctx.path,
- parent: ctx,
- }));
- }
- }
- }
- ZodIntersection.create = (left, right, params) => {
- return new ZodIntersection({
- left: left,
- right: right,
- typeName: exports.ZodFirstPartyTypeKind.ZodIntersection,
- ...processCreateParams(params),
- });
- };
- class ZodTuple extends ZodType {
- _parse(input) {
- const { status, ctx } = this._processInputParams(input);
- if (ctx.parsedType !== ZodParsedType.array) {
- addIssueToContext(ctx, {
- code: ZodIssueCode.invalid_type,
- expected: ZodParsedType.array,
- received: ctx.parsedType,
- });
- return INVALID;
- }
- if (ctx.data.length < this._def.items.length) {
- addIssueToContext(ctx, {
- code: ZodIssueCode.too_small,
- minimum: this._def.items.length,
- inclusive: true,
- exact: false,
- type: "array",
- });
- return INVALID;
- }
- const rest = this._def.rest;
- if (!rest && ctx.data.length > this._def.items.length) {
- addIssueToContext(ctx, {
- code: ZodIssueCode.too_big,
- maximum: this._def.items.length,
- inclusive: true,
- exact: false,
- type: "array",
- });
- status.dirty();
- }
- const items = [...ctx.data]
- .map((item, itemIndex) => {
- const schema = this._def.items[itemIndex] || this._def.rest;
- if (!schema)
- return null;
- return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));
- })
- .filter((x) => !!x); // filter nulls
- if (ctx.common.async) {
- return Promise.all(items).then((results) => {
- return ParseStatus.mergeArray(status, results);
- });
- }
- else {
- return ParseStatus.mergeArray(status, items);
- }
- }
- get items() {
- return this._def.items;
- }
- rest(rest) {
- return new ZodTuple({
- ...this._def,
- rest,
- });
- }
- }
- ZodTuple.create = (schemas, params) => {
- if (!Array.isArray(schemas)) {
- throw new Error("You must pass an array of schemas to z.tuple([ ... ])");
- }
- return new ZodTuple({
- items: schemas,
- typeName: exports.ZodFirstPartyTypeKind.ZodTuple,
- rest: null,
- ...processCreateParams(params),
- });
- };
- class ZodRecord extends ZodType {
- get keySchema() {
- return this._def.keyType;
- }
- get valueSchema() {
- return this._def.valueType;
- }
- _parse(input) {
- const { status, ctx } = this._processInputParams(input);
- if (ctx.parsedType !== ZodParsedType.object) {
- addIssueToContext(ctx, {
- code: ZodIssueCode.invalid_type,
- expected: ZodParsedType.object,
- received: ctx.parsedType,
- });
- return INVALID;
- }
- const pairs = [];
- const keyType = this._def.keyType;
- const valueType = this._def.valueType;
- for (const key in ctx.data) {
- pairs.push({
- key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),
- value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),
- });
- }
- if (ctx.common.async) {
- return ParseStatus.mergeObjectAsync(status, pairs);
- }
- else {
- return ParseStatus.mergeObjectSync(status, pairs);
- }
- }
- get element() {
- return this._def.valueType;
- }
- static create(first, second, third) {
- if (second instanceof ZodType) {
- return new ZodRecord({
- keyType: first,
- valueType: second,
- typeName: exports.ZodFirstPartyTypeKind.ZodRecord,
- ...processCreateParams(third),
- });
- }
- return new ZodRecord({
- keyType: ZodString.create(),
- valueType: first,
- typeName: exports.ZodFirstPartyTypeKind.ZodRecord,
- ...processCreateParams(second),
- });
- }
- }
- class ZodMap extends ZodType {
- _parse(input) {
- const { status, ctx } = this._processInputParams(input);
- if (ctx.parsedType !== ZodParsedType.map) {
- addIssueToContext(ctx, {
- code: ZodIssueCode.invalid_type,
- expected: ZodParsedType.map,
- received: ctx.parsedType,
- });
- return INVALID;
- }
- const keyType = this._def.keyType;
- const valueType = this._def.valueType;
- const pairs = [...ctx.data.entries()].map(([key, value], index) => {
- return {
- key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, "key"])),
- value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, "value"])),
- };
- });
- if (ctx.common.async) {
- const finalMap = new Map();
- return Promise.resolve().then(async () => {
- for (const pair of pairs) {
- const key = await pair.key;
- const value = await pair.value;
- if (key.status === "aborted" || value.status === "aborted") {
- return INVALID;
- }
- if (key.status === "dirty" || value.status === "dirty") {
- status.dirty();
- }
- finalMap.set(key.value, value.value);
- }
- return { status: status.value, value: finalMap };
- });
- }
- else {
- const finalMap = new Map();
- for (const pair of pairs) {
- const key = pair.key;
- const value = pair.value;
- if (key.status === "aborted" || value.status === "aborted") {
- return INVALID;
- }
- if (key.status === "dirty" || value.status === "dirty") {
- status.dirty();
- }
- finalMap.set(key.value, value.value);
- }
- return { status: status.value, value: finalMap };
- }
- }
- }
- ZodMap.create = (keyType, valueType, params) => {
- return new ZodMap({
- valueType,
- keyType,
- typeName: exports.ZodFirstPartyTypeKind.ZodMap,
- ...processCreateParams(params),
- });
- };
- class ZodSet extends ZodType {
- _parse(input) {
- const { status, ctx } = this._processInputParams(input);
- if (ctx.parsedType !== ZodParsedType.set) {
- addIssueToContext(ctx, {
- code: ZodIssueCode.invalid_type,
- expected: ZodParsedType.set,
- received: ctx.parsedType,
- });
- return INVALID;
- }
- const def = this._def;
- if (def.minSize !== null) {
- if (ctx.data.size < def.minSize.value) {
- addIssueToContext(ctx, {
- code: ZodIssueCode.too_small,
- minimum: def.minSize.value,
- type: "set",
- inclusive: true,
- exact: false,
- message: def.minSize.message,
- });
- status.dirty();
- }
- }
- if (def.maxSize !== null) {
- if (ctx.data.size > def.maxSize.value) {
- addIssueToContext(ctx, {
- code: ZodIssueCode.too_big,
- maximum: def.maxSize.value,
- type: "set",
- inclusive: true,
- exact: false,
- message: def.maxSize.message,
- });
- status.dirty();
- }
- }
- const valueType = this._def.valueType;
- function finalizeSet(elements) {
- const parsedSet = new Set();
- for (const element of elements) {
- if (element.status === "aborted")
- return INVALID;
- if (element.status === "dirty")
- status.dirty();
- parsedSet.add(element.value);
- }
- return { status: status.value, value: parsedSet };
- }
- const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));
- if (ctx.common.async) {
- return Promise.all(elements).then((elements) => finalizeSet(elements));
- }
- else {
- return finalizeSet(elements);
- }
- }
- min(minSize, message) {
- return new ZodSet({
- ...this._def,
- minSize: { value: minSize, message: errorUtil.toString(message) },
- });
- }
- max(maxSize, message) {
- return new ZodSet({
- ...this._def,
- maxSize: { value: maxSize, message: errorUtil.toString(message) },
- });
- }
- size(size, message) {
- return this.min(size, message).max(size, message);
- }
- nonempty(message) {
- return this.min(1, message);
- }
- }
- ZodSet.create = (valueType, params) => {
- return new ZodSet({
- valueType,
- minSize: null,
- maxSize: null,
- typeName: exports.ZodFirstPartyTypeKind.ZodSet,
- ...processCreateParams(params),
- });
- };
- class ZodFunction extends ZodType {
- constructor() {
- super(...arguments);
- this.validate = this.implement;
- }
- _parse(input) {
- const { ctx } = this._processInputParams(input);
- if (ctx.parsedType !== ZodParsedType.function) {
- addIssueToContext(ctx, {
- code: ZodIssueCode.invalid_type,
- expected: ZodParsedType.function,
- received: ctx.parsedType,
- });
- return INVALID;
- }
- function makeArgsIssue(args, error) {
- return makeIssue({
- data: args,
- path: ctx.path,
- errorMaps: [
- ctx.common.contextualErrorMap,
- ctx.schemaErrorMap,
- getErrorMap(),
- errorMap,
- ].filter((x) => !!x),
- issueData: {
- code: ZodIssueCode.invalid_arguments,
- argumentsError: error,
- },
- });
- }
- function makeReturnsIssue(returns, error) {
- return makeIssue({
- data: returns,
- path: ctx.path,
- errorMaps: [
- ctx.common.contextualErrorMap,
- ctx.schemaErrorMap,
- getErrorMap(),
- errorMap,
- ].filter((x) => !!x),
- issueData: {
- code: ZodIssueCode.invalid_return_type,
- returnTypeError: error,
- },
- });
- }
- const params = { errorMap: ctx.common.contextualErrorMap };
- const fn = ctx.data;
- if (this._def.returns instanceof ZodPromise) {
- return OK(async (...args) => {
- const error = new ZodError([]);
- const parsedArgs = await this._def.args
- .parseAsync(args, params)
- .catch((e) => {
- error.addIssue(makeArgsIssue(args, e));
- throw error;
- });
- const result = await fn(...parsedArgs);
- const parsedReturns = await this._def.returns._def.type
- .parseAsync(result, params)
- .catch((e) => {
- error.addIssue(makeReturnsIssue(result, e));
- throw error;
- });
- return parsedReturns;
- });
- }
- else {
- return OK((...args) => {
- const parsedArgs = this._def.args.safeParse(args, params);
- if (!parsedArgs.success) {
- throw new ZodError([makeArgsIssue(args, parsedArgs.error)]);
- }
- const result = fn(...parsedArgs.data);
- const parsedReturns = this._def.returns.safeParse(result, params);
- if (!parsedReturns.success) {
- throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]);
- }
- return parsedReturns.data;
- });
- }
- }
- parameters() {
- return this._def.args;
- }
- returnType() {
- return this._def.returns;
- }
- args(...items) {
- return new ZodFunction({
- ...this._def,
- args: ZodTuple.create(items).rest(ZodUnknown.create()),
- });
- }
- returns(returnType) {
- return new ZodFunction({
- ...this._def,
- returns: returnType,
- });
- }
- implement(func) {
- const validatedFunc = this.parse(func);
- return validatedFunc;
- }
- strictImplement(func) {
- const validatedFunc = this.parse(func);
- return validatedFunc;
- }
- static create(args, returns, params) {
- return new ZodFunction({
- args: (args
- ? args
- : ZodTuple.create([]).rest(ZodUnknown.create())),
- returns: returns || ZodUnknown.create(),
- typeName: exports.ZodFirstPartyTypeKind.ZodFunction,
- ...processCreateParams(params),
- });
- }
- }
- class ZodLazy extends ZodType {
- get schema() {
- return this._def.getter();
- }
- _parse(input) {
- const { ctx } = this._processInputParams(input);
- const lazySchema = this._def.getter();
- return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });
- }
- }
- ZodLazy.create = (getter, params) => {
- return new ZodLazy({
- getter: getter,
- typeName: exports.ZodFirstPartyTypeKind.ZodLazy,
- ...processCreateParams(params),
- });
- };
- class ZodLiteral extends ZodType {
- _parse(input) {
- if (input.data !== this._def.value) {
- const ctx = this._getOrReturnCtx(input);
- addIssueToContext(ctx, {
- received: ctx.data,
- code: ZodIssueCode.invalid_literal,
- expected: this._def.value,
- });
- return INVALID;
- }
- return { status: "valid", value: input.data };
- }
- get value() {
- return this._def.value;
- }
- }
- ZodLiteral.create = (value, params) => {
- return new ZodLiteral({
- value: value,
- typeName: exports.ZodFirstPartyTypeKind.ZodLiteral,
- ...processCreateParams(params),
- });
- };
- function createZodEnum(values, params) {
- return new ZodEnum({
- values: values,
- typeName: exports.ZodFirstPartyTypeKind.ZodEnum,
- ...processCreateParams(params),
- });
- }
- class ZodEnum extends ZodType {
- _parse(input) {
- if (typeof input.data !== "string") {
- const ctx = this._getOrReturnCtx(input);
- const expectedValues = this._def.values;
- addIssueToContext(ctx, {
- expected: exports.util.joinValues(expectedValues),
- received: ctx.parsedType,
- code: ZodIssueCode.invalid_type,
- });
- return INVALID;
- }
- if (this._def.values.indexOf(input.data) === -1) {
- const ctx = this._getOrReturnCtx(input);
- const expectedValues = this._def.values;
- addIssueToContext(ctx, {
- received: ctx.data,
- code: ZodIssueCode.invalid_enum_value,
- options: expectedValues,
- });
- return INVALID;
- }
- return OK(input.data);
- }
- get options() {
- return this._def.values;
- }
- get enum() {
- const enumValues = {};
- for (const val of this._def.values) {
- enumValues[val] = val;
- }
- return enumValues;
- }
- get Values() {
- const enumValues = {};
- for (const val of this._def.values) {
- enumValues[val] = val;
- }
- return enumValues;
- }
- get Enum() {
- const enumValues = {};
- for (const val of this._def.values) {
- enumValues[val] = val;
- }
- return enumValues;
- }
- extract(values) {
- return ZodEnum.create(values);
- }
- exclude(values) {
- return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)));
- }
- }
- ZodEnum.create = createZodEnum;
- class ZodNativeEnum extends ZodType {
- _parse(input) {
- const nativeEnumValues = exports.util.getValidEnumValues(this._def.values);
- const ctx = this._getOrReturnCtx(input);
- if (ctx.parsedType !== ZodParsedType.string &&
- ctx.parsedType !== ZodParsedType.number) {
- const expectedValues = exports.util.objectValues(nativeEnumValues);
- addIssueToContext(ctx, {
- expected: exports.util.joinValues(expectedValues),
- received: ctx.parsedType,
- code: ZodIssueCode.invalid_type,
- });
- return INVALID;
- }
- if (nativeEnumValues.indexOf(input.data) === -1) {
- const expectedValues = exports.util.objectValues(nativeEnumValues);
- addIssueToContext(ctx, {
- received: ctx.data,
- code: ZodIssueCode.invalid_enum_value,
- options: expectedValues,
- });
- return INVALID;
- }
- return OK(input.data);
- }
- get enum() {
- return this._def.values;
- }
- }
- ZodNativeEnum.create = (values, params) => {
- return new ZodNativeEnum({
- values: values,
- typeName: exports.ZodFirstPartyTypeKind.ZodNativeEnum,
- ...processCreateParams(params),
- });
- };
- class ZodPromise extends ZodType {
- unwrap() {
- return this._def.type;
- }
- _parse(input) {
- const { ctx } = this._processInputParams(input);
- if (ctx.parsedType !== ZodParsedType.promise &&
- ctx.common.async === false) {
- addIssueToContext(ctx, {
- code: ZodIssueCode.invalid_type,
- expected: ZodParsedType.promise,
- received: ctx.parsedType,
- });
- return INVALID;
- }
- const promisified = ctx.parsedType === ZodParsedType.promise
- ? ctx.data
- : Promise.resolve(ctx.data);
- return OK(promisified.then((data) => {
- return this._def.type.parseAsync(data, {
- path: ctx.path,
- errorMap: ctx.common.contextualErrorMap,
- });
- }));
- }
- }
- ZodPromise.create = (schema, params) => {
- return new ZodPromise({
- type: schema,
- typeName: exports.ZodFirstPartyTypeKind.ZodPromise,
- ...processCreateParams(params),
- });
- };
- class ZodEffects extends ZodType {
- innerType() {
- return this._def.schema;
- }
- sourceType() {
- return this._def.schema._def.typeName === exports.ZodFirstPartyTypeKind.ZodEffects
- ? this._def.schema.sourceType()
- : this._def.schema;
- }
- _parse(input) {
- const { status, ctx } = this._processInputParams(input);
- const effect = this._def.effect || null;
- if (effect.type === "preprocess") {
- const processed = effect.transform(ctx.data);
- if (ctx.common.async) {
- return Promise.resolve(processed).then((processed) => {
- return this._def.schema._parseAsync({
- data: processed,
- path: ctx.path,
- parent: ctx,
- });
- });
- }
- else {
- return this._def.schema._parseSync({
- data: processed,
- path: ctx.path,
- parent: ctx,
- });
- }
- }
- const checkCtx = {
- addIssue: (arg) => {
- addIssueToContext(ctx, arg);
- if (arg.fatal) {
- status.abort();
- }
- else {
- status.dirty();
- }
- },
- get path() {
- return ctx.path;
- },
- };
- checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);
- if (effect.type === "refinement") {
- const executeRefinement = (acc
- // effect: RefinementEffect<any>
- ) => {
- const result = effect.refinement(acc, checkCtx);
- if (ctx.common.async) {
- return Promise.resolve(result);
- }
- if (result instanceof Promise) {
- throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");
- }
- return acc;
- };
- if (ctx.common.async === false) {
- const inner = this._def.schema._parseSync({
- data: ctx.data,
- path: ctx.path,
- parent: ctx,
- });
- if (inner.status === "aborted")
- return INVALID;
- if (inner.status === "dirty")
- status.dirty();
- // return value is ignored
- executeRefinement(inner.value);
- return { status: status.value, value: inner.value };
- }
- else {
- return this._def.schema
- ._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx })
- .then((inner) => {
- if (inner.status === "aborted")
- return INVALID;
- if (inner.status === "dirty")
- status.dirty();
- return executeRefinement(inner.value).then(() => {
- return { status: status.value, value: inner.value };
- });
- });
- }
- }
- if (effect.type === "transform") {
- if (ctx.common.async === false) {
- const base = this._def.schema._parseSync({
- data: ctx.data,
- path: ctx.path,
- parent: ctx,
- });
- if (!isValid(base))
- return base;
- const result = effect.transform(base.value, checkCtx);
- if (result instanceof Promise) {
- throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);
- }
- return { status: status.value, value: result };
- }
- else {
- return this._def.schema
- ._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx })
- .then((base) => {
- if (!isValid(base))
- return base;
- return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({ status: status.value, value: result }));
- });
- }
- }
- exports.util.assertNever(effect);
- }
- }
- ZodEffects.create = (schema, effect, params) => {
- return new ZodEffects({
- schema,
- typeName: exports.ZodFirstPartyTypeKind.ZodEffects,
- effect,
- ...processCreateParams(params),
- });
- };
- ZodEffects.createWithPreprocess = (preprocess, schema, params) => {
- return new ZodEffects({
- schema,
- effect: { type: "preprocess", transform: preprocess },
- typeName: exports.ZodFirstPartyTypeKind.ZodEffects,
- ...processCreateParams(params),
- });
- };
- class ZodOptional extends ZodType {
- _parse(input) {
- const parsedType = this._getType(input);
- if (parsedType === ZodParsedType.undefined) {
- return OK(undefined);
- }
- return this._def.innerType._parse(input);
- }
- unwrap() {
- return this._def.innerType;
- }
- }
- ZodOptional.create = (type, params) => {
- return new ZodOptional({
- innerType: type,
- typeName: exports.ZodFirstPartyTypeKind.ZodOptional,
- ...processCreateParams(params),
- });
- };
- class ZodNullable extends ZodType {
- _parse(input) {
- const parsedType = this._getType(input);
- if (parsedType === ZodParsedType.null) {
- return OK(null);
- }
- return this._def.innerType._parse(input);
- }
- unwrap() {
- return this._def.innerType;
- }
- }
- ZodNullable.create = (type, params) => {
- return new ZodNullable({
- innerType: type,
- typeName: exports.ZodFirstPartyTypeKind.ZodNullable,
- ...processCreateParams(params),
- });
- };
- class ZodDefault extends ZodType {
- _parse(input) {
- const { ctx } = this._processInputParams(input);
- let data = ctx.data;
- if (ctx.parsedType === ZodParsedType.undefined) {
- data = this._def.defaultValue();
- }
- return this._def.innerType._parse({
- data,
- path: ctx.path,
- parent: ctx,
- });
- }
- removeDefault() {
- return this._def.innerType;
- }
- }
- ZodDefault.create = (type, params) => {
- return new ZodDefault({
- innerType: type,
- typeName: exports.ZodFirstPartyTypeKind.ZodDefault,
- defaultValue: typeof params.default === "function"
- ? params.default
- : () => params.default,
- ...processCreateParams(params),
- });
- };
- class ZodCatch extends ZodType {
- _parse(input) {
- const { ctx } = this._processInputParams(input);
- // newCtx is used to not collect issues from inner types in ctx
- const newCtx = {
- ...ctx,
- common: {
- ...ctx.common,
- issues: [],
- },
- };
- const result = this._def.innerType._parse({
- data: newCtx.data,
- path: newCtx.path,
- parent: {
- ...newCtx,
- },
- });
- if (isAsync(result)) {
- return result.then((result) => {
- return {
- status: "valid",
- value: result.status === "valid"
- ? result.value
- : this._def.catchValue({
- get error() {
- return new ZodError(newCtx.common.issues);
- },
- input: newCtx.data,
- }),
- };
- });
- }
- else {
- return {
- status: "valid",
- value: result.status === "valid"
- ? result.value
- : this._def.catchValue({
- get error() {
- return new ZodError(newCtx.common.issues);
- },
- input: newCtx.data,
- }),
- };
- }
- }
- removeCatch() {
- return this._def.innerType;
- }
- }
- ZodCatch.create = (type, params) => {
- return new ZodCatch({
- innerType: type,
- typeName: exports.ZodFirstPartyTypeKind.ZodCatch,
- catchValue: typeof params.catch === "function" ? params.catch : () => params.catch,
- ...processCreateParams(params),
- });
- };
- class ZodNaN extends ZodType {
- _parse(input) {
- const parsedType = this._getType(input);
- if (parsedType !== ZodParsedType.nan) {
- const ctx = this._getOrReturnCtx(input);
- addIssueToContext(ctx, {
- code: ZodIssueCode.invalid_type,
- expected: ZodParsedType.nan,
- received: ctx.parsedType,
- });
- return INVALID;
- }
- return { status: "valid", value: input.data };
- }
- }
- ZodNaN.create = (params) => {
- return new ZodNaN({
- typeName: exports.ZodFirstPartyTypeKind.ZodNaN,
- ...processCreateParams(params),
- });
- };
- const BRAND = Symbol("zod_brand");
- class ZodBranded extends ZodType {
- _parse(input) {
- const { ctx } = this._processInputParams(input);
- const data = ctx.data;
- return this._def.type._parse({
- data,
- path: ctx.path,
- parent: ctx,
- });
- }
- unwrap() {
- return this._def.type;
- }
- }
- class ZodPipeline extends ZodType {
- _parse(input) {
- const { status, ctx } = this._processInputParams(input);
- if (ctx.common.async) {
- const handleAsync = async () => {
- const inResult = await this._def.in._parseAsync({
- data: ctx.data,
- path: ctx.path,
- parent: ctx,
- });
- if (inResult.status === "aborted")
- return INVALID;
- if (inResult.status === "dirty") {
- status.dirty();
- return DIRTY(inResult.value);
- }
- else {
- return this._def.out._parseAsync({
- data: inResult.value,
- path: ctx.path,
- parent: ctx,
- });
- }
- };
- return handleAsync();
- }
- else {
- const inResult = this._def.in._parseSync({
- data: ctx.data,
- path: ctx.path,
- parent: ctx,
- });
- if (inResult.status === "aborted")
- return INVALID;
- if (inResult.status === "dirty") {
- status.dirty();
- return {
- status: "dirty",
- value: inResult.value,
- };
- }
- else {
- return this._def.out._parseSync({
- data: inResult.value,
- path: ctx.path,
- parent: ctx,
- });
- }
- }
- }
- static create(a, b) {
- return new ZodPipeline({
- in: a,
- out: b,
- typeName: exports.ZodFirstPartyTypeKind.ZodPipeline,
- });
- }
- }
- const custom = (check, params = {},
- /*
- * @deprecated
- *
- * Pass `fatal` into the params object instead:
- *
- * ```ts
- * z.string().custom((val) => val.length > 5, { fatal: false })
- * ```
- *
- */
- fatal) => {
- if (check)
- return ZodAny.create().superRefine((data, ctx) => {
- var _a, _b;
- if (!check(data)) {
- const p = typeof params === "function"
- ? params(data)
- : typeof params === "string"
- ? { message: params }
- : params;
- const _fatal = (_b = (_a = p.fatal) !== null && _a !== void 0 ? _a : fatal) !== null && _b !== void 0 ? _b : true;
- const p2 = typeof p === "string" ? { message: p } : p;
- ctx.addIssue({ code: "custom", ...p2, fatal: _fatal });
- }
- });
- return ZodAny.create();
- };
- const late = {
- object: ZodObject.lazycreate,
- };
- exports.ZodFirstPartyTypeKind = void 0;
- (function (ZodFirstPartyTypeKind) {
- ZodFirstPartyTypeKind["ZodString"] = "ZodString";
- ZodFirstPartyTypeKind["ZodNumber"] = "ZodNumber";
- ZodFirstPartyTypeKind["ZodNaN"] = "ZodNaN";
- ZodFirstPartyTypeKind["ZodBigInt"] = "ZodBigInt";
- ZodFirstPartyTypeKind["ZodBoolean"] = "ZodBoolean";
- ZodFirstPartyTypeKind["ZodDate"] = "ZodDate";
- ZodFirstPartyTypeKind["ZodSymbol"] = "ZodSymbol";
- ZodFirstPartyTypeKind["ZodUndefined"] = "ZodUndefined";
- ZodFirstPartyTypeKind["ZodNull"] = "ZodNull";
- ZodFirstPartyTypeKind["ZodAny"] = "ZodAny";
- ZodFirstPartyTypeKind["ZodUnknown"] = "ZodUnknown";
- ZodFirstPartyTypeKind["ZodNever"] = "ZodNever";
- ZodFirstPartyTypeKind["ZodVoid"] = "ZodVoid";
- ZodFirstPartyTypeKind["ZodArray"] = "ZodArray";
- ZodFirstPartyTypeKind["ZodObject"] = "ZodObject";
- ZodFirstPartyTypeKind["ZodUnion"] = "ZodUnion";
- ZodFirstPartyTypeKind["ZodDiscriminatedUnion"] = "ZodDiscriminatedUnion";
- ZodFirstPartyTypeKind["ZodIntersection"] = "ZodIntersection";
- ZodFirstPartyTypeKind["ZodTuple"] = "ZodTuple";
- ZodFirstPartyTypeKind["ZodRecord"] = "ZodRecord";
- ZodFirstPartyTypeKind["ZodMap"] = "ZodMap";
- ZodFirstPartyTypeKind["ZodSet"] = "ZodSet";
- ZodFirstPartyTypeKind["ZodFunction"] = "ZodFunction";
- ZodFirstPartyTypeKind["ZodLazy"] = "ZodLazy";
- ZodFirstPartyTypeKind["ZodLiteral"] = "ZodLiteral";
- ZodFirstPartyTypeKind["ZodEnum"] = "ZodEnum";
- ZodFirstPartyTypeKind["ZodEffects"] = "ZodEffects";
- ZodFirstPartyTypeKind["ZodNativeEnum"] = "ZodNativeEnum";
- ZodFirstPartyTypeKind["ZodOptional"] = "ZodOptional";
- ZodFirstPartyTypeKind["ZodNullable"] = "ZodNullable";
- ZodFirstPartyTypeKind["ZodDefault"] = "ZodDefault";
- ZodFirstPartyTypeKind["ZodCatch"] = "ZodCatch";
- ZodFirstPartyTypeKind["ZodPromise"] = "ZodPromise";
- ZodFirstPartyTypeKind["ZodBranded"] = "ZodBranded";
- ZodFirstPartyTypeKind["ZodPipeline"] = "ZodPipeline";
- })(exports.ZodFirstPartyTypeKind || (exports.ZodFirstPartyTypeKind = {}));
- const instanceOfType = (
- // const instanceOfType = <T extends new (...args: any[]) => any>(
- cls, params = {
- message: `Input not instance of ${cls.name}`,
- }) => custom((data) => data instanceof cls, params);
- const stringType = ZodString.create;
- const numberType = ZodNumber.create;
- const nanType = ZodNaN.create;
- const bigIntType = ZodBigInt.create;
- const booleanType = ZodBoolean.create;
- const dateType = ZodDate.create;
- const symbolType = ZodSymbol.create;
- const undefinedType = ZodUndefined.create;
- const nullType = ZodNull.create;
- const anyType = ZodAny.create;
- const unknownType = ZodUnknown.create;
- const neverType = ZodNever.create;
- const voidType = ZodVoid.create;
- const arrayType = ZodArray.create;
- const objectType = ZodObject.create;
- const strictObjectType = ZodObject.strictCreate;
- const unionType = ZodUnion.create;
- const discriminatedUnionType = ZodDiscriminatedUnion.create;
- const intersectionType = ZodIntersection.create;
- const tupleType = ZodTuple.create;
- const recordType = ZodRecord.create;
- const mapType = ZodMap.create;
- const setType = ZodSet.create;
- const functionType = ZodFunction.create;
- const lazyType = ZodLazy.create;
- const literalType = ZodLiteral.create;
- const enumType = ZodEnum.create;
- const nativeEnumType = ZodNativeEnum.create;
- const promiseType = ZodPromise.create;
- const effectsType = ZodEffects.create;
- const optionalType = ZodOptional.create;
- const nullableType = ZodNullable.create;
- const preprocessType = ZodEffects.createWithPreprocess;
- const pipelineType = ZodPipeline.create;
- const ostring = () => stringType().optional();
- const onumber = () => numberType().optional();
- const oboolean = () => booleanType().optional();
- const coerce = {
- string: ((arg) => ZodString.create({ ...arg, coerce: true })),
- number: ((arg) => ZodNumber.create({ ...arg, coerce: true })),
- boolean: ((arg) => ZodBoolean.create({
- ...arg,
- coerce: true,
- })),
- bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })),
- date: ((arg) => ZodDate.create({ ...arg, coerce: true })),
- };
- const NEVER = INVALID;
-
- var z = /*#__PURE__*/Object.freeze({
- __proto__: null,
- defaultErrorMap: errorMap,
- setErrorMap: setErrorMap,
- getErrorMap: getErrorMap,
- makeIssue: makeIssue,
- EMPTY_PATH: EMPTY_PATH,
- addIssueToContext: addIssueToContext,
- ParseStatus: ParseStatus,
- INVALID: INVALID,
- DIRTY: DIRTY,
- OK: OK,
- isAborted: isAborted,
- isDirty: isDirty,
- isValid: isValid,
- isAsync: isAsync,
- get util () { return exports.util; },
- get objectUtil () { return exports.objectUtil; },
- ZodParsedType: ZodParsedType,
- getParsedType: getParsedType,
- ZodType: ZodType,
- ZodString: ZodString,
- ZodNumber: ZodNumber,
- ZodBigInt: ZodBigInt,
- ZodBoolean: ZodBoolean,
- ZodDate: ZodDate,
- ZodSymbol: ZodSymbol,
- ZodUndefined: ZodUndefined,
- ZodNull: ZodNull,
- ZodAny: ZodAny,
- ZodUnknown: ZodUnknown,
- ZodNever: ZodNever,
- ZodVoid: ZodVoid,
- ZodArray: ZodArray,
- ZodObject: ZodObject,
- ZodUnion: ZodUnion,
- ZodDiscriminatedUnion: ZodDiscriminatedUnion,
- ZodIntersection: ZodIntersection,
- ZodTuple: ZodTuple,
- ZodRecord: ZodRecord,
- ZodMap: ZodMap,
- ZodSet: ZodSet,
- ZodFunction: ZodFunction,
- ZodLazy: ZodLazy,
- ZodLiteral: ZodLiteral,
- ZodEnum: ZodEnum,
- ZodNativeEnum: ZodNativeEnum,
- ZodPromise: ZodPromise,
- ZodEffects: ZodEffects,
- ZodTransformer: ZodEffects,
- ZodOptional: ZodOptional,
- ZodNullable: ZodNullable,
- ZodDefault: ZodDefault,
- ZodCatch: ZodCatch,
- ZodNaN: ZodNaN,
- BRAND: BRAND,
- ZodBranded: ZodBranded,
- ZodPipeline: ZodPipeline,
- custom: custom,
- Schema: ZodType,
- ZodSchema: ZodType,
- late: late,
- get ZodFirstPartyTypeKind () { return exports.ZodFirstPartyTypeKind; },
- coerce: coerce,
- any: anyType,
- array: arrayType,
- bigint: bigIntType,
- boolean: booleanType,
- date: dateType,
- discriminatedUnion: discriminatedUnionType,
- effect: effectsType,
- 'enum': enumType,
- 'function': functionType,
- 'instanceof': instanceOfType,
- intersection: intersectionType,
- lazy: lazyType,
- literal: literalType,
- map: mapType,
- nan: nanType,
- nativeEnum: nativeEnumType,
- never: neverType,
- 'null': nullType,
- nullable: nullableType,
- number: numberType,
- object: objectType,
- oboolean: oboolean,
- onumber: onumber,
- optional: optionalType,
- ostring: ostring,
- pipeline: pipelineType,
- preprocess: preprocessType,
- promise: promiseType,
- record: recordType,
- set: setType,
- strictObject: strictObjectType,
- string: stringType,
- symbol: symbolType,
- transformer: effectsType,
- tuple: tupleType,
- 'undefined': undefinedType,
- union: unionType,
- unknown: unknownType,
- 'void': voidType,
- NEVER: NEVER,
- ZodIssueCode: ZodIssueCode,
- quotelessJson: quotelessJson,
- ZodError: ZodError
- });
-
- exports.BRAND = BRAND;
- exports.DIRTY = DIRTY;
- exports.EMPTY_PATH = EMPTY_PATH;
- exports.INVALID = INVALID;
- exports.NEVER = NEVER;
- exports.OK = OK;
- exports.ParseStatus = ParseStatus;
- exports.Schema = ZodType;
- exports.ZodAny = ZodAny;
- exports.ZodArray = ZodArray;
- exports.ZodBigInt = ZodBigInt;
- exports.ZodBoolean = ZodBoolean;
- exports.ZodBranded = ZodBranded;
- exports.ZodCatch = ZodCatch;
- exports.ZodDate = ZodDate;
- exports.ZodDefault = ZodDefault;
- exports.ZodDiscriminatedUnion = ZodDiscriminatedUnion;
- exports.ZodEffects = ZodEffects;
- exports.ZodEnum = ZodEnum;
- exports.ZodError = ZodError;
- exports.ZodFunction = ZodFunction;
- exports.ZodIntersection = ZodIntersection;
- exports.ZodIssueCode = ZodIssueCode;
- exports.ZodLazy = ZodLazy;
- exports.ZodLiteral = ZodLiteral;
- exports.ZodMap = ZodMap;
- exports.ZodNaN = ZodNaN;
- exports.ZodNativeEnum = ZodNativeEnum;
- exports.ZodNever = ZodNever;
- exports.ZodNull = ZodNull;
- exports.ZodNullable = ZodNullable;
- exports.ZodNumber = ZodNumber;
- exports.ZodObject = ZodObject;
- exports.ZodOptional = ZodOptional;
- exports.ZodParsedType = ZodParsedType;
- exports.ZodPipeline = ZodPipeline;
- exports.ZodPromise = ZodPromise;
- exports.ZodRecord = ZodRecord;
- exports.ZodSchema = ZodType;
- exports.ZodSet = ZodSet;
- exports.ZodString = ZodString;
- exports.ZodSymbol = ZodSymbol;
- exports.ZodTransformer = ZodEffects;
- exports.ZodTuple = ZodTuple;
- exports.ZodType = ZodType;
- exports.ZodUndefined = ZodUndefined;
- exports.ZodUnion = ZodUnion;
- exports.ZodUnknown = ZodUnknown;
- exports.ZodVoid = ZodVoid;
- exports.addIssueToContext = addIssueToContext;
- exports.any = anyType;
- exports.array = arrayType;
- exports.bigint = bigIntType;
- exports.boolean = booleanType;
- exports.coerce = coerce;
- exports.custom = custom;
- exports.date = dateType;
- exports["default"] = z;
- exports.defaultErrorMap = errorMap;
- exports.discriminatedUnion = discriminatedUnionType;
- exports.effect = effectsType;
- exports["enum"] = enumType;
- exports["function"] = functionType;
- exports.getErrorMap = getErrorMap;
- exports.getParsedType = getParsedType;
- exports["instanceof"] = instanceOfType;
- exports.intersection = intersectionType;
- exports.isAborted = isAborted;
- exports.isAsync = isAsync;
- exports.isDirty = isDirty;
- exports.isValid = isValid;
- exports.late = late;
- exports.lazy = lazyType;
- exports.literal = literalType;
- exports.makeIssue = makeIssue;
- exports.map = mapType;
- exports.nan = nanType;
- exports.nativeEnum = nativeEnumType;
- exports.never = neverType;
- exports["null"] = nullType;
- exports.nullable = nullableType;
- exports.number = numberType;
- exports.object = objectType;
- exports.oboolean = oboolean;
- exports.onumber = onumber;
- exports.optional = optionalType;
- exports.ostring = ostring;
- exports.pipeline = pipelineType;
- exports.preprocess = preprocessType;
- exports.promise = promiseType;
- exports.quotelessJson = quotelessJson;
- exports.record = recordType;
- exports.set = setType;
- exports.setErrorMap = setErrorMap;
- exports.strictObject = strictObjectType;
- exports.string = stringType;
- exports.symbol = symbolType;
- exports.transformer = effectsType;
- exports.tuple = tupleType;
- exports["undefined"] = undefinedType;
- exports.union = unionType;
- exports.unknown = unknownType;
- exports["void"] = voidType;
- exports.z = z;
-
- Object.defineProperty(exports, '__esModule', { value: true });
-
- }));
|