@regle/core 0.3.1 → 0.3.3

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,2 +1,2 @@
1
- 'use strict';var vue=require('vue');var xe=(t=>(t.Inline="__inline",t.Async="__async",t))(xe||{});function ke(e,r){return e.some(t=>t[r])}function qe(e,r){return e.reduce((t,a)=>{let n=a[r]||[];return t.concat(n)},[])}function k(e){return e.map(r=>r instanceof Function?r():vue.unref(r))}function ze(e){return e.map(r=>r instanceof Function||vue.isRef(r)?r:vue.toRef(()=>r))}function Je(e){let a=e.toString().replace(/\/\/.*$/gm,"").replace(/\/\*[\s\S]*?\*\//g,"").match(/^(?:async\s*)?(?:function\b.*?\(|\((.*?)\)|(\w+))\s*=>|\((.*?)\)\s*=>|function.*?\((.*?)\)|\((.*?)\)/);return a?(a[0]||a[1]||a[2]||a[3]||a[4]||"").split(",").map(d=>d.trim()).filter(d=>d.length>0).length:0}function De(e,...r){let{validator:t,type:a}=e,n=a==="__async"||t.constructor.name==="AsyncFunction";return {...{validator(v,...c){return e.validator(v,...k(c.length?c:r))},message(v,c){return typeof e.message=="function"?e.message(v,{...c,$params:k(c.$params?.length?c.$params:r)}):e.message},active(v,c){return typeof e.active=="function"?e.active(v,{...c,$params:k(c.$params?.length?c.$params:r)}):e.active??!0},tooltip(v,c){return typeof e.tooltip=="function"?e.tooltip(v,{...c,$params:k(c.$params?.length?c.$params:r)}):e.tooltip??[]},exec(v){let c=e.validator(v,...k(r)),g;return c instanceof Promise?c.then(w=>(g=w,typeof g=="object"&&"$valid"in g?g.$valid:typeof g=="boolean"?g:!1)):(g=c,typeof g=="object"&&"$valid"in g?g.$valid:typeof g=="boolean"?g:!1)}},_validator:e.validator,_message:e.message,_active:e.active,_tooltip:e.tooltip,_type:e.type,_patched:!1,_async:n,_params:ze(r)}}function Ce(e){if(typeof e.validator=="function"){let t=De(e,...[]),a=e.validator.constructor.name==="AsyncFunction";if(Je(e.validator)>1){let n=function(...s){return De(e,...s)};return n.validator=t.validator,n.message=t.message,n.active=t.active,n.tooltip=t.tooltip,n.type=t.type,n.exec=t.exec,n._validator=t.validator,n._message=t.message,n._active=t.active,n._tooltip=t.tooltip,n._type=e.type,n._patched=!1,n._async=a,n}else return t}throw new Error("Validator must be a function")}function q(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ye(e){return q(e.value)}function ee(e){let r=e,t={}.toString.call(e).slice(8,-1);if(t=="Set"&&(r=new Set([...e].map(a=>ee(a)))),t=="Map"&&(r=new Map([...e].map(a=>[ee(a[0]),ee(a[1])]))),t=="Date"&&(r=new Date(e.getTime())),t=="RegExp"&&(r=RegExp(e.source,ht(e))),t=="Array"||t=="Object"){r=Array.isArray(e)?[]:{};for(let a in e)r[a]=ee(e[a]);}return r}function ht(e){if(typeof e.source.flags=="string")return e.source.flags;{let r=[];return e.global&&r.push("g"),e.ignoreCase&&r.push("i"),e.multiline&&r.push("m"),e.sticky&&r.push("y"),e.unicode&&r.push("u"),r.join("")}}function Ie(e,r,t){return e instanceof Function?e(r,t??0):e}function Qe(e,r){vue.isRef(e)?e.value=r:e=r;}function Xe(e,r){vue.isRef(e)?e.value=[]:e=[],r.forEach((t,a)=>{let n=vue.isRef(e)?e.value[a]:e[a];n={},ie(n,r[a]);});}function ie(e,r){Object.entries({...vue.unref(e),...r}).forEach(([t,a])=>{let n=vue.isRef(e)?e.value:e,s=vue.isRef(r[t])?r[t]._value:r[t],d=vue.isRef(n[t])?n[t].value:n[t];Array.isArray(n[t])?(n[t]=[],Array.isArray(s)&&s.forEach((v,c)=>{n[t][c]={},ie(n[t][c],s[c]);})):q(s)?ie(d,s):vue.isRef(n[t])?n[t].value=s:n[t]=s;});}function ge(e,r,t){let a,n=(...s)=>new Promise(d=>{clearTimeout(a),a=setTimeout(()=>{a=void 0,Promise.resolve(e.apply(this,[...s])).then(d);},r);});return n.cancel=()=>{clearTimeout(a),a=void 0;},n}function Tt(e,r){let t=String(e).split("."),a=String(r).split(".");for(let n=0;n<Math.min(t.length,a.length);n++){let s=Number(t[n]),d=Number(a[n]);if(s>d)return 1;if(d>s)return -1;if(!isNaN(s)&&isNaN(d))return 1;if(isNaN(s)&&!isNaN(d))return -1}return 0}var $e=Tt(vue.version,"3.5.0")!==-1;function Et(){return Math.floor(Math.random()*Date.now()).toString()}function Se(){return typeof window>"u"?Et():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function Pe(){let e=vue.shallowRef(new Map),r=vue.shallowRef(new Map),t=vue.shallowRef(new Map),a=vue.shallowRef(new Map),n=vue.shallowRef(new Map),s=vue.shallowRef(new Map);function d(u){let i=r.value.get(u);if(i)return i;{let f=vue.ref({});return r.value.set(u,f),f}}function v(u){let i=t.value.get(u);if(i)return i;{let f=vue.ref([]);return t.value.set(u,f),f}}function c(u,i,f){s.value.set(`${u}-${i}`,f);}function g(u,i){return s.value.get(`${u}-${i}`)}function w(u,i){u&&i!=null&&s.value.delete(`${u}-${i}`);}function G(u,i){a.value.set(u,i);}function C(u){return a.value.get(u)??!1}function R(u,i){e.value.set(u,i);}function x(u,i){let f=e.value.get(u);return f?p(i,f)?{valid:!0}:{valid:!1}:void 0}function p(u,i){let f=Object.keys(i),j=Object.keys(u);return j.length!==f.length||!j.every(O=>f.includes(O))?!1:j.every(O=>{let b=u[O],A=i[O];return !A||!b||typeof b=="function"||typeof A=="function"||typeof b=="number"||typeof b=="boolean"?!1:b._params?b._params?.every((I,L)=>{if(typeof A=="number"||typeof A=="boolean")return !0;{let y=k(A._params),P=k(b._params);return y?.[L]===P?.[L]}}):!0})}function F(u){let i=n.value.get(u);if(i)return i;{let f=vue.ref(!1),j=vue.ref(!0),V=vue.ref({}),O=vue.ref(!1);return n.value.set(u,{$pending:f,$valid:j,$metadata:V,$validating:O}),{$pending:f,$valid:j,$metadata:V,$validating:O}}}return vue.onScopeDispose(()=>{e.value.clear(),r.value.clear(),t.value.clear(),a.value.clear(),n.value.clear(),s.value.clear();}),{addRuleDeclEntry:R,setDirtyEntry:G,checkRuleDeclEntry:x,getDirtyState:C,trySetRuleStatusRef:F,getFieldsEntry:d,getCollectionsEntry:v,getArrayStatus:g,addArrayStatus:c,deleteArrayStatus:w,arrayStatusStorage:s}}function Y(e){return e==null?!0:e instanceof Date?isNaN(e.getTime()):Array.isArray(e)?!1:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}function Ze(e,r){return q(e.value)&&q(r.value)&&!Object.entries(r.value).some(t=>ce(t))}function Ke(e,r){return !!e.value&&"$each"in e.value||Array.isArray(r.value)}function et(e){return !!e.value&&q(e.value)}function ce(e){return q(e)&&"_validator"in e}function fe(e){return typeof e.value!="function"}function tt(e){return q(e)&&"$fields"in e}function Oe({field:e,silent:r=!1}){return Object.entries(e.$rules??{}).map(([t,a])=>r||!a.$valid&&e.$dirty&&!a.$validating?a.$message:null).filter(t=>!!t).reduce((t,a)=>typeof a=="string"?t?.concat([a]):t?.concat(a),[]).concat(e.$dirty?e.$externalErrors??[]:[])}function rt({field:e}){return Object.entries(e.$rules??{}).map(([r,t])=>t.$tooltip).filter(r=>!!r).reduce((r,t)=>typeof t=="string"?r?.concat([t]):r?.concat(t),[])}function at({$dirty:e,customMessages:r,rule:t,ruleKey:a,state:n,path:s,storage:d,$debounce:v}){let c=vue.effectScope(),g,w,G=vue.ref(!1),{$pending:C,$valid:R,$metadata:x,$validating:p}=d.trySetRuleStatusRef(`${s}.${a}`);function F(){g=c.run(()=>{let b=vue.computed(()=>({$invalid:!R.value,$params:D.value,...x.value})),A=vue.computed(()=>fe(t)?typeof t.value.active=="function"?t.value.active(n.value,b.value):!!t.value.active:!0);function I(o){let m="",l=r?r[a]?.[o]:void 0;return l&&(typeof l=="function"?m=l(n.value,b.value):m=l),fe(t)&&(l&&!t.value._patched||(typeof t.value[o]=="function"?m=t.value[o](n.value,b.value):m=t.value[o]??"")),m}let L=vue.computed(()=>{let o=I("message");return Y(o)&&(o="Error",console.warn(`No error message defined for ${s}.${a}`)),o}),y=vue.computed(()=>I("tooltip")),P=vue.computed(()=>fe(t)&&t.value.type?t.value.type:a),T=vue.computed(()=>fe(t)?t.value.validator:t.value),D=vue.computed(()=>typeof t.value=="function"?[]:k(t.value._params??[])),_=vue.computed(()=>`${s}.${P.value}`);return {$active:A,$message:L,$type:P,$validator:T,$params:D,$path:_,$tooltip:y}}),w=vue.watch(g.$params,j,{deep:!0});}F();function u(){R.value=!0,e.value&&(C.value=!0);}async function i(){let b=g.$validator.value,A=b(n.value,...g.$params.value),I=!1,L=n.value;try{u();let y;if(A instanceof Promise?y=await A:y=A,n.value!==L)return !0;if(typeof y=="boolean")I=y;else {let{$valid:P,...T}=y;I=P,x.value=T;}}catch{I=!1;}finally{C.value=!1;}return I}let f=ge(i,v??200);async function j(){try{p.value=!0;let b=!1;if(ce(t.value)&&t.value._async)b=await f();else {let A=g.$validator.value,I=A(n.value,...g.$params.value);if(I 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(I!=null)if(typeof I=="boolean")b=I;else {let{$valid:L,...y}=I;b=L,x.value=y;}}return R.value=b,b}catch{return !1}finally{p.value=!1;}}function V(){R.value=!0,x.value={},C.value=!1,p.value=!1,F();}function O(){w(),c.stop(),c=vue.effectScope();}return vue.reactive({...g,$pending:C,$valid:R,$metadata:x,$haveAsync:G,$validating:p,$validate:j,$unwatch:O,$watch:F,$reset:V})}function be({state:e,rulesDef:r,customMessages:t,path:a,fieldName:n,storage:s,options:d,externalErrors:v,onUnwatch:c,$isArray:g,initialState:w,shortcuts:G}){let C=vue.effectScope(),R,x=[],p=vue.ref(!1),F=vue.ref(!1),u,i,f,j,V=()=>{};function O(){let $=r.value,W=s.checkRuleDeclEntry(a,$);P.value=Object.fromEntries(Object.entries($).filter(([H])=>H.startsWith("$"))),y.value=Object.fromEntries(Object.entries(r.value).filter(([H])=>!H.startsWith("$")).map(([H,U])=>{if(U){let M=vue.toRef(()=>U);return [H,at({$dirty:p,customMessages:t,rule:M,ruleKey:H,state:e,path:a,storage:s,$debounce:P.value.$debounce})]}return []}).filter(H=>!!H.length)),I(),b(),W?.valid!=null&&(p.value=s.getDirtyState(a),p.value&&V()),s.addRuleDeclEntry(a,$);}function b(){V=R.$debounce.value?ge(L,R.$debounce.value??R.$haveAnyAsyncRule?100:0):L;}function A(){y.value&&Object.entries(y.value).forEach(([$,W])=>{W.$unwatch();}),f(),p.value&&s.setDirtyEntry(a,p.value),u?.(),i?.(),C.stop(),C=vue.effectScope(),x.forEach($=>$.stop()),x=[],c?.(),j?.();}function I(){y.value&&Object.entries(y.value).forEach(([$,W])=>{W.$watch();}),R=C.run(()=>{let $=vue.computed(()=>p.value),W=vue.computed(()=>P.value.$debounce),H=vue.computed(()=>P.value.$lazy!=null?P.value.$lazy:vue.unref(d.lazy)),U=vue.computed(()=>E.value===!0?!1:P.value.$rewardEarly!=null?P.value.$rewardEarly:vue.unref(d.rewardEarly)),M=vue.computed(()=>P.value.$clearExternalErrorsOnChange!=null?P.value.$clearExternalErrorsOnChange:vue.unref(d.clearExternalErrorsOnChange)),E=vue.computed(()=>P.value.$autoDirty!=null?P.value.$autoDirty:vue.unref(d.autoDirty)),h=vue.computed(()=>Object.entries(y.value).some(([X,K])=>K.$validating)),Z=vue.computed(()=>ve.value&&!ye.value&&p.value),se=vue.computed(()=>Z.value?Oe({field:{$dirty:p.value,$externalErrors:v?.value,$rules:y.value}}):[]),ue=vue.computed(()=>Z.value?rt({field:{$rules:y.value}}):[]),Ne=vue.computed(()=>Oe({field:{$dirty:p.value,$externalErrors:v?.value,$rules:y.value},silent:!0})),We=vue.computed(()=>!(ve.value||ye.value)),ye=vue.computed(()=>F.value||!U.value?Object.entries(y.value).some(([X,K])=>K.$pending):!1),ve=vue.computed(()=>v?.value?.length?!0:Y(y.value)?!1:!U.value||U.value&&F.value?Object.entries(y.value).some(([X,K])=>!K.$valid):!1),Ue=vue.computed(()=>n),Ee=vue.computed(()=>v?.value?.length||Y(y.value)?!1:p.value&&!Y(e.value)&&!h.value?Object.values(y.value).every(X=>X.$valid&&X.$active):!1),mt=vue.computed(()=>Object.entries(y.value).some(([X,K])=>K.$haveAsync));function yt(){G?.fields&&Object.entries(G.fields).forEach(([X,K])=>{let He=vue.effectScope();Be[X]=He.run(()=>{let Le=vue.ref();return vue.watchEffect(()=>{Le.value=K(vue.reactive({$dirty:p,$externalErrors:v?.value??[],$value:e,$rules:y,$error:Z,$pending:ye,$invalid:ve,$valid:Ee,$errors:se,$ready:We,$silentErrors:Ne,$anyDirty:$,$tooltips:ue,$name:Ue}));}),Le}),x.push(He);});}let Be={};return yt(),vue.watch(Ee,X=>{X&&(F.value=!1);}),{$error:Z,$pending:ye,$invalid:ve,$valid:Ee,$debounce:W,$lazy:H,$errors:se,$ready:We,$silentErrors:Ne,$rewardEarly:U,$autoDirty:E,$clearExternalErrorsOnChange:M,$anyDirty:$,$name:Ue,$haveAnyAsyncRule:mt,$shortcuts:Be,$validating:h,$tooltips:ue}}),u=vue.watch(e,()=>{R.$autoDirty.value&&(p.value||(p.value=!0)),r.value instanceof Function&&O(),(R.$autoDirty.value||R.$rewardEarly.value&&R.$error.value)&&V(),R.$rewardEarly.value!==!0&&R.$clearExternalErrorsOnChange.value&&l();},{deep:g?!0:$e?1:!0}),f=vue.watch(p,()=>{s.setDirtyEntry(a,p.value);}),i=vue.watch(R.$valid,$=>{R.$rewardEarly.value&&$&&(F.value=!1);}),j=vue.watch(R.$haveAnyAsyncRule,b);}function L(){Object.values(y.value).forEach($=>{$.$validate();});}let y=vue.ref(),P=vue.ref();O();function T(){l(),p.value=!1,Object.entries(y.value).forEach(([$,W])=>{W.$reset();}),!R.$lazy.value&&R.$autoDirty.value&&Object.values(y.value).forEach($=>$.$validate());}function D($=!0,W=!1){p.value||(p.value=!0),W&&$?(R.$autoDirty.value||R.$rewardEarly.value&&R.$error.value)&&V():$&&V();}async function _(){try{let $=e.value;if(F.value=!0,!p.value)p.value=!0;else if(R.$autoDirty.value&&p.value&&!R.$pending.value)return {result:!R.$error.value,data:$};return Y(y.value)?{result:!0,data:$}:{result:(await Promise.allSettled(Object.entries(y.value).map(([U,M])=>M.$validate()))).every(U=>U.status==="fulfilled"?U.value===!0:!1),data:$}}catch{return {result:!1,data:e.value}}}function o(){A(),e.value=Qe(e,w),T();}function m($=!0){return p.value?e.value:null}function l(){v?.value?.length&&(v.value=[]);}!R.$lazy.value&&!p.value&&R.$autoDirty.value&&V();let{$shortcuts:S,$validating:N,...J}=R;return vue.reactive({$dirty:p,...J,$externalErrors:v,$value:e,$rules:y,...S,$reset:T,$touch:D,$validate:_,$unwatch:A,$watch:I,$resetAll:o,$extractDirtyFields:m,$clearExternalErrors:l})}function Ae({$id:e,path:r,index:t,options:a,storage:n,stateValue:s,customMessages:d,rules:v,externalErrors:c,initialState:g,shortcuts:w,fieldName:G}){let C=v.$key?v.$key:Se(),R=`${r}.${String(C)}`;typeof s.value=="object"&&s.value!=null&&(s.value.$id?R=`${r}.${s.value.$id}`:Object.defineProperties(s.value,{$id:{value:C,enumerable:!1,configurable:!1,writable:!1}}));let x=de({state:s,rulesDef:vue.toRef(()=>v),customMessages:d,path:R,storage:n,options:a,externalErrors:vue.toRef(c?.value??[],t),initialState:g?.[t],shortcuts:w,fieldName:G});if(x){let p=s.value?.$id;x.$id=p??String(C),n.addArrayStatus(e,x.$id,x);}return x}function ut({state:e,rulesDef:r,customMessages:t,path:a,storage:n,options:s,externalErrors:d,initialState:v,shortcuts:c,fieldName:g}){let w=vue.effectScope(),G,C=vue.effectScope(),R,x=[];if(!Array.isArray(e.value)&&!r.value.$each)return null;let p=vue.ref(),F=vue.ref(e.value),u,i=vue.ref({}),f=n.getCollectionsEntry(a);R=C.run(()=>({isPrimitiveArray:vue.computed(()=>Array.isArray(e.value)&&e.value.length?e.value.some(m=>typeof m!="object"):r.value.$each&&!(r.value.$each instanceof Function)?Object.values(r.value.$each).every(m=>ce(m)):!1)})),j(),O();function j(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?(p.value=Se(),Object.defineProperties(e.value,{$id:{value:p.value,enumerable:!1,configurable:!1,writable:!1}})):e.value?.$id&&(p.value=e.value.$id)),!R.isPrimitiveArray.value&&(F.value=i.value.$value,Array.isArray(e.value)?f.value=e.value.map((o,m)=>{let l=Ie(r.value.$each,vue.toRef(()=>o),m),S=Ae({$id:p.value,path:a,customMessages:t,rules:l??{},stateValue:vue.toRef(()=>o),index:m,options:s,storage:n,externalErrors:vue.toRef(d?.value??{},"$each"),initialState:v?.[m],shortcuts:c,fieldName:g});return S||null}).filter(o=>!!o):f.value=[],i.value=be({state:e,rulesDef:r,customMessages:t,path:a,storage:n,options:s,externalErrors:vue.toRef(d?.value??{},"$self"),$isArray:!0,initialState:v,shortcuts:c,fieldName:g}));}function V(){if(Array.isArray(e.value)){let o=ee(f.value);f.value=e.value.map((m,l)=>{let S=vue.toRef(()=>m);if(m.$id&&f.value.find(N=>N.$id===m.$id)){let N=n.getArrayStatus(p.value,m.$id);return N?(N.$value=S,N):null}else {let N=Ie(r.value.$each,S,l);if(N){let J=Ae({$id:p.value,path:a,customMessages:t,rules:N,stateValue:S,index:l,options:s,storage:n,externalErrors:vue.toRef(d?.value??{},"$each"),initialState:v?.[l],shortcuts:c,fieldName:g});return J||null}}}).filter(m=>!!m),o.filter(m=>!e.value.find(l=>m.$id===l.$id)).forEach((m,l)=>{n.deleteArrayStatus(p.value,l.toString());});}else f.value=[];}function O(){u=vue.watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?j():V();},{deep:$e?1:!0,flush:"pre"}),G=w.run(()=>{let o=vue.computed(()=>i.value.$dirty&&f.value.every(h=>h.$dirty)),m=vue.computed(()=>i.value.$anyDirty||f.value.some(h=>h.$dirty)),l=vue.computed(()=>i.value.$invalid||f.value.some(h=>h.$invalid)),S=vue.computed(()=>(Y(i.value.$rules)?!0:i.value.$valid)&&f.value.every(h=>h.$valid)),N=vue.computed(()=>i.value.$error||f.value.some(h=>h.$error)),J=vue.computed(()=>!(l.value||$.value)),$=vue.computed(()=>i.value.$pending||f.value.some(h=>h.$pending)),W=vue.computed(()=>({$self:i.value.$errors,$each:f.value.map(h=>h.$errors)})),H=vue.computed(()=>({$self:i.value.$silentErrors,$each:f.value.map(h=>h.$silentErrors)})),U=vue.computed(()=>g);function M(){c?.collections&&Object.entries(c?.collections).forEach(([h,Z])=>{let se=vue.effectScope();E[h]=se.run(()=>{let ue=vue.ref();return vue.watchEffect(()=>{ue.value=Z(vue.reactive({$dirty:o,$error:N,$pending:$,$invalid:l,$valid:S,$errors:W,$ready:J,$silentErrors:H,$anyDirty:m,$name:U,$each:f,$field:i,$value:e}));}),ue}),x.push(se);});}let E={};return M(),{$dirty:o,$anyDirty:m,$invalid:l,$valid:S,$error:N,$pending:$,$errors:W,$silentErrors:H,$ready:J,$name:U,$shortcuts:E}}),R.isPrimitiveArray.value&&(console.warn(`${a} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`),u());}function b(){u&&u(),i.value&&i.value.$unwatch(),f.value&&f.value.forEach(o=>{"$dirty"in o&&o.$unwatch();}),w.stop(),w=vue.effectScope(),C.stop(),C=vue.effectScope(!0),x.forEach(o=>o.stop()),x=[];}function A(o=!0,m=!1){i.value.$touch(o,m),f.value.forEach(l=>{l.$touch(o,m);});}function I(){i.value.$reset(),f.value.forEach(o=>{o.$reset();});}async function L(){let o=e.value;try{return {result:(await Promise.allSettled([i.value.$validate(),...f.value.map(S=>S.$validate())])).every(S=>S.status==="fulfilled"?S.value.result===!0:!1),data:o}}catch{return {result:!1,data:o}}}function y(){i.value.$clearExternalErrors(),f.value.forEach(o=>{o.$clearExternalErrors();});}function P(o=!0){let m=f.value.map(l=>{if(tt(l))return l.$extractDirtyFields(o)});return o&&(m=m.filter(l=>q(l)?!Y(l):!!l)),m}function T(){b(),Xe(e,v),I();}let{$shortcuts:D,..._}=G;return vue.reactive({$field:i,..._,...D,$each:f,$value:e,$validate:L,$unwatch:b,$watch:O,$touch:A,$reset:I,$resetAll:T,$extractDirtyFields:P,$clearExternalErrors:y})}function Fe({rulesDef:e,state:r,path:t="",rootRules:a,externalErrors:n,validationGroups:s,initialState:d,fieldName:v,...c}){let g=vue.effectScope(),w,G=[],C=null,R=null,x=null;async function F(T=!0){let D=Object.entries(e.value),_=Object.fromEntries(D.filter(([l,S])=>!!S).map(([l,S])=>{if(S){let N=vue.toRef(r.value,l),J=vue.toRef(()=>S),$=vue.toRef(n?.value??{},l);return [l,de({state:N,rulesDef:J,path:t?`${t}.${l}`:l,externalErrors:$,initialState:d?.[l],fieldName:l,...c})]}return []})),o=Object.fromEntries(Object.entries(vue.unref(n)??{}).filter(([l,S])=>!(l in e.value)&&!!S).map(([l])=>{let S=vue.toRef(r.value,l);return [l,de({state:S,rulesDef:vue.computed(()=>({})),path:t?`${t}.${l}`:l,externalErrors:vue.toRef(n?.value??{},l),initialState:d?.[l],fieldName:l,...c})]})),m=Object.fromEntries(Object.entries(r.value).filter(([l])=>!(l in e.value)&&!(l in(o.value??{}))).map(([l])=>{let S=vue.toRef(r.value,l);return [l,de({state:S,rulesDef:vue.computed(()=>({})),path:t?`${t}.${l}`:l,externalErrors:vue.toRef(n?.value??{},l),initialState:d?.[l],fieldName:l,...c})]}));u.value={..._,...o,...m},T&&V();}let u=c.storage.getFieldsEntry(t);F();function i(){R?.(),Object.values(u.value).forEach(T=>{T.$reset();}),j();}function f(T=!0,D=!1){Object.values(u.value).forEach(_=>{_.$touch(T,D);});}function j(){n?.value&&(R=vue.watch(n,()=>{O(),F();},{deep:!0}));}function V(){a&&(C=vue.watch(a,()=>{O(),F();},{deep:!0,flush:"post"}),j()),x=vue.watch(r,()=>{O(),F(),f(!0,!0);},{flush:"sync"}),w=g.run(()=>{let T=vue.computed(()=>!!Object.entries(u.value).length&&Object.entries(u.value).every(([M,E])=>E?.$dirty)),D=vue.computed(()=>Object.entries(u.value).some(([M,E])=>E?.$dirty)),_=vue.computed(()=>Object.entries(u.value).some(([M,E])=>E?.$invalid)),o=vue.computed(()=>Object.entries(u.value).every(([M,E])=>E?.$valid)),m=vue.computed(()=>D.value&&!S.value&&_.value),l=vue.computed(()=>vue.unref(c.options.autoDirty)?D.value&&!(_.value||S.value):!(_.value||S.value)),S=vue.computed(()=>Object.entries(u.value).some(([M,E])=>E?.$pending)),N=vue.computed(()=>Object.fromEntries(Object.entries(u.value).map(([M,E])=>[M,E?.$errors]))),J=vue.computed(()=>Object.fromEntries(Object.entries(u.value).map(([M,E])=>[M,E?.$silentErrors]))),$=vue.computed(()=>v);function W(){c.shortcuts?.nested&&Object.entries(c.shortcuts.nested).forEach(([M,E])=>{let h=vue.effectScope();U[M]=h.run(()=>{let Z=vue.ref();return vue.watchEffect(()=>{Z.value=E(vue.reactive({$dirty:T,$value:r,$error:m,$pending:S,$invalid:_,$valid:o,$ready:l,$anyDirty:D,$name:$,$silentErrors:J,$errors:N,$fields:u}));}),Z}),G.push(h);});}let H=vue.computed(()=>s?Object.fromEntries(Object.entries(s?.(u.value)??{}).map(([M,E])=>E.length?[M,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$valid"].map(h=>[h,ke(E,h)])),...Object.fromEntries(["$errors","$silentErrors"].map(h=>[h,qe(E,h)]))}]:[])):{}),U={};return W(),{$dirty:T,$anyDirty:D,$invalid:_,$valid:o,$error:m,$pending:S,$errors:N,$silentErrors:J,$ready:l,$name:$,$shortcuts:U,$groups:H}});}function O(){C?.(),R?.(),x?.(),G.forEach(T=>T.stop()),G=[],u.value&&Object.entries(u.value).forEach(([T,D])=>{D.$unwatch();});}function b(){Object.entries(u.value).forEach(([T,D])=>{D.$clearExternalErrors();});}function A(){O(),ie(r,d??{}),F(!1),i(),V();}function I(T=!0){let D=Object.entries(u.value).map(([_,o])=>[_,o.$extractDirtyFields(T)]);return T&&(D=D.filter(([_,o])=>q(o)?!Y(o):Array.isArray(o)?o.length:!!o)),Object.fromEntries(D)}async function L(){try{let T=r.value;return {result:(await Promise.allSettled(Object.values(u.value).map(o=>o.$validate()))).every(o=>o.status==="fulfilled"?o.value.result===!0:!1),data:T}}catch{return {result:!1,data:r.value}}}let{$shortcuts:y,...P}=w;return vue.reactive({...P,...y,$fields:u,$value:r,$resetAll:A,$reset:i,$touch:f,$validate:L,$unwatch:O,$watch:V,$clearExternalErrors:b,$extractDirtyFields:I})}function de({rulesDef:e,externalErrors:r,...t}){return Ke(e,t.state)?ut({rulesDef:e,externalErrors:r,...t}):Ze(t.state,e)&&Ye(t.state)?Fe({rulesDef:e,externalErrors:r,...t}):et(e)?be({rulesDef:e,externalErrors:r,...t}):null}function je({initialState:e,options:r,scopeRules:t,state:a,customRules:n,shortcuts:s}){let d=Pe();return vue.reactive(Fe({rootRules:t,rulesDef:t,state:a,customMessages:n?.(),storage:d,options:r,externalErrors:r.externalErrors,validationGroups:r.validationGroups,initialState:e,shortcuts:s,fieldName:"root",path:""}))}function Ve(e,r,t){let a={autoDirty:r?.autoDirty??!0,lazy:r?.lazy??!1,rewardEarly:r?.rewardEarly??!1,clearExternalErrorsOnChange:r?.clearExternalErrorsOnChange??!0};function n(s,d,v){let c=vue.isRef(d)?d:vue.computed(typeof d=="function"?d:()=>d),g={...a,...v},w=vue.isRef(s)?s:vue.ref(s),G=ee(vue.toRaw(w.value));return {r$:je({scopeRules:c,state:w,options:g,initialState:G,customRules:e,shortcuts:t})}}return n}var pt=Ve();function _e(){function e(r,t){return t}return e}var Ge=_e();function dt({rules:e,modifiers:r,shortcuts:t}){let a=Ve(e,r,t),n=_e();return {useRegle:a,inferRules:n}}
1
+ 'use strict';var vue=require('vue');var xe=(t=>(t.Inline="__inline",t.Async="__async",t))(xe||{});function ke(e,r){return e.some(t=>t[r])}function qe(e,r){return e.reduce((t,a)=>{let n=a[r]||[];return t.concat(n)},[])}function k(e){return e.map(r=>r instanceof Function?r():vue.unref(r))}function ze(e){return e.map(r=>r instanceof Function||vue.isRef(r)?r:vue.toRef(()=>r))}function Je(e){let a=e.toString().replace(/\/\/.*$/gm,"").replace(/\/\*[\s\S]*?\*\//g,"").match(/^(?:async\s*)?(?:function\b.*?\(|\((.*?)\)|(\w+))\s*=>|\((.*?)\)\s*=>|function.*?\((.*?)\)|\((.*?)\)/);return a?(a[0]||a[1]||a[2]||a[3]||a[4]||"").split(",").map(d=>d.trim()).filter(d=>d.length>0).length:0}function De(e,...r){let{validator:t,type:a}=e,n=a==="__async"||t.constructor.name==="AsyncFunction";return {...{validator(v,...c){return e.validator(v,...k(c.length?c:r))},message(v,c){return typeof e.message=="function"?e.message(v,{...c,$params:k(c.$params?.length?c.$params:r)}):e.message},active(v,c){return typeof e.active=="function"?e.active(v,{...c,$params:k(c.$params?.length?c.$params:r)}):e.active??!0},tooltip(v,c){return typeof e.tooltip=="function"?e.tooltip(v,{...c,$params:k(c.$params?.length?c.$params:r)}):e.tooltip??[]},exec(v){let c=e.validator(v,...k(r)),g;return c instanceof Promise?c.then(w=>(g=w,typeof g=="object"&&"$valid"in g?g.$valid:typeof g=="boolean"?g:!1)):(g=c,typeof g=="object"&&"$valid"in g?g.$valid:typeof g=="boolean"?g:!1)}},_validator:e.validator,_message:e.message,_active:e.active,_tooltip:e.tooltip,_type:e.type,_message_patched:!1,_tooltip_patched:!1,_async:n,_params:ze(r)}}function Ce(e){if(typeof e.validator=="function"){let t=De(e,...[]),a=e.validator.constructor.name==="AsyncFunction";if(Je(e.validator)>1){let n=function(...s){return De(e,...s)};return n.validator=t.validator,n.message=t.message,n.active=t.active,n.tooltip=t.tooltip,n.type=t.type,n.exec=t.exec,n._validator=t.validator,n._message=t.message,n._active=t.active,n._tooltip=t.tooltip,n._type=e.type,n._message_pacthed=!1,n._tooltip_pacthed=!1,n._async=a,n}else return t}throw new Error("Validator must be a function")}function q(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ye(e){return q(e.value)}function ee(e){let r=e,t={}.toString.call(e).slice(8,-1);if(t=="Set"&&(r=new Set([...e].map(a=>ee(a)))),t=="Map"&&(r=new Map([...e].map(a=>[ee(a[0]),ee(a[1])]))),t=="Date"&&(r=new Date(e.getTime())),t=="RegExp"&&(r=RegExp(e.source,ht(e))),t=="Array"||t=="Object"){r=Array.isArray(e)?[]:{};for(let a in e)r[a]=ee(e[a]);}return r}function ht(e){if(typeof e.source.flags=="string")return e.source.flags;{let r=[];return e.global&&r.push("g"),e.ignoreCase&&r.push("i"),e.multiline&&r.push("m"),e.sticky&&r.push("y"),e.unicode&&r.push("u"),r.join("")}}function Ie(e,r,t){return e instanceof Function?e(r,t??0):e}function Qe(e,r){vue.isRef(e)?e.value=r:e=r;}function Xe(e,r){vue.isRef(e)?e.value=[]:e=[],r.forEach((t,a)=>{let n=vue.isRef(e)?e.value[a]:e[a];n={},ie(n,r[a]);});}function ie(e,r){Object.entries({...vue.unref(e),...r}).forEach(([t,a])=>{let n=vue.isRef(e)?e.value:e,s=vue.isRef(r[t])?r[t]._value:r[t],d=vue.isRef(n[t])?n[t].value:n[t];Array.isArray(n[t])?(n[t]=[],Array.isArray(s)&&s.forEach((v,c)=>{n[t][c]={},ie(n[t][c],s[c]);})):q(s)?ie(d,s):vue.isRef(n[t])?n[t].value=s:n[t]=s;});}function ge(e,r,t){let a,n=(...s)=>new Promise(d=>{clearTimeout(a),a=setTimeout(()=>{a=void 0,Promise.resolve(e.apply(this,[...s])).then(d);},r);});return n.cancel=()=>{clearTimeout(a),a=void 0;},n}function Tt(e,r){let t=String(e).split("."),a=String(r).split(".");for(let n=0;n<Math.min(t.length,a.length);n++){let s=Number(t[n]),d=Number(a[n]);if(s>d)return 1;if(d>s)return -1;if(!isNaN(s)&&isNaN(d))return 1;if(isNaN(s)&&!isNaN(d))return -1}return 0}var $e=Tt(vue.version,"3.5.0")!==-1;function Et(){return Math.floor(Math.random()*Date.now()).toString()}function Se(){return typeof window>"u"?Et():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function Pe(){let e=vue.shallowRef(new Map),r=vue.shallowRef(new Map),t=vue.shallowRef(new Map),a=vue.shallowRef(new Map),n=vue.shallowRef(new Map),s=vue.shallowRef(new Map);function d(u){let i=r.value.get(u);if(i)return i;{let f=vue.ref({});return r.value.set(u,f),f}}function v(u){let i=t.value.get(u);if(i)return i;{let f=vue.ref([]);return t.value.set(u,f),f}}function c(u,i,f){s.value.set(`${u}-${i}`,f);}function g(u,i){return s.value.get(`${u}-${i}`)}function w(u,i){u&&i!=null&&s.value.delete(`${u}-${i}`);}function G(u,i){a.value.set(u,i);}function C(u){return a.value.get(u)??!1}function R(u,i){e.value.set(u,i);}function x(u,i){let f=e.value.get(u);return f?p(i,f)?{valid:!0}:{valid:!1}:void 0}function p(u,i){let f=Object.keys(i),j=Object.keys(u);return j.length!==f.length||!j.every(O=>f.includes(O))?!1:j.every(O=>{let b=u[O],A=i[O];return !A||!b||typeof b=="function"||typeof A=="function"||typeof b=="number"||typeof b=="boolean"?!1:b._params?b._params?.every((I,L)=>{if(typeof A=="number"||typeof A=="boolean")return !0;{let y=k(A._params),P=k(b._params);return y?.[L]===P?.[L]}}):!0})}function F(u){let i=n.value.get(u);if(i)return i;{let f=vue.ref(!1),j=vue.ref(!0),V=vue.ref({}),O=vue.ref(!1);return n.value.set(u,{$pending:f,$valid:j,$metadata:V,$validating:O}),{$pending:f,$valid:j,$metadata:V,$validating:O}}}return vue.onScopeDispose(()=>{e.value.clear(),r.value.clear(),t.value.clear(),a.value.clear(),n.value.clear(),s.value.clear();}),{addRuleDeclEntry:R,setDirtyEntry:G,checkRuleDeclEntry:x,getDirtyState:C,trySetRuleStatusRef:F,getFieldsEntry:d,getCollectionsEntry:v,getArrayStatus:g,addArrayStatus:c,deleteArrayStatus:w,arrayStatusStorage:s}}function Y(e){return e==null?!0:e instanceof Date?isNaN(e.getTime()):Array.isArray(e)?!1:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}function Ze(e,r){return q(e.value)&&q(r.value)&&!Object.entries(r.value).some(t=>ce(t))}function Ke(e,r){return !!e.value&&"$each"in e.value||Array.isArray(r.value)}function et(e){return !!e.value&&q(e.value)}function ce(e){return q(e)&&"_validator"in e}function fe(e){return typeof e.value!="function"}function tt(e){return q(e)&&"$fields"in e}function Oe({field:e,silent:r=!1}){return Object.entries(e.$rules??{}).map(([t,a])=>r||!a.$valid&&e.$dirty&&!a.$validating?a.$message:null).filter(t=>!!t).reduce((t,a)=>typeof a=="string"?t?.concat([a]):t?.concat(a),[]).concat(e.$dirty?e.$externalErrors??[]:[])}function rt({field:e}){return Object.entries(e.$rules??{}).map(([r,t])=>t.$tooltip).filter(r=>!!r).reduce((r,t)=>typeof t=="string"?r?.concat([t]):r?.concat(t),[])}function at({$dirty:e,customMessages:r,rule:t,ruleKey:a,state:n,path:s,storage:d,$debounce:v}){let c=vue.effectScope(),g,w,G=vue.ref(!1),{$pending:C,$valid:R,$metadata:x,$validating:p}=d.trySetRuleStatusRef(`${s}.${a}`);function F(){g=c.run(()=>{let b=vue.computed(()=>({$invalid:!R.value,$pending:C.value,$dirty:e.value,$params:D.value,...x.value})),A=vue.computed(()=>fe(t)?typeof t.value.active=="function"?t.value.active(n.value,b.value):!!t.value.active:!0);function I(o){let m="",l=r?r[a]?.[o]:void 0;if(l&&(typeof l=="function"?m=l(n.value,b.value):m=l),fe(t)){let $=`_${o}_patched`;l&&!t.value[$]||(typeof t.value[o]=="function"?m=t.value[o](n.value,b.value):m=t.value[o]??"");}return m}let L=vue.computed(()=>{let o=I("message");return Y(o)&&(o="Error",typeof window<"u"&&typeof process>"u"&&console.warn(`No error message defined for ${s}.${a}`)),o}),y=vue.computed(()=>I("tooltip")),P=vue.computed(()=>fe(t)&&t.value.type?t.value.type:a),T=vue.computed(()=>fe(t)?t.value.validator:t.value),D=vue.computed(()=>typeof t.value=="function"?[]:k(t.value._params??[])),_=vue.computed(()=>`${s}.${P.value}`);return {$active:A,$message:L,$type:P,$validator:T,$params:D,$path:_,$tooltip:y}}),w=vue.watch(g.$params,j,{deep:!0});}F();function u(){R.value=!0,e.value&&(C.value=!0);}async function i(){let b=g.$validator.value,A=b(n.value,...g.$params.value),I=!1,L=n.value;try{u();let y;if(A instanceof Promise?y=await A:y=A,n.value!==L)return !0;if(typeof y=="boolean")I=y;else {let{$valid:P,...T}=y;I=P,x.value=T;}}catch{I=!1;}finally{C.value=!1;}return I}let f=ge(i,v??200);async function j(){try{p.value=!0;let b=!1;if(ce(t.value)&&t.value._async)b=await f();else {let A=g.$validator.value,I=A(n.value,...g.$params.value);if(I 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(I!=null)if(typeof I=="boolean")b=I;else {let{$valid:L,...y}=I;b=L,x.value=y;}}return R.value=b,b}catch{return !1}finally{p.value=!1;}}function V(){R.value=!0,x.value={},C.value=!1,p.value=!1,F();}function O(){w(),c.stop(),c=vue.effectScope();}return vue.reactive({...g,$pending:C,$valid:R,$metadata:x,$haveAsync:G,$validating:p,$validate:j,$unwatch:O,$watch:F,$reset:V})}function be({state:e,rulesDef:r,customMessages:t,path:a,fieldName:n,storage:s,options:d,externalErrors:v,onUnwatch:c,$isArray:g,initialState:w,shortcuts:G}){let C=vue.effectScope(),R,x=[],p=vue.ref(!1),F=vue.ref(!1),u,i,f,j,V=()=>{};function O(){let S=r.value,W=s.checkRuleDeclEntry(a,S);P.value=Object.fromEntries(Object.entries(S).filter(([H])=>H.startsWith("$"))),y.value=Object.fromEntries(Object.entries(r.value).filter(([H])=>!H.startsWith("$")).map(([H,U])=>{if(U){let M=vue.toRef(()=>U);return [H,at({$dirty:p,customMessages:t,rule:M,ruleKey:H,state:e,path:a,storage:s,$debounce:P.value.$debounce})]}return []}).filter(H=>!!H.length)),I(),b(),W?.valid!=null&&(p.value=s.getDirtyState(a),p.value&&V()),s.addRuleDeclEntry(a,S);}function b(){V=R.$debounce.value?ge(L,R.$debounce.value??R.$haveAnyAsyncRule?100:0):L;}function A(){y.value&&Object.entries(y.value).forEach(([S,W])=>{W.$unwatch();}),f(),p.value&&s.setDirtyEntry(a,p.value),u?.(),i?.(),C.stop(),C=vue.effectScope(),x.forEach(S=>S.stop()),x=[],c?.(),j?.();}function I(){y.value&&Object.entries(y.value).forEach(([S,W])=>{W.$watch();}),R=C.run(()=>{let S=vue.computed(()=>p.value),W=vue.computed(()=>P.value.$debounce),H=vue.computed(()=>P.value.$lazy!=null?P.value.$lazy:vue.unref(d.lazy)),U=vue.computed(()=>E.value===!0?!1:P.value.$rewardEarly!=null?P.value.$rewardEarly:vue.unref(d.rewardEarly)),M=vue.computed(()=>P.value.$clearExternalErrorsOnChange!=null?P.value.$clearExternalErrorsOnChange:vue.unref(d.clearExternalErrorsOnChange)),E=vue.computed(()=>P.value.$autoDirty!=null?P.value.$autoDirty:vue.unref(d.autoDirty)),h=vue.computed(()=>Object.entries(y.value).some(([X,Z])=>Z.$validating)),K=vue.computed(()=>ve.value&&!ye.value&&p.value),se=vue.computed(()=>K.value?Oe({field:{$dirty:p.value,$externalErrors:v?.value,$rules:y.value}}):[]),ue=vue.computed(()=>rt({field:{$rules:y.value}})),Ne=vue.computed(()=>Oe({field:{$dirty:p.value,$externalErrors:v?.value,$rules:y.value},silent:!0})),We=vue.computed(()=>!(ve.value||ye.value)),ye=vue.computed(()=>F.value||!U.value?Object.entries(y.value).some(([X,Z])=>Z.$pending):!1),ve=vue.computed(()=>v?.value?.length?!0:Y(y.value)?!1:!U.value||U.value&&F.value?Object.entries(y.value).some(([X,Z])=>!Z.$valid):!1),Ue=vue.computed(()=>n),Ee=vue.computed(()=>v?.value?.length||Y(y.value)?!1:p.value&&!Y(e.value)&&!h.value?Object.values(y.value).every(X=>X.$valid&&X.$active):!1),mt=vue.computed(()=>Object.entries(y.value).some(([X,Z])=>Z.$haveAsync));function yt(){G?.fields&&Object.entries(G.fields).forEach(([X,Z])=>{let He=vue.effectScope();Be[X]=He.run(()=>{let Le=vue.ref();return vue.watchEffect(()=>{Le.value=Z(vue.reactive({$dirty:p,$externalErrors:v?.value??[],$value:e,$rules:y,$error:K,$pending:ye,$invalid:ve,$valid:Ee,$errors:se,$ready:We,$silentErrors:Ne,$anyDirty:S,$tooltips:ue,$name:Ue}));}),Le}),x.push(He);});}let Be={};return yt(),vue.watch(Ee,X=>{X&&(F.value=!1);}),{$error:K,$pending:ye,$invalid:ve,$valid:Ee,$debounce:W,$lazy:H,$errors:se,$ready:We,$silentErrors:Ne,$rewardEarly:U,$autoDirty:E,$clearExternalErrorsOnChange:M,$anyDirty:S,$name:Ue,$haveAnyAsyncRule:mt,$shortcuts:Be,$validating:h,$tooltips:ue}}),u=vue.watch(e,()=>{R.$autoDirty.value&&(p.value||(p.value=!0)),r.value instanceof Function&&O(),(R.$autoDirty.value||R.$rewardEarly.value&&R.$error.value)&&V(),R.$rewardEarly.value!==!0&&R.$clearExternalErrorsOnChange.value&&l();},{deep:g?!0:$e?1:!0}),f=vue.watch(p,()=>{s.setDirtyEntry(a,p.value);}),i=vue.watch(R.$valid,S=>{R.$rewardEarly.value&&S&&(F.value=!1);}),j=vue.watch(R.$haveAnyAsyncRule,b);}function L(){Object.values(y.value).forEach(S=>{S.$validate();});}let y=vue.ref(),P=vue.ref();O();function T(){l(),p.value=!1,Object.entries(y.value).forEach(([S,W])=>{W.$reset();}),!R.$lazy.value&&R.$autoDirty.value&&Object.values(y.value).forEach(S=>S.$validate());}function D(S=!0,W=!1){p.value||(p.value=!0),W&&S?(R.$autoDirty.value||R.$rewardEarly.value&&R.$error.value)&&V():S&&V();}async function _(){try{let S=e.value;if(F.value=!0,!p.value)p.value=!0;else if(R.$autoDirty.value&&p.value&&!R.$pending.value)return {result:!R.$error.value,data:S};return Y(y.value)?{result:!0,data:S}:{result:(await Promise.allSettled(Object.entries(y.value).map(([U,M])=>M.$validate()))).every(U=>U.status==="fulfilled"?U.value===!0:!1),data:S}}catch{return {result:!1,data:e.value}}}function o(){A(),e.value=Qe(e,w),T();}function m(S=!0){return p.value?e.value:null}function l(){v?.value?.length&&(v.value=[]);}!R.$lazy.value&&!p.value&&R.$autoDirty.value&&V();let{$shortcuts:$,$validating:N,...J}=R;return vue.reactive({$dirty:p,...J,$externalErrors:v,$value:e,$rules:y,...$,$reset:T,$touch:D,$validate:_,$unwatch:A,$watch:I,$resetAll:o,$extractDirtyFields:m,$clearExternalErrors:l})}function Ae({$id:e,path:r,index:t,options:a,storage:n,stateValue:s,customMessages:d,rules:v,externalErrors:c,initialState:g,shortcuts:w,fieldName:G}){let C=v.$key?v.$key:Se(),R=`${r}.${String(C)}`;typeof s.value=="object"&&s.value!=null&&(s.value.$id?R=`${r}.${s.value.$id}`:Object.defineProperties(s.value,{$id:{value:C,enumerable:!1,configurable:!1,writable:!1}}));let x=de({state:s,rulesDef:vue.toRef(()=>v),customMessages:d,path:R,storage:n,options:a,externalErrors:vue.toRef(c?.value??[],t),initialState:g?.[t],shortcuts:w,fieldName:G});if(x){let p=s.value?.$id;x.$id=p??String(C),n.addArrayStatus(e,x.$id,x);}return x}function ut({state:e,rulesDef:r,customMessages:t,path:a,storage:n,options:s,externalErrors:d,initialState:v,shortcuts:c,fieldName:g}){let w=vue.effectScope(),G,C=vue.effectScope(),R,x=[];if(!Array.isArray(e.value)&&!r.value.$each)return null;let p=vue.ref(),F=vue.ref(e.value),u,i=vue.ref({}),f=n.getCollectionsEntry(a);R=C.run(()=>({isPrimitiveArray:vue.computed(()=>Array.isArray(e.value)&&e.value.length?e.value.some(m=>typeof m!="object"):r.value.$each&&!(r.value.$each instanceof Function)?Object.values(r.value.$each).every(m=>ce(m)):!1)})),j(),O();function j(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?(p.value=Se(),Object.defineProperties(e.value,{$id:{value:p.value,enumerable:!1,configurable:!1,writable:!1}})):e.value?.$id&&(p.value=e.value.$id)),!R.isPrimitiveArray.value&&(F.value=i.value.$value,Array.isArray(e.value)?f.value=e.value.map((o,m)=>{let l=Ie(r.value.$each,vue.toRef(()=>o),m),$=Ae({$id:p.value,path:a,customMessages:t,rules:l??{},stateValue:vue.toRef(()=>o),index:m,options:s,storage:n,externalErrors:vue.toRef(d?.value??{},"$each"),initialState:v?.[m],shortcuts:c,fieldName:g});return $||null}).filter(o=>!!o):f.value=[],i.value=be({state:e,rulesDef:r,customMessages:t,path:a,storage:n,options:s,externalErrors:vue.toRef(d?.value??{},"$self"),$isArray:!0,initialState:v,shortcuts:c,fieldName:g}));}function V(){if(Array.isArray(e.value)){let o=ee(f.value);f.value=e.value.map((m,l)=>{let $=vue.toRef(()=>m);if(m.$id&&f.value.find(N=>N.$id===m.$id)){let N=n.getArrayStatus(p.value,m.$id);return N?(N.$value=$,N):null}else {let N=Ie(r.value.$each,$,l);if(N){let J=Ae({$id:p.value,path:a,customMessages:t,rules:N,stateValue:$,index:l,options:s,storage:n,externalErrors:vue.toRef(d?.value??{},"$each"),initialState:v?.[l],shortcuts:c,fieldName:g});return J||null}}}).filter(m=>!!m),o.filter(m=>!e.value.find(l=>m.$id===l.$id)).forEach((m,l)=>{n.deleteArrayStatus(p.value,l.toString());});}else f.value=[];}function O(){u=vue.watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?j():V();},{deep:$e?1:!0,flush:"pre"}),G=w.run(()=>{let o=vue.computed(()=>i.value.$dirty&&f.value.every(h=>h.$dirty)),m=vue.computed(()=>i.value.$anyDirty||f.value.some(h=>h.$dirty)),l=vue.computed(()=>i.value.$invalid||f.value.some(h=>h.$invalid)),$=vue.computed(()=>(Y(i.value.$rules)?!0:i.value.$valid)&&f.value.every(h=>h.$valid)),N=vue.computed(()=>i.value.$error||f.value.some(h=>h.$error)),J=vue.computed(()=>!(l.value||S.value)),S=vue.computed(()=>i.value.$pending||f.value.some(h=>h.$pending)),W=vue.computed(()=>({$self:i.value.$errors,$each:f.value.map(h=>h.$errors)})),H=vue.computed(()=>({$self:i.value.$silentErrors,$each:f.value.map(h=>h.$silentErrors)})),U=vue.computed(()=>g);function M(){c?.collections&&Object.entries(c?.collections).forEach(([h,K])=>{let se=vue.effectScope();E[h]=se.run(()=>{let ue=vue.ref();return vue.watchEffect(()=>{ue.value=K(vue.reactive({$dirty:o,$error:N,$pending:S,$invalid:l,$valid:$,$errors:W,$ready:J,$silentErrors:H,$anyDirty:m,$name:U,$each:f,$field:i,$value:e}));}),ue}),x.push(se);});}let E={};return M(),{$dirty:o,$anyDirty:m,$invalid:l,$valid:$,$error:N,$pending:S,$errors:W,$silentErrors:H,$ready:J,$name:U,$shortcuts:E}}),R.isPrimitiveArray.value&&(console.warn(`${a} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`),u());}function b(){u&&u(),i.value&&i.value.$unwatch(),f.value&&f.value.forEach(o=>{"$dirty"in o&&o.$unwatch();}),w.stop(),w=vue.effectScope(),C.stop(),C=vue.effectScope(!0),x.forEach(o=>o.stop()),x=[];}function A(o=!0,m=!1){i.value.$touch(o,m),f.value.forEach(l=>{l.$touch(o,m);});}function I(){i.value.$reset(),f.value.forEach(o=>{o.$reset();});}async function L(){let o=e.value;try{return {result:(await Promise.allSettled([i.value.$validate(),...f.value.map($=>$.$validate())])).every($=>$.status==="fulfilled"?$.value.result===!0:!1),data:o}}catch{return {result:!1,data:o}}}function y(){i.value.$clearExternalErrors(),f.value.forEach(o=>{o.$clearExternalErrors();});}function P(o=!0){let m=f.value.map(l=>{if(tt(l))return l.$extractDirtyFields(o)});return o&&(m=m.filter(l=>q(l)?!Y(l):!!l)),m}function T(){b(),Xe(e,v),I();}let{$shortcuts:D,..._}=G;return vue.reactive({$field:i,..._,...D,$each:f,$value:e,$validate:L,$unwatch:b,$watch:O,$touch:A,$reset:I,$resetAll:T,$extractDirtyFields:P,$clearExternalErrors:y})}function Fe({rulesDef:e,state:r,path:t="",rootRules:a,externalErrors:n,validationGroups:s,initialState:d,fieldName:v,...c}){let g=vue.effectScope(),w,G=[],C=null,R=null,x=null;async function F(T=!0){let D=Object.entries(e.value),_=Object.fromEntries(D.filter(([l,$])=>!!$).map(([l,$])=>{if($){let N=vue.toRef(r.value,l),J=vue.toRef(()=>$),S=vue.toRef(n?.value??{},l);return [l,de({state:N,rulesDef:J,path:t?`${t}.${l}`:l,externalErrors:S,initialState:d?.[l],fieldName:l,...c})]}return []})),o=Object.fromEntries(Object.entries(vue.unref(n)??{}).filter(([l,$])=>!(l in e.value)&&!!$).map(([l])=>{let $=vue.toRef(r.value,l);return [l,de({state:$,rulesDef:vue.computed(()=>({})),path:t?`${t}.${l}`:l,externalErrors:vue.toRef(n?.value??{},l),initialState:d?.[l],fieldName:l,...c})]})),m=Object.fromEntries(Object.entries(r.value).filter(([l])=>!(l in e.value)&&!(l in(o.value??{}))).map(([l])=>{let $=vue.toRef(r.value,l);return [l,de({state:$,rulesDef:vue.computed(()=>({})),path:t?`${t}.${l}`:l,externalErrors:vue.toRef(n?.value??{},l),initialState:d?.[l],fieldName:l,...c})]}));u.value={..._,...o,...m},T&&V();}let u=c.storage.getFieldsEntry(t);F();function i(){R?.(),Object.values(u.value).forEach(T=>{T.$reset();}),j();}function f(T=!0,D=!1){Object.values(u.value).forEach(_=>{_.$touch(T,D);});}function j(){n?.value&&(R=vue.watch(n,()=>{O(),F();},{deep:!0}));}function V(){a&&(C=vue.watch(a,()=>{O(),F();},{deep:!0,flush:"post"}),j()),x=vue.watch(r,()=>{O(),F(),f(!0,!0);},{flush:"sync"}),w=g.run(()=>{let T=vue.computed(()=>!!Object.entries(u.value).length&&Object.entries(u.value).every(([M,E])=>E?.$dirty)),D=vue.computed(()=>Object.entries(u.value).some(([M,E])=>E?.$dirty)),_=vue.computed(()=>Object.entries(u.value).some(([M,E])=>E?.$invalid)),o=vue.computed(()=>Object.entries(u.value).every(([M,E])=>E?.$valid)),m=vue.computed(()=>D.value&&!$.value&&_.value),l=vue.computed(()=>vue.unref(c.options.autoDirty)?D.value&&!(_.value||$.value):!(_.value||$.value)),$=vue.computed(()=>Object.entries(u.value).some(([M,E])=>E?.$pending)),N=vue.computed(()=>Object.fromEntries(Object.entries(u.value).map(([M,E])=>[M,E?.$errors]))),J=vue.computed(()=>Object.fromEntries(Object.entries(u.value).map(([M,E])=>[M,E?.$silentErrors]))),S=vue.computed(()=>v);function W(){c.shortcuts?.nested&&Object.entries(c.shortcuts.nested).forEach(([M,E])=>{let h=vue.effectScope();U[M]=h.run(()=>{let K=vue.ref();return vue.watchEffect(()=>{K.value=E(vue.reactive({$dirty:T,$value:r,$error:m,$pending:$,$invalid:_,$valid:o,$ready:l,$anyDirty:D,$name:S,$silentErrors:J,$errors:N,$fields:u}));}),K}),G.push(h);});}let H=vue.computed(()=>s?Object.fromEntries(Object.entries(s?.(u.value)??{}).map(([M,E])=>E.length?[M,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$valid"].map(h=>[h,ke(E,h)])),...Object.fromEntries(["$errors","$silentErrors"].map(h=>[h,qe(E,h)]))}]:[])):{}),U={};return W(),{$dirty:T,$anyDirty:D,$invalid:_,$valid:o,$error:m,$pending:$,$errors:N,$silentErrors:J,$ready:l,$name:S,$shortcuts:U,$groups:H}});}function O(){C?.(),R?.(),x?.(),G.forEach(T=>T.stop()),G=[],u.value&&Object.entries(u.value).forEach(([T,D])=>{D.$unwatch();});}function b(){Object.entries(u.value).forEach(([T,D])=>{D.$clearExternalErrors();});}function A(){O(),ie(r,d??{}),F(!1),i(),V();}function I(T=!0){let D=Object.entries(u.value).map(([_,o])=>[_,o.$extractDirtyFields(T)]);return T&&(D=D.filter(([_,o])=>q(o)?!Y(o):Array.isArray(o)?o.length:!!o)),Object.fromEntries(D)}async function L(){try{let T=r.value;return {result:(await Promise.allSettled(Object.values(u.value).map(o=>o.$validate()))).every(o=>o.status==="fulfilled"?o.value.result===!0:!1),data:T}}catch{return {result:!1,data:r.value}}}let{$shortcuts:y,...P}=w;return vue.reactive({...P,...y,$fields:u,$value:r,$resetAll:A,$reset:i,$touch:f,$validate:L,$unwatch:O,$watch:V,$clearExternalErrors:b,$extractDirtyFields:I})}function de({rulesDef:e,externalErrors:r,...t}){return Ke(e,t.state)?ut({rulesDef:e,externalErrors:r,...t}):Ze(t.state,e)&&Ye(t.state)?Fe({rulesDef:e,externalErrors:r,...t}):et(e)?be({rulesDef:e,externalErrors:r,...t}):null}function je({initialState:e,options:r,scopeRules:t,state:a,customRules:n,shortcuts:s}){let d=Pe();return vue.reactive(Fe({rootRules:t,rulesDef:t,state:a,customMessages:n?.(),storage:d,options:r,externalErrors:r.externalErrors,validationGroups:r.validationGroups,initialState:e,shortcuts:s,fieldName:"root",path:""}))}function Ve(e,r,t){let a={autoDirty:r?.autoDirty??!0,lazy:r?.lazy??!1,rewardEarly:r?.rewardEarly??!1,clearExternalErrorsOnChange:r?.clearExternalErrorsOnChange??!0};function n(s,d,v){let c=vue.isRef(d)?d:vue.computed(typeof d=="function"?d:()=>d),g={...a,...v},w=vue.isRef(s)?s:vue.ref(s),G=ee(vue.toRaw(w.value));return {r$:je({scopeRules:c,state:w,options:g,initialState:G,customRules:e,shortcuts:t})}}return n}var pt=Ve();function _e(){function e(r,t){return t}return e}var Ge=_e();function dt({rules:e,modifiers:r,shortcuts:t}){let a=Ve(e,r,t),n=_e();return {useRegle:a,inferRules:n}}
2
2
  exports.InternalRuleType=xe;exports.createRule=Ce;exports.defineRegleConfig=dt;exports.inferRules=Ge;exports.unwrapRuleParameters=k;exports.useRegle=pt;
package/dist/index.d.cts CHANGED
@@ -371,7 +371,8 @@ interface RegleInternalRuleDefs<TValue extends any = any, TParams extends any[]
371
371
  _active?: boolean | ((value: Maybe<TValue>, metadata: PossibleRegleRuleMetadataConsumer) => boolean);
372
372
  _tooltip?: string | string[] | ((value: Maybe<TValue>, metadata: PossibleRegleRuleMetadataConsumer) => string | string[]);
373
373
  _type?: string;
374
- _patched: boolean;
374
+ _message_patched: boolean;
375
+ _tooltip_patched: boolean;
375
376
  _params?: RegleUniversalParams<TParams>;
376
377
  _async: TAsync;
377
378
  }
@@ -411,7 +412,7 @@ type UnwrapRuleWithParams<T extends RegleRuleRaw<any> | undefined> = T extends R
411
412
  * Define a rule Metadata definition
412
413
  */
413
414
  type RegleRuleMetadataDefinition = RegleRuleMetadataExtended | boolean;
414
- type DefaultMetadataProperties = Pick<ExcludeByType<RegleCommonStatus, Function>, '$invalid'>;
415
+ type DefaultMetadataProperties = Pick<ExcludeByType<RegleCommonStatus, Function>, '$invalid' | '$dirty' | '$pending'>;
415
416
  /**
416
417
  * Will be used to consumme metadata on related helpers and rule status
417
418
  */
package/dist/index.d.ts CHANGED
@@ -371,7 +371,8 @@ interface RegleInternalRuleDefs<TValue extends any = any, TParams extends any[]
371
371
  _active?: boolean | ((value: Maybe<TValue>, metadata: PossibleRegleRuleMetadataConsumer) => boolean);
372
372
  _tooltip?: string | string[] | ((value: Maybe<TValue>, metadata: PossibleRegleRuleMetadataConsumer) => string | string[]);
373
373
  _type?: string;
374
- _patched: boolean;
374
+ _message_patched: boolean;
375
+ _tooltip_patched: boolean;
375
376
  _params?: RegleUniversalParams<TParams>;
376
377
  _async: TAsync;
377
378
  }
@@ -411,7 +412,7 @@ type UnwrapRuleWithParams<T extends RegleRuleRaw<any> | undefined> = T extends R
411
412
  * Define a rule Metadata definition
412
413
  */
413
414
  type RegleRuleMetadataDefinition = RegleRuleMetadataExtended | boolean;
414
- type DefaultMetadataProperties = Pick<ExcludeByType<RegleCommonStatus, Function>, '$invalid'>;
415
+ type DefaultMetadataProperties = Pick<ExcludeByType<RegleCommonStatus, Function>, '$invalid' | '$dirty' | '$pending'>;
415
416
  /**
416
417
  * Will be used to consumme metadata on related helpers and rule status
417
418
  */
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import {unref,version,isRef,toRef,computed,ref,toRaw,reactive,shallowRef,onScopeDispose,effectScope,watch,watchEffect}from'vue';var xe=(t=>(t.Inline="__inline",t.Async="__async",t))(xe||{});function ke(e,r){return e.some(t=>t[r])}function qe(e,r){return e.reduce((t,a)=>{let n=a[r]||[];return t.concat(n)},[])}function k(e){return e.map(r=>r instanceof Function?r():unref(r))}function ze(e){return e.map(r=>r instanceof Function||isRef(r)?r:toRef(()=>r))}function Je(e){let a=e.toString().replace(/\/\/.*$/gm,"").replace(/\/\*[\s\S]*?\*\//g,"").match(/^(?:async\s*)?(?:function\b.*?\(|\((.*?)\)|(\w+))\s*=>|\((.*?)\)\s*=>|function.*?\((.*?)\)|\((.*?)\)/);return a?(a[0]||a[1]||a[2]||a[3]||a[4]||"").split(",").map(d=>d.trim()).filter(d=>d.length>0).length:0}function De(e,...r){let{validator:t,type:a}=e,n=a==="__async"||t.constructor.name==="AsyncFunction";return {...{validator(v,...c){return e.validator(v,...k(c.length?c:r))},message(v,c){return typeof e.message=="function"?e.message(v,{...c,$params:k(c.$params?.length?c.$params:r)}):e.message},active(v,c){return typeof e.active=="function"?e.active(v,{...c,$params:k(c.$params?.length?c.$params:r)}):e.active??!0},tooltip(v,c){return typeof e.tooltip=="function"?e.tooltip(v,{...c,$params:k(c.$params?.length?c.$params:r)}):e.tooltip??[]},exec(v){let c=e.validator(v,...k(r)),g;return c instanceof Promise?c.then(w=>(g=w,typeof g=="object"&&"$valid"in g?g.$valid:typeof g=="boolean"?g:!1)):(g=c,typeof g=="object"&&"$valid"in g?g.$valid:typeof g=="boolean"?g:!1)}},_validator:e.validator,_message:e.message,_active:e.active,_tooltip:e.tooltip,_type:e.type,_patched:!1,_async:n,_params:ze(r)}}function Ce(e){if(typeof e.validator=="function"){let t=De(e,...[]),a=e.validator.constructor.name==="AsyncFunction";if(Je(e.validator)>1){let n=function(...s){return De(e,...s)};return n.validator=t.validator,n.message=t.message,n.active=t.active,n.tooltip=t.tooltip,n.type=t.type,n.exec=t.exec,n._validator=t.validator,n._message=t.message,n._active=t.active,n._tooltip=t.tooltip,n._type=e.type,n._patched=!1,n._async=a,n}else return t}throw new Error("Validator must be a function")}function q(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ye(e){return q(e.value)}function ee(e){let r=e,t={}.toString.call(e).slice(8,-1);if(t=="Set"&&(r=new Set([...e].map(a=>ee(a)))),t=="Map"&&(r=new Map([...e].map(a=>[ee(a[0]),ee(a[1])]))),t=="Date"&&(r=new Date(e.getTime())),t=="RegExp"&&(r=RegExp(e.source,ht(e))),t=="Array"||t=="Object"){r=Array.isArray(e)?[]:{};for(let a in e)r[a]=ee(e[a]);}return r}function ht(e){if(typeof e.source.flags=="string")return e.source.flags;{let r=[];return e.global&&r.push("g"),e.ignoreCase&&r.push("i"),e.multiline&&r.push("m"),e.sticky&&r.push("y"),e.unicode&&r.push("u"),r.join("")}}function Ie(e,r,t){return e instanceof Function?e(r,t??0):e}function Qe(e,r){isRef(e)?e.value=r:e=r;}function Xe(e,r){isRef(e)?e.value=[]:e=[],r.forEach((t,a)=>{let n=isRef(e)?e.value[a]:e[a];n={},ie(n,r[a]);});}function ie(e,r){Object.entries({...unref(e),...r}).forEach(([t,a])=>{let n=isRef(e)?e.value:e,s=isRef(r[t])?r[t]._value:r[t],d=isRef(n[t])?n[t].value:n[t];Array.isArray(n[t])?(n[t]=[],Array.isArray(s)&&s.forEach((v,c)=>{n[t][c]={},ie(n[t][c],s[c]);})):q(s)?ie(d,s):isRef(n[t])?n[t].value=s:n[t]=s;});}function ge(e,r,t){let a,n=(...s)=>new Promise(d=>{clearTimeout(a),a=setTimeout(()=>{a=void 0,Promise.resolve(e.apply(this,[...s])).then(d);},r);});return n.cancel=()=>{clearTimeout(a),a=void 0;},n}function Tt(e,r){let t=String(e).split("."),a=String(r).split(".");for(let n=0;n<Math.min(t.length,a.length);n++){let s=Number(t[n]),d=Number(a[n]);if(s>d)return 1;if(d>s)return -1;if(!isNaN(s)&&isNaN(d))return 1;if(isNaN(s)&&!isNaN(d))return -1}return 0}var $e=Tt(version,"3.5.0")!==-1;function Et(){return Math.floor(Math.random()*Date.now()).toString()}function Se(){return typeof window>"u"?Et():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function Pe(){let e=shallowRef(new Map),r=shallowRef(new Map),t=shallowRef(new Map),a=shallowRef(new Map),n=shallowRef(new Map),s=shallowRef(new Map);function d(u){let i=r.value.get(u);if(i)return i;{let f=ref({});return r.value.set(u,f),f}}function v(u){let i=t.value.get(u);if(i)return i;{let f=ref([]);return t.value.set(u,f),f}}function c(u,i,f){s.value.set(`${u}-${i}`,f);}function g(u,i){return s.value.get(`${u}-${i}`)}function w(u,i){u&&i!=null&&s.value.delete(`${u}-${i}`);}function G(u,i){a.value.set(u,i);}function C(u){return a.value.get(u)??!1}function R(u,i){e.value.set(u,i);}function x(u,i){let f=e.value.get(u);return f?p(i,f)?{valid:!0}:{valid:!1}:void 0}function p(u,i){let f=Object.keys(i),j=Object.keys(u);return j.length!==f.length||!j.every(O=>f.includes(O))?!1:j.every(O=>{let b=u[O],A=i[O];return !A||!b||typeof b=="function"||typeof A=="function"||typeof b=="number"||typeof b=="boolean"?!1:b._params?b._params?.every((I,L)=>{if(typeof A=="number"||typeof A=="boolean")return !0;{let y=k(A._params),P=k(b._params);return y?.[L]===P?.[L]}}):!0})}function F(u){let i=n.value.get(u);if(i)return i;{let f=ref(!1),j=ref(!0),V=ref({}),O=ref(!1);return n.value.set(u,{$pending:f,$valid:j,$metadata:V,$validating:O}),{$pending:f,$valid:j,$metadata:V,$validating:O}}}return onScopeDispose(()=>{e.value.clear(),r.value.clear(),t.value.clear(),a.value.clear(),n.value.clear(),s.value.clear();}),{addRuleDeclEntry:R,setDirtyEntry:G,checkRuleDeclEntry:x,getDirtyState:C,trySetRuleStatusRef:F,getFieldsEntry:d,getCollectionsEntry:v,getArrayStatus:g,addArrayStatus:c,deleteArrayStatus:w,arrayStatusStorage:s}}function Y(e){return e==null?!0:e instanceof Date?isNaN(e.getTime()):Array.isArray(e)?!1:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}function Ze(e,r){return q(e.value)&&q(r.value)&&!Object.entries(r.value).some(t=>ce(t))}function Ke(e,r){return !!e.value&&"$each"in e.value||Array.isArray(r.value)}function et(e){return !!e.value&&q(e.value)}function ce(e){return q(e)&&"_validator"in e}function fe(e){return typeof e.value!="function"}function tt(e){return q(e)&&"$fields"in e}function Oe({field:e,silent:r=!1}){return Object.entries(e.$rules??{}).map(([t,a])=>r||!a.$valid&&e.$dirty&&!a.$validating?a.$message:null).filter(t=>!!t).reduce((t,a)=>typeof a=="string"?t?.concat([a]):t?.concat(a),[]).concat(e.$dirty?e.$externalErrors??[]:[])}function rt({field:e}){return Object.entries(e.$rules??{}).map(([r,t])=>t.$tooltip).filter(r=>!!r).reduce((r,t)=>typeof t=="string"?r?.concat([t]):r?.concat(t),[])}function at({$dirty:e,customMessages:r,rule:t,ruleKey:a,state:n,path:s,storage:d,$debounce:v}){let c=effectScope(),g,w,G=ref(!1),{$pending:C,$valid:R,$metadata:x,$validating:p}=d.trySetRuleStatusRef(`${s}.${a}`);function F(){g=c.run(()=>{let b=computed(()=>({$invalid:!R.value,$params:D.value,...x.value})),A=computed(()=>fe(t)?typeof t.value.active=="function"?t.value.active(n.value,b.value):!!t.value.active:!0);function I(o){let m="",l=r?r[a]?.[o]:void 0;return l&&(typeof l=="function"?m=l(n.value,b.value):m=l),fe(t)&&(l&&!t.value._patched||(typeof t.value[o]=="function"?m=t.value[o](n.value,b.value):m=t.value[o]??"")),m}let L=computed(()=>{let o=I("message");return Y(o)&&(o="Error",console.warn(`No error message defined for ${s}.${a}`)),o}),y=computed(()=>I("tooltip")),P=computed(()=>fe(t)&&t.value.type?t.value.type:a),T=computed(()=>fe(t)?t.value.validator:t.value),D=computed(()=>typeof t.value=="function"?[]:k(t.value._params??[])),_=computed(()=>`${s}.${P.value}`);return {$active:A,$message:L,$type:P,$validator:T,$params:D,$path:_,$tooltip:y}}),w=watch(g.$params,j,{deep:!0});}F();function u(){R.value=!0,e.value&&(C.value=!0);}async function i(){let b=g.$validator.value,A=b(n.value,...g.$params.value),I=!1,L=n.value;try{u();let y;if(A instanceof Promise?y=await A:y=A,n.value!==L)return !0;if(typeof y=="boolean")I=y;else {let{$valid:P,...T}=y;I=P,x.value=T;}}catch{I=!1;}finally{C.value=!1;}return I}let f=ge(i,v??200);async function j(){try{p.value=!0;let b=!1;if(ce(t.value)&&t.value._async)b=await f();else {let A=g.$validator.value,I=A(n.value,...g.$params.value);if(I 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(I!=null)if(typeof I=="boolean")b=I;else {let{$valid:L,...y}=I;b=L,x.value=y;}}return R.value=b,b}catch{return !1}finally{p.value=!1;}}function V(){R.value=!0,x.value={},C.value=!1,p.value=!1,F();}function O(){w(),c.stop(),c=effectScope();}return reactive({...g,$pending:C,$valid:R,$metadata:x,$haveAsync:G,$validating:p,$validate:j,$unwatch:O,$watch:F,$reset:V})}function be({state:e,rulesDef:r,customMessages:t,path:a,fieldName:n,storage:s,options:d,externalErrors:v,onUnwatch:c,$isArray:g,initialState:w,shortcuts:G}){let C=effectScope(),R,x=[],p=ref(!1),F=ref(!1),u,i,f,j,V=()=>{};function O(){let $=r.value,W=s.checkRuleDeclEntry(a,$);P.value=Object.fromEntries(Object.entries($).filter(([H])=>H.startsWith("$"))),y.value=Object.fromEntries(Object.entries(r.value).filter(([H])=>!H.startsWith("$")).map(([H,U])=>{if(U){let M=toRef(()=>U);return [H,at({$dirty:p,customMessages:t,rule:M,ruleKey:H,state:e,path:a,storage:s,$debounce:P.value.$debounce})]}return []}).filter(H=>!!H.length)),I(),b(),W?.valid!=null&&(p.value=s.getDirtyState(a),p.value&&V()),s.addRuleDeclEntry(a,$);}function b(){V=R.$debounce.value?ge(L,R.$debounce.value??R.$haveAnyAsyncRule?100:0):L;}function A(){y.value&&Object.entries(y.value).forEach(([$,W])=>{W.$unwatch();}),f(),p.value&&s.setDirtyEntry(a,p.value),u?.(),i?.(),C.stop(),C=effectScope(),x.forEach($=>$.stop()),x=[],c?.(),j?.();}function I(){y.value&&Object.entries(y.value).forEach(([$,W])=>{W.$watch();}),R=C.run(()=>{let $=computed(()=>p.value),W=computed(()=>P.value.$debounce),H=computed(()=>P.value.$lazy!=null?P.value.$lazy:unref(d.lazy)),U=computed(()=>E.value===!0?!1:P.value.$rewardEarly!=null?P.value.$rewardEarly:unref(d.rewardEarly)),M=computed(()=>P.value.$clearExternalErrorsOnChange!=null?P.value.$clearExternalErrorsOnChange:unref(d.clearExternalErrorsOnChange)),E=computed(()=>P.value.$autoDirty!=null?P.value.$autoDirty:unref(d.autoDirty)),h=computed(()=>Object.entries(y.value).some(([X,K])=>K.$validating)),Z=computed(()=>ve.value&&!ye.value&&p.value),se=computed(()=>Z.value?Oe({field:{$dirty:p.value,$externalErrors:v?.value,$rules:y.value}}):[]),ue=computed(()=>Z.value?rt({field:{$rules:y.value}}):[]),Ne=computed(()=>Oe({field:{$dirty:p.value,$externalErrors:v?.value,$rules:y.value},silent:!0})),We=computed(()=>!(ve.value||ye.value)),ye=computed(()=>F.value||!U.value?Object.entries(y.value).some(([X,K])=>K.$pending):!1),ve=computed(()=>v?.value?.length?!0:Y(y.value)?!1:!U.value||U.value&&F.value?Object.entries(y.value).some(([X,K])=>!K.$valid):!1),Ue=computed(()=>n),Ee=computed(()=>v?.value?.length||Y(y.value)?!1:p.value&&!Y(e.value)&&!h.value?Object.values(y.value).every(X=>X.$valid&&X.$active):!1),mt=computed(()=>Object.entries(y.value).some(([X,K])=>K.$haveAsync));function yt(){G?.fields&&Object.entries(G.fields).forEach(([X,K])=>{let He=effectScope();Be[X]=He.run(()=>{let Le=ref();return watchEffect(()=>{Le.value=K(reactive({$dirty:p,$externalErrors:v?.value??[],$value:e,$rules:y,$error:Z,$pending:ye,$invalid:ve,$valid:Ee,$errors:se,$ready:We,$silentErrors:Ne,$anyDirty:$,$tooltips:ue,$name:Ue}));}),Le}),x.push(He);});}let Be={};return yt(),watch(Ee,X=>{X&&(F.value=!1);}),{$error:Z,$pending:ye,$invalid:ve,$valid:Ee,$debounce:W,$lazy:H,$errors:se,$ready:We,$silentErrors:Ne,$rewardEarly:U,$autoDirty:E,$clearExternalErrorsOnChange:M,$anyDirty:$,$name:Ue,$haveAnyAsyncRule:mt,$shortcuts:Be,$validating:h,$tooltips:ue}}),u=watch(e,()=>{R.$autoDirty.value&&(p.value||(p.value=!0)),r.value instanceof Function&&O(),(R.$autoDirty.value||R.$rewardEarly.value&&R.$error.value)&&V(),R.$rewardEarly.value!==!0&&R.$clearExternalErrorsOnChange.value&&l();},{deep:g?!0:$e?1:!0}),f=watch(p,()=>{s.setDirtyEntry(a,p.value);}),i=watch(R.$valid,$=>{R.$rewardEarly.value&&$&&(F.value=!1);}),j=watch(R.$haveAnyAsyncRule,b);}function L(){Object.values(y.value).forEach($=>{$.$validate();});}let y=ref(),P=ref();O();function T(){l(),p.value=!1,Object.entries(y.value).forEach(([$,W])=>{W.$reset();}),!R.$lazy.value&&R.$autoDirty.value&&Object.values(y.value).forEach($=>$.$validate());}function D($=!0,W=!1){p.value||(p.value=!0),W&&$?(R.$autoDirty.value||R.$rewardEarly.value&&R.$error.value)&&V():$&&V();}async function _(){try{let $=e.value;if(F.value=!0,!p.value)p.value=!0;else if(R.$autoDirty.value&&p.value&&!R.$pending.value)return {result:!R.$error.value,data:$};return Y(y.value)?{result:!0,data:$}:{result:(await Promise.allSettled(Object.entries(y.value).map(([U,M])=>M.$validate()))).every(U=>U.status==="fulfilled"?U.value===!0:!1),data:$}}catch{return {result:!1,data:e.value}}}function o(){A(),e.value=Qe(e,w),T();}function m($=!0){return p.value?e.value:null}function l(){v?.value?.length&&(v.value=[]);}!R.$lazy.value&&!p.value&&R.$autoDirty.value&&V();let{$shortcuts:S,$validating:N,...J}=R;return reactive({$dirty:p,...J,$externalErrors:v,$value:e,$rules:y,...S,$reset:T,$touch:D,$validate:_,$unwatch:A,$watch:I,$resetAll:o,$extractDirtyFields:m,$clearExternalErrors:l})}function Ae({$id:e,path:r,index:t,options:a,storage:n,stateValue:s,customMessages:d,rules:v,externalErrors:c,initialState:g,shortcuts:w,fieldName:G}){let C=v.$key?v.$key:Se(),R=`${r}.${String(C)}`;typeof s.value=="object"&&s.value!=null&&(s.value.$id?R=`${r}.${s.value.$id}`:Object.defineProperties(s.value,{$id:{value:C,enumerable:!1,configurable:!1,writable:!1}}));let x=de({state:s,rulesDef:toRef(()=>v),customMessages:d,path:R,storage:n,options:a,externalErrors:toRef(c?.value??[],t),initialState:g?.[t],shortcuts:w,fieldName:G});if(x){let p=s.value?.$id;x.$id=p??String(C),n.addArrayStatus(e,x.$id,x);}return x}function ut({state:e,rulesDef:r,customMessages:t,path:a,storage:n,options:s,externalErrors:d,initialState:v,shortcuts:c,fieldName:g}){let w=effectScope(),G,C=effectScope(),R,x=[];if(!Array.isArray(e.value)&&!r.value.$each)return null;let p=ref(),F=ref(e.value),u,i=ref({}),f=n.getCollectionsEntry(a);R=C.run(()=>({isPrimitiveArray:computed(()=>Array.isArray(e.value)&&e.value.length?e.value.some(m=>typeof m!="object"):r.value.$each&&!(r.value.$each instanceof Function)?Object.values(r.value.$each).every(m=>ce(m)):!1)})),j(),O();function j(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?(p.value=Se(),Object.defineProperties(e.value,{$id:{value:p.value,enumerable:!1,configurable:!1,writable:!1}})):e.value?.$id&&(p.value=e.value.$id)),!R.isPrimitiveArray.value&&(F.value=i.value.$value,Array.isArray(e.value)?f.value=e.value.map((o,m)=>{let l=Ie(r.value.$each,toRef(()=>o),m),S=Ae({$id:p.value,path:a,customMessages:t,rules:l??{},stateValue:toRef(()=>o),index:m,options:s,storage:n,externalErrors:toRef(d?.value??{},"$each"),initialState:v?.[m],shortcuts:c,fieldName:g});return S||null}).filter(o=>!!o):f.value=[],i.value=be({state:e,rulesDef:r,customMessages:t,path:a,storage:n,options:s,externalErrors:toRef(d?.value??{},"$self"),$isArray:!0,initialState:v,shortcuts:c,fieldName:g}));}function V(){if(Array.isArray(e.value)){let o=ee(f.value);f.value=e.value.map((m,l)=>{let S=toRef(()=>m);if(m.$id&&f.value.find(N=>N.$id===m.$id)){let N=n.getArrayStatus(p.value,m.$id);return N?(N.$value=S,N):null}else {let N=Ie(r.value.$each,S,l);if(N){let J=Ae({$id:p.value,path:a,customMessages:t,rules:N,stateValue:S,index:l,options:s,storage:n,externalErrors:toRef(d?.value??{},"$each"),initialState:v?.[l],shortcuts:c,fieldName:g});return J||null}}}).filter(m=>!!m),o.filter(m=>!e.value.find(l=>m.$id===l.$id)).forEach((m,l)=>{n.deleteArrayStatus(p.value,l.toString());});}else f.value=[];}function O(){u=watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?j():V();},{deep:$e?1:!0,flush:"pre"}),G=w.run(()=>{let o=computed(()=>i.value.$dirty&&f.value.every(h=>h.$dirty)),m=computed(()=>i.value.$anyDirty||f.value.some(h=>h.$dirty)),l=computed(()=>i.value.$invalid||f.value.some(h=>h.$invalid)),S=computed(()=>(Y(i.value.$rules)?!0:i.value.$valid)&&f.value.every(h=>h.$valid)),N=computed(()=>i.value.$error||f.value.some(h=>h.$error)),J=computed(()=>!(l.value||$.value)),$=computed(()=>i.value.$pending||f.value.some(h=>h.$pending)),W=computed(()=>({$self:i.value.$errors,$each:f.value.map(h=>h.$errors)})),H=computed(()=>({$self:i.value.$silentErrors,$each:f.value.map(h=>h.$silentErrors)})),U=computed(()=>g);function M(){c?.collections&&Object.entries(c?.collections).forEach(([h,Z])=>{let se=effectScope();E[h]=se.run(()=>{let ue=ref();return watchEffect(()=>{ue.value=Z(reactive({$dirty:o,$error:N,$pending:$,$invalid:l,$valid:S,$errors:W,$ready:J,$silentErrors:H,$anyDirty:m,$name:U,$each:f,$field:i,$value:e}));}),ue}),x.push(se);});}let E={};return M(),{$dirty:o,$anyDirty:m,$invalid:l,$valid:S,$error:N,$pending:$,$errors:W,$silentErrors:H,$ready:J,$name:U,$shortcuts:E}}),R.isPrimitiveArray.value&&(console.warn(`${a} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`),u());}function b(){u&&u(),i.value&&i.value.$unwatch(),f.value&&f.value.forEach(o=>{"$dirty"in o&&o.$unwatch();}),w.stop(),w=effectScope(),C.stop(),C=effectScope(!0),x.forEach(o=>o.stop()),x=[];}function A(o=!0,m=!1){i.value.$touch(o,m),f.value.forEach(l=>{l.$touch(o,m);});}function I(){i.value.$reset(),f.value.forEach(o=>{o.$reset();});}async function L(){let o=e.value;try{return {result:(await Promise.allSettled([i.value.$validate(),...f.value.map(S=>S.$validate())])).every(S=>S.status==="fulfilled"?S.value.result===!0:!1),data:o}}catch{return {result:!1,data:o}}}function y(){i.value.$clearExternalErrors(),f.value.forEach(o=>{o.$clearExternalErrors();});}function P(o=!0){let m=f.value.map(l=>{if(tt(l))return l.$extractDirtyFields(o)});return o&&(m=m.filter(l=>q(l)?!Y(l):!!l)),m}function T(){b(),Xe(e,v),I();}let{$shortcuts:D,..._}=G;return reactive({$field:i,..._,...D,$each:f,$value:e,$validate:L,$unwatch:b,$watch:O,$touch:A,$reset:I,$resetAll:T,$extractDirtyFields:P,$clearExternalErrors:y})}function Fe({rulesDef:e,state:r,path:t="",rootRules:a,externalErrors:n,validationGroups:s,initialState:d,fieldName:v,...c}){let g=effectScope(),w,G=[],C=null,R=null,x=null;async function F(T=!0){let D=Object.entries(e.value),_=Object.fromEntries(D.filter(([l,S])=>!!S).map(([l,S])=>{if(S){let N=toRef(r.value,l),J=toRef(()=>S),$=toRef(n?.value??{},l);return [l,de({state:N,rulesDef:J,path:t?`${t}.${l}`:l,externalErrors:$,initialState:d?.[l],fieldName:l,...c})]}return []})),o=Object.fromEntries(Object.entries(unref(n)??{}).filter(([l,S])=>!(l in e.value)&&!!S).map(([l])=>{let S=toRef(r.value,l);return [l,de({state:S,rulesDef:computed(()=>({})),path:t?`${t}.${l}`:l,externalErrors:toRef(n?.value??{},l),initialState:d?.[l],fieldName:l,...c})]})),m=Object.fromEntries(Object.entries(r.value).filter(([l])=>!(l in e.value)&&!(l in(o.value??{}))).map(([l])=>{let S=toRef(r.value,l);return [l,de({state:S,rulesDef:computed(()=>({})),path:t?`${t}.${l}`:l,externalErrors:toRef(n?.value??{},l),initialState:d?.[l],fieldName:l,...c})]}));u.value={..._,...o,...m},T&&V();}let u=c.storage.getFieldsEntry(t);F();function i(){R?.(),Object.values(u.value).forEach(T=>{T.$reset();}),j();}function f(T=!0,D=!1){Object.values(u.value).forEach(_=>{_.$touch(T,D);});}function j(){n?.value&&(R=watch(n,()=>{O(),F();},{deep:!0}));}function V(){a&&(C=watch(a,()=>{O(),F();},{deep:!0,flush:"post"}),j()),x=watch(r,()=>{O(),F(),f(!0,!0);},{flush:"sync"}),w=g.run(()=>{let T=computed(()=>!!Object.entries(u.value).length&&Object.entries(u.value).every(([M,E])=>E?.$dirty)),D=computed(()=>Object.entries(u.value).some(([M,E])=>E?.$dirty)),_=computed(()=>Object.entries(u.value).some(([M,E])=>E?.$invalid)),o=computed(()=>Object.entries(u.value).every(([M,E])=>E?.$valid)),m=computed(()=>D.value&&!S.value&&_.value),l=computed(()=>unref(c.options.autoDirty)?D.value&&!(_.value||S.value):!(_.value||S.value)),S=computed(()=>Object.entries(u.value).some(([M,E])=>E?.$pending)),N=computed(()=>Object.fromEntries(Object.entries(u.value).map(([M,E])=>[M,E?.$errors]))),J=computed(()=>Object.fromEntries(Object.entries(u.value).map(([M,E])=>[M,E?.$silentErrors]))),$=computed(()=>v);function W(){c.shortcuts?.nested&&Object.entries(c.shortcuts.nested).forEach(([M,E])=>{let h=effectScope();U[M]=h.run(()=>{let Z=ref();return watchEffect(()=>{Z.value=E(reactive({$dirty:T,$value:r,$error:m,$pending:S,$invalid:_,$valid:o,$ready:l,$anyDirty:D,$name:$,$silentErrors:J,$errors:N,$fields:u}));}),Z}),G.push(h);});}let H=computed(()=>s?Object.fromEntries(Object.entries(s?.(u.value)??{}).map(([M,E])=>E.length?[M,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$valid"].map(h=>[h,ke(E,h)])),...Object.fromEntries(["$errors","$silentErrors"].map(h=>[h,qe(E,h)]))}]:[])):{}),U={};return W(),{$dirty:T,$anyDirty:D,$invalid:_,$valid:o,$error:m,$pending:S,$errors:N,$silentErrors:J,$ready:l,$name:$,$shortcuts:U,$groups:H}});}function O(){C?.(),R?.(),x?.(),G.forEach(T=>T.stop()),G=[],u.value&&Object.entries(u.value).forEach(([T,D])=>{D.$unwatch();});}function b(){Object.entries(u.value).forEach(([T,D])=>{D.$clearExternalErrors();});}function A(){O(),ie(r,d??{}),F(!1),i(),V();}function I(T=!0){let D=Object.entries(u.value).map(([_,o])=>[_,o.$extractDirtyFields(T)]);return T&&(D=D.filter(([_,o])=>q(o)?!Y(o):Array.isArray(o)?o.length:!!o)),Object.fromEntries(D)}async function L(){try{let T=r.value;return {result:(await Promise.allSettled(Object.values(u.value).map(o=>o.$validate()))).every(o=>o.status==="fulfilled"?o.value.result===!0:!1),data:T}}catch{return {result:!1,data:r.value}}}let{$shortcuts:y,...P}=w;return reactive({...P,...y,$fields:u,$value:r,$resetAll:A,$reset:i,$touch:f,$validate:L,$unwatch:O,$watch:V,$clearExternalErrors:b,$extractDirtyFields:I})}function de({rulesDef:e,externalErrors:r,...t}){return Ke(e,t.state)?ut({rulesDef:e,externalErrors:r,...t}):Ze(t.state,e)&&Ye(t.state)?Fe({rulesDef:e,externalErrors:r,...t}):et(e)?be({rulesDef:e,externalErrors:r,...t}):null}function je({initialState:e,options:r,scopeRules:t,state:a,customRules:n,shortcuts:s}){let d=Pe();return reactive(Fe({rootRules:t,rulesDef:t,state:a,customMessages:n?.(),storage:d,options:r,externalErrors:r.externalErrors,validationGroups:r.validationGroups,initialState:e,shortcuts:s,fieldName:"root",path:""}))}function Ve(e,r,t){let a={autoDirty:r?.autoDirty??!0,lazy:r?.lazy??!1,rewardEarly:r?.rewardEarly??!1,clearExternalErrorsOnChange:r?.clearExternalErrorsOnChange??!0};function n(s,d,v){let c=isRef(d)?d:computed(typeof d=="function"?d:()=>d),g={...a,...v},w=isRef(s)?s:ref(s),G=ee(toRaw(w.value));return {r$:je({scopeRules:c,state:w,options:g,initialState:G,customRules:e,shortcuts:t})}}return n}var pt=Ve();function _e(){function e(r,t){return t}return e}var Ge=_e();function dt({rules:e,modifiers:r,shortcuts:t}){let a=Ve(e,r,t),n=_e();return {useRegle:a,inferRules:n}}
1
+ import {unref,version,isRef,toRef,computed,ref,toRaw,reactive,shallowRef,onScopeDispose,effectScope,watch,watchEffect}from'vue';var xe=(t=>(t.Inline="__inline",t.Async="__async",t))(xe||{});function ke(e,r){return e.some(t=>t[r])}function qe(e,r){return e.reduce((t,a)=>{let n=a[r]||[];return t.concat(n)},[])}function k(e){return e.map(r=>r instanceof Function?r():unref(r))}function ze(e){return e.map(r=>r instanceof Function||isRef(r)?r:toRef(()=>r))}function Je(e){let a=e.toString().replace(/\/\/.*$/gm,"").replace(/\/\*[\s\S]*?\*\//g,"").match(/^(?:async\s*)?(?:function\b.*?\(|\((.*?)\)|(\w+))\s*=>|\((.*?)\)\s*=>|function.*?\((.*?)\)|\((.*?)\)/);return a?(a[0]||a[1]||a[2]||a[3]||a[4]||"").split(",").map(d=>d.trim()).filter(d=>d.length>0).length:0}function De(e,...r){let{validator:t,type:a}=e,n=a==="__async"||t.constructor.name==="AsyncFunction";return {...{validator(v,...c){return e.validator(v,...k(c.length?c:r))},message(v,c){return typeof e.message=="function"?e.message(v,{...c,$params:k(c.$params?.length?c.$params:r)}):e.message},active(v,c){return typeof e.active=="function"?e.active(v,{...c,$params:k(c.$params?.length?c.$params:r)}):e.active??!0},tooltip(v,c){return typeof e.tooltip=="function"?e.tooltip(v,{...c,$params:k(c.$params?.length?c.$params:r)}):e.tooltip??[]},exec(v){let c=e.validator(v,...k(r)),g;return c instanceof Promise?c.then(w=>(g=w,typeof g=="object"&&"$valid"in g?g.$valid:typeof g=="boolean"?g:!1)):(g=c,typeof g=="object"&&"$valid"in g?g.$valid:typeof g=="boolean"?g:!1)}},_validator:e.validator,_message:e.message,_active:e.active,_tooltip:e.tooltip,_type:e.type,_message_patched:!1,_tooltip_patched:!1,_async:n,_params:ze(r)}}function Ce(e){if(typeof e.validator=="function"){let t=De(e,...[]),a=e.validator.constructor.name==="AsyncFunction";if(Je(e.validator)>1){let n=function(...s){return De(e,...s)};return n.validator=t.validator,n.message=t.message,n.active=t.active,n.tooltip=t.tooltip,n.type=t.type,n.exec=t.exec,n._validator=t.validator,n._message=t.message,n._active=t.active,n._tooltip=t.tooltip,n._type=e.type,n._message_pacthed=!1,n._tooltip_pacthed=!1,n._async=a,n}else return t}throw new Error("Validator must be a function")}function q(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ye(e){return q(e.value)}function ee(e){let r=e,t={}.toString.call(e).slice(8,-1);if(t=="Set"&&(r=new Set([...e].map(a=>ee(a)))),t=="Map"&&(r=new Map([...e].map(a=>[ee(a[0]),ee(a[1])]))),t=="Date"&&(r=new Date(e.getTime())),t=="RegExp"&&(r=RegExp(e.source,ht(e))),t=="Array"||t=="Object"){r=Array.isArray(e)?[]:{};for(let a in e)r[a]=ee(e[a]);}return r}function ht(e){if(typeof e.source.flags=="string")return e.source.flags;{let r=[];return e.global&&r.push("g"),e.ignoreCase&&r.push("i"),e.multiline&&r.push("m"),e.sticky&&r.push("y"),e.unicode&&r.push("u"),r.join("")}}function Ie(e,r,t){return e instanceof Function?e(r,t??0):e}function Qe(e,r){isRef(e)?e.value=r:e=r;}function Xe(e,r){isRef(e)?e.value=[]:e=[],r.forEach((t,a)=>{let n=isRef(e)?e.value[a]:e[a];n={},ie(n,r[a]);});}function ie(e,r){Object.entries({...unref(e),...r}).forEach(([t,a])=>{let n=isRef(e)?e.value:e,s=isRef(r[t])?r[t]._value:r[t],d=isRef(n[t])?n[t].value:n[t];Array.isArray(n[t])?(n[t]=[],Array.isArray(s)&&s.forEach((v,c)=>{n[t][c]={},ie(n[t][c],s[c]);})):q(s)?ie(d,s):isRef(n[t])?n[t].value=s:n[t]=s;});}function ge(e,r,t){let a,n=(...s)=>new Promise(d=>{clearTimeout(a),a=setTimeout(()=>{a=void 0,Promise.resolve(e.apply(this,[...s])).then(d);},r);});return n.cancel=()=>{clearTimeout(a),a=void 0;},n}function Tt(e,r){let t=String(e).split("."),a=String(r).split(".");for(let n=0;n<Math.min(t.length,a.length);n++){let s=Number(t[n]),d=Number(a[n]);if(s>d)return 1;if(d>s)return -1;if(!isNaN(s)&&isNaN(d))return 1;if(isNaN(s)&&!isNaN(d))return -1}return 0}var $e=Tt(version,"3.5.0")!==-1;function Et(){return Math.floor(Math.random()*Date.now()).toString()}function Se(){return typeof window>"u"?Et():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function Pe(){let e=shallowRef(new Map),r=shallowRef(new Map),t=shallowRef(new Map),a=shallowRef(new Map),n=shallowRef(new Map),s=shallowRef(new Map);function d(u){let i=r.value.get(u);if(i)return i;{let f=ref({});return r.value.set(u,f),f}}function v(u){let i=t.value.get(u);if(i)return i;{let f=ref([]);return t.value.set(u,f),f}}function c(u,i,f){s.value.set(`${u}-${i}`,f);}function g(u,i){return s.value.get(`${u}-${i}`)}function w(u,i){u&&i!=null&&s.value.delete(`${u}-${i}`);}function G(u,i){a.value.set(u,i);}function C(u){return a.value.get(u)??!1}function R(u,i){e.value.set(u,i);}function x(u,i){let f=e.value.get(u);return f?p(i,f)?{valid:!0}:{valid:!1}:void 0}function p(u,i){let f=Object.keys(i),j=Object.keys(u);return j.length!==f.length||!j.every(O=>f.includes(O))?!1:j.every(O=>{let b=u[O],A=i[O];return !A||!b||typeof b=="function"||typeof A=="function"||typeof b=="number"||typeof b=="boolean"?!1:b._params?b._params?.every((I,L)=>{if(typeof A=="number"||typeof A=="boolean")return !0;{let y=k(A._params),P=k(b._params);return y?.[L]===P?.[L]}}):!0})}function F(u){let i=n.value.get(u);if(i)return i;{let f=ref(!1),j=ref(!0),V=ref({}),O=ref(!1);return n.value.set(u,{$pending:f,$valid:j,$metadata:V,$validating:O}),{$pending:f,$valid:j,$metadata:V,$validating:O}}}return onScopeDispose(()=>{e.value.clear(),r.value.clear(),t.value.clear(),a.value.clear(),n.value.clear(),s.value.clear();}),{addRuleDeclEntry:R,setDirtyEntry:G,checkRuleDeclEntry:x,getDirtyState:C,trySetRuleStatusRef:F,getFieldsEntry:d,getCollectionsEntry:v,getArrayStatus:g,addArrayStatus:c,deleteArrayStatus:w,arrayStatusStorage:s}}function Y(e){return e==null?!0:e instanceof Date?isNaN(e.getTime()):Array.isArray(e)?!1:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}function Ze(e,r){return q(e.value)&&q(r.value)&&!Object.entries(r.value).some(t=>ce(t))}function Ke(e,r){return !!e.value&&"$each"in e.value||Array.isArray(r.value)}function et(e){return !!e.value&&q(e.value)}function ce(e){return q(e)&&"_validator"in e}function fe(e){return typeof e.value!="function"}function tt(e){return q(e)&&"$fields"in e}function Oe({field:e,silent:r=!1}){return Object.entries(e.$rules??{}).map(([t,a])=>r||!a.$valid&&e.$dirty&&!a.$validating?a.$message:null).filter(t=>!!t).reduce((t,a)=>typeof a=="string"?t?.concat([a]):t?.concat(a),[]).concat(e.$dirty?e.$externalErrors??[]:[])}function rt({field:e}){return Object.entries(e.$rules??{}).map(([r,t])=>t.$tooltip).filter(r=>!!r).reduce((r,t)=>typeof t=="string"?r?.concat([t]):r?.concat(t),[])}function at({$dirty:e,customMessages:r,rule:t,ruleKey:a,state:n,path:s,storage:d,$debounce:v}){let c=effectScope(),g,w,G=ref(!1),{$pending:C,$valid:R,$metadata:x,$validating:p}=d.trySetRuleStatusRef(`${s}.${a}`);function F(){g=c.run(()=>{let b=computed(()=>({$invalid:!R.value,$pending:C.value,$dirty:e.value,$params:D.value,...x.value})),A=computed(()=>fe(t)?typeof t.value.active=="function"?t.value.active(n.value,b.value):!!t.value.active:!0);function I(o){let m="",l=r?r[a]?.[o]:void 0;if(l&&(typeof l=="function"?m=l(n.value,b.value):m=l),fe(t)){let $=`_${o}_patched`;l&&!t.value[$]||(typeof t.value[o]=="function"?m=t.value[o](n.value,b.value):m=t.value[o]??"");}return m}let L=computed(()=>{let o=I("message");return Y(o)&&(o="Error",typeof window<"u"&&typeof process>"u"&&console.warn(`No error message defined for ${s}.${a}`)),o}),y=computed(()=>I("tooltip")),P=computed(()=>fe(t)&&t.value.type?t.value.type:a),T=computed(()=>fe(t)?t.value.validator:t.value),D=computed(()=>typeof t.value=="function"?[]:k(t.value._params??[])),_=computed(()=>`${s}.${P.value}`);return {$active:A,$message:L,$type:P,$validator:T,$params:D,$path:_,$tooltip:y}}),w=watch(g.$params,j,{deep:!0});}F();function u(){R.value=!0,e.value&&(C.value=!0);}async function i(){let b=g.$validator.value,A=b(n.value,...g.$params.value),I=!1,L=n.value;try{u();let y;if(A instanceof Promise?y=await A:y=A,n.value!==L)return !0;if(typeof y=="boolean")I=y;else {let{$valid:P,...T}=y;I=P,x.value=T;}}catch{I=!1;}finally{C.value=!1;}return I}let f=ge(i,v??200);async function j(){try{p.value=!0;let b=!1;if(ce(t.value)&&t.value._async)b=await f();else {let A=g.$validator.value,I=A(n.value,...g.$params.value);if(I 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(I!=null)if(typeof I=="boolean")b=I;else {let{$valid:L,...y}=I;b=L,x.value=y;}}return R.value=b,b}catch{return !1}finally{p.value=!1;}}function V(){R.value=!0,x.value={},C.value=!1,p.value=!1,F();}function O(){w(),c.stop(),c=effectScope();}return reactive({...g,$pending:C,$valid:R,$metadata:x,$haveAsync:G,$validating:p,$validate:j,$unwatch:O,$watch:F,$reset:V})}function be({state:e,rulesDef:r,customMessages:t,path:a,fieldName:n,storage:s,options:d,externalErrors:v,onUnwatch:c,$isArray:g,initialState:w,shortcuts:G}){let C=effectScope(),R,x=[],p=ref(!1),F=ref(!1),u,i,f,j,V=()=>{};function O(){let S=r.value,W=s.checkRuleDeclEntry(a,S);P.value=Object.fromEntries(Object.entries(S).filter(([H])=>H.startsWith("$"))),y.value=Object.fromEntries(Object.entries(r.value).filter(([H])=>!H.startsWith("$")).map(([H,U])=>{if(U){let M=toRef(()=>U);return [H,at({$dirty:p,customMessages:t,rule:M,ruleKey:H,state:e,path:a,storage:s,$debounce:P.value.$debounce})]}return []}).filter(H=>!!H.length)),I(),b(),W?.valid!=null&&(p.value=s.getDirtyState(a),p.value&&V()),s.addRuleDeclEntry(a,S);}function b(){V=R.$debounce.value?ge(L,R.$debounce.value??R.$haveAnyAsyncRule?100:0):L;}function A(){y.value&&Object.entries(y.value).forEach(([S,W])=>{W.$unwatch();}),f(),p.value&&s.setDirtyEntry(a,p.value),u?.(),i?.(),C.stop(),C=effectScope(),x.forEach(S=>S.stop()),x=[],c?.(),j?.();}function I(){y.value&&Object.entries(y.value).forEach(([S,W])=>{W.$watch();}),R=C.run(()=>{let S=computed(()=>p.value),W=computed(()=>P.value.$debounce),H=computed(()=>P.value.$lazy!=null?P.value.$lazy:unref(d.lazy)),U=computed(()=>E.value===!0?!1:P.value.$rewardEarly!=null?P.value.$rewardEarly:unref(d.rewardEarly)),M=computed(()=>P.value.$clearExternalErrorsOnChange!=null?P.value.$clearExternalErrorsOnChange:unref(d.clearExternalErrorsOnChange)),E=computed(()=>P.value.$autoDirty!=null?P.value.$autoDirty:unref(d.autoDirty)),h=computed(()=>Object.entries(y.value).some(([X,Z])=>Z.$validating)),K=computed(()=>ve.value&&!ye.value&&p.value),se=computed(()=>K.value?Oe({field:{$dirty:p.value,$externalErrors:v?.value,$rules:y.value}}):[]),ue=computed(()=>rt({field:{$rules:y.value}})),Ne=computed(()=>Oe({field:{$dirty:p.value,$externalErrors:v?.value,$rules:y.value},silent:!0})),We=computed(()=>!(ve.value||ye.value)),ye=computed(()=>F.value||!U.value?Object.entries(y.value).some(([X,Z])=>Z.$pending):!1),ve=computed(()=>v?.value?.length?!0:Y(y.value)?!1:!U.value||U.value&&F.value?Object.entries(y.value).some(([X,Z])=>!Z.$valid):!1),Ue=computed(()=>n),Ee=computed(()=>v?.value?.length||Y(y.value)?!1:p.value&&!Y(e.value)&&!h.value?Object.values(y.value).every(X=>X.$valid&&X.$active):!1),mt=computed(()=>Object.entries(y.value).some(([X,Z])=>Z.$haveAsync));function yt(){G?.fields&&Object.entries(G.fields).forEach(([X,Z])=>{let He=effectScope();Be[X]=He.run(()=>{let Le=ref();return watchEffect(()=>{Le.value=Z(reactive({$dirty:p,$externalErrors:v?.value??[],$value:e,$rules:y,$error:K,$pending:ye,$invalid:ve,$valid:Ee,$errors:se,$ready:We,$silentErrors:Ne,$anyDirty:S,$tooltips:ue,$name:Ue}));}),Le}),x.push(He);});}let Be={};return yt(),watch(Ee,X=>{X&&(F.value=!1);}),{$error:K,$pending:ye,$invalid:ve,$valid:Ee,$debounce:W,$lazy:H,$errors:se,$ready:We,$silentErrors:Ne,$rewardEarly:U,$autoDirty:E,$clearExternalErrorsOnChange:M,$anyDirty:S,$name:Ue,$haveAnyAsyncRule:mt,$shortcuts:Be,$validating:h,$tooltips:ue}}),u=watch(e,()=>{R.$autoDirty.value&&(p.value||(p.value=!0)),r.value instanceof Function&&O(),(R.$autoDirty.value||R.$rewardEarly.value&&R.$error.value)&&V(),R.$rewardEarly.value!==!0&&R.$clearExternalErrorsOnChange.value&&l();},{deep:g?!0:$e?1:!0}),f=watch(p,()=>{s.setDirtyEntry(a,p.value);}),i=watch(R.$valid,S=>{R.$rewardEarly.value&&S&&(F.value=!1);}),j=watch(R.$haveAnyAsyncRule,b);}function L(){Object.values(y.value).forEach(S=>{S.$validate();});}let y=ref(),P=ref();O();function T(){l(),p.value=!1,Object.entries(y.value).forEach(([S,W])=>{W.$reset();}),!R.$lazy.value&&R.$autoDirty.value&&Object.values(y.value).forEach(S=>S.$validate());}function D(S=!0,W=!1){p.value||(p.value=!0),W&&S?(R.$autoDirty.value||R.$rewardEarly.value&&R.$error.value)&&V():S&&V();}async function _(){try{let S=e.value;if(F.value=!0,!p.value)p.value=!0;else if(R.$autoDirty.value&&p.value&&!R.$pending.value)return {result:!R.$error.value,data:S};return Y(y.value)?{result:!0,data:S}:{result:(await Promise.allSettled(Object.entries(y.value).map(([U,M])=>M.$validate()))).every(U=>U.status==="fulfilled"?U.value===!0:!1),data:S}}catch{return {result:!1,data:e.value}}}function o(){A(),e.value=Qe(e,w),T();}function m(S=!0){return p.value?e.value:null}function l(){v?.value?.length&&(v.value=[]);}!R.$lazy.value&&!p.value&&R.$autoDirty.value&&V();let{$shortcuts:$,$validating:N,...J}=R;return reactive({$dirty:p,...J,$externalErrors:v,$value:e,$rules:y,...$,$reset:T,$touch:D,$validate:_,$unwatch:A,$watch:I,$resetAll:o,$extractDirtyFields:m,$clearExternalErrors:l})}function Ae({$id:e,path:r,index:t,options:a,storage:n,stateValue:s,customMessages:d,rules:v,externalErrors:c,initialState:g,shortcuts:w,fieldName:G}){let C=v.$key?v.$key:Se(),R=`${r}.${String(C)}`;typeof s.value=="object"&&s.value!=null&&(s.value.$id?R=`${r}.${s.value.$id}`:Object.defineProperties(s.value,{$id:{value:C,enumerable:!1,configurable:!1,writable:!1}}));let x=de({state:s,rulesDef:toRef(()=>v),customMessages:d,path:R,storage:n,options:a,externalErrors:toRef(c?.value??[],t),initialState:g?.[t],shortcuts:w,fieldName:G});if(x){let p=s.value?.$id;x.$id=p??String(C),n.addArrayStatus(e,x.$id,x);}return x}function ut({state:e,rulesDef:r,customMessages:t,path:a,storage:n,options:s,externalErrors:d,initialState:v,shortcuts:c,fieldName:g}){let w=effectScope(),G,C=effectScope(),R,x=[];if(!Array.isArray(e.value)&&!r.value.$each)return null;let p=ref(),F=ref(e.value),u,i=ref({}),f=n.getCollectionsEntry(a);R=C.run(()=>({isPrimitiveArray:computed(()=>Array.isArray(e.value)&&e.value.length?e.value.some(m=>typeof m!="object"):r.value.$each&&!(r.value.$each instanceof Function)?Object.values(r.value.$each).every(m=>ce(m)):!1)})),j(),O();function j(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?(p.value=Se(),Object.defineProperties(e.value,{$id:{value:p.value,enumerable:!1,configurable:!1,writable:!1}})):e.value?.$id&&(p.value=e.value.$id)),!R.isPrimitiveArray.value&&(F.value=i.value.$value,Array.isArray(e.value)?f.value=e.value.map((o,m)=>{let l=Ie(r.value.$each,toRef(()=>o),m),$=Ae({$id:p.value,path:a,customMessages:t,rules:l??{},stateValue:toRef(()=>o),index:m,options:s,storage:n,externalErrors:toRef(d?.value??{},"$each"),initialState:v?.[m],shortcuts:c,fieldName:g});return $||null}).filter(o=>!!o):f.value=[],i.value=be({state:e,rulesDef:r,customMessages:t,path:a,storage:n,options:s,externalErrors:toRef(d?.value??{},"$self"),$isArray:!0,initialState:v,shortcuts:c,fieldName:g}));}function V(){if(Array.isArray(e.value)){let o=ee(f.value);f.value=e.value.map((m,l)=>{let $=toRef(()=>m);if(m.$id&&f.value.find(N=>N.$id===m.$id)){let N=n.getArrayStatus(p.value,m.$id);return N?(N.$value=$,N):null}else {let N=Ie(r.value.$each,$,l);if(N){let J=Ae({$id:p.value,path:a,customMessages:t,rules:N,stateValue:$,index:l,options:s,storage:n,externalErrors:toRef(d?.value??{},"$each"),initialState:v?.[l],shortcuts:c,fieldName:g});return J||null}}}).filter(m=>!!m),o.filter(m=>!e.value.find(l=>m.$id===l.$id)).forEach((m,l)=>{n.deleteArrayStatus(p.value,l.toString());});}else f.value=[];}function O(){u=watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?j():V();},{deep:$e?1:!0,flush:"pre"}),G=w.run(()=>{let o=computed(()=>i.value.$dirty&&f.value.every(h=>h.$dirty)),m=computed(()=>i.value.$anyDirty||f.value.some(h=>h.$dirty)),l=computed(()=>i.value.$invalid||f.value.some(h=>h.$invalid)),$=computed(()=>(Y(i.value.$rules)?!0:i.value.$valid)&&f.value.every(h=>h.$valid)),N=computed(()=>i.value.$error||f.value.some(h=>h.$error)),J=computed(()=>!(l.value||S.value)),S=computed(()=>i.value.$pending||f.value.some(h=>h.$pending)),W=computed(()=>({$self:i.value.$errors,$each:f.value.map(h=>h.$errors)})),H=computed(()=>({$self:i.value.$silentErrors,$each:f.value.map(h=>h.$silentErrors)})),U=computed(()=>g);function M(){c?.collections&&Object.entries(c?.collections).forEach(([h,K])=>{let se=effectScope();E[h]=se.run(()=>{let ue=ref();return watchEffect(()=>{ue.value=K(reactive({$dirty:o,$error:N,$pending:S,$invalid:l,$valid:$,$errors:W,$ready:J,$silentErrors:H,$anyDirty:m,$name:U,$each:f,$field:i,$value:e}));}),ue}),x.push(se);});}let E={};return M(),{$dirty:o,$anyDirty:m,$invalid:l,$valid:$,$error:N,$pending:S,$errors:W,$silentErrors:H,$ready:J,$name:U,$shortcuts:E}}),R.isPrimitiveArray.value&&(console.warn(`${a} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`),u());}function b(){u&&u(),i.value&&i.value.$unwatch(),f.value&&f.value.forEach(o=>{"$dirty"in o&&o.$unwatch();}),w.stop(),w=effectScope(),C.stop(),C=effectScope(!0),x.forEach(o=>o.stop()),x=[];}function A(o=!0,m=!1){i.value.$touch(o,m),f.value.forEach(l=>{l.$touch(o,m);});}function I(){i.value.$reset(),f.value.forEach(o=>{o.$reset();});}async function L(){let o=e.value;try{return {result:(await Promise.allSettled([i.value.$validate(),...f.value.map($=>$.$validate())])).every($=>$.status==="fulfilled"?$.value.result===!0:!1),data:o}}catch{return {result:!1,data:o}}}function y(){i.value.$clearExternalErrors(),f.value.forEach(o=>{o.$clearExternalErrors();});}function P(o=!0){let m=f.value.map(l=>{if(tt(l))return l.$extractDirtyFields(o)});return o&&(m=m.filter(l=>q(l)?!Y(l):!!l)),m}function T(){b(),Xe(e,v),I();}let{$shortcuts:D,..._}=G;return reactive({$field:i,..._,...D,$each:f,$value:e,$validate:L,$unwatch:b,$watch:O,$touch:A,$reset:I,$resetAll:T,$extractDirtyFields:P,$clearExternalErrors:y})}function Fe({rulesDef:e,state:r,path:t="",rootRules:a,externalErrors:n,validationGroups:s,initialState:d,fieldName:v,...c}){let g=effectScope(),w,G=[],C=null,R=null,x=null;async function F(T=!0){let D=Object.entries(e.value),_=Object.fromEntries(D.filter(([l,$])=>!!$).map(([l,$])=>{if($){let N=toRef(r.value,l),J=toRef(()=>$),S=toRef(n?.value??{},l);return [l,de({state:N,rulesDef:J,path:t?`${t}.${l}`:l,externalErrors:S,initialState:d?.[l],fieldName:l,...c})]}return []})),o=Object.fromEntries(Object.entries(unref(n)??{}).filter(([l,$])=>!(l in e.value)&&!!$).map(([l])=>{let $=toRef(r.value,l);return [l,de({state:$,rulesDef:computed(()=>({})),path:t?`${t}.${l}`:l,externalErrors:toRef(n?.value??{},l),initialState:d?.[l],fieldName:l,...c})]})),m=Object.fromEntries(Object.entries(r.value).filter(([l])=>!(l in e.value)&&!(l in(o.value??{}))).map(([l])=>{let $=toRef(r.value,l);return [l,de({state:$,rulesDef:computed(()=>({})),path:t?`${t}.${l}`:l,externalErrors:toRef(n?.value??{},l),initialState:d?.[l],fieldName:l,...c})]}));u.value={..._,...o,...m},T&&V();}let u=c.storage.getFieldsEntry(t);F();function i(){R?.(),Object.values(u.value).forEach(T=>{T.$reset();}),j();}function f(T=!0,D=!1){Object.values(u.value).forEach(_=>{_.$touch(T,D);});}function j(){n?.value&&(R=watch(n,()=>{O(),F();},{deep:!0}));}function V(){a&&(C=watch(a,()=>{O(),F();},{deep:!0,flush:"post"}),j()),x=watch(r,()=>{O(),F(),f(!0,!0);},{flush:"sync"}),w=g.run(()=>{let T=computed(()=>!!Object.entries(u.value).length&&Object.entries(u.value).every(([M,E])=>E?.$dirty)),D=computed(()=>Object.entries(u.value).some(([M,E])=>E?.$dirty)),_=computed(()=>Object.entries(u.value).some(([M,E])=>E?.$invalid)),o=computed(()=>Object.entries(u.value).every(([M,E])=>E?.$valid)),m=computed(()=>D.value&&!$.value&&_.value),l=computed(()=>unref(c.options.autoDirty)?D.value&&!(_.value||$.value):!(_.value||$.value)),$=computed(()=>Object.entries(u.value).some(([M,E])=>E?.$pending)),N=computed(()=>Object.fromEntries(Object.entries(u.value).map(([M,E])=>[M,E?.$errors]))),J=computed(()=>Object.fromEntries(Object.entries(u.value).map(([M,E])=>[M,E?.$silentErrors]))),S=computed(()=>v);function W(){c.shortcuts?.nested&&Object.entries(c.shortcuts.nested).forEach(([M,E])=>{let h=effectScope();U[M]=h.run(()=>{let K=ref();return watchEffect(()=>{K.value=E(reactive({$dirty:T,$value:r,$error:m,$pending:$,$invalid:_,$valid:o,$ready:l,$anyDirty:D,$name:S,$silentErrors:J,$errors:N,$fields:u}));}),K}),G.push(h);});}let H=computed(()=>s?Object.fromEntries(Object.entries(s?.(u.value)??{}).map(([M,E])=>E.length?[M,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$valid"].map(h=>[h,ke(E,h)])),...Object.fromEntries(["$errors","$silentErrors"].map(h=>[h,qe(E,h)]))}]:[])):{}),U={};return W(),{$dirty:T,$anyDirty:D,$invalid:_,$valid:o,$error:m,$pending:$,$errors:N,$silentErrors:J,$ready:l,$name:S,$shortcuts:U,$groups:H}});}function O(){C?.(),R?.(),x?.(),G.forEach(T=>T.stop()),G=[],u.value&&Object.entries(u.value).forEach(([T,D])=>{D.$unwatch();});}function b(){Object.entries(u.value).forEach(([T,D])=>{D.$clearExternalErrors();});}function A(){O(),ie(r,d??{}),F(!1),i(),V();}function I(T=!0){let D=Object.entries(u.value).map(([_,o])=>[_,o.$extractDirtyFields(T)]);return T&&(D=D.filter(([_,o])=>q(o)?!Y(o):Array.isArray(o)?o.length:!!o)),Object.fromEntries(D)}async function L(){try{let T=r.value;return {result:(await Promise.allSettled(Object.values(u.value).map(o=>o.$validate()))).every(o=>o.status==="fulfilled"?o.value.result===!0:!1),data:T}}catch{return {result:!1,data:r.value}}}let{$shortcuts:y,...P}=w;return reactive({...P,...y,$fields:u,$value:r,$resetAll:A,$reset:i,$touch:f,$validate:L,$unwatch:O,$watch:V,$clearExternalErrors:b,$extractDirtyFields:I})}function de({rulesDef:e,externalErrors:r,...t}){return Ke(e,t.state)?ut({rulesDef:e,externalErrors:r,...t}):Ze(t.state,e)&&Ye(t.state)?Fe({rulesDef:e,externalErrors:r,...t}):et(e)?be({rulesDef:e,externalErrors:r,...t}):null}function je({initialState:e,options:r,scopeRules:t,state:a,customRules:n,shortcuts:s}){let d=Pe();return reactive(Fe({rootRules:t,rulesDef:t,state:a,customMessages:n?.(),storage:d,options:r,externalErrors:r.externalErrors,validationGroups:r.validationGroups,initialState:e,shortcuts:s,fieldName:"root",path:""}))}function Ve(e,r,t){let a={autoDirty:r?.autoDirty??!0,lazy:r?.lazy??!1,rewardEarly:r?.rewardEarly??!1,clearExternalErrorsOnChange:r?.clearExternalErrorsOnChange??!0};function n(s,d,v){let c=isRef(d)?d:computed(typeof d=="function"?d:()=>d),g={...a,...v},w=isRef(s)?s:ref(s),G=ee(toRaw(w.value));return {r$:je({scopeRules:c,state:w,options:g,initialState:G,customRules:e,shortcuts:t})}}return n}var pt=Ve();function _e(){function e(r,t){return t}return e}var Ge=_e();function dt({rules:e,modifiers:r,shortcuts:t}){let a=Ve(e,r,t),n=_e();return {useRegle:a,inferRules:n}}
2
2
  export{xe as InternalRuleType,Ce as createRule,dt as defineRegleConfig,Ge as inferRules,k as unwrapRuleParameters,pt as useRegle};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@regle/core",
3
- "version": "0.3.1",
3
+ "version": "0.3.3",
4
4
  "description": "Typescript-first model-based form validation library for Vue 3",
5
5
  "peerDependencies": {
6
6
  "vue": "^3.1.0"