@regle/core 1.1.0-beta.3 → 1.1.0-beta.4

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.
@@ -2324,6 +2324,7 @@ interface $InternalRegleRuleStatus {
2324
2324
  $fieldPending: boolean;
2325
2325
  $fieldCorrect: boolean;
2326
2326
  $fieldError: boolean;
2327
+ $maybePending: boolean;
2327
2328
  $validator(value: any, ...args: any[]): RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition>;
2328
2329
  $parse(): Promise<boolean>;
2329
2330
  $reset(): void;
@@ -2386,7 +2387,7 @@ interface SuperCompatibleRegleStatus extends SuperCompatibleRegleCommonStatus {
2386
2387
  $extractDirtyFields: (filterNullishValues?: boolean) => Record<string, any>;
2387
2388
  $validate?: () => Promise<SuperCompatibleRegleResult>;
2388
2389
  }
2389
- type SuperCompatibleRegleRuleStatus = Omit<$InternalRegleRuleStatus, '$haveAsync' | '$validating' | '$fieldDirty' | '$fieldInvalid' | '$fieldPending' | '$fieldCorrect' | '$fieldError' | '$unwatch' | '$watch'>;
2390
+ type SuperCompatibleRegleRuleStatus = Omit<$InternalRegleRuleStatus, '$haveAsync' | '$validating' | '$fieldDirty' | '$fieldInvalid' | '$fieldPending' | '$fieldCorrect' | '$fieldError' | '$unwatch' | '$watch' | '$maybePending'>;
2390
2391
  type SuperCompatibleRegleCommonStatus = Omit<RegleCommonStatus, '$pending'> & {
2391
2392
  $pending?: boolean;
2392
2393
  };
@@ -1,2 +1,2 @@
1
- import {effectScope,computed,toValue,ref,watch,getCurrentInstance,onMounted,reactive,getCurrentScope,onScopeDispose,isRef,shallowRef,toRef,unref,watchEffect,version}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 Et=Symbol("regle-rule");function nr(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,n={}.toString.call(e).slice(8,-1);if(n=="Set"&&(t=new Set([...e].map(r=>k(r)))),n=="Map"&&(t=new Map([...e].map(r=>[k(r[0]),k(r[1])]))),n=="Date"&&(t=new Date(e.getTime())),n=="RegExp"&&(t=RegExp(e.source,nr(e))),n=="Array"||n=="Object"){t=Array.isArray(e)?[]:{};for(let r in e)t[r]=k(e[r]);}return t}function N(e){return e&&(e instanceof Date||e.constructor.name=="File"||e.constructor.name=="FileList")?false:typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ye(e,...t){for(var n=[].slice.call(arguments),r,a=n.length;r=n[a-1],a--;)if(!r||typeof r!="object"&&typeof r!="function")throw new Error("expected object, got "+r);for(var o=n[0],s=n.slice(1),i=s.length,a=0;a<i;a++){var y=s[a];for(var d in y)o[d]=y[d];}return o}function Qe(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 _e(e,t,n){let r,a=(...o)=>new Promise(s=>{clearTimeout(r),r=setTimeout(()=>{r=void 0,Promise.resolve(e.apply(this,[...o])).then(s);},t);});return a.cancel=()=>{clearTimeout(r),r=void 0;},a}var Xe={Inline:"__inline",Async:"__async"};function xt(e,t){return e.some(n=>n[t])}function Dt(e,t){return e.reduce((n,r)=>{let a=r[t]||[];return n.concat(a)},[])}function re(e){try{return e.map(t=>toValue(t))}catch{return []}}function Ct(e){return e.map(t=>t instanceof Function?computed(t):isRef(t)?t:toRef(()=>t))}function It(e){let r=e.toString().replace(/\/\/.*$/gm,"").replace(/\/\*[\s\S]*?\*\//g,"").match(/^(?:async\s*)?(?:function\b.*?\(|\((.*?)\)|(\w+))\s*=>|\((.*?)\)\s*=>|function.*?\((.*?)\)|\((.*?)\)/);return r?(r[0]||r[1]||r[2]||r[3]||r[4]||"").split(",").map(s=>s.trim()).filter(s=>s.length>0).length:0}function Ze(e,...t){let{validator:n,type:r}=e,a=r===Xe.Async||n.constructor.name==="AsyncFunction";return {...{validator(i,...y){return e.validator(i,...re(y.length?y: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 y=e.validator(i,...re(t)),d;return y instanceof Promise?y.then(T=>(d=T,typeof d=="object"&&"$valid"in d?d.$valid:typeof d=="boolean"?d:false)):(d=y,typeof d=="object"&&"$valid"in d?d.$valid:typeof d=="boolean"?d: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:Ct(t),_brand:Et}}function et(e){if(typeof e.validator=="function"){let n=Ze(e,...[]),r=e.async??e.validator.constructor.name==="AsyncFunction";if(It(e.validator)>1){let a=function(...o){return Ze(e,...o)};return a.validator=n.validator,a.message=n.message,a.active=n.active,a.tooltip=n.tooltip,a.type=n.type,a.exec=n.exec,a._validator=n.validator,a._message=n.message,a._active=n.active,a._tooltip=n.tooltip,a._type=e.type,a._message_pacthed=false,a._tooltip_pacthed=false,a._async=r,a}else return n}throw new Error("[createRule] validator must be a function")}function tt(){let e=shallowRef(new Map),t=shallowRef(new Map),n=shallowRef(new Map),r=shallowRef(new Map),a=shallowRef(new Map),o=shallowRef(new Map);function s(S){let E=t.value.get(S);if(E)return E;{let D=ref({});return t.value.set(S,D),D}}function i(S){let E=n.value.get(S);if(E)return E;{let D=ref([]);return n.value.set(S,D),D}}function y(S,E,D){o.value.set(`${S}-${E}`,D);}function d(S,E){return o.value.get(`${S}-${E}`)}function T(S,E){S&&E!=null&&o.value.delete(`${S}-${E}`);}function V(S,E){r.value.set(S,E);}function C(S){return r.value.get(S)??false}function j(S,E){e.value.set(S,E);}function w(S,E){let D=e.value.get(S);return D?O(E,D)?{valid:true}:{valid:false}:void 0}function O(S,E){let D=Object.keys(E),R=Object.keys(S);return R.length!==D.length||!R.every(f=>D.includes(f))?false:R.every(f=>{let u=S[f],b=E[f];return !b||!u||typeof u=="function"||typeof b=="function"||typeof u=="number"||typeof u=="boolean"?false:u._params?u._params?.every((M,q)=>{if(typeof b=="number"||typeof b=="boolean")return true;{let U=re(b._params),X=re(u._params);return U?.[q]===X?.[q]}}):true})}function l(S){let E=a.value.get(S);if(E)return E;{let D=ref(false),R=ref(true),h=ref({}),f=ref(false);return a.value.set(S,{$pending:D,$valid:R,$metadata:h,$validating:f}),{$pending:D,$valid:R,$metadata:h,$validating:f}}}return getCurrentScope()&&onScopeDispose(()=>{e.value.clear(),t.value.clear(),n.value.clear(),r.value.clear(),a.value.clear(),o.value.clear();}),{addRuleDeclEntry:j,setDirtyEntry:V,checkRuleDeclEntry:w,getDirtyState:C,trySetRuleStatusRef:l,getFieldsEntry:s,getCollectionsEntry:i,getArrayStatus:d,addArrayStatus:y,deleteArrayStatus:T,arrayStatusStorage:o}}function Ne(e){return N(e.value)}function rt(e,t,n){let r=effectScope(),a;return e instanceof Function?a=r.run(()=>e(t,n??0)):a=e,{scope:r,unwrapped:a}}var Pe={LessThan:-1,EqualTo:0,GreaterThan:1};function Rr(e,t){let n=String(e).split("."),r=String(t).split(".");for(let a=0;a<Math.min(n.length,r.length);a++){let o=Number(n[a]),s=Number(r[a]);if(o>s)return Pe.GreaterThan;if(s>o)return Pe.LessThan;if(!isNaN(o)&&isNaN(s))return Pe.GreaterThan;if(isNaN(o)&&!isNaN(s))return Pe.LessThan}return Pe.EqualTo}var ke=Rr(version,"3.5.0")!==-1;function dr(){return Math.floor(Math.random()*Date.now()).toString()}function Se(){return typeof window>"u"?dr():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function Ot(e){return getCurrentScope()?(onScopeDispose(e),true):false}function wt(e){let t=false,n,r=effectScope(true);return (...a)=>(t||(n=r.run(()=>e(...a)),t=true),n)}function Ge(e,t){return Ne(e)||N(t.value)&&!te(t.value)&&!Object.entries(t.value).some(([n,r])=>me(r)||typeof r=="function")}function Pt(e,t,n=false){return !!e.value&&N(e.value)&&"$each"in e.value||n&&Array.isArray(t.value)&&t.value.some(N)||Array.isArray(t.value)&&t.value.some(N)}function Ue(e){return !!e.value&&N(e.value)}function me(e){return N(e)&&"_validator"in e}function Me(e){return typeof e.value=="function"?"_validator"in e.value:true}function Mt(e){return N(e)&&"$fields"in e}function jt(e){return !!e&&"$rules"in e}function nt({field:e,silent:t=false}){return Object.entries(e.$rules??{}).map(([n,r])=>t&&!r.$valid||!r.$valid&&e.$error&&!r.$validating?r.$message:null).filter(n=>!!n).reduce((n,r)=>typeof r=="string"?n?.concat([r]):n?.concat(r),[]).concat(e.$error?e.$externalErrors??[]:[]).concat(e.$error?e.$schemaErrors??[]:[])}function At({field:e}){return Object.entries(e.$rules??{}).map(([t,n])=>n.$tooltip).filter(t=>!!t).reduce((t,n)=>typeof n=="string"?t?.concat([n]):t?.concat(n),[])}function Vt(e){return N(e)&&"$each"in e}function at(e,t){let{includePath:n=false}=t??{};if(Array.isArray(e)&&e.every(r=>!N(r)))return e;if(Vt(e)){let r=n?e.$self?.map(o=>({error:o,path:""}))??[]:e.$self??[],a=e.$each?.map(o=>We(o,n))??[];return r?.concat(a.flat())}else return Object.entries(e).map(([r,a])=>We(a,n,[r])).flat()}function We(e,t=false,n){let r=t&&!n?[]:n;if(Array.isArray(e)&&e.every(a=>!N(a)))return t?e.map(a=>({error:a,path:r?.join(".")??""})):e;if(Vt(e)){let a=r?.length?e.$self?.map(s=>({error:s,path:r.join(".")}))??[]:e.$self??[],o=e.$each?.map((s,i)=>We(s,t,r?.concat(i.toString())))??[];return a?.concat(o.flat())}else return Object.entries(e).map(([a,o])=>We(o,t,r?.concat(a))).flat()}function Ft({customMessages:e,rule:t,ruleKey:n,state:r,path:a,storage:o,$debounce:s,modifiers:i}){let y=effectScope(),d={},T,V=ref(false),{$pending:C,$valid:j,$metadata:w,$validating:O}=o.trySetRuleStatusRef(`${a}.${n}`);function l(){y=effectScope(),d=y.run(()=>{let u=ref(false),b=ref(false),M=ref(true),q=ref(false),U=ref(false),X=computed(()=>({$value:r.value,$error:b.value,$dirty:u.value,$pending:q.value,$correct:U.value,$invalid:M.value,$rule:{$valid:j.value,$invalid:!j.value,$pending:C.value},$params:m.value,...w.value})),oe=computed(()=>Me(t)?typeof t.value.active=="function"?t.value.active(X.value):!!t.value.active:true);function I(x){let A="",L=e?e[n]?.[x]:void 0;if(L&&(typeof L=="function"?A=L(X.value):A=L),Me(t)){let g=`_${x}_patched`;L&&!t.value[g]||(typeof t.value[x]=="function"?A=t.value[x](X.value):A=t.value[x]??"");}return A}let z=computed(()=>{let x=I("message");return te(x)&&(x="This field is not valid"),x}),ye=computed(()=>I("tooltip")),ue=computed(()=>Me(t)&&t.value.type?t.value.type:n),c=computed(()=>Me(t)?t.value.validator:t.value),m=computed(()=>typeof t.value=="function"?[]:re(t.value._params??[])),p=computed(()=>`${a}.${ue.value}`);return {$active:oe,$message:z,$type:ue,$validator:c,$params:m,$path:p,$tooltip:ye,$fieldCorrect:U,$fieldError:b,$fieldDirty:u,$fieldPending:q,$fieldInvalid:M}}),T=watch(d?.$params,()=>{(i.$autoDirty.value||i.$rewardEarly.value&&d.$fieldError.value)&&R();});}l();function S(){j.value=true,d.$fieldDirty.value&&(C.value=true);}async function E(){let u=false;try{let b=d.$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 M=b(r.value,...d.$params.value),q=r.value;S();let U;if(M instanceof Promise?U=await M:U=M,r.value!==q)return !0;if(typeof U=="boolean")u=U;else {let{$valid:X,...oe}=U;u=X,w.value=oe;}}catch{u=false;}finally{C.value=false;}return u}let D=_e(E,s??200);async function R(){try{O.value=!0;let u=!1;if(me(t.value)&&t.value._async)u=await D();else {let b=d.$validator.value,M=b(r.value,...d.$params.value);if(M 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(M!=null)if(typeof M=="boolean")u=M;else {let{$valid:q,...U}=M;u=q,w.value=U;}}return j.value=u,u}catch{return false}finally{O.value=false;}}function h(){j.value=true,w.value={},C.value=false,O.value=false,l();}function f(){T(),y.stop(),y=effectScope();}return reactive({...d,$pending:C,$valid:j,$metadata:w,$haveAsync:V,$validating:O,$parse:R,$unwatch:f,$watch:l,$reset:h})}function be({state:e,rulesDef:t,customMessages:n,path:r,fieldName:a,storage:o,options:s,externalErrors:i,schemaErrors:y,schemaMode:d,onUnwatch:T,$isArray:V,initialState:C,shortcuts:j,onValidate:w}){let O=effectScope(),l,S=[],E,D,R,h,f,u=()=>{};function b(){let $=t.value,_=o.checkRuleDeclEntry(r,$);z.value=Object.fromEntries(Object.entries($).filter(([v])=>v.startsWith("$"))),U(),I.value=Object.fromEntries(Object.entries(t.value).filter(([v])=>!v.startsWith("$")).map(([v,ee])=>{if(ee){let se=toRef(()=>ee);return [v,Ft({modifiers:{$autoDirty:l.$autoDirty,$rewardEarly:l.$rewardEarly},customMessages:n,rule:se,ruleKey:v,state:e,path:r,storage:o,$debounce:z.value.$debounce})]}return []}).filter(v=>!!v.length)),l.processShortcuts(),M(),_?.valid!=null&&(l.$dirty.value=o.getDirtyState(r),(l.$dirty.value&&l.$autoDirty.value||l.$rewardEarly.value&&l.$error.value)&&u()),o.addRuleDeclEntry(r,$);}function M(){u=l.$debounce.value?_e(oe,l.$debounce.value??l.$haveAnyAsyncRule?100:0):oe;}function q(){I.value&&Object.entries(I.value).forEach(([$,_])=>{_.$unwatch();}),R(),f?.(),l.$dirty.value&&o.setDirtyEntry(r,l.$dirty.value),E?.(),D?.(),O.stop(),O=effectScope(),S.forEach($=>$.stop()),S=[],T?.(),h?.();}function U(){I.value&&Object.entries(I.value).forEach(([$,_])=>{_.$watch();}),l=O.run(()=>{let $=ref(false),_=ref(false),v=computed(()=>$.value),ee=computed(()=>z.value.$debounce),se=computed(()=>z.value.$lazy!=null?z.value.$lazy:unref(s.lazy)!=null?unref(s.lazy):false),le=computed(()=>z.value.$rewardEarly!=null?z.value.$rewardEarly:unref(s.rewardEarly)!=null?unref(s.rewardEarly):false),W=computed(()=>z.value.$clearExternalErrorsOnChange!=null?z.value.$clearExternalErrorsOnChange:unref(s.clearExternalErrorsOnChange)!=null?unref(s.clearExternalErrorsOnChange):true),P=computed(()=>z.value.$autoDirty!=null?z.value.$autoDirty:unref(s.autoDirty)!=null?unref(s.autoDirty):!le.value),H=computed(()=>Object.entries(I.value).some(([ie,Q])=>Q.$validating)),Oe=computed({get:()=>e.value,set(ie){E(),e.value=ie,X();}}),Ve=computed(()=>ge.value&&!we.value&&$.value),pt=computed(()=>nt({field:{$rules:I.value,$error:Ve.value,$externalErrors:i?.value,$schemaErrors:y?.value}})),mt=computed(()=>nt({field:{$rules:I.value,$error:Ve.value,$externalErrors:i?.value,$schemaErrors:y?.value},silent:true})),qe=computed(()=>$.value?C.value instanceof Date&&e.value instanceof Date?Qe(C.value).getDate()!==Qe(e.value).getDate():C.value==null?!!e.value:Array.isArray(e.value)&&Array.isArray(C.value)?e.value.length!==C.value.length:C.value!==e.value:false),yt=computed(()=>qe.value),gt=computed(()=>At({field:{$rules:I.value}})),vt=computed(()=>P.value?v.value&&!(ge.value||we.value):!(ge.value||we.value)),we=computed(()=>_.value||!le.value?Object.entries(I.value).some(([ie,Q])=>Q.$pending):false),ge=computed(()=>i?.value?.length||y?.value?.length?true:Fe.value?false:!le.value||le.value&&_.value?Object.entries(I.value).some(([ie,Q])=>!Q.$valid):false),$t=computed(()=>a),Fe=computed(()=>!!(te(I.value)&&!d)),St=computed(()=>i?.value?.length||Fe.value?false:$.value&&!te(e.value)&&!H.value?d?!y?.value?.length:Object.values(I.value).some(Q=>Q.$active)?Object.values(I.value).filter(Q=>Q.$active).every(Q=>Q.$valid):false:false),tr=computed(()=>Object.entries(I.value).some(([ie,Q])=>Q.$haveAsync));function rr(){j?.fields&&Object.entries(j.fields).forEach(([ie,Q])=>{let ht=effectScope();Tt[ie]=ht.run(()=>{let bt=ref();return watchEffect(()=>{bt.value=Q(reactive({$dirty:$,$externalErrors:i?.value??[],$value:e,$silentValue:Oe,$rules:I,$error:Ve,$pending:we,$invalid:ge,$correct:St,$errors:pt,$ready:vt,$silentErrors:mt,$anyDirty:v,$tooltips:gt,$name:$t,$inactive:Fe,$edited:qe,$anyEdited:yt}));}),bt}),S.push(ht);});}let Tt={};return watch(ge,ie=>{ie||(_.value=false);}),{$error:Ve,$pending:we,$invalid:ge,$correct:St,$debounce:ee,$lazy:se,$errors:pt,$ready:vt,$silentErrors:mt,$rewardEarly:le,$autoDirty:P,$clearExternalErrorsOnChange:W,$anyDirty:v,$edited:qe,$anyEdited:yt,$name:$t,$haveAnyAsyncRule:tr,$shortcuts:Tt,$validating:H,$tooltips:gt,$dirty:$,triggerPunishment:_,processShortcuts:rr,$silentValue:Oe,$inactive:Fe}}),X(),R=watch(l.$dirty,$=>{o.setDirtyEntry(r,$),Object.values(I.value).forEach(_=>{_.$fieldDirty=$;});}),f=watch([l.$error,l.$correct,l.$invalid,l.$pending],()=>{Object.values(I.value).forEach($=>{$.$fieldError=l.$error.value,$.$fieldInvalid=l.$invalid.value,$.$fieldPending=l.$pending.value,$.$fieldCorrect=l.$correct.value;});}),D=watch(l.$invalid,$=>{l.$rewardEarly.value&&!$&&(l.triggerPunishment.value=false);}),h=watch(l.$haveAnyAsyncRule,M);}function X(){E=watch(e,()=>{l.$autoDirty.value&&(l.$dirty.value||(l.$dirty.value=true)),t.value instanceof Function&&b(),(l.$autoDirty.value||l.$rewardEarly.value&&l.$error.value)&&u(),l.$rewardEarly.value!==true&&l.$clearExternalErrorsOnChange.value&&p();},{deep:V?true:ke?1:true});}function oe(){Object.values(I.value).forEach($=>{$.$parse();});}let I=ref({}),z=ref({});b();function ye($,_){if(p(),l.$dirty.value=false,l.triggerPunishment.value=false,o.setDirtyEntry(r,false),!_)if($?.toInitialState)e.value=k(C);else if($?.toState){let v;typeof $?.toState=="function"?v=$?.toState():v=$?.toState,C.value=k(v),e.value=k(v);}else C.value=N(e.value)?k(e.value):Array.isArray(e.value)?[...e.value]:e.value;$?.clearExternalErrors&&p(),_||Object.entries(I.value).forEach(([v,ee])=>{ee.$reset();}),!l.$lazy.value&&l.$autoDirty.value&&Object.values(I.value).forEach(v=>v.$parse());}function ue($=true,_=false){l.$dirty.value||(l.$dirty.value=true),_&&$?(l.$autoDirty.value||l.$rewardEarly.value&&l.$error.value)&&u():$&&u();}async function c(){try{if(d)return w?(ue(!1),w()):{valid:!1,data:e.value};let $=e.value;if(l.triggerPunishment.value=!0,!l.$dirty.value)l.$dirty.value=!0;else if(l.$autoDirty.value&&l.$dirty.value&&!l.$pending.value)return {valid:!l.$error.value,data:$};return d?{valid:!y?.value?.length,data:$}:te(I.value)?{valid:!0,data:$}:{valid:(await Promise.allSettled(Object.entries(I.value).map(([ee,se])=>se.$parse()))).every(ee=>ee.status==="fulfilled"?ee.value===!0:!1),data:$}}catch{return {valid:false,data:e.value}}}function m($=true){return l.$dirty.value?e.value:$?{_null:true}:null}function p(){i?.value?.length&&(i.value=[]);}!l.$lazy.value&&!l.$dirty.value&&l.$autoDirty.value&&u();let{$shortcuts:x,$validating:A,$autoDirty:L,$rewardEarly:g,$clearExternalErrorsOnChange:F,$haveAnyAsyncRule:J,$debounce:Z,$lazy:Y,triggerPunishment:fe,...ce}=l;return reactive({...ce,$externalErrors:i,$value:e,$rules:I,...x,$reset:ye,$touch:ue,$validate:c,$unwatch:q,$watch:U,$extractDirtyFields:m,$clearExternalErrors:p})}function st({$id:e,path:t,index:n,options:r,storage:a,stateValue:o,customMessages:s,rules:i,externalErrors:y,schemaErrors:d,initialState:T,shortcuts:V,fieldName:C,schemaMode:j}){let w=i.$key?i.$key:Se(),O=`${t}.${String(w)}`;typeof o.value=="object"&&o.value!=null&&(o.value.$id?O=`${t}.${o.value.$id}`:Object.defineProperties(o.value,{$id:{value:w,enumerable:false,configurable:false,writable:false}}));let l=toRef(y?.value??[],n),S=computed(()=>d?.value?.[n]),E=Ee({state:o,rulesDef:toRef(()=>i),customMessages:s,path:O,storage:a,options:r,externalErrors:l,schemaErrors:S,initialState:T,shortcuts:V,fieldName:C,schemaMode:j});if(E){let D=o.value?.$id;E.$id=D??String(w),a.addArrayStatus(e,E.$id,E);}return E}function Gt({state:e,rulesDef:t,customMessages:n,path:r,storage:a,options:o,externalErrors:s,schemaErrors:i,schemaMode:y,initialState:d,shortcuts:T,fieldName:V}){let C=effectScope(),j,w=effectScope(),O,l=[];if(!Array.isArray(e.value)&&!t.value.$each)return;let S=ref(),E=ref(e.value),D,R=ref({}),h=a.getCollectionsEntry(r);O=w.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=>me(m)||typeof m=="function"):false)})),f(),M();function f(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?(S.value=Se(),Object.defineProperties(e.value,{$id:{value:S.value,enumerable:false,configurable:false,writable:false}})):e.value?.$id&&(S.value=e.value.$id)),E.value=R.value.$value,Array.isArray(e.value)&&!O.isPrimitiveArray.value?h.value=e.value.filter(c=>typeof c=="object").map((c,m)=>{let{scope:p,unwrapped:x}=rt(t.value.$each,toRef(()=>c),m);p&&l.push(p);let A=toRef(d.value??[],m),L=toRef(s?.value??{},"$each"),g=computed(()=>i?.value?.$each),F=st({$id:S.value,path:r,customMessages:n,rules:x??{},stateValue:toRef(()=>c),index:m,options:o,storage:a,externalErrors:L,schemaErrors:g,initialState:A,shortcuts:T,fieldName:V,schemaMode:y});return F||null}).filter(c=>!!c):h.value=[],R.value=be({state:e,rulesDef:t,customMessages:n,path:r,storage:a,options:o,externalErrors:toRef(s?.value??{},"$self"),schemaErrors:computed(()=>i?.value?.$self),$isArray:true,initialState:d,shortcuts:T,fieldName:V,schemaMode:y});}function u(){if(Array.isArray(e.value)&&!O.isPrimitiveArray.value){let c=k(h.value);h.value=e.value.filter(m=>typeof m=="object").map((m,p)=>{let x=toRef(()=>m);if(m.$id&&h.value.find(A=>A.$id===m.$id)){let A=a.getArrayStatus(S.value,m.$id);return A?(A.$value=x,A):null}else {let{scope:A,unwrapped:L}=rt(t.value.$each,x,p);A&&l.push(A);let g=toRef(s?.value??{},"$each"),F=computed(()=>i?.value?.$each??[]),J=st({$id:S.value,path:r,customMessages:n,rules:L??{},stateValue:x,index:p,options:o,storage:a,externalErrors:g,schemaErrors:F,initialState:toRef(d.value??[],p),shortcuts:T,fieldName:V,schemaMode:y});return J||null}}).filter(m=>!!m),c.filter(m=>!e.value?.find(p=>m.$id===p.$id)).forEach((m,p)=>{a.deleteArrayStatus(S.value,p.toString());});}else h.value=[];}function b(){D=watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?f():u();},{deep:ke?1:true,flush:"pre"});}function M(){b(),C=effectScope(),j=C.run(()=>{let c=computed({get:()=>e.value,set(v){D(),e.value=v,b();}}),m=computed(()=>R.value.$dirty&&(!h.value.length||h.value.every(v=>v.$dirty))),p=computed(()=>R.value.$anyDirty||h.value.some(v=>v.$anyDirty)),x=computed(()=>R.value.$invalid||h.value.some(v=>v.$invalid)),A=computed(()=>(te(R.value.$rules)?true:R.value.$correct)&&(!h.value.length||h.value.every(v=>v.$correct||v.$anyDirty&&!v.$invalid))),L=computed(()=>R.value.$error||h.value.some(v=>v.$error)),g=computed(()=>!(x.value||F.value)),F=computed(()=>R.value.$pending||h.value.some(v=>v.$pending)),J=computed(()=>!!h.value.length&&h.value.every(v=>v.$edited)),Z=computed(()=>R.value.$anyEdited||h.value.some(v=>v.$anyEdited)),Y=computed(()=>({$self:R.value.$errors,$each:h.value.map(v=>v.$errors)})),fe=computed(()=>({$self:R.value.$silentErrors,$each:h.value.map(v=>v.$silentErrors)})),ce=computed(()=>V);function $(){T?.collections&&Object.entries(T?.collections).forEach(([v,ee])=>{let se=effectScope();_[v]=se.run(()=>{let le=ref();return watchEffect(()=>{le.value=ee(reactive({$dirty:m,$error:L,$silentValue:c,$pending:F,$invalid:x,$correct:A,$errors:Y,$ready:g,$silentErrors:fe,$anyDirty:p,$name:ce,$each:h,$self:R,$value:e,$edited:J,$anyEdited:Z}));}),le}),l.push(se);});}let _={};return $(),{$dirty:m,$anyDirty:p,$invalid:x,$correct:A,$error:L,$pending:F,$errors:Y,$silentErrors:fe,$ready:g,$name:ce,$shortcuts:_,$silentValue:c,$edited:J,$anyEdited:Z}}),O.isPrimitiveArray.value&&t.value.$each&&console.warn(`${r} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`);}function q(){D&&D(),R.value&&R.value.$unwatch(),h.value&&h.value.forEach(c=>{"$dirty"in c&&c.$unwatch();}),C.stop(),C=effectScope(),w.stop(),w=effectScope(true),l.forEach(c=>c.stop()),l=[];}function U(c=true,m=false){R.value.$touch(c,m),h.value.forEach(p=>{p.$touch(c,m);});}function X(c,m){if(q(),!m)if(c?.toInitialState)e.value=k(d.value);else if(c?.toState){let p;typeof c?.toState=="function"?p=c?.toState():p=c?.toState,d.value=k(p),e.value=k(p);}else d.value=k(e.value);c?.clearExternalErrors&&I(),R.value.$reset(),h.value.forEach(p=>{p.$reset(c,true);}),m||f();}async function oe(){let c=e.value;try{return {valid:(await Promise.allSettled([R.value.$validate(),...h.value.map(x=>x.$validate())])).every(x=>x.status==="fulfilled"?x.value.valid===!0:!1),data:c}}catch{return {valid:false,data:c}}}function I(){R.value.$clearExternalErrors(),h.value.forEach(c=>{c.$clearExternalErrors();});}function z(c=true){let m=h.value.map(p=>{if(Mt(p))return p.$extractDirtyFields(c)});return c&&m.every(p=>te(p))&&(m=[]),m}let{$shortcuts:ye,...ue}=j;return reactive({$self:R,...ue,...ye,$each:h,$value:e,$validate:oe,$unwatch:q,$watch:M,$touch:U,$reset:X,$extractDirtyFields:z,$clearExternalErrors:I})}function Le({rulesDef:e,state:t,path:n="",rootRules:r,externalErrors:a,schemaErrors:o,rootSchemaErrors:s,validationGroups:i,initialState:y,fieldName:d,...T}){let V=effectScope(),C,j=[],w=null,O=null,l=null,S=null;async function D(c=true){let m=Object.entries(e.value),p=Object.fromEntries(m.filter(([g,F])=>!!F).map(([g,F])=>{if(F){let J=toRef(t.value??{},g),Z=toRef(()=>F),Y=toRef(a?.value??{},g),fe=computed(()=>o?.value?.[g]),ce=toRef(y?.value??{},g);return [g,Ee({state:J,rulesDef:Z,path:n?`${n}.${g}`:g,externalErrors:Y,schemaErrors:fe,initialState:ce,fieldName:g,...T})]}return []})),x=Object.fromEntries(Object.entries(unref(a)??{}).filter(([g,F])=>!(g in e.value)&&!!F).map(([g])=>{let F=toRef(t.value??{},g),J=toRef(a?.value??{},g),Z=computed(()=>o?.value?.[g]),Y=toRef(y?.value??{},g);return [g,Ee({state:F,rulesDef:computed(()=>({})),path:n?`${n}.${g}`:g,externalErrors:J,schemaErrors:Z,initialState:Y,fieldName:g,...T})]})),A=Object.fromEntries(Object.entries(unref(o)??{}).map(([g])=>{let F=toRef(t.value??{},g),J=toRef(a?.value??{},g),Z=computed(()=>o?.value?.[g]),Y=toRef(y?.value??{},g);return [g,Ee({state:F,rulesDef:computed(()=>({})),path:n?`${n}.${g}`:g,externalErrors:J,schemaErrors:Z,initialState:Y,fieldName:g,...T})]})),L=Object.fromEntries(Object.entries(t.value??{}).filter(([g])=>!(g in e.value)&&!(g in(x??{}))&&!(g in(A??{}))).map(([g])=>{let F=toRef(t.value??{},g),J=toRef(a?.value??{},g),Z=computed(()=>o?.value?.[g]),Y=toRef(y?.value??{},g);return [g,Ee({state:F,rulesDef:computed(()=>({})),path:n?`${n}.${g}`:g,externalErrors:J,schemaErrors:Z,initialState:Y,fieldName:g,...T})]}));R.value={...p,...x,...A,...L},c&&u();}let R=T.storage.getFieldsEntry(n);D();function h(){a&&(l=watch(a,()=>{b(),D();},{deep:true}));}function f(){S=watch(t,()=>{b(),D(),U(true,true);},{flush:"sync"});}function u(){r&&(w?.(),w=watch(r,()=>{b(),D();},{deep:true,flush:"pre"}),h()),s&&(O?.(),O=watch(s,()=>{b(),D();},{deep:true,flush:"post"})),f(),C=V.run(()=>{let c=computed({get:()=>t.value,set(W){b(),t.value=W,D();}}),m=computed(()=>!!Object.entries(R.value).length&&Object.entries(R.value).every(([W,P])=>P?.$dirty)),p=computed(()=>Object.entries(R.value).some(([W,P])=>P?.$anyDirty)),x=computed(()=>!!Object.entries(R.value).length&&Object.entries(R.value).some(([W,P])=>P?.$invalid)),A=computed(()=>{let W=Object.entries(R.value).filter(([P,H])=>jt(H)?!H.$inactive:true);return W.length?W.every(([P,H])=>H?.$correct||H.$anyDirty&&!H.$invalid):false}),L=computed(()=>!!Object.entries(R.value).length&&Object.entries(R.value).some(([W,P])=>P?.$error)),g=computed(()=>unref(T.options.rewardEarly)!=null?unref(T.options.rewardEarly):false),F=computed(()=>unref(T.options.autoDirty)!=null?unref(T.options.autoDirty):!g.value),J=computed(()=>F.value?p.value&&!(x.value||Y.value):!(x.value||Y.value)),Z=ref(false),Y=computed(()=>Z.value||Object.entries(R.value).some(([W,P])=>P?.$pending)),fe=computed(()=>Object.fromEntries(Object.entries(R.value).map(([W,P])=>[W,P?.$errors]))),ce=computed(()=>Object.fromEntries(Object.entries(R.value).map(([W,P])=>[W,P?.$silentErrors]))),$=computed(()=>!!Object.entries(R.value).length&&Object.entries(R.value).every(([W,P])=>P?.$edited)),_=computed(()=>Object.entries(R.value).some(([W,P])=>P?.$anyEdited)),v=computed(()=>d);function ee(){T.shortcuts?.nested&&Object.entries(T.shortcuts.nested).forEach(([W,P])=>{let H=effectScope();le[W]=H.run(()=>{let Oe=ref();return watchEffect(()=>{Oe.value=P(reactive({$dirty:m,$value:t,$silentValue:c,$error:L,$pending:Y,$invalid:x,$correct:A,$ready:J,$anyDirty:p,$name:v,$silentErrors:ce,$errors:fe,$fields:R,$edited:$,$anyEdited:_}));}),Oe}),j.push(H);});}let se=computed({get:()=>i?Object.fromEntries(Object.entries(i?.(R.value)??{}).map(([W,P])=>P.length?[W,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$correct"].map(H=>[H,xt(P,H)])),...Object.fromEntries(["$errors","$silentErrors"].map(H=>[H,Dt(P,H)]))}]:[])):{},set(){}}),le={};return ee(),{$dirty:m,$anyDirty:p,$invalid:x,$correct:A,$error:L,$pending:Y,$errors:fe,$silentErrors:ce,$ready:J,$name:v,$shortcuts:le,$groups:se,$silentValue:c,$edited:$,$anyEdited:_,$localPending:Z}});}function b(){w?.(),l?.(),S?.(),O?.(),j=[],C={},R.value&&Object.entries(R.value).forEach(([c,m])=>{m.$unwatch();});}function M(){Object.entries(R.value).forEach(([c,m])=>{m.$clearExternalErrors();});}function q(c,m){if(l?.(),b(),!m)if(c?.toInitialState)t.value=k({...y.value??{}});else if(c?.toState){let p;typeof c?.toState=="function"?p=c?.toState():p=c?.toState,y.value=k(p),t.value=k(p);}else y.value=k(t.value);Object.values(R.value).forEach(p=>{p.$reset(c,true);}),c?.clearExternalErrors&&M(),h(),m||D();}function U(c=true,m=false){Object.values(R.value).forEach(p=>{p.$touch(c,m);});}function X(c){return c.filter(([m,p])=>N(p)?!(p&&typeof p=="object"&&"_null"in p)&&!te(p):Array.isArray(p)?p.length:true)}function oe(c=true){let m=Object.entries(R.value).map(([p,x])=>[p,x.$extractDirtyFields(c)]);return c&&(m=X(m)),Object.fromEntries(m)}async function I(){try{if(T.schemaMode)return T.onValidate?(U(!1),C.$localPending.value=!0,T.onValidate()):{valid:!1,data:t.value};{let c=t.value;return {valid:(await Promise.allSettled(Object.values(R.value).map(x=>x.$validate()))).every(x=>x.status==="fulfilled"?x.value.valid===!0:!1),data:c}}}catch{return {valid:false,data:t.value}}finally{C.$localPending.value=false;}}let{$shortcuts:z,$localPending:ye,...ue}=C;return reactive({...ue,...z,$fields:R,$value:t,$reset:q,$touch:U,$validate:I,$unwatch:b,$watch:u,$clearExternalErrors:M,$extractDirtyFields:oe})}function Ee({rulesDef:e,...t}){if(Pt(e,t.state,t.schemaMode))return Gt({rulesDef:e,...t});if(Ge(t.state,e)){if(Ne(t.state))return Le({rulesDef:e,...t});{let r=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 Le({rulesDef:e,...o,state:r.fakeState})}}else if(Ue(e))return be({rulesDef:e,...t})}function Ie({initialState:e,options:t,scopeRules:n,state:r,customRules:a,shortcuts:o,schemaErrors:s,schemaMode:i=false,onValidate:y}){let d=tt(),T=ref();return Ge(r,n)?T.value=Le({rootRules:n,rulesDef:n,state:r,customMessages:a?.(),storage:d,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:o,fieldName:"root",path:"",schemaErrors:s,rootSchemaErrors:s,schemaMode:i,onValidate:y}):Ue(n)&&(T.value=be({rulesDef:n,state:r,customMessages:a?.(),storage:d,options:t,externalErrors:t.externalErrors,initialState:e,shortcuts:o,fieldName:"root",path:"",schemaMode:i,schemaErrors:s,onValidate:y})),getCurrentScope()&&onScopeDispose(()=>{T.value?.$unwatch();}),reactive({regle:T})}function He(e,t,n){let r={autoDirty:t?.autoDirty,lazy:t?.lazy,rewardEarly:t?.rewardEarly,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange};function a(o,s,i){let y=isRef(s)?s:computed(typeof s=="function"?s:()=>s),d={...r,...i},T=isRef(o)?o:ref(o),V=ref(N(T.value)?{...k(T.value)}:k(T.value));return {r$:Ie({scopeRules:y,state:T,options:d,initialState:V,customRules:e,shortcuts:n}).regle}}return a}var ze=He();function Je(){function e(t,n){return n}return e}var ct=Je();function Lt({rules:e,modifiers:t,shortcuts:n}){let r=He(e,t,n);r.__config={rules:e,modifiers:t,shortcuts:n};let a=Je();return {useRegle:r,inferRules:a}}function Ht(e,{rules:t,modifiers:n,shortcuts:r}){let a=e.__config??{},o=()=>({...a.rules?.(),...t?.()}),s=a.modifiers&&n?Ye(a.modifiers,n):n,i=a.shortcuts&&r?Ye(a.shortcuts,r):r,y=He(o,s,i);y.__config={rules:o,modifiers:s,shortcuts:i};let d=Je();return {useRegle:y,inferRules:d}}function Ae(e,t){let n=t??false,r=computed({get:()=>n?Object.values(e).map(f=>f.$value):Object.fromEntries(Object.entries(e).map(([f,u])=>[f,u.$value])),set:f=>{n||typeof f=="object"&&Object.entries(f).forEach(([u,b])=>e[u].$value=b);}}),a=computed({get:()=>Object.fromEntries(Object.entries(e).map(([f,u])=>[f,u.$silentValue])),set:f=>{typeof f=="object"&&Object.entries(f).forEach(([u,b])=>e[u].$silentValue=b);}}),o=computed(()=>{let f=Object.entries(e);return !!f.length&&f.every(([u,b])=>b?.$dirty)}),s=computed(()=>Object.entries(e).some(([f,u])=>u?.$anyDirty)),i=computed(()=>Object.entries(e).some(([f,u])=>u?.$invalid)),y=computed(()=>{let f=Object.entries(e);return !!f.length&&f.every(([u,b])=>b?.$correct||b.$anyDirty&&!b.$invalid)}),d=computed(()=>Object.entries(e).some(([f,u])=>u?.$error)),T=computed(()=>{let f=Object.entries(e);return !!f.length&&f.every(([u,b])=>b?.$ready)}),V=computed(()=>Object.entries(e).some(([f,u])=>u?.$pending)),C=computed(()=>n?Object.entries(e).map(([f,u])=>u.$errors):Object.fromEntries(Object.entries(e).map(([f,u])=>[f,u.$errors]))),j=computed(()=>n?Object.entries(e).map(([f,u])=>u.$silentErrors):Object.fromEntries(Object.entries(e).map(([f,u])=>[f,u.$silentErrors]))),w=computed(()=>{let f=Object.entries(e);return !!f.length&&f.every(([u,b])=>b?.$edited)}),O=computed(()=>Object.entries(e).some(([f,u])=>u?.$anyEdited)),l=computed(()=>n?Object.values(e):e);function S(f){Object.values(e).forEach(u=>{u.$reset(f);});}function E(){Object.values(e).forEach(f=>{f.$touch();});}function D(f=true){return Object.values(e).map(u=>u.$extractDirtyFields(f))}function R(){Object.values(e).forEach(f=>{f.$clearExternalErrors();});}async function h(){try{let f=r.value;return {valid:(await Promise.allSettled(Object.values(e).map(M=>M.$validate()))).every(M=>M.status==="fulfilled"?M.value.valid===!0:!1),data:f}}catch{return {valid:false,data:r.value}}}return reactive({...!n&&{$silentValue:a},$errors:C,$silentErrors:j,$instances:l,$value:r,$dirty:o,$anyDirty:s,$invalid:i,$correct:y,$error:d,$pending:V,$ready:T,$edited:w,$anyEdited:O,$reset:S,$touch:E,$validate:h,$extractDirtyFields:D,$clearExternalErrors:R})}function Jt(e){function t(n){let r=computed(()=>toValue(n));s();let a=ref(i(e.value)),o=reactive({r$:a});function s(){r.value&&!e.value[r.value]&&(e.value[r.value]={});}watch(r,s),watch(e,y=>{a.value=i(y);},{deep:true});function i(y){if(r.value){let d=y[r.value]??{};return Ae(d,true)}else return Ae(y["~~global"]??{},true)}return {r$:o.r$}}return {useCollectScope:t}}function Yt(e,t){let n=t??ze;return {useScopedRegle:(a,o,s)=>{let{namespace:i,...y}=s??{},d=computed(()=>toValue(i)),T=ref(`${Object.keys(e.value).length+1}-${Se()}`),V=computed(()=>`instance-${T.value}`),{r$:C}=n(a,o,y);w(),Ot(j),watch(d,(O,l)=>{j(l),w();}),getCurrentInstance()&&onMounted(()=>{let O=getCurrentInstance();typeof window<"u"&&O?.proxy?.$el?.parentElement&&document.documentElement&&!document.documentElement.contains(O?.proxy?.$el?.parentElement)&&j();});function j(O){let l=O??d.value;l?e.value[l]&&delete e.value[l][V.value]:e.value["~~global"][V.value]&&delete e.value["~~global"][V.value];}function w(){d.value?(e.value[d.value]||(e.value[d.value]={}),e.value[d.value][V.value]=C):(e.value["~~global"]||(e.value["~~global"]={}),e.value["~~global"][V.value]=C);}return {r$:C,dispose:j,register:w}}}}function Ke(e){let n=(e?.customStore?()=>(e.customStore&&(e.customStore?.value["~~global"]?e.customStore?.value&&(e.customStore.value={"~~global":{}}):e.customStore.value["~~global"]={}),e.customStore):wt(()=>ref({"~~global":{}})))(),{useScopedRegle:r}=Yt(n,e?.customUseRegle),{useCollectScope:a}=Jt(n);return {useScopedRegle:r,useCollectScope:a}}var {useCollectScope:ft,useScopedRegle:Rt}=Ke();function Zt(e,t,n){let r=computed(()=>toValue(e)[t]);return computed(()=>{let o=n.find(s=>{if(s[t]&&"literal"in s[t]){let i=s[t].literal;if(me(i))return unref(i._params?.[0])===r.value}});if(o)return o;{let s=n.find(i=>N(i[t])&&!Object.keys(i[t]).some(y=>y==="literal"));return s||{}}})}function dt(e,t,n){return N(e[t])&&"$value"in e[t]&&e[t]?.$value===n}function er(e,t,n){let r=isRef(e)?toRef(e.value,"$fields"):toRef(e,"$fields"),a=ref();return watch(r,()=>{dt(r.value,t,n)?a.value=r.value:a.value=void 0;},{}),a}
2
- export{Xe as InternalRuleType,et as createRule,Ke as createScopedUseRegle,Zt as createVariant,Lt as defineRegleConfig,Ht as extendRegleConfig,at as flatErrors,ct as inferRules,Ae as mergeRegles,dt as narrowVariant,re as unwrapRuleParameters,ft as useCollectScope,ze as useRegle,Ie as useRootStorage,Rt as useScopedRegle,er as variantToRef};
1
+ import {effectScope,computed,toValue,ref,watch,getCurrentInstance,onMounted,reactive,getCurrentScope,onScopeDispose,isRef,shallowRef,toRef,unref,watchEffect,version}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 xt=Symbol("regle-rule");function nr(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,n={}.toString.call(e).slice(8,-1);if(n=="Set"&&(t=new Set([...e].map(r=>G(r)))),n=="Map"&&(t=new Map([...e].map(r=>[G(r[0]),G(r[1])]))),n=="Date"&&(t=new Date(e.getTime())),n=="RegExp"&&(t=RegExp(e.source,nr(e))),n=="Array"||n=="Object"){t=Array.isArray(e)?[]:{};for(let r in e)t[r]=G(e[r]);}return t}function _(e){return e&&(e instanceof Date||e.constructor.name=="File"||e.constructor.name=="FileList")?false:typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ye(e,...t){for(var n=[].slice.call(arguments),r,a=n.length;r=n[a-1],a--;)if(!r||typeof r!="object"&&typeof r!="function")throw new Error("expected object, got "+r);for(var o=n[0],s=n.slice(1),i=s.length,a=0;a<i;a++){var g=s[a];for(var R in g)o[R]=g[R];}return o}function Qe(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 _e(e,t,n){let r,a=(...o)=>new Promise(s=>{clearTimeout(r),r=setTimeout(()=>{r=void 0,Promise.resolve(e.apply(this,[...o])).then(s);},t);});return a.cancel=()=>{clearTimeout(r),r=void 0;},a}var Xe={Inline:"__inline",Async:"__async"};function Dt(e,t){return e.some(n=>n[t])}function Ct(e,t){return e.reduce((n,r)=>{let a=r[t]||[];return n.concat(a)},[])}function re(e){try{return e.map(t=>toValue(t))}catch{return []}}function It(e){return e.map(t=>t instanceof Function?computed(t):isRef(t)?t:toRef(()=>t))}function Ot(e){let r=e.toString().replace(/\/\/.*$/gm,"").replace(/\/\*[\s\S]*?\*\//g,"").match(/^(?:async\s*)?(?:function\b.*?\(|\((.*?)\)|(\w+))\s*=>|\((.*?)\)\s*=>|function.*?\((.*?)\)|\((.*?)\)/);return r?(r[0]||r[1]||r[2]||r[3]||r[4]||"").split(",").map(s=>s.trim()).filter(s=>s.length>0).length:0}function Ze(e,...t){let{validator:n,type:r}=e,a=r===Xe.Async||n.constructor.name==="AsyncFunction";return {...{validator(i,...g){return e.validator(i,...re(g.length?g: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 g=e.validator(i,...re(t)),R;return g instanceof Promise?g.then(h=>(R=h,typeof R=="object"&&"$valid"in R?R.$valid:typeof R=="boolean"?R:false)):(R=g,typeof R=="object"&&"$valid"in R?R.$valid:typeof R=="boolean"?R: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:It(t),_brand:xt}}function et(e){if(typeof e.validator=="function"){let n=Ze(e,...[]),r=e.async??e.validator.constructor.name==="AsyncFunction";if(Ot(e.validator)>1){let a=function(...o){return Ze(e,...o)};return a.validator=n.validator,a.message=n.message,a.active=n.active,a.tooltip=n.tooltip,a.type=n.type,a.exec=n.exec,a._validator=n.validator,a._message=n.message,a._active=n.active,a._tooltip=n.tooltip,a._type=e.type,a._message_pacthed=false,a._tooltip_pacthed=false,a._async=r,a}else return n}throw new Error("[createRule] validator must be a function")}function tt(){let e=shallowRef(new Map),t=shallowRef(new Map),n=shallowRef(new Map),r=shallowRef(new Map),a=shallowRef(new Map),o=shallowRef(new Map);function s($){let E=t.value.get($);if(E)return E;{let x=ref({});return t.value.set($,x),x}}function i($){let E=n.value.get($);if(E)return E;{let x=ref([]);return n.value.set($,x),x}}function g($,E,x){o.value.set(`${$}-${E}`,x);}function R($,E){return o.value.get(`${$}-${E}`)}function h($,E){$&&E!=null&&o.value.delete(`${$}-${E}`);}function A($,E){r.value.set($,E);}function D($){return r.value.get($)??false}function V($,E){e.value.set($,E);}function P($,E){let x=e.value.get($);return x?O(E,x)?{valid:true}:{valid:false}:void 0}function O($,E){let x=Object.keys(E),d=Object.keys($);return d.length!==x.length||!d.every(c=>x.includes(c))?false:d.every(c=>{let y=$[c],S=E[c];return !S||!y||typeof y=="function"||typeof S=="function"||typeof y=="number"||typeof y=="boolean"?false:y._params?y._params?.every((N,W)=>{if(typeof S=="number"||typeof S=="boolean")return true;{let K=re(S._params),H=re(y._params);return K?.[W]===H?.[W]}}):true})}function l($){let E=a.value.get($);if(E)return E;{let x=ref(false),d=ref(true),b=ref({}),c=ref(false);return a.value.set($,{$pending:x,$valid:d,$metadata:b,$validating:c}),{$pending:x,$valid:d,$metadata:b,$validating:c}}}return getCurrentScope()&&onScopeDispose(()=>{e.value.clear(),t.value.clear(),n.value.clear(),r.value.clear(),a.value.clear(),o.value.clear();}),{addRuleDeclEntry:V,setDirtyEntry:A,checkRuleDeclEntry:P,getDirtyState:D,trySetRuleStatusRef:l,getFieldsEntry:s,getCollectionsEntry:i,getArrayStatus:R,addArrayStatus:g,deleteArrayStatus:h,arrayStatusStorage:o}}function Ne(e){return _(e.value)}function rt(e,t,n){let r=effectScope(),a;return e instanceof Function?a=r.run(()=>e(t,n??0)):a=e,{scope:r,unwrapped:a}}var Pe={LessThan:-1,EqualTo:0,GreaterThan:1};function Rr(e,t){let n=String(e).split("."),r=String(t).split(".");for(let a=0;a<Math.min(n.length,r.length);a++){let o=Number(n[a]),s=Number(r[a]);if(o>s)return Pe.GreaterThan;if(s>o)return Pe.LessThan;if(!isNaN(o)&&isNaN(s))return Pe.GreaterThan;if(isNaN(o)&&!isNaN(s))return Pe.LessThan}return Pe.EqualTo}var ke=Rr(version,"3.5.0")!==-1;function dr(){return Math.floor(Math.random()*Date.now()).toString()}function he(){return typeof window>"u"?dr():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function wt(e){return getCurrentScope()?(onScopeDispose(e),true):false}function Pt(e){let t=false,n,r=effectScope(true);return (...a)=>(t||(n=r.run(()=>e(...a)),t=true),n)}function Ge(e,t){return Ne(e)||_(t.value)&&!te(t.value)&&!Object.entries(t.value).some(([n,r])=>me(r)||typeof r=="function")}function Mt(e,t,n=false){return !!e.value&&_(e.value)&&"$each"in e.value||n&&Array.isArray(t.value)&&t.value.some(_)||Array.isArray(t.value)&&t.value.some(_)}function Ue(e){return !!e.value&&_(e.value)}function me(e){return _(e)&&"_validator"in e}function Me(e){return typeof e.value=="function"?"_validator"in e.value:true}function jt(e){return _(e)&&"$fields"in e}function nt(e){return !!e&&"$rules"in e}function at({field:e,silent:t=false}){return Object.entries(e.$rules??{}).map(([n,r])=>t&&!r.$valid||!r.$valid&&e.$error&&!r.$validating?r.$message:null).filter(n=>!!n).reduce((n,r)=>typeof r=="string"?n?.concat([r]):n?.concat(r),[]).concat(e.$error?e.$externalErrors??[]:[]).concat(e.$error?e.$schemaErrors??[]:[])}function Vt({field:e}){return Object.entries(e.$rules??{}).map(([t,n])=>n.$tooltip).filter(t=>!!t).reduce((t,n)=>typeof n=="string"?t?.concat([n]):t?.concat(n),[])}function At(e){return _(e)&&"$each"in e}function lt(e,t){let{includePath:n=false}=t??{};if(Array.isArray(e)&&e.every(r=>!_(r)))return e;if(At(e)){let r=n?e.$self?.map(o=>({error:o,path:""}))??[]:e.$self??[],a=e.$each?.map(o=>We(o,n))??[];return r?.concat(a.flat())}else return Object.entries(e).map(([r,a])=>We(a,n,[r])).flat()}function We(e,t=false,n){let r=t&&!n?[]:n;if(Array.isArray(e)&&e.every(a=>!_(a)))return t?e.map(a=>({error:a,path:r?.join(".")??""})):e;if(At(e)){let a=r?.length?e.$self?.map(s=>({error:s,path:r.join(".")}))??[]:e.$self??[],o=e.$each?.map((s,i)=>We(s,t,r?.concat(i.toString())))??[];return a?.concat(o.flat())}else return Object.entries(e).map(([a,o])=>We(o,t,r?.concat(a))).flat()}function Ft({customMessages:e,rule:t,ruleKey:n,state:r,path:a,storage:o,$debounce:s,modifiers:i}){let g=effectScope(),R={},h,A=ref(false),D=ref(false),{$pending:V,$valid:P,$metadata:O,$validating:l}=o.trySetRuleStatusRef(`${a}.${n}`);function $(){g=effectScope(),R=g.run(()=>{let S=ref(false),N=ref(false),W=ref(true),K=ref(false),H=ref(false),le=computed(()=>({$value:r.value,$error:N.value,$dirty:S.value,$pending:K.value,$correct:H.value,$invalid:W.value,$rule:{$valid:P.value,$invalid:!P.value,$pending:V.value},$params:f.value,...O.value})),C=computed(()=>Me(t)?typeof t.value.active=="function"?t.value.active(le.value):!!t.value.active:true);function z(w){let J="",m=e?e[n]?.[w]:void 0;if(m&&(typeof m=="function"?J=m(le.value):J=m),Me(t)){let j=`_${w}_patched`;m&&!t.value[j]||(typeof t.value[w]=="function"?J=t.value[w](le.value):J=t.value[w]??"");}return J}let ge=computed(()=>{let w=z("message");return te(w)&&(w="This field is not valid"),w}),ce=computed(()=>z("tooltip")),u=computed(()=>Me(t)&&t.value.type?t.value.type:n),p=computed(()=>Me(t)?t.value.validator:t.value),f=computed(()=>typeof t.value=="function"?[]:re(t.value._params??[])),I=computed(()=>`${a}.${u.value}`);return {$active:C,$message:ge,$type:u,$validator:p,$params:f,$path:I,$tooltip:ce,$fieldCorrect:H,$fieldError:N,$fieldDirty:S,$fieldPending:K,$fieldInvalid:W}}),h=watch(R?.$params,()=>{(i.$autoDirty.value||i.$rewardEarly.value&&R.$fieldError.value)&&b();});}$();function E(){P.value=true,R.$fieldDirty.value&&(V.value=true);}async function x(){let S=false;try{let N=R.$validator.value;if(typeof N!="function")return console.error(`${a}: Incorrect rule format, it needs to be either a function or created with "createRule".`),!1;let W=N(r.value,...R.$params.value),K=r.value;E();let H;if(W instanceof Promise?H=await W:H=W,r.value!==K)return !0;if(typeof H=="boolean")S=H;else {let{$valid:le,...C}=H;S=le,O.value=C;}}catch{S=false;}finally{V.value=false;}return S}let d=_e(x,s??200);async function b(){try{l.value=!0;let S=!1;if(D.value=!0,me(t.value)&&t.value._async)S=await d();else {let N=R.$validator.value,W=N(r.value,...R.$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")S=W;else {let{$valid:K,...H}=W;S=K,O.value=H;}}return P.value=S,S}catch{return false}finally{l.value=false,D.value=false;}}function c(){P.value=true,O.value={},V.value=false,l.value=false,$();}function y(){h(),g.stop(),g=effectScope();}return reactive({...R,$pending:V,$valid:P,$metadata:O,$haveAsync:A,$maybePending:D,$validating:l,$parse:b,$unwatch:y,$watch:$,$reset:c})}function Ee({state:e,rulesDef:t,customMessages:n,path:r,fieldName:a,storage:o,options:s,externalErrors:i,schemaErrors:g,schemaMode:R,onUnwatch:h,$isArray:A,initialState:D,shortcuts:V,onValidate:P}){let O=effectScope(),l,$=[],E,x,d,b,c,y=()=>{};function S(){let T=t.value,F=o.checkRuleDeclEntry(r,T);z.value=Object.fromEntries(Object.entries(T).filter(([v])=>v.startsWith("$"))),K(),C.value=Object.fromEntries(Object.entries(t.value).filter(([v])=>!v.startsWith("$")).map(([v,ee])=>{if(ee){let se=toRef(()=>ee);return [v,Ft({modifiers:{$autoDirty:l.$autoDirty,$rewardEarly:l.$rewardEarly},customMessages:n,rule:se,ruleKey:v,state:e,path:r,storage:o,$debounce:z.value.$debounce})]}return []}).filter(v=>!!v.length)),l.processShortcuts(),N(),F?.valid!=null&&(l.$dirty.value=o.getDirtyState(r),(l.$dirty.value&&l.$autoDirty.value||l.$rewardEarly.value&&l.$error.value)&&y()),o.addRuleDeclEntry(r,T);}function N(){y=l.$debounce.value?_e(le,l.$debounce.value??l.$haveAnyAsyncRule?100:0):le;}function W(){C.value&&Object.entries(C.value).forEach(([T,F])=>{F.$unwatch();}),d(),c?.(),l.$dirty.value&&o.setDirtyEntry(r,l.$dirty.value),E?.(),x?.(),O.stop(),O=effectScope(),$.forEach(T=>T.stop()),$=[],h?.(),b?.();}function K(){C.value&&Object.entries(C.value).forEach(([T,F])=>{F.$watch();}),l=O.run(()=>{let T=ref(false),F=ref(false),v=computed(()=>T.value),ee=computed(()=>z.value.$debounce),se=computed(()=>z.value.$lazy!=null?z.value.$lazy:unref(s.lazy)!=null?unref(s.lazy):false),oe=computed(()=>z.value.$rewardEarly!=null?z.value.$rewardEarly:unref(s.rewardEarly)!=null?unref(s.rewardEarly):false),B=computed(()=>z.value.$clearExternalErrorsOnChange!=null?z.value.$clearExternalErrorsOnChange:unref(s.clearExternalErrorsOnChange)!=null?unref(s.clearExternalErrorsOnChange):true),M=computed(()=>z.value.$autoDirty!=null?z.value.$autoDirty:unref(s.autoDirty)!=null?unref(s.autoDirty):!oe.value),k=computed(()=>Object.entries(C.value).some(([ie,X])=>X.$validating)),we=computed({get:()=>e.value,set(ie){E(),e.value=ie,H();}}),Ae=computed(()=>$e.value&&!ve.value&&T.value),mt=computed(()=>at({field:{$rules:C.value,$error:Ae.value,$externalErrors:i?.value,$schemaErrors:g?.value}})),yt=computed(()=>at({field:{$rules:C.value,$error:Ae.value,$externalErrors:i?.value,$schemaErrors:g?.value},silent:true})),qe=computed(()=>T.value?D.value instanceof Date&&e.value instanceof Date?Qe(D.value).getDate()!==Qe(e.value).getDate():D.value==null?!!e.value:Array.isArray(e.value)&&Array.isArray(D.value)?e.value.length!==D.value.length:D.value!==e.value:false),gt=computed(()=>qe.value),vt=computed(()=>Vt({field:{$rules:C.value}})),$t=computed(()=>M.value?v.value&&!($e.value||ve.value):!($e.value||ve.value)),ve=computed(()=>F.value||!oe.value?Object.entries(C.value).some(([ie,X])=>X.$pending):false),$e=computed(()=>i?.value?.length||g?.value?.length?true:Fe.value?false:!oe.value||oe.value&&F.value?Object.entries(C.value).some(([ie,X])=>!(X.$valid&&!X.$maybePending)):false),St=computed(()=>a),Fe=computed(()=>!!(te(C.value)&&!R)),Tt=computed(()=>i?.value?.length||Fe.value?false:T.value&&!te(e.value)&&!k.value&&!ve.value?R?!g?.value?.length:Object.values(C.value).some(X=>X.$active)?Object.values(C.value).filter(X=>X.$active).every(X=>X.$valid):false:false),tr=computed(()=>Object.entries(C.value).some(([ie,X])=>X.$haveAsync));function rr(){V?.fields&&Object.entries(V.fields).forEach(([ie,X])=>{let bt=effectScope();ht[ie]=bt.run(()=>{let Et=ref();return watchEffect(()=>{Et.value=X(reactive({$dirty:T,$externalErrors:i?.value??[],$value:e,$silentValue:we,$rules:C,$error:Ae,$pending:ve,$invalid:$e,$correct:Tt,$errors:mt,$ready:$t,$silentErrors:yt,$anyDirty:v,$tooltips:vt,$name:St,$inactive:Fe,$edited:qe,$anyEdited:gt}));}),Et}),$.push(bt);});}let ht={};return watch($e,ie=>{ie||(F.value=false);}),{$error:Ae,$pending:ve,$invalid:$e,$correct:Tt,$debounce:ee,$lazy:se,$errors:mt,$ready:$t,$silentErrors:yt,$rewardEarly:oe,$autoDirty:M,$clearExternalErrorsOnChange:B,$anyDirty:v,$edited:qe,$anyEdited:gt,$name:St,$haveAnyAsyncRule:tr,$shortcuts:ht,$validating:k,$tooltips:vt,$dirty:T,triggerPunishment:F,processShortcuts:rr,$silentValue:we,$inactive:Fe}}),H(),d=watch(l.$dirty,T=>{o.setDirtyEntry(r,T),Object.values(C.value).forEach(F=>{F.$fieldDirty=T;});}),c=watch([l.$error,l.$correct,l.$invalid,l.$pending],()=>{Object.values(C.value).forEach(T=>{T.$fieldError=l.$error.value,T.$fieldInvalid=l.$invalid.value,T.$fieldPending=l.$pending.value,T.$fieldCorrect=l.$correct.value;});}),x=watch(l.$invalid,T=>{l.$rewardEarly.value&&!T&&(l.triggerPunishment.value=false);}),b=watch(l.$haveAnyAsyncRule,N);}function H(){E=watch(e,()=>{l.$autoDirty.value&&(l.$dirty.value||(l.$dirty.value=true)),t.value instanceof Function&&S(),(l.$autoDirty.value||l.$rewardEarly.value&&l.$error.value)&&y(),l.$rewardEarly.value!==true&&l.$clearExternalErrorsOnChange.value&&f();},{deep:A?true:ke?1:true});}function le(){Object.values(C.value).forEach(T=>{T.$parse();});}let C=ref({}),z=ref({});S();function ge(T,F){if(f(),l.$dirty.value=false,l.triggerPunishment.value=false,o.setDirtyEntry(r,false),!F)if(T?.toInitialState)e.value=G(D);else if(T?.toState){let v;typeof T?.toState=="function"?v=T?.toState():v=T?.toState,D.value=G(v),e.value=G(v);}else D.value=_(e.value)?G(e.value):Array.isArray(e.value)?[...e.value]:e.value;T?.clearExternalErrors&&f(),F||Object.entries(C.value).forEach(([v,ee])=>{ee.$reset();}),!l.$lazy.value&&l.$autoDirty.value&&Object.values(C.value).forEach(v=>v.$parse());}function ce(T=true,F=false){l.$dirty.value||(l.$dirty.value=true),F&&T?(l.$autoDirty.value||l.$rewardEarly.value&&l.$error.value)&&y():T&&y();}async function u(){try{if(R)return P?(ce(!1),P()):{valid:!1,data:e.value};let T=e.value;if(l.triggerPunishment.value=!0,!l.$dirty.value)l.$dirty.value=!0;else if(l.$autoDirty.value&&l.$dirty.value&&!l.$pending.value)return {valid:!l.$error.value,data:T};return R?{valid:!g?.value?.length,data:T}:te(C.value)?{valid:!0,data:T}:{valid:(await Promise.allSettled(Object.entries(C.value).map(([ee,se])=>se.$parse()))).every(ee=>ee.status==="fulfilled"?ee.value===!0:!1),data:T}}catch{return {valid:false,data:e.value}}}function p(T=true){return l.$dirty.value?e.value:T?{_null:true}:null}function f(){i?.value?.length&&(i.value=[]);}!l.$lazy.value&&!l.$dirty.value&&l.$autoDirty.value&&y();let{$shortcuts:I,$validating:w,$autoDirty:J,$rewardEarly:m,$clearExternalErrorsOnChange:j,$haveAnyAsyncRule:q,$debounce:Z,$lazy:Q,triggerPunishment:fe,...ue}=l;return reactive({...ue,$externalErrors:i,$value:e,$rules:C,...I,$reset:ge,$touch:ce,$validate:u,$unwatch:W,$watch:K,$extractDirtyFields:p,$clearExternalErrors:f})}function it({$id:e,path:t,index:n,options:r,storage:a,stateValue:o,customMessages:s,rules:i,externalErrors:g,schemaErrors:R,initialState:h,shortcuts:A,fieldName:D,schemaMode:V}){let P=i.$key?i.$key:he(),O=`${t}.${String(P)}`;typeof o.value=="object"&&o.value!=null&&(o.value.$id?O=`${t}.${o.value.$id}`:Object.defineProperties(o.value,{$id:{value:P,enumerable:false,configurable:false,writable:false}}));let l=toRef(g?.value??[],n),$=computed(()=>R?.value?.[n]),E=xe({state:o,rulesDef:toRef(()=>i),customMessages:s,path:O,storage:a,options:r,externalErrors:l,schemaErrors:$,initialState:h,shortcuts:A,fieldName:D,schemaMode:V});if(E){let x=o.value?.$id;E.$id=x??String(P),a.addArrayStatus(e,E.$id,E);}return E}function Gt({state:e,rulesDef:t,customMessages:n,path:r,storage:a,options:o,externalErrors:s,schemaErrors:i,schemaMode:g,initialState:R,shortcuts:h,fieldName:A}){let D=effectScope(),V,P=effectScope(),O,l=[];if(!Array.isArray(e.value)&&!t.value.$each)return;let $=ref(),E=ref(e.value),x,d=ref({}),b=a.getCollectionsEntry(r);O=P.run(()=>({isPrimitiveArray:computed(()=>Array.isArray(e.value)&&e.value.length?e.value.every(p=>typeof p!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(p=>me(p)||typeof p=="function"):false)})),c(),N();function c(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?($.value=he(),Object.defineProperties(e.value,{$id:{value:$.value,enumerable:false,configurable:false,writable:false}})):e.value?.$id&&($.value=e.value.$id)),E.value=d.value.$value,Array.isArray(e.value)&&!O.isPrimitiveArray.value?b.value=e.value.filter(u=>typeof u=="object").map((u,p)=>{let{scope:f,unwrapped:I}=rt(t.value.$each,toRef(()=>u),p);f&&l.push(f);let w=toRef(R.value??[],p),J=toRef(s?.value??{},"$each"),m=computed(()=>i?.value?.$each),j=it({$id:$.value,path:r,customMessages:n,rules:I??{},stateValue:toRef(()=>u),index:p,options:o,storage:a,externalErrors:J,schemaErrors:m,initialState:w,shortcuts:h,fieldName:A,schemaMode:g});return j||null}).filter(u=>!!u):b.value=[],d.value=Ee({state:e,rulesDef:t,customMessages:n,path:r,storage:a,options:o,externalErrors:toRef(s?.value??{},"$self"),schemaErrors:computed(()=>i?.value?.$self),$isArray:true,initialState:R,shortcuts:h,fieldName:A,schemaMode:g});}function y(){if(Array.isArray(e.value)&&!O.isPrimitiveArray.value){let u=G(b.value);b.value=e.value.filter(p=>typeof p=="object").map((p,f)=>{let I=toRef(()=>p);if(p.$id&&b.value.find(w=>w.$id===p.$id)){let w=a.getArrayStatus($.value,p.$id);return w?(w.$value=I,w):null}else {let{scope:w,unwrapped:J}=rt(t.value.$each,I,f);w&&l.push(w);let m=toRef(s?.value??{},"$each"),j=computed(()=>i?.value?.$each??[]),q=it({$id:$.value,path:r,customMessages:n,rules:J??{},stateValue:I,index:f,options:o,storage:a,externalErrors:m,schemaErrors:j,initialState:toRef(R.value??[],f),shortcuts:h,fieldName:A,schemaMode:g});return q||null}}).filter(p=>!!p),u.filter(p=>!e.value?.find(f=>p.$id===f.$id)).forEach((p,f)=>{a.deleteArrayStatus($.value,f.toString());});}else b.value=[];}function S(){x=watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?c():y();},{deep:ke?1:true,flush:"pre"});}function N(){S(),D=effectScope(),V=D.run(()=>{let u=computed({get:()=>e.value,set(v){x(),e.value=v,S();}}),p=computed(()=>d.value.$dirty&&(!b.value.length||b.value.every(v=>v.$dirty))),f=computed(()=>d.value.$anyDirty||b.value.some(v=>v.$anyDirty)),I=computed(()=>d.value.$invalid||b.value.some(v=>v.$invalid)),w=computed(()=>(te(d.value.$rules)?true:d.value.$correct)&&(!b.value.length||b.value.every(v=>v.$correct||v.$anyDirty&&!v.$invalid))),J=computed(()=>d.value.$error||b.value.some(v=>v.$error)),m=computed(()=>!(I.value||j.value)),j=computed(()=>d.value.$pending||b.value.some(v=>v.$pending)),q=computed(()=>!!b.value.length&&b.value.every(v=>v.$edited)),Z=computed(()=>d.value.$anyEdited||b.value.some(v=>v.$anyEdited)),Q=computed(()=>({$self:d.value.$errors,$each:b.value.map(v=>v.$errors)})),fe=computed(()=>({$self:d.value.$silentErrors,$each:b.value.map(v=>v.$silentErrors)})),ue=computed(()=>A);function T(){h?.collections&&Object.entries(h?.collections).forEach(([v,ee])=>{let se=effectScope();F[v]=se.run(()=>{let oe=ref();return watchEffect(()=>{oe.value=ee(reactive({$dirty:p,$error:J,$silentValue:u,$pending:j,$invalid:I,$correct:w,$errors:Q,$ready:m,$silentErrors:fe,$anyDirty:f,$name:ue,$each:b,$self:d,$value:e,$edited:q,$anyEdited:Z}));}),oe}),l.push(se);});}let F={};return T(),{$dirty:p,$anyDirty:f,$invalid:I,$correct:w,$error:J,$pending:j,$errors:Q,$silentErrors:fe,$ready:m,$name:ue,$shortcuts:F,$silentValue:u,$edited:q,$anyEdited:Z}}),O.isPrimitiveArray.value&&t.value.$each&&console.warn(`${r} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`);}function W(){x&&x(),d.value&&d.value.$unwatch(),b.value&&b.value.forEach(u=>{"$dirty"in u&&u.$unwatch();}),D.stop(),D=effectScope(),P.stop(),P=effectScope(true),l.forEach(u=>u.stop()),l=[];}function K(u=true,p=false){d.value.$touch(u,p),b.value.forEach(f=>{f.$touch(u,p);});}function H(u,p){if(W(),!p)if(u?.toInitialState)e.value=G(R.value);else if(u?.toState){let f;typeof u?.toState=="function"?f=u?.toState():f=u?.toState,R.value=G(f),e.value=G(f);}else R.value=G(e.value);u?.clearExternalErrors&&C(),d.value.$reset(),b.value.forEach(f=>{f.$reset(u,true);}),p||c();}async function le(){let u=e.value;try{return {valid:(await Promise.allSettled([d.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 C(){d.value.$clearExternalErrors(),b.value.forEach(u=>{u.$clearExternalErrors();});}function z(u=true){let p=b.value.map(f=>{if(jt(f))return f.$extractDirtyFields(u)});return u&&p.every(f=>te(f))&&(p=[]),p}let{$shortcuts:ge,...ce}=V;return reactive({$self:d,...ce,...ge,$each:b,$value:e,$validate:le,$unwatch:W,$watch:N,$touch:K,$reset:H,$extractDirtyFields:z,$clearExternalErrors:C})}function Le({rulesDef:e,state:t,path:n="",rootRules:r,externalErrors:a,schemaErrors:o,rootSchemaErrors:s,validationGroups:i,initialState:g,fieldName:R,...h}){let A=effectScope(),D,V=[],P=null,O=null,l=null,$=null;async function x(u=true){let p=Object.entries(e.value),f=Object.fromEntries(p.filter(([m,j])=>!!j).map(([m,j])=>{if(j){let q=toRef(t.value??{},m),Z=toRef(()=>j),Q=toRef(a?.value??{},m),fe=computed(()=>o?.value?.[m]),ue=toRef(g?.value??{},m);return [m,xe({state:q,rulesDef:Z,path:n?`${n}.${m}`:m,externalErrors:Q,schemaErrors:fe,initialState:ue,fieldName:m,...h})]}return []})),I=Object.fromEntries(Object.entries(unref(a)??{}).filter(([m,j])=>!(m in e.value)&&!!j).map(([m])=>{let j=toRef(t.value??{},m),q=toRef(a?.value??{},m),Z=computed(()=>o?.value?.[m]),Q=toRef(g?.value??{},m);return [m,xe({state:j,rulesDef:computed(()=>({})),path:n?`${n}.${m}`:m,externalErrors:q,schemaErrors:Z,initialState:Q,fieldName:m,...h})]})),w=Object.fromEntries(Object.entries(unref(o)??{}).map(([m])=>{let j=toRef(t.value??{},m),q=toRef(a?.value??{},m),Z=computed(()=>o?.value?.[m]),Q=toRef(g?.value??{},m);return [m,xe({state:j,rulesDef:computed(()=>({})),path:n?`${n}.${m}`:m,externalErrors:q,schemaErrors:Z,initialState:Q,fieldName:m,...h})]})),J=Object.fromEntries(Object.entries(t.value??{}).filter(([m])=>!(m in e.value)&&!(m in(I??{}))&&!(m in(w??{}))).map(([m])=>{let j=toRef(t.value??{},m),q=toRef(a?.value??{},m),Z=computed(()=>o?.value?.[m]),Q=toRef(g?.value??{},m);return [m,xe({state:j,rulesDef:computed(()=>({})),path:n?`${n}.${m}`:m,externalErrors:q,schemaErrors:Z,initialState:Q,fieldName:m,...h})]}));d.value={...f,...I,...w,...J},u&&y();}let d=h.storage.getFieldsEntry(n);x();function b(){a&&(l=watch(a,()=>{S(),x();},{deep:true}));}function c(){$=watch(t,()=>{S(),x(),K(true,true);},{flush:"sync"});}function y(){r&&(P?.(),P=watch(r,()=>{S(),x();},{deep:true,flush:"pre"}),b()),s&&(O?.(),O=watch(s,()=>{S(),x();},{deep:true,flush:"post"})),c(),D=A.run(()=>{let u=computed({get:()=>t.value,set(B){S(),t.value=B,x();}}),p=computed(()=>!!Object.entries(d.value).length&&Object.entries(d.value).every(([B,M])=>M?.$dirty)),f=computed(()=>Object.entries(d.value).some(([B,M])=>M?.$anyDirty)),I=computed(()=>!!Object.entries(d.value).length&&Object.entries(d.value).some(([B,M])=>M?.$invalid)),w=computed(()=>{let B=Object.entries(d.value).filter(([M,k])=>nt(k)?!k.$inactive:true);return B.length?B.every(([M,k])=>h.schemaMode?k.$correct:nt(k)?"required"in k.$rules&&k.$rules.required.$active?k?.$correct:!k.$invalid&&!k.$pending:k?.$correct):false}),J=computed(()=>!!Object.entries(d.value).length&&Object.entries(d.value).some(([B,M])=>M?.$error)),m=computed(()=>unref(h.options.rewardEarly)!=null?unref(h.options.rewardEarly):false),j=computed(()=>unref(h.options.autoDirty)!=null?unref(h.options.autoDirty):!m.value),q=computed(()=>j.value?f.value&&!(I.value||Q.value):!(I.value||Q.value)),Z=ref(false),Q=computed(()=>Z.value||Object.entries(d.value).some(([B,M])=>M?.$pending)),fe=computed(()=>Object.fromEntries(Object.entries(d.value).map(([B,M])=>[B,M?.$errors]))),ue=computed(()=>Object.fromEntries(Object.entries(d.value).map(([B,M])=>[B,M?.$silentErrors]))),T=computed(()=>!!Object.entries(d.value).length&&Object.entries(d.value).every(([B,M])=>M?.$edited)),F=computed(()=>Object.entries(d.value).some(([B,M])=>M?.$anyEdited)),v=computed(()=>R);function ee(){h.shortcuts?.nested&&Object.entries(h.shortcuts.nested).forEach(([B,M])=>{let k=effectScope();oe[B]=k.run(()=>{let we=ref();return watchEffect(()=>{we.value=M(reactive({$dirty:p,$value:t,$silentValue:u,$error:J,$pending:Q,$invalid:I,$correct:w,$ready:q,$anyDirty:f,$name:v,$silentErrors:ue,$errors:fe,$fields:d,$edited:T,$anyEdited:F}));}),we}),V.push(k);});}let se=computed({get:()=>i?Object.fromEntries(Object.entries(i?.(d.value)??{}).map(([B,M])=>M.length?[B,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$correct"].map(k=>[k,Dt(M,k)])),...Object.fromEntries(["$errors","$silentErrors"].map(k=>[k,Ct(M,k)]))}]:[])):{},set(){}}),oe={};return ee(),{$dirty:p,$anyDirty:f,$invalid:I,$correct:w,$error:J,$pending:Q,$errors:fe,$silentErrors:ue,$ready:q,$name:v,$shortcuts:oe,$groups:se,$silentValue:u,$edited:T,$anyEdited:F,$localPending:Z}});}function S(){P?.(),l?.(),$?.(),O?.(),V=[],D={},d.value&&Object.entries(d.value).forEach(([u,p])=>{p.$unwatch();});}function N(){Object.entries(d.value).forEach(([u,p])=>{p.$clearExternalErrors();});}function W(u,p){if(l?.(),S(),!p)if(u?.toInitialState)t.value=G({...g.value??{}});else if(u?.toState){let f;typeof u?.toState=="function"?f=u?.toState():f=u?.toState,g.value=G(f),t.value=G(f);}else g.value=G(t.value);Object.values(d.value).forEach(f=>{f.$reset(u,true);}),u?.clearExternalErrors&&N(),b(),p||x();}function K(u=true,p=false){Object.values(d.value).forEach(f=>{f.$touch(u,p);});}function H(u){return u.filter(([p,f])=>_(f)?!(f&&typeof f=="object"&&"_null"in f)&&!te(f):Array.isArray(f)?f.length:true)}function le(u=true){let p=Object.entries(d.value).map(([f,I])=>[f,I.$extractDirtyFields(u)]);return u&&(p=H(p)),Object.fromEntries(p)}async function C(){try{if(h.schemaMode)return h.onValidate?(K(!1),D.$localPending.value=!0,h.onValidate()):{valid:!1,data:t.value};{let u=t.value;return {valid:(await Promise.allSettled(Object.values(d.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{D.$localPending.value=false;}}let{$shortcuts:z,$localPending:ge,...ce}=D;return reactive({...ce,...z,$fields:d,$value:t,$reset:W,$touch:K,$validate:C,$unwatch:S,$watch:y,$clearExternalErrors:N,$extractDirtyFields:le})}function xe({rulesDef:e,...t}){if(Mt(e,t.state,t.schemaMode))return Gt({rulesDef:e,...t});if(Ge(t.state,e)){if(Ne(t.state))return Le({rulesDef:e,...t});{let r=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 Le({rulesDef:e,...o,state:r.fakeState})}}else if(Ue(e))return Ee({rulesDef:e,...t})}function Oe({initialState:e,options:t,scopeRules:n,state:r,customRules:a,shortcuts:o,schemaErrors:s,schemaMode:i=false,onValidate:g}){let R=tt(),h=ref();return Ge(r,n)?h.value=Le({rootRules:n,rulesDef:n,state:r,customMessages:a?.(),storage:R,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:o,fieldName:"root",path:"",schemaErrors:s,rootSchemaErrors:s,schemaMode:i,onValidate:g}):Ue(n)&&(h.value=Ee({rulesDef:n,state:r,customMessages:a?.(),storage:R,options:t,externalErrors:t.externalErrors,initialState:e,shortcuts:o,fieldName:"root",path:"",schemaMode:i,schemaErrors:s,onValidate:g})),getCurrentScope()&&onScopeDispose(()=>{h.value?.$unwatch();}),reactive({regle:h})}function He(e,t,n){let r={autoDirty:t?.autoDirty,lazy:t?.lazy,rewardEarly:t?.rewardEarly,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange};function a(o,s,i){let g=isRef(s)?s:computed(typeof s=="function"?s:()=>s),R={...r,...i},h=isRef(o)?o:ref(o),A=ref(_(h.value)?{...G(h.value)}:G(h.value));return {r$:Oe({scopeRules:g,state:h,options:R,initialState:A,customRules:e,shortcuts:n}).regle}}return a}var ze=He();function Je(){function e(t,n){return n}return e}var ft=Je();function Lt({rules:e,modifiers:t,shortcuts:n}){let r=He(e,t,n);r.__config={rules:e,modifiers:t,shortcuts:n};let a=Je();return {useRegle:r,inferRules:a}}function Ht(e,{rules:t,modifiers:n,shortcuts:r}){let a=e.__config??{},o=()=>({...a.rules?.(),...t?.()}),s=a.modifiers&&n?Ye(a.modifiers,n):n,i=a.shortcuts&&r?Ye(a.shortcuts,r):r,g=He(o,s,i);g.__config={rules:o,modifiers:s,shortcuts:i};let R=Je();return {useRegle:g,inferRules:R}}function Ve(e,t){let n=t??false,r=computed({get:()=>n?Object.values(e).map(c=>c.$value):Object.fromEntries(Object.entries(e).map(([c,y])=>[c,y.$value])),set:c=>{n||typeof c=="object"&&Object.entries(c).forEach(([y,S])=>e[y].$value=S);}}),a=computed({get:()=>Object.fromEntries(Object.entries(e).map(([c,y])=>[c,y.$silentValue])),set:c=>{typeof c=="object"&&Object.entries(c).forEach(([y,S])=>e[y].$silentValue=S);}}),o=computed(()=>{let c=Object.entries(e);return !!c.length&&c.every(([y,S])=>S?.$dirty)}),s=computed(()=>Object.entries(e).some(([c,y])=>y?.$anyDirty)),i=computed(()=>Object.entries(e).some(([c,y])=>y?.$invalid)),g=computed(()=>{let c=Object.entries(e);return !!c.length&&c.every(([y,S])=>S?.$correct||S.$anyDirty&&!S.$invalid)}),R=computed(()=>Object.entries(e).some(([c,y])=>y?.$error)),h=computed(()=>{let c=Object.entries(e);return !!c.length&&c.every(([y,S])=>S?.$ready)}),A=computed(()=>Object.entries(e).some(([c,y])=>y?.$pending)),D=computed(()=>n?Object.entries(e).map(([c,y])=>y.$errors):Object.fromEntries(Object.entries(e).map(([c,y])=>[c,y.$errors]))),V=computed(()=>n?Object.entries(e).map(([c,y])=>y.$silentErrors):Object.fromEntries(Object.entries(e).map(([c,y])=>[c,y.$silentErrors]))),P=computed(()=>{let c=Object.entries(e);return !!c.length&&c.every(([y,S])=>S?.$edited)}),O=computed(()=>Object.entries(e).some(([c,y])=>y?.$anyEdited)),l=computed(()=>n?Object.values(e):e);function $(c){Object.values(e).forEach(y=>{y.$reset(c);});}function E(){Object.values(e).forEach(c=>{c.$touch();});}function x(c=true){return Object.values(e).map(y=>y.$extractDirtyFields(c))}function d(){Object.values(e).forEach(c=>{c.$clearExternalErrors();});}async function b(){try{let c=r.value;return {valid:(await Promise.allSettled(Object.values(e).map(N=>N.$validate()))).every(N=>N.status==="fulfilled"?N.value.valid===!0:!1),data:c}}catch{return {valid:false,data:r.value}}}return reactive({...!n&&{$silentValue:a},$errors:D,$silentErrors:V,$instances:l,$value:r,$dirty:o,$anyDirty:s,$invalid:i,$correct:g,$error:R,$pending:A,$ready:h,$edited:P,$anyEdited:O,$reset:$,$touch:E,$validate:b,$extractDirtyFields:x,$clearExternalErrors:d})}function Jt(e){function t(n){let r=computed(()=>toValue(n));s();let a=ref(i(e.value)),o=reactive({r$:a});function s(){r.value&&!e.value[r.value]&&(e.value[r.value]={});}watch(r,s),watch(e,g=>{a.value=i(g);},{deep:true});function i(g){if(r.value){let R=g[r.value]??{};return Ve(R,true)}else return Ve(g["~~global"]??{},true)}return {r$:o.r$}}return {useCollectScope:t}}function Yt(e,t){let n=t??ze;return {useScopedRegle:(a,o,s)=>{let{namespace:i,...g}=s??{},R=computed(()=>toValue(i)),h=ref(`${Object.keys(e.value).length+1}-${he()}`),A=computed(()=>`instance-${h.value}`),{r$:D}=n(a,o,g);P(),wt(V),watch(R,(O,l)=>{V(l),P();}),getCurrentInstance()&&onMounted(()=>{let O=getCurrentInstance();typeof window<"u"&&O?.proxy?.$el?.parentElement&&document.documentElement&&!document.documentElement.contains(O?.proxy?.$el?.parentElement)&&V();});function V(O){let l=O??R.value;l?e.value[l]&&delete e.value[l][A.value]:e.value["~~global"][A.value]&&delete e.value["~~global"][A.value];}function P(){R.value?(e.value[R.value]||(e.value[R.value]={}),e.value[R.value][A.value]=D):(e.value["~~global"]||(e.value["~~global"]={}),e.value["~~global"][A.value]=D);}return {r$:D,dispose:V,register:P}}}}function Ke(e){let n=(e?.customStore?()=>(e.customStore&&(e.customStore?.value["~~global"]?e.customStore?.value&&(e.customStore.value={"~~global":{}}):e.customStore.value["~~global"]={}),e.customStore):Pt(()=>ref({"~~global":{}})))(),{useScopedRegle:r}=Yt(n,e?.customUseRegle),{useCollectScope:a}=Jt(n);return {useScopedRegle:r,useCollectScope:a}}var {useCollectScope:Rt,useScopedRegle:dt}=Ke();function Zt(e,t,n){let r=computed(()=>toValue(e)[t]);return computed(()=>{let o=n.find(s=>{if(s[t]&&"literal"in s[t]){let i=s[t].literal;if(me(i))return unref(i._params?.[0])===r.value}});if(o)return o;{let s=n.find(i=>_(i[t])&&!Object.keys(i[t]).some(g=>g==="literal"));return s||{}}})}function pt(e,t,n){return _(e[t])&&"$value"in e[t]&&e[t]?.$value===n}function er(e,t,n){let r=isRef(e)?toRef(e.value,"$fields"):toRef(e,"$fields"),a=ref();return watch(r,()=>{pt(r.value,t,n)?a.value=r.value:a.value=void 0;},{}),a}
2
+ export{Xe as InternalRuleType,et as createRule,Ke as createScopedUseRegle,Zt as createVariant,Lt as defineRegleConfig,Ht as extendRegleConfig,lt as flatErrors,ft as inferRules,Ve as mergeRegles,pt as narrowVariant,re as unwrapRuleParameters,Rt as useCollectScope,ze as useRegle,Oe as useRootStorage,dt as useScopedRegle,er as variantToRef};
@@ -568,6 +568,7 @@ function createReactiveRuleStatus({
568
568
  let scopeState = {};
569
569
  let $unwatchState;
570
570
  const $haveAsync = ref(false);
571
+ const $maybePending = ref(false);
571
572
  const { $pending, $valid, $metadata, $validating } = storage.trySetRuleStatusRef(`${path}.${ruleKey}`);
572
573
  function $watch() {
573
574
  scope = effectScope();
@@ -723,6 +724,7 @@ function createReactiveRuleStatus({
723
724
  try {
724
725
  $validating.value = true;
725
726
  let ruleResult = false;
727
+ $maybePending.value = true;
726
728
  if (isRuleDef(rule.value) && rule.value._async) {
727
729
  ruleResult = await $computeAsyncDebounce();
728
730
  } else {
@@ -750,6 +752,7 @@ function createReactiveRuleStatus({
750
752
  return false;
751
753
  } finally {
752
754
  $validating.value = false;
755
+ $maybePending.value = false;
753
756
  }
754
757
  }
755
758
  function $reset() {
@@ -770,6 +773,7 @@ function createReactiveRuleStatus({
770
773
  $valid,
771
774
  $metadata,
772
775
  $haveAsync,
776
+ $maybePending,
773
777
  $validating,
774
778
  $parse,
775
779
  $unwatch,
@@ -998,7 +1002,7 @@ function createReactiveFieldStatus({
998
1002
  return false;
999
1003
  } else if (!$rewardEarly2.value || $rewardEarly2.value && triggerPunishment2.value) {
1000
1004
  return Object.entries($rules.value).some(([_, ruleResult]) => {
1001
- return !ruleResult.$valid;
1005
+ return !(ruleResult.$valid && !ruleResult.$maybePending);
1002
1006
  });
1003
1007
  }
1004
1008
  return false;
@@ -1015,7 +1019,7 @@ function createReactiveFieldStatus({
1015
1019
  return false;
1016
1020
  } else if ($inactive.value) {
1017
1021
  return false;
1018
- } else if ($dirty.value && !isEmpty(state.value) && !$validating2.value) {
1022
+ } else if ($dirty.value && !isEmpty(state.value) && !$validating2.value && !$pending.value) {
1019
1023
  if (schemaMode) {
1020
1024
  return !schemaErrors?.value?.length;
1021
1025
  } else {
@@ -1967,7 +1971,15 @@ function createReactiveNestedStatus({
1967
1971
  });
1968
1972
  if (fields.length) {
1969
1973
  return fields.every(([_, statusOrField]) => {
1970
- return statusOrField?.$correct || statusOrField.$anyDirty && !statusOrField.$invalid;
1974
+ if (commonArgs.schemaMode) {
1975
+ return statusOrField.$correct;
1976
+ } else if (isFieldStatus(statusOrField)) {
1977
+ if ("required" in statusOrField.$rules && statusOrField.$rules.required.$active) {
1978
+ return statusOrField?.$correct;
1979
+ }
1980
+ return !statusOrField.$invalid && !statusOrField.$pending;
1981
+ }
1982
+ return statusOrField?.$correct;
1971
1983
  });
1972
1984
  }
1973
1985
  return false;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@regle/core",
3
- "version": "1.1.0-beta.3",
3
+ "version": "1.1.0-beta.4",
4
4
  "description": "Headless form validation library for Vue 3",
5
5
  "peerDependencies": {
6
6
  "pinia": ">=2.2.5",