@regle/core 0.2.5 → 0.2.6

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.cjs CHANGED
@@ -1 +1 @@
1
- 'use strict';var vue=require('vue');var Pe=(r=>(r.Inline="__inline",r.Async="__async",r))(Pe||{});function Ke(e,t){return vue.computed(()=>e.value.some(r=>r[t]))}function et(e,t){return vue.computed(()=>e.value.reduce((r,n)=>{let a=n[t]||[];return r.concat(a)},[]))}function q(e){return e.map(t=>t instanceof Function?t():vue.unref(t))}function tt(e){return e.map(t=>t instanceof Function||vue.isRef(t)?t:vue.toRef(()=>t))}function rt(e){let t=e.toString();return (t.includes("=>")?t.split("=>")[0]:t).slice(t.indexOf("(")+1,t.indexOf(")")).split(",").map(o=>o.trim()).filter(o=>o.includes("=")).length+e.length}function we(e,...t){let{message:r,validator:n,active:a,type:o,...u}=e,v=o==="__async"||n.constructor.name==="AsyncFunction";return {...{validator(S,...m){return e.validator(S,...q(m.length?m:t))},message(S,m){return typeof e.message=="function"?e.message(S,{...m,$params:q(m.$params?.length?m.$params:t)}):e.message},active(S,m){return typeof e.active=="function"?e.active(S,{...m,$params:q(m.$params?.length?m.$params:t)}):e.active??!0},exec(S){let m=e.validator(S,...q(t)),d;return m instanceof Promise?m.then(f=>(d=f,typeof d=="object"&&"$valid"in d?d.$valid:typeof d=="boolean"?d:!1)):(d=m,typeof d=="object"&&"$valid"in d?d.$valid:typeof d=="boolean"?d:!1)}},...u,_validator:e.validator,_message:e.message,_active:e.active,_type:e.type,_patched:!1,_async:v,_params:tt(t)}}function Oe(e){if(typeof e.validator=="function"){let r=we(e,...[]),n=e.validator.constructor.name==="AsyncFunction";if(rt(e.validator)>1){let a=function(...o){return we(e,...o)};return a.validator=r.validator,a.message=r.message,a.active=r.active,a.type=r.type,a.exec=r.exec,a._validator=r.validator,a._message=r.message,a._active=r.active,a._type=e.type,a._patched=!1,a._async=n,a}else return r}throw new Error("Validator must be a function")}function L(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function nt(e){return L(e.value)}function K(e){let t=e,r={}.toString.call(e).slice(8,-1);if(r=="Set"&&(t=new Set([...e].map(n=>K(n)))),r=="Map"&&(t=new Map([...e].map(n=>[K(n[0]),K(n[1])]))),r=="Date"&&(t=new Date(e.getTime())),r=="RegExp"&&(t=RegExp(e.source,xt(e))),r=="Array"||r=="Object"){t=Array.isArray(e)?[]:{};for(let n in e)t[n]=K(e[n]);}return t}function xt(e){if(typeof e.source.flags=="string")return e.source.flags;{let t=[];return e.global&&t.push("g"),e.ignoreCase&&t.push("i"),e.multiline&&t.push("m"),e.sticky&&t.push("y"),e.unicode&&t.push("u"),t.join("")}}function Ae(e,t,r){return e instanceof Function?e(t,r??0):e}function at(e,t){vue.isRef(e)?e.value=t:e=t;}function lt(e,t){vue.isRef(e)?e.value=[]:e=[],t.forEach((r,n)=>{let a=vue.isRef(e)?e.value[n]:e[n];a={},de(a,t[n]);});}function de(e,t){Object.entries({...vue.unref(e),...t}).forEach(([r,n])=>{let a=vue.isRef(e)?e.value:e,o=vue.isRef(t[r])?t[r]._value:t[r],u=vue.isRef(a[r])?a[r].value:a[r];Array.isArray(a[r])?(a[r]=[],Array.isArray(o)&&o.forEach((v,E)=>{a[r][E]={},de(a[r][E],o[E]);})):L(o)?de(u,o):vue.isRef(a[r])?a[r].value=o:a[r]=o;});}function ee(e){return e==null?!0:e===!1?!1:e instanceof Date?isNaN(e.getTime()):Array.isArray(e)?e.length===0:typeof e=="object"&&e!=null?Object.keys(e).length===0:typeof e=="string"?!String(e.trim()).length:!1}function ye(e,t,r){let n,a=(...o)=>new Promise(u=>{clearTimeout(n),n=setTimeout(()=>{n=void 0,Promise.resolve(e.apply(this,[...o])).then(u);},t);});return a.cancel=()=>{clearTimeout(n),n=void 0;},a.doImmediately=(...o)=>new Promise(u=>{clearTimeout(n),n=setTimeout(()=>{n=void 0,Promise.resolve(e.apply(this,[...o])).then(u);},0);}),a}function Ct(e,t){let r=String(e).split("."),n=String(t).split(".");for(let a=0;a<Math.min(r.length,n.length);a++){let o=Number(r[a]),u=Number(n[a]);if(o>u)return 1;if(u>o)return -1;if(!isNaN(o)&&isNaN(u))return 1;if(isNaN(o)&&!isNaN(u))return -1}return 0}var ie=Ct(vue.version,"3.5.0")!==-1;function It(){return Math.floor(Math.random()*Date.now()).toString()}function Fe(){return typeof window>"u"?It():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function Me(){let e=vue.shallowRef(new Map),t=vue.shallowRef(new Map),r=vue.shallowRef(new Map),n=vue.shallowRef(new Map),a=vue.shallowRef(new Map),o=vue.shallowRef(new Map);function u(s){let l=t.value.get(s);if(l)return l;{let x=vue.ref({});return t.value.set(s,x),x}}function v(s){let l=r.value.get(s);if(l)return l;{let x=vue.ref([]);return r.value.set(s,x),x}}function E(s,l,x){o.value.set(`${s}-${l}`,x);}function $(s,l){return o.value.get(`${s}-${l}`)}function S(s,l){s&&l!=null&&o.value.delete(`${s}-${l}`);}function m(s,l){n.value.set(s,l);}function d(s){return n.value.get(s)??!1}function f(s,l){e.value.set(s,l);}function c(s,l){let x=e.value.get(s);return x?I(l,x)?{valid:!0}:{valid:!1}:void 0}function I(s,l){let x=Object.keys(l),V=Object.keys(s);return V.length!==x.length||!V.every(P=>x.includes(P))?!1:V.every(P=>{let h=s[P],w=l[P];return !w||!h||typeof h=="function"||typeof w=="function"||typeof h=="number"||typeof h=="boolean"?!1:h._params?h._params?.every((O,_)=>{if(typeof w=="number"||typeof w=="boolean")return !0;{let M=q(w._params),H=q(h._params);return M?.[_]===H?.[_]}}):!0})}function C(s){let l=a.value.get(s);if(l)return l;{let x=vue.ref(!1),V=vue.ref(!0),G=vue.ref({}),P=vue.ref(!1);return a.value.set(s,{$pending:x,$valid:V,$metadata:G,$validating:P}),{$pending:x,$valid:V,$metadata:G,$validating:P}}}return vue.onScopeDispose(()=>{e.value.clear(),t.value.clear(),r.value.clear(),n.value.clear(),a.value.clear(),o.value.clear();}),{addRuleDeclEntry:f,setDirtyEntry:m,checkRuleDeclEntry:c,getDirtyState:d,trySetRuleStatusRef:C,getFieldsEntry:u,getCollectionsEntry:v,getArrayStatus:$,addArrayStatus:E,deleteArrayStatus:S,arrayStatusStorage:o}}function ot(e,t){return L(e.value)&&L(t.value)&&!Object.entries(t.value).some(r=>me(r))}function st(e){return !!e.value&&"$each"in e.value}function it(e){return !!e.value&&L(e.value)}function me(e){return L(e)&&"_validator"in e}function ge(e){return typeof e.value!="function"}function Ve(e){return L(e)&&"$fields"in e}function je(e){return "$each"in e||"$errors"in e}function _e({field:e,silent:t=!1}){return Object.entries(e.$rules??{}).map(([r,n])=>t||!n.$valid&&e.$dirty&&!n.$validating?n.$message:null).filter(r=>!!r).reduce((r,n)=>typeof n=="string"?r?.concat([n]):r?.concat(n),[]).concat(e.$externalErrors??[])}function ct({$dirty:e,customMessages:t,rule:r,ruleKey:n,state:a,path:o,storage:u,$debounce:v}){let E=vue.effectScope(),$,S,m=vue.ref(!1),{$pending:d,$valid:f,$metadata:c,$validating:I}=u.trySetRuleStatusRef(`${o}.${n}`);function C(){$=E.run(()=>{let h=vue.computed(()=>({$invalid:!f.value,$params:H.value,...c.value})),w=vue.computed(()=>ge(r)?typeof r.value.active=="function"?r.value.active(a.value,h.value):r.value.active:!0),O=vue.computed(()=>{let y="",g=t?t[n]?.message:void 0;return g&&(typeof g=="function"?y=g(a.value,h.value):y=g),ge(r)&&(g&&!r.value._patched||(typeof r.value.message=="function"?y=r.value.message(a.value,h.value):y=r.value.message)),ee(y)&&(y="Error",console.warn(`No error message defined for ${o}.${n}`)),y}),_=vue.computed(()=>ge(r)&&r.value.type?r.value.type:n),M=vue.computed(()=>ge(r)?r.value.validator:r.value),H=vue.computed(()=>typeof r.value=="function"?[]:q(r.value._params??[])),D=vue.computed(()=>`${o}.${_.value}`);return {$active:w,$message:O,$type:_,$validator:M,$params:H,$path:D}}),S=vue.watch($.$params,V,{deep:!0});}C();function s(){f.value=!0,e.value&&(d.value=!0);}async function l(){let h=$.$validator.value,w=h(a.value,...$.$params.value),O=!1,_=a.value;try{s();let M;if(w instanceof Promise?M=await w:M=w,a.value!==_)return !0;if(typeof M=="boolean")O=M;else {let{$valid:H,...D}=M;O=H,c.value=D;}}catch{O=!1;}finally{d.value=!1;}return O}let x=ye(l,v??200);async function V(){I.value=!0;let h=!1;if(me(r.value)&&r.value._async)h=await x();else {let w=$.$validator.value,O=w(a.value,...$.$params.value);if(O instanceof Promise)console.warn('You used a async validator function on a non-async rule, please use "async await" or the "withAsync" helper');else if(O!=null)if(typeof O=="boolean")h=O;else {let{$valid:_,...M}=O;h=_,c.value=M;}}return f.value=h,I.value=!1,h}function G(){f.value=!0,c.value={},d.value=!1,I.value=!1,C();}function P(){S(),E.stop(),E=vue.effectScope();}return vue.reactive({...$,$pending:d,$valid:f,$metadata:c,_haveAsync:m,$validating:I,$validate:V,$unwatch:P,$watch:C,$reset:G})}function Ee({state:e,rulesDef:t,customMessages:r,path:n,fieldName:a,storage:o,options:u,externalErrors:v,onUnwatch:E,$isArray:$,initialState:S,shortcuts:m}){let d=vue.effectScope(),f,c=vue.ref(!1),I=vue.ref(!1),C=vue.ref([]),s,l,x,V,G,P=()=>{};function h(){C.value=v.value??[];}h();function w(){let j=t.value,U=o.checkRuleDeclEntry(n,j);y.value=Object.fromEntries(Object.entries(j).filter(([W])=>W.startsWith("$"))),D.value=Object.fromEntries(Object.entries(t.value).filter(([W])=>!W.startsWith("$")).map(([W,Q])=>{if(Q){let De=vue.toRef(()=>Q);return [W,ct({$dirty:c,customMessages:r,rule:De,ruleKey:W,state:e,path:n,storage:o,$debounce:y.value.$debounce})]}return []}).filter(W=>!!W.length)),M(),O(),U?.valid!=null&&(c.value=o.getDirtyState(n),c.value&&P()),o.addRuleDeclEntry(n,j);}function O(){P=f.$debounce.value?ye(H,f.$debounce.value??f.haveAnyAsyncRule?100:0):H;}function _(){D.value&&Object.entries(D.value).forEach(([j,U])=>{U.$unwatch();}),V(),c.value&&o.setDirtyEntry(n,c.value),s(),l(),x(),d.stop(),d=vue.effectScope(),E?.(),G?.();}function M(){D.value&&Object.entries(D.value).forEach(([j,U])=>{U.$watch();}),f=d.run(()=>{let j=vue.computed(()=>c.value),U=vue.computed(()=>y.value.$debounce),W=vue.computed(()=>y.value.$lazy!=null?y.value.$lazy:vue.unref(u.lazy)),Q=vue.computed(()=>y.value.$rewardEarly!=null?y.value.$rewardEarly:vue.unref(u.rewardEarly)),De=vue.computed(()=>y.value.$autoDirty!=null?y.value.$autoDirty:vue.unref(u.autoDirty)),gt=vue.computed(()=>Object.entries(D.value).some(([Z,J])=>J.$validating)),Ce=vue.computed(()=>pe.value&&!he.value&&c.value),Le=vue.computed(()=>Ce.value?_e({field:{$dirty:c.value,$externalErrors:C.value,$rules:D.value}}):[]),ze=vue.computed(()=>_e({field:{$dirty:c.value,$externalErrors:C.value,$rules:D.value},silent:!0})),Je=vue.computed(()=>!(pe.value||he.value)),he=vue.computed(()=>I.value||!Q.value?Object.entries(D.value).some(([Z,J])=>J.$pending):!1),pe=vue.computed(()=>C.value?.length?!0:!Q.value||Q.value&&I.value?Object.entries(D.value).some(([Z,J])=>!J.$valid):!1),Ye=vue.computed(()=>a),Ie=vue.computed(()=>c.value&&!ee(e.value)&&!gt.value?C.value?.length?!1:Q.value?Object.entries(D.value).every(([Z,J])=>J.$valid):!pe.value:!1),vt=vue.computed(()=>Object.entries(D.value).some(([Z,J])=>J._haveAsync));function $t(){m?.fields&&Object.entries(m.fields).forEach(([Z,J])=>{let St=vue.effectScope();Qe[Z]=St.run(()=>{let Xe=vue.ref();return vue.watchEffect(()=>{Xe.value=J({$dirty:c.value,$externalErrors:C.value,$value:e,$rules:D.value,$error:Ce.value,$pending:he.value,$invalid:pe.value,$valid:Ie.value,$errors:Le.value,$ready:Je.value,$silentErrors:ze.value,$anyDirty:j.value,$name:Ye.value});}),Xe});});}let Qe={};return $t(),vue.watch(Ie,Z=>{Z&&(I.value=!1);}),{$error:Ce,$pending:he,$invalid:pe,$valid:Ie,$debounce:U,$lazy:W,$errors:Le,$ready:Je,$silentErrors:ze,$rewardEarly:Q,$autoDirty:De,$anyDirty:j,$name:Ye,haveAnyAsyncRule:vt,$shortcuts:Qe}}),x=vue.watch(v,h),s=vue.watch(e,()=>{f.$autoDirty.value&&(c.value||(c.value=!0)),t.value instanceof Function&&w(),P(),f.$rewardEarly.value;},{deep:$?!0:ie?1:!0}),V=vue.watch(c,()=>{o.setDirtyEntry(n,c.value);}),l=vue.watch(f.$valid,j=>{f.$rewardEarly.value&&j&&(I.value=!1);}),G=vue.watch(f.haveAnyAsyncRule,O);}function H(){Object.entries(D.value).forEach(([j,U])=>{U.$validate();});}let D=vue.ref(),y=vue.ref();w();function g(){c.value=!1,C.value=[],Object.entries(D.value).forEach(([j,U])=>{U.$reset();}),f.$lazy.value||Object.entries(D.value).map(([j,U])=>U.$validate());}function p(){c.value||(c.value=!0,f.$rewardEarly.value,P());}let R=f.$debounce.value?ye(i,f.$debounce.value??0):i;async function i(){try{if(I.value=!0,f.$autoDirty.value&&c.value&&!f.$pending.value)return !f.$error.value;{let j=Object.entries(D.value).map(([W,Q])=>Q.$validate());return (await Promise.allSettled(j)).every(W=>W.status==="fulfilled"?W.value:!1)}}catch{return !1}}function b(){_(),e.value=at(e,S),g();}function T(j=!0){return c.value?e.value:null}function N(){C.value=[];}f.$lazy.value||i();let{$anyDirty:Y,$error:te,$errors:oe,$invalid:re,$name:B,$pending:F,$ready:A,$silentErrors:se,$valid:xe,$shortcuts:Se}=f;return vue.reactive({$dirty:c,$error:te,$errors:oe,$valid:xe,$invalid:re,$pending:F,$silentErrors:se,$anyDirty:Y,$ready:A,$name:B,$externalErrors:C,$value:e,$rules:D,...Se,$reset:g,$touch:p,$validate:R,$unwatch:_,$watch:M,$resetAll:b,$extractDirtyFields:T,$clearExternalErrors:N})}function ft({$id:e,path:t,index:r,options:n,storage:a,stateValue:o,customMessages:u,rules:v,externalErrors:E,initialState:$,shortcuts:S,fieldName:m}){let d=v.$key?v.$key:Fe(),f=`${t}.${String(d)}`;typeof o.value=="object"&&o.value!=null&&(o.value.$id?f=`${t}.${o.value.$id}`:Object.defineProperties(o.value,{$id:{value:d,enumerable:!1,configurable:!1,writable:!1}}));let c=vue.toRef(()=>E.value?.[r]),I=Te({state:o,rulesDef:vue.toRef(()=>v),customMessages:u,path:f,storage:a,options:n,externalErrors:c,initialState:$?.[r],shortcuts:S,fieldName:m});if(I){let C=o.value?.$id;I.$id=C??String(d),a.addArrayStatus(e,I.$id,I);}return I}function Rt({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:o,externalErrors:u,initialState:v,shortcuts:E,fieldName:$}){let S=vue.effectScope(),m,d=vue.effectScope(),f;if(Array.isArray(e.value)&&!t.value.$each)return null;let c=vue.ref(),I=vue.ref(e.value),C,s=vue.ref({}),l=a.getCollectionsEntry(n);f=d.run(()=>{let p=vue.computed(()=>Array.isArray(e.value)&&e.value.length?e.value.some(b=>typeof b!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(b=>me(b)):!1),R=vue.computed(()=>u.value?je(u.value)?u.value.$errors??[]:[]:[]),i=vue.computed(()=>u.value?je(u.value)?u.value.$each??[]:[]:[]);return {isPrimitiveArray:p,$externalErrorsField:R,$externalErrorsEach:i}}),x(),G();function x(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?(c.value=Fe(),Object.defineProperties(e.value,{$id:{value:c.value,enumerable:!1,configurable:!1,writable:!1}})):e.value?.$id&&(c.value=e.value.$id)),!f.isPrimitiveArray.value&&(I.value=s.value.$value,Array.isArray(e.value)&&t.value.$each?l.value=e.value.map((p,R)=>{let i=Ae(t.value.$each,vue.toRef(()=>p),R);if(i){let b=ft({$id:c.value,path:n,rules:i,stateValue:vue.toRef(()=>p),index:R,options:o,storage:a,externalErrors:f.$externalErrorsEach,initialState:v[R],shortcuts:E,fieldName:$});return b||null}}).filter(p=>!!p):l.value=[],s.value=Ee({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:o,externalErrors:f.$externalErrorsField,$isArray:!0,initialState:v,shortcuts:E,fieldName:$}));}function V(){if(Array.isArray(e.value)){let p=K(l.value);l.value=e.value.map((R,i)=>{let b=vue.toRef(()=>R);if(R.$id&&l.value.find(T=>T.$id===R.$id)){let T=a.getArrayStatus(c.value,R.$id);return T?(T.$value=b,T):null}else {let T=Ae(t.value.$each,b,i);if(T){let N=ft({$id:c.value,path:n,rules:T,stateValue:b,index:i,options:o,storage:a,externalErrors:f.$externalErrorsEach,initialState:v[i],fieldName:$});return N||null}}}).filter(R=>!!R),p.filter(R=>!e.value.find(i=>R.$id===i.$id)).forEach((R,i)=>{a.deleteArrayStatus(c.value,i.toString());});}else l.value=[];}function G(){C=vue.watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?x():V();},{deep:ie?1:!0,flush:"pre"}),m=S.run(()=>{let p=vue.computed(()=>s.value.$dirty&&l.value.every(A=>A.$dirty)),R=vue.computed(()=>s.value.$anyDirty||l.value.some(A=>A.$dirty)),i=vue.computed(()=>s.value.$invalid||l.value.some(A=>A.$invalid)),b=vue.computed(()=>s.value.$valid&&l.value.every(A=>A.$valid)),T=vue.computed(()=>s.value.$error||l.value.some(A=>A.$error)),N=vue.computed(()=>!(i.value||Y.value)),Y=vue.computed(()=>s.value.$pending||l.value.some(A=>A.$pending)),te=vue.computed(()=>({$errors:s.value.$errors,$each:l.value.map(A=>A.$errors)})),oe=vue.computed(()=>({$errors:s.value.$silentErrors,$each:l.value.map(A=>A.$silentErrors)})),re=vue.computed(()=>$);function B(){E?.collections&&Object.entries(E?.collections).forEach(([A,se])=>{let xe=vue.effectScope();F[A]=xe.run(()=>{let Se=vue.ref();return vue.watchEffect(()=>{Se.value=se({$dirty:p.value,$error:T.value,$pending:Y.value,$invalid:i.value,$valid:b.value,$errors:te.value,$ready:N.value,$silentErrors:oe.value,$anyDirty:R.value,$name:re.value,$each:l.value,$field:s.value,$value:e});}),Se});});}let F={};return B(),{$dirty:p,$anyDirty:R,$invalid:i,$valid:b,$error:T,$pending:Y,$errors:te,$silentErrors:oe,$ready:N,$name:re,$shortcuts:F}}),f.isPrimitiveArray.value&&(console.warn(`${n} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`),C());}function P(){C&&C(),s.value&&s.value.$unwatch(),l.value&&l.value.forEach(p=>{"$dirty"in p&&p.$unwatch();}),S.stop(),S=vue.effectScope(),d.stop(),d=vue.effectScope(!0);}function h(){s.value.$touch(),l.value.forEach(p=>{p.$touch();});}function w(){s.value.$reset(),l.value.forEach(p=>{p.$reset();});}async function O(){try{return (await Promise.all([s.value.$validate(),...l.value.map(R=>R.$validate())])).every(R=>!!R)}catch{return !1}}function _(){s.value.$clearExternalErrors(),l.value.forEach(p=>{p.$clearExternalErrors();});}function M(p=!0){let R=l.value.map(i=>{if(Ve(i))return i.$extractDirtyFields(p)});return p&&(R=R.filter(i=>L(i)?!ee(i):!!i)),R}function H(){console.log(v),P(),lt(e,v),w();}async function D(){return h(),await O()?e.value:!1}let{$shortcuts:y,...g}=m;return vue.reactive({$field:s,...g,...y,$each:l,$value:e,$validate:O,$unwatch:P,$watch:G,$touch:h,$reset:w,$resetAll:H,$extractDirtyFields:M,$parse:D,$clearExternalErrors:_})}function Be({scopeRules:e,state:t,customMessages:r,path:n="",rootRules:a,storage:o,options:u,externalErrors:v,validationGroups:E,initialState:$,shortcuts:S,fieldName:m}){let d,f,c=null;function s(y=!0){l.value=null,vue.triggerRef(l);let g=Object.fromEntries(Object.entries(e.value).map(([i,b])=>{if(b){let T=vue.toRef(t.value,i),N=vue.toRef(()=>b),Y=vue.toRef(()=>v.value?.[i]);return [i,Te({state:T,rulesDef:N,customMessages:r,path:n?`${n}.${i}`:i,storage:o,options:u,externalErrors:Y,initialState:$?.[i],shortcuts:S,fieldName:i})]}return []}).filter(i=>!!i.length&&i[1]!=null)),p=Object.fromEntries(Object.entries(vue.unref(v)??{}).filter(([i])=>!(i in e.value)).map(([i,b])=>{if(b){let T=vue.toRef(()=>({})),N=vue.toRef(()=>b);return [i,Te({state:vue.ref(void 0),rulesDef:T,customMessages:r,path:n?`${n}.${i}`:i,storage:o,options:u,externalErrors:N,initialState:$?.[i],fieldName:i})]}return []})),R=Object.fromEntries(Object.entries(E?.(g)??{}).map(([i,b])=>b.length?[i,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$valid"].map(T=>[T,Ke(vue.toRef(()=>b),T)])),...Object.fromEntries(["$errors","$silentErrors"].map(T=>[T,et(vue.toRef(()=>b),T)]))}]:[]));l.value={...g,...p,...R},y&&P();}let l=o.getFieldsEntry(n);s();function x(){s(!1),Object.entries(l.value).forEach(([y,g])=>{g.$reset();}),P();}function V(){Object.entries(l.value).forEach(([y,g])=>{g.$touch();});}async function G(){try{return (await Promise.allSettled(Object.entries(l.value).map(([g,p])=>p.$validate()))).every(g=>g.status==="fulfilled"?g.value:!1)}catch{return !1}}function P(){a&&(c=vue.watch(a,()=>{h(),s();},{deep:ie?1:!0,flush:"post"})),d=vue.effectScope(),f=d.run(()=>{let y=vue.computed(()=>!!Object.entries(l.value).length&&Object.entries(l.value).every(([B,F])=>F.$dirty)),g=vue.computed(()=>Object.entries(l.value).some(([B,F])=>F.$dirty)),p=vue.computed(()=>Object.entries(l.value).some(([B,F])=>F.$invalid)),R=vue.computed(()=>Object.entries(l.value).every(([B,F])=>F.$valid)),i=vue.computed(()=>y.value&&!T.value&&p.value),b=vue.computed(()=>!(p.value||T.value)),T=vue.computed(()=>Object.entries(l.value).some(([B,F])=>F.$pending)),N=vue.computed(()=>Object.fromEntries(Object.entries(l.value).map(([B,F])=>[B,F.$errors]))),Y=vue.computed(()=>Object.fromEntries(Object.entries(l.value).map(([B,F])=>[B,F.$silentErrors]))),te=vue.computed(()=>m);function oe(){S?.nested&&Object.entries(S.nested).forEach(([B,F])=>{let A=vue.effectScope();re[B]=A.run(()=>{let se=vue.ref();return vue.watchEffect(()=>{se.value=F({$dirty:y.value,$value:t,$error:i.value,$pending:T.value,$invalid:p.value,$valid:R.value,$ready:b.value,$anyDirty:g.value,$name:te.value,$silentErrors:Y.value,$errors:N.value,$fields:l.value});}),se});});}let re={};return oe(),{$dirty:y,$anyDirty:g,$invalid:p,$valid:R,$error:i,$pending:T,$errors:N,$silentErrors:Y,$ready:b,$name:te,$shortcuts:re}});}function h(){l.value&&Object.entries(l.value).forEach(([y,g])=>{g.$unwatch();}),c?.(),d.stop(),d=vue.effectScope();}function w(){Object.entries(l.value).forEach(([y,g])=>{g.$clearExternalErrors();});}function O(){h(),de(t,$??{}),x();}function _(y=!0){let g=Object.entries(l.value).map(([p,R])=>[p,R.$extractDirtyFields(y)]);return y&&(g=g.filter(([p,R])=>L(R)?!ee(R):Array.isArray(R)?R.length:!!R)),Object.fromEntries(g)}async function M(){return V(),await G()?t.value:!1}let{$shortcuts:H,...D}=f;return vue.reactive({...D,...H,$fields:l,$value:t,$resetAll:O,$reset:x,$touch:V,$validate:G,$unwatch:h,$watch:P,$clearExternalErrors:w,$extractDirtyFields:_,$parse:M})}function Te({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:o,externalErrors:u,index:v,initialState:E,shortcuts:$,onUnwatch:S,fieldName:m}){return st(t)?Rt({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:o,index:v,externalErrors:u,initialState:E,fieldName:m,shortcuts:$}):ot(e,t)&&nt(e)?Be({scopeRules:t,state:e,customMessages:r,path:n,storage:a,options:o,index:v,initialState:E,shortcuts:$,fieldName:m,externalErrors:u}):it(t)?Ee({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:o,index:v,externalErrors:u,onUnwatch:S,shortcuts:$,initialState:E,fieldName:m}):null}function Ue({initialState:e,options:t,scopeRules:r,state:n,customRules:a,shortcuts:o}){let u=Me(),v=vue.computed(()=>vue.unref(t.externalErrors));return vue.reactive(Be({rootRules:r,scopeRules:r,state:n,customMessages:a?.(),storage:u,options:t,externalErrors:v,validationGroups:t.validationGroups,initialState:e,shortcuts:o,fieldName:"root"}))}function We(e,t,r){let n={autoDirty:t?.autoDirty??!0,lazy:t?.lazy??!1,rewardEarly:t?.rewardEarly??!1};function a(o,u,v){let E=vue.isRef(u)?u:vue.computed(typeof u=="function"?u:()=>u),$={...n,...v},S=vue.isRef(o)?o:vue.ref(o),m=K(vue.toRaw(S.value));return {r$:Ue({scopeRules:E,state:S,options:$,initialState:m,customRules:e,shortcuts:r})}}return a}var yt=We();function He(){function e(t,r){return r}return e}var qe=He();function mt({rules:e,modifiers:t,shortcuts:r}){let n=We(e,t,r),a=He();return {useRegle:n,inferRules:a}}exports.InternalRuleType=Pe;exports.createRule=Oe;exports.defineRegleConfig=mt;exports.inferRules=qe;exports.unwrapRuleParameters=q;exports.useRegle=yt;
1
+ 'use strict';var vue=require('vue');var Pe=(r=>(r.Inline="__inline",r.Async="__async",r))(Pe||{});function Ke(e,t){return vue.computed(()=>e.value.some(r=>r[t]))}function et(e,t){return vue.computed(()=>e.value.reduce((r,n)=>{let a=n[t]||[];return r.concat(a)},[]))}function L(e){return e.map(t=>t instanceof Function?t():vue.unref(t))}function tt(e){return e.map(t=>t instanceof Function||vue.isRef(t)?t:vue.toRef(()=>t))}function rt(e){let t=e.toString();return (t.includes("=>")?t.split("=>")[0]:t).slice(t.indexOf("(")+1,t.indexOf(")")).split(",").map(o=>o.trim()).filter(o=>o.includes("=")).length+e.length}function we(e,...t){let{message:r,validator:n,active:a,type:o,...u}=e,S=o==="__async"||n.constructor.name==="AsyncFunction";return {...{validator(g,...m){return e.validator(g,...L(m.length?m:t))},message(g,m){return typeof e.message=="function"?e.message(g,{...m,$params:L(m.$params?.length?m.$params:t)}):e.message},active(g,m){return typeof e.active=="function"?e.active(g,{...m,$params:L(m.$params?.length?m.$params:t)}):e.active??!0},exec(g){let m=e.validator(g,...L(t)),d;return m instanceof Promise?m.then(f=>(d=f,typeof d=="object"&&"$valid"in d?d.$valid:typeof d=="boolean"?d:!1)):(d=m,typeof d=="object"&&"$valid"in d?d.$valid:typeof d=="boolean"?d:!1)}},...u,_validator:e.validator,_message:e.message,_active:e.active,_type:e.type,_patched:!1,_async:S,_params:tt(t)}}function Oe(e){if(typeof e.validator=="function"){let r=we(e,...[]),n=e.validator.constructor.name==="AsyncFunction";if(rt(e.validator)>1){let a=function(...o){return we(e,...o)};return a.validator=r.validator,a.message=r.message,a.active=r.active,a.type=r.type,a.exec=r.exec,a._validator=r.validator,a._message=r.message,a._active=r.active,a._type=e.type,a._patched=!1,a._async=n,a}else return r}throw new Error("Validator must be a function")}function z(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function nt(e){return z(e.value)}function re(e){let t=e,r={}.toString.call(e).slice(8,-1);if(r=="Set"&&(t=new Set([...e].map(n=>re(n)))),r=="Map"&&(t=new Map([...e].map(n=>[re(n[0]),re(n[1])]))),r=="Date"&&(t=new Date(e.getTime())),r=="RegExp"&&(t=RegExp(e.source,xt(e))),r=="Array"||r=="Object"){t=Array.isArray(e)?[]:{};for(let n in e)t[n]=re(e[n]);}return t}function xt(e){if(typeof e.source.flags=="string")return e.source.flags;{let t=[];return e.global&&t.push("g"),e.ignoreCase&&t.push("i"),e.multiline&&t.push("m"),e.sticky&&t.push("y"),e.unicode&&t.push("u"),t.join("")}}function Ae(e,t,r){return e instanceof Function?e(t,r??0):e}function at(e,t){vue.isRef(e)?e.value=t:e=t;}function lt(e,t){vue.isRef(e)?e.value=[]:e=[],t.forEach((r,n)=>{let a=vue.isRef(e)?e.value[n]:e[n];a={},de(a,t[n]);});}function de(e,t){Object.entries({...vue.unref(e),...t}).forEach(([r,n])=>{let a=vue.isRef(e)?e.value:e,o=vue.isRef(t[r])?t[r]._value:t[r],u=vue.isRef(a[r])?a[r].value:a[r];Array.isArray(a[r])?(a[r]=[],Array.isArray(o)&&o.forEach((S,E)=>{a[r][E]={},de(a[r][E],o[E]);})):z(o)?de(u,o):vue.isRef(a[r])?a[r].value=o:a[r]=o;});}function ee(e){return e==null?!0:e===!1?!1:e instanceof Date?isNaN(e.getTime()):Array.isArray(e)?e.length===0:typeof e=="object"&&e!=null?Object.keys(e).length===0:typeof e=="string"?!String(e.trim()).length:!1}function ye(e,t,r){let n,a=(...o)=>new Promise(u=>{clearTimeout(n),n=setTimeout(()=>{n=void 0,Promise.resolve(e.apply(this,[...o])).then(u);},t);});return a.cancel=()=>{clearTimeout(n),n=void 0;},a.doImmediately=(...o)=>new Promise(u=>{clearTimeout(n),n=setTimeout(()=>{n=void 0,Promise.resolve(e.apply(this,[...o])).then(u);},0);}),a}function Ct(e,t){let r=String(e).split("."),n=String(t).split(".");for(let a=0;a<Math.min(r.length,n.length);a++){let o=Number(r[a]),u=Number(n[a]);if(o>u)return 1;if(u>o)return -1;if(!isNaN(o)&&isNaN(u))return 1;if(isNaN(o)&&!isNaN(u))return -1}return 0}var se=Ct(vue.version,"3.5.0")!==-1;function It(){return Math.floor(Math.random()*Date.now()).toString()}function Fe(){return typeof window>"u"?It():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function Me(){let e=vue.shallowRef(new Map),t=vue.shallowRef(new Map),r=vue.shallowRef(new Map),n=vue.shallowRef(new Map),a=vue.shallowRef(new Map),o=vue.shallowRef(new Map);function u(i){let l=t.value.get(i);if(l)return l;{let x=vue.ref({});return t.value.set(i,x),x}}function S(i){let l=r.value.get(i);if(l)return l;{let x=vue.ref([]);return r.value.set(i,x),x}}function E(i,l,x){o.value.set(`${i}-${l}`,x);}function h(i,l){return o.value.get(`${i}-${l}`)}function g(i,l){i&&l!=null&&o.value.delete(`${i}-${l}`);}function m(i,l){n.value.set(i,l);}function d(i){return n.value.get(i)??!1}function f(i,l){e.value.set(i,l);}function c(i,l){let x=e.value.get(i);return x?I(l,x)?{valid:!0}:{valid:!1}:void 0}function I(i,l){let x=Object.keys(l),j=Object.keys(i);return j.length!==x.length||!j.every(w=>x.includes(w))?!1:j.every(w=>{let b=i[w],O=l[w];return !O||!b||typeof b=="function"||typeof O=="function"||typeof b=="number"||typeof b=="boolean"?!1:b._params?b._params?.every((A,N)=>{if(typeof O=="number"||typeof O=="boolean")return !0;{let V=L(O._params),q=L(b._params);return V?.[N]===q?.[N]}}):!0})}function C(i){let l=a.value.get(i);if(l)return l;{let x=vue.ref(!1),j=vue.ref(!0),G=vue.ref({}),w=vue.ref(!1);return a.value.set(i,{$pending:x,$valid:j,$metadata:G,$validating:w}),{$pending:x,$valid:j,$metadata:G,$validating:w}}}return vue.onScopeDispose(()=>{e.value.clear(),t.value.clear(),r.value.clear(),n.value.clear(),a.value.clear(),o.value.clear();}),{addRuleDeclEntry:f,setDirtyEntry:m,checkRuleDeclEntry:c,getDirtyState:d,trySetRuleStatusRef:C,getFieldsEntry:u,getCollectionsEntry:S,getArrayStatus:h,addArrayStatus:E,deleteArrayStatus:g,arrayStatusStorage:o}}function ot(e,t){return z(e.value)&&z(t.value)&&!Object.entries(t.value).some(r=>me(r))}function it(e,t){return !!e.value&&"$each"in e.value||Array.isArray(t.value)}function st(e){return !!e.value&&z(e.value)}function me(e){return z(e)&&"_validator"in e}function ve(e){return typeof e.value!="function"}function Ve(e){return z(e)&&"$fields"in e}function je(e){return "$each"in e||"$errors"in e}function _e({field:e,silent:t=!1}){return Object.entries(e.$rules??{}).map(([r,n])=>t||!n.$valid&&e.$dirty&&!n.$validating?n.$message:null).filter(r=>!!r).reduce((r,n)=>typeof n=="string"?r?.concat([n]):r?.concat(n),[]).concat(e.$externalErrors??[])}function ct({$dirty:e,customMessages:t,rule:r,ruleKey:n,state:a,path:o,storage:u,$debounce:S}){let E=vue.effectScope(),h,g,m=vue.ref(!1),{$pending:d,$valid:f,$metadata:c,$validating:I}=u.trySetRuleStatusRef(`${o}.${n}`);function C(){h=E.run(()=>{let b=vue.computed(()=>({$invalid:!f.value,$params:q.value,...c.value})),O=vue.computed(()=>ve(r)?typeof r.value.active=="function"?r.value.active(a.value,b.value):r.value.active:!0),A=vue.computed(()=>{let y="",v=t?t[n]?.message:void 0;return v&&(typeof v=="function"?y=v(a.value,b.value):y=v),ve(r)&&(v&&!r.value._patched||(typeof r.value.message=="function"?y=r.value.message(a.value,b.value):y=r.value.message)),ee(y)&&(y="Error",console.warn(`No error message defined for ${o}.${n}`)),y}),N=vue.computed(()=>ve(r)&&r.value.type?r.value.type:n),V=vue.computed(()=>ve(r)?r.value.validator:r.value),q=vue.computed(()=>typeof r.value=="function"?[]:L(r.value._params??[])),D=vue.computed(()=>`${o}.${N.value}`);return {$active:O,$message:A,$type:N,$validator:V,$params:q,$path:D}}),g=vue.watch(h.$params,j,{deep:!0});}C();function i(){f.value=!0,e.value&&(d.value=!0);}async function l(){let b=h.$validator.value,O=b(a.value,...h.$params.value),A=!1,N=a.value;try{i();let V;if(O instanceof Promise?V=await O:V=O,a.value!==N)return !0;if(typeof V=="boolean")A=V;else {let{$valid:q,...D}=V;A=q,c.value=D;}}catch{A=!1;}finally{d.value=!1;}return A}let x=ye(l,S??200);async function j(){I.value=!0;let b=!1;if(me(r.value)&&r.value._async)b=await x();else {let O=h.$validator.value,A=O(a.value,...h.$params.value);if(A instanceof Promise)console.warn('You used a async validator function on a non-async rule, please use "async await" or the "withAsync" helper');else if(A!=null)if(typeof A=="boolean")b=A;else {let{$valid:N,...V}=A;b=N,c.value=V;}}return f.value=b,I.value=!1,b}function G(){f.value=!0,c.value={},d.value=!1,I.value=!1,C();}function w(){g(),E.stop(),E=vue.effectScope();}return vue.reactive({...h,$pending:d,$valid:f,$metadata:c,_haveAsync:m,$validating:I,$validate:j,$unwatch:w,$watch:C,$reset:G})}function be({state:e,rulesDef:t,customMessages:r,path:n,fieldName:a,storage:o,options:u,externalErrors:S,onUnwatch:E,$isArray:h,initialState:g,shortcuts:m}){let d=vue.effectScope(),f,c=vue.ref(!1),I=vue.ref(!1),C=vue.ref([]),i,l,x,j,G,w=()=>{};function b(){C.value=S.value??[];}b();function O(){let _=t.value,W=o.checkRuleDeclEntry(n,_);y.value=Object.fromEntries(Object.entries(_).filter(([H])=>H.startsWith("$"))),D.value=Object.fromEntries(Object.entries(t.value).filter(([H])=>!H.startsWith("$")).map(([H,X])=>{if(X){let De=vue.toRef(()=>X);return [H,ct({$dirty:c,customMessages:r,rule:De,ruleKey:H,state:e,path:n,storage:o,$debounce:y.value.$debounce})]}return []}).filter(H=>!!H.length)),V(),A(),W?.valid!=null&&(c.value=o.getDirtyState(n),c.value&&w()),o.addRuleDeclEntry(n,_);}function A(){w=f.$debounce.value?ye(q,f.$debounce.value??f.haveAnyAsyncRule?100:0):q;}function N(){D.value&&Object.entries(D.value).forEach(([_,W])=>{W.$unwatch();}),j(),c.value&&o.setDirtyEntry(n,c.value),i(),l(),x(),d.stop(),d=vue.effectScope(),E?.(),G?.();}function V(){D.value&&Object.entries(D.value).forEach(([_,W])=>{W.$watch();}),f=d.run(()=>{let _=vue.computed(()=>c.value),W=vue.computed(()=>y.value.$debounce),H=vue.computed(()=>y.value.$lazy!=null?y.value.$lazy:vue.unref(u.lazy)),X=vue.computed(()=>y.value.$rewardEarly!=null?y.value.$rewardEarly:vue.unref(u.rewardEarly)),De=vue.computed(()=>y.value.$autoDirty!=null?y.value.$autoDirty:vue.unref(u.autoDirty)),vt=vue.computed(()=>Object.entries(D.value).some(([te,Q])=>Q.$validating)),Ce=vue.computed(()=>pe.value&&!Ee.value&&c.value),Le=vue.computed(()=>Ce.value?_e({field:{$dirty:c.value,$externalErrors:C.value,$rules:D.value}}):[]),ze=vue.computed(()=>_e({field:{$dirty:c.value,$externalErrors:C.value,$rules:D.value},silent:!0})),Je=vue.computed(()=>!(pe.value||Ee.value)),Ee=vue.computed(()=>I.value||!X.value?Object.entries(D.value).some(([te,Q])=>Q.$pending):!1),pe=vue.computed(()=>C.value?.length?!0:!X.value||X.value&&I.value?Object.entries(D.value).some(([te,Q])=>!Q.$valid):!1),Ye=vue.computed(()=>a),Ie=vue.computed(()=>ee(D.value)?!0:c.value&&!ee(e.value)&&!vt.value?C.value?.length?!1:X.value?Object.entries(D.value).every(([te,Q])=>Q.$valid):!pe.value:!1),gt=vue.computed(()=>Object.entries(D.value).some(([te,Q])=>Q._haveAsync));function $t(){m?.fields&&Object.entries(m.fields).forEach(([te,Q])=>{let St=vue.effectScope();Qe[te]=St.run(()=>{let Xe=vue.ref();return vue.watchEffect(()=>{Xe.value=Q({$dirty:c.value,$externalErrors:C.value,$value:e,$rules:D.value,$error:Ce.value,$pending:Ee.value,$invalid:pe.value,$valid:Ie.value,$errors:Le.value,$ready:Je.value,$silentErrors:ze.value,$anyDirty:_.value,$name:Ye.value});}),Xe});});}let Qe={};return $t(),vue.watch(Ie,te=>{te&&(I.value=!1);}),{$error:Ce,$pending:Ee,$invalid:pe,$valid:Ie,$debounce:W,$lazy:H,$errors:Le,$ready:Je,$silentErrors:ze,$rewardEarly:X,$autoDirty:De,$anyDirty:_,$name:Ye,haveAnyAsyncRule:gt,$shortcuts:Qe}}),x=vue.watch(S,b),i=vue.watch(e,()=>{f.$autoDirty.value&&(c.value||(c.value=!0)),t.value instanceof Function&&O(),w(),f.$rewardEarly.value;},{deep:h?!0:se?1:!0}),j=vue.watch(c,()=>{o.setDirtyEntry(n,c.value);}),l=vue.watch(f.$valid,_=>{f.$rewardEarly.value&&_&&(I.value=!1);}),G=vue.watch(f.haveAnyAsyncRule,A);}function q(){Object.entries(D.value).forEach(([_,W])=>{W.$validate();});}let D=vue.ref(),y=vue.ref();O();function v(){c.value=!1,C.value=[],Object.entries(D.value).forEach(([_,W])=>{W.$reset();}),f.$lazy.value||Object.entries(D.value).map(([_,W])=>W.$validate());}function R(){c.value||(c.value=!0,f.$rewardEarly.value,w());}let p=f.$debounce.value?ye($,f.$debounce.value??0):$;async function $(){try{if(I.value=!0,f.$autoDirty.value&&c.value&&!f.$pending.value)return !f.$error.value;{let _=Object.entries(D.value).map(([H,X])=>X.$validate());return (await Promise.allSettled(_)).every(H=>H.status==="fulfilled"?H.value:!1)}}catch{return !1}}function s(){N(),e.value=at(e,g),v();}function T(_=!0){return c.value?e.value:null}function P(){C.value=[];}f.$lazy.value||$();let{$anyDirty:k,$error:Y,$errors:oe,$invalid:ne,$name:U,$pending:M,$ready:F,$silentErrors:ie,$valid:xe,$shortcuts:he}=f;return vue.reactive({$dirty:c,$error:Y,$errors:oe,$valid:xe,$invalid:ne,$pending:M,$silentErrors:ie,$anyDirty:k,$ready:F,$name:U,$externalErrors:C,$value:e,$rules:D,...he,$reset:v,$touch:R,$validate:p,$unwatch:N,$watch:V,$resetAll:s,$extractDirtyFields:T,$clearExternalErrors:P})}function ft({$id:e,path:t,index:r,options:n,storage:a,stateValue:o,customMessages:u,rules:S,externalErrors:E,initialState:h,shortcuts:g,fieldName:m}){let d=S.$key?S.$key:Fe(),f=`${t}.${String(d)}`;typeof o.value=="object"&&o.value!=null&&(o.value.$id?f=`${t}.${o.value.$id}`:Object.defineProperties(o.value,{$id:{value:d,enumerable:!1,configurable:!1,writable:!1}}));let c=vue.toRef(()=>E.value?.[r]),I=Se({state:o,rulesDef:vue.toRef(()=>S),customMessages:u,path:f,storage:a,options:n,externalErrors:c,initialState:h?.[r],shortcuts:g,fieldName:m});if(I){let C=o.value?.$id;I.$id=C??String(d),a.addArrayStatus(e,I.$id,I);}return I}function Rt({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:o,externalErrors:u,initialState:S,shortcuts:E,fieldName:h}){let g=vue.effectScope(),m,d=vue.effectScope(),f;if(!Array.isArray(e.value)&&!t.value.$each)return null;let c=vue.ref(),I=vue.ref(e.value),C,i=vue.ref({}),l=a.getCollectionsEntry(n);f=d.run(()=>{let R=vue.computed(()=>Array.isArray(e.value)&&e.value.length?e.value.some(s=>typeof s!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(s=>me(s)):!1),p=vue.computed(()=>u.value?je(u.value)?u.value.$errors??[]:[]:[]),$=vue.computed(()=>u.value?je(u.value)?u.value.$each??[]:[]:[]);return {isPrimitiveArray:R,$externalErrorsField:p,$externalErrorsEach:$}}),x(),G();function x(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?(c.value=Fe(),Object.defineProperties(e.value,{$id:{value:c.value,enumerable:!1,configurable:!1,writable:!1}})):e.value?.$id&&(c.value=e.value.$id)),!f.isPrimitiveArray.value&&(I.value=i.value.$value,Array.isArray(e.value)?l.value=e.value.map((R,p)=>{let $=Ae(t.value.$each,vue.toRef(()=>R),p),s=ft({$id:c.value,path:n,rules:$??{},stateValue:vue.toRef(()=>R),index:p,options:o,storage:a,externalErrors:f.$externalErrorsEach,initialState:S[p],shortcuts:E,fieldName:h});return s||null}).filter(R=>!!R):l.value=[],i.value=be({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:o,externalErrors:f.$externalErrorsField,$isArray:!0,initialState:S,shortcuts:E,fieldName:h}));}function j(){if(Array.isArray(e.value)){let R=re(l.value);l.value=e.value.map((p,$)=>{let s=vue.toRef(()=>p);if(p.$id&&l.value.find(T=>T.$id===p.$id)){let T=a.getArrayStatus(c.value,p.$id);return T?(T.$value=s,T):null}else {let T=Ae(t.value.$each,s,$);if(T){let P=ft({$id:c.value,path:n,rules:T,stateValue:s,index:$,options:o,storage:a,externalErrors:f.$externalErrorsEach,initialState:S[$],shortcuts:E,fieldName:h});return P||null}}}).filter(p=>!!p),R.filter(p=>!e.value.find($=>p.$id===$.$id)).forEach((p,$)=>{a.deleteArrayStatus(c.value,$.toString());});}else l.value=[];}function G(){C=vue.watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?x():j();},{deep:se?1:!0,flush:"pre"}),m=g.run(()=>{let R=vue.computed(()=>i.value.$dirty&&l.value.every(F=>F.$dirty)),p=vue.computed(()=>i.value.$anyDirty||l.value.some(F=>F.$dirty)),$=vue.computed(()=>i.value.$invalid||l.value.some(F=>F.$invalid)),s=vue.computed(()=>i.value.$valid&&l.value.every(F=>F.$valid)),T=vue.computed(()=>i.value.$error||l.value.some(F=>F.$error)),P=vue.computed(()=>!($.value||k.value)),k=vue.computed(()=>i.value.$pending||l.value.some(F=>F.$pending)),Y=vue.computed(()=>({$errors:i.value.$errors,$each:l.value.map(F=>F.$errors)})),oe=vue.computed(()=>({$errors:i.value.$silentErrors,$each:l.value.map(F=>F.$silentErrors)})),ne=vue.computed(()=>h);function U(){E?.collections&&Object.entries(E?.collections).forEach(([F,ie])=>{let xe=vue.effectScope();M[F]=xe.run(()=>{let he=vue.ref();return vue.watchEffect(()=>{he.value=ie({$dirty:R.value,$error:T.value,$pending:k.value,$invalid:$.value,$valid:s.value,$errors:Y.value,$ready:P.value,$silentErrors:oe.value,$anyDirty:p.value,$name:ne.value,$each:l.value,$field:i.value,$value:e});}),he});});}let M={};return U(),{$dirty:R,$anyDirty:p,$invalid:$,$valid:s,$error:T,$pending:k,$errors:Y,$silentErrors:oe,$ready:P,$name:ne,$shortcuts:M}}),f.isPrimitiveArray.value&&(console.warn(`${n} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`),C());}function w(){C&&C(),i.value&&i.value.$unwatch(),l.value&&l.value.forEach(R=>{"$dirty"in R&&R.$unwatch();}),g.stop(),g=vue.effectScope(),d.stop(),d=vue.effectScope(!0);}function b(){i.value.$touch(),l.value.forEach(R=>{R.$touch();});}function O(){i.value.$reset(),l.value.forEach(R=>{R.$reset();});}async function A(){try{return (await Promise.all([i.value.$validate(),...l.value.map(p=>p.$validate())])).every(p=>!!p)}catch{return !1}}function N(){i.value.$clearExternalErrors(),l.value.forEach(R=>{R.$clearExternalErrors();});}function V(R=!0){let p=l.value.map($=>{if(Ve($))return $.$extractDirtyFields(R)});return R&&(p=p.filter($=>z($)?!ee($):!!$)),p}function q(){console.log(S),w(),lt(e,S),O();}async function D(){return b(),await A()?e.value:!1}let{$shortcuts:y,...v}=m;return vue.reactive({$field:i,...v,...y,$each:l,$value:e,$validate:A,$unwatch:w,$watch:G,$touch:b,$reset:O,$resetAll:q,$extractDirtyFields:V,$parse:D,$clearExternalErrors:N})}function ke({scopeRules:e,state:t,customMessages:r,path:n="",rootRules:a,storage:o,options:u,externalErrors:S,validationGroups:E,initialState:h,shortcuts:g,fieldName:m}){let d,f,c=null;function i(y=!0){l.value=null,vue.triggerRef(l);let v=Object.fromEntries(Object.entries(e.value).map(([s,T])=>{if(T){let P=vue.toRef(t.value,s),k=vue.toRef(()=>T),Y=vue.toRef(()=>S.value?.[s]);return [s,Se({state:P,rulesDef:k,customMessages:r,path:n?`${n}.${s}`:s,storage:o,options:u,externalErrors:Y,initialState:h?.[s],shortcuts:g,fieldName:s})]}return []}).filter(s=>!!s.length&&s[1]!=null)),R=Object.fromEntries(Object.entries(vue.unref(S)??{}).filter(([s])=>!(s in e.value)).map(([s,T])=>{if(T){let P=vue.toRef(t.value,s),k=vue.toRef(()=>({})),Y=vue.toRef(()=>T);return [s,Se({state:P,rulesDef:k,customMessages:r,path:n?`${n}.${s}`:s,storage:o,options:u,externalErrors:Y,initialState:h?.[s],shortcuts:g,fieldName:s})]}return []})),p=Object.fromEntries(Object.entries(t.value).filter(([s])=>!(s in e.value)&&!(s in(R.value??{}))).map(([s,T])=>{let P=vue.toRef(t.value,s),k=vue.toRef(()=>({}));return [s,Se({state:P,rulesDef:k,customMessages:r,path:n?`${n}.${s}`:s,storage:o,options:u,externalErrors:vue.ref(),initialState:h?.[s],shortcuts:g,fieldName:s})]})),$=Object.fromEntries(Object.entries(E?.(v)??{}).map(([s,T])=>T.length?[s,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$valid"].map(P=>[P,Ke(vue.toRef(()=>T),P)])),...Object.fromEntries(["$errors","$silentErrors"].map(P=>[P,et(vue.toRef(()=>T),P)]))}]:[]));l.value={...v,...R,...p,...$},y&&w();}let l=o.getFieldsEntry(n);i();function x(){i(!1),Object.entries(l.value).forEach(([y,v])=>{v.$reset();}),w();}function j(){Object.entries(l.value).forEach(([y,v])=>{v.$touch();});}async function G(){try{return (await Promise.allSettled(Object.entries(l.value).map(([v,R])=>R.$validate()))).every(v=>v.status==="fulfilled"?v.value:!1)}catch{return !1}}function w(){a&&(c=vue.watch(a,()=>{b(),i();},{deep:se?1:!0,flush:"post"})),d=vue.effectScope(),f=d.run(()=>{let y=vue.computed(()=>!!Object.entries(l.value).length&&Object.entries(l.value).every(([U,M])=>M?.$dirty)),v=vue.computed(()=>Object.entries(l.value).some(([U,M])=>M?.$dirty)),R=vue.computed(()=>Object.entries(l.value).some(([U,M])=>M?.$invalid)),p=vue.computed(()=>Object.entries(l.value).every(([U,M])=>M?.$valid)),$=vue.computed(()=>y.value&&!T.value&&R.value),s=vue.computed(()=>!(R.value||T.value)),T=vue.computed(()=>Object.entries(l.value).some(([U,M])=>M?.$pending)),P=vue.computed(()=>Object.fromEntries(Object.entries(l.value).map(([U,M])=>[U,M?.$errors]))),k=vue.computed(()=>Object.fromEntries(Object.entries(l.value).map(([U,M])=>[U,M?.$silentErrors]))),Y=vue.computed(()=>m);function oe(){g?.nested&&Object.entries(g.nested).forEach(([U,M])=>{let F=vue.effectScope();ne[U]=F.run(()=>{let ie=vue.ref();return vue.watchEffect(()=>{ie.value=M({$dirty:y.value,$value:t,$error:$.value,$pending:T.value,$invalid:R.value,$valid:p.value,$ready:s.value,$anyDirty:v.value,$name:Y.value,$silentErrors:k.value,$errors:P.value,$fields:l.value});}),ie});});}let ne={};return oe(),{$dirty:y,$anyDirty:v,$invalid:R,$valid:p,$error:$,$pending:T,$errors:P,$silentErrors:k,$ready:s,$name:Y,$shortcuts:ne}});}function b(){l.value&&Object.entries(l.value).forEach(([y,v])=>{v.$unwatch();}),c?.(),d.stop(),d=vue.effectScope();}function O(){Object.entries(l.value).forEach(([y,v])=>{v.$clearExternalErrors();});}function A(){b(),de(t,h??{}),x();}function N(y=!0){let v=Object.entries(l.value).map(([R,p])=>[R,p.$extractDirtyFields(y)]);return y&&(v=v.filter(([R,p])=>z(p)?!ee(p):Array.isArray(p)?p.length:!!p)),Object.fromEntries(v)}async function V(){return j(),await G()?t.value:!1}let{$shortcuts:q,...D}=f;return vue.reactive({...D,...q,$fields:l,$value:t,$resetAll:A,$reset:x,$touch:j,$validate:G,$unwatch:b,$watch:w,$clearExternalErrors:O,$extractDirtyFields:N,$parse:V})}function Se({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:o,externalErrors:u,index:S,initialState:E,shortcuts:h,onUnwatch:g,fieldName:m}){return it(t,e)?Rt({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:o,index:S,externalErrors:u,initialState:E,fieldName:m,shortcuts:h}):ot(e,t)&&nt(e)?ke({scopeRules:t,state:e,customMessages:r,path:n,storage:a,options:o,index:S,initialState:E,shortcuts:h,fieldName:m,externalErrors:u}):st(t)?be({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:o,index:S,externalErrors:u,onUnwatch:g,shortcuts:h,initialState:E,fieldName:m}):null}function Ue({initialState:e,options:t,scopeRules:r,state:n,customRules:a,shortcuts:o}){let u=Me(),S=vue.computed(()=>vue.unref(t.externalErrors));return vue.reactive(ke({rootRules:r,scopeRules:r,state:n,customMessages:a?.(),storage:u,options:t,externalErrors:S,validationGroups:t.validationGroups,initialState:e,shortcuts:o,fieldName:"root"}))}function We(e,t,r){let n={autoDirty:t?.autoDirty??!0,lazy:t?.lazy??!1,rewardEarly:t?.rewardEarly??!1};function a(o,u,S){let E=vue.isRef(u)?u:vue.computed(typeof u=="function"?u:()=>u),h={...n,...S},g=vue.isRef(o)?o:vue.ref(o),m=re(vue.toRaw(g.value));return {r$:Ue({scopeRules:E,state:g,options:h,initialState:m,customRules:e,shortcuts:r})}}return a}var yt=We();function He(){function e(t,r){return r}return e}var qe=He();function mt({rules:e,modifiers:t,shortcuts:r}){let n=We(e,t,r),a=He();return {useRegle:n,inferRules:a}}exports.InternalRuleType=Pe;exports.createRule=Oe;exports.defineRegleConfig=mt;exports.inferRules=qe;exports.unwrapRuleParameters=L;exports.useRegle=yt;
package/dist/index.d.cts CHANGED
@@ -72,6 +72,23 @@ Unfortunately, `Record<string, never>`, `Record<keyof any, never>` and `Record<n
72
72
  */
73
73
  type EmptyObject = {[emptyObjectSymbol]?: never};
74
74
 
75
+ /**
76
+ Returns a `boolean` for whether the type is strictly equal to an empty plain object, the `{}` value.
77
+
78
+ @example
79
+ ```
80
+ import type {IsEmptyObject} from 'type-fest';
81
+
82
+ type Pass = IsEmptyObject<{}>; //=> true
83
+ type Fail = IsEmptyObject<[]>; //=> false
84
+ type Fail = IsEmptyObject<null>; //=> false
85
+ ```
86
+
87
+ @see EmptyObject
88
+ @category Object
89
+ */
90
+ type IsEmptyObject<T> = T extends EmptyObject ? true : false;
91
+
75
92
  /**
76
93
  Matches any primitive, `void`, `Date`, or `RegExp` value.
77
94
  */
@@ -266,7 +283,7 @@ interface RegleBehaviourOptions {
266
283
  */
267
284
  rewardEarly?: boolean;
268
285
  }
269
- interface LocalRegleBehaviourOptions<TState extends Record<string, any>, TRules extends ReglePartialValidationTree<TState, CustomRulesDeclarationTree>, TExternal extends RegleExternalErrorTree<TState>, TValidationGroups extends Record<string, RegleValidationGroupEntry[]>> {
286
+ interface LocalRegleBehaviourOptions<TState extends Record<string, any>, TRules extends ReglePartialValidationTree<TState, CustomRulesDeclarationTree>, TExternal extends RegleExternalErrorTree<TState> = {}, TValidationGroups extends Record<string, RegleValidationGroupEntry[]> = {}> {
270
287
  externalErrors?: MaybeRef<TExternal>;
271
288
  validationGroups?: (fields: RegleStatus<TState, TRules>['$fields']) => TValidationGroups;
272
289
  }
@@ -295,7 +312,7 @@ type AddDollarToOptions<T extends Record<string, any>> = {
295
312
  [K in keyof T as `$${string & K}`]: T[K];
296
313
  };
297
314
 
298
- interface Regle<TState extends Record<string, any> = EmptyObject, TRules extends ReglePartialValidationTree<TState, CustomRulesDeclarationTree> = EmptyObject, TExternal extends RegleExternalErrorTree<TState> = never, TValidationGroups extends Record<string, RegleValidationGroupEntry[]> = never, TShortcuts extends RegleShortcutDefinition = never> {
315
+ interface Regle<TState extends Record<string, any> = EmptyObject, TRules extends ReglePartialValidationTree<TState, CustomRulesDeclarationTree> = EmptyObject, TExternal extends RegleExternalErrorTree<TState> = {}, TValidationGroups extends Record<string, RegleValidationGroupEntry[]> = {}, TShortcuts extends RegleShortcutDefinition = {}> {
299
316
  r$: RegleRoot<TState, TRules, TValidationGroups, TExternal, TShortcuts>;
300
317
  }
301
318
  type isDeepExact<T, U> = {
@@ -567,32 +584,32 @@ type InlineRuleDeclaration<TValue extends any = any, TParams extends any[] = any
567
584
  * */
568
585
  type FormRuleDeclaration<TValue extends any, TParams extends any[], TReturn extends RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition> = RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition>, TMetadata extends RegleRuleMetadataDefinition = TReturn extends Promise<infer M> ? M : TReturn, TAsync extends boolean = boolean> = InlineRuleDeclaration<TValue, TParams, TReturn> | RegleRuleDefinition<TValue, TParams, TAsync, TMetadata>;
569
586
 
570
- type RegleErrorTree<TRules extends ReglePartialValidationTree<any, any>, TExternal extends RegleExternalErrorTree<Record<string, unknown>> = never> = {
571
- readonly [K in keyof TRules]: RegleValidationErrors<TRules[K], K extends keyof TExternal ? TExternal[K] : never>;
587
+ type RegleErrorTree<TRules extends ReglePartialValidationTree<any, any>, TExternal extends RegleExternalErrorTree<Record<string, unknown>> | undefined = {}> = {
588
+ readonly [K in keyof TRules]: RegleValidationErrors<TRules[K], K extends keyof NonNullable<TExternal> ? NonNullable<TExternal>[K] : {}>;
572
589
  } & {
573
- readonly [K in keyof NonPresentKeys<TRules, TExternal>]: RegleExternalValidationErrorsReport<TExternal[K]>;
590
+ readonly [K in keyof NonPresentKeys<TRules, NonNullable<TExternal>>]?: RegleExternalValidationErrorsReport<NonNullable<TExternal>[K]>;
574
591
  };
575
- type RegleValidationErrors<TRule extends RegleFormPropertyType<any, any> | undefined = never, TExternalError extends RegleExternalValidationErrors<any> | undefined = never> = TRule extends RegleCollectionRuleDefinition ? RegleCollectionErrors<ExtractFromGetter<TRule['$each']>, TExternalError extends RegleExternalCollectionErrors ? ArrayElement<TExternalError['$each']> : never> : TRule extends RegleRuleDecl<any, any> ? string[] : TRule extends ReglePartialValidationTree<any, any> ? RegleErrorTree<TRule, TExternalError extends RegleExternalErrorTree ? TExternalError : never> : string[];
576
- type RegleCollectionErrors<TRule extends RegleFormPropertyType<any, any> | undefined = never, TExternalError extends RegleExternalValidationErrors<any> | undefined = never> = {
592
+ type RegleValidationErrors<TRule extends RegleFormPropertyType<any, any> | undefined = {}, TExternalError extends RegleExternalValidationErrors<any> | undefined = {}> = TRule extends RegleCollectionRuleDefinition ? RegleCollectionErrors<ExtractFromGetter<TRule['$each']>, TExternalError extends RegleExternalCollectionErrors ? ArrayElement<TExternalError['$each']> : {}> : TRule extends RegleRuleDecl<any, any> ? string[] : TRule extends ReglePartialValidationTree<any, any> ? RegleErrorTree<TRule, TExternalError extends RegleExternalErrorTree ? TExternalError : {}> : string[];
593
+ type RegleCollectionErrors<TRule extends RegleFormPropertyType<any, any> | undefined = {}, TExternalError extends RegleExternalValidationErrors<any> | undefined = {}> = {
577
594
  readonly $errors: string[];
578
595
  readonly $each: RegleValidationErrors<TRule, TExternalError>[];
579
596
  };
580
- type RegleExternalErrorTree<TState extends Record<string, any> = Record<string, any>> = {
597
+ type RegleExternalErrorTree<TState extends Record<string, any> | undefined = Record<string, any>> = {
581
598
  [K in keyof TState]?: RegleExternalValidationErrors<TState[K]>;
582
599
  };
583
600
  type RegleExternalValidationErrors<TValue extends any> = [NonNullable<TValue>] extends [
584
601
  never
585
- ] ? string[] : TValue extends Array<infer U> ? RegleExternalCollectionErrors<U> : NonNullable<TValue> extends Date ? string[] : NonNullable<TValue> extends File ? string[] : TValue extends Record<string, any> ? RegleExternalErrorTree<TValue> : string[];
586
- type RegleExternalCollectionErrors<TValue extends any = any> = {
602
+ ] ? string[] : NonNullable<TValue> extends Array<infer U extends Record<string, any> | undefined> ? RegleExternalCollectionErrors<U> : NonNullable<TValue> extends Date ? string[] : NonNullable<TValue> extends File ? string[] : TValue extends Record<string, any> ? RegleExternalErrorTree<TValue> : string[];
603
+ type RegleExternalCollectionErrors<TValue extends Record<string, any> | undefined = Record<string, any>> = {
587
604
  $errors?: string[];
588
- $each?: RegleExternalValidationErrors<TValue>[];
605
+ $each?: RegleExternalErrorTree<TValue>[];
589
606
  };
590
- type RegleExternalValidationErrorsReport<TExternalError extends RegleExternalValidationErrors<any> | undefined = never> = TExternalError extends RegleExternalCollectionErrors ? RegleCollectionErrors<TExternalError['$each']> : TExternalError extends string[] ? string[] : TExternalError extends RegleExternalErrorTree<any> ? RegleErrorTree<TExternalError> : string[];
607
+ type RegleExternalValidationErrorsReport<TExternalError extends RegleExternalValidationErrors<any> | undefined = {}> = NonNullable<TExternalError> extends RegleExternalCollectionErrors ? TExternalError : NonNullable<TExternalError> extends string[] ? string[] : NonNullable<TExternalError> extends RegleExternalErrorTree<any> ? RegleExternalErrorTree<TExternalError> : string[];
591
608
 
592
609
  /**
593
610
  * @public
594
611
  */
595
- type RegleRoot<TState extends Record<string, any> = Record<string, any>, TRules extends ReglePartialValidationTree<TState> = Record<string, any>, TValidationGroups extends Record<string, RegleValidationGroupEntry[]> = never, TExternal extends RegleExternalErrorTree<TState> = never, TShortcuts extends RegleShortcutDefinition = never> = RegleStatus<TState, TRules, TExternal, TShortcuts> & {} & ([TValidationGroups] extends [never] ? {} : {
612
+ type RegleRoot<TState extends Record<string, any> = Record<string, any>, TRules extends ReglePartialValidationTree<TState> = Record<string, any>, TValidationGroups extends Record<string, RegleValidationGroupEntry[]> = never, TExternal extends RegleExternalErrorTree<any> = EmptyObject, TShortcuts extends RegleShortcutDefinition = {}> = RegleStatus<TState, TRules, TExternal, TShortcuts> & ([TValidationGroups] extends [never] ? {} : {
596
613
  $groups: {
597
614
  readonly [TKey in keyof TValidationGroups]: RegleValidationGroupOutput;
598
615
  };
@@ -600,10 +617,12 @@ type RegleRoot<TState extends Record<string, any> = Record<string, any>, TRules
600
617
  /**
601
618
  * @public
602
619
  */
603
- type RegleStatus<TState extends Record<string, any> = Record<string, any>, TRules extends ReglePartialValidationTree<TState> = Record<string, any>, TExternal extends RegleExternalErrorTree<TState> = never, TShortcuts extends RegleShortcutDefinition = never> = RegleCommonStatus<TState> & {
620
+ type RegleStatus<TState extends Record<string, any> = Record<string, any>, TRules extends ReglePartialValidationTree<TState> = Record<string, any>, TExternal extends RegleExternalErrorTree<any> | undefined = {}, TShortcuts extends RegleShortcutDefinition = {}> = RegleCommonStatus<TState> & {
604
621
  readonly $fields: {
605
- readonly [TKey in keyof TRules]: InferRegleStatusType<NonNullable<TRules[TKey]>, TState, TKey, TShortcuts>;
606
- };
622
+ readonly [TKey in keyof TRules]: InferRegleStatusType<NonNullable<TRules[TKey]>, TState, TKey, TKey extends keyof NonNullable<TExternal> ? NonNullable<TExternal>[TKey] extends RegleExternalErrorTree<any> ? NonNullable<TExternal>[TKey] : {} : {}, TShortcuts>;
623
+ } & (IsEmptyObject<TExternal> extends true ? {} : {
624
+ readonly [TKey in keyof NonPresentKeys<TRules, NonNullable<TExternal>>]?: InferRegleStatusType<ReglePartialValidationTree<TKey extends keyof TState ? TState[TKey] : {}>, TState, TKey, TKey extends keyof NonNullable<TExternal> ? NonNullable<TExternal>[TKey] extends RegleExternalErrorTree<any> ? NonNullable<TExternal>[TKey] : {} : {}, TShortcuts>;
625
+ });
607
626
  readonly $errors: RegleErrorTree<TRules, TExternal>;
608
627
  readonly $silentErrors: RegleErrorTree<TRules, TExternal>;
609
628
  $extractDirtyFields: (filterNullishValues?: boolean) => PartialDeep<TState>;
@@ -614,7 +633,7 @@ type RegleStatus<TState extends Record<string, any> = Record<string, any>, TRule
614
633
  /**
615
634
  * @public
616
635
  */
617
- type InferRegleStatusType<TRule extends RegleCollectionRuleDecl | RegleRuleDecl | ReglePartialValidationTree<any>, TState extends Record<PropertyKey, any> = any, TKey extends PropertyKey = string, TShortcuts extends RegleShortcutDefinition = never> = TRule extends RegleCollectionRuleDefinition<any, any> ? NonNullable<TState[TKey]> extends Array<Record<string, any> | any> ? ExtractFromGetter<TRule['$each']> extends RegleRuleDecl | ReglePartialValidationTree<any> ? RegleCollectionStatus<TState[TKey], ExtractFromGetter<TRule['$each']>, TRule, TShortcuts> : never : RegleFieldStatus<TState[TKey], TRule, TShortcuts> : TRule extends ReglePartialValidationTree<any> ? NonNullable<TState[TKey]> extends Array<any> ? RegleCommonStatus<TState[TKey]> : NonNullable<TState[TKey]> extends Record<PropertyKey, any> ? RegleStatus<TState[TKey], TRule, never, TShortcuts> : RegleFieldStatus<TState[TKey], TRule, TShortcuts> : RegleFieldStatus<TState[TKey], TRule, TShortcuts>;
636
+ type InferRegleStatusType<TRule extends RegleCollectionRuleDecl | RegleRuleDecl | ReglePartialValidationTree<any>, TState extends Record<PropertyKey, any> = any, TKey extends PropertyKey = string, TExternal extends RegleExternalErrorTree<any> | undefined = {}, TShortcuts extends RegleShortcutDefinition = {}> = NonNullable<TState[TKey]> extends Array<Record<string, any> | any> ? TRule extends RegleCollectionRuleDefinition<any, any> ? ExtractFromGetter<TRule['$each']> extends RegleRuleDecl | ReglePartialValidationTree<any> ? RegleCollectionStatus<TState[TKey], ExtractFromGetter<TRule['$each']>, TRule, TExternal, TShortcuts> : RegleFieldStatus<TState[TKey], TRule, TShortcuts> : RegleCollectionStatus<TState[TKey], ReglePartialValidationTree<TState[TKey]>, TRule, TExternal, TShortcuts> : TRule extends ReglePartialValidationTree<any> ? NonNullable<TState[TKey]> extends Array<any> ? RegleCommonStatus<TState[TKey]> : NonNullable<TState[TKey]> extends Record<PropertyKey, any> ? RegleStatus<TState[TKey], TRule, TExternal, TShortcuts> : RegleFieldStatus<TState[TKey], TRule, TShortcuts> : NonNullable<TState[TKey]> extends Record<PropertyKey, any> ? RegleStatus<TState[TKey], ReglePartialValidationTree<TState[TKey]>, TExternal, TShortcuts> : RegleFieldStatus<TState[TKey], TRule, TShortcuts>;
618
637
  /**
619
638
  * @public
620
639
  */
@@ -674,12 +693,12 @@ type RegleRuleStatus<TValue = any, TParams extends any[] = any[], TMetadata exte
674
693
  /**
675
694
  * @public
676
695
  */
677
- type RegleCollectionStatus<TState extends any[] = any[], TRules extends ReglePartialValidationTree<Record<string, any>> = Record<string, any>, TFieldRule extends RegleCollectionRuleDecl<any, any> = never, TShortcuts extends RegleShortcutDefinition = never> = Omit<RegleFieldStatus<TState, TRules, TShortcuts>, '$errors' | '$silentErrors' | '$extractDirtyFields' | '$externalErrors' | '$rules' | '$value'> & {
696
+ type RegleCollectionStatus<TState extends any[] = any[], TRules extends ReglePartialValidationTree<Record<string, any>> = Record<string, any>, TFieldRule extends RegleCollectionRuleDecl<any, any> = never, TExternal extends RegleExternalErrorTree<any> | undefined = {}, TShortcuts extends RegleShortcutDefinition = {}> = Omit<RegleFieldStatus<TState, TRules, TShortcuts>, '$errors' | '$silentErrors' | '$extractDirtyFields' | '$externalErrors' | '$rules' | '$value'> & {
678
697
  $value: Maybe<TState>;
679
- readonly $each: Array<InferRegleStatusType<NonNullable<TRules>, NonNullable<TState>, number, TShortcuts>>;
698
+ readonly $each: Array<InferRegleStatusType<NonNullable<TRules>, NonNullable<TState>, number, NonNullable<TExternal> extends RegleExternalCollectionErrors ? NonNullable<NonNullable<TExternal>['$each']> extends Array<any> ? ArrayElement<NonNullable<NonNullable<TExternal>['$each']>> : {} : {}, TShortcuts>>;
680
699
  readonly $field: RegleFieldStatus<TState, TFieldRule, TShortcuts>;
681
- readonly $errors: RegleErrorTree<TRules>;
682
- readonly $silentErrors: RegleErrorTree<TRules>;
700
+ readonly $errors: RegleErrorTree<TRules, TExternal>;
701
+ readonly $silentErrors: RegleErrorTree<TRules, TExternal>;
683
702
  $extractDirtyFields: (filterNullishValues?: boolean) => PartialDeep<TState>;
684
703
  $parse: () => Promise<false | SafeProperty<TState, TRules>>;
685
704
  } & ([TShortcuts['collections']] extends [never] ? {} : {
package/dist/index.d.ts CHANGED
@@ -72,6 +72,23 @@ Unfortunately, `Record<string, never>`, `Record<keyof any, never>` and `Record<n
72
72
  */
73
73
  type EmptyObject = {[emptyObjectSymbol]?: never};
74
74
 
75
+ /**
76
+ Returns a `boolean` for whether the type is strictly equal to an empty plain object, the `{}` value.
77
+
78
+ @example
79
+ ```
80
+ import type {IsEmptyObject} from 'type-fest';
81
+
82
+ type Pass = IsEmptyObject<{}>; //=> true
83
+ type Fail = IsEmptyObject<[]>; //=> false
84
+ type Fail = IsEmptyObject<null>; //=> false
85
+ ```
86
+
87
+ @see EmptyObject
88
+ @category Object
89
+ */
90
+ type IsEmptyObject<T> = T extends EmptyObject ? true : false;
91
+
75
92
  /**
76
93
  Matches any primitive, `void`, `Date`, or `RegExp` value.
77
94
  */
@@ -266,7 +283,7 @@ interface RegleBehaviourOptions {
266
283
  */
267
284
  rewardEarly?: boolean;
268
285
  }
269
- interface LocalRegleBehaviourOptions<TState extends Record<string, any>, TRules extends ReglePartialValidationTree<TState, CustomRulesDeclarationTree>, TExternal extends RegleExternalErrorTree<TState>, TValidationGroups extends Record<string, RegleValidationGroupEntry[]>> {
286
+ interface LocalRegleBehaviourOptions<TState extends Record<string, any>, TRules extends ReglePartialValidationTree<TState, CustomRulesDeclarationTree>, TExternal extends RegleExternalErrorTree<TState> = {}, TValidationGroups extends Record<string, RegleValidationGroupEntry[]> = {}> {
270
287
  externalErrors?: MaybeRef<TExternal>;
271
288
  validationGroups?: (fields: RegleStatus<TState, TRules>['$fields']) => TValidationGroups;
272
289
  }
@@ -295,7 +312,7 @@ type AddDollarToOptions<T extends Record<string, any>> = {
295
312
  [K in keyof T as `$${string & K}`]: T[K];
296
313
  };
297
314
 
298
- interface Regle<TState extends Record<string, any> = EmptyObject, TRules extends ReglePartialValidationTree<TState, CustomRulesDeclarationTree> = EmptyObject, TExternal extends RegleExternalErrorTree<TState> = never, TValidationGroups extends Record<string, RegleValidationGroupEntry[]> = never, TShortcuts extends RegleShortcutDefinition = never> {
315
+ interface Regle<TState extends Record<string, any> = EmptyObject, TRules extends ReglePartialValidationTree<TState, CustomRulesDeclarationTree> = EmptyObject, TExternal extends RegleExternalErrorTree<TState> = {}, TValidationGroups extends Record<string, RegleValidationGroupEntry[]> = {}, TShortcuts extends RegleShortcutDefinition = {}> {
299
316
  r$: RegleRoot<TState, TRules, TValidationGroups, TExternal, TShortcuts>;
300
317
  }
301
318
  type isDeepExact<T, U> = {
@@ -567,32 +584,32 @@ type InlineRuleDeclaration<TValue extends any = any, TParams extends any[] = any
567
584
  * */
568
585
  type FormRuleDeclaration<TValue extends any, TParams extends any[], TReturn extends RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition> = RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition>, TMetadata extends RegleRuleMetadataDefinition = TReturn extends Promise<infer M> ? M : TReturn, TAsync extends boolean = boolean> = InlineRuleDeclaration<TValue, TParams, TReturn> | RegleRuleDefinition<TValue, TParams, TAsync, TMetadata>;
569
586
 
570
- type RegleErrorTree<TRules extends ReglePartialValidationTree<any, any>, TExternal extends RegleExternalErrorTree<Record<string, unknown>> = never> = {
571
- readonly [K in keyof TRules]: RegleValidationErrors<TRules[K], K extends keyof TExternal ? TExternal[K] : never>;
587
+ type RegleErrorTree<TRules extends ReglePartialValidationTree<any, any>, TExternal extends RegleExternalErrorTree<Record<string, unknown>> | undefined = {}> = {
588
+ readonly [K in keyof TRules]: RegleValidationErrors<TRules[K], K extends keyof NonNullable<TExternal> ? NonNullable<TExternal>[K] : {}>;
572
589
  } & {
573
- readonly [K in keyof NonPresentKeys<TRules, TExternal>]: RegleExternalValidationErrorsReport<TExternal[K]>;
590
+ readonly [K in keyof NonPresentKeys<TRules, NonNullable<TExternal>>]?: RegleExternalValidationErrorsReport<NonNullable<TExternal>[K]>;
574
591
  };
575
- type RegleValidationErrors<TRule extends RegleFormPropertyType<any, any> | undefined = never, TExternalError extends RegleExternalValidationErrors<any> | undefined = never> = TRule extends RegleCollectionRuleDefinition ? RegleCollectionErrors<ExtractFromGetter<TRule['$each']>, TExternalError extends RegleExternalCollectionErrors ? ArrayElement<TExternalError['$each']> : never> : TRule extends RegleRuleDecl<any, any> ? string[] : TRule extends ReglePartialValidationTree<any, any> ? RegleErrorTree<TRule, TExternalError extends RegleExternalErrorTree ? TExternalError : never> : string[];
576
- type RegleCollectionErrors<TRule extends RegleFormPropertyType<any, any> | undefined = never, TExternalError extends RegleExternalValidationErrors<any> | undefined = never> = {
592
+ type RegleValidationErrors<TRule extends RegleFormPropertyType<any, any> | undefined = {}, TExternalError extends RegleExternalValidationErrors<any> | undefined = {}> = TRule extends RegleCollectionRuleDefinition ? RegleCollectionErrors<ExtractFromGetter<TRule['$each']>, TExternalError extends RegleExternalCollectionErrors ? ArrayElement<TExternalError['$each']> : {}> : TRule extends RegleRuleDecl<any, any> ? string[] : TRule extends ReglePartialValidationTree<any, any> ? RegleErrorTree<TRule, TExternalError extends RegleExternalErrorTree ? TExternalError : {}> : string[];
593
+ type RegleCollectionErrors<TRule extends RegleFormPropertyType<any, any> | undefined = {}, TExternalError extends RegleExternalValidationErrors<any> | undefined = {}> = {
577
594
  readonly $errors: string[];
578
595
  readonly $each: RegleValidationErrors<TRule, TExternalError>[];
579
596
  };
580
- type RegleExternalErrorTree<TState extends Record<string, any> = Record<string, any>> = {
597
+ type RegleExternalErrorTree<TState extends Record<string, any> | undefined = Record<string, any>> = {
581
598
  [K in keyof TState]?: RegleExternalValidationErrors<TState[K]>;
582
599
  };
583
600
  type RegleExternalValidationErrors<TValue extends any> = [NonNullable<TValue>] extends [
584
601
  never
585
- ] ? string[] : TValue extends Array<infer U> ? RegleExternalCollectionErrors<U> : NonNullable<TValue> extends Date ? string[] : NonNullable<TValue> extends File ? string[] : TValue extends Record<string, any> ? RegleExternalErrorTree<TValue> : string[];
586
- type RegleExternalCollectionErrors<TValue extends any = any> = {
602
+ ] ? string[] : NonNullable<TValue> extends Array<infer U extends Record<string, any> | undefined> ? RegleExternalCollectionErrors<U> : NonNullable<TValue> extends Date ? string[] : NonNullable<TValue> extends File ? string[] : TValue extends Record<string, any> ? RegleExternalErrorTree<TValue> : string[];
603
+ type RegleExternalCollectionErrors<TValue extends Record<string, any> | undefined = Record<string, any>> = {
587
604
  $errors?: string[];
588
- $each?: RegleExternalValidationErrors<TValue>[];
605
+ $each?: RegleExternalErrorTree<TValue>[];
589
606
  };
590
- type RegleExternalValidationErrorsReport<TExternalError extends RegleExternalValidationErrors<any> | undefined = never> = TExternalError extends RegleExternalCollectionErrors ? RegleCollectionErrors<TExternalError['$each']> : TExternalError extends string[] ? string[] : TExternalError extends RegleExternalErrorTree<any> ? RegleErrorTree<TExternalError> : string[];
607
+ type RegleExternalValidationErrorsReport<TExternalError extends RegleExternalValidationErrors<any> | undefined = {}> = NonNullable<TExternalError> extends RegleExternalCollectionErrors ? TExternalError : NonNullable<TExternalError> extends string[] ? string[] : NonNullable<TExternalError> extends RegleExternalErrorTree<any> ? RegleExternalErrorTree<TExternalError> : string[];
591
608
 
592
609
  /**
593
610
  * @public
594
611
  */
595
- type RegleRoot<TState extends Record<string, any> = Record<string, any>, TRules extends ReglePartialValidationTree<TState> = Record<string, any>, TValidationGroups extends Record<string, RegleValidationGroupEntry[]> = never, TExternal extends RegleExternalErrorTree<TState> = never, TShortcuts extends RegleShortcutDefinition = never> = RegleStatus<TState, TRules, TExternal, TShortcuts> & {} & ([TValidationGroups] extends [never] ? {} : {
612
+ type RegleRoot<TState extends Record<string, any> = Record<string, any>, TRules extends ReglePartialValidationTree<TState> = Record<string, any>, TValidationGroups extends Record<string, RegleValidationGroupEntry[]> = never, TExternal extends RegleExternalErrorTree<any> = EmptyObject, TShortcuts extends RegleShortcutDefinition = {}> = RegleStatus<TState, TRules, TExternal, TShortcuts> & ([TValidationGroups] extends [never] ? {} : {
596
613
  $groups: {
597
614
  readonly [TKey in keyof TValidationGroups]: RegleValidationGroupOutput;
598
615
  };
@@ -600,10 +617,12 @@ type RegleRoot<TState extends Record<string, any> = Record<string, any>, TRules
600
617
  /**
601
618
  * @public
602
619
  */
603
- type RegleStatus<TState extends Record<string, any> = Record<string, any>, TRules extends ReglePartialValidationTree<TState> = Record<string, any>, TExternal extends RegleExternalErrorTree<TState> = never, TShortcuts extends RegleShortcutDefinition = never> = RegleCommonStatus<TState> & {
620
+ type RegleStatus<TState extends Record<string, any> = Record<string, any>, TRules extends ReglePartialValidationTree<TState> = Record<string, any>, TExternal extends RegleExternalErrorTree<any> | undefined = {}, TShortcuts extends RegleShortcutDefinition = {}> = RegleCommonStatus<TState> & {
604
621
  readonly $fields: {
605
- readonly [TKey in keyof TRules]: InferRegleStatusType<NonNullable<TRules[TKey]>, TState, TKey, TShortcuts>;
606
- };
622
+ readonly [TKey in keyof TRules]: InferRegleStatusType<NonNullable<TRules[TKey]>, TState, TKey, TKey extends keyof NonNullable<TExternal> ? NonNullable<TExternal>[TKey] extends RegleExternalErrorTree<any> ? NonNullable<TExternal>[TKey] : {} : {}, TShortcuts>;
623
+ } & (IsEmptyObject<TExternal> extends true ? {} : {
624
+ readonly [TKey in keyof NonPresentKeys<TRules, NonNullable<TExternal>>]?: InferRegleStatusType<ReglePartialValidationTree<TKey extends keyof TState ? TState[TKey] : {}>, TState, TKey, TKey extends keyof NonNullable<TExternal> ? NonNullable<TExternal>[TKey] extends RegleExternalErrorTree<any> ? NonNullable<TExternal>[TKey] : {} : {}, TShortcuts>;
625
+ });
607
626
  readonly $errors: RegleErrorTree<TRules, TExternal>;
608
627
  readonly $silentErrors: RegleErrorTree<TRules, TExternal>;
609
628
  $extractDirtyFields: (filterNullishValues?: boolean) => PartialDeep<TState>;
@@ -614,7 +633,7 @@ type RegleStatus<TState extends Record<string, any> = Record<string, any>, TRule
614
633
  /**
615
634
  * @public
616
635
  */
617
- type InferRegleStatusType<TRule extends RegleCollectionRuleDecl | RegleRuleDecl | ReglePartialValidationTree<any>, TState extends Record<PropertyKey, any> = any, TKey extends PropertyKey = string, TShortcuts extends RegleShortcutDefinition = never> = TRule extends RegleCollectionRuleDefinition<any, any> ? NonNullable<TState[TKey]> extends Array<Record<string, any> | any> ? ExtractFromGetter<TRule['$each']> extends RegleRuleDecl | ReglePartialValidationTree<any> ? RegleCollectionStatus<TState[TKey], ExtractFromGetter<TRule['$each']>, TRule, TShortcuts> : never : RegleFieldStatus<TState[TKey], TRule, TShortcuts> : TRule extends ReglePartialValidationTree<any> ? NonNullable<TState[TKey]> extends Array<any> ? RegleCommonStatus<TState[TKey]> : NonNullable<TState[TKey]> extends Record<PropertyKey, any> ? RegleStatus<TState[TKey], TRule, never, TShortcuts> : RegleFieldStatus<TState[TKey], TRule, TShortcuts> : RegleFieldStatus<TState[TKey], TRule, TShortcuts>;
636
+ type InferRegleStatusType<TRule extends RegleCollectionRuleDecl | RegleRuleDecl | ReglePartialValidationTree<any>, TState extends Record<PropertyKey, any> = any, TKey extends PropertyKey = string, TExternal extends RegleExternalErrorTree<any> | undefined = {}, TShortcuts extends RegleShortcutDefinition = {}> = NonNullable<TState[TKey]> extends Array<Record<string, any> | any> ? TRule extends RegleCollectionRuleDefinition<any, any> ? ExtractFromGetter<TRule['$each']> extends RegleRuleDecl | ReglePartialValidationTree<any> ? RegleCollectionStatus<TState[TKey], ExtractFromGetter<TRule['$each']>, TRule, TExternal, TShortcuts> : RegleFieldStatus<TState[TKey], TRule, TShortcuts> : RegleCollectionStatus<TState[TKey], ReglePartialValidationTree<TState[TKey]>, TRule, TExternal, TShortcuts> : TRule extends ReglePartialValidationTree<any> ? NonNullable<TState[TKey]> extends Array<any> ? RegleCommonStatus<TState[TKey]> : NonNullable<TState[TKey]> extends Record<PropertyKey, any> ? RegleStatus<TState[TKey], TRule, TExternal, TShortcuts> : RegleFieldStatus<TState[TKey], TRule, TShortcuts> : NonNullable<TState[TKey]> extends Record<PropertyKey, any> ? RegleStatus<TState[TKey], ReglePartialValidationTree<TState[TKey]>, TExternal, TShortcuts> : RegleFieldStatus<TState[TKey], TRule, TShortcuts>;
618
637
  /**
619
638
  * @public
620
639
  */
@@ -674,12 +693,12 @@ type RegleRuleStatus<TValue = any, TParams extends any[] = any[], TMetadata exte
674
693
  /**
675
694
  * @public
676
695
  */
677
- type RegleCollectionStatus<TState extends any[] = any[], TRules extends ReglePartialValidationTree<Record<string, any>> = Record<string, any>, TFieldRule extends RegleCollectionRuleDecl<any, any> = never, TShortcuts extends RegleShortcutDefinition = never> = Omit<RegleFieldStatus<TState, TRules, TShortcuts>, '$errors' | '$silentErrors' | '$extractDirtyFields' | '$externalErrors' | '$rules' | '$value'> & {
696
+ type RegleCollectionStatus<TState extends any[] = any[], TRules extends ReglePartialValidationTree<Record<string, any>> = Record<string, any>, TFieldRule extends RegleCollectionRuleDecl<any, any> = never, TExternal extends RegleExternalErrorTree<any> | undefined = {}, TShortcuts extends RegleShortcutDefinition = {}> = Omit<RegleFieldStatus<TState, TRules, TShortcuts>, '$errors' | '$silentErrors' | '$extractDirtyFields' | '$externalErrors' | '$rules' | '$value'> & {
678
697
  $value: Maybe<TState>;
679
- readonly $each: Array<InferRegleStatusType<NonNullable<TRules>, NonNullable<TState>, number, TShortcuts>>;
698
+ readonly $each: Array<InferRegleStatusType<NonNullable<TRules>, NonNullable<TState>, number, NonNullable<TExternal> extends RegleExternalCollectionErrors ? NonNullable<NonNullable<TExternal>['$each']> extends Array<any> ? ArrayElement<NonNullable<NonNullable<TExternal>['$each']>> : {} : {}, TShortcuts>>;
680
699
  readonly $field: RegleFieldStatus<TState, TFieldRule, TShortcuts>;
681
- readonly $errors: RegleErrorTree<TRules>;
682
- readonly $silentErrors: RegleErrorTree<TRules>;
700
+ readonly $errors: RegleErrorTree<TRules, TExternal>;
701
+ readonly $silentErrors: RegleErrorTree<TRules, TExternal>;
683
702
  $extractDirtyFields: (filterNullishValues?: boolean) => PartialDeep<TState>;
684
703
  $parse: () => Promise<false | SafeProperty<TState, TRules>>;
685
704
  } & ([TShortcuts['collections']] extends [never] ? {} : {
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import {unref,version,isRef,toRef,computed,ref,toRaw,reactive,shallowRef,onScopeDispose,triggerRef,watch,effectScope,watchEffect}from'vue';var Pe=(r=>(r.Inline="__inline",r.Async="__async",r))(Pe||{});function Ke(e,t){return computed(()=>e.value.some(r=>r[t]))}function et(e,t){return computed(()=>e.value.reduce((r,n)=>{let a=n[t]||[];return r.concat(a)},[]))}function q(e){return e.map(t=>t instanceof Function?t():unref(t))}function tt(e){return e.map(t=>t instanceof Function||isRef(t)?t:toRef(()=>t))}function rt(e){let t=e.toString();return (t.includes("=>")?t.split("=>")[0]:t).slice(t.indexOf("(")+1,t.indexOf(")")).split(",").map(o=>o.trim()).filter(o=>o.includes("=")).length+e.length}function we(e,...t){let{message:r,validator:n,active:a,type:o,...u}=e,v=o==="__async"||n.constructor.name==="AsyncFunction";return {...{validator(S,...m){return e.validator(S,...q(m.length?m:t))},message(S,m){return typeof e.message=="function"?e.message(S,{...m,$params:q(m.$params?.length?m.$params:t)}):e.message},active(S,m){return typeof e.active=="function"?e.active(S,{...m,$params:q(m.$params?.length?m.$params:t)}):e.active??!0},exec(S){let m=e.validator(S,...q(t)),d;return m instanceof Promise?m.then(f=>(d=f,typeof d=="object"&&"$valid"in d?d.$valid:typeof d=="boolean"?d:!1)):(d=m,typeof d=="object"&&"$valid"in d?d.$valid:typeof d=="boolean"?d:!1)}},...u,_validator:e.validator,_message:e.message,_active:e.active,_type:e.type,_patched:!1,_async:v,_params:tt(t)}}function Oe(e){if(typeof e.validator=="function"){let r=we(e,...[]),n=e.validator.constructor.name==="AsyncFunction";if(rt(e.validator)>1){let a=function(...o){return we(e,...o)};return a.validator=r.validator,a.message=r.message,a.active=r.active,a.type=r.type,a.exec=r.exec,a._validator=r.validator,a._message=r.message,a._active=r.active,a._type=e.type,a._patched=!1,a._async=n,a}else return r}throw new Error("Validator must be a function")}function L(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function nt(e){return L(e.value)}function K(e){let t=e,r={}.toString.call(e).slice(8,-1);if(r=="Set"&&(t=new Set([...e].map(n=>K(n)))),r=="Map"&&(t=new Map([...e].map(n=>[K(n[0]),K(n[1])]))),r=="Date"&&(t=new Date(e.getTime())),r=="RegExp"&&(t=RegExp(e.source,xt(e))),r=="Array"||r=="Object"){t=Array.isArray(e)?[]:{};for(let n in e)t[n]=K(e[n]);}return t}function xt(e){if(typeof e.source.flags=="string")return e.source.flags;{let t=[];return e.global&&t.push("g"),e.ignoreCase&&t.push("i"),e.multiline&&t.push("m"),e.sticky&&t.push("y"),e.unicode&&t.push("u"),t.join("")}}function Ae(e,t,r){return e instanceof Function?e(t,r??0):e}function at(e,t){isRef(e)?e.value=t:e=t;}function lt(e,t){isRef(e)?e.value=[]:e=[],t.forEach((r,n)=>{let a=isRef(e)?e.value[n]:e[n];a={},de(a,t[n]);});}function de(e,t){Object.entries({...unref(e),...t}).forEach(([r,n])=>{let a=isRef(e)?e.value:e,o=isRef(t[r])?t[r]._value:t[r],u=isRef(a[r])?a[r].value:a[r];Array.isArray(a[r])?(a[r]=[],Array.isArray(o)&&o.forEach((v,E)=>{a[r][E]={},de(a[r][E],o[E]);})):L(o)?de(u,o):isRef(a[r])?a[r].value=o:a[r]=o;});}function ee(e){return e==null?!0:e===!1?!1:e instanceof Date?isNaN(e.getTime()):Array.isArray(e)?e.length===0:typeof e=="object"&&e!=null?Object.keys(e).length===0:typeof e=="string"?!String(e.trim()).length:!1}function ye(e,t,r){let n,a=(...o)=>new Promise(u=>{clearTimeout(n),n=setTimeout(()=>{n=void 0,Promise.resolve(e.apply(this,[...o])).then(u);},t);});return a.cancel=()=>{clearTimeout(n),n=void 0;},a.doImmediately=(...o)=>new Promise(u=>{clearTimeout(n),n=setTimeout(()=>{n=void 0,Promise.resolve(e.apply(this,[...o])).then(u);},0);}),a}function Ct(e,t){let r=String(e).split("."),n=String(t).split(".");for(let a=0;a<Math.min(r.length,n.length);a++){let o=Number(r[a]),u=Number(n[a]);if(o>u)return 1;if(u>o)return -1;if(!isNaN(o)&&isNaN(u))return 1;if(isNaN(o)&&!isNaN(u))return -1}return 0}var ie=Ct(version,"3.5.0")!==-1;function It(){return Math.floor(Math.random()*Date.now()).toString()}function Fe(){return typeof window>"u"?It():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function Me(){let e=shallowRef(new Map),t=shallowRef(new Map),r=shallowRef(new Map),n=shallowRef(new Map),a=shallowRef(new Map),o=shallowRef(new Map);function u(s){let l=t.value.get(s);if(l)return l;{let x=ref({});return t.value.set(s,x),x}}function v(s){let l=r.value.get(s);if(l)return l;{let x=ref([]);return r.value.set(s,x),x}}function E(s,l,x){o.value.set(`${s}-${l}`,x);}function $(s,l){return o.value.get(`${s}-${l}`)}function S(s,l){s&&l!=null&&o.value.delete(`${s}-${l}`);}function m(s,l){n.value.set(s,l);}function d(s){return n.value.get(s)??!1}function f(s,l){e.value.set(s,l);}function c(s,l){let x=e.value.get(s);return x?I(l,x)?{valid:!0}:{valid:!1}:void 0}function I(s,l){let x=Object.keys(l),V=Object.keys(s);return V.length!==x.length||!V.every(P=>x.includes(P))?!1:V.every(P=>{let h=s[P],w=l[P];return !w||!h||typeof h=="function"||typeof w=="function"||typeof h=="number"||typeof h=="boolean"?!1:h._params?h._params?.every((O,_)=>{if(typeof w=="number"||typeof w=="boolean")return !0;{let M=q(w._params),H=q(h._params);return M?.[_]===H?.[_]}}):!0})}function C(s){let l=a.value.get(s);if(l)return l;{let x=ref(!1),V=ref(!0),G=ref({}),P=ref(!1);return a.value.set(s,{$pending:x,$valid:V,$metadata:G,$validating:P}),{$pending:x,$valid:V,$metadata:G,$validating:P}}}return onScopeDispose(()=>{e.value.clear(),t.value.clear(),r.value.clear(),n.value.clear(),a.value.clear(),o.value.clear();}),{addRuleDeclEntry:f,setDirtyEntry:m,checkRuleDeclEntry:c,getDirtyState:d,trySetRuleStatusRef:C,getFieldsEntry:u,getCollectionsEntry:v,getArrayStatus:$,addArrayStatus:E,deleteArrayStatus:S,arrayStatusStorage:o}}function ot(e,t){return L(e.value)&&L(t.value)&&!Object.entries(t.value).some(r=>me(r))}function st(e){return !!e.value&&"$each"in e.value}function it(e){return !!e.value&&L(e.value)}function me(e){return L(e)&&"_validator"in e}function ge(e){return typeof e.value!="function"}function Ve(e){return L(e)&&"$fields"in e}function je(e){return "$each"in e||"$errors"in e}function _e({field:e,silent:t=!1}){return Object.entries(e.$rules??{}).map(([r,n])=>t||!n.$valid&&e.$dirty&&!n.$validating?n.$message:null).filter(r=>!!r).reduce((r,n)=>typeof n=="string"?r?.concat([n]):r?.concat(n),[]).concat(e.$externalErrors??[])}function ct({$dirty:e,customMessages:t,rule:r,ruleKey:n,state:a,path:o,storage:u,$debounce:v}){let E=effectScope(),$,S,m=ref(!1),{$pending:d,$valid:f,$metadata:c,$validating:I}=u.trySetRuleStatusRef(`${o}.${n}`);function C(){$=E.run(()=>{let h=computed(()=>({$invalid:!f.value,$params:H.value,...c.value})),w=computed(()=>ge(r)?typeof r.value.active=="function"?r.value.active(a.value,h.value):r.value.active:!0),O=computed(()=>{let y="",g=t?t[n]?.message:void 0;return g&&(typeof g=="function"?y=g(a.value,h.value):y=g),ge(r)&&(g&&!r.value._patched||(typeof r.value.message=="function"?y=r.value.message(a.value,h.value):y=r.value.message)),ee(y)&&(y="Error",console.warn(`No error message defined for ${o}.${n}`)),y}),_=computed(()=>ge(r)&&r.value.type?r.value.type:n),M=computed(()=>ge(r)?r.value.validator:r.value),H=computed(()=>typeof r.value=="function"?[]:q(r.value._params??[])),D=computed(()=>`${o}.${_.value}`);return {$active:w,$message:O,$type:_,$validator:M,$params:H,$path:D}}),S=watch($.$params,V,{deep:!0});}C();function s(){f.value=!0,e.value&&(d.value=!0);}async function l(){let h=$.$validator.value,w=h(a.value,...$.$params.value),O=!1,_=a.value;try{s();let M;if(w instanceof Promise?M=await w:M=w,a.value!==_)return !0;if(typeof M=="boolean")O=M;else {let{$valid:H,...D}=M;O=H,c.value=D;}}catch{O=!1;}finally{d.value=!1;}return O}let x=ye(l,v??200);async function V(){I.value=!0;let h=!1;if(me(r.value)&&r.value._async)h=await x();else {let w=$.$validator.value,O=w(a.value,...$.$params.value);if(O instanceof Promise)console.warn('You used a async validator function on a non-async rule, please use "async await" or the "withAsync" helper');else if(O!=null)if(typeof O=="boolean")h=O;else {let{$valid:_,...M}=O;h=_,c.value=M;}}return f.value=h,I.value=!1,h}function G(){f.value=!0,c.value={},d.value=!1,I.value=!1,C();}function P(){S(),E.stop(),E=effectScope();}return reactive({...$,$pending:d,$valid:f,$metadata:c,_haveAsync:m,$validating:I,$validate:V,$unwatch:P,$watch:C,$reset:G})}function Ee({state:e,rulesDef:t,customMessages:r,path:n,fieldName:a,storage:o,options:u,externalErrors:v,onUnwatch:E,$isArray:$,initialState:S,shortcuts:m}){let d=effectScope(),f,c=ref(!1),I=ref(!1),C=ref([]),s,l,x,V,G,P=()=>{};function h(){C.value=v.value??[];}h();function w(){let j=t.value,U=o.checkRuleDeclEntry(n,j);y.value=Object.fromEntries(Object.entries(j).filter(([W])=>W.startsWith("$"))),D.value=Object.fromEntries(Object.entries(t.value).filter(([W])=>!W.startsWith("$")).map(([W,Q])=>{if(Q){let De=toRef(()=>Q);return [W,ct({$dirty:c,customMessages:r,rule:De,ruleKey:W,state:e,path:n,storage:o,$debounce:y.value.$debounce})]}return []}).filter(W=>!!W.length)),M(),O(),U?.valid!=null&&(c.value=o.getDirtyState(n),c.value&&P()),o.addRuleDeclEntry(n,j);}function O(){P=f.$debounce.value?ye(H,f.$debounce.value??f.haveAnyAsyncRule?100:0):H;}function _(){D.value&&Object.entries(D.value).forEach(([j,U])=>{U.$unwatch();}),V(),c.value&&o.setDirtyEntry(n,c.value),s(),l(),x(),d.stop(),d=effectScope(),E?.(),G?.();}function M(){D.value&&Object.entries(D.value).forEach(([j,U])=>{U.$watch();}),f=d.run(()=>{let j=computed(()=>c.value),U=computed(()=>y.value.$debounce),W=computed(()=>y.value.$lazy!=null?y.value.$lazy:unref(u.lazy)),Q=computed(()=>y.value.$rewardEarly!=null?y.value.$rewardEarly:unref(u.rewardEarly)),De=computed(()=>y.value.$autoDirty!=null?y.value.$autoDirty:unref(u.autoDirty)),gt=computed(()=>Object.entries(D.value).some(([Z,J])=>J.$validating)),Ce=computed(()=>pe.value&&!he.value&&c.value),Le=computed(()=>Ce.value?_e({field:{$dirty:c.value,$externalErrors:C.value,$rules:D.value}}):[]),ze=computed(()=>_e({field:{$dirty:c.value,$externalErrors:C.value,$rules:D.value},silent:!0})),Je=computed(()=>!(pe.value||he.value)),he=computed(()=>I.value||!Q.value?Object.entries(D.value).some(([Z,J])=>J.$pending):!1),pe=computed(()=>C.value?.length?!0:!Q.value||Q.value&&I.value?Object.entries(D.value).some(([Z,J])=>!J.$valid):!1),Ye=computed(()=>a),Ie=computed(()=>c.value&&!ee(e.value)&&!gt.value?C.value?.length?!1:Q.value?Object.entries(D.value).every(([Z,J])=>J.$valid):!pe.value:!1),vt=computed(()=>Object.entries(D.value).some(([Z,J])=>J._haveAsync));function $t(){m?.fields&&Object.entries(m.fields).forEach(([Z,J])=>{let St=effectScope();Qe[Z]=St.run(()=>{let Xe=ref();return watchEffect(()=>{Xe.value=J({$dirty:c.value,$externalErrors:C.value,$value:e,$rules:D.value,$error:Ce.value,$pending:he.value,$invalid:pe.value,$valid:Ie.value,$errors:Le.value,$ready:Je.value,$silentErrors:ze.value,$anyDirty:j.value,$name:Ye.value});}),Xe});});}let Qe={};return $t(),watch(Ie,Z=>{Z&&(I.value=!1);}),{$error:Ce,$pending:he,$invalid:pe,$valid:Ie,$debounce:U,$lazy:W,$errors:Le,$ready:Je,$silentErrors:ze,$rewardEarly:Q,$autoDirty:De,$anyDirty:j,$name:Ye,haveAnyAsyncRule:vt,$shortcuts:Qe}}),x=watch(v,h),s=watch(e,()=>{f.$autoDirty.value&&(c.value||(c.value=!0)),t.value instanceof Function&&w(),P(),f.$rewardEarly.value;},{deep:$?!0:ie?1:!0}),V=watch(c,()=>{o.setDirtyEntry(n,c.value);}),l=watch(f.$valid,j=>{f.$rewardEarly.value&&j&&(I.value=!1);}),G=watch(f.haveAnyAsyncRule,O);}function H(){Object.entries(D.value).forEach(([j,U])=>{U.$validate();});}let D=ref(),y=ref();w();function g(){c.value=!1,C.value=[],Object.entries(D.value).forEach(([j,U])=>{U.$reset();}),f.$lazy.value||Object.entries(D.value).map(([j,U])=>U.$validate());}function p(){c.value||(c.value=!0,f.$rewardEarly.value,P());}let R=f.$debounce.value?ye(i,f.$debounce.value??0):i;async function i(){try{if(I.value=!0,f.$autoDirty.value&&c.value&&!f.$pending.value)return !f.$error.value;{let j=Object.entries(D.value).map(([W,Q])=>Q.$validate());return (await Promise.allSettled(j)).every(W=>W.status==="fulfilled"?W.value:!1)}}catch{return !1}}function b(){_(),e.value=at(e,S),g();}function T(j=!0){return c.value?e.value:null}function N(){C.value=[];}f.$lazy.value||i();let{$anyDirty:Y,$error:te,$errors:oe,$invalid:re,$name:B,$pending:F,$ready:A,$silentErrors:se,$valid:xe,$shortcuts:Se}=f;return reactive({$dirty:c,$error:te,$errors:oe,$valid:xe,$invalid:re,$pending:F,$silentErrors:se,$anyDirty:Y,$ready:A,$name:B,$externalErrors:C,$value:e,$rules:D,...Se,$reset:g,$touch:p,$validate:R,$unwatch:_,$watch:M,$resetAll:b,$extractDirtyFields:T,$clearExternalErrors:N})}function ft({$id:e,path:t,index:r,options:n,storage:a,stateValue:o,customMessages:u,rules:v,externalErrors:E,initialState:$,shortcuts:S,fieldName:m}){let d=v.$key?v.$key:Fe(),f=`${t}.${String(d)}`;typeof o.value=="object"&&o.value!=null&&(o.value.$id?f=`${t}.${o.value.$id}`:Object.defineProperties(o.value,{$id:{value:d,enumerable:!1,configurable:!1,writable:!1}}));let c=toRef(()=>E.value?.[r]),I=Te({state:o,rulesDef:toRef(()=>v),customMessages:u,path:f,storage:a,options:n,externalErrors:c,initialState:$?.[r],shortcuts:S,fieldName:m});if(I){let C=o.value?.$id;I.$id=C??String(d),a.addArrayStatus(e,I.$id,I);}return I}function Rt({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:o,externalErrors:u,initialState:v,shortcuts:E,fieldName:$}){let S=effectScope(),m,d=effectScope(),f;if(Array.isArray(e.value)&&!t.value.$each)return null;let c=ref(),I=ref(e.value),C,s=ref({}),l=a.getCollectionsEntry(n);f=d.run(()=>{let p=computed(()=>Array.isArray(e.value)&&e.value.length?e.value.some(b=>typeof b!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(b=>me(b)):!1),R=computed(()=>u.value?je(u.value)?u.value.$errors??[]:[]:[]),i=computed(()=>u.value?je(u.value)?u.value.$each??[]:[]:[]);return {isPrimitiveArray:p,$externalErrorsField:R,$externalErrorsEach:i}}),x(),G();function x(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?(c.value=Fe(),Object.defineProperties(e.value,{$id:{value:c.value,enumerable:!1,configurable:!1,writable:!1}})):e.value?.$id&&(c.value=e.value.$id)),!f.isPrimitiveArray.value&&(I.value=s.value.$value,Array.isArray(e.value)&&t.value.$each?l.value=e.value.map((p,R)=>{let i=Ae(t.value.$each,toRef(()=>p),R);if(i){let b=ft({$id:c.value,path:n,rules:i,stateValue:toRef(()=>p),index:R,options:o,storage:a,externalErrors:f.$externalErrorsEach,initialState:v[R],shortcuts:E,fieldName:$});return b||null}}).filter(p=>!!p):l.value=[],s.value=Ee({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:o,externalErrors:f.$externalErrorsField,$isArray:!0,initialState:v,shortcuts:E,fieldName:$}));}function V(){if(Array.isArray(e.value)){let p=K(l.value);l.value=e.value.map((R,i)=>{let b=toRef(()=>R);if(R.$id&&l.value.find(T=>T.$id===R.$id)){let T=a.getArrayStatus(c.value,R.$id);return T?(T.$value=b,T):null}else {let T=Ae(t.value.$each,b,i);if(T){let N=ft({$id:c.value,path:n,rules:T,stateValue:b,index:i,options:o,storage:a,externalErrors:f.$externalErrorsEach,initialState:v[i],fieldName:$});return N||null}}}).filter(R=>!!R),p.filter(R=>!e.value.find(i=>R.$id===i.$id)).forEach((R,i)=>{a.deleteArrayStatus(c.value,i.toString());});}else l.value=[];}function G(){C=watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?x():V();},{deep:ie?1:!0,flush:"pre"}),m=S.run(()=>{let p=computed(()=>s.value.$dirty&&l.value.every(A=>A.$dirty)),R=computed(()=>s.value.$anyDirty||l.value.some(A=>A.$dirty)),i=computed(()=>s.value.$invalid||l.value.some(A=>A.$invalid)),b=computed(()=>s.value.$valid&&l.value.every(A=>A.$valid)),T=computed(()=>s.value.$error||l.value.some(A=>A.$error)),N=computed(()=>!(i.value||Y.value)),Y=computed(()=>s.value.$pending||l.value.some(A=>A.$pending)),te=computed(()=>({$errors:s.value.$errors,$each:l.value.map(A=>A.$errors)})),oe=computed(()=>({$errors:s.value.$silentErrors,$each:l.value.map(A=>A.$silentErrors)})),re=computed(()=>$);function B(){E?.collections&&Object.entries(E?.collections).forEach(([A,se])=>{let xe=effectScope();F[A]=xe.run(()=>{let Se=ref();return watchEffect(()=>{Se.value=se({$dirty:p.value,$error:T.value,$pending:Y.value,$invalid:i.value,$valid:b.value,$errors:te.value,$ready:N.value,$silentErrors:oe.value,$anyDirty:R.value,$name:re.value,$each:l.value,$field:s.value,$value:e});}),Se});});}let F={};return B(),{$dirty:p,$anyDirty:R,$invalid:i,$valid:b,$error:T,$pending:Y,$errors:te,$silentErrors:oe,$ready:N,$name:re,$shortcuts:F}}),f.isPrimitiveArray.value&&(console.warn(`${n} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`),C());}function P(){C&&C(),s.value&&s.value.$unwatch(),l.value&&l.value.forEach(p=>{"$dirty"in p&&p.$unwatch();}),S.stop(),S=effectScope(),d.stop(),d=effectScope(!0);}function h(){s.value.$touch(),l.value.forEach(p=>{p.$touch();});}function w(){s.value.$reset(),l.value.forEach(p=>{p.$reset();});}async function O(){try{return (await Promise.all([s.value.$validate(),...l.value.map(R=>R.$validate())])).every(R=>!!R)}catch{return !1}}function _(){s.value.$clearExternalErrors(),l.value.forEach(p=>{p.$clearExternalErrors();});}function M(p=!0){let R=l.value.map(i=>{if(Ve(i))return i.$extractDirtyFields(p)});return p&&(R=R.filter(i=>L(i)?!ee(i):!!i)),R}function H(){console.log(v),P(),lt(e,v),w();}async function D(){return h(),await O()?e.value:!1}let{$shortcuts:y,...g}=m;return reactive({$field:s,...g,...y,$each:l,$value:e,$validate:O,$unwatch:P,$watch:G,$touch:h,$reset:w,$resetAll:H,$extractDirtyFields:M,$parse:D,$clearExternalErrors:_})}function Be({scopeRules:e,state:t,customMessages:r,path:n="",rootRules:a,storage:o,options:u,externalErrors:v,validationGroups:E,initialState:$,shortcuts:S,fieldName:m}){let d,f,c=null;function s(y=!0){l.value=null,triggerRef(l);let g=Object.fromEntries(Object.entries(e.value).map(([i,b])=>{if(b){let T=toRef(t.value,i),N=toRef(()=>b),Y=toRef(()=>v.value?.[i]);return [i,Te({state:T,rulesDef:N,customMessages:r,path:n?`${n}.${i}`:i,storage:o,options:u,externalErrors:Y,initialState:$?.[i],shortcuts:S,fieldName:i})]}return []}).filter(i=>!!i.length&&i[1]!=null)),p=Object.fromEntries(Object.entries(unref(v)??{}).filter(([i])=>!(i in e.value)).map(([i,b])=>{if(b){let T=toRef(()=>({})),N=toRef(()=>b);return [i,Te({state:ref(void 0),rulesDef:T,customMessages:r,path:n?`${n}.${i}`:i,storage:o,options:u,externalErrors:N,initialState:$?.[i],fieldName:i})]}return []})),R=Object.fromEntries(Object.entries(E?.(g)??{}).map(([i,b])=>b.length?[i,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$valid"].map(T=>[T,Ke(toRef(()=>b),T)])),...Object.fromEntries(["$errors","$silentErrors"].map(T=>[T,et(toRef(()=>b),T)]))}]:[]));l.value={...g,...p,...R},y&&P();}let l=o.getFieldsEntry(n);s();function x(){s(!1),Object.entries(l.value).forEach(([y,g])=>{g.$reset();}),P();}function V(){Object.entries(l.value).forEach(([y,g])=>{g.$touch();});}async function G(){try{return (await Promise.allSettled(Object.entries(l.value).map(([g,p])=>p.$validate()))).every(g=>g.status==="fulfilled"?g.value:!1)}catch{return !1}}function P(){a&&(c=watch(a,()=>{h(),s();},{deep:ie?1:!0,flush:"post"})),d=effectScope(),f=d.run(()=>{let y=computed(()=>!!Object.entries(l.value).length&&Object.entries(l.value).every(([B,F])=>F.$dirty)),g=computed(()=>Object.entries(l.value).some(([B,F])=>F.$dirty)),p=computed(()=>Object.entries(l.value).some(([B,F])=>F.$invalid)),R=computed(()=>Object.entries(l.value).every(([B,F])=>F.$valid)),i=computed(()=>y.value&&!T.value&&p.value),b=computed(()=>!(p.value||T.value)),T=computed(()=>Object.entries(l.value).some(([B,F])=>F.$pending)),N=computed(()=>Object.fromEntries(Object.entries(l.value).map(([B,F])=>[B,F.$errors]))),Y=computed(()=>Object.fromEntries(Object.entries(l.value).map(([B,F])=>[B,F.$silentErrors]))),te=computed(()=>m);function oe(){S?.nested&&Object.entries(S.nested).forEach(([B,F])=>{let A=effectScope();re[B]=A.run(()=>{let se=ref();return watchEffect(()=>{se.value=F({$dirty:y.value,$value:t,$error:i.value,$pending:T.value,$invalid:p.value,$valid:R.value,$ready:b.value,$anyDirty:g.value,$name:te.value,$silentErrors:Y.value,$errors:N.value,$fields:l.value});}),se});});}let re={};return oe(),{$dirty:y,$anyDirty:g,$invalid:p,$valid:R,$error:i,$pending:T,$errors:N,$silentErrors:Y,$ready:b,$name:te,$shortcuts:re}});}function h(){l.value&&Object.entries(l.value).forEach(([y,g])=>{g.$unwatch();}),c?.(),d.stop(),d=effectScope();}function w(){Object.entries(l.value).forEach(([y,g])=>{g.$clearExternalErrors();});}function O(){h(),de(t,$??{}),x();}function _(y=!0){let g=Object.entries(l.value).map(([p,R])=>[p,R.$extractDirtyFields(y)]);return y&&(g=g.filter(([p,R])=>L(R)?!ee(R):Array.isArray(R)?R.length:!!R)),Object.fromEntries(g)}async function M(){return V(),await G()?t.value:!1}let{$shortcuts:H,...D}=f;return reactive({...D,...H,$fields:l,$value:t,$resetAll:O,$reset:x,$touch:V,$validate:G,$unwatch:h,$watch:P,$clearExternalErrors:w,$extractDirtyFields:_,$parse:M})}function Te({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:o,externalErrors:u,index:v,initialState:E,shortcuts:$,onUnwatch:S,fieldName:m}){return st(t)?Rt({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:o,index:v,externalErrors:u,initialState:E,fieldName:m,shortcuts:$}):ot(e,t)&&nt(e)?Be({scopeRules:t,state:e,customMessages:r,path:n,storage:a,options:o,index:v,initialState:E,shortcuts:$,fieldName:m,externalErrors:u}):it(t)?Ee({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:o,index:v,externalErrors:u,onUnwatch:S,shortcuts:$,initialState:E,fieldName:m}):null}function Ue({initialState:e,options:t,scopeRules:r,state:n,customRules:a,shortcuts:o}){let u=Me(),v=computed(()=>unref(t.externalErrors));return reactive(Be({rootRules:r,scopeRules:r,state:n,customMessages:a?.(),storage:u,options:t,externalErrors:v,validationGroups:t.validationGroups,initialState:e,shortcuts:o,fieldName:"root"}))}function We(e,t,r){let n={autoDirty:t?.autoDirty??!0,lazy:t?.lazy??!1,rewardEarly:t?.rewardEarly??!1};function a(o,u,v){let E=isRef(u)?u:computed(typeof u=="function"?u:()=>u),$={...n,...v},S=isRef(o)?o:ref(o),m=K(toRaw(S.value));return {r$:Ue({scopeRules:E,state:S,options:$,initialState:m,customRules:e,shortcuts:r})}}return a}var yt=We();function He(){function e(t,r){return r}return e}var qe=He();function mt({rules:e,modifiers:t,shortcuts:r}){let n=We(e,t,r),a=He();return {useRegle:n,inferRules:a}}export{Pe as InternalRuleType,Oe as createRule,mt as defineRegleConfig,qe as inferRules,q as unwrapRuleParameters,yt as useRegle};
1
+ import {unref,version,isRef,toRef,computed,ref,toRaw,reactive,shallowRef,onScopeDispose,triggerRef,watch,effectScope,watchEffect}from'vue';var Pe=(r=>(r.Inline="__inline",r.Async="__async",r))(Pe||{});function Ke(e,t){return computed(()=>e.value.some(r=>r[t]))}function et(e,t){return computed(()=>e.value.reduce((r,n)=>{let a=n[t]||[];return r.concat(a)},[]))}function L(e){return e.map(t=>t instanceof Function?t():unref(t))}function tt(e){return e.map(t=>t instanceof Function||isRef(t)?t:toRef(()=>t))}function rt(e){let t=e.toString();return (t.includes("=>")?t.split("=>")[0]:t).slice(t.indexOf("(")+1,t.indexOf(")")).split(",").map(o=>o.trim()).filter(o=>o.includes("=")).length+e.length}function we(e,...t){let{message:r,validator:n,active:a,type:o,...u}=e,S=o==="__async"||n.constructor.name==="AsyncFunction";return {...{validator(g,...m){return e.validator(g,...L(m.length?m:t))},message(g,m){return typeof e.message=="function"?e.message(g,{...m,$params:L(m.$params?.length?m.$params:t)}):e.message},active(g,m){return typeof e.active=="function"?e.active(g,{...m,$params:L(m.$params?.length?m.$params:t)}):e.active??!0},exec(g){let m=e.validator(g,...L(t)),d;return m instanceof Promise?m.then(f=>(d=f,typeof d=="object"&&"$valid"in d?d.$valid:typeof d=="boolean"?d:!1)):(d=m,typeof d=="object"&&"$valid"in d?d.$valid:typeof d=="boolean"?d:!1)}},...u,_validator:e.validator,_message:e.message,_active:e.active,_type:e.type,_patched:!1,_async:S,_params:tt(t)}}function Oe(e){if(typeof e.validator=="function"){let r=we(e,...[]),n=e.validator.constructor.name==="AsyncFunction";if(rt(e.validator)>1){let a=function(...o){return we(e,...o)};return a.validator=r.validator,a.message=r.message,a.active=r.active,a.type=r.type,a.exec=r.exec,a._validator=r.validator,a._message=r.message,a._active=r.active,a._type=e.type,a._patched=!1,a._async=n,a}else return r}throw new Error("Validator must be a function")}function z(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function nt(e){return z(e.value)}function re(e){let t=e,r={}.toString.call(e).slice(8,-1);if(r=="Set"&&(t=new Set([...e].map(n=>re(n)))),r=="Map"&&(t=new Map([...e].map(n=>[re(n[0]),re(n[1])]))),r=="Date"&&(t=new Date(e.getTime())),r=="RegExp"&&(t=RegExp(e.source,xt(e))),r=="Array"||r=="Object"){t=Array.isArray(e)?[]:{};for(let n in e)t[n]=re(e[n]);}return t}function xt(e){if(typeof e.source.flags=="string")return e.source.flags;{let t=[];return e.global&&t.push("g"),e.ignoreCase&&t.push("i"),e.multiline&&t.push("m"),e.sticky&&t.push("y"),e.unicode&&t.push("u"),t.join("")}}function Ae(e,t,r){return e instanceof Function?e(t,r??0):e}function at(e,t){isRef(e)?e.value=t:e=t;}function lt(e,t){isRef(e)?e.value=[]:e=[],t.forEach((r,n)=>{let a=isRef(e)?e.value[n]:e[n];a={},de(a,t[n]);});}function de(e,t){Object.entries({...unref(e),...t}).forEach(([r,n])=>{let a=isRef(e)?e.value:e,o=isRef(t[r])?t[r]._value:t[r],u=isRef(a[r])?a[r].value:a[r];Array.isArray(a[r])?(a[r]=[],Array.isArray(o)&&o.forEach((S,E)=>{a[r][E]={},de(a[r][E],o[E]);})):z(o)?de(u,o):isRef(a[r])?a[r].value=o:a[r]=o;});}function ee(e){return e==null?!0:e===!1?!1:e instanceof Date?isNaN(e.getTime()):Array.isArray(e)?e.length===0:typeof e=="object"&&e!=null?Object.keys(e).length===0:typeof e=="string"?!String(e.trim()).length:!1}function ye(e,t,r){let n,a=(...o)=>new Promise(u=>{clearTimeout(n),n=setTimeout(()=>{n=void 0,Promise.resolve(e.apply(this,[...o])).then(u);},t);});return a.cancel=()=>{clearTimeout(n),n=void 0;},a.doImmediately=(...o)=>new Promise(u=>{clearTimeout(n),n=setTimeout(()=>{n=void 0,Promise.resolve(e.apply(this,[...o])).then(u);},0);}),a}function Ct(e,t){let r=String(e).split("."),n=String(t).split(".");for(let a=0;a<Math.min(r.length,n.length);a++){let o=Number(r[a]),u=Number(n[a]);if(o>u)return 1;if(u>o)return -1;if(!isNaN(o)&&isNaN(u))return 1;if(isNaN(o)&&!isNaN(u))return -1}return 0}var se=Ct(version,"3.5.0")!==-1;function It(){return Math.floor(Math.random()*Date.now()).toString()}function Fe(){return typeof window>"u"?It():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function Me(){let e=shallowRef(new Map),t=shallowRef(new Map),r=shallowRef(new Map),n=shallowRef(new Map),a=shallowRef(new Map),o=shallowRef(new Map);function u(i){let l=t.value.get(i);if(l)return l;{let x=ref({});return t.value.set(i,x),x}}function S(i){let l=r.value.get(i);if(l)return l;{let x=ref([]);return r.value.set(i,x),x}}function E(i,l,x){o.value.set(`${i}-${l}`,x);}function h(i,l){return o.value.get(`${i}-${l}`)}function g(i,l){i&&l!=null&&o.value.delete(`${i}-${l}`);}function m(i,l){n.value.set(i,l);}function d(i){return n.value.get(i)??!1}function f(i,l){e.value.set(i,l);}function c(i,l){let x=e.value.get(i);return x?I(l,x)?{valid:!0}:{valid:!1}:void 0}function I(i,l){let x=Object.keys(l),j=Object.keys(i);return j.length!==x.length||!j.every(w=>x.includes(w))?!1:j.every(w=>{let b=i[w],O=l[w];return !O||!b||typeof b=="function"||typeof O=="function"||typeof b=="number"||typeof b=="boolean"?!1:b._params?b._params?.every((A,N)=>{if(typeof O=="number"||typeof O=="boolean")return !0;{let V=L(O._params),q=L(b._params);return V?.[N]===q?.[N]}}):!0})}function C(i){let l=a.value.get(i);if(l)return l;{let x=ref(!1),j=ref(!0),G=ref({}),w=ref(!1);return a.value.set(i,{$pending:x,$valid:j,$metadata:G,$validating:w}),{$pending:x,$valid:j,$metadata:G,$validating:w}}}return onScopeDispose(()=>{e.value.clear(),t.value.clear(),r.value.clear(),n.value.clear(),a.value.clear(),o.value.clear();}),{addRuleDeclEntry:f,setDirtyEntry:m,checkRuleDeclEntry:c,getDirtyState:d,trySetRuleStatusRef:C,getFieldsEntry:u,getCollectionsEntry:S,getArrayStatus:h,addArrayStatus:E,deleteArrayStatus:g,arrayStatusStorage:o}}function ot(e,t){return z(e.value)&&z(t.value)&&!Object.entries(t.value).some(r=>me(r))}function it(e,t){return !!e.value&&"$each"in e.value||Array.isArray(t.value)}function st(e){return !!e.value&&z(e.value)}function me(e){return z(e)&&"_validator"in e}function ve(e){return typeof e.value!="function"}function Ve(e){return z(e)&&"$fields"in e}function je(e){return "$each"in e||"$errors"in e}function _e({field:e,silent:t=!1}){return Object.entries(e.$rules??{}).map(([r,n])=>t||!n.$valid&&e.$dirty&&!n.$validating?n.$message:null).filter(r=>!!r).reduce((r,n)=>typeof n=="string"?r?.concat([n]):r?.concat(n),[]).concat(e.$externalErrors??[])}function ct({$dirty:e,customMessages:t,rule:r,ruleKey:n,state:a,path:o,storage:u,$debounce:S}){let E=effectScope(),h,g,m=ref(!1),{$pending:d,$valid:f,$metadata:c,$validating:I}=u.trySetRuleStatusRef(`${o}.${n}`);function C(){h=E.run(()=>{let b=computed(()=>({$invalid:!f.value,$params:q.value,...c.value})),O=computed(()=>ve(r)?typeof r.value.active=="function"?r.value.active(a.value,b.value):r.value.active:!0),A=computed(()=>{let y="",v=t?t[n]?.message:void 0;return v&&(typeof v=="function"?y=v(a.value,b.value):y=v),ve(r)&&(v&&!r.value._patched||(typeof r.value.message=="function"?y=r.value.message(a.value,b.value):y=r.value.message)),ee(y)&&(y="Error",console.warn(`No error message defined for ${o}.${n}`)),y}),N=computed(()=>ve(r)&&r.value.type?r.value.type:n),V=computed(()=>ve(r)?r.value.validator:r.value),q=computed(()=>typeof r.value=="function"?[]:L(r.value._params??[])),D=computed(()=>`${o}.${N.value}`);return {$active:O,$message:A,$type:N,$validator:V,$params:q,$path:D}}),g=watch(h.$params,j,{deep:!0});}C();function i(){f.value=!0,e.value&&(d.value=!0);}async function l(){let b=h.$validator.value,O=b(a.value,...h.$params.value),A=!1,N=a.value;try{i();let V;if(O instanceof Promise?V=await O:V=O,a.value!==N)return !0;if(typeof V=="boolean")A=V;else {let{$valid:q,...D}=V;A=q,c.value=D;}}catch{A=!1;}finally{d.value=!1;}return A}let x=ye(l,S??200);async function j(){I.value=!0;let b=!1;if(me(r.value)&&r.value._async)b=await x();else {let O=h.$validator.value,A=O(a.value,...h.$params.value);if(A instanceof Promise)console.warn('You used a async validator function on a non-async rule, please use "async await" or the "withAsync" helper');else if(A!=null)if(typeof A=="boolean")b=A;else {let{$valid:N,...V}=A;b=N,c.value=V;}}return f.value=b,I.value=!1,b}function G(){f.value=!0,c.value={},d.value=!1,I.value=!1,C();}function w(){g(),E.stop(),E=effectScope();}return reactive({...h,$pending:d,$valid:f,$metadata:c,_haveAsync:m,$validating:I,$validate:j,$unwatch:w,$watch:C,$reset:G})}function be({state:e,rulesDef:t,customMessages:r,path:n,fieldName:a,storage:o,options:u,externalErrors:S,onUnwatch:E,$isArray:h,initialState:g,shortcuts:m}){let d=effectScope(),f,c=ref(!1),I=ref(!1),C=ref([]),i,l,x,j,G,w=()=>{};function b(){C.value=S.value??[];}b();function O(){let _=t.value,W=o.checkRuleDeclEntry(n,_);y.value=Object.fromEntries(Object.entries(_).filter(([H])=>H.startsWith("$"))),D.value=Object.fromEntries(Object.entries(t.value).filter(([H])=>!H.startsWith("$")).map(([H,X])=>{if(X){let De=toRef(()=>X);return [H,ct({$dirty:c,customMessages:r,rule:De,ruleKey:H,state:e,path:n,storage:o,$debounce:y.value.$debounce})]}return []}).filter(H=>!!H.length)),V(),A(),W?.valid!=null&&(c.value=o.getDirtyState(n),c.value&&w()),o.addRuleDeclEntry(n,_);}function A(){w=f.$debounce.value?ye(q,f.$debounce.value??f.haveAnyAsyncRule?100:0):q;}function N(){D.value&&Object.entries(D.value).forEach(([_,W])=>{W.$unwatch();}),j(),c.value&&o.setDirtyEntry(n,c.value),i(),l(),x(),d.stop(),d=effectScope(),E?.(),G?.();}function V(){D.value&&Object.entries(D.value).forEach(([_,W])=>{W.$watch();}),f=d.run(()=>{let _=computed(()=>c.value),W=computed(()=>y.value.$debounce),H=computed(()=>y.value.$lazy!=null?y.value.$lazy:unref(u.lazy)),X=computed(()=>y.value.$rewardEarly!=null?y.value.$rewardEarly:unref(u.rewardEarly)),De=computed(()=>y.value.$autoDirty!=null?y.value.$autoDirty:unref(u.autoDirty)),vt=computed(()=>Object.entries(D.value).some(([te,Q])=>Q.$validating)),Ce=computed(()=>pe.value&&!Ee.value&&c.value),Le=computed(()=>Ce.value?_e({field:{$dirty:c.value,$externalErrors:C.value,$rules:D.value}}):[]),ze=computed(()=>_e({field:{$dirty:c.value,$externalErrors:C.value,$rules:D.value},silent:!0})),Je=computed(()=>!(pe.value||Ee.value)),Ee=computed(()=>I.value||!X.value?Object.entries(D.value).some(([te,Q])=>Q.$pending):!1),pe=computed(()=>C.value?.length?!0:!X.value||X.value&&I.value?Object.entries(D.value).some(([te,Q])=>!Q.$valid):!1),Ye=computed(()=>a),Ie=computed(()=>ee(D.value)?!0:c.value&&!ee(e.value)&&!vt.value?C.value?.length?!1:X.value?Object.entries(D.value).every(([te,Q])=>Q.$valid):!pe.value:!1),gt=computed(()=>Object.entries(D.value).some(([te,Q])=>Q._haveAsync));function $t(){m?.fields&&Object.entries(m.fields).forEach(([te,Q])=>{let St=effectScope();Qe[te]=St.run(()=>{let Xe=ref();return watchEffect(()=>{Xe.value=Q({$dirty:c.value,$externalErrors:C.value,$value:e,$rules:D.value,$error:Ce.value,$pending:Ee.value,$invalid:pe.value,$valid:Ie.value,$errors:Le.value,$ready:Je.value,$silentErrors:ze.value,$anyDirty:_.value,$name:Ye.value});}),Xe});});}let Qe={};return $t(),watch(Ie,te=>{te&&(I.value=!1);}),{$error:Ce,$pending:Ee,$invalid:pe,$valid:Ie,$debounce:W,$lazy:H,$errors:Le,$ready:Je,$silentErrors:ze,$rewardEarly:X,$autoDirty:De,$anyDirty:_,$name:Ye,haveAnyAsyncRule:gt,$shortcuts:Qe}}),x=watch(S,b),i=watch(e,()=>{f.$autoDirty.value&&(c.value||(c.value=!0)),t.value instanceof Function&&O(),w(),f.$rewardEarly.value;},{deep:h?!0:se?1:!0}),j=watch(c,()=>{o.setDirtyEntry(n,c.value);}),l=watch(f.$valid,_=>{f.$rewardEarly.value&&_&&(I.value=!1);}),G=watch(f.haveAnyAsyncRule,A);}function q(){Object.entries(D.value).forEach(([_,W])=>{W.$validate();});}let D=ref(),y=ref();O();function v(){c.value=!1,C.value=[],Object.entries(D.value).forEach(([_,W])=>{W.$reset();}),f.$lazy.value||Object.entries(D.value).map(([_,W])=>W.$validate());}function R(){c.value||(c.value=!0,f.$rewardEarly.value,w());}let p=f.$debounce.value?ye($,f.$debounce.value??0):$;async function $(){try{if(I.value=!0,f.$autoDirty.value&&c.value&&!f.$pending.value)return !f.$error.value;{let _=Object.entries(D.value).map(([H,X])=>X.$validate());return (await Promise.allSettled(_)).every(H=>H.status==="fulfilled"?H.value:!1)}}catch{return !1}}function s(){N(),e.value=at(e,g),v();}function T(_=!0){return c.value?e.value:null}function P(){C.value=[];}f.$lazy.value||$();let{$anyDirty:k,$error:Y,$errors:oe,$invalid:ne,$name:U,$pending:M,$ready:F,$silentErrors:ie,$valid:xe,$shortcuts:he}=f;return reactive({$dirty:c,$error:Y,$errors:oe,$valid:xe,$invalid:ne,$pending:M,$silentErrors:ie,$anyDirty:k,$ready:F,$name:U,$externalErrors:C,$value:e,$rules:D,...he,$reset:v,$touch:R,$validate:p,$unwatch:N,$watch:V,$resetAll:s,$extractDirtyFields:T,$clearExternalErrors:P})}function ft({$id:e,path:t,index:r,options:n,storage:a,stateValue:o,customMessages:u,rules:S,externalErrors:E,initialState:h,shortcuts:g,fieldName:m}){let d=S.$key?S.$key:Fe(),f=`${t}.${String(d)}`;typeof o.value=="object"&&o.value!=null&&(o.value.$id?f=`${t}.${o.value.$id}`:Object.defineProperties(o.value,{$id:{value:d,enumerable:!1,configurable:!1,writable:!1}}));let c=toRef(()=>E.value?.[r]),I=Se({state:o,rulesDef:toRef(()=>S),customMessages:u,path:f,storage:a,options:n,externalErrors:c,initialState:h?.[r],shortcuts:g,fieldName:m});if(I){let C=o.value?.$id;I.$id=C??String(d),a.addArrayStatus(e,I.$id,I);}return I}function Rt({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:o,externalErrors:u,initialState:S,shortcuts:E,fieldName:h}){let g=effectScope(),m,d=effectScope(),f;if(!Array.isArray(e.value)&&!t.value.$each)return null;let c=ref(),I=ref(e.value),C,i=ref({}),l=a.getCollectionsEntry(n);f=d.run(()=>{let R=computed(()=>Array.isArray(e.value)&&e.value.length?e.value.some(s=>typeof s!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(s=>me(s)):!1),p=computed(()=>u.value?je(u.value)?u.value.$errors??[]:[]:[]),$=computed(()=>u.value?je(u.value)?u.value.$each??[]:[]:[]);return {isPrimitiveArray:R,$externalErrorsField:p,$externalErrorsEach:$}}),x(),G();function x(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?(c.value=Fe(),Object.defineProperties(e.value,{$id:{value:c.value,enumerable:!1,configurable:!1,writable:!1}})):e.value?.$id&&(c.value=e.value.$id)),!f.isPrimitiveArray.value&&(I.value=i.value.$value,Array.isArray(e.value)?l.value=e.value.map((R,p)=>{let $=Ae(t.value.$each,toRef(()=>R),p),s=ft({$id:c.value,path:n,rules:$??{},stateValue:toRef(()=>R),index:p,options:o,storage:a,externalErrors:f.$externalErrorsEach,initialState:S[p],shortcuts:E,fieldName:h});return s||null}).filter(R=>!!R):l.value=[],i.value=be({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:o,externalErrors:f.$externalErrorsField,$isArray:!0,initialState:S,shortcuts:E,fieldName:h}));}function j(){if(Array.isArray(e.value)){let R=re(l.value);l.value=e.value.map((p,$)=>{let s=toRef(()=>p);if(p.$id&&l.value.find(T=>T.$id===p.$id)){let T=a.getArrayStatus(c.value,p.$id);return T?(T.$value=s,T):null}else {let T=Ae(t.value.$each,s,$);if(T){let P=ft({$id:c.value,path:n,rules:T,stateValue:s,index:$,options:o,storage:a,externalErrors:f.$externalErrorsEach,initialState:S[$],shortcuts:E,fieldName:h});return P||null}}}).filter(p=>!!p),R.filter(p=>!e.value.find($=>p.$id===$.$id)).forEach((p,$)=>{a.deleteArrayStatus(c.value,$.toString());});}else l.value=[];}function G(){C=watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?x():j();},{deep:se?1:!0,flush:"pre"}),m=g.run(()=>{let R=computed(()=>i.value.$dirty&&l.value.every(F=>F.$dirty)),p=computed(()=>i.value.$anyDirty||l.value.some(F=>F.$dirty)),$=computed(()=>i.value.$invalid||l.value.some(F=>F.$invalid)),s=computed(()=>i.value.$valid&&l.value.every(F=>F.$valid)),T=computed(()=>i.value.$error||l.value.some(F=>F.$error)),P=computed(()=>!($.value||k.value)),k=computed(()=>i.value.$pending||l.value.some(F=>F.$pending)),Y=computed(()=>({$errors:i.value.$errors,$each:l.value.map(F=>F.$errors)})),oe=computed(()=>({$errors:i.value.$silentErrors,$each:l.value.map(F=>F.$silentErrors)})),ne=computed(()=>h);function U(){E?.collections&&Object.entries(E?.collections).forEach(([F,ie])=>{let xe=effectScope();M[F]=xe.run(()=>{let he=ref();return watchEffect(()=>{he.value=ie({$dirty:R.value,$error:T.value,$pending:k.value,$invalid:$.value,$valid:s.value,$errors:Y.value,$ready:P.value,$silentErrors:oe.value,$anyDirty:p.value,$name:ne.value,$each:l.value,$field:i.value,$value:e});}),he});});}let M={};return U(),{$dirty:R,$anyDirty:p,$invalid:$,$valid:s,$error:T,$pending:k,$errors:Y,$silentErrors:oe,$ready:P,$name:ne,$shortcuts:M}}),f.isPrimitiveArray.value&&(console.warn(`${n} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`),C());}function w(){C&&C(),i.value&&i.value.$unwatch(),l.value&&l.value.forEach(R=>{"$dirty"in R&&R.$unwatch();}),g.stop(),g=effectScope(),d.stop(),d=effectScope(!0);}function b(){i.value.$touch(),l.value.forEach(R=>{R.$touch();});}function O(){i.value.$reset(),l.value.forEach(R=>{R.$reset();});}async function A(){try{return (await Promise.all([i.value.$validate(),...l.value.map(p=>p.$validate())])).every(p=>!!p)}catch{return !1}}function N(){i.value.$clearExternalErrors(),l.value.forEach(R=>{R.$clearExternalErrors();});}function V(R=!0){let p=l.value.map($=>{if(Ve($))return $.$extractDirtyFields(R)});return R&&(p=p.filter($=>z($)?!ee($):!!$)),p}function q(){console.log(S),w(),lt(e,S),O();}async function D(){return b(),await A()?e.value:!1}let{$shortcuts:y,...v}=m;return reactive({$field:i,...v,...y,$each:l,$value:e,$validate:A,$unwatch:w,$watch:G,$touch:b,$reset:O,$resetAll:q,$extractDirtyFields:V,$parse:D,$clearExternalErrors:N})}function ke({scopeRules:e,state:t,customMessages:r,path:n="",rootRules:a,storage:o,options:u,externalErrors:S,validationGroups:E,initialState:h,shortcuts:g,fieldName:m}){let d,f,c=null;function i(y=!0){l.value=null,triggerRef(l);let v=Object.fromEntries(Object.entries(e.value).map(([s,T])=>{if(T){let P=toRef(t.value,s),k=toRef(()=>T),Y=toRef(()=>S.value?.[s]);return [s,Se({state:P,rulesDef:k,customMessages:r,path:n?`${n}.${s}`:s,storage:o,options:u,externalErrors:Y,initialState:h?.[s],shortcuts:g,fieldName:s})]}return []}).filter(s=>!!s.length&&s[1]!=null)),R=Object.fromEntries(Object.entries(unref(S)??{}).filter(([s])=>!(s in e.value)).map(([s,T])=>{if(T){let P=toRef(t.value,s),k=toRef(()=>({})),Y=toRef(()=>T);return [s,Se({state:P,rulesDef:k,customMessages:r,path:n?`${n}.${s}`:s,storage:o,options:u,externalErrors:Y,initialState:h?.[s],shortcuts:g,fieldName:s})]}return []})),p=Object.fromEntries(Object.entries(t.value).filter(([s])=>!(s in e.value)&&!(s in(R.value??{}))).map(([s,T])=>{let P=toRef(t.value,s),k=toRef(()=>({}));return [s,Se({state:P,rulesDef:k,customMessages:r,path:n?`${n}.${s}`:s,storage:o,options:u,externalErrors:ref(),initialState:h?.[s],shortcuts:g,fieldName:s})]})),$=Object.fromEntries(Object.entries(E?.(v)??{}).map(([s,T])=>T.length?[s,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$valid"].map(P=>[P,Ke(toRef(()=>T),P)])),...Object.fromEntries(["$errors","$silentErrors"].map(P=>[P,et(toRef(()=>T),P)]))}]:[]));l.value={...v,...R,...p,...$},y&&w();}let l=o.getFieldsEntry(n);i();function x(){i(!1),Object.entries(l.value).forEach(([y,v])=>{v.$reset();}),w();}function j(){Object.entries(l.value).forEach(([y,v])=>{v.$touch();});}async function G(){try{return (await Promise.allSettled(Object.entries(l.value).map(([v,R])=>R.$validate()))).every(v=>v.status==="fulfilled"?v.value:!1)}catch{return !1}}function w(){a&&(c=watch(a,()=>{b(),i();},{deep:se?1:!0,flush:"post"})),d=effectScope(),f=d.run(()=>{let y=computed(()=>!!Object.entries(l.value).length&&Object.entries(l.value).every(([U,M])=>M?.$dirty)),v=computed(()=>Object.entries(l.value).some(([U,M])=>M?.$dirty)),R=computed(()=>Object.entries(l.value).some(([U,M])=>M?.$invalid)),p=computed(()=>Object.entries(l.value).every(([U,M])=>M?.$valid)),$=computed(()=>y.value&&!T.value&&R.value),s=computed(()=>!(R.value||T.value)),T=computed(()=>Object.entries(l.value).some(([U,M])=>M?.$pending)),P=computed(()=>Object.fromEntries(Object.entries(l.value).map(([U,M])=>[U,M?.$errors]))),k=computed(()=>Object.fromEntries(Object.entries(l.value).map(([U,M])=>[U,M?.$silentErrors]))),Y=computed(()=>m);function oe(){g?.nested&&Object.entries(g.nested).forEach(([U,M])=>{let F=effectScope();ne[U]=F.run(()=>{let ie=ref();return watchEffect(()=>{ie.value=M({$dirty:y.value,$value:t,$error:$.value,$pending:T.value,$invalid:R.value,$valid:p.value,$ready:s.value,$anyDirty:v.value,$name:Y.value,$silentErrors:k.value,$errors:P.value,$fields:l.value});}),ie});});}let ne={};return oe(),{$dirty:y,$anyDirty:v,$invalid:R,$valid:p,$error:$,$pending:T,$errors:P,$silentErrors:k,$ready:s,$name:Y,$shortcuts:ne}});}function b(){l.value&&Object.entries(l.value).forEach(([y,v])=>{v.$unwatch();}),c?.(),d.stop(),d=effectScope();}function O(){Object.entries(l.value).forEach(([y,v])=>{v.$clearExternalErrors();});}function A(){b(),de(t,h??{}),x();}function N(y=!0){let v=Object.entries(l.value).map(([R,p])=>[R,p.$extractDirtyFields(y)]);return y&&(v=v.filter(([R,p])=>z(p)?!ee(p):Array.isArray(p)?p.length:!!p)),Object.fromEntries(v)}async function V(){return j(),await G()?t.value:!1}let{$shortcuts:q,...D}=f;return reactive({...D,...q,$fields:l,$value:t,$resetAll:A,$reset:x,$touch:j,$validate:G,$unwatch:b,$watch:w,$clearExternalErrors:O,$extractDirtyFields:N,$parse:V})}function Se({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:o,externalErrors:u,index:S,initialState:E,shortcuts:h,onUnwatch:g,fieldName:m}){return it(t,e)?Rt({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:o,index:S,externalErrors:u,initialState:E,fieldName:m,shortcuts:h}):ot(e,t)&&nt(e)?ke({scopeRules:t,state:e,customMessages:r,path:n,storage:a,options:o,index:S,initialState:E,shortcuts:h,fieldName:m,externalErrors:u}):st(t)?be({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:o,index:S,externalErrors:u,onUnwatch:g,shortcuts:h,initialState:E,fieldName:m}):null}function Ue({initialState:e,options:t,scopeRules:r,state:n,customRules:a,shortcuts:o}){let u=Me(),S=computed(()=>unref(t.externalErrors));return reactive(ke({rootRules:r,scopeRules:r,state:n,customMessages:a?.(),storage:u,options:t,externalErrors:S,validationGroups:t.validationGroups,initialState:e,shortcuts:o,fieldName:"root"}))}function We(e,t,r){let n={autoDirty:t?.autoDirty??!0,lazy:t?.lazy??!1,rewardEarly:t?.rewardEarly??!1};function a(o,u,S){let E=isRef(u)?u:computed(typeof u=="function"?u:()=>u),h={...n,...S},g=isRef(o)?o:ref(o),m=re(toRaw(g.value));return {r$:Ue({scopeRules:E,state:g,options:h,initialState:m,customRules:e,shortcuts:r})}}return a}var yt=We();function He(){function e(t,r){return r}return e}var qe=He();function mt({rules:e,modifiers:t,shortcuts:r}){let n=We(e,t,r),a=He();return {useRegle:n,inferRules:a}}export{Pe as InternalRuleType,Oe as createRule,mt as defineRegleConfig,qe as inferRules,L as unwrapRuleParameters,yt as useRegle};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@regle/core",
3
- "version": "0.2.5",
3
+ "version": "0.2.6",
4
4
  "description": "Typescript-first model-based form validation library for Vue 3",
5
5
  "peerDependencies": {
6
6
  "vue": "^3.1.0"