@regle/core 1.2.0-beta.6 → 1.2.0-beta.8

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.
@@ -1,2 +1,2 @@
1
- import {effectScope,computed,toValue,ref,watch,getCurrentInstance,onMounted,reactive,getCurrentScope,onScopeDispose,isRef,shallowRef,watchEffect,triggerRef,toRef,unref,version,nextTick}from'vue';function te(e,t=true){return e==null?true:e instanceof Date?isNaN(e.getTime()):e.constructor.name=="File"||e.constructor.name=="FileList"?e.size<=0:Array.isArray(e)?t?e.length===0:false:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}var Ct=Symbol("regle-rule");function or(e){if(typeof e.source.flags=="string")return e.source.flags;{let t=[];return e.global&&t.push("g"),e.ignoreCase&&t.push("i"),e.multiline&&t.push("m"),e.sticky&&t.push("y"),e.unicode&&t.push("u"),t.join("")}}function k(e){let t=e,r={}.toString.call(e).slice(8,-1);if(r=="Set"&&(t=new Set([...e].map(n=>k(n)))),r=="Map"&&(t=new Map([...e].map(n=>[k(n[0]),k(n[1])]))),r=="Date"&&(t=new Date(e.getTime())),r=="RegExp"&&(t=RegExp(e.source,or(e))),r=="Array"||r=="Object"){t=Array.isArray(e)?[]:{};for(let n in e)t[n]=k(e[n]);}return t}function j(e){return e&&(e instanceof Date||e.constructor.name=="File"||e.constructor.name=="FileList")?false:typeof e=="object"&&e!==null&&!Array.isArray(e)}function Pe(e,...t){for(var r=[].slice.call(arguments),n,a=r.length;n=r[a-1],a--;)if(!n||typeof n!="object"&&typeof n!="function")throw new Error("expected object, got "+n);for(var o=r[0],s=r.slice(1),i=s.length,a=0;a<i;a++){var $=s[a];for(var p in $)o[p]=$[p];}return o}function Xe(e){let t=Object.prototype.toString.call(e);return e==null?new Date(NaN):e instanceof Date||typeof e=="object"&&t==="[object Date]"?new Date(e.getTime()):typeof e=="number"||t==="[object Number]"?new Date(e):typeof e=="string"||t==="[object String]"?new Date(e):new Date(NaN)}function Ne(e,t,r){let n,a=(...o)=>new Promise(s=>{clearTimeout(n),n=setTimeout(()=>{n=void 0,Promise.resolve(e.apply(this,[...o])).then(s);},t);});return a.cancel=()=>{clearTimeout(n),n=void 0;},a}var Ze={Inline:"__inline",Async:"__async"};function Dt(e,t){return e.some(r=>r[t])}function It(e,t){return e.reduce((r,n)=>{let a=n[t]||[];return r.concat(a)},[])}function re(e){try{return e.map(t=>toValue(t))}catch{return []}}function Ot(e){return e.map(t=>t instanceof Function?computed(t):isRef(t)?t:toRef(()=>t))}function wt(e){let n=e.toString().replace(/\/\/.*$/gm,"").replace(/\/\*[\s\S]*?\*\//g,"").match(/^(?:async\s*)?(?:function\b.*?\(|\((.*?)\)|(\w+))\s*=>|\((.*?)\)\s*=>|function.*?\((.*?)\)|\((.*?)\)/);return n?(n[0]||n[1]||n[2]||n[3]||n[4]||"").split(",").map(s=>s.trim()).filter(s=>s.length>0).length:0}function et(e,...t){let{validator:r,type:n}=e,a=n===Ze.Async||r.constructor.name==="AsyncFunction";return {...{validator(i,...$){return e.validator(i,...re($.length?$:t))},message(i){return typeof e.message=="function"?e.message({...i,$params:re(i?.$params?.length?i.$params:t)}):e.message},active(i){return typeof e.active=="function"?e.active({...i,$params:re(i?.$params?.length?i.$params:t)}):e.active??true},tooltip(i){return typeof e.tooltip=="function"?e.tooltip({...i,$params:re(i?.$params?.length?i.$params:t)}):e.tooltip??[]},exec(i){let $=e.validator(i,...re(t)),p;return $ instanceof Promise?$.then(m=>(p=m,typeof p=="object"&&"$valid"in p?p.$valid:typeof p=="boolean"?p:false)):(p=$,typeof p=="object"&&"$valid"in p?p.$valid:typeof p=="boolean"?p:false)}},_validator:e.validator,_message:e.message,_active:e.active,_tooltip:e.tooltip,_type:e.type,_message_patched:false,_tooltip_patched:false,_async:a,_params:Ot(t),_brand:Ct}}function tt(e){if(typeof e.validator=="function"){let r=et(e,...[]),n=e.async??e.validator.constructor.name==="AsyncFunction";if(wt(e.validator)>1){let a=function(...o){return et(e,...o)};return a.validator=r.validator,a.message=r.message,a.active=r.active,a.tooltip=r.tooltip,a.type=r.type,a.exec=r.exec,a._validator=r.validator,a._message=r.message,a._active=r.active,a._tooltip=r.tooltip,a._type=e.type,a._message_pacthed=false,a._tooltip_pacthed=false,a._async=n,a}else return r}throw new Error("[createRule] validator must be a function")}function rt(){let e=shallowRef(new Map),t=shallowRef(new Map),r=shallowRef(new Map),n=shallowRef(new Map),a=shallowRef(new Map),o=shallowRef(new Map);function s(v){let x=t.value.get(v);if(x)return x;{let C=ref({});return t.value.set(v,C),C}}function i(v){let x=r.value.get(v);if(x)return x;{let C=ref([]);return r.value.set(v,C),C}}function $(v,x,C){o.value.set(`${v}-${x}`,C);}function p(v,x){return o.value.get(`${v}-${x}`)}function m(v,x){v&&x!=null&&o.value.delete(`${v}-${x}`);}function G(v,x){n.value.set(v,x);}function E(v){return n.value.get(v)??false}function V(v,x){e.value.set(v,x);}function O(v,x){let C=e.value.get(v);return C?P(x,C)?{valid:true}:{valid:false}:void 0}function P(v,x){let C=Object.keys(x),R=Object.keys(v);return R.length!==C.length||!R.every(c=>C.includes(c))?false:R.every(c=>{let g=v[c],T=x[c];return !T||!g||typeof g=="function"||typeof T=="function"||typeof g=="number"||typeof g=="boolean"?false:g._params?g._params?.every((U,W)=>{if(typeof T=="number"||typeof T=="boolean")return true;{let q=re(T._params),z=re(g._params);return q?.[W]===z?.[W]}}):true})}function l(v){let x=a.value.get(v);if(x)return x;{let C=ref(false),R=ref(true),b=ref({}),c=ref(false);return a.value.set(v,{$pending:C,$valid:R,$metadata:b,$validating:c}),{$pending:C,$valid:R,$metadata:b,$validating:c}}}return getCurrentScope()&&onScopeDispose(()=>{e.value.clear(),t.value.clear(),r.value.clear(),n.value.clear(),a.value.clear(),o.value.clear();}),{addRuleDeclEntry:V,setDirtyEntry:G,checkRuleDeclEntry:O,getDirtyState:E,trySetRuleStatusRef:l,getFieldsEntry:s,getCollectionsEntry:i,getArrayStatus:p,addArrayStatus:$,deleteArrayStatus:m,arrayStatusStorage:o}}function ke(e){return j(e.value)}function nt(e,t,r){let n=effectScope(),a;return e instanceof Function?a=n.run(()=>e(t,r??0)):a=e,{scope:n,unwrapped:a}}var Me={LessThan:-1,EqualTo:0,GreaterThan:1};function yr(e,t){let r=String(e).split("."),n=String(t).split(".");for(let a=0;a<Math.min(r.length,n.length);a++){let o=Number(r[a]),s=Number(n[a]);if(o>s)return Me.GreaterThan;if(s>o)return Me.LessThan;if(!isNaN(o)&&isNaN(s))return Me.GreaterThan;if(isNaN(o)&&!isNaN(s))return Me.LessThan}return Me.EqualTo}var Ge=yr(version,"3.5.0")!==-1;function mr(){return Math.floor(Math.random()*Date.now()).toString()}function be(){return typeof window>"u"?mr():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function Pt(e){return getCurrentScope()?(onScopeDispose(e),true):false}function Mt(e){let t=false,r,n=effectScope(true);return (...a)=>(t||(r=n.run(()=>e(...a)),t=true),r)}function We(e,t){return ke(e)||j(t.value)&&!te(t.value)&&!Object.entries(t.value).some(([r,n])=>me(n)||typeof n=="function")}function At(e,t,r=false){return !!e.value&&j(e.value)&&"$each"in e.value||r&&Array.isArray(t.value)&&t.value.some(j)||Array.isArray(t.value)&&t.value.some(j)}function Be(e){return !!e.value&&j(e.value)}function me(e){return j(e)&&"_validator"in e}function Ae(e){return typeof e.value=="function"?"_validator"in e.value:true}function Vt(e){return j(e)&&"$fields"in e}function at(e){return !!e&&"$rules"in e}function lt({field:e,silent:t=false}){return Object.entries(e.$rules??{}).map(([r,n])=>t&&!n.$valid||!n.$valid&&e.$error&&!n.$validating?n.$message:null).filter(r=>!!r).reduce((r,n)=>typeof n=="string"?r?.concat([n]):r?.concat(n),[]).concat(e.$error?e.$externalErrors??[]:[]).concat(e.$error?e.$schemaErrors??[]:[])}function Ft({field:e}){return Object.entries(e.$rules??{}).map(([t,r])=>r.$tooltip).filter(t=>!!t).reduce((t,r)=>typeof r=="string"?t?.concat([r]):t?.concat(r),[])}function jt(e){return j(e)&&"$each"in e}function ot(e,t){let{includePath:r=false}=t??{};if(Array.isArray(e)&&e.every(n=>!j(n)))return e;if(jt(e)){let n=r?e.$self?.map(o=>({error:o,path:""}))??[]:e.$self??[],a=e.$each?.map(o=>Le(o,r))??[];return n?.concat(a.flat())}else return Object.entries(e).map(([n,a])=>Le(a,r,[n])).flat()}function Le(e,t=false,r){let n=t&&!r?[]:r;if(Array.isArray(e)&&e.every(a=>!j(a)))return t?e.map(a=>({error:a,path:n?.join(".")??""})):e;if(jt(e)){let a=n?.length?e.$self?.map(s=>({error:s,path:n.join(".")}))??[]:e.$self??[],o=e.$each?.map((s,i)=>Le(s,t,n?.concat(i.toString())))??[];return a?.concat(o.flat())}else return Object.entries(e).map(([a,o])=>Le(o,t,n?.concat(a))).flat()}function _t({customMessages:e,rule:t,ruleKey:r,state:n,path:a,storage:o,$debounce:s,modifiers:i}){let $=effectScope(),p={},m,G=ref(false),E=ref(false),{$pending:V,$valid:O,$metadata:P,$validating:l}=o.trySetRuleStatusRef(`${a}.${r}`);function v(){$=effectScope(),p=$.run(()=>{let T=ref(false),U=ref(false),W=ref(true),q=ref(false),z=ref(false),le=computed(()=>({$value:n.value,$error:U.value,$dirty:T.value,$pending:q.value,$correct:z.value,$invalid:W.value,$rule:{$valid:O.value,$invalid:!O.value,$pending:V.value},$params:f.value,...P.value})),D=computed(()=>Ae(t)?typeof t.value.active=="function"?t.value.active(le.value):!!t.value.active:true);function H(w){let K="",y=e?e[r]?.[w]:void 0;if(y&&(typeof y=="function"?K=y(le.value):K=y),Ae(t)){let M=`_${w}_patched`;y&&!t.value[M]||(typeof t.value[w]=="function"?K=t.value[w](le.value):K=t.value[w]??"");}return K}let ve=computed(()=>{let w=H("message");return te(w)&&(w="This field is not valid"),w}),Re=computed(()=>H("tooltip")),u=computed(()=>Ae(t)&&t.value.type?t.value.type:r),d=computed(()=>Ae(t)?t.value.validator:t.value),f=computed(()=>typeof t.value=="function"?[]:re(t.value._params??[])),I=computed(()=>`${a}.${u.value}`);return {$active:D,$message:ve,$type:u,$validator:d,$params:f,$path:I,$tooltip:Re,$fieldCorrect:z,$fieldError:U,$fieldDirty:T,$fieldPending:q,$fieldInvalid:W}}),m=watch(p?.$params,()=>{(!i.$silent.value||i.$rewardEarly.value&&p.$fieldError.value)&&b();});}v();function x(){O.value=true,p.$fieldDirty.value&&(V.value=true);}async function C(){let T=false;try{let U=p.$validator.value;if(typeof U!="function")return console.error(`${a}: Incorrect rule format, it needs to be either a function or created with "createRule".`),!1;let W=U(n.value,...p.$params.value),q=n.value;x();let z;if(W instanceof Promise?z=await W:z=W,n.value!==q)return !0;if(typeof z=="boolean")T=z;else {let{$valid:le,...D}=z;T=le,P.value=D;}}catch{T=false;}finally{V.value=false;}return T}let R=Ne(C,s??200);async function b(){try{l.value=!0;let T=!1;if(E.value=!0,me(t.value)&&t.value._async)T=await R();else {let U=p.$validator.value,W=U(n.value,...p.$params.value);if(W 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(W!=null)if(typeof W=="boolean")T=W;else {let{$valid:q,...z}=W;T=q,P.value=z;}}return O.value=T,T}catch{return false}finally{l.value=false,E.value=false;}}function c(){O.value=true,P.value={},V.value=false,l.value=false,v();}function g(){m(),$.stop(),$=effectScope();}return reactive({...p,$pending:V,$valid:O,$metadata:P,$haveAsync:G,$maybePending:E,$validating:l,$parse:b,$unwatch:g,$watch:v,$reset:c})}function Ee({state:e,rulesDef:t,customMessages:r,path:n,fieldName:a,storage:o,options:s,externalErrors:i,schemaErrors:$,schemaMode:p,onUnwatch:m,$isArray:G,initialState:E,shortcuts:V,onValidate:O}){let P=effectScope(),l,v=[],x,C,R,b,c,g=()=>{};function T(){let h=t.value,F=o.checkRuleDeclEntry(n,h);H.value=Object.fromEntries(Object.entries(h).filter(([S])=>S.startsWith("$"))),q(),D.value=Object.fromEntries(Object.entries(t.value).filter(([S])=>!S.startsWith("$")).map(([S,X])=>{if(X){let se=toRef(()=>X);return [S,_t({modifiers:{$silent:l.$silent,$rewardEarly:l.$rewardEarly},customMessages:r,rule:se,ruleKey:S,state:e,path:n,storage:o,$debounce:H.value.$debounce})]}return []}).filter(S=>!!S.length)),l.processShortcuts(),U(),F?.valid!=null&&(l.$dirty.value=o.getDirtyState(n),(l.$dirty.value&&!l.$silent.value||l.$rewardEarly.value&&l.$error.value)&&g()),o.addRuleDeclEntry(n,h);}function U(){g=l.$debounce.value?Ne(le,l.$debounce.value??l.$haveAnyAsyncRule?100:0):le;}function W(){D.value&&Object.entries(D.value).forEach(([h,F])=>{F.$unwatch();}),R(),c?.(),l.$dirty.value&&o.setDirtyEntry(n,l.$dirty.value),x?.(),C?.(),P.stop(),P=effectScope(),v.forEach(h=>h.stop()),v=[],m?.(),b?.();}function q(){D.value&&Object.entries(D.value).forEach(([h,F])=>{F.$watch();}),l=P.run(()=>{let h=ref(false),F=ref(false),S=computed(()=>h.value),X=computed(()=>H.value.$debounce),se=computed(()=>H.value.$lazy!=null?H.value.$lazy:unref(s.lazy)!=null?unref(s.lazy):false),ie=computed(()=>H.value.$rewardEarly!=null?H.value.$rewardEarly:unref(s.rewardEarly)!=null?unref(s.rewardEarly):false),je=computed(()=>H.value.$clearExternalErrorsOnChange!=null?H.value.$clearExternalErrorsOnChange:unref(s.clearExternalErrorsOnChange)!=null?unref(s.clearExternalErrorsOnChange):true),B=computed(()=>ie.value?true:H.value.$silent!=null?H.value.$silent:unref(s.silent)!=null?unref(s.silent):false),A=computed(()=>H.value.$autoDirty!=null?H.value.$autoDirty:unref(s.autoDirty)!=null?unref(s.autoDirty):true),N=computed(()=>Object.entries(D.value).some(([ue,Q])=>Q.$validating)),we=computed({get:()=>e.value,set(ue){x(),e.value=ue,z();}}),_e=computed(()=>Se.value&&!$e.value&&h.value),mt=computed(()=>lt({field:{$rules:D.value,$error:_e.value,$externalErrors:i?.value,$schemaErrors:$?.value}})),gt=computed(()=>lt({field:{$rules:D.value,$error:_e.value,$externalErrors:i?.value,$schemaErrors:$?.value},silent:true})),Qe=computed(()=>h.value?E.value instanceof Date&&e.value instanceof Date?Xe(E.value).getDate()!==Xe(e.value).getDate():E.value==null?!!e.value:Array.isArray(e.value)&&Array.isArray(E.value)?e.value.length!==E.value.length:E.value!==e.value:false),vt=computed(()=>Qe.value),$t=computed(()=>Ft({field:{$rules:D.value}})),St=computed(()=>(B.value||S.value)&&!(Se.value||$e.value)),$e=computed(()=>F.value||!ie.value?Object.entries(D.value).some(([ue,Q])=>Q.$pending):false),Se=computed(()=>i?.value?.length||$?.value?.length?true:Ue.value?false:!ie.value||ie.value&&F.value?Object.entries(D.value).some(([ue,Q])=>!(Q.$valid&&!Q.$maybePending)):false),Tt=computed(()=>a),Ue=computed(()=>!!(te(D.value)&&!p)),ht=computed(()=>i?.value?.length||Ue.value?false:h.value&&!te(e.value)&&!N.value&&!$e.value?p?!$?.value?.length:Object.values(D.value).some(Q=>Q.$active)?Object.values(D.value).filter(Q=>Q.$active).every(Q=>Q.$valid):false:false),ar=computed(()=>Object.entries(D.value).some(([ue,Q])=>Q.$haveAsync));function lr(){V?.fields&&Object.entries(V.fields).forEach(([ue,Q])=>{let xt=effectScope();bt[ue]=xt.run(()=>{let Et=ref();return watchEffect(()=>{Et.value=Q(reactive({$dirty:h,$externalErrors:i?.value??[],$value:e,$silentValue:we,$rules:D,$error:_e,$pending:$e,$invalid:Se,$correct:ht,$errors:mt,$ready:St,$silentErrors:gt,$anyDirty:S,$tooltips:$t,$name:Tt,$inactive:Ue,$edited:Qe,$anyEdited:vt}));}),Et}),v.push(xt);});}let bt={};return watch(Se,ue=>{ue||(F.value=false);}),{$error:_e,$pending:$e,$invalid:Se,$correct:ht,$debounce:X,$lazy:se,$errors:mt,$ready:St,$silentErrors:gt,$rewardEarly:ie,$autoDirty:A,$silent:B,$clearExternalErrorsOnChange:je,$anyDirty:S,$edited:Qe,$anyEdited:vt,$name:Tt,$haveAnyAsyncRule:ar,$shortcuts:bt,$validating:N,$tooltips:$t,$dirty:h,triggerPunishment:F,processShortcuts:lr,$silentValue:we,$inactive:Ue}}),z(),R=watch(l.$dirty,h=>{o.setDirtyEntry(n,h),Object.values(D.value).forEach(F=>{F.$fieldDirty=h;});}),c=watch([l.$error,l.$correct,l.$invalid,l.$pending],()=>{Object.values(D.value).forEach(h=>{h.$fieldError=l.$error.value,h.$fieldInvalid=l.$invalid.value,h.$fieldPending=l.$pending.value,h.$fieldCorrect=l.$correct.value;});}),C=watch(l.$invalid,h=>{l.$rewardEarly.value&&!h&&(l.triggerPunishment.value=false);}),b=watch(l.$haveAnyAsyncRule,U);}function z(){x=watch(e,()=>{l.$autoDirty.value&&!l.$silent.value&&(l.$dirty.value||(l.$dirty.value=true)),t.value instanceof Function&&T(),(!l.$silent.value||l.$rewardEarly.value&&l.$error.value)&&g(),l.$rewardEarly.value!==true&&l.$clearExternalErrorsOnChange.value&&f();},{deep:G?true:Ge?1:true});}function le(){Object.values(D.value).forEach(h=>{h.$parse();});}let D=ref({}),H=ref({});T();function ve(h,F){if(f(),l.$dirty.value=false,l.triggerPunishment.value=false,o.setDirtyEntry(n,false),!F)if(h?.toInitialState)e.value=k(E);else if(h?.toState){let S;typeof h?.toState=="function"?S=h?.toState():S=h?.toState,E.value=k(S),e.value=k(S);}else E.value=j(e.value)?k(e.value):Array.isArray(e.value)?[...e.value]:e.value;h?.clearExternalErrors&&f(),F||Object.entries(D.value).forEach(([S,X])=>{X.$reset();}),!l.$lazy.value&&!l.$silent.value&&Object.values(D.value).forEach(S=>S.$parse());}function Re(h=true,F=false){l.$dirty.value||(l.$dirty.value=true),F&&h?(!l.$silent.value||l.$rewardEarly.value&&l.$error.value)&&g():h&&g();}async function u(){try{if(p)return O?(Re(!1),O()):{valid:!1,data:e.value};let h=e.value;if(l.triggerPunishment.value=!0,!l.$dirty.value)l.$dirty.value=!0;else if(!l.$silent.value&&l.$dirty.value&&!l.$pending.value)return {valid:!l.$error.value,data:h};return p?{valid:!$?.value?.length,data:h}:te(D.value)?{valid:!0,data:h}:{valid:(await Promise.allSettled(Object.entries(D.value).map(([X,se])=>se.$parse()))).every(X=>X.status==="fulfilled"?X.value===!0:!1),data:h}}catch{return {valid:false,data:e.value}}}function d(h=true){return l.$dirty.value?e.value:h?{_null:true}:null}function f(){i?.value?.length&&(i.value=[]);}!l.$lazy.value&&!l.$dirty.value&&!l.$silent.value&&g();let{$shortcuts:I,$validating:w,$autoDirty:K,$rewardEarly:y,$clearExternalErrorsOnChange:M,$haveAnyAsyncRule:Y,$debounce:Z,$lazy:ee,triggerPunishment:oe,...fe}=l;return reactive({...fe,$externalErrors:i,$value:e,$rules:D,...I,$reset:ve,$touch:Re,$validate:u,$unwatch:W,$watch:q,$extractDirtyFields:d,$clearExternalErrors:f})}function ut({$id:e,path:t,index:r,options:n,storage:a,stateValue:o,customMessages:s,rules:i,externalErrors:$,schemaErrors:p,initialState:m,shortcuts:G,fieldName:E,schemaMode:V}){let O=i.$key?i.$key:be(),P=`${t}.${String(O)}`;typeof o.value=="object"&&o.value!=null&&(o.value.$id?P=`${t}.${o.value.$id}`:Object.defineProperties(o.value,{$id:{value:O,enumerable:false,configurable:false,writable:false}}));let l=toRef($?.value??[],r),v=computed(()=>p?.value?.[r]),x=Ce({state:o,rulesDef:toRef(()=>i),customMessages:s,path:P,storage:a,options:n,externalErrors:l,schemaErrors:v,initialState:m,shortcuts:G,fieldName:E,schemaMode:V});if(x){let C=o.value?.$id;x.$id=C??String(O),a.addArrayStatus(e,x.$id,x);}return x}function Gt({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:o,externalErrors:s,schemaErrors:i,schemaMode:$,initialState:p,shortcuts:m,fieldName:G}){let E=effectScope(),V,O=effectScope(),P,l=[];if(!Array.isArray(e.value)&&!t.value.$each)return;let v=ref(),x=ref(e.value),C,R=ref({}),b=a.getCollectionsEntry(n);P=O.run(()=>({isPrimitiveArray:computed(()=>Array.isArray(e.value)&&e.value.length?e.value.every(d=>typeof d!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(d=>me(d)||typeof d=="function"):false)})),c(),U();function c(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?(v.value=be(),Object.defineProperties(e.value,{$id:{value:v.value,enumerable:false,configurable:false,writable:false}})):e.value?.$id&&(v.value=e.value.$id)),x.value=R.value.$value,Array.isArray(e.value)&&!P.isPrimitiveArray.value?b.value=e.value.filter(u=>typeof u=="object").map((u,d)=>{let{scope:f,unwrapped:I}=nt(t.value.$each,toRef(()=>u),d);f&&l.push(f);let w=toRef(p.value??[],d),K=toRef(s?.value??{},"$each"),y=computed(()=>i?.value?.$each),M=ut({$id:v.value,path:n,customMessages:r,rules:I??{},stateValue:toRef(()=>u),index:d,options:o,storage:a,externalErrors:K,schemaErrors:y,initialState:w,shortcuts:m,fieldName:G,schemaMode:$});return M||null}).filter(u=>!!u):b.value=[],R.value=Ee({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:o,externalErrors:toRef(s?.value??{},"$self"),schemaErrors:computed(()=>i?.value?.$self),$isArray:true,initialState:p,shortcuts:m,fieldName:G,schemaMode:$});}function g(){if(Array.isArray(e.value)&&!P.isPrimitiveArray.value){let u=k(b.value);b.value=e.value.filter(d=>typeof d=="object").map((d,f)=>{let I=toRef(()=>d);if(d.$id&&b.value.find(w=>w.$id===d.$id)){let w=a.getArrayStatus(v.value,d.$id);return w?(w.$value=I,w):null}else {let{scope:w,unwrapped:K}=nt(t.value.$each,I,f);w&&l.push(w);let y=toRef(s?.value??{},"$each"),M=computed(()=>i?.value?.$each??[]),Y=ut({$id:v.value,path:n,customMessages:r,rules:K??{},stateValue:I,index:f,options:o,storage:a,externalErrors:y,schemaErrors:M,initialState:toRef(p.value??[],f),shortcuts:m,fieldName:G,schemaMode:$});return Y||null}}).filter(d=>!!d),u.filter(d=>!e.value?.find(f=>d.$id===f.$id)).forEach((d,f)=>{a.deleteArrayStatus(v.value,f.toString());});}else b.value=[];}function T(){C=watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?c():g();},{deep:Ge?1:true,flush:"pre"});}function U(){T(),E=effectScope(),V=E.run(()=>{let u=computed({get:()=>e.value,set(S){C(),e.value=S,T();}}),d=computed(()=>R.value.$dirty&&(!b.value.length||b.value.every(S=>S.$dirty))),f=computed(()=>R.value.$anyDirty||b.value.some(S=>S.$anyDirty)),I=computed(()=>R.value.$invalid||b.value.some(S=>S.$invalid)),w=computed(()=>(te(R.value.$rules)?true:R.value.$correct)&&(!b.value.length||b.value.every(S=>S.$correct||S.$anyDirty&&!S.$invalid))),K=computed(()=>R.value.$error||b.value.some(S=>S.$error)),y=computed(()=>!(I.value||M.value)),M=computed(()=>R.value.$pending||b.value.some(S=>S.$pending)),Y=computed(()=>!!b.value.length&&b.value.every(S=>S.$edited)),Z=computed(()=>R.value.$anyEdited||b.value.some(S=>S.$anyEdited)),ee=computed(()=>({$self:R.value.$errors,$each:b.value.map(S=>S.$errors)})),oe=computed(()=>({$self:R.value.$silentErrors,$each:b.value.map(S=>S.$silentErrors)})),fe=computed(()=>G);function h(){m?.collections&&Object.entries(m?.collections).forEach(([S,X])=>{let se=effectScope();F[S]=se.run(()=>{let ie=ref();return watchEffect(()=>{ie.value=X(reactive({$dirty:d,$error:K,$silentValue:u,$pending:M,$invalid:I,$correct:w,$errors:ee,$ready:y,$silentErrors:oe,$anyDirty:f,$name:fe,$each:b,$self:R,$value:e,$edited:Y,$anyEdited:Z}));}),ie}),l.push(se);});}let F={};return h(),{$dirty:d,$anyDirty:f,$invalid:I,$correct:w,$error:K,$pending:M,$errors:ee,$silentErrors:oe,$ready:y,$name:fe,$shortcuts:F,$silentValue:u,$edited:Y,$anyEdited:Z}}),P.isPrimitiveArray.value&&t.value.$each&&console.warn(`${n} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`);}function W(){C&&C(),R.value&&R.value.$unwatch(),b.value&&b.value.forEach(u=>{"$dirty"in u&&u.$unwatch();}),E.stop(),E=effectScope(),O.stop(),O=effectScope(true),l.forEach(u=>u.stop()),l=[];}function q(u=true,d=false){R.value.$touch(u,d),b.value.forEach(f=>{f.$touch(u,d);});}function z(u,d){if(W(),!d)if(u?.toInitialState)e.value=k(p.value);else if(u?.toState){let f;typeof u?.toState=="function"?f=u?.toState():f=u?.toState,p.value=k(f),e.value=k(f);}else p.value=k(e.value);u?.clearExternalErrors&&D(),R.value.$reset(),b.value.forEach(f=>{f.$reset(u,true);}),d||c();}async function le(){let u=e.value;try{return {valid:(await Promise.allSettled([R.value.$validate(),...b.value.map(I=>I.$validate())])).every(I=>I.status==="fulfilled"?I.value.valid===!0:!1),data:u}}catch{return {valid:false,data:u}}}function D(){R.value.$clearExternalErrors(),b.value.forEach(u=>{u.$clearExternalErrors();});}function H(u=true){let d=b.value.map(f=>{if(Vt(f))return f.$extractDirtyFields(u)});return u&&d.every(f=>te(f))&&(d=[]),d}let{$shortcuts:ve,...Re}=V;return reactive({$self:R,...Re,...ve,$each:b,$value:e,$validate:le,$unwatch:W,$watch:U,$touch:q,$reset:z,$extractDirtyFields:H,$clearExternalErrors:D})}function ze({rulesDef:e,state:t,path:r="",rootRules:n,externalErrors:a,schemaErrors:o,rootSchemaErrors:s,validationGroups:i,initialState:$,fieldName:p,...m}){let G=effectScope(),E,V=[],O=null,P=null,l=null,v=null;async function C(u=true){let d=Object.entries(e.value),f=Object.fromEntries(d.filter(([y,M])=>!!M).map(([y,M])=>{if(M){let Y=toRef(t.value??{},y),Z=toRef(()=>M),ee=toRef(a?.value??{},y),oe=computed(()=>o?.value?.[y]),fe=toRef($?.value??{},y);return [y,Ce({state:Y,rulesDef:Z,path:r?`${r}.${y}`:y,externalErrors:ee,schemaErrors:oe,initialState:fe,fieldName:y,...m})]}return []})),I=Object.fromEntries(Object.entries(unref(a)??{}).filter(([y,M])=>!(y in e.value)&&!!M).map(([y])=>{let M=toRef(t.value??{},y),Y=toRef(a?.value??{},y),Z=computed(()=>o?.value?.[y]),ee=toRef($?.value??{},y);return [y,Ce({state:M,rulesDef:computed(()=>({})),path:r?`${r}.${y}`:y,externalErrors:Y,schemaErrors:Z,initialState:ee,fieldName:y,...m})]})),w=Object.fromEntries(Object.entries(unref(o)??{}).map(([y])=>{let M=toRef(t.value??{},y),Y=toRef(a?.value??{},y),Z=computed(()=>o?.value?.[y]),ee=toRef($?.value??{},y);return [y,Ce({state:M,rulesDef:computed(()=>({})),path:r?`${r}.${y}`:y,externalErrors:Y,schemaErrors:Z,initialState:ee,fieldName:y,...m})]})),K=Object.fromEntries(Object.entries(t.value??{}).filter(([y])=>!(y in e.value)&&!(y in(I??{}))&&!(y in(w??{}))).map(([y])=>{let M=toRef(t.value??{},y),Y=toRef(a?.value??{},y),Z=computed(()=>o?.value?.[y]),ee=toRef($?.value??{},y);return [y,Ce({state:M,rulesDef:computed(()=>({})),path:r?`${r}.${y}`:y,externalErrors:Y,schemaErrors:Z,initialState:ee,fieldName:y,...m})]}));R.value={...f,...I,...w,...K},u&&g();}let R=m.storage.getFieldsEntry(r);C();function b(){a&&(l=watch(a,()=>{T(),C();},{deep:true}));}function c(){v=watch(t,()=>{T(),C(),E.$autoDirty.value&&!E.$silent.value&&q(true,true);},{flush:"sync"});}function g(){n&&(O?.(),O=watch(n,()=>{T(),C();},{deep:true,flush:"pre"}),b()),s&&(P?.(),P=watch(s,()=>{T(),C();},{deep:true,flush:"post"})),c(),E=G.run(()=>{let u=computed({get:()=>t.value,set(B){T(),t.value=B,C();}}),d=computed(()=>!!Object.entries(R.value).length&&Object.entries(R.value).every(([B,A])=>A?.$dirty)),f=computed(()=>Object.entries(R.value).some(([B,A])=>A?.$anyDirty)),I=computed(()=>!!Object.entries(R.value).length&&Object.entries(R.value).some(([B,A])=>A?.$invalid)),w=computed(()=>{let B=Object.entries(R.value).filter(([A,N])=>at(N)?!N.$inactive:true);return B.length?B.every(([A,N])=>m.schemaMode?N.$correct:at(N)?"required"in N.$rules&&N.$rules.required.$active?N?.$correct:!N.$invalid&&!N.$pending:N?.$correct):false}),K=computed(()=>!!Object.entries(R.value).length&&Object.entries(R.value).some(([B,A])=>A?.$error)),y=computed(()=>unref(m.options.rewardEarly)!=null?unref(m.options.rewardEarly):false),M=computed(()=>unref(m.options.silent)!=null?unref(m.options.silent):!!y.value),Y=computed(()=>unref(m.options.autoDirty)!=null?unref(m.options.autoDirty):true),Z=computed(()=>(M.value||f.value)&&!(I.value||oe.value)),ee=ref(false),oe=computed(()=>ee.value||Object.entries(R.value).some(([B,A])=>A?.$pending)),fe=computed(()=>Object.fromEntries(Object.entries(R.value).map(([B,A])=>[B,A?.$errors]))),h=computed(()=>Object.fromEntries(Object.entries(R.value).map(([B,A])=>[B,A?.$silentErrors]))),F=computed(()=>!!Object.entries(R.value).length&&Object.entries(R.value).every(([B,A])=>A?.$edited)),S=computed(()=>Object.entries(R.value).some(([B,A])=>A?.$anyEdited)),X=computed(()=>p);function se(){m.shortcuts?.nested&&Object.entries(m.shortcuts.nested).forEach(([B,A])=>{let N=effectScope();je[B]=N.run(()=>{let we=ref();return watchEffect(()=>{we.value=A(reactive({$dirty:d,$value:t,$silentValue:u,$error:K,$pending:oe,$invalid:I,$correct:w,$ready:Z,$anyDirty:f,$name:X,$silentErrors:h,$errors:fe,$fields:R,$edited:F,$anyEdited:S}));}),we}),V.push(N);});}let ie=computed({get:()=>i?Object.fromEntries(Object.entries(i?.(R.value)??{}).map(([B,A])=>A.length?[B,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$correct"].map(N=>[N,Dt(A,N)])),...Object.fromEntries(["$errors","$silentErrors"].map(N=>[N,It(A,N)]))}]:[])):{},set(){}}),je={};return se(),{$dirty:d,$anyDirty:f,$invalid:I,$correct:w,$error:K,$pending:oe,$errors:fe,$silentErrors:h,$ready:Z,$name:X,$shortcuts:je,$groups:ie,$silentValue:u,$edited:F,$anyEdited:S,$localPending:ee,$autoDirty:Y,$silent:M}});}function T(){O?.(),l?.(),v?.(),P?.(),V=[],E={},R.value&&Object.entries(R.value).forEach(([u,d])=>{d.$unwatch();});}function U(){Object.entries(R.value).forEach(([u,d])=>{d.$clearExternalErrors();});}function W(u,d){if(l?.(),T(),!d)if(u?.toInitialState)t.value=k({...$.value??{}});else if(u?.toState){let f;typeof u?.toState=="function"?f=u?.toState():f=u?.toState,$.value=k(f),t.value=k(f);}else $.value=k(t.value);Object.values(R.value).forEach(f=>{f.$reset(u,true);}),u?.clearExternalErrors&&U(),b(),d||C();}function q(u=true,d=false){Object.values(R.value).forEach(f=>{f.$touch(u,d);});}function z(u){return u.filter(([d,f])=>j(f)?!(f&&typeof f=="object"&&"_null"in f)&&!te(f):Array.isArray(f)?f.length:true)}function le(u=true){let d=Object.entries(R.value).map(([f,I])=>[f,I.$extractDirtyFields(u)]);return u&&(d=z(d)),Object.fromEntries(d)}async function D(){try{if(m.schemaMode)return m.onValidate?(q(!1),E.$localPending.value=!0,m.onValidate()):{valid:!1,data:t.value};{let u=t.value;return {valid:(await Promise.allSettled(Object.values(R.value).map(I=>I.$validate()))).every(I=>I.status==="fulfilled"?I.value.valid===!0:!1),data:u}}}catch{return {valid:false,data:t.value}}finally{E.$localPending.value=false;}}let{$shortcuts:H,$localPending:ve,...Re}=E;return reactive({...Re,...H,$fields:R,$value:t,$reset:W,$touch:q,$validate:D,$unwatch:T,$watch:g,$clearExternalErrors:U,$extractDirtyFields:le})}function Ce({rulesDef:e,...t}){if(At(e,t.state,t.schemaMode))return Gt({rulesDef:e,...t});if(We(t.state,e)){if(ke(t.state))return ze({rulesDef:e,...t});{let n=effectScope().run(()=>{let s=toRef(t.state.value?t.state:ref({}));return watch(()=>t.state.value,i=>{s.value=i;},{deep:true}),watch(s,i=>{t.state.value=i;},{deep:true}),{fakeState:s}}),{state:a,...o}=t;return ze({rulesDef:e,...o,state:n.fakeState})}}else if(Be(e))return Ee({rulesDef:e,...t})}function Oe({initialState:e,options:t,scopeRules:r,state:n,customRules:a,shortcuts:o,schemaErrors:s,schemaMode:i=false,onValidate:$}){let p=rt(),m=ref();return We(n,r)?m.value=ze({rootRules:r,rulesDef:r,state:n,customMessages:a?.(),storage:p,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:o,fieldName:"root",path:"",schemaErrors:s,rootSchemaErrors:s,schemaMode:i,onValidate:$}):Be(r)&&(m.value=Ee({rulesDef:r,state:n,customMessages:a?.(),storage:p,options:t,externalErrors:t.externalErrors,initialState:e,shortcuts:o,fieldName:"root",path:"",schemaMode:i,schemaErrors:s,onValidate:$})),getCurrentScope()&&onScopeDispose(()=>{m.value?.$unwatch();}),reactive({regle:m})}function Ke(e,t,r){let n={autoDirty:t?.autoDirty,lazy:t?.lazy,rewardEarly:t?.rewardEarly,silent:t?.silent,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange};function a(o,s,i){let $=isRef(s)?s:typeof s=="function"?void 0:computed(()=>s),p={...n,...i},m=isRef(o)?o:ref(o),G=shallowRef($??{});typeof s=="function"&&watchEffect(()=>{G.value=s(m),triggerRef(G);});let E=ref(j(m.value)?{...k(m.value)}:k(m.value));return {r$:Oe({scopeRules:G,state:m,options:p,initialState:E,customRules:e,shortcuts:r}).regle}}return a}var qe=Ke();function Je(){function e(t,r){return r}return e}var Rt=Je();function Ht({rules:e,modifiers:t,shortcuts:r}){let n=Ke(e,t,r);n.__config={rules:e,modifiers:t,shortcuts:r};let a=Je();return {useRegle:n,inferRules:a}}function zt(e,{rules:t,modifiers:r,shortcuts:n}){let a=e.__config??{},o=()=>({...a.rules?.(),...t?.()}),s=a.modifiers&&r?Pe(a.modifiers,r):r,i=a.shortcuts&&n?Pe(a.shortcuts,n):n,$=Ke(o,s,i);$.__config={rules:o,modifiers:s,shortcuts:i};let p=Je();return {useRegle:$,inferRules:p}}function Fe(e,t){let r=t??false,n=computed({get:()=>r?Object.values(e).map(c=>c.$value):Object.fromEntries(Object.entries(e).map(([c,g])=>[c,g.$value])),set:c=>{r||typeof c=="object"&&Object.entries(c).forEach(([g,T])=>e[g].$value=T);}}),a=computed({get:()=>Object.fromEntries(Object.entries(e).map(([c,g])=>[c,g.$silentValue])),set:c=>{typeof c=="object"&&Object.entries(c).forEach(([g,T])=>e[g].$silentValue=T);}}),o=computed(()=>{let c=Object.entries(e);return !!c.length&&c.every(([g,T])=>T?.$dirty)}),s=computed(()=>Object.entries(e).some(([c,g])=>g?.$anyDirty)),i=computed(()=>Object.entries(e).some(([c,g])=>g?.$invalid)),$=computed(()=>{let c=Object.entries(e);return !!c.length&&c.every(([g,T])=>T?.$correct||T.$anyDirty&&!T.$invalid)}),p=computed(()=>Object.entries(e).some(([c,g])=>g?.$error)),m=computed(()=>{let c=Object.entries(e);return !!c.length&&c.every(([g,T])=>T?.$ready)}),G=computed(()=>Object.entries(e).some(([c,g])=>g?.$pending)),E=computed(()=>r?Object.entries(e).map(([c,g])=>g.$errors):Object.fromEntries(Object.entries(e).map(([c,g])=>[c,g.$errors]))),V=computed(()=>r?Object.entries(e).map(([c,g])=>g.$silentErrors):Object.fromEntries(Object.entries(e).map(([c,g])=>[c,g.$silentErrors]))),O=computed(()=>{let c=Object.entries(e);return !!c.length&&c.every(([g,T])=>T?.$edited)}),P=computed(()=>Object.entries(e).some(([c,g])=>g?.$anyEdited)),l=computed(()=>r?Object.values(e):e);function v(c){Object.values(e).forEach(g=>{g.$reset(c);});}function x(){Object.values(e).forEach(c=>{c.$touch();});}function C(c=true){return Object.values(e).map(g=>g.$extractDirtyFields(c))}function R(){Object.values(e).forEach(c=>{c.$clearExternalErrors();});}async function b(){try{let c=n.value;return {valid:(await Promise.allSettled(Object.values(e).map(U=>U.$validate()))).every(U=>U.status==="fulfilled"?U.value.valid===!0:!1),data:c}}catch{return {valid:false,data:n.value}}}return reactive({...!r&&{$silentValue:a},$errors:E,$silentErrors:V,$instances:l,$value:n,$dirty:o,$anyDirty:s,$invalid:i,$correct:$,$error:p,$pending:G,$ready:m,$edited:O,$anyEdited:P,$reset:v,$touch:x,$validate:b,$extractDirtyFields:C,$clearExternalErrors:R})}function qt(e,t){function r(n){let a=computed(()=>toValue(n));i();let o=ref($(e.value)),s=reactive({r$:o});function i(){a.value&&!e.value[a.value]&&(e.value[a.value]={});}watch(a,i),watch(e,p=>{o.value=$(p);},{deep:true});function $(p){if(a.value){let m=p[a.value]??{};return Fe(m,!t.asRecord)}else return Fe(p["~~global"]??{},!t.asRecord)}return {r$:s.r$}}return {useCollectScope:r}}function Qt(e,t){let r=t??qe;return {useScopedRegle:(a,o,s)=>{let{namespace:i,scopeKey:$,...p}=s??{};r.__config??={};let m=computed(()=>toValue(i)),G=ref(`${Object.keys(e.value).length+1}-${be()}`),E=computed(()=>s?.scopeKey??`instance-${G.value}`),{r$:V}=r(a,o,p);P(),Pt(O),watch(m,(l,v)=>{O(v),P();}),getCurrentInstance()&&onMounted(()=>{let l=getCurrentInstance();typeof window<"u"&&l?.proxy?.$el?.parentElement&&document.documentElement&&!document.documentElement.contains(l?.proxy?.$el?.parentElement)&&O();});function O(l){let v=l??m.value;v?e.value[v]&&delete e.value[v][E.value]:e.value["~~global"][E.value]&&delete e.value["~~global"][E.value];}function P(){m.value?(e.value[m.value]||(e.value[m.value]={}),e.value[m.value][E.value]=V):(e.value["~~global"]||(e.value["~~global"]={}),e.value["~~global"][E.value]=V);}return {r$:V,dispose:O,register:P}}}}function Ye(e){let r=(e?.customStore?()=>(e.customStore&&(e.customStore?.value["~~global"]?e.customStore?.value&&(e.customStore.value={"~~global":{}}):e.customStore.value["~~global"]={}),e.customStore):Mt(()=>ref({"~~global":{}})))(),{useScopedRegle:n}=Qt(r,e?.customUseRegle),{useCollectScope:a}=qt(r,{asRecord:e?.asRecord});return {useScopedRegle:n,useCollectScope:a}}var {useCollectScope:pt,useScopedRegle:dt}=Ye();function er(e,t,r){let n=computed(()=>toValue(e)[t]);return computed(()=>{let o=r.find(s=>{if(s[t]&&"literal"in s[t]){let i=s[t].literal;if(me(i))return unref(i._params?.[0])===n.value}});if(o)return o;{let s=r.find(i=>j(i[t])&&!Object.keys(i[t]).some($=>$==="literal"));return s||{}}})}function yt(e,t,r){return j(e[t])&&"$value"in e[t]&&e[t]?.$value===r}function tr(e,t,r){let n=isRef(e)?toRef(e.value,"$fields"):toRef(e,"$fields"),a=ref();return watch(n,async()=>{await nextTick(),yt(n.value,t,r)?a.value=n.value:a.value=void 0;},{immediate:true,flush:"pre"}),a}function rr(e){return e}function nr(e,t){return r=>Pe({...e},t(r))}
2
- export{Ze as InternalRuleType,tt as createRule,Ye as createScopedUseRegle,er as createVariant,Ht as defineRegleConfig,rr as defineRules,zt as extendRegleConfig,ot as flatErrors,Rt as inferRules,Fe as mergeRegles,yt as narrowVariant,nr as refineRules,re as unwrapRuleParameters,pt as useCollectScope,qe as useRegle,Oe as useRootStorage,dt as useScopedRegle,tr as variantToRef};
1
+ import {effectScope,computed,toValue,ref,watch,getCurrentInstance,onMounted,reactive,getCurrentScope,onScopeDispose,isRef,shallowRef,watchEffect,triggerRef,toRef,unref,version,nextTick,markRaw}from'vue';function re(e,t=true){return e==null?true:e instanceof Date?isNaN(e.getTime()):e.constructor.name=="File"||e.constructor.name=="FileList"?e.size<=0:Array.isArray(e)?t?e.length===0:false:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}var Dt=Symbol("regle-rule");function ir(e){if(typeof e.source.flags=="string")return e.source.flags;{let t=[];return e.global&&t.push("g"),e.ignoreCase&&t.push("i"),e.multiline&&t.push("m"),e.sticky&&t.push("y"),e.unicode&&t.push("u"),t.join("")}}function G(e){let t=e,r={}.toString.call(e).slice(8,-1);if(r=="Set"&&(t=new Set([...e].map(n=>G(n)))),r=="Map"&&(t=new Map([...e].map(n=>[G(n[0]),G(n[1])]))),r=="Date"&&(t=new Date(e.getTime())),r=="RegExp"&&(t=RegExp(e.source,ir(e))),r=="Array"||r=="Object"){t=Array.isArray(e)?[]:{};for(let n in e)t[n]=G(e[n]);}return t}function k(e){return e&&(e instanceof Date||e.constructor.name=="File"||e.constructor.name=="FileList")?false:typeof e=="object"&&e!==null&&!Array.isArray(e)}function Fe(e,...t){for(var r=[].slice.call(arguments),n,a=r.length;n=r[a-1],a--;)if(!n||typeof n!="object"&&typeof n!="function")throw new Error("expected object, got "+n);for(var l=r[0],u=r.slice(1),f=u.length,a=0;a<f;a++){var g=u[a];for(var p in g)l[p]=g[p];}return l}function Ze(e){let t=Object.prototype.toString.call(e);return e==null?new Date(NaN):e instanceof Date||typeof e=="object"&&t==="[object Date]"?new Date(e.getTime()):typeof e=="number"||t==="[object Number]"?new Date(e):typeof e=="string"||t==="[object String]"?new Date(e):new Date(NaN)}function Ge(e,t,r){let n,a=(...l)=>new Promise(u=>{clearTimeout(n),n=setTimeout(()=>{n=void 0,Promise.resolve(e.apply(this,[...l])).then(u);},t);});return a.cancel=()=>{clearTimeout(n),n=void 0;},a}var et={Inline:"__inline",Async:"__async"};function It(e,t){return e.some(r=>r[t])}function Ot(e,t){return e.reduce((r,n)=>{let a=n[t]||[];return r.concat(a)},[])}function ne(e){try{return e.map(t=>toValue(t))}catch{return []}}function wt(e){return e.map(t=>t instanceof Function?computed(t):isRef(t)?t:toRef(()=>t))}function Pt(e){let n=e.toString().replace(/\/\/.*$/gm,"").replace(/\/\*[\s\S]*?\*\//g,"").match(/^(?:async\s*)?(?:function\b.*?\(|\((.*?)\)|(\w+))\s*=>|\((.*?)\)\s*=>|function.*?\((.*?)\)|\((.*?)\)/);return n?(n[0]||n[1]||n[2]||n[3]||n[4]||"").split(",").map(u=>u.trim()).filter(u=>u.length>0).length:0}function tt(e,...t){let{validator:r,type:n}=e,a=n===et.Async||r.constructor.name==="AsyncFunction";return markRaw({...{validator(f,...g){return e.validator(f,...ne(g.length?g:t))},message(f){return typeof e.message=="function"?e.message({...f,$params:ne(f?.$params?.length?f.$params:t)}):e.message},active(f){return typeof e.active=="function"?e.active({...f,$params:ne(f?.$params?.length?f.$params:t)}):e.active??true},tooltip(f){return typeof e.tooltip=="function"?e.tooltip({...f,$params:ne(f?.$params?.length?f.$params:t)}):e.tooltip??[]},exec(f){let g=e.validator(f,...ne(t)),p;return g instanceof Promise?g.then(d=>(p=d,typeof p=="object"&&"$valid"in p?p.$valid:typeof p=="boolean"?p:false)):(p=g,typeof p=="object"&&"$valid"in p?p.$valid:typeof p=="boolean"?p:false)}},_validator:e.validator,_message:e.message,_active:e.active,_tooltip:e.tooltip,_type:e.type,_message_patched:false,_tooltip_patched:false,_async:a,_params:wt(t),_brand:Dt})}function rt(e){if(typeof e.validator=="function"){let r=tt(e,...[]),n=e.async??e.validator.constructor.name==="AsyncFunction";if(Pt(e.validator)>1){let a=function(...l){return tt(e,...l)};return a.validator=r.validator,a.message=r.message,a.active=r.active,a.tooltip=r.tooltip,a.type=r.type,a.exec=r.exec,a._validator=r.validator,a._message=r.message,a._active=r.active,a._tooltip=r.tooltip,a._type=e.type,a._message_pacthed=false,a._tooltip_pacthed=false,a._async=n,a}else return r}throw new Error("[createRule] validator must be a function")}function nt(){let e=shallowRef(new Map),t=shallowRef(new Map),r=shallowRef(new Map),n=shallowRef(new Map),a=shallowRef(new Map),l=shallowRef(new Map);function u(y){let h=t.value.get(y);if(h)return h;{let x=ref({});return t.value.set(y,x),x}}function f(y){let h=r.value.get(y);if(h)return h;{let x=ref([]);return r.value.set(y,x),x}}function g(y,h,x){l.value.set(`${y}-${h}`,x);}function p(y,h){return l.value.get(`${y}-${h}`)}function d(y,h){y&&h!=null&&l.value.delete(`${y}-${h}`);}function W(y,h){n.value.set(y,h);}function b(y){return n.value.get(y)??false}function P(y,h){e.value.set(y,h);}function I(y,h){let x=e.value.get(y);return x?w(h,x)?{valid:true}:{valid:false}:void 0}function w(y,h){let x=Object.keys(h),T=Object.keys(y);return T.length!==x.length||!T.every(i=>x.includes(i))?false:T.every(i=>{let s=y[i],v=h[i];return !v||!s||typeof s=="function"||typeof v=="function"||typeof s=="number"||typeof s=="boolean"?false:s._params?s._params?.every((B,L)=>{if(typeof v=="number"||typeof v=="boolean")return true;{let J=ne(v._params),z=ne(s._params);return J?.[L]===z?.[L]}}):true})}function o(y){let h=a.value.get(y);if(h)return h;{let x=ref(false),T=ref(true),Q=ref({}),i=ref(false);return a.value.set(y,{$pending:x,$valid:T,$metadata:Q,$validating:i}),{$pending:x,$valid:T,$metadata:Q,$validating:i}}}return getCurrentScope()&&onScopeDispose(()=>{e.value.clear(),t.value.clear(),r.value.clear(),n.value.clear(),a.value.clear(),l.value.clear();}),{addRuleDeclEntry:P,setDirtyEntry:W,checkRuleDeclEntry:I,getDirtyState:b,trySetRuleStatusRef:o,getFieldsEntry:u,getCollectionsEntry:f,getArrayStatus:p,addArrayStatus:g,deleteArrayStatus:d,arrayStatusStorage:l}}function We(e){return k(e.value)}function at(e,t,r){let n=effectScope(),a;return e instanceof Function?a=n.run(()=>e(t,r??0)):a=e,{scope:n,unwrapped:a}}var Ve={LessThan:-1,EqualTo:0,GreaterThan:1};function vr(e,t){let r=String(e).split("."),n=String(t).split(".");for(let a=0;a<Math.min(r.length,n.length);a++){let l=Number(r[a]),u=Number(n[a]);if(l>u)return Ve.GreaterThan;if(u>l)return Ve.LessThan;if(!isNaN(l)&&isNaN(u))return Ve.GreaterThan;if(isNaN(l)&&!isNaN(u))return Ve.LessThan}return Ve.EqualTo}var Be=vr(version,"3.5.0")!==-1;function $r(){return Math.floor(Math.random()*Date.now()).toString()}function Ce(){return typeof window>"u"?$r():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function Mt(e){return getCurrentScope()?(onScopeDispose(e),true):false}function At(e){let t=false,r,n=effectScope(true);return (...a)=>(t||(r=n.run(()=>e(...a)),t=true),r)}function Le(e,t){return We(e)||k(t.value)&&!re(t.value)&&!Object.entries(t.value).some(([r,n])=>$e(n)||typeof n=="function")}function Ft(e,t,r=false){return !!e.value&&k(e.value)&&"$each"in e.value||r&&Array.isArray(t.value)&&t.value.some(k)||Array.isArray(t.value)&&t.value.some(k)}function He(e){return !!e.value&&k(e.value)}function $e(e){return k(e)&&"_validator"in e}function je(e){return typeof e.value=="function"?"_validator"in e.value:true}function Vt(e){return k(e)&&"$fields"in e}function lt(e){return !!e&&"$rules"in e}function ot({field:e,silent:t=false}){return Object.entries(e.$rules??{}).map(([r,n])=>t&&!n.$valid||!n.$valid&&e.$error&&!n.$validating?n.$message:null).filter(r=>!!r).reduce((r,n)=>typeof n=="string"?r?.concat([n]):r?.concat(n),[]).concat(e.$error?e.$externalErrors??[]:[]).concat(e.$error?e.$schemaErrors??[]:[])}function jt({field:e}){return Object.entries(e.$rules??{}).map(([t,r])=>r.$tooltip).filter(t=>!!t).reduce((t,r)=>typeof r=="string"?t?.concat([r]):t?.concat(r),[])}function _t(e){return k(e)&&"$each"in e}function st(e,t){let{includePath:r=false}=t??{};if(Array.isArray(e)&&e.every(n=>!k(n)))return e;if(_t(e)){let n=r?e.$self?.map(l=>({error:l,path:""}))??[]:e.$self??[],a=e.$each?.map(l=>ze(l,r))??[];return n?.concat(a.flat())}else return Object.entries(e).map(([n,a])=>ze(a,r,[n])).flat()}function ze(e,t=false,r){let n=t&&!r?[]:r;if(Array.isArray(e)&&e.every(a=>!k(a)))return t?e.map(a=>({error:a,path:n?.join(".")??""})):e;if(_t(e)){let a=n?.length?e.$self?.map(u=>({error:u,path:n.join(".")}))??[]:e.$self??[],l=e.$each?.map((u,f)=>ze(u,t,n?.concat(f.toString())))??[];return a?.concat(l.flat())}else return Object.entries(e).map(([a,l])=>ze(l,t,n?.concat(a))).flat()}function Ut({customMessages:e,rule:t,ruleKey:r,state:n,path:a,storage:l,$debounce:u,modifiers:f}){let g=effectScope(),p={},d,W=ref(false),b=ref(false),{$pending:P,$valid:I,$metadata:w,$validating:o}=l.trySetRuleStatusRef(`${a}.${r}`);function y(){g=effectScope(),p=g.run(()=>{let v=ref(false),B=ref(false),L=ref(true),J=ref(false),z=ref(false),oe=computed(()=>({$value:n.value,$error:B.value,$dirty:v.value,$pending:J.value,$correct:z.value,$invalid:L.value,$rule:{$valid:I.value,$invalid:!I.value,$pending:P.value},$params:c.value,...w.value})),E=computed(()=>je(t)?typeof t.value.active=="function"?t.value.active(oe.value):!!t.value.active:true);function K(S){let M="",R=e?e[r]?.[S]:void 0;if(R&&(typeof R=="function"?M=R(oe.value):M=R),je(t)){let N=`_${S}_patched`;R&&!t.value[N]||(typeof t.value[S]=="function"?M=t.value[S](oe.value):M=t.value[S]??"");}return M}let ge=computed(()=>{let S=K("message");return re(S)&&(S="This field is not valid"),S}),Re=computed(()=>K("tooltip")),O=computed(()=>je(t)&&t.value.type?t.value.type:r),V=computed(()=>je(t)?t.value.validator:t.value),c=computed(()=>typeof t.value=="function"?[]:ne(t.value._params??[])),m=computed(()=>`${a}.${O.value}`);return {$active:E,$message:ge,$type:O,$validator:V,$params:c,$path:m,$tooltip:Re,$fieldCorrect:z,$fieldError:B,$fieldDirty:v,$fieldPending:J,$fieldInvalid:L}}),d=watch(p?.$params,()=>{(!f.$silent.value||f.$rewardEarly.value&&p.$fieldError.value)&&Q();});}y();function h(){I.value=true,p.$fieldDirty.value&&(P.value=true);}async function x(){let v=false;try{let B=p.$validator.value;if(typeof B!="function")return console.error(`${a}: Incorrect rule format, it needs to be either a function or created with "createRule".`),!1;let L=B(n.value,...p.$params.value),J=n.value;h();let z;if(L instanceof Promise?z=await L:z=L,n.value!==J)return !0;if(typeof z=="boolean")v=z;else {let{$valid:oe,...E}=z;v=oe,w.value=E;}}catch{v=false;}finally{P.value=false;}return v}let T=Ge(x,u??200);async function Q(){try{o.value=!0;let v=!1;if(b.value=!0,$e(t.value)&&t.value._async)v=await T();else {let B=p.$validator.value,L=B(n.value,...p.$params.value);if(L 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(L!=null)if(typeof L=="boolean")v=L;else {let{$valid:J,...z}=L;v=J,w.value=z;}}return I.value=v,v}catch{return false}finally{o.value=false,b.value=false;}}function i(){I.value=true,w.value={},P.value=false,o.value=false,y();}function s(){d(),g.stop(),g=effectScope();}return reactive({...p,$pending:P,$valid:I,$metadata:w,$haveAsync:W,$maybePending:b,$validating:o,$parse:Q,$unwatch:s,$watch:y,$reset:i})}function Ie({state:e,rulesDef:t,customMessages:r,path:n,fieldName:a,storage:l,options:u,externalErrors:f,schemaErrors:g,schemaMode:p,onUnwatch:d,$isArray:W,initialState:b,shortcuts:P,onValidate:I}){let w=effectScope(),o,y=[],h,x,T,Q,i,s=()=>{};function v(){let $=t.value,j=l.checkRuleDeclEntry(n,$);K.value=Object.fromEntries(Object.entries($).filter(([A])=>A.startsWith("$"))),J(),E.value=Object.fromEntries(Object.entries(t.value).filter(([A])=>!A.startsWith("$")).map(([A,te])=>{if(te){let ie=toRef(()=>te);return [A,Ut({modifiers:{$silent:o.$silent,$rewardEarly:o.$rewardEarly},customMessages:r,rule:ie,ruleKey:A,state:e,path:n,storage:l,$debounce:K.value.$debounce})]}return []}).filter(A=>!!A.length)),o.processShortcuts(),B(),j?.valid!=null&&(o.$dirty.value=l.getDirtyState(n),(o.$dirty.value&&!o.$silent.value||o.$rewardEarly.value&&o.$error.value)&&s()),l.addRuleDeclEntry(n,$);}function B(){s=o.$debounce.value?Ge(oe,o.$debounce.value??o.$haveAnyAsyncRule?100:0):oe;}function L(){E.value&&Object.entries(E.value).forEach(([$,j])=>{j.$unwatch();}),T(),i?.(),o.$dirty.value&&l.setDirtyEntry(n,o.$dirty.value),h?.(),x?.(),w.stop(),w=effectScope(),y.forEach($=>$.stop()),y=[],d?.(),Q?.();}function J(){E.value&&Object.entries(E.value).forEach(([$,j])=>{j.$watch();}),o=w.run(()=>{let $=ref(false),j=ref(false),A=computed(()=>$.value),te=computed(()=>K.value.$debounce),ie=computed(()=>K.value.$lazy!=null?K.value.$lazy:unref(u.lazy)!=null?unref(u.lazy):false),fe=computed(()=>K.value.$rewardEarly!=null?K.value.$rewardEarly:unref(u.rewardEarly)!=null?unref(u.rewardEarly):false),Te=computed(()=>K.value.$clearExternalErrorsOnChange!=null?K.value.$clearExternalErrorsOnChange:unref(u.clearExternalErrorsOnChange)!=null?unref(u.clearExternalErrorsOnChange):true),C=computed(()=>fe.value?true:K.value.$silent!=null?K.value.$silent:unref(u.silent)!=null?unref(u.silent):false),_=computed(()=>K.value.$autoDirty!=null?K.value.$autoDirty:unref(u.autoDirty)!=null?unref(u.autoDirty):true),D=computed(()=>Object.entries(E.value).some(([ue,ee])=>ee.$validating)),F=computed({get:()=>e.value,set(ue){h(),e.value=ue,z();}}),ve=computed(()=>he.value&&!be.value&&$.value),gt=computed(()=>ot({field:{$rules:E.value,$error:ve.value,$externalErrors:f?.value,$schemaErrors:g?.value}})),vt=computed(()=>ot({field:{$rules:E.value,$error:ve.value,$externalErrors:f?.value,$schemaErrors:g?.value},silent:true})),Xe=computed(()=>$.value?b.value instanceof Date&&e.value instanceof Date?Ze(b.value).getDate()!==Ze(e.value).getDate():b.value==null?!!e.value:Array.isArray(e.value)&&Array.isArray(b.value)?e.value.length!==b.value.length:b.value!==e.value:false),$t=computed(()=>Xe.value),St=computed(()=>jt({field:{$rules:E.value}})),Tt=computed(()=>(C.value||A.value)&&!(he.value||be.value)),be=computed(()=>j.value||!fe.value?Object.entries(E.value).some(([ue,ee])=>ee.$pending):false),he=computed(()=>f?.value?.length||g?.value?.length?true:ke.value?false:!fe.value||fe.value&&j.value?Object.entries(E.value).some(([ue,ee])=>!(ee.$valid&&!ee.$maybePending)):false),bt=computed(()=>a),ke=computed(()=>!!(re(E.value)&&!p)),ht=computed(()=>f?.value?.length||ke.value?false:$.value&&!re(e.value)&&!D.value&&!be.value?p?!g?.value?.length:Object.values(E.value).some(ee=>ee.$active)?Object.values(E.value).filter(ee=>ee.$active).every(ee=>ee.$valid):false:false),or=computed(()=>Object.entries(E.value).some(([ue,ee])=>ee.$haveAsync));function sr(){P?.fields&&Object.entries(P.fields).forEach(([ue,ee])=>{let Et=effectScope();xt[ue]=Et.run(()=>{let Ct=ref();return watchEffect(()=>{Ct.value=ee(reactive({$dirty:$,$externalErrors:f?.value??[],$value:e,$silentValue:F,$rules:E,$error:ve,$pending:be,$invalid:he,$correct:ht,$errors:gt,$ready:Tt,$silentErrors:vt,$anyDirty:A,$tooltips:St,$name:bt,$inactive:ke,$edited:Xe,$anyEdited:$t}));}),Ct}),y.push(Et);});}let xt={};return watch(he,ue=>{ue||(j.value=false);}),{$error:ve,$pending:be,$invalid:he,$correct:ht,$debounce:te,$lazy:ie,$errors:gt,$ready:Tt,$silentErrors:vt,$rewardEarly:fe,$autoDirty:_,$silent:C,$clearExternalErrorsOnChange:Te,$anyDirty:A,$edited:Xe,$anyEdited:$t,$name:bt,$haveAnyAsyncRule:or,$shortcuts:xt,$validating:D,$tooltips:St,$dirty:$,triggerPunishment:j,processShortcuts:sr,$silentValue:F,$inactive:ke}}),z(),T=watch(o.$dirty,$=>{l.setDirtyEntry(n,$),Object.values(E.value).forEach(j=>{j.$fieldDirty=$;});}),i=watch([o.$error,o.$correct,o.$invalid,o.$pending],()=>{Object.values(E.value).forEach($=>{$.$fieldError=o.$error.value,$.$fieldInvalid=o.$invalid.value,$.$fieldPending=o.$pending.value,$.$fieldCorrect=o.$correct.value;});}),x=watch(o.$invalid,$=>{o.$rewardEarly.value&&!$&&(o.triggerPunishment.value=false);}),Q=watch(o.$haveAnyAsyncRule,B);}function z(){h=watch(e,()=>{o.$autoDirty.value&&!o.$silent.value&&(o.$dirty.value||(o.$dirty.value=true)),t.value instanceof Function&&v(),(!o.$silent.value||o.$rewardEarly.value&&o.$error.value)&&s(),o.$rewardEarly.value!==true&&o.$clearExternalErrorsOnChange.value&&c();},{deep:W?true:Be?1:true});}function oe(){Object.values(E.value).forEach($=>{$.$parse();});}let E=ref({}),K=ref({});v();function ge($,j){if(c(),o.$dirty.value=false,o.triggerPunishment.value=false,l.setDirtyEntry(n,false),!j)if($?.toInitialState)e.value=G(b);else if($?.toState){let A;typeof $?.toState=="function"?A=$?.toState():A=$?.toState,b.value=G(A),e.value=G(A);}else b.value=k(e.value)?G(e.value):Array.isArray(e.value)?[...e.value]:e.value;$?.clearExternalErrors&&c(),j||Object.entries(E.value).forEach(([A,te])=>{te.$reset();}),!o.$lazy.value&&!o.$silent.value&&!j&&Object.values(E.value).forEach(A=>A.$parse());}function Re($=true,j=false){o.$dirty.value||(o.$dirty.value=true),j&&$?(!o.$silent.value||o.$rewardEarly.value&&o.$error.value)&&s():$&&s();}async function O(){try{if(p)return I?(Re(!1),I()):{valid:!1,data:e.value};let $=e.value;if(o.triggerPunishment.value=!0,!o.$dirty.value)o.$dirty.value=!0;else if(!o.$silent.value&&o.$dirty.value&&!o.$pending.value)return {valid:!o.$error.value,data:$};return p?{valid:!g?.value?.length,data:$}:re(E.value)?{valid:!0,data:$}:{valid:(await Promise.allSettled(Object.entries(E.value).map(([te,ie])=>ie.$parse()))).every(te=>te.status==="fulfilled"?te.value===!0:!1),data:$}}catch{return {valid:false,data:e.value}}}function V($=true){return o.$dirty.value?e.value:$?{_null:true}:null}function c(){f?.value?.length&&(f.value=[]);}!o.$lazy.value&&!o.$dirty.value&&!o.$silent.value&&s();let{$shortcuts:m,$validating:S,$autoDirty:M,$rewardEarly:R,$clearExternalErrorsOnChange:N,$haveAnyAsyncRule:X,$debounce:Y,$lazy:Z,triggerPunishment:pe,...se}=o;return reactive({...se,$externalErrors:f,$value:e,$rules:E,...m,$reset:ge,$touch:Re,$validate:O,$unwatch:L,$watch:J,$extractDirtyFields:V,$clearExternalErrors:c})}function ct({$id:e,path:t,index:r,options:n,storage:a,stateValue:l,customMessages:u,rules:f,externalErrors:g,schemaErrors:p,initialState:d,shortcuts:W,fieldName:b,schemaMode:P}){let I=f.$key?f.$key:Ce(),w=`${t}.${String(I)}`;typeof l.value=="object"&&l.value!=null&&(l.value.$id?w=`${t}.${l.value.$id}`:Object.defineProperties(l.value,{$id:{value:I,enumerable:false,configurable:false,writable:false}}));let o=toRef(g?.value??[],r),y=computed(()=>p?.value?.[r]),h=Oe({state:l,rulesDef:toRef(()=>f),customMessages:u,path:w,storage:a,options:n,externalErrors:o,schemaErrors:y,initialState:d,shortcuts:W,fieldName:b,schemaMode:P});if(h){let x=l.value?.$id;h.$id=x??String(I),a.addArrayStatus(e,h.$id,h);}return h}function Bt({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:l,externalErrors:u,schemaErrors:f,schemaMode:g,initialState:p,shortcuts:d,fieldName:W}){let b=effectScope(),P,I=effectScope(),w,o=[];if(!Array.isArray(e.value)&&!t.value.$each)return;let y=ref(),h=ref(e.value),x=ref({}),T,Q,i=ref({}),s=a.getCollectionsEntry(n);w=I.run(()=>({isPrimitiveArray:computed(()=>Array.isArray(e.value)&&e.value.length?e.value.every(m=>typeof m!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(m=>$e(m)||typeof m=="function"):false)})),v(),J();function v(){x.value=Object.fromEntries(Object.entries(t.value).filter(([c])=>c.startsWith("$"))),typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?(y.value=Ce(),Object.defineProperties(e.value,{$id:{value:y.value,enumerable:false,configurable:false,writable:false}})):e.value?.$id&&(y.value=e.value.$id)),h.value=i.value.$value,Array.isArray(e.value)&&!w.isPrimitiveArray.value?s.value=e.value.filter(c=>typeof c=="object").map((c,m)=>{let{scope:S,unwrapped:M}=at(t.value.$each,toRef(()=>c),m);S&&o.push(S);let R=toRef(p.value??[],m),N=toRef(u?.value??{},"$each"),X=computed(()=>f?.value?.$each),Y=ct({$id:y.value,path:n,customMessages:r,rules:M??{},stateValue:toRef(()=>c),index:m,options:l,storage:a,externalErrors:N,schemaErrors:X,initialState:R,shortcuts:d,fieldName:W,schemaMode:g});return Y||null}).filter(c=>!!c):s.value=[],i.value=Ie({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:l,externalErrors:toRef(u?.value??{},"$self"),schemaErrors:computed(()=>f?.value?.$self),$isArray:true,initialState:p,shortcuts:d,fieldName:W,schemaMode:g});}function B(){if(Array.isArray(e.value)&&!w.isPrimitiveArray.value){let c=G(s.value);s.value=e.value.filter(m=>typeof m=="object").map((m,S)=>{let M=toRef(()=>m);if(m.$id&&s.value.find(R=>R.$id===m.$id)){let R=a.getArrayStatus(y.value,m.$id);return R?(R.$value=M,R):null}else {let{scope:R,unwrapped:N}=at(t.value.$each,M,S);R&&o.push(R);let X=toRef(u?.value??{},"$each"),Y=computed(()=>f?.value?.$each??[]),Z=ct({$id:y.value,path:n,customMessages:r,rules:N??{},stateValue:M,index:S,options:l,storage:a,externalErrors:X,schemaErrors:Y,initialState:toRef(p.value??[],S),shortcuts:d,fieldName:W,schemaMode:g});return Z||null}}).filter(m=>!!m),c.filter(m=>!e.value?.find(S=>m.$id===S.$id)).forEach((m,S)=>{a.deleteArrayStatus(y.value,S.toString());});}else s.value=[];}function L(){T=watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?v():B();},{deep:Be?1:true,flush:"pre"}),Q=watch(e,()=>{P.$autoDirty.value&&!P.$silent.value&&oe(false,true);},{flush:"pre"});}function J(){L(),b=effectScope(),P=b.run(()=>{let c=computed({get:()=>e.value,set(C){T?.(),Q?.(),e.value=C,L();}}),m=computed(()=>i.value.$dirty&&(!s.value.length||s.value.every(C=>C.$dirty))),S=computed(()=>i.value.$anyDirty||s.value.some(C=>C.$anyDirty)),M=computed(()=>i.value.$invalid||s.value.some(C=>C.$invalid)),R=computed(()=>(re(i.value.$rules)?true:i.value.$correct)&&(!s.value.length||s.value.every(C=>C.$correct||C.$anyDirty&&!C.$invalid))),N=computed(()=>i.value.$error||s.value.some(C=>C.$error)),X=computed(()=>!(M.value||Y.value)),Y=computed(()=>i.value.$pending||s.value.some(C=>C.$pending)),Z=computed(()=>!!s.value.length&&s.value.every(C=>C.$edited)),pe=computed(()=>i.value.$anyEdited||s.value.some(C=>C.$anyEdited)),se=computed(()=>({$self:i.value.$errors,$each:s.value.map(C=>C.$errors)})),$=computed(()=>({$self:i.value.$silentErrors,$each:s.value.map(C=>C.$silentErrors)})),j=computed(()=>x.value.$rewardEarly!=null?x.value.$rewardEarly:unref(l.rewardEarly)!=null?unref(l.rewardEarly):false),A=computed(()=>j.value?true:x.value.$silent!=null?x.value.$silent:unref(l.silent)!=null?unref(l.silent):false),te=computed(()=>x.value.$autoDirty!=null?x.value.$autoDirty:unref(l.autoDirty)!=null?unref(l.autoDirty):true),ie=computed(()=>W);function fe(){d?.collections&&Object.entries(d?.collections).forEach(([C,_])=>{let D=effectScope();Te[C]=D.run(()=>{let F=ref();return watchEffect(()=>{F.value=_(reactive({$dirty:m,$error:N,$silentValue:c,$pending:Y,$invalid:M,$correct:R,$errors:se,$ready:X,$silentErrors:$,$anyDirty:S,$name:ie,$each:s,$self:i,$value:e,$edited:Z,$anyEdited:pe}));}),F}),o.push(D);});}let Te={};return fe(),{$dirty:m,$anyDirty:S,$invalid:M,$correct:R,$error:N,$pending:Y,$errors:se,$silentErrors:$,$ready:X,$name:ie,$shortcuts:Te,$silentValue:c,$edited:Z,$anyEdited:pe,$rewardEarly:j,$silent:A,$autoDirty:te}}),w.isPrimitiveArray.value&&t.value.$each&&console.warn(`${n} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`);}function z(){T?.(),i.value&&i.value.$unwatch(),s.value&&s.value.forEach(c=>{"$dirty"in c&&c.$unwatch();}),b.stop(),b=effectScope(),I.stop(),I=effectScope(true),o.forEach(c=>c.stop()),o=[];}function oe(c=true,m=false){i.value.$touch(c,m),s.value.forEach(S=>{S.$touch(c,m);});}function E(c,m){if(z(),!m)if(c?.toInitialState)e.value=G(p.value);else if(c?.toState){let S;typeof c?.toState=="function"?S=c?.toState():S=c?.toState,p.value=G(S),e.value=G(S);}else p.value=G(e.value);c?.clearExternalErrors&&ge(),i.value.$reset(),s.value.forEach(S=>{S.$reset(c,true);}),m||v();}async function K(){let c=e.value;try{return {valid:(await Promise.allSettled([i.value.$validate(),...s.value.map(M=>M.$validate())])).every(M=>M.status==="fulfilled"?M.value.valid===!0:!1),data:c}}catch{return {valid:false,data:c}}}function ge(){i.value.$clearExternalErrors(),s.value.forEach(c=>{c.$clearExternalErrors();});}function Re(c=true){let m=s.value.map(S=>{if(Vt(S))return S.$extractDirtyFields(c)});return c&&m.every(S=>re(S))&&(m=[]),m}let{$shortcuts:O,...V}=P;return reactive({$self:i,...V,...O,$each:s,$value:e,$validate:K,$unwatch:z,$watch:J,$touch:oe,$reset:E,$extractDirtyFields:Re,$clearExternalErrors:ge})}function Ke({rulesDef:e,state:t,path:r="",rootRules:n,externalErrors:a,schemaErrors:l,rootSchemaErrors:u,validationGroups:f,initialState:g,fieldName:p,...d}){let W=effectScope(),b,P=[],I=null,w=null,o=null,y=null;async function x(O=true){let V=Object.entries(e.value),c=Object.fromEntries(V.filter(([R,N])=>!!N).map(([R,N])=>{if(N){let X=toRef(t.value??{},R),Y=toRef(()=>N),Z=toRef(a?.value??{},R),pe=computed(()=>l?.value?.[R]),se=toRef(g?.value??{},R);return [R,Oe({state:X,rulesDef:Y,path:r?`${r}.${R}`:R,externalErrors:Z,schemaErrors:pe,initialState:se,fieldName:R,...d})]}return []})),m=Object.fromEntries(Object.entries(unref(a)??{}).filter(([R,N])=>!(R in e.value)&&!!N).map(([R])=>{let N=toRef(t.value??{},R),X=toRef(a?.value??{},R),Y=computed(()=>l?.value?.[R]),Z=toRef(g?.value??{},R);return [R,Oe({state:N,rulesDef:computed(()=>({})),path:r?`${r}.${R}`:R,externalErrors:X,schemaErrors:Y,initialState:Z,fieldName:R,...d})]})),S=Object.fromEntries(Object.entries(unref(l)??{}).map(([R])=>{let N=toRef(t.value??{},R),X=toRef(a?.value??{},R),Y=computed(()=>l?.value?.[R]),Z=toRef(g?.value??{},R);return [R,Oe({state:N,rulesDef:computed(()=>({})),path:r?`${r}.${R}`:R,externalErrors:X,schemaErrors:Y,initialState:Z,fieldName:R,...d})]})),M=Object.fromEntries(Object.entries(t.value??{}).filter(([R])=>!(R in e.value)&&!(R in(m??{}))&&!(R in(S??{}))).map(([R])=>{let N=toRef(t.value??{},R),X=toRef(a?.value??{},R),Y=computed(()=>l?.value?.[R]),Z=toRef(g?.value??{},R);return [R,Oe({state:N,rulesDef:computed(()=>({})),path:r?`${r}.${R}`:R,externalErrors:X,schemaErrors:Y,initialState:Z,fieldName:R,...d})]}));T.value={...c,...m,...S,...M},O&&s();}let T=d.storage.getFieldsEntry(r);x();function Q(){a&&(o=watch(a,()=>{v(),x();},{deep:true}));}function i(){y=watch(t,()=>{v(),x(),b.$autoDirty.value&&!b.$silent.value&&J(false,true);});}function s(){n&&(I?.(),I=watch(n,()=>{v(),x();},{deep:true,flush:"pre"}),Q()),u&&(w?.(),w=watch(u,()=>{v(),x();},{deep:true,flush:"post"})),i(),b=W.run(()=>{let O=computed({get:()=>t.value,set(_){v(),t.value=_,x(),b.$autoDirty.value&&!b.$silent.value&&J(false,true);}}),V=computed({get:()=>t.value,set(_){v(),t.value=_,x();}}),c=computed(()=>!!Object.entries(T.value).length&&Object.entries(T.value).every(([_,D])=>D?.$dirty)),m=computed(()=>Object.entries(T.value).some(([_,D])=>D?.$anyDirty)),S=computed(()=>!!Object.entries(T.value).length&&Object.entries(T.value).some(([_,D])=>D?.$invalid)),M=computed(()=>{let _=Object.entries(T.value).filter(([D,F])=>lt(F)?!F.$inactive:true);return _.length?_.every(([D,F])=>d.schemaMode?F.$correct:lt(F)?"required"in F.$rules&&F.$rules.required.$active?F?.$correct:!F.$invalid&&!F.$pending:F?.$correct):false}),R=computed(()=>!!Object.entries(T.value).length&&Object.entries(T.value).some(([_,D])=>D?.$error)),N=computed(()=>unref(d.options.rewardEarly)!=null?unref(d.options.rewardEarly):false),X=computed(()=>unref(d.options.silent)!=null?unref(d.options.silent):!!N.value),Y=computed(()=>unref(d.options.autoDirty)!=null?unref(d.options.autoDirty):true),Z=computed(()=>(X.value||m.value)&&!(S.value||se.value)),pe=ref(false),se=computed(()=>pe.value||Object.entries(T.value).some(([_,D])=>D?.$pending)),$=computed(()=>Object.fromEntries(Object.entries(T.value).map(([_,D])=>[_,D?.$errors]))),j=computed(()=>Object.fromEntries(Object.entries(T.value).map(([_,D])=>[_,D?.$silentErrors]))),A=computed(()=>!!Object.entries(T.value).length&&Object.entries(T.value).every(([_,D])=>D?.$edited)),te=computed(()=>Object.entries(T.value).some(([_,D])=>D?.$anyEdited)),ie=computed(()=>p);function fe(){d.shortcuts?.nested&&Object.entries(d.shortcuts.nested).forEach(([_,D])=>{let F=effectScope();C[_]=F.run(()=>{let ve=ref();return watchEffect(()=>{ve.value=D(reactive({$dirty:c,$value:t,$silentValue:V,$error:R,$pending:se,$invalid:S,$correct:M,$ready:Z,$anyDirty:m,$name:ie,$silentErrors:j,$errors:$,$fields:T,$edited:A,$anyEdited:te}));}),ve}),P.push(F);});}let Te=computed({get:()=>f?Object.fromEntries(Object.entries(f?.(T.value)??{}).map(([_,D])=>D.length?[_,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$correct"].map(F=>[F,It(D,F)])),...Object.fromEntries(["$errors","$silentErrors"].map(F=>[F,Ot(D,F)]))}]:[])):{},set(){}}),C={};return fe(),{$dirty:c,$anyDirty:m,$invalid:S,$correct:M,$error:R,$pending:se,$errors:$,$silentErrors:j,$ready:Z,$name:ie,$shortcuts:C,$groups:Te,$silentValue:V,$edited:A,$anyEdited:te,$localPending:pe,$autoDirty:Y,$silent:X,$value:O}});}function v(){I?.(),o?.(),y?.(),w?.(),P=[],b={},T.value&&Object.entries(T.value).forEach(([O,V])=>{V.$unwatch();});}function B(){Object.entries(T.value).forEach(([O,V])=>{V.$clearExternalErrors();});}function L(O,V){if(o?.(),v(),!V)if(O?.toInitialState)t.value=G({...g.value??{}});else if(O?.toState){let c;typeof O?.toState=="function"?c=O?.toState():c=O?.toState,g.value=G(c),t.value=G(c);}else g.value=G(t.value);Object.values(T.value).forEach(c=>{c.$reset(O,true);}),O?.clearExternalErrors&&B(),Q(),V||x();}function J(O=true,V=false){Object.values(T.value).forEach(c=>{c.$touch(O,V);});}function z(O){return O.filter(([V,c])=>k(c)?!(c&&typeof c=="object"&&"_null"in c)&&!re(c):Array.isArray(c)?c.length:true)}function oe(O=true){let V=Object.entries(T.value).map(([c,m])=>[c,m.$extractDirtyFields(O)]);return O&&(V=z(V)),Object.fromEntries(V)}async function E(){try{if(d.schemaMode)return d.onValidate?(J(!1),b.$localPending.value=!0,d.onValidate()):{valid:!1,data:t.value};{let O=t.value;return {valid:(await Promise.allSettled(Object.values(T.value).map(m=>m.$validate()))).every(m=>m.status==="fulfilled"?m.value.valid===!0:!1),data:O}}}catch{return {valid:false,data:t.value}}finally{b.$localPending.value=false;}}let{$shortcuts:K,$localPending:ge,...Re}=b;return reactive({...Re,...K,$fields:T,$reset:L,$touch:J,$validate:E,$unwatch:v,$watch:s,$clearExternalErrors:B,$extractDirtyFields:oe})}function Oe({rulesDef:e,...t}){if(Ft(e,t.state,t.schemaMode))return Bt({rulesDef:e,...t});if(Le(t.state,e)){if(We(t.state))return Ke({rulesDef:e,...t});{let n=effectScope().run(()=>{let u=toRef(t.state.value?t.state:ref({}));return watch(()=>t.state.value,f=>{u.value=f;},{deep:true}),watch(u,f=>{t.state.value=f;},{deep:true}),{fakeState:u}}),{state:a,...l}=t;return Ke({rulesDef:e,...l,state:n.fakeState})}}else if(He(e))return Ie({rulesDef:e,...t})}function Ae({initialState:e,options:t,scopeRules:r,state:n,customRules:a,shortcuts:l,schemaErrors:u,schemaMode:f=false,onValidate:g}){let p=nt(),d=ref();return Le(n,r)?d.value=Ke({rootRules:r,rulesDef:r,state:n,customMessages:a?.(),storage:p,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:l,fieldName:"root",path:"",schemaErrors:u,rootSchemaErrors:u,schemaMode:f,onValidate:g}):He(r)&&(d.value=Ie({rulesDef:r,state:n,customMessages:a?.(),storage:p,options:t,externalErrors:t.externalErrors,initialState:e,shortcuts:l,fieldName:"root",path:"",schemaMode:f,schemaErrors:u,onValidate:g})),getCurrentScope()&&onScopeDispose(()=>{d.value?.$unwatch();}),reactive({regle:d})}function qe(e,t,r){let n={autoDirty:t?.autoDirty,lazy:t?.lazy,rewardEarly:t?.rewardEarly,silent:t?.silent,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange};function a(l,u,f){let g=isRef(u)?u:typeof u=="function"?void 0:computed(()=>u),p={...n,...f},d=isRef(l)?l:ref(l),W=shallowRef(g??{});typeof u=="function"&&watchEffect(()=>{W.value=u(d),triggerRef(W);});let b=ref(k(d.value)?{...G(d.value)}:G(d.value));return {r$:Ae({scopeRules:W,state:d,options:p,initialState:b,customRules:e,shortcuts:r}).regle}}return a}var Je=qe();function Ye(){function e(t,r){return r}return e}var pt=Ye();function Kt({rules:e,modifiers:t,shortcuts:r}){let n=qe(e,t,r);n.__config={rules:e,modifiers:t,shortcuts:r};let a=Ye();return {useRegle:n,inferRules:a}}function qt(e,{rules:t,modifiers:r,shortcuts:n}){let a=e.__config??{},l=()=>({...a.rules?.(),...t?.()}),u=a.modifiers&&r?Fe(a.modifiers,r):r,f=a.shortcuts&&n?Fe(a.shortcuts,n):n,g=qe(l,u,f);g.__config={rules:l,modifiers:u,shortcuts:f};let p=Ye();return {useRegle:g,inferRules:p}}function Ne(e,t){let r=t??false,n=computed({get:()=>r?Object.values(e).map(i=>i.$value):Object.fromEntries(Object.entries(e).map(([i,s])=>[i,s.$value])),set:i=>{r||typeof i=="object"&&Object.entries(i).forEach(([s,v])=>e[s].$value=v);}}),a=computed({get:()=>Object.fromEntries(Object.entries(e).map(([i,s])=>[i,s.$silentValue])),set:i=>{typeof i=="object"&&Object.entries(i).forEach(([s,v])=>e[s].$silentValue=v);}}),l=computed(()=>{let i=Object.entries(e);return !!i.length&&i.every(([s,v])=>v?.$dirty)}),u=computed(()=>Object.entries(e).some(([i,s])=>s?.$anyDirty)),f=computed(()=>Object.entries(e).some(([i,s])=>s?.$invalid)),g=computed(()=>{let i=Object.entries(e);return !!i.length&&i.every(([s,v])=>v?.$correct||v.$anyDirty&&!v.$invalid)}),p=computed(()=>Object.entries(e).some(([i,s])=>s?.$error)),d=computed(()=>{let i=Object.entries(e);return !!i.length&&i.every(([s,v])=>v?.$ready)}),W=computed(()=>Object.entries(e).some(([i,s])=>s?.$pending)),b=computed(()=>r?Object.entries(e).map(([i,s])=>s.$errors):Object.fromEntries(Object.entries(e).map(([i,s])=>[i,s.$errors]))),P=computed(()=>r?Object.entries(e).map(([i,s])=>s.$silentErrors):Object.fromEntries(Object.entries(e).map(([i,s])=>[i,s.$silentErrors]))),I=computed(()=>{let i=Object.entries(e);return !!i.length&&i.every(([s,v])=>v?.$edited)}),w=computed(()=>Object.entries(e).some(([i,s])=>s?.$anyEdited)),o=computed(()=>r?Object.values(e):e);function y(i){Object.values(e).forEach(s=>{s.$reset(i);});}function h(){Object.values(e).forEach(i=>{i.$touch();});}function x(i=true){return Object.values(e).map(s=>s.$extractDirtyFields(i))}function T(){Object.values(e).forEach(i=>{i.$clearExternalErrors();});}async function Q(){try{let i=n.value;return {valid:(await Promise.allSettled(Object.values(e).map(B=>B.$validate()))).every(B=>B.status==="fulfilled"?B.value.valid===!0:!1),data:i}}catch{return {valid:false,data:n.value}}}return reactive({...!r&&{$silentValue:a},$errors:b,$silentErrors:P,$instances:o,$value:n,$dirty:l,$anyDirty:u,$invalid:f,$correct:g,$error:p,$pending:W,$ready:d,$edited:I,$anyEdited:w,$reset:y,$touch:h,$validate:Q,$extractDirtyFields:x,$clearExternalErrors:T})}function Yt(e,t){function r(n){let a=computed(()=>toValue(n));f();let l=ref(g(e.value)),u=reactive({r$:l});function f(){a.value&&!e.value[a.value]&&(e.value[a.value]={});}watch(a,f),watch(e,p=>{l.value=g(p);},{deep:true});function g(p){if(a.value){let d=p[a.value]??{};return Ne(d,!t.asRecord)}else return Ne(p["~~global"]??{},!t.asRecord)}return {r$:u.r$}}return {useCollectScope:r}}function Zt(e,t){let r=t??Je;return {useScopedRegle:(a,l,u)=>{let{namespace:f,scopeKey:g,...p}=u??{};r.__config??={};let d=computed(()=>toValue(f)),W=ref(`${Object.keys(e.value).length+1}-${Ce()}`),b=computed(()=>u?.scopeKey??`instance-${W.value}`),{r$:P}=r(a,l,p);w(),Mt(I),watch(d,(o,y)=>{I(y),w();}),getCurrentInstance()&&onMounted(()=>{let o=getCurrentInstance();typeof window<"u"&&o?.proxy?.$el?.parentElement&&document.documentElement&&!document.documentElement.contains(o?.proxy?.$el?.parentElement)&&I();});function I(o){let y=o??d.value;y?e.value[y]&&delete e.value[y][b.value]:e.value["~~global"][b.value]&&delete e.value["~~global"][b.value];}function w(){d.value?(e.value[d.value]||(e.value[d.value]={}),e.value[d.value][b.value]=P):(e.value["~~global"]||(e.value["~~global"]={}),e.value["~~global"][b.value]=P);}return {r$:P,dispose:I,register:w}}}}function Qe(e){let r=(e?.customStore?()=>(e.customStore&&(e.customStore?.value["~~global"]?e.customStore?.value&&(e.customStore.value={"~~global":{}}):e.customStore.value["~~global"]={}),e.customStore):At(()=>ref({"~~global":{}})))(),{useScopedRegle:n}=Zt(r,e?.customUseRegle),{useCollectScope:a}=Yt(r,{asRecord:e?.asRecord});return {useScopedRegle:n,useCollectScope:a}}var {useCollectScope:dt,useScopedRegle:yt}=Qe();function rr(e,t,r){let n=computed(()=>toValue(e)[t]);return computed(()=>{let l=r.find(u=>{if(u[t]&&"literal"in u[t]){let f=u[t].literal;if($e(f))return unref(f._params?.[0])===n.value}});if(l)return l;{let u=r.find(f=>k(f[t])&&!Object.keys(f[t]).some(g=>g==="literal"));return u||{}}})}function mt(e,t,r){return k(e[t])&&"$value"in e[t]&&e[t]?.$value===r}function nr(e,t,r){let n=isRef(e)?toRef(e.value,"$fields"):toRef(e,"$fields"),a=ref();return watch(n,async()=>{await nextTick(),mt(n.value,t,r)?a.value=n.value:a.value=void 0;},{immediate:true,flush:"pre"}),a}function ar(e){return e}function lr(e,t){return r=>Fe({...e},t(r))}
2
+ export{et as InternalRuleType,rt as createRule,Qe as createScopedUseRegle,rr as createVariant,Kt as defineRegleConfig,ar as defineRules,qt as extendRegleConfig,st as flatErrors,pt as inferRules,Ne as mergeRegles,mt as narrowVariant,lr as refineRules,ne as unwrapRuleParameters,dt as useCollectScope,Je as useRegle,Ae as useRootStorage,yt as useScopedRegle,nr as variantToRef};
@@ -1,4 +1,6 @@
1
- import { effectScope, ref, computed, toValue, reactive, watch, getCurrentInstance, onMounted, getCurrentScope, onScopeDispose, isRef, shallowRef, watchEffect, triggerRef, toRef, unref, version, nextTick } from 'vue';
1
+ import { effectScope, ref, computed, toValue, reactive, watch, getCurrentInstance, onMounted, getCurrentScope, onScopeDispose, isRef, shallowRef, watchEffect, triggerRef, toRef, unref, version, nextTick, markRaw } from 'vue';
2
+
3
+ // src/core/createRule/defineRuleProcessors.ts
2
4
 
3
5
  // ../shared/utils/isEmpty.ts
4
6
  function isEmpty(value, considerEmptyArrayInvalid = true) {
@@ -231,7 +233,7 @@ function defineRuleProcessors(definition, ...params) {
231
233
  return false;
232
234
  }
233
235
  };
234
- const processors = {
236
+ const processors = markRaw({
235
237
  ...defaultProcessors,
236
238
  _validator: definition.validator,
237
239
  _message: definition.message,
@@ -243,7 +245,7 @@ function defineRuleProcessors(definition, ...params) {
243
245
  _async: isAsync,
244
246
  _params: createReactiveParams(params),
245
247
  _brand: RegleRuleSymbol
246
- };
248
+ });
247
249
  return processors;
248
250
  }
249
251
 
@@ -1200,7 +1202,7 @@ function createReactiveFieldStatus({
1200
1202
  rule.$reset();
1201
1203
  });
1202
1204
  }
1203
- if (!scopeState.$lazy.value && !scopeState.$silent.value) {
1205
+ if (!scopeState.$lazy.value && !scopeState.$silent.value && !fromParent) {
1204
1206
  Object.values($rules.value).forEach((rule) => {
1205
1207
  return rule.$parse();
1206
1208
  });
@@ -1382,7 +1384,9 @@ function createReactiveCollectionStatus({
1382
1384
  }
1383
1385
  const $id = ref();
1384
1386
  const $value = ref(state.value);
1387
+ const $localOptions = ref({});
1385
1388
  let $unwatchState;
1389
+ let $unwatchDirty;
1386
1390
  const $selfStatus = ref({});
1387
1391
  const $eachStatus = storage.getCollectionsEntry(path);
1388
1392
  immediateScopeState = immediateScope.run(() => {
@@ -1401,6 +1405,9 @@ function createReactiveCollectionStatus({
1401
1405
  createStatus();
1402
1406
  $watch();
1403
1407
  function createStatus() {
1408
+ $localOptions.value = Object.fromEntries(
1409
+ Object.entries(rulesDef.value).filter(([ruleKey]) => ruleKey.startsWith("$"))
1410
+ );
1404
1411
  if (typeof state.value === "object") {
1405
1412
  if (state.value != null && !state.value?.$id && state.value !== null) {
1406
1413
  $id.value = randomId();
@@ -1530,6 +1537,15 @@ function createReactiveCollectionStatus({
1530
1537
  },
1531
1538
  { deep: isVueSuperiorOrEqualTo3dotFive ? 1 : true, flush: "pre" }
1532
1539
  );
1540
+ $unwatchDirty = watch(
1541
+ state,
1542
+ () => {
1543
+ if (scopeState.$autoDirty.value && !scopeState.$silent.value) {
1544
+ $touch(false, true);
1545
+ }
1546
+ },
1547
+ { flush: "pre" }
1548
+ );
1533
1549
  }
1534
1550
  function $watch() {
1535
1551
  define$watchState();
@@ -1538,7 +1554,8 @@ function createReactiveCollectionStatus({
1538
1554
  const $silentValue = computed({
1539
1555
  get: () => state.value,
1540
1556
  set(value) {
1541
- $unwatchState();
1557
+ $unwatchState?.();
1558
+ $unwatchDirty?.();
1542
1559
  state.value = value;
1543
1560
  define$watchState();
1544
1561
  }
@@ -1598,6 +1615,31 @@ function createReactiveCollectionStatus({
1598
1615
  $each: $eachStatus.value.map(($each) => $each.$silentErrors)
1599
1616
  };
1600
1617
  });
1618
+ const $rewardEarly = computed(() => {
1619
+ if ($localOptions.value.$rewardEarly != null) {
1620
+ return $localOptions.value.$rewardEarly;
1621
+ } else if (unref(options.rewardEarly) != null) {
1622
+ return unref(options.rewardEarly);
1623
+ }
1624
+ return false;
1625
+ });
1626
+ const $silent = computed(() => {
1627
+ if ($rewardEarly.value) {
1628
+ return true;
1629
+ } else if ($localOptions.value.$silent != null) {
1630
+ return $localOptions.value.$silent;
1631
+ } else if (unref(options.silent) != null) {
1632
+ return unref(options.silent);
1633
+ } else return false;
1634
+ });
1635
+ const $autoDirty = computed(() => {
1636
+ if ($localOptions.value.$autoDirty != null) {
1637
+ return $localOptions.value.$autoDirty;
1638
+ } else if (unref(options.autoDirty) != null) {
1639
+ return unref(options.autoDirty);
1640
+ }
1641
+ return true;
1642
+ });
1601
1643
  const $name = computed(() => fieldName);
1602
1644
  function processShortcuts() {
1603
1645
  if (shortcuts?.collections) {
@@ -1649,7 +1691,10 @@ function createReactiveCollectionStatus({
1649
1691
  $shortcuts: $shortcuts2,
1650
1692
  $silentValue,
1651
1693
  $edited,
1652
- $anyEdited
1694
+ $anyEdited,
1695
+ $rewardEarly,
1696
+ $silent,
1697
+ $autoDirty
1653
1698
  };
1654
1699
  });
1655
1700
  if (immediateScopeState.isPrimitiveArray.value && rulesDef.value.$each) {
@@ -1659,9 +1704,7 @@ function createReactiveCollectionStatus({
1659
1704
  }
1660
1705
  }
1661
1706
  function $unwatch() {
1662
- if ($unwatchState) {
1663
- $unwatchState();
1664
- }
1707
+ $unwatchState?.();
1665
1708
  if ($selfStatus.value) {
1666
1709
  $selfStatus.value.$unwatch();
1667
1710
  }
@@ -1911,17 +1954,13 @@ function createReactiveNestedStatus({
1911
1954
  }
1912
1955
  }
1913
1956
  function define$watchState() {
1914
- $unwatchState = watch(
1915
- state,
1916
- () => {
1917
- $unwatch();
1918
- createReactiveFieldsStatus();
1919
- if (scopeState.$autoDirty.value && !scopeState.$silent.value) {
1920
- $touch(true, true);
1921
- }
1922
- },
1923
- { flush: "sync" }
1924
- );
1957
+ $unwatchState = watch(state, () => {
1958
+ $unwatch();
1959
+ createReactiveFieldsStatus();
1960
+ if (scopeState.$autoDirty.value && !scopeState.$silent.value) {
1961
+ $touch(false, true);
1962
+ }
1963
+ });
1925
1964
  }
1926
1965
  function $watch() {
1927
1966
  if (rootRules) {
@@ -1949,6 +1988,17 @@ function createReactiveNestedStatus({
1949
1988
  }
1950
1989
  define$watchState();
1951
1990
  scopeState = scope.run(() => {
1991
+ const $value = computed({
1992
+ get: () => state.value,
1993
+ set(value) {
1994
+ $unwatch();
1995
+ state.value = value;
1996
+ createReactiveFieldsStatus();
1997
+ if (scopeState.$autoDirty.value && !scopeState.$silent.value) {
1998
+ $touch(false, true);
1999
+ }
2000
+ }
2001
+ });
1952
2002
  const $silentValue = computed({
1953
2003
  get: () => state.value,
1954
2004
  set(value) {
@@ -2142,7 +2192,8 @@ function createReactiveNestedStatus({
2142
2192
  $anyEdited,
2143
2193
  $localPending: $localPending2,
2144
2194
  $autoDirty,
2145
- $silent
2195
+ $silent,
2196
+ $value
2146
2197
  };
2147
2198
  });
2148
2199
  }
@@ -2256,7 +2307,6 @@ function createReactiveNestedStatus({
2256
2307
  ...restScopeState,
2257
2308
  ...$shortcuts,
2258
2309
  $fields,
2259
- $value: state,
2260
2310
  $reset,
2261
2311
  $touch,
2262
2312
  $validate,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@regle/core",
3
- "version": "1.2.0-beta.6",
3
+ "version": "1.2.0-beta.8",
4
4
  "description": "Headless form validation library for Vue 3",
5
5
  "peerDependencies": {
6
6
  "pinia": ">=2.2.5",