@stacksjs/validation 0.72.57 → 0.72.61

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
1
  // @bun
2
- var q=import.meta.require;import{v as I}from"@stacksjs/ts-validation";var g=new Set(["image/jpeg","image/png","image/webp","image/gif","image/avif"]);function F(B){return B.mimetype??B.mimeType}function b(B){return B.originalName??B.name}function y(B){let J=b(B);if(!J)return null;let U=J.lastIndexOf(".");if(U<=0||U===J.length-1)return null;let X=J.slice(U+1).toLowerCase();return/^[a-z0-9]+$/.test(X)?X:null}class M{_required=!1;_rules=[];required(){return this._required=!0,this}image(){return this._rules.push((B)=>{let J=F(B);if(!J||!g.has(J.toLowerCase()))return`must be an image (got ${J||"no mimetype"})`;return null}),this}mimeTypes(B){let J=new Set(B.map((U)=>U.toLowerCase()));return this._rules.push((U)=>{let X=F(U);if(!X||!J.has(X.toLowerCase()))return`must be one of: ${B.join(", ")} (got ${X||"no mimetype"})`;return null}),this}maxBytes(B){return this._rules.push((J)=>{if(typeof J.size!=="number")return"has no size - cannot enforce maxBytes";if(J.size>B)return`is too large: ${J.size} bytes exceeds the ${B}-byte cap`;return null}),this}minBytes(B){return this._rules.push((J)=>{if(typeof J.size!=="number")return"has no size - cannot enforce minBytes";if(J.size<B)return`is too small: ${J.size} bytes is below the ${B}-byte minimum`;return null}),this}extensions(B){let J=new Set(B.map((U)=>U.toLowerCase().replace(/^\./,"")));return this._rules.push((U)=>{let X=y(U);if(!X||!J.has(X))return`must have one of these extensions: ${B.join(", ")} (got ${X?`.${X}`:"no extension"})`;return null}),this}custom(B){return this._rules.push(B),this}validate(B){if(B===null||B===void 0){if(this._required)return{valid:!1,errors:[{message:"is required"}]};return{valid:!0}}if(typeof B!=="object"||typeof B.size!=="number")return{valid:!1,errors:[{message:"must be an uploaded file"}]};let J=B,U=[];for(let X of this._rules){let $=X(J);if($)U.push({message:$})}return U.length===0?{valid:!0}:{valid:!1,errors:U}}}function O(){return new M}function _(B){let J=B;return J.when=function(X,$,Z){if(!this.__conditionals)this.__conditionals=[];return this.__conditionals.push({field:X,match:$,refine:Z}),this},J.sometimes=function(){return this.optional(),this},J}function H(B,J){if(J===null||J===void 0)return!1;let U=J[B.field];if(typeof B.match==="function")return B.match(U);return U===B.match}function S(B,J){let U=B.__conditionals;if(!U||U.length===0)return B;let X=null;for(let $ of U){if(!H($,J))continue;if(X===null)X=m(B);X=$.refine(X)}return X??B}function m(B){let J=Object.create(Object.getPrototypeOf(B));Object.assign(J,B);let U=B.rules;if(Array.isArray(U))J.rules=U.slice();return J}function V(B){let J=B??{},U=!0,X={name:"object",get isRequired(){return U},getRules:()=>[],test(Z){return this.validate(Z).valid},isPartOfShape:!1,shape(Z){return J=Z,X},getShape(){return J},required(){return U=!0,$},optional(){return U=!1,$},validate(Z){let G=Z===void 0||Z===null;if(!U&&G)return{valid:!0,errors:this.isPartOfShape?{}:[]};if(U&&G)return this.isPartOfShape?{valid:!1,errors:{object:[{message:"value is required"}]}}:{valid:!1,errors:[{message:"value is required"}]};if(typeof Z!=="object"||Array.isArray(Z))return this.isPartOfShape?{valid:!1,errors:{object:[{message:"Must be an object"}]}}:{valid:!1,errors:[{message:"Must be an object"}]};let N=Z,Q={},D=!1;for(let z of Object.keys(J)){let W=J[z];if(!W)continue;let P=S(W,N),A=N[z],T=P.validate(A);if(T.valid)continue;if(D=!0,!Array.isArray(T.errors))for(let[h,f]of Object.entries(T.errors))Q[`${z}.${h}`]=f;else Q[z]=T.errors}if(D)return{valid:!1,errors:Q};return{valid:!0,errors:{}}}},$=_(X);return $}var p=new Set(["array","bigint","binary","blob","boolean","custom","date","datetime","decimal","double","enum","float","integer","json","number","password","smallint","string","text","time","timestamp","timestampTz","unix"]);function c(B){if(B instanceof Date)return!Number.isNaN(B.getTime());if(typeof B!=="string"||!/^\d{4}-\d{2}-\d{2}$/.test(B))return!1;let J=new Date(`${B}T00:00:00.000Z`);return!Number.isNaN(J.getTime())&&J.toISOString().slice(0,10)===B}function v(){let B=I.custom(c,"Must be a valid date");return B.name="date",_(B)}var d=/^\d{4}-\d{2}-\d{2}[ T]\d{2}:\d{2}:\d{2}(?:\.\d+)?$/;function n(B){if(B instanceof Date)return!Number.isNaN(B.getTime());if(typeof B==="number")return Number.isFinite(B)&&B>=0;if(typeof B!=="string")return!1;let J=B.trim();if(!J)return!1;if(/^\d+$/.test(J))return!0;if(d.test(J))return!Number.isNaN(new Date(J.replace(" ","T")).getTime());return!Number.isNaN(new Date(J).getTime())}function u(){let B=I.custom(n,"Must be a valid timestamp");return B.name="timestamp",_(B)}function o(B){return(...J)=>{let U=B(...J);return _(U)}}var L=new Proxy(I,{get(B,J,U){if(J==="file")return O;if(J==="object")return V;if(J==="date")return v;if(J==="timestamp")return u;if(typeof J==="string"&&p.has(J)){let X=Reflect.get(B,J,U);if(typeof X==="function")return o(X)}return Reflect.get(B,J,U)}});export*from"@stacksjs/ts-validation";var R=[];function x(B){R=B}function YB(){return R}import{HttpError as Y}from"@stacksjs/error-handling";import{path as j}from"@stacksjs/path";import{snakeCase as i}from"@stacksjs/strings";import{getErrorMessage as K}from"@stacksjs/utils";import{MessageProvider as E,setCustomMessages as w}from"@stacksjs/ts-validation";function s(B,J={}){let U=[];for(let X of B){let Z=X.startsWith("/")?X.lastIndexOf("/"):-1,G=X.indexOf("*"),N=G===-1?Z:X.lastIndexOf("/",G),Q=N>0?X.slice(0,N):".",D=N>0?X.slice(N+1):X,z=new Bun.Glob(D);for(let W of z.scanSync({cwd:Q,onlyFiles:!0}))U.push(J.absolute?`${Q}/${W}`:W)}return U}function IB(B){if(B===void 0)return!1;return Object.keys(B).length>0}async function l(B,J){let X=s([j.userModelsPath("*.ts"),j.storagePath("framework/defaults/app/Models/**/*.ts")],{absolute:!0}).find((Q)=>Q.endsWith(`${B}.ts`));if(!X)throw new Y(404,`Model ${B} not found`);let Z=(await import(X)).default.attributes,G={},N={};for(let Q in Z)if(Object.prototype.hasOwnProperty.call(Z,Q)){let D=Z[Q];if(!D)continue;let z="isRequired"in(D.validation?.rule??{})?(D.validation?.rule).isRequired:!1;if(D.default!==void 0&&z===!1)continue;G[i(Q)]=D.validation?.rule;let W=D.validation?.message;if(W)for(let P in W){let A=`${Q}.${P}`;N[A]=W[P]||""}}try{w(new E(N));let D=await L.object(G).validate(J);if(!D.valid)throw x(D.errors),new Y(422,"Validation failed",{errors:D.errors});return D}catch(Q){if(C(Q))throw Q;throw new Y(500,K(Q)||"An unexpected validation error occurred")}}var k=new Map;function KB(B,J){k.set(B,J)}function CB(B){return k.get(B)}function qB(B,J,U){return async(X)=>{try{let{db:$}=await import("@stacksjs/database"),Z=$.selectFrom(B).where(J,"=",X);if(U)Z=Z.where("id","!=",U);return await Z.selectAll().executeTakeFirst()?`The ${J} has already been taken`:!0}catch{return!0}}}function FB(B,J){return async(U)=>{try{let{db:X}=await import("@stacksjs/database");return await X.selectFrom(B).where(J,"=",U).selectAll().executeTakeFirst()?!0:`The selected ${J} does not exist`}catch{return!0}}}async function MB(B,J,U){let X=await l(B,J);if(U&&Object.keys(U).length>0){let $={};if(await Promise.all(Object.entries(U).map(async([Z,G])=>{let N=await G(J[Z],J);if(N!==!0)$[Z]=typeof N==="string"?N:`${Z} validation failed`})),Object.keys($).length>0)throw new Y(422,"Validation failed",{errors:$})}return X}async function t(B){if(!B||typeof B!=="object")return{};if(typeof B.all==="function"){let X=B.all();return X instanceof Promise?await X:X}let J=B,U={};if(J.url)try{new URL(J.url).searchParams.forEach(($,Z)=>{U[Z]=$})}catch{}if(J.query&&typeof J.query==="object")Object.assign(U,J.query);if(J.jsonBody&&typeof J.jsonBody==="object")Object.assign(U,J.jsonBody);if(J.formBody&&typeof J.formBody==="object")Object.assign(U,J.formBody);if(J.params&&typeof J.params==="object")Object.assign(U,J.params);if(Object.keys(U).length===0&&!("all"in B)&&!("jsonBody"in B))return B;return U}async function OB(B,J){let U=await t(B),X={},$={};for(let[Z,G]of Object.entries(J)){if(!G)continue;if(typeof G.rule==="object"||typeof G.rule==="function"){X[Z]=G.rule;let N=G.message;if(typeof N==="string")$[`${Z}.default`]=N;else if(N&&typeof N==="object")for(let[Q,D]of Object.entries(N))$[`${Z}.${Q}`]=D}else X[Z]=G}try{if(Object.keys($).length>0)w(new E($));let G=await L.object(X).validate(U);if(!G.valid){let Q=a(G.errors);throw new Y(422,"Validation failed",{errors:Q})}return G.value??U}catch(Z){if(C(Z))throw Z;throw new Y(500,K(Z)||"An unexpected validation error occurred")}}async function RB(B,J){let U={},X={};for(let $ in B)if(Object.prototype.hasOwnProperty.call(B,$)){let Z=B[$]?.rule;if(Z)U[$]=Z;let G=B[$]?.message;for(let N in G){let Q=`${$}.${N}`;X[Q]=B[$]?.message[N]||""}}try{let Z=await L.object().shape(U).validate(J);if(!Z.valid)throw new Y(422,"Validation failed",{errors:Z.errors});return Z}catch($){if(C($))throw $;throw new Y(500,K($)||"An unexpected validation error occurred")}}function C(B){return B instanceof Y||B instanceof Error&&typeof B.status==="number"}function a(B){let J={};if(Array.isArray(B)){for(let U of B){if(!U||typeof U!=="object")continue;let X=typeof U.field==="string"?U.field:"_",$=typeof U.message==="string"?U.message:"Validation failed";(J[X]??=[]).push($)}return J}if(!B||typeof B!=="object")return J;for(let[U,X]of Object.entries(B)){let $=Array.isArray(X)?X:[X];for(let Z of $){let G=typeof Z==="string"?Z:Z&&typeof Z==="object"&&typeof Z.message==="string"?Z.message:"Validation failed";(J[U]??=[]).push(G)}}return J}function jB(B){return typeof B==="string"}function EB(B){return typeof B==="number"&&!Number.isNaN(B)}function wB(B){return typeof B==="boolean"}function kB(B){return typeof B==="object"&&B!==null&&!Array.isArray(B)}function hB(B){return Array.isArray(B)}function fB(B){return typeof B==="function"}function gB(B){return B===void 0}function bB(B){return B===null}function yB(B){return B===null||B===void 0}export{_ as withConditionals,MB as validateFieldAsync,l as validateField,OB as validate,qB as unique,H as shouldApplyConditional,L as schema,x as reportError,KB as registerRule,V as objectWithContext,gB as isUndefined,jB as isString,IB as isObjectNotEmpty,kB as isObject,EB as isNumber,yB as isNullOrUndefined,bB as isNull,fB as isFunction,wB as isBoolean,hB as isArray,YB as getErrors,CB as getCustomRule,FB as exists,RB as customValidate,S as applyConditionals};
2
+ var T=import.meta.require;import{v as x}from"@stacksjs/ts-validation";var N=new Set(["image/jpeg","image/png","image/webp","image/gif","image/avif"]);function R(e){return e.mimetype??e.mimeType}function M(e){return e.originalName??e.name}function W(e){let t=M(e);if(!t)return null;let n=t.lastIndexOf(".");if(n<=0||n===t.length-1)return null;let r=t.slice(n+1).toLowerCase();return/^[a-z0-9]+$/.test(r)?r:null}class C{_required=!1;_rules=[];required(){return this._required=!0,this}image(){return this._rules.push((e)=>{let t=R(e);if(!t||!N.has(t.toLowerCase()))return`must be an image (got ${t||"no mimetype"})`;return null}),this}mimeTypes(e){let t=new Set(e.map((n)=>n.toLowerCase()));return this._rules.push((n)=>{let r=R(n);if(!r||!t.has(r.toLowerCase()))return`must be one of: ${e.join(", ")} (got ${r||"no mimetype"})`;return null}),this}maxBytes(e){return this._rules.push((t)=>{if(typeof t.size!=="number")return"has no size - cannot enforce maxBytes";if(t.size>e)return`is too large: ${t.size} bytes exceeds the ${e}-byte cap`;return null}),this}minBytes(e){return this._rules.push((t)=>{if(typeof t.size!=="number")return"has no size - cannot enforce minBytes";if(t.size<e)return`is too small: ${t.size} bytes is below the ${e}-byte minimum`;return null}),this}extensions(e){let t=new Set(e.map((n)=>n.toLowerCase().replace(/^\./,"")));return this._rules.push((n)=>{let r=W(n);if(!r||!t.has(r))return`must have one of these extensions: ${e.join(", ")} (got ${r?`.${r}`:"no extension"})`;return null}),this}custom(e){return this._rules.push(e),this}validate(e){if(e===null||e===void 0){if(this._required)return{valid:!1,errors:[{message:"is required"}]};return{valid:!0}}if(typeof e!=="object"||typeof e.size!=="number")return{valid:!1,errors:[{message:"must be an uploaded file"}]};let t=e,n=[];for(let r of this._rules){let a=r(t);if(a)n.push({message:a})}return n.length===0?{valid:!0}:{valid:!1,errors:n}}}function O(){return new C}function m(e){let t=e;return t.when=function(r,a,i){if(!this.__conditionals)this.__conditionals=[];return this.__conditionals.push({field:r,match:a,refine:i}),this},t.sometimes=function(){return this.optional(),this},t}function w(e,t){if(t===null||t===void 0)return!1;let n=t[e.field];if(typeof e.match==="function")return e.match(n);return n===e.match}function h(e,t){let n=e.__conditionals;if(!n||n.length===0)return e;let r=null;for(let a of n){if(!w(a,t))continue;if(r===null)r=_(e);r=a.refine(r)}return r??e}function _(e){let t=Object.create(Object.getPrototypeOf(e));Object.assign(t,e);let n=e.rules;if(Array.isArray(n))t.rules=n.slice();return t}function V(e){let t=e??{},n=!0,r={name:"object",get isRequired(){return n},getRules:()=>[],test(i){return this.validate(i).valid},isPartOfShape:!1,shape(i){return t=i,r},getShape(){return t},required(){return n=!0,a},optional(){return n=!1,a},validate(i){let o=i===void 0||i===null;if(!n&&o)return{valid:!0,errors:this.isPartOfShape?{}:[]};if(n&&o)return this.isPartOfShape?{valid:!1,errors:{object:[{message:"value is required"}]}}:{valid:!1,errors:[{message:"value is required"}]};if(typeof i!=="object"||Array.isArray(i))return this.isPartOfShape?{valid:!1,errors:{object:[{message:"Must be an object"}]}}:{valid:!1,errors:[{message:"Must be an object"}]};let s=i,l={},d=!1;for(let u of Object.keys(t)){let c=t[u];if(!c)continue;let y=h(c,s),b=s[u],g=y.validate(b);if(g.valid)continue;if(d=!0,!Array.isArray(g.errors))for(let[q,E]of Object.entries(g.errors))l[`${u}.${q}`]=E;else l[u]=g.errors}if(d)return{valid:!1,errors:l};return{valid:!0,errors:{}}}},a=m(r);return a}var L=new Set(["array","bigint","binary","blob","boolean","custom","date","datetime","decimal","double","enum","float","integer","json","number","password","smallint","string","text","time","timestamp","timestampTz","unix"]);function z(e){if(e instanceof Date)return!Number.isNaN(e.getTime());if(typeof e!=="string"||!/^\d{4}-\d{2}-\d{2}$/.test(e))return!1;let t=new Date(`${e}T00:00:00.000Z`);return!Number.isNaN(t.getTime())&&t.toISOString().slice(0,10)===e}function B(){let e=x.custom(z,"Must be a valid date");return e.name="date",m(e)}var D=/^\d{4}-\d{2}-\d{2}[ T]\d{2}:\d{2}:\d{2}(?:\.\d+)?$/;function K(e){if(e instanceof Date)return!Number.isNaN(e.getTime());if(typeof e==="number")return Number.isFinite(e)&&e>=0;if(typeof e!=="string")return!1;let t=e.trim();if(!t)return!1;if(/^\d+$/.test(t))return!0;if(D.test(t))return!Number.isNaN(new Date(t.replace(" ","T")).getTime());return!Number.isNaN(new Date(t).getTime())}function U(){let e=x.custom(K,"Must be a valid timestamp");return e.name="timestamp",m(e)}function Y(e){return(...t)=>{let n=e(...t);return m(n)}}var p=new Proxy(x,{get(e,t,n){if(t==="file")return O;if(t==="object")return V;if(t==="date")return B;if(t==="timestamp")return U;if(typeof t==="string"&&L.has(t)){let r=Reflect.get(e,t,n);if(typeof r==="function")return Y(r)}return Reflect.get(e,t,n)}});export*from"@stacksjs/ts-validation";var v=[];function A(e){v=e}function me(){return v}import{HttpError as f}from"@stacksjs/error-handling";import{path as S}from"@stacksjs/path";import{snakeCase as G}from"@stacksjs/strings";import{getErrorMessage as k}from"@stacksjs/utils";import{MessageProvider as I,setCustomMessages as P}from"@stacksjs/ts-validation";function H(e,t={}){let n=[];for(let r of e){let i=r.startsWith("/")?r.lastIndexOf("/"):-1,o=r.indexOf("*"),s=o===-1?i:r.lastIndexOf("/",o),l=s>0?r.slice(0,s):".",d=s>0?r.slice(s+1):r,u=new Bun.Glob(d);for(let c of u.scanSync({cwd:l,onlyFiles:!0}))n.push(t.absolute?`${l}/${c}`:c)}return n}function ke(e){if(e===void 0)return!1;return Object.keys(e).length>0}async function Q(e,t){let r=H([S.userModelsPath("*.ts"),S.storagePath("framework/defaults/app/Models/**/*.ts")],{absolute:!0}).find((l)=>l.endsWith(`${e}.ts`));if(!r)throw new f(404,`Model ${e} not found`);let i=(await import(r)).default.attributes,o={},s={};for(let l in i)if(Object.prototype.hasOwnProperty.call(i,l)){let d=i[l];if(!d)continue;let u="isRequired"in(d.validation?.rule??{})?(d.validation?.rule).isRequired:!1;if(d.default!==void 0&&u===!1)continue;o[G(l)]=d.validation?.rule;let c=d.validation?.message;if(c)for(let y in c){let b=`${l}.${y}`;s[b]=c[y]||""}}try{P(new I(s));let d=await p.object(o).validate(t);if(!d.valid)throw A(d.errors),new f(422,"Validation failed",{errors:d.errors});return d}catch(l){if(j(l))throw l;throw new f(500,k(l)||"An unexpected validation error occurred")}}var F=new Map;function je(e,t){F.set(e,t)}function Te(e){return F.get(e)}function Re(e,t,n){return async(r)=>{try{let{db:a}=await import("@stacksjs/database"),i=a.selectFrom(e).where(t,"=",r);if(n)i=i.where("id","!=",n);return await i.selectAll().executeTakeFirst()?`The ${t} has already been taken`:!0}catch{return!0}}}function Ce(e,t){return async(n)=>{try{let{db:r}=await import("@stacksjs/database");return await r.selectFrom(e).where(t,"=",n).selectAll().executeTakeFirst()?!0:`The selected ${t} does not exist`}catch{return!0}}}async function Oe(e,t,n){let r=await Q(e,t);if(n&&Object.keys(n).length>0){let a={};if(await Promise.all(Object.entries(n).map(async([i,o])=>{let s=await o(t[i],t);if(s!==!0)a[i]=typeof s==="string"?s:`${i} validation failed`})),Object.keys(a).length>0)throw new f(422,"Validation failed",{errors:a})}return r}async function Z(e){if(!e||typeof e!=="object")return{};if(typeof e.all==="function"){let r=e.all();return r instanceof Promise?await r:r}let t=e,n={};if(t.url)try{new URL(t.url).searchParams.forEach((a,i)=>{n[i]=a})}catch{}if(t.query&&typeof t.query==="object")Object.assign(n,t.query);if(t.jsonBody&&typeof t.jsonBody==="object")Object.assign(n,t.jsonBody);if(t.formBody&&typeof t.formBody==="object")Object.assign(n,t.formBody);if(t.params&&typeof t.params==="object")Object.assign(n,t.params);if(Object.keys(n).length===0&&!("all"in e)&&!("jsonBody"in e))return e;return n}async function ve(e,t){let n=await Z(e),r={},a={};for(let[i,o]of Object.entries(t)){if(!o)continue;if(typeof o.rule==="object"||typeof o.rule==="function"){r[i]=o.rule;let s=o.message;if(typeof s==="string")a[`${i}.default`]=s;else if(s&&typeof s==="object")for(let[l,d]of Object.entries(s))a[`${i}.${l}`]=d}else r[i]=o}try{if(Object.keys(a).length>0)P(new I(a));let o=await p.object(r).validate(n);if(!o.valid){let l=J(o.errors);throw new f(422,"Validation failed",{errors:l})}return o.value??n}catch(i){if(j(i))throw i;throw new f(500,k(i)||"An unexpected validation error occurred")}}async function Ae(e,t){let n={},r={};for(let a in e)if(Object.prototype.hasOwnProperty.call(e,a)){let i=e[a]?.rule;if(i)n[a]=i;let o=e[a]?.message;for(let s in o){let l=`${a}.${s}`;r[l]=e[a]?.message[s]||""}}try{let i=await p.object().shape(n).validate(t);if(!i.valid)throw new f(422,"Validation failed",{errors:i.errors});return i}catch(a){if(j(a))throw a;throw new f(500,k(a)||"An unexpected validation error occurred")}}function j(e){return e instanceof f||e instanceof Error&&typeof e.status==="number"}function J(e){let t={};if(Array.isArray(e)){for(let n of e){if(!n||typeof n!=="object")continue;let r=typeof n.field==="string"?n.field:"_",a=typeof n.message==="string"?n.message:"Validation failed";(t[r]??=[]).push(a)}return t}if(!e||typeof e!=="object")return t;for(let[n,r]of Object.entries(e)){let a=Array.isArray(r)?r:[r];for(let i of a){let o=typeof i==="string"?i:i&&typeof i==="object"&&typeof i.message==="string"?i.message:"Validation failed";(t[n]??=[]).push(o)}}return t}function Ie(e){return typeof e==="string"}function Pe(e){return typeof e==="number"&&!Number.isNaN(e)}function Fe(e){return typeof e==="boolean"}function qe(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}function Ee(e){return Array.isArray(e)}function Ne(e){return typeof e==="function"}function Me(e){return e===void 0}function $e(e){return e===null}function We(e){return e===null||e===void 0}export{h as applyConditionals,Ae as customValidate,Ce as exists,Te as getCustomRule,me as getErrors,Ee as isArray,Fe as isBoolean,Ne as isFunction,$e as isNull,We as isNullOrUndefined,Pe as isNumber,qe as isObject,ke as isObjectNotEmpty,Ie as isString,Me as isUndefined,V as objectWithContext,je as registerRule,A as reportError,p as schema,w as shouldApplyConditional,Re as unique,ve as validate,Q as validateField,Oe as validateFieldAsync,m as withConditionals};
@@ -1,5 +1,5 @@
1
1
  import type { ConditionalAPI } from './conditional';
2
- import type { ValidationResult, Validator } from '@stacksjs/ts-validation';
2
+ import type { RequiredMarker, ValidationResult, Validator } from '@stacksjs/ts-validation';
3
3
  /**
4
4
  * Build a Stacks-flavored object validator that respects conditional
5
5
  * rules on its child validators. Drop-in for `v.object(...)` in
@@ -20,7 +20,7 @@ export declare interface ObjectWithContextValidator<TShape extends ValidatorShap
20
20
  readonly name: 'object'
21
21
  validate: (value: InferObjectShape<TShape>) => ValidationResult
22
22
  getShape: () => TShape
23
- required: () => this
23
+ required: () => this & RequiredMarker
24
24
  optional: () => this
25
25
  isPartOfShape: boolean
26
26
  shape: <TNextShape extends ValidatorShape>(shape: TNextShape) => ObjectWithContextValidator<TNextShape>
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@stacksjs/validation",
3
3
  "type": "module",
4
4
  "sideEffects": false,
5
- "version": "0.72.57",
5
+ "version": "0.72.61",
6
6
  "description": "The Stacks Validation ways.",
7
7
  "author": "Chris Breuer",
8
8
  "contributors": [
@@ -59,11 +59,11 @@
59
59
  "prepublishOnly": "bun run build"
60
60
  },
61
61
  "dependencies": {
62
- "@stacksjs/ts-validation": "^0.5.5"
62
+ "@stacksjs/ts-validation": "^0.5.6"
63
63
  },
64
64
  "devDependencies": {
65
65
  "better-dx": "^0.2.24",
66
- "@stacksjs/strings": "0.72.57",
67
- "@stacksjs/types": "0.72.57"
66
+ "@stacksjs/strings": "0.72.61",
67
+ "@stacksjs/types": "0.72.61"
68
68
  }
69
69
  }