@regle/core 0.7.4-beta.2 β 0.7.4-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -2
- package/dist/regle-core.cjs +1 -4
- package/dist/regle-core.min.cjs +1 -1
- package/dist/regle-core.min.mjs +1 -1
- package/dist/regle-core.mjs +1 -4
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -22,9 +22,7 @@ It's heavily inspired by Vuelidate.
|
|
|
22
22
|
## π§° Features
|
|
23
23
|
- β
100% type inference
|
|
24
24
|
- π Model based validation
|
|
25
|
-
- π Headless
|
|
26
25
|
- πͺ Extensible
|
|
27
26
|
- π Collection validation
|
|
28
27
|
- π¦ΈββοΈ [Zod](https://zod.dev/) support
|
|
29
28
|
- π€ [Valibot](https://valibot.dev/) support
|
|
30
|
-
- πͺΆ Light(~7kb gzip) and 0 dependencies
|
package/dist/regle-core.cjs
CHANGED
|
@@ -65,7 +65,7 @@ function cloneDeep(obj) {
|
|
|
65
65
|
|
|
66
66
|
// ../shared/utils/object.utils.ts
|
|
67
67
|
function isObject(obj) {
|
|
68
|
-
if (obj instanceof Date || obj
|
|
68
|
+
if (obj && (obj instanceof Date || obj.constructor.name == "File" || obj.constructor.name == "FileList")) {
|
|
69
69
|
return false;
|
|
70
70
|
}
|
|
71
71
|
return typeof obj === "object" && obj !== null && !Array.isArray(obj);
|
|
@@ -386,9 +386,6 @@ function useStorage() {
|
|
|
386
386
|
};
|
|
387
387
|
}
|
|
388
388
|
function isRefObject(obj) {
|
|
389
|
-
if (obj.value instanceof Date || obj.value instanceof File) {
|
|
390
|
-
return false;
|
|
391
|
-
}
|
|
392
389
|
return isObject(obj.value);
|
|
393
390
|
}
|
|
394
391
|
function unwrapGetter(getter, value, index) {
|
package/dist/regle-core.min.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var vue=require('vue');function Y(e,t=true){return e==null?true:e instanceof Date?isNaN(e.getTime()):Array.isArray(e)?t?e.length===0:false:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}var gt=Symbol("regle-rule");function Ut(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 Q(e){let t=e,r={}.toString.call(e).slice(8,-1);if(r=="Set"&&(t=new Set([...e].map(n=>Q(n)))),r=="Map"&&(t=new Map([...e].map(n=>[Q(n[0]),Q(n[1])]))),r=="Date"&&(t=new Date(e.getTime())),r=="RegExp"&&(t=RegExp(e.source,Ut(e))),r=="Array"||r=="Object"){t=Array.isArray(e)?[]:{};for(let n in e)t[n]=Q(e[n]);}return t}function ne(e){return e instanceof Date||e instanceof File?false:typeof e=="object"&&e!==null&&!Array.isArray(e)}function Be(e){if(Y(e))return false;try{let t=null;if(e instanceof Date)t=e;else if(typeof e=="string"){let r=new Date(e);if(r.toString()==="Invalid Date")return !1;t=r;}return !!t}catch{return false}}function Le(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)}var He=(r=>(r.Inline="__inline",r.Async="__async",r))(He||{});function $t(e,t){return e.some(r=>r[t])}function yt(e,t){return e.reduce((r,n)=>{let l=n[t]||[];return r.concat(l)},[])}function ee(e){try{return e.map(t=>vue.toValue(t))}catch{return []}}function vt(e){return e.map(t=>t instanceof Function?vue.computed(t):vue.isRef(t)?t:vue.toRef(()=>t))}function St(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(m=>m.trim()).filter(m=>m.length>0).length:0}function ze(e,...t){let{validator:r,type:n}=e,l=n==="__async"||r.constructor.name==="AsyncFunction";return {...{validator(f,...S){return e.validator(f,...ee(S.length?S:t))},message(f){return typeof e.message=="function"?e.message({...f,$params:ee(f?.$params?.length?f.$params:t)}):e.message},active(f){return typeof e.active=="function"?e.active({...f,$params:ee(f?.$params?.length?f.$params:t)}):e.active??true},tooltip(f){return typeof e.tooltip=="function"?e.tooltip({...f,$params:ee(f?.$params?.length?f.$params:t)}):e.tooltip??[]},exec(f){let S=e.validator(f,...ee(t)),y;return S instanceof Promise?S.then(b=>(y=b,typeof y=="object"&&"$valid"in y?y.$valid:typeof y=="boolean"?y:false)):(y=S,typeof y=="object"&&"$valid"in y?y.$valid:typeof y=="boolean"?y:false)}},_validator:e.validator,_message:e.message,_active:e.active,_tooltip:e.tooltip,_type:e.type,_message_patched:false,_tooltip_patched:false,_async:l,_params:vt(t),_brand:gt}}function qe(e){if(typeof e.validator=="function"){let r=ze(e,...[]),n=e.async??e.validator.constructor.name==="AsyncFunction";if(St(e.validator)>1){let l=function(...i){return ze(e,...i)};return l.validator=r.validator,l.message=r.message,l.active=r.active,l.tooltip=r.tooltip,l.type=r.type,l.exec=r.exec,l._validator=r.validator,l._message=r.message,l._active=r.active,l._tooltip=r.tooltip,l._type=e.type,l._message_pacthed=false,l._tooltip_pacthed=false,l._async=n,l}else return r}throw new Error("Validator must be a function")}function Ke(){let e=vue.shallowRef(new Map),t=vue.shallowRef(new Map),r=vue.shallowRef(new Map),n=vue.shallowRef(new Map),l=vue.shallowRef(new Map),i=vue.shallowRef(new Map);function m($){let h=t.value.get($);if(h)return h;{let E=vue.ref({});return t.value.set($,E),E}}function f($){let h=r.value.get($);if(h)return h;{let E=vue.ref([]);return r.value.set($,E),E}}function S($,h,E){i.value.set(`${$}-${h}`,E);}function y($,h){return i.value.get(`${$}-${h}`)}function b($,h){$&&h!=null&&i.value.delete(`${$}-${h}`);}function B($,h){n.value.set($,h);}function D($){return n.value.get($)??false}function N($,h){e.value.set($,h);}function w($,h){let E=e.value.get($);return E?a(h,E)?{valid:true}:{valid:false}:undefined}function a($,h){let E=Object.keys(h),u=Object.keys($);return u.length!==E.length||!u.every(M=>E.includes(M))?false:u.every(M=>{let o=$[M],s=h[M];return !s||!o||typeof o=="function"||typeof s=="function"||typeof o=="number"||typeof o=="boolean"?false:o._params?o._params?.every((I,V)=>{if(typeof s=="number"||typeof s=="boolean")return true;{let G=ee(s._params),J=ee(o._params);return G?.[V]===J?.[V]}}):true})}function j($){let h=l.value.get($);if(h)return h;{let E=vue.ref(false),u=vue.ref(true),v=vue.ref({}),M=vue.ref(false);return l.value.set($,{$pending:E,$valid:u,$metadata:v,$validating:M}),{$pending:E,$valid:u,$metadata:v,$validating:M}}}return vue.getCurrentScope()&&vue.onScopeDispose(()=>{e.value.clear(),t.value.clear(),r.value.clear(),n.value.clear(),l.value.clear(),i.value.clear();}),{addRuleDeclEntry:N,setDirtyEntry:B,checkRuleDeclEntry:w,getDirtyState:D,trySetRuleStatusRef:j,getFieldsEntry:m,getCollectionsEntry:f,getArrayStatus:y,addArrayStatus:S,deleteArrayStatus:b,arrayStatusStorage:i}}function Ve(e){return e.value instanceof Date||e.value instanceof File?false:ne(e.value)}function Je(e,t,r){let n=vue.effectScope(),l;return e instanceof Function?l=n.run(()=>e(t,r??0)):l=e,{scope:n,unwrapped:l}}function Fe(e,t,r){let n,l=(...i)=>new Promise(m=>{clearTimeout(n),n=setTimeout(()=>{n=undefined,Promise.resolve(e.apply(this,[...i])).then(m);},t);});return l.cancel=()=>{clearTimeout(n),n=undefined;},l}function Jt(e,t){let r=String(e).split("."),n=String(t).split(".");for(let l=0;l<Math.min(r.length,n.length);l++){let i=Number(r[l]),m=Number(n[l]);if(i>m)return 1;if(m>i)return -1;if(!isNaN(i)&&isNaN(m))return 1;if(isNaN(i)&&!isNaN(m))return -1}return 0}var _e=Jt(vue.version,"3.5.0")!==-1;function Yt(){return Math.floor(Math.random()*Date.now()).toString()}function he(){return typeof window>"u"?Yt():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function ht(e,t){return Ve(e)||ne(t.value)&&!Y(t.value)&&!Object.entries(t.value).some(([r,n])=>Oe(n)||typeof n=="function")}function bt(e,t){return !!e.value&&ne(e.value)&&"$each"in e.value||Array.isArray(t.value)}function Et(e){return !!e.value&&ne(e.value)}function Oe(e){return ne(e)&&"_validator"in e}function we(e){return typeof e.value!="function"}function Tt(e){return ne(e)&&"$fields"in e}function xt(e){return !!e&&"$rules"in e}function Ye({field:e,silent:t=false}){return Object.entries(e.$rules??{}).map(([r,n])=>t||!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 Dt({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 Ct({customMessages:e,rule:t,ruleKey:r,state:n,path:l,storage:i,$debounce:m,modifiers:f}){let S=vue.effectScope(),y={},b,B=vue.ref(false),{$pending:D,$valid:N,$metadata:w,$validating:a}=i.trySetRuleStatusRef(`${l}.${r}`);function j(){S=vue.effectScope(),y=S.run(()=>{let o=vue.ref(false),s=vue.ref(false),I=vue.ref(true),V=vue.ref(false),G=vue.ref(false),J=vue.computed(()=>({$value:n.value,$error:s.value,$dirty:o.value,$pending:V.value,$valid:G.value,$invalid:I.value,$rule:{$valid:N.value,$invalid:!N.value,$pending:D.value},$params:R.value,...w.value})),C=vue.computed(()=>we(t)?typeof t.value.active=="function"?t.value.active(J.value):!!t.value.active:true);function L(d){let T="",P=e?e[r]?.[d]:undefined;if(P&&(typeof P=="function"?T=P(J.value):T=P),we(t)){let X=`_${d}_patched`;P&&!t.value[X]||(typeof t.value[d]=="function"?T=t.value[d](J.value):T=t.value[d]??"");}return T}let ie=vue.computed(()=>{let d=L("message");return Y(d)&&(d="This field is not valid"),d}),de=vue.computed(()=>L("tooltip")),pe=vue.computed(()=>we(t)&&t.value.type?t.value.type:r),me=vue.computed(()=>we(t)?t.value.validator:t.value),R=vue.computed(()=>typeof t.value=="function"?[]:ee(t.value._params??[])),c=vue.computed(()=>`${l}.${pe.value}`);return {$active:C,$message:ie,$type:pe,$validator:me,$params:R,$path:c,$tooltip:de,$fieldValid:G,$fieldError:s,$fieldDirty:o,$fieldPending:V,$fieldInvalid:I}}),b=vue.watch(y?.$params,()=>{(f.$autoDirty.value||f.$rewardEarly.value&&y.$fieldError.value)&&u();});}j();function $(){N.value=true,y.$fieldDirty.value&&(D.value=true);}async function h(){let o=false;try{let s=y.$validator.value,I=s(n.value,...y.$params.value),V=n.value;$();let G;if(I instanceof Promise?G=await I:G=I,n.value!==V)return !0;if(typeof G=="boolean")o=G;else {let{$valid:J,...C}=G;o=J,w.value=C;}}catch{o=false;}finally{D.value=false;}return o}let E=Fe(h,m??200);async function u(){try{a.value=!0;let o=!1;if(Oe(t.value)&&t.value._async)o=await E();else {let s=y.$validator.value,I=s(n.value,...y.$params.value);if(I instanceof Promise)console.warn('You used a async validator function on a non-async rule, please use "async await" or the "withAsync" helper');else if(I!=null)if(typeof I=="boolean")o=I;else {let{$valid:V,...G}=I;o=V,w.value=G;}}return N.value=o,o}catch{return false}finally{a.value=false;}}function v(){N.value=true,w.value={},D.value=false,a.value=false,j();}function M(){b(),S.stop(),S=vue.effectScope();}return vue.reactive({...y,$pending:D,$valid:N,$metadata:w,$haveAsync:B,$validating:a,$validate:u,$unwatch:M,$watch:j,$reset:v})}function Ne({state:e,rulesDef:t,customMessages:r,path:n,fieldName:l,storage:i,options:m,externalErrors:f,schemaErrors:S,schemaMode:y,onUnwatch:b,$isArray:B,initialState:D,shortcuts:N}){let w=vue.effectScope(),a,j=[],$,h,E,u,v,M=()=>{};function o(){let g=t.value,_=i.checkRuleDeclEntry(n,g);L.value=Object.fromEntries(Object.entries(g).filter(([W])=>W.startsWith("$"))),V(),C.value=Object.fromEntries(Object.entries(t.value).filter(([W])=>!W.startsWith("$")).map(([W,x])=>{if(x){let se=vue.toRef(()=>x);return [W,Ct({modifiers:{$autoDirty:a.$autoDirty,$rewardEarly:a.$rewardEarly},customMessages:r,rule:se,ruleKey:W,state:e,path:n,storage:i,$debounce:L.value.$debounce})]}return []}).filter(W=>!!W.length)),a.processShortcuts(),s(),_?.valid!=null&&(a.$dirty.value=i.getDirtyState(n),a.$dirty.value&&M()),i.addRuleDeclEntry(n,g);}function s(){M=a.$debounce.value?Fe(J,a.$debounce.value??a.$haveAnyAsyncRule?100:0):J;}function I(){C.value&&Object.entries(C.value).forEach(([g,_])=>{_.$unwatch();}),E(),v?.(),a.$dirty.value&&i.setDirtyEntry(n,a.$dirty.value),$?.(),h?.(),w.stop(),w=vue.effectScope(),j.forEach(g=>g.stop()),j=[],b?.(),u?.();}function V(){C.value&&Object.entries(C.value).forEach(([g,_])=>{_.$watch();}),a=w.run(()=>{let g=vue.ref(false),_=vue.ref(false),W=vue.computed(()=>g.value),x=vue.computed(()=>L.value.$debounce),se=vue.computed(()=>L.value.$lazy!=null?L.value.$lazy:vue.unref(m.lazy)!=null?vue.unref(m.lazy):false),le=vue.computed(()=>L.value.$rewardEarly!=null?L.value.$rewardEarly:vue.unref(m.rewardEarly)!=null?vue.unref(m.rewardEarly):false),ge=vue.computed(()=>L.value.$clearExternalErrorsOnChange!=null?L.value.$clearExternalErrorsOnChange:vue.unref(m.clearExternalErrorsOnChange)!=null?vue.unref(m.clearExternalErrorsOnChange):true),U=vue.computed(()=>L.value.$autoDirty!=null?L.value.$autoDirty:vue.unref(m.autoDirty)!=null?vue.unref(m.autoDirty):!le.value),O=vue.computed(()=>Object.entries(C.value).some(([ae,ue])=>ue.$validating)),K=vue.computed({get:()=>e.value,set(ae){$(),e.value=ae,G();}}),$e=vue.computed(()=>ye.value&&!Pe.value&&g.value),ot=vue.computed(()=>Ye({field:{$error:$e.value,$externalErrors:f?.value,$schemaErrors:S?.value,$rules:C.value}})),st=vue.computed(()=>Ye({field:{$error:true,$externalErrors:f?.value,$schemaErrors:S?.value,$rules:C.value},silent:true})),We=vue.computed(()=>g.value?Be(D.value)&&Be(e.value)?Le(D.value).getDate()!==Le(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),ut=vue.computed(()=>We.value),it=vue.computed(()=>Dt({field:{$rules:C.value}})),ct=vue.computed(()=>U.value?W.value&&!(ye.value||Pe.value):!(ye.value||Pe.value)),Pe=vue.computed(()=>_.value||!le.value?Object.entries(C.value).some(([ae,ue])=>ue.$pending):false),ye=vue.computed(()=>f?.value?.length||S?.value?.length?true:Me.value?false:!le.value||le.value&&_.value?Object.entries(C.value).some(([ae,ue])=>!ue.$valid):false),ft=vue.computed(()=>l),Me=vue.computed(()=>!!(Y(C.value)&&!y)),Rt=vue.computed(()=>f?.value?.length||Me.value?false:g.value&&!Y(e.value)&&!O.value?y?!S?.value?.length:Object.values(C.value).every(ae=>ae.$valid&&ae.$active):false),Nt=vue.computed(()=>Object.entries(C.value).some(([ae,ue])=>ue.$haveAsync));function Gt(){N?.fields&&Object.entries(N.fields).forEach(([ae,ue])=>{let pt=vue.effectScope();dt[ae]=pt.run(()=>{let mt=vue.ref();return vue.watchEffect(()=>{mt.value=ue(vue.reactive({$dirty:g,$externalErrors:f?.value??[],$value:e,$silentValue:K,$rules:C,$error:$e,$pending:Pe,$invalid:ye,$valid:Rt,$errors:ot,$ready:ct,$silentErrors:st,$anyDirty:W,$tooltips:it,$name:ft,$inactive:Me,$edited:We,$anyEdited:ut}));}),mt}),j.push(pt);});}let dt={};return vue.watch(ye,ae=>{ae||(_.value=false);}),{$error:$e,$pending:Pe,$invalid:ye,$valid:Rt,$debounce:x,$lazy:se,$errors:ot,$ready:ct,$silentErrors:st,$rewardEarly:le,$autoDirty:U,$clearExternalErrorsOnChange:ge,$anyDirty:W,$edited:We,$anyEdited:ut,$name:ft,$haveAnyAsyncRule:Nt,$shortcuts:dt,$validating:O,$tooltips:it,$dirty:g,triggerPunishment:_,processShortcuts:Gt,$silentValue:K,$inactive:Me}}),G(),E=vue.watch(a.$dirty,g=>{i.setDirtyEntry(n,g),Object.values(C.value).forEach(_=>{_.$fieldDirty=g;});}),v=vue.watch([a.$error,a.$valid,a.$invalid,a.$pending],()=>{Object.values(C.value).forEach(g=>{g.$fieldError=a.$error.value,g.$fieldInvalid=a.$invalid.value,g.$fieldPending=a.$pending.value,g.$fieldValid=a.$valid.value;});}),h=vue.watch(a.$valid,g=>{a.$rewardEarly.value&&g&&(a.triggerPunishment.value=false);}),u=vue.watch(a.$haveAnyAsyncRule,s);}function G(){$=vue.watch(e,()=>{a.$autoDirty.value&&(a.$dirty.value||(a.$dirty.value=true)),t.value instanceof Function&&o(),(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&M(),a.$rewardEarly.value!==true&&a.$clearExternalErrorsOnChange.value&&c();},{deep:B?true:_e?1:true,flush:"post"});}function J(){Object.values(C.value).forEach(g=>{g.$validate();});}let C=vue.ref({}),L=vue.ref({});o();function ie(){c(),a.$dirty.value=false,a.triggerPunishment.value=false,i.setDirtyEntry(n,false),D.value=ne(e.value)?Q(e.value):Array.isArray(e.value)?[...e.value]:e.value,Object.entries(C.value).forEach(([g,_])=>{_.$reset();}),!a.$lazy.value&&a.$autoDirty.value&&Object.values(C.value).forEach(g=>g.$validate());}function de(g=true,_=false){a.$dirty.value||(a.$dirty.value=true),_&&g?(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&M():g&&M();}async function pe(){try{let g=e.value;if(a.triggerPunishment.value=!0,!a.$dirty.value)a.$dirty.value=!0;else if(a.$autoDirty.value&&a.$dirty.value&&!a.$pending.value)return {result:!a.$error.value,data:g};return y?{result:!S?.value?.length,data:g}:Y(C.value)?{result:!0,data:g}:{result:(await Promise.allSettled(Object.entries(C.value).map(([x,se])=>se.$validate()))).every(x=>x.status==="fulfilled"?x.value===!0:!1),data:g}}catch{return {result:false,data:e.value}}}function me(){I(),e.value=Q(D),ie();}function R(g=true){return a.$dirty.value?e.value:g?{_null:true}:null}function c(){f?.value?.length&&(f.value=[]);}!a.$lazy.value&&!a.$dirty.value&&a.$autoDirty.value&&M();let{$shortcuts:d,$validating:T,$autoDirty:P,$rewardEarly:X,$clearExternalErrorsOnChange:p,$haveAnyAsyncRule:A,$debounce:H,$lazy:Z,triggerPunishment:z,...oe}=a;return vue.reactive({...oe,$externalErrors:f,$value:e,$rules:C,...d,$reset:ie,$touch:de,$validate:pe,$unwatch:I,$watch:V,$resetAll:me,$extractDirtyFields:R,$clearExternalErrors:c})}function Ze({$id:e,path:t,index:r,options:n,storage:l,stateValue:i,customMessages:m,rules:f,externalErrors:S,schemaErrors:y,initialState:b,shortcuts:B,fieldName:D,schemaMode:N}){let w=f.$key?f.$key:he(),a=`${t}.${String(w)}`;typeof i.value=="object"&&i.value!=null&&(i.value.$id?a=`${t}.${i.value.$id}`:Object.defineProperties(i.value,{$id:{value:w,enumerable:false,configurable:false,writable:false}}));let j=vue.toRef(S?.value??[],r),$=vue.computed(()=>y?.value?.[r]),h=Te({state:i,rulesDef:vue.toRef(()=>f),customMessages:m,path:a,storage:l,options:n,externalErrors:j,schemaErrors:$,initialState:b,shortcuts:B,fieldName:D,schemaMode:N});if(h){let E=i.value?.$id;h.$id=E??String(w),l.addArrayStatus(e,h.$id,h);}return h}function wt({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:i,externalErrors:m,schemaErrors:f,schemaMode:S,initialState:y,shortcuts:b,fieldName:B}){let D=vue.effectScope(),N,w=vue.effectScope(),a,j=[];if(!Array.isArray(e.value)&&!t.value.$each)return;let $=vue.ref(),h=vue.ref(e.value),E,u=vue.ref({}),v=l.getCollectionsEntry(n);a=w.run(()=>({isPrimitiveArray:vue.computed(()=>Array.isArray(e.value)&&e.value.length?e.value.every(c=>typeof c!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(c=>Oe(c)||typeof c=="function"):false)})),M(),I();function M(){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)),h.value=u.value.$value,Array.isArray(e.value)&&!a.isPrimitiveArray.value?v.value=e.value.filter(R=>typeof R=="object").map((R,c)=>{let{scope:d,unwrapped:T}=Je(t.value.$each,vue.toRef(()=>R),c);d&&j.push(d);let P=vue.toRef(y.value??[],c),X=vue.toRef(m?.value??{},"$each"),p=vue.computed(()=>f?.value?.$each),A=Ze({$id:$.value,path:n,customMessages:r,rules:T??{},stateValue:vue.toRef(()=>R),index:c,options:i,storage:l,externalErrors:X,schemaErrors:p,initialState:P,shortcuts:b,fieldName:B,schemaMode:S});return A||null}).filter(R=>!!R):v.value=[],u.value=Ne({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:i,externalErrors:vue.toRef(m?.value??{},"$self"),schemaErrors:vue.computed(()=>f?.value?.$self),$isArray:true,initialState:y,shortcuts:b,fieldName:B,schemaMode:S});}function o(){if(Array.isArray(e.value)&&!a.isPrimitiveArray.value){let R=Q(v.value);v.value=e.value.filter(c=>typeof c=="object").map((c,d)=>{let T=vue.toRef(()=>c);if(c.$id&&v.value.find(P=>P.$id===c.$id)){let P=l.getArrayStatus($.value,c.$id);return P?(P.$value=T,P):null}else {let{scope:P,unwrapped:X}=Je(t.value.$each,T,d);P&&j.push(P);let p=vue.toRef(m?.value??{},"$each"),A=vue.computed(()=>f?.value?.$each??[]),H=Ze({$id:$.value,path:n,customMessages:r,rules:X??{},stateValue:T,index:d,options:i,storage:l,externalErrors:p,schemaErrors:A,initialState:vue.toRef(y.value??[],d),shortcuts:b,fieldName:B,schemaMode:S});return H||null}}).filter(c=>!!c),R.filter(c=>!e.value?.find(d=>c.$id===d.$id)).forEach((c,d)=>{l.deleteArrayStatus($.value,d.toString());});}else v.value=[];}function s(){E=vue.watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?M():o();},{deep:_e?1:true,flush:"pre"});}function I(){s(),D=vue.effectScope(),N=D.run(()=>{let R=vue.computed({get:()=>e.value,set(x){E(),e.value=x,s();}}),c=vue.computed(()=>u.value.$dirty&&(!v.value.length||v.value.every(x=>x.$dirty))),d=vue.computed(()=>u.value.$anyDirty||v.value.some(x=>x.$anyDirty)),T=vue.computed(()=>u.value.$invalid||v.value.some(x=>x.$invalid)),P=vue.computed(()=>(Y(u.value.$rules)?true:u.value.$valid)&&(!v.value.length||v.value.every(x=>x.$valid))),X=vue.computed(()=>u.value.$error||v.value.some(x=>x.$error)),p=vue.computed(()=>!(T.value||A.value)),A=vue.computed(()=>u.value.$pending||v.value.some(x=>x.$pending)),H=vue.computed(()=>!!v.value.length&&v.value.every(x=>x.$edited)),Z=vue.computed(()=>u.value.$anyEdited||v.value.some(x=>x.$anyEdited)),z=vue.computed(()=>({$self:u.value.$errors,$each:v.value.map(x=>x.$errors)})),oe=vue.computed(()=>({$self:u.value.$silentErrors,$each:v.value.map(x=>x.$silentErrors)})),g=vue.computed(()=>B);function _(){b?.collections&&Object.entries(b?.collections).forEach(([x,se])=>{let le=vue.effectScope();W[x]=le.run(()=>{let ge=vue.ref();return vue.watchEffect(()=>{ge.value=se(vue.reactive({$dirty:c,$error:X,$silentValue:R,$pending:A,$invalid:T,$valid:P,$errors:z,$ready:p,$silentErrors:oe,$anyDirty:d,$name:g,$each:v,$self:u,$value:e,$edited:H,$anyEdited:Z}));}),ge}),j.push(le);});}let W={};return _(),{$dirty:c,$anyDirty:d,$invalid:T,$valid:P,$error:X,$pending:A,$errors:z,$silentErrors:oe,$ready:p,$name:g,$shortcuts:W,$silentValue:R,$edited:H,$anyEdited:Z}}),a.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 V(){E&&E(),u.value&&u.value.$unwatch(),v.value&&v.value.forEach(R=>{"$dirty"in R&&R.$unwatch();}),D.stop(),D=vue.effectScope(),w.stop(),w=vue.effectScope(true),j.forEach(R=>R.stop()),j=[];}function G(R=true,c=false){u.value.$touch(R,c),v.value.forEach(d=>{d.$touch(R,c);});}function J(){u.value.$reset(),v.value.forEach(R=>{R.$reset();});}async function C(){let R=e.value;try{return {result:(await Promise.allSettled([u.value.$validate(),...v.value.map(T=>T.$validate())])).every(T=>T.status==="fulfilled"?T.value.result===!0:!1),data:R}}catch{return {result:false,data:R}}}function L(){u.value.$clearExternalErrors(),v.value.forEach(R=>{R.$clearExternalErrors();});}function ie(R=true){let c=v.value.map(d=>{if(Tt(d))return d.$extractDirtyFields(R)});return R&&c.every(d=>Y(d))&&(c=[]),c}function de(){V(),e.value=Q(y.value),J();}let{$shortcuts:pe,...me}=N;return vue.reactive({$self:u,...me,...pe,$each:v,$value:e,$validate:C,$unwatch:V,$watch:I,$touch:G,$reset:J,$resetAll:de,$extractDirtyFields:ie,$clearExternalErrors:L})}function Ue({rulesDef:e,state:t,path:r="",rootRules:n,externalErrors:l,schemaErrors:i,rootSchemaErrors:m,validationGroups:f,initialState:S,fieldName:y,...b}){let B=vue.effectScope(),D,N=[],w=null,a=null,j=null,$=null;async function E(R=true){let c=Object.entries(e.value),d=Object.fromEntries(c.filter(([p,A])=>!!A).map(([p,A])=>{if(A){let H=vue.toRef(t.value??{},p),Z=vue.toRef(()=>A),z=vue.toRef(l?.value??{},p),oe=vue.computed(()=>i?.value?.[p]),g=vue.toRef(S?.value??{},p);return [p,Te({state:H,rulesDef:Z,path:r?`${r}.${p}`:p,externalErrors:z,schemaErrors:oe,initialState:g,fieldName:p,...b})]}return []})),T=Object.fromEntries(Object.entries(vue.unref(l)??{}).filter(([p,A])=>!(p in e.value)&&!!A).map(([p])=>{let A=vue.toRef(t.value??{},p),H=vue.toRef(l?.value??{},p),Z=vue.computed(()=>i?.value?.[p]),z=vue.toRef(S?.value??{},p);return [p,Te({state:A,rulesDef:vue.computed(()=>({})),path:r?`${r}.${p}`:p,externalErrors:H,schemaErrors:Z,initialState:z,fieldName:p,...b})]})),P=Object.fromEntries(Object.entries(vue.unref(i)??{}).map(([p])=>{let A=vue.toRef(t.value??{},p),H=vue.toRef(l?.value??{},p),Z=vue.computed(()=>i?.value?.[p]),z=vue.toRef(S?.value??{},p);return [p,Te({state:A,rulesDef:vue.computed(()=>({})),path:r?`${r}.${p}`:p,externalErrors:H,schemaErrors:Z,initialState:z,fieldName:p,...b})]})),X=Object.fromEntries(Object.entries(t.value??{}).filter(([p])=>!(p in e.value)&&!(p in(T??{}))&&!(p in(P??{}))).map(([p])=>{let A=vue.toRef(t.value??{},p),H=vue.toRef(l?.value??{},p),Z=vue.computed(()=>i?.value?.[p]),z=vue.toRef(S?.value??{},p);return [p,Te({state:A,rulesDef:vue.computed(()=>({})),path:r?`${r}.${p}`:p,externalErrors:H,schemaErrors:Z,initialState:z,fieldName:p,...b})]}));u.value={...d,...T,...P,...X},R&&o();}let u=b.storage.getFieldsEntry(r);E();function v(){l&&(j=vue.watch(l,()=>{s(),E();},{deep:true}));}function M(){$=vue.watch(t,()=>{s(),E(),G(true,true);},{flush:"sync"});}function o(){n&&(w?.(),w=vue.watch(n,()=>{s(),E();},{deep:true,flush:"post"}),v()),m&&(a?.(),a=vue.watch(m,()=>{s(),E();},{deep:true,flush:"post"})),M(),D=B.run(()=>{let R=vue.computed({get:()=>t.value,set(U){s(),t.value=U,E();}}),c=vue.computed(()=>!!Object.entries(u.value).length&&Object.entries(u.value).every(([U,O])=>O?.$dirty)),d=vue.computed(()=>Object.entries(u.value).some(([U,O])=>O?.$anyDirty)),T=vue.computed(()=>Object.entries(u.value).some(([U,O])=>O?.$invalid)),P=vue.computed(()=>{let U=Object.entries(u.value).filter(([O,K])=>xt(K)?!K.$inactive:true);return U.length?U.every(([O,K])=>K?.$valid):false}),X=vue.computed(()=>d.value&&!z.value&&T.value),p=vue.computed(()=>vue.unref(b.options.rewardEarly)!=null?vue.unref(b.options.rewardEarly):false),A=vue.computed(()=>vue.unref(b.options.autoDirty)!=null?vue.unref(b.options.autoDirty):!p.value),H=vue.computed(()=>A.value?d.value&&!(T.value||z.value):!(T.value||z.value)),Z=vue.ref(false),z=vue.computed(()=>Z.value||Object.entries(u.value).some(([U,O])=>O?.$pending)),oe=vue.computed(()=>Object.fromEntries(Object.entries(u.value).map(([U,O])=>[U,O?.$errors]))),g=vue.computed(()=>Object.fromEntries(Object.entries(u.value).map(([U,O])=>[U,O?.$silentErrors]))),_=vue.computed(()=>!!Object.entries(u.value).length&&Object.entries(u.value).every(([U,O])=>O?.$edited)),W=vue.computed(()=>Object.entries(u.value).some(([U,O])=>O?.$anyEdited)),x=vue.computed(()=>y);function se(){b.shortcuts?.nested&&Object.entries(b.shortcuts.nested).forEach(([U,O])=>{let K=vue.effectScope();ge[U]=K.run(()=>{let $e=vue.ref();return vue.watchEffect(()=>{$e.value=O(vue.reactive({$dirty:c,$value:t,$silentValue:R,$error:X,$pending:z,$invalid:T,$valid:P,$ready:H,$anyDirty:d,$name:x,$silentErrors:g,$errors:oe,$fields:u,$edited:_,$anyEdited:W}));}),$e}),N.push(K);});}let le=vue.computed({get:()=>f?Object.fromEntries(Object.entries(f?.(u.value)??{}).map(([U,O])=>O.length?[U,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$valid"].map(K=>[K,$t(O,K)])),...Object.fromEntries(["$errors","$silentErrors"].map(K=>[K,yt(O,K)]))}]:[])):{},set(){}}),ge={};return se(),{$dirty:c,$anyDirty:d,$invalid:T,$valid:P,$error:X,$pending:z,$errors:oe,$silentErrors:g,$ready:H,$name:x,$shortcuts:ge,$groups:le,$silentValue:R,$edited:_,$anyEdited:W,$localPending:Z}});}function s(){w?.(),j?.(),$?.(),a?.(),N=[],D={},u.value&&Object.entries(u.value).forEach(([R,c])=>{c.$unwatch();});}function I(){Object.entries(u.value).forEach(([R,c])=>{c.$clearExternalErrors();});}function V(){j?.(),Object.values(u.value).forEach(R=>{R.$reset();}),S.value={...Q(t.value)},v();}function G(R=true,c=false){Object.values(u.value).forEach(d=>{d.$touch(R,c);});}async function J(){s(),t.value=Q({...S.value??{}}),V(),E();}function C(R){return R.filter(([c,d])=>ne(d)?!(d&&typeof d=="object"&&"_null"in d)&&!Y(d):Array.isArray(d)?d.length:true)}function L(R=true){let c=Object.entries(u.value).map(([d,T])=>[d,T.$extractDirtyFields(R)]);return R&&(c=C(c)),Object.fromEntries(c)}async function ie(){try{if(b.schemaMode)return b.onValidate?(G(!1),D.$localPending.value=!0,b.onValidate()):{result:!1,data:t.value};{let R=t.value;return {result:(await Promise.allSettled(Object.values(u.value).map(T=>T.$validate()))).every(T=>T.status==="fulfilled"?T.value.result===!0:!1),data:R}}}catch{return {result:false,data:t.value}}finally{D.$localPending.value=false;}}let{$shortcuts:de,$localPending:pe,...me}=D;return vue.reactive({...me,...de,$fields:u,$value:t,$resetAll:J,$reset:V,$touch:G,$validate:ie,$unwatch:s,$watch:o,$clearExternalErrors:I,$extractDirtyFields:L})}function Te({rulesDef:e,...t}){if(bt(e,t.state))return wt({rulesDef:e,...t});if(ht(t.state,e)){if(Ve(t.state))return Ue({rulesDef:e,...t});{let n=vue.effectScope().run(()=>{let m=vue.toRef(t.state.value?t.state:vue.ref({}));return vue.watch(()=>t.state.value,f=>{m.value=f;},{deep:true}),vue.watch(m,f=>{t.state.value=f;},{deep:true}),{fakeState:m}}),{state:l,...i}=t;return Ue({rulesDef:e,...i,state:n.fakeState})}}else if(Et(e))return Ne({rulesDef:e,...t})}function Ie({initialState:e,options:t,scopeRules:r,state:n,customRules:l,shortcuts:i,schemaErrors:m,schemaMode:f=false,onValidate:S}){let y=Ke(),b=vue.ref();return b.value=Ue({rootRules:r,rulesDef:r,state:n,customMessages:l?.(),storage:y,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:i,fieldName:"root",path:"",schemaErrors:m,rootSchemaErrors:m,schemaMode:f,onValidate:S}),vue.getCurrentScope()&&vue.onScopeDispose(()=>{b.value?.$unwatch();}),vue.reactive({regle:b})}function rt(e,t,r){let n={autoDirty:t?.autoDirty,lazy:t?.lazy,rewardEarly:t?.rewardEarly,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange};function l(i,m,f){let S=vue.isRef(m)?m:vue.computed(typeof m=="function"?m:()=>m),y={...n,...f},b=vue.isRef(i)?i:vue.ref(i),B=vue.ref({...Q(b.value)});return {r$:Ie({scopeRules:S,state:b,options:y,initialState:B,customRules:e,shortcuts:r}).regle}}return l}var ke=rt();function nt(){function e(t,r){return r}return e}var at=nt();function Vt({rules:e,modifiers:t,shortcuts:r}){let n=rt(e,t,r),l=nt();return {useRegle:n,inferRules:l}}function je(e,t){let r=t??false,n=vue.computed({get:()=>Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$value])),set:o=>{typeof o=="object"&&Object.entries(o).forEach(([s,I])=>e[s].$value=I);}}),l=vue.computed({get:()=>Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$silentValue])),set:o=>{typeof o=="object"&&Object.entries(o).forEach(([s,I])=>e[s].$silentValue=I);}}),i=vue.computed(()=>Object.entries(e).every(([o,s])=>s?.$dirty)),m=vue.computed(()=>Object.entries(e).some(([o,s])=>s?.$anyDirty)),f=vue.computed(()=>Object.entries(e).some(([o,s])=>s?.$invalid)),S=vue.computed(()=>Object.entries(e).every(([o,s])=>s?.$invalid)),y=vue.computed(()=>Object.entries(e).some(([o,s])=>s?.$error)),b=vue.computed(()=>Object.entries(e).every(([o,s])=>s?.$ready)),B=vue.computed(()=>Object.entries(e).some(([o,s])=>s?.$pending)),D=vue.computed(()=>Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$errors]))),N=vue.computed(()=>Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$silentErrors]))),w=vue.computed(()=>Object.entries(e).every(([o,s])=>s?.$edited)),a=vue.computed(()=>Object.entries(e).some(([o,s])=>s?.$anyEdited)),j=vue.computed(()=>e);function $(){Object.values(e).forEach(o=>{o.$reset();});}function h(){Object.values(e).forEach(o=>{o.$touch();});}function E(){Object.values(e).forEach(o=>{o.$resetAll();});}function u(o=true){return Object.values(e).map(s=>s.$extractDirtyFields(o))}function v(){Object.values(e).forEach(o=>{o.$clearExternalErrors();});}async function M(){try{let o=n.value;return {result:(await Promise.allSettled(Object.values(e).map(V=>V.$validate()))).every(V=>V.status==="fulfilled"?V.value.result===!0:!1),data:o}}catch{return {result:false,data:n.value}}}return vue.reactive({...!r&&{$instances:j,$value:n,$silentValue:l,$errors:D,$silentErrors:N},$dirty:i,$anyDirty:m,$invalid:f,$valid:S,$error:y,$pending:B,$ready:b,$edited:w,$anyEdited:a,$resetAll:E,$reset:$,$touch:h,$validate:M,$extractDirtyFields:u,$clearExternalErrors:v})}function Ft(e){function t(){let r=vue.ref(je(e.value,true)),n=vue.reactive({r$:r});return vue.watch(e,l=>{r.value=je(l,true);}),{r$:n.r$}}return {useCollectScopedValidations:t}}function _t(e){let t=e??ke,r=vue.ref({});return {useScopedRegle:(l,i,m)=>{let f=he(),{r$:S}=t(l,i,m);r.value[f]=S,vue.onScopeDispose(()=>{delete r.value[f];});function y(){delete r.value[f];}return {r$:S,$dispose:y}},instances:r}}function lt(e){let{instances:t,useScopedRegle:r}=_t(e),{useCollectScopedValidations:n}=Ft(t);return {useScopedRegle:r,useCollectScopedValidations:n}}
|
|
1
|
+
'use strict';var vue=require('vue');function Y(e,t=true){return e==null?true:e instanceof Date?isNaN(e.getTime()):Array.isArray(e)?t?e.length===0:false:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}var gt=Symbol("regle-rule");function Ut(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 Q(e){let t=e,r={}.toString.call(e).slice(8,-1);if(r=="Set"&&(t=new Set([...e].map(n=>Q(n)))),r=="Map"&&(t=new Map([...e].map(n=>[Q(n[0]),Q(n[1])]))),r=="Date"&&(t=new Date(e.getTime())),r=="RegExp"&&(t=RegExp(e.source,Ut(e))),r=="Array"||r=="Object"){t=Array.isArray(e)?[]:{};for(let n in e)t[n]=Q(e[n]);}return t}function ne(e){return e&&(e instanceof Date||e.constructor.name=="File"||e.constructor.name=="FileList")?false:typeof e=="object"&&e!==null&&!Array.isArray(e)}function Be(e){if(Y(e))return false;try{let t=null;if(e instanceof Date)t=e;else if(typeof e=="string"){let r=new Date(e);if(r.toString()==="Invalid Date")return !1;t=r;}return !!t}catch{return false}}function Le(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)}var He=(r=>(r.Inline="__inline",r.Async="__async",r))(He||{});function $t(e,t){return e.some(r=>r[t])}function yt(e,t){return e.reduce((r,n)=>{let l=n[t]||[];return r.concat(l)},[])}function ee(e){try{return e.map(t=>vue.toValue(t))}catch{return []}}function vt(e){return e.map(t=>t instanceof Function?vue.computed(t):vue.isRef(t)?t:vue.toRef(()=>t))}function St(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(m=>m.trim()).filter(m=>m.length>0).length:0}function ze(e,...t){let{validator:r,type:n}=e,l=n==="__async"||r.constructor.name==="AsyncFunction";return {...{validator(f,...S){return e.validator(f,...ee(S.length?S:t))},message(f){return typeof e.message=="function"?e.message({...f,$params:ee(f?.$params?.length?f.$params:t)}):e.message},active(f){return typeof e.active=="function"?e.active({...f,$params:ee(f?.$params?.length?f.$params:t)}):e.active??true},tooltip(f){return typeof e.tooltip=="function"?e.tooltip({...f,$params:ee(f?.$params?.length?f.$params:t)}):e.tooltip??[]},exec(f){let S=e.validator(f,...ee(t)),y;return S instanceof Promise?S.then(b=>(y=b,typeof y=="object"&&"$valid"in y?y.$valid:typeof y=="boolean"?y:false)):(y=S,typeof y=="object"&&"$valid"in y?y.$valid:typeof y=="boolean"?y:false)}},_validator:e.validator,_message:e.message,_active:e.active,_tooltip:e.tooltip,_type:e.type,_message_patched:false,_tooltip_patched:false,_async:l,_params:vt(t),_brand:gt}}function qe(e){if(typeof e.validator=="function"){let r=ze(e,...[]),n=e.async??e.validator.constructor.name==="AsyncFunction";if(St(e.validator)>1){let l=function(...i){return ze(e,...i)};return l.validator=r.validator,l.message=r.message,l.active=r.active,l.tooltip=r.tooltip,l.type=r.type,l.exec=r.exec,l._validator=r.validator,l._message=r.message,l._active=r.active,l._tooltip=r.tooltip,l._type=e.type,l._message_pacthed=false,l._tooltip_pacthed=false,l._async=n,l}else return r}throw new Error("Validator must be a function")}function Ke(){let e=vue.shallowRef(new Map),t=vue.shallowRef(new Map),r=vue.shallowRef(new Map),n=vue.shallowRef(new Map),l=vue.shallowRef(new Map),i=vue.shallowRef(new Map);function m($){let h=t.value.get($);if(h)return h;{let E=vue.ref({});return t.value.set($,E),E}}function f($){let h=r.value.get($);if(h)return h;{let E=vue.ref([]);return r.value.set($,E),E}}function S($,h,E){i.value.set(`${$}-${h}`,E);}function y($,h){return i.value.get(`${$}-${h}`)}function b($,h){$&&h!=null&&i.value.delete(`${$}-${h}`);}function B($,h){n.value.set($,h);}function D($){return n.value.get($)??false}function N($,h){e.value.set($,h);}function w($,h){let E=e.value.get($);return E?a(h,E)?{valid:true}:{valid:false}:undefined}function a($,h){let E=Object.keys(h),u=Object.keys($);return u.length!==E.length||!u.every(M=>E.includes(M))?false:u.every(M=>{let o=$[M],s=h[M];return !s||!o||typeof o=="function"||typeof s=="function"||typeof o=="number"||typeof o=="boolean"?false:o._params?o._params?.every((I,V)=>{if(typeof s=="number"||typeof s=="boolean")return true;{let G=ee(s._params),J=ee(o._params);return G?.[V]===J?.[V]}}):true})}function j($){let h=l.value.get($);if(h)return h;{let E=vue.ref(false),u=vue.ref(true),v=vue.ref({}),M=vue.ref(false);return l.value.set($,{$pending:E,$valid:u,$metadata:v,$validating:M}),{$pending:E,$valid:u,$metadata:v,$validating:M}}}return vue.getCurrentScope()&&vue.onScopeDispose(()=>{e.value.clear(),t.value.clear(),r.value.clear(),n.value.clear(),l.value.clear(),i.value.clear();}),{addRuleDeclEntry:N,setDirtyEntry:B,checkRuleDeclEntry:w,getDirtyState:D,trySetRuleStatusRef:j,getFieldsEntry:m,getCollectionsEntry:f,getArrayStatus:y,addArrayStatus:S,deleteArrayStatus:b,arrayStatusStorage:i}}function Ve(e){return ne(e.value)}function Je(e,t,r){let n=vue.effectScope(),l;return e instanceof Function?l=n.run(()=>e(t,r??0)):l=e,{scope:n,unwrapped:l}}function Fe(e,t,r){let n,l=(...i)=>new Promise(m=>{clearTimeout(n),n=setTimeout(()=>{n=undefined,Promise.resolve(e.apply(this,[...i])).then(m);},t);});return l.cancel=()=>{clearTimeout(n),n=undefined;},l}function Jt(e,t){let r=String(e).split("."),n=String(t).split(".");for(let l=0;l<Math.min(r.length,n.length);l++){let i=Number(r[l]),m=Number(n[l]);if(i>m)return 1;if(m>i)return -1;if(!isNaN(i)&&isNaN(m))return 1;if(isNaN(i)&&!isNaN(m))return -1}return 0}var _e=Jt(vue.version,"3.5.0")!==-1;function Yt(){return Math.floor(Math.random()*Date.now()).toString()}function he(){return typeof window>"u"?Yt():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function ht(e,t){return Ve(e)||ne(t.value)&&!Y(t.value)&&!Object.entries(t.value).some(([r,n])=>Oe(n)||typeof n=="function")}function bt(e,t){return !!e.value&&ne(e.value)&&"$each"in e.value||Array.isArray(t.value)}function Et(e){return !!e.value&&ne(e.value)}function Oe(e){return ne(e)&&"_validator"in e}function we(e){return typeof e.value!="function"}function Tt(e){return ne(e)&&"$fields"in e}function xt(e){return !!e&&"$rules"in e}function Ye({field:e,silent:t=false}){return Object.entries(e.$rules??{}).map(([r,n])=>t||!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 Dt({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 Ct({customMessages:e,rule:t,ruleKey:r,state:n,path:l,storage:i,$debounce:m,modifiers:f}){let S=vue.effectScope(),y={},b,B=vue.ref(false),{$pending:D,$valid:N,$metadata:w,$validating:a}=i.trySetRuleStatusRef(`${l}.${r}`);function j(){S=vue.effectScope(),y=S.run(()=>{let o=vue.ref(false),s=vue.ref(false),I=vue.ref(true),V=vue.ref(false),G=vue.ref(false),J=vue.computed(()=>({$value:n.value,$error:s.value,$dirty:o.value,$pending:V.value,$valid:G.value,$invalid:I.value,$rule:{$valid:N.value,$invalid:!N.value,$pending:D.value},$params:R.value,...w.value})),C=vue.computed(()=>we(t)?typeof t.value.active=="function"?t.value.active(J.value):!!t.value.active:true);function L(d){let T="",P=e?e[r]?.[d]:undefined;if(P&&(typeof P=="function"?T=P(J.value):T=P),we(t)){let X=`_${d}_patched`;P&&!t.value[X]||(typeof t.value[d]=="function"?T=t.value[d](J.value):T=t.value[d]??"");}return T}let ie=vue.computed(()=>{let d=L("message");return Y(d)&&(d="This field is not valid"),d}),de=vue.computed(()=>L("tooltip")),pe=vue.computed(()=>we(t)&&t.value.type?t.value.type:r),me=vue.computed(()=>we(t)?t.value.validator:t.value),R=vue.computed(()=>typeof t.value=="function"?[]:ee(t.value._params??[])),c=vue.computed(()=>`${l}.${pe.value}`);return {$active:C,$message:ie,$type:pe,$validator:me,$params:R,$path:c,$tooltip:de,$fieldValid:G,$fieldError:s,$fieldDirty:o,$fieldPending:V,$fieldInvalid:I}}),b=vue.watch(y?.$params,()=>{(f.$autoDirty.value||f.$rewardEarly.value&&y.$fieldError.value)&&u();});}j();function $(){N.value=true,y.$fieldDirty.value&&(D.value=true);}async function h(){let o=false;try{let s=y.$validator.value,I=s(n.value,...y.$params.value),V=n.value;$();let G;if(I instanceof Promise?G=await I:G=I,n.value!==V)return !0;if(typeof G=="boolean")o=G;else {let{$valid:J,...C}=G;o=J,w.value=C;}}catch{o=false;}finally{D.value=false;}return o}let E=Fe(h,m??200);async function u(){try{a.value=!0;let o=!1;if(Oe(t.value)&&t.value._async)o=await E();else {let s=y.$validator.value,I=s(n.value,...y.$params.value);if(I instanceof Promise)console.warn('You used a async validator function on a non-async rule, please use "async await" or the "withAsync" helper');else if(I!=null)if(typeof I=="boolean")o=I;else {let{$valid:V,...G}=I;o=V,w.value=G;}}return N.value=o,o}catch{return false}finally{a.value=false;}}function v(){N.value=true,w.value={},D.value=false,a.value=false,j();}function M(){b(),S.stop(),S=vue.effectScope();}return vue.reactive({...y,$pending:D,$valid:N,$metadata:w,$haveAsync:B,$validating:a,$validate:u,$unwatch:M,$watch:j,$reset:v})}function Ne({state:e,rulesDef:t,customMessages:r,path:n,fieldName:l,storage:i,options:m,externalErrors:f,schemaErrors:S,schemaMode:y,onUnwatch:b,$isArray:B,initialState:D,shortcuts:N}){let w=vue.effectScope(),a,j=[],$,h,E,u,v,M=()=>{};function o(){let g=t.value,_=i.checkRuleDeclEntry(n,g);L.value=Object.fromEntries(Object.entries(g).filter(([W])=>W.startsWith("$"))),V(),C.value=Object.fromEntries(Object.entries(t.value).filter(([W])=>!W.startsWith("$")).map(([W,x])=>{if(x){let se=vue.toRef(()=>x);return [W,Ct({modifiers:{$autoDirty:a.$autoDirty,$rewardEarly:a.$rewardEarly},customMessages:r,rule:se,ruleKey:W,state:e,path:n,storage:i,$debounce:L.value.$debounce})]}return []}).filter(W=>!!W.length)),a.processShortcuts(),s(),_?.valid!=null&&(a.$dirty.value=i.getDirtyState(n),a.$dirty.value&&M()),i.addRuleDeclEntry(n,g);}function s(){M=a.$debounce.value?Fe(J,a.$debounce.value??a.$haveAnyAsyncRule?100:0):J;}function I(){C.value&&Object.entries(C.value).forEach(([g,_])=>{_.$unwatch();}),E(),v?.(),a.$dirty.value&&i.setDirtyEntry(n,a.$dirty.value),$?.(),h?.(),w.stop(),w=vue.effectScope(),j.forEach(g=>g.stop()),j=[],b?.(),u?.();}function V(){C.value&&Object.entries(C.value).forEach(([g,_])=>{_.$watch();}),a=w.run(()=>{let g=vue.ref(false),_=vue.ref(false),W=vue.computed(()=>g.value),x=vue.computed(()=>L.value.$debounce),se=vue.computed(()=>L.value.$lazy!=null?L.value.$lazy:vue.unref(m.lazy)!=null?vue.unref(m.lazy):false),le=vue.computed(()=>L.value.$rewardEarly!=null?L.value.$rewardEarly:vue.unref(m.rewardEarly)!=null?vue.unref(m.rewardEarly):false),ge=vue.computed(()=>L.value.$clearExternalErrorsOnChange!=null?L.value.$clearExternalErrorsOnChange:vue.unref(m.clearExternalErrorsOnChange)!=null?vue.unref(m.clearExternalErrorsOnChange):true),U=vue.computed(()=>L.value.$autoDirty!=null?L.value.$autoDirty:vue.unref(m.autoDirty)!=null?vue.unref(m.autoDirty):!le.value),O=vue.computed(()=>Object.entries(C.value).some(([ae,ue])=>ue.$validating)),K=vue.computed({get:()=>e.value,set(ae){$(),e.value=ae,G();}}),$e=vue.computed(()=>ye.value&&!Pe.value&&g.value),ot=vue.computed(()=>Ye({field:{$error:$e.value,$externalErrors:f?.value,$schemaErrors:S?.value,$rules:C.value}})),st=vue.computed(()=>Ye({field:{$error:true,$externalErrors:f?.value,$schemaErrors:S?.value,$rules:C.value},silent:true})),We=vue.computed(()=>g.value?Be(D.value)&&Be(e.value)?Le(D.value).getDate()!==Le(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),ut=vue.computed(()=>We.value),it=vue.computed(()=>Dt({field:{$rules:C.value}})),ct=vue.computed(()=>U.value?W.value&&!(ye.value||Pe.value):!(ye.value||Pe.value)),Pe=vue.computed(()=>_.value||!le.value?Object.entries(C.value).some(([ae,ue])=>ue.$pending):false),ye=vue.computed(()=>f?.value?.length||S?.value?.length?true:Me.value?false:!le.value||le.value&&_.value?Object.entries(C.value).some(([ae,ue])=>!ue.$valid):false),ft=vue.computed(()=>l),Me=vue.computed(()=>!!(Y(C.value)&&!y)),Rt=vue.computed(()=>f?.value?.length||Me.value?false:g.value&&!Y(e.value)&&!O.value?y?!S?.value?.length:Object.values(C.value).every(ae=>ae.$valid&&ae.$active):false),Nt=vue.computed(()=>Object.entries(C.value).some(([ae,ue])=>ue.$haveAsync));function Gt(){N?.fields&&Object.entries(N.fields).forEach(([ae,ue])=>{let pt=vue.effectScope();dt[ae]=pt.run(()=>{let mt=vue.ref();return vue.watchEffect(()=>{mt.value=ue(vue.reactive({$dirty:g,$externalErrors:f?.value??[],$value:e,$silentValue:K,$rules:C,$error:$e,$pending:Pe,$invalid:ye,$valid:Rt,$errors:ot,$ready:ct,$silentErrors:st,$anyDirty:W,$tooltips:it,$name:ft,$inactive:Me,$edited:We,$anyEdited:ut}));}),mt}),j.push(pt);});}let dt={};return vue.watch(ye,ae=>{ae||(_.value=false);}),{$error:$e,$pending:Pe,$invalid:ye,$valid:Rt,$debounce:x,$lazy:se,$errors:ot,$ready:ct,$silentErrors:st,$rewardEarly:le,$autoDirty:U,$clearExternalErrorsOnChange:ge,$anyDirty:W,$edited:We,$anyEdited:ut,$name:ft,$haveAnyAsyncRule:Nt,$shortcuts:dt,$validating:O,$tooltips:it,$dirty:g,triggerPunishment:_,processShortcuts:Gt,$silentValue:K,$inactive:Me}}),G(),E=vue.watch(a.$dirty,g=>{i.setDirtyEntry(n,g),Object.values(C.value).forEach(_=>{_.$fieldDirty=g;});}),v=vue.watch([a.$error,a.$valid,a.$invalid,a.$pending],()=>{Object.values(C.value).forEach(g=>{g.$fieldError=a.$error.value,g.$fieldInvalid=a.$invalid.value,g.$fieldPending=a.$pending.value,g.$fieldValid=a.$valid.value;});}),h=vue.watch(a.$valid,g=>{a.$rewardEarly.value&&g&&(a.triggerPunishment.value=false);}),u=vue.watch(a.$haveAnyAsyncRule,s);}function G(){$=vue.watch(e,()=>{a.$autoDirty.value&&(a.$dirty.value||(a.$dirty.value=true)),t.value instanceof Function&&o(),(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&M(),a.$rewardEarly.value!==true&&a.$clearExternalErrorsOnChange.value&&c();},{deep:B?true:_e?1:true,flush:"post"});}function J(){Object.values(C.value).forEach(g=>{g.$validate();});}let C=vue.ref({}),L=vue.ref({});o();function ie(){c(),a.$dirty.value=false,a.triggerPunishment.value=false,i.setDirtyEntry(n,false),D.value=ne(e.value)?Q(e.value):Array.isArray(e.value)?[...e.value]:e.value,Object.entries(C.value).forEach(([g,_])=>{_.$reset();}),!a.$lazy.value&&a.$autoDirty.value&&Object.values(C.value).forEach(g=>g.$validate());}function de(g=true,_=false){a.$dirty.value||(a.$dirty.value=true),_&&g?(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&M():g&&M();}async function pe(){try{let g=e.value;if(a.triggerPunishment.value=!0,!a.$dirty.value)a.$dirty.value=!0;else if(a.$autoDirty.value&&a.$dirty.value&&!a.$pending.value)return {result:!a.$error.value,data:g};return y?{result:!S?.value?.length,data:g}:Y(C.value)?{result:!0,data:g}:{result:(await Promise.allSettled(Object.entries(C.value).map(([x,se])=>se.$validate()))).every(x=>x.status==="fulfilled"?x.value===!0:!1),data:g}}catch{return {result:false,data:e.value}}}function me(){I(),e.value=Q(D),ie();}function R(g=true){return a.$dirty.value?e.value:g?{_null:true}:null}function c(){f?.value?.length&&(f.value=[]);}!a.$lazy.value&&!a.$dirty.value&&a.$autoDirty.value&&M();let{$shortcuts:d,$validating:T,$autoDirty:P,$rewardEarly:X,$clearExternalErrorsOnChange:p,$haveAnyAsyncRule:A,$debounce:H,$lazy:Z,triggerPunishment:z,...oe}=a;return vue.reactive({...oe,$externalErrors:f,$value:e,$rules:C,...d,$reset:ie,$touch:de,$validate:pe,$unwatch:I,$watch:V,$resetAll:me,$extractDirtyFields:R,$clearExternalErrors:c})}function Ze({$id:e,path:t,index:r,options:n,storage:l,stateValue:i,customMessages:m,rules:f,externalErrors:S,schemaErrors:y,initialState:b,shortcuts:B,fieldName:D,schemaMode:N}){let w=f.$key?f.$key:he(),a=`${t}.${String(w)}`;typeof i.value=="object"&&i.value!=null&&(i.value.$id?a=`${t}.${i.value.$id}`:Object.defineProperties(i.value,{$id:{value:w,enumerable:false,configurable:false,writable:false}}));let j=vue.toRef(S?.value??[],r),$=vue.computed(()=>y?.value?.[r]),h=Te({state:i,rulesDef:vue.toRef(()=>f),customMessages:m,path:a,storage:l,options:n,externalErrors:j,schemaErrors:$,initialState:b,shortcuts:B,fieldName:D,schemaMode:N});if(h){let E=i.value?.$id;h.$id=E??String(w),l.addArrayStatus(e,h.$id,h);}return h}function wt({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:i,externalErrors:m,schemaErrors:f,schemaMode:S,initialState:y,shortcuts:b,fieldName:B}){let D=vue.effectScope(),N,w=vue.effectScope(),a,j=[];if(!Array.isArray(e.value)&&!t.value.$each)return;let $=vue.ref(),h=vue.ref(e.value),E,u=vue.ref({}),v=l.getCollectionsEntry(n);a=w.run(()=>({isPrimitiveArray:vue.computed(()=>Array.isArray(e.value)&&e.value.length?e.value.every(c=>typeof c!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(c=>Oe(c)||typeof c=="function"):false)})),M(),I();function M(){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)),h.value=u.value.$value,Array.isArray(e.value)&&!a.isPrimitiveArray.value?v.value=e.value.filter(R=>typeof R=="object").map((R,c)=>{let{scope:d,unwrapped:T}=Je(t.value.$each,vue.toRef(()=>R),c);d&&j.push(d);let P=vue.toRef(y.value??[],c),X=vue.toRef(m?.value??{},"$each"),p=vue.computed(()=>f?.value?.$each),A=Ze({$id:$.value,path:n,customMessages:r,rules:T??{},stateValue:vue.toRef(()=>R),index:c,options:i,storage:l,externalErrors:X,schemaErrors:p,initialState:P,shortcuts:b,fieldName:B,schemaMode:S});return A||null}).filter(R=>!!R):v.value=[],u.value=Ne({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:i,externalErrors:vue.toRef(m?.value??{},"$self"),schemaErrors:vue.computed(()=>f?.value?.$self),$isArray:true,initialState:y,shortcuts:b,fieldName:B,schemaMode:S});}function o(){if(Array.isArray(e.value)&&!a.isPrimitiveArray.value){let R=Q(v.value);v.value=e.value.filter(c=>typeof c=="object").map((c,d)=>{let T=vue.toRef(()=>c);if(c.$id&&v.value.find(P=>P.$id===c.$id)){let P=l.getArrayStatus($.value,c.$id);return P?(P.$value=T,P):null}else {let{scope:P,unwrapped:X}=Je(t.value.$each,T,d);P&&j.push(P);let p=vue.toRef(m?.value??{},"$each"),A=vue.computed(()=>f?.value?.$each??[]),H=Ze({$id:$.value,path:n,customMessages:r,rules:X??{},stateValue:T,index:d,options:i,storage:l,externalErrors:p,schemaErrors:A,initialState:vue.toRef(y.value??[],d),shortcuts:b,fieldName:B,schemaMode:S});return H||null}}).filter(c=>!!c),R.filter(c=>!e.value?.find(d=>c.$id===d.$id)).forEach((c,d)=>{l.deleteArrayStatus($.value,d.toString());});}else v.value=[];}function s(){E=vue.watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?M():o();},{deep:_e?1:true,flush:"pre"});}function I(){s(),D=vue.effectScope(),N=D.run(()=>{let R=vue.computed({get:()=>e.value,set(x){E(),e.value=x,s();}}),c=vue.computed(()=>u.value.$dirty&&(!v.value.length||v.value.every(x=>x.$dirty))),d=vue.computed(()=>u.value.$anyDirty||v.value.some(x=>x.$anyDirty)),T=vue.computed(()=>u.value.$invalid||v.value.some(x=>x.$invalid)),P=vue.computed(()=>(Y(u.value.$rules)?true:u.value.$valid)&&(!v.value.length||v.value.every(x=>x.$valid))),X=vue.computed(()=>u.value.$error||v.value.some(x=>x.$error)),p=vue.computed(()=>!(T.value||A.value)),A=vue.computed(()=>u.value.$pending||v.value.some(x=>x.$pending)),H=vue.computed(()=>!!v.value.length&&v.value.every(x=>x.$edited)),Z=vue.computed(()=>u.value.$anyEdited||v.value.some(x=>x.$anyEdited)),z=vue.computed(()=>({$self:u.value.$errors,$each:v.value.map(x=>x.$errors)})),oe=vue.computed(()=>({$self:u.value.$silentErrors,$each:v.value.map(x=>x.$silentErrors)})),g=vue.computed(()=>B);function _(){b?.collections&&Object.entries(b?.collections).forEach(([x,se])=>{let le=vue.effectScope();W[x]=le.run(()=>{let ge=vue.ref();return vue.watchEffect(()=>{ge.value=se(vue.reactive({$dirty:c,$error:X,$silentValue:R,$pending:A,$invalid:T,$valid:P,$errors:z,$ready:p,$silentErrors:oe,$anyDirty:d,$name:g,$each:v,$self:u,$value:e,$edited:H,$anyEdited:Z}));}),ge}),j.push(le);});}let W={};return _(),{$dirty:c,$anyDirty:d,$invalid:T,$valid:P,$error:X,$pending:A,$errors:z,$silentErrors:oe,$ready:p,$name:g,$shortcuts:W,$silentValue:R,$edited:H,$anyEdited:Z}}),a.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 V(){E&&E(),u.value&&u.value.$unwatch(),v.value&&v.value.forEach(R=>{"$dirty"in R&&R.$unwatch();}),D.stop(),D=vue.effectScope(),w.stop(),w=vue.effectScope(true),j.forEach(R=>R.stop()),j=[];}function G(R=true,c=false){u.value.$touch(R,c),v.value.forEach(d=>{d.$touch(R,c);});}function J(){u.value.$reset(),v.value.forEach(R=>{R.$reset();});}async function C(){let R=e.value;try{return {result:(await Promise.allSettled([u.value.$validate(),...v.value.map(T=>T.$validate())])).every(T=>T.status==="fulfilled"?T.value.result===!0:!1),data:R}}catch{return {result:false,data:R}}}function L(){u.value.$clearExternalErrors(),v.value.forEach(R=>{R.$clearExternalErrors();});}function ie(R=true){let c=v.value.map(d=>{if(Tt(d))return d.$extractDirtyFields(R)});return R&&c.every(d=>Y(d))&&(c=[]),c}function de(){V(),e.value=Q(y.value),J();}let{$shortcuts:pe,...me}=N;return vue.reactive({$self:u,...me,...pe,$each:v,$value:e,$validate:C,$unwatch:V,$watch:I,$touch:G,$reset:J,$resetAll:de,$extractDirtyFields:ie,$clearExternalErrors:L})}function Ue({rulesDef:e,state:t,path:r="",rootRules:n,externalErrors:l,schemaErrors:i,rootSchemaErrors:m,validationGroups:f,initialState:S,fieldName:y,...b}){let B=vue.effectScope(),D,N=[],w=null,a=null,j=null,$=null;async function E(R=true){let c=Object.entries(e.value),d=Object.fromEntries(c.filter(([p,A])=>!!A).map(([p,A])=>{if(A){let H=vue.toRef(t.value??{},p),Z=vue.toRef(()=>A),z=vue.toRef(l?.value??{},p),oe=vue.computed(()=>i?.value?.[p]),g=vue.toRef(S?.value??{},p);return [p,Te({state:H,rulesDef:Z,path:r?`${r}.${p}`:p,externalErrors:z,schemaErrors:oe,initialState:g,fieldName:p,...b})]}return []})),T=Object.fromEntries(Object.entries(vue.unref(l)??{}).filter(([p,A])=>!(p in e.value)&&!!A).map(([p])=>{let A=vue.toRef(t.value??{},p),H=vue.toRef(l?.value??{},p),Z=vue.computed(()=>i?.value?.[p]),z=vue.toRef(S?.value??{},p);return [p,Te({state:A,rulesDef:vue.computed(()=>({})),path:r?`${r}.${p}`:p,externalErrors:H,schemaErrors:Z,initialState:z,fieldName:p,...b})]})),P=Object.fromEntries(Object.entries(vue.unref(i)??{}).map(([p])=>{let A=vue.toRef(t.value??{},p),H=vue.toRef(l?.value??{},p),Z=vue.computed(()=>i?.value?.[p]),z=vue.toRef(S?.value??{},p);return [p,Te({state:A,rulesDef:vue.computed(()=>({})),path:r?`${r}.${p}`:p,externalErrors:H,schemaErrors:Z,initialState:z,fieldName:p,...b})]})),X=Object.fromEntries(Object.entries(t.value??{}).filter(([p])=>!(p in e.value)&&!(p in(T??{}))&&!(p in(P??{}))).map(([p])=>{let A=vue.toRef(t.value??{},p),H=vue.toRef(l?.value??{},p),Z=vue.computed(()=>i?.value?.[p]),z=vue.toRef(S?.value??{},p);return [p,Te({state:A,rulesDef:vue.computed(()=>({})),path:r?`${r}.${p}`:p,externalErrors:H,schemaErrors:Z,initialState:z,fieldName:p,...b})]}));u.value={...d,...T,...P,...X},R&&o();}let u=b.storage.getFieldsEntry(r);E();function v(){l&&(j=vue.watch(l,()=>{s(),E();},{deep:true}));}function M(){$=vue.watch(t,()=>{s(),E(),G(true,true);},{flush:"sync"});}function o(){n&&(w?.(),w=vue.watch(n,()=>{s(),E();},{deep:true,flush:"post"}),v()),m&&(a?.(),a=vue.watch(m,()=>{s(),E();},{deep:true,flush:"post"})),M(),D=B.run(()=>{let R=vue.computed({get:()=>t.value,set(U){s(),t.value=U,E();}}),c=vue.computed(()=>!!Object.entries(u.value).length&&Object.entries(u.value).every(([U,O])=>O?.$dirty)),d=vue.computed(()=>Object.entries(u.value).some(([U,O])=>O?.$anyDirty)),T=vue.computed(()=>Object.entries(u.value).some(([U,O])=>O?.$invalid)),P=vue.computed(()=>{let U=Object.entries(u.value).filter(([O,K])=>xt(K)?!K.$inactive:true);return U.length?U.every(([O,K])=>K?.$valid):false}),X=vue.computed(()=>d.value&&!z.value&&T.value),p=vue.computed(()=>vue.unref(b.options.rewardEarly)!=null?vue.unref(b.options.rewardEarly):false),A=vue.computed(()=>vue.unref(b.options.autoDirty)!=null?vue.unref(b.options.autoDirty):!p.value),H=vue.computed(()=>A.value?d.value&&!(T.value||z.value):!(T.value||z.value)),Z=vue.ref(false),z=vue.computed(()=>Z.value||Object.entries(u.value).some(([U,O])=>O?.$pending)),oe=vue.computed(()=>Object.fromEntries(Object.entries(u.value).map(([U,O])=>[U,O?.$errors]))),g=vue.computed(()=>Object.fromEntries(Object.entries(u.value).map(([U,O])=>[U,O?.$silentErrors]))),_=vue.computed(()=>!!Object.entries(u.value).length&&Object.entries(u.value).every(([U,O])=>O?.$edited)),W=vue.computed(()=>Object.entries(u.value).some(([U,O])=>O?.$anyEdited)),x=vue.computed(()=>y);function se(){b.shortcuts?.nested&&Object.entries(b.shortcuts.nested).forEach(([U,O])=>{let K=vue.effectScope();ge[U]=K.run(()=>{let $e=vue.ref();return vue.watchEffect(()=>{$e.value=O(vue.reactive({$dirty:c,$value:t,$silentValue:R,$error:X,$pending:z,$invalid:T,$valid:P,$ready:H,$anyDirty:d,$name:x,$silentErrors:g,$errors:oe,$fields:u,$edited:_,$anyEdited:W}));}),$e}),N.push(K);});}let le=vue.computed({get:()=>f?Object.fromEntries(Object.entries(f?.(u.value)??{}).map(([U,O])=>O.length?[U,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$valid"].map(K=>[K,$t(O,K)])),...Object.fromEntries(["$errors","$silentErrors"].map(K=>[K,yt(O,K)]))}]:[])):{},set(){}}),ge={};return se(),{$dirty:c,$anyDirty:d,$invalid:T,$valid:P,$error:X,$pending:z,$errors:oe,$silentErrors:g,$ready:H,$name:x,$shortcuts:ge,$groups:le,$silentValue:R,$edited:_,$anyEdited:W,$localPending:Z}});}function s(){w?.(),j?.(),$?.(),a?.(),N=[],D={},u.value&&Object.entries(u.value).forEach(([R,c])=>{c.$unwatch();});}function I(){Object.entries(u.value).forEach(([R,c])=>{c.$clearExternalErrors();});}function V(){j?.(),Object.values(u.value).forEach(R=>{R.$reset();}),S.value={...Q(t.value)},v();}function G(R=true,c=false){Object.values(u.value).forEach(d=>{d.$touch(R,c);});}async function J(){s(),t.value=Q({...S.value??{}}),V(),E();}function C(R){return R.filter(([c,d])=>ne(d)?!(d&&typeof d=="object"&&"_null"in d)&&!Y(d):Array.isArray(d)?d.length:true)}function L(R=true){let c=Object.entries(u.value).map(([d,T])=>[d,T.$extractDirtyFields(R)]);return R&&(c=C(c)),Object.fromEntries(c)}async function ie(){try{if(b.schemaMode)return b.onValidate?(G(!1),D.$localPending.value=!0,b.onValidate()):{result:!1,data:t.value};{let R=t.value;return {result:(await Promise.allSettled(Object.values(u.value).map(T=>T.$validate()))).every(T=>T.status==="fulfilled"?T.value.result===!0:!1),data:R}}}catch{return {result:false,data:t.value}}finally{D.$localPending.value=false;}}let{$shortcuts:de,$localPending:pe,...me}=D;return vue.reactive({...me,...de,$fields:u,$value:t,$resetAll:J,$reset:V,$touch:G,$validate:ie,$unwatch:s,$watch:o,$clearExternalErrors:I,$extractDirtyFields:L})}function Te({rulesDef:e,...t}){if(bt(e,t.state))return wt({rulesDef:e,...t});if(ht(t.state,e)){if(Ve(t.state))return Ue({rulesDef:e,...t});{let n=vue.effectScope().run(()=>{let m=vue.toRef(t.state.value?t.state:vue.ref({}));return vue.watch(()=>t.state.value,f=>{m.value=f;},{deep:true}),vue.watch(m,f=>{t.state.value=f;},{deep:true}),{fakeState:m}}),{state:l,...i}=t;return Ue({rulesDef:e,...i,state:n.fakeState})}}else if(Et(e))return Ne({rulesDef:e,...t})}function Ie({initialState:e,options:t,scopeRules:r,state:n,customRules:l,shortcuts:i,schemaErrors:m,schemaMode:f=false,onValidate:S}){let y=Ke(),b=vue.ref();return b.value=Ue({rootRules:r,rulesDef:r,state:n,customMessages:l?.(),storage:y,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:i,fieldName:"root",path:"",schemaErrors:m,rootSchemaErrors:m,schemaMode:f,onValidate:S}),vue.getCurrentScope()&&vue.onScopeDispose(()=>{b.value?.$unwatch();}),vue.reactive({regle:b})}function rt(e,t,r){let n={autoDirty:t?.autoDirty,lazy:t?.lazy,rewardEarly:t?.rewardEarly,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange};function l(i,m,f){let S=vue.isRef(m)?m:vue.computed(typeof m=="function"?m:()=>m),y={...n,...f},b=vue.isRef(i)?i:vue.ref(i),B=vue.ref({...Q(b.value)});return {r$:Ie({scopeRules:S,state:b,options:y,initialState:B,customRules:e,shortcuts:r}).regle}}return l}var ke=rt();function nt(){function e(t,r){return r}return e}var at=nt();function Vt({rules:e,modifiers:t,shortcuts:r}){let n=rt(e,t,r),l=nt();return {useRegle:n,inferRules:l}}function je(e,t){let r=t??false,n=vue.computed({get:()=>Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$value])),set:o=>{typeof o=="object"&&Object.entries(o).forEach(([s,I])=>e[s].$value=I);}}),l=vue.computed({get:()=>Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$silentValue])),set:o=>{typeof o=="object"&&Object.entries(o).forEach(([s,I])=>e[s].$silentValue=I);}}),i=vue.computed(()=>Object.entries(e).every(([o,s])=>s?.$dirty)),m=vue.computed(()=>Object.entries(e).some(([o,s])=>s?.$anyDirty)),f=vue.computed(()=>Object.entries(e).some(([o,s])=>s?.$invalid)),S=vue.computed(()=>Object.entries(e).every(([o,s])=>s?.$invalid)),y=vue.computed(()=>Object.entries(e).some(([o,s])=>s?.$error)),b=vue.computed(()=>Object.entries(e).every(([o,s])=>s?.$ready)),B=vue.computed(()=>Object.entries(e).some(([o,s])=>s?.$pending)),D=vue.computed(()=>Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$errors]))),N=vue.computed(()=>Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$silentErrors]))),w=vue.computed(()=>Object.entries(e).every(([o,s])=>s?.$edited)),a=vue.computed(()=>Object.entries(e).some(([o,s])=>s?.$anyEdited)),j=vue.computed(()=>e);function $(){Object.values(e).forEach(o=>{o.$reset();});}function h(){Object.values(e).forEach(o=>{o.$touch();});}function E(){Object.values(e).forEach(o=>{o.$resetAll();});}function u(o=true){return Object.values(e).map(s=>s.$extractDirtyFields(o))}function v(){Object.values(e).forEach(o=>{o.$clearExternalErrors();});}async function M(){try{let o=n.value;return {result:(await Promise.allSettled(Object.values(e).map(V=>V.$validate()))).every(V=>V.status==="fulfilled"?V.value.result===!0:!1),data:o}}catch{return {result:false,data:n.value}}}return vue.reactive({...!r&&{$instances:j,$value:n,$silentValue:l,$errors:D,$silentErrors:N},$dirty:i,$anyDirty:m,$invalid:f,$valid:S,$error:y,$pending:B,$ready:b,$edited:w,$anyEdited:a,$resetAll:E,$reset:$,$touch:h,$validate:M,$extractDirtyFields:u,$clearExternalErrors:v})}function Ft(e){function t(){let r=vue.ref(je(e.value,true)),n=vue.reactive({r$:r});return vue.watch(e,l=>{r.value=je(l,true);}),{r$:n.r$}}return {useCollectScopedValidations:t}}function _t(e){let t=e??ke,r=vue.ref({});return {useScopedRegle:(l,i,m)=>{let f=he(),{r$:S}=t(l,i,m);r.value[f]=S,vue.onScopeDispose(()=>{delete r.value[f];});function y(){delete r.value[f];}return {r$:S,$dispose:y}},instances:r}}function lt(e){let{instances:t,useScopedRegle:r}=_t(e),{useCollectScopedValidations:n}=Ft(t);return {useScopedRegle:r,useCollectScopedValidations:n}}
|
|
2
2
|
exports.InternalRuleType=He;exports.createRule=qe;exports.createScopedUseRegle=lt;exports.defineRegleConfig=Vt;exports.inferRules=at;exports.mergeRegles=je;exports.unwrapRuleParameters=ee;exports.useRegle=ke;exports.useRootStorage=Ie;
|
package/dist/regle-core.min.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {toValue,version,ref,getCurrentScope,onScopeDispose,reactive,computed,shallowRef,effectScope,isRef,toRef,unref,watch,watchEffect}from'vue';function Y(e,t=true){return e==null?true:e instanceof Date?isNaN(e.getTime()):Array.isArray(e)?t?e.length===0:false:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}var gt=Symbol("regle-rule");function Ut(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 Q(e){let t=e,r={}.toString.call(e).slice(8,-1);if(r=="Set"&&(t=new Set([...e].map(n=>Q(n)))),r=="Map"&&(t=new Map([...e].map(n=>[Q(n[0]),Q(n[1])]))),r=="Date"&&(t=new Date(e.getTime())),r=="RegExp"&&(t=RegExp(e.source,Ut(e))),r=="Array"||r=="Object"){t=Array.isArray(e)?[]:{};for(let n in e)t[n]=Q(e[n]);}return t}function ne(e){return e instanceof Date||e instanceof File?false:typeof e=="object"&&e!==null&&!Array.isArray(e)}function Be(e){if(Y(e))return false;try{let t=null;if(e instanceof Date)t=e;else if(typeof e=="string"){let r=new Date(e);if(r.toString()==="Invalid Date")return !1;t=r;}return !!t}catch{return false}}function Le(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)}var He=(r=>(r.Inline="__inline",r.Async="__async",r))(He||{});function $t(e,t){return e.some(r=>r[t])}function yt(e,t){return e.reduce((r,n)=>{let l=n[t]||[];return r.concat(l)},[])}function ee(e){try{return e.map(t=>toValue(t))}catch{return []}}function vt(e){return e.map(t=>t instanceof Function?computed(t):isRef(t)?t:toRef(()=>t))}function St(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(m=>m.trim()).filter(m=>m.length>0).length:0}function ze(e,...t){let{validator:r,type:n}=e,l=n==="__async"||r.constructor.name==="AsyncFunction";return {...{validator(f,...S){return e.validator(f,...ee(S.length?S:t))},message(f){return typeof e.message=="function"?e.message({...f,$params:ee(f?.$params?.length?f.$params:t)}):e.message},active(f){return typeof e.active=="function"?e.active({...f,$params:ee(f?.$params?.length?f.$params:t)}):e.active??true},tooltip(f){return typeof e.tooltip=="function"?e.tooltip({...f,$params:ee(f?.$params?.length?f.$params:t)}):e.tooltip??[]},exec(f){let S=e.validator(f,...ee(t)),y;return S instanceof Promise?S.then(b=>(y=b,typeof y=="object"&&"$valid"in y?y.$valid:typeof y=="boolean"?y:false)):(y=S,typeof y=="object"&&"$valid"in y?y.$valid:typeof y=="boolean"?y:false)}},_validator:e.validator,_message:e.message,_active:e.active,_tooltip:e.tooltip,_type:e.type,_message_patched:false,_tooltip_patched:false,_async:l,_params:vt(t),_brand:gt}}function qe(e){if(typeof e.validator=="function"){let r=ze(e,...[]),n=e.async??e.validator.constructor.name==="AsyncFunction";if(St(e.validator)>1){let l=function(...i){return ze(e,...i)};return l.validator=r.validator,l.message=r.message,l.active=r.active,l.tooltip=r.tooltip,l.type=r.type,l.exec=r.exec,l._validator=r.validator,l._message=r.message,l._active=r.active,l._tooltip=r.tooltip,l._type=e.type,l._message_pacthed=false,l._tooltip_pacthed=false,l._async=n,l}else return r}throw new Error("Validator must be a function")}function Ke(){let e=shallowRef(new Map),t=shallowRef(new Map),r=shallowRef(new Map),n=shallowRef(new Map),l=shallowRef(new Map),i=shallowRef(new Map);function m($){let h=t.value.get($);if(h)return h;{let E=ref({});return t.value.set($,E),E}}function f($){let h=r.value.get($);if(h)return h;{let E=ref([]);return r.value.set($,E),E}}function S($,h,E){i.value.set(`${$}-${h}`,E);}function y($,h){return i.value.get(`${$}-${h}`)}function b($,h){$&&h!=null&&i.value.delete(`${$}-${h}`);}function B($,h){n.value.set($,h);}function D($){return n.value.get($)??false}function N($,h){e.value.set($,h);}function w($,h){let E=e.value.get($);return E?a(h,E)?{valid:true}:{valid:false}:undefined}function a($,h){let E=Object.keys(h),u=Object.keys($);return u.length!==E.length||!u.every(M=>E.includes(M))?false:u.every(M=>{let o=$[M],s=h[M];return !s||!o||typeof o=="function"||typeof s=="function"||typeof o=="number"||typeof o=="boolean"?false:o._params?o._params?.every((I,V)=>{if(typeof s=="number"||typeof s=="boolean")return true;{let G=ee(s._params),J=ee(o._params);return G?.[V]===J?.[V]}}):true})}function j($){let h=l.value.get($);if(h)return h;{let E=ref(false),u=ref(true),v=ref({}),M=ref(false);return l.value.set($,{$pending:E,$valid:u,$metadata:v,$validating:M}),{$pending:E,$valid:u,$metadata:v,$validating:M}}}return getCurrentScope()&&onScopeDispose(()=>{e.value.clear(),t.value.clear(),r.value.clear(),n.value.clear(),l.value.clear(),i.value.clear();}),{addRuleDeclEntry:N,setDirtyEntry:B,checkRuleDeclEntry:w,getDirtyState:D,trySetRuleStatusRef:j,getFieldsEntry:m,getCollectionsEntry:f,getArrayStatus:y,addArrayStatus:S,deleteArrayStatus:b,arrayStatusStorage:i}}function Ve(e){return e.value instanceof Date||e.value instanceof File?false:ne(e.value)}function Je(e,t,r){let n=effectScope(),l;return e instanceof Function?l=n.run(()=>e(t,r??0)):l=e,{scope:n,unwrapped:l}}function Fe(e,t,r){let n,l=(...i)=>new Promise(m=>{clearTimeout(n),n=setTimeout(()=>{n=undefined,Promise.resolve(e.apply(this,[...i])).then(m);},t);});return l.cancel=()=>{clearTimeout(n),n=undefined;},l}function Jt(e,t){let r=String(e).split("."),n=String(t).split(".");for(let l=0;l<Math.min(r.length,n.length);l++){let i=Number(r[l]),m=Number(n[l]);if(i>m)return 1;if(m>i)return -1;if(!isNaN(i)&&isNaN(m))return 1;if(isNaN(i)&&!isNaN(m))return -1}return 0}var _e=Jt(version,"3.5.0")!==-1;function Yt(){return Math.floor(Math.random()*Date.now()).toString()}function he(){return typeof window>"u"?Yt():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function ht(e,t){return Ve(e)||ne(t.value)&&!Y(t.value)&&!Object.entries(t.value).some(([r,n])=>Oe(n)||typeof n=="function")}function bt(e,t){return !!e.value&&ne(e.value)&&"$each"in e.value||Array.isArray(t.value)}function Et(e){return !!e.value&&ne(e.value)}function Oe(e){return ne(e)&&"_validator"in e}function we(e){return typeof e.value!="function"}function Tt(e){return ne(e)&&"$fields"in e}function xt(e){return !!e&&"$rules"in e}function Ye({field:e,silent:t=false}){return Object.entries(e.$rules??{}).map(([r,n])=>t||!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 Dt({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 Ct({customMessages:e,rule:t,ruleKey:r,state:n,path:l,storage:i,$debounce:m,modifiers:f}){let S=effectScope(),y={},b,B=ref(false),{$pending:D,$valid:N,$metadata:w,$validating:a}=i.trySetRuleStatusRef(`${l}.${r}`);function j(){S=effectScope(),y=S.run(()=>{let o=ref(false),s=ref(false),I=ref(true),V=ref(false),G=ref(false),J=computed(()=>({$value:n.value,$error:s.value,$dirty:o.value,$pending:V.value,$valid:G.value,$invalid:I.value,$rule:{$valid:N.value,$invalid:!N.value,$pending:D.value},$params:R.value,...w.value})),C=computed(()=>we(t)?typeof t.value.active=="function"?t.value.active(J.value):!!t.value.active:true);function L(d){let T="",P=e?e[r]?.[d]:undefined;if(P&&(typeof P=="function"?T=P(J.value):T=P),we(t)){let X=`_${d}_patched`;P&&!t.value[X]||(typeof t.value[d]=="function"?T=t.value[d](J.value):T=t.value[d]??"");}return T}let ie=computed(()=>{let d=L("message");return Y(d)&&(d="This field is not valid"),d}),de=computed(()=>L("tooltip")),pe=computed(()=>we(t)&&t.value.type?t.value.type:r),me=computed(()=>we(t)?t.value.validator:t.value),R=computed(()=>typeof t.value=="function"?[]:ee(t.value._params??[])),c=computed(()=>`${l}.${pe.value}`);return {$active:C,$message:ie,$type:pe,$validator:me,$params:R,$path:c,$tooltip:de,$fieldValid:G,$fieldError:s,$fieldDirty:o,$fieldPending:V,$fieldInvalid:I}}),b=watch(y?.$params,()=>{(f.$autoDirty.value||f.$rewardEarly.value&&y.$fieldError.value)&&u();});}j();function $(){N.value=true,y.$fieldDirty.value&&(D.value=true);}async function h(){let o=false;try{let s=y.$validator.value,I=s(n.value,...y.$params.value),V=n.value;$();let G;if(I instanceof Promise?G=await I:G=I,n.value!==V)return !0;if(typeof G=="boolean")o=G;else {let{$valid:J,...C}=G;o=J,w.value=C;}}catch{o=false;}finally{D.value=false;}return o}let E=Fe(h,m??200);async function u(){try{a.value=!0;let o=!1;if(Oe(t.value)&&t.value._async)o=await E();else {let s=y.$validator.value,I=s(n.value,...y.$params.value);if(I instanceof Promise)console.warn('You used a async validator function on a non-async rule, please use "async await" or the "withAsync" helper');else if(I!=null)if(typeof I=="boolean")o=I;else {let{$valid:V,...G}=I;o=V,w.value=G;}}return N.value=o,o}catch{return false}finally{a.value=false;}}function v(){N.value=true,w.value={},D.value=false,a.value=false,j();}function M(){b(),S.stop(),S=effectScope();}return reactive({...y,$pending:D,$valid:N,$metadata:w,$haveAsync:B,$validating:a,$validate:u,$unwatch:M,$watch:j,$reset:v})}function Ne({state:e,rulesDef:t,customMessages:r,path:n,fieldName:l,storage:i,options:m,externalErrors:f,schemaErrors:S,schemaMode:y,onUnwatch:b,$isArray:B,initialState:D,shortcuts:N}){let w=effectScope(),a,j=[],$,h,E,u,v,M=()=>{};function o(){let g=t.value,_=i.checkRuleDeclEntry(n,g);L.value=Object.fromEntries(Object.entries(g).filter(([W])=>W.startsWith("$"))),V(),C.value=Object.fromEntries(Object.entries(t.value).filter(([W])=>!W.startsWith("$")).map(([W,x])=>{if(x){let se=toRef(()=>x);return [W,Ct({modifiers:{$autoDirty:a.$autoDirty,$rewardEarly:a.$rewardEarly},customMessages:r,rule:se,ruleKey:W,state:e,path:n,storage:i,$debounce:L.value.$debounce})]}return []}).filter(W=>!!W.length)),a.processShortcuts(),s(),_?.valid!=null&&(a.$dirty.value=i.getDirtyState(n),a.$dirty.value&&M()),i.addRuleDeclEntry(n,g);}function s(){M=a.$debounce.value?Fe(J,a.$debounce.value??a.$haveAnyAsyncRule?100:0):J;}function I(){C.value&&Object.entries(C.value).forEach(([g,_])=>{_.$unwatch();}),E(),v?.(),a.$dirty.value&&i.setDirtyEntry(n,a.$dirty.value),$?.(),h?.(),w.stop(),w=effectScope(),j.forEach(g=>g.stop()),j=[],b?.(),u?.();}function V(){C.value&&Object.entries(C.value).forEach(([g,_])=>{_.$watch();}),a=w.run(()=>{let g=ref(false),_=ref(false),W=computed(()=>g.value),x=computed(()=>L.value.$debounce),se=computed(()=>L.value.$lazy!=null?L.value.$lazy:unref(m.lazy)!=null?unref(m.lazy):false),le=computed(()=>L.value.$rewardEarly!=null?L.value.$rewardEarly:unref(m.rewardEarly)!=null?unref(m.rewardEarly):false),ge=computed(()=>L.value.$clearExternalErrorsOnChange!=null?L.value.$clearExternalErrorsOnChange:unref(m.clearExternalErrorsOnChange)!=null?unref(m.clearExternalErrorsOnChange):true),U=computed(()=>L.value.$autoDirty!=null?L.value.$autoDirty:unref(m.autoDirty)!=null?unref(m.autoDirty):!le.value),O=computed(()=>Object.entries(C.value).some(([ae,ue])=>ue.$validating)),K=computed({get:()=>e.value,set(ae){$(),e.value=ae,G();}}),$e=computed(()=>ye.value&&!Pe.value&&g.value),ot=computed(()=>Ye({field:{$error:$e.value,$externalErrors:f?.value,$schemaErrors:S?.value,$rules:C.value}})),st=computed(()=>Ye({field:{$error:true,$externalErrors:f?.value,$schemaErrors:S?.value,$rules:C.value},silent:true})),We=computed(()=>g.value?Be(D.value)&&Be(e.value)?Le(D.value).getDate()!==Le(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),ut=computed(()=>We.value),it=computed(()=>Dt({field:{$rules:C.value}})),ct=computed(()=>U.value?W.value&&!(ye.value||Pe.value):!(ye.value||Pe.value)),Pe=computed(()=>_.value||!le.value?Object.entries(C.value).some(([ae,ue])=>ue.$pending):false),ye=computed(()=>f?.value?.length||S?.value?.length?true:Me.value?false:!le.value||le.value&&_.value?Object.entries(C.value).some(([ae,ue])=>!ue.$valid):false),ft=computed(()=>l),Me=computed(()=>!!(Y(C.value)&&!y)),Rt=computed(()=>f?.value?.length||Me.value?false:g.value&&!Y(e.value)&&!O.value?y?!S?.value?.length:Object.values(C.value).every(ae=>ae.$valid&&ae.$active):false),Nt=computed(()=>Object.entries(C.value).some(([ae,ue])=>ue.$haveAsync));function Gt(){N?.fields&&Object.entries(N.fields).forEach(([ae,ue])=>{let pt=effectScope();dt[ae]=pt.run(()=>{let mt=ref();return watchEffect(()=>{mt.value=ue(reactive({$dirty:g,$externalErrors:f?.value??[],$value:e,$silentValue:K,$rules:C,$error:$e,$pending:Pe,$invalid:ye,$valid:Rt,$errors:ot,$ready:ct,$silentErrors:st,$anyDirty:W,$tooltips:it,$name:ft,$inactive:Me,$edited:We,$anyEdited:ut}));}),mt}),j.push(pt);});}let dt={};return watch(ye,ae=>{ae||(_.value=false);}),{$error:$e,$pending:Pe,$invalid:ye,$valid:Rt,$debounce:x,$lazy:se,$errors:ot,$ready:ct,$silentErrors:st,$rewardEarly:le,$autoDirty:U,$clearExternalErrorsOnChange:ge,$anyDirty:W,$edited:We,$anyEdited:ut,$name:ft,$haveAnyAsyncRule:Nt,$shortcuts:dt,$validating:O,$tooltips:it,$dirty:g,triggerPunishment:_,processShortcuts:Gt,$silentValue:K,$inactive:Me}}),G(),E=watch(a.$dirty,g=>{i.setDirtyEntry(n,g),Object.values(C.value).forEach(_=>{_.$fieldDirty=g;});}),v=watch([a.$error,a.$valid,a.$invalid,a.$pending],()=>{Object.values(C.value).forEach(g=>{g.$fieldError=a.$error.value,g.$fieldInvalid=a.$invalid.value,g.$fieldPending=a.$pending.value,g.$fieldValid=a.$valid.value;});}),h=watch(a.$valid,g=>{a.$rewardEarly.value&&g&&(a.triggerPunishment.value=false);}),u=watch(a.$haveAnyAsyncRule,s);}function G(){$=watch(e,()=>{a.$autoDirty.value&&(a.$dirty.value||(a.$dirty.value=true)),t.value instanceof Function&&o(),(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&M(),a.$rewardEarly.value!==true&&a.$clearExternalErrorsOnChange.value&&c();},{deep:B?true:_e?1:true,flush:"post"});}function J(){Object.values(C.value).forEach(g=>{g.$validate();});}let C=ref({}),L=ref({});o();function ie(){c(),a.$dirty.value=false,a.triggerPunishment.value=false,i.setDirtyEntry(n,false),D.value=ne(e.value)?Q(e.value):Array.isArray(e.value)?[...e.value]:e.value,Object.entries(C.value).forEach(([g,_])=>{_.$reset();}),!a.$lazy.value&&a.$autoDirty.value&&Object.values(C.value).forEach(g=>g.$validate());}function de(g=true,_=false){a.$dirty.value||(a.$dirty.value=true),_&&g?(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&M():g&&M();}async function pe(){try{let g=e.value;if(a.triggerPunishment.value=!0,!a.$dirty.value)a.$dirty.value=!0;else if(a.$autoDirty.value&&a.$dirty.value&&!a.$pending.value)return {result:!a.$error.value,data:g};return y?{result:!S?.value?.length,data:g}:Y(C.value)?{result:!0,data:g}:{result:(await Promise.allSettled(Object.entries(C.value).map(([x,se])=>se.$validate()))).every(x=>x.status==="fulfilled"?x.value===!0:!1),data:g}}catch{return {result:false,data:e.value}}}function me(){I(),e.value=Q(D),ie();}function R(g=true){return a.$dirty.value?e.value:g?{_null:true}:null}function c(){f?.value?.length&&(f.value=[]);}!a.$lazy.value&&!a.$dirty.value&&a.$autoDirty.value&&M();let{$shortcuts:d,$validating:T,$autoDirty:P,$rewardEarly:X,$clearExternalErrorsOnChange:p,$haveAnyAsyncRule:A,$debounce:H,$lazy:Z,triggerPunishment:z,...oe}=a;return reactive({...oe,$externalErrors:f,$value:e,$rules:C,...d,$reset:ie,$touch:de,$validate:pe,$unwatch:I,$watch:V,$resetAll:me,$extractDirtyFields:R,$clearExternalErrors:c})}function Ze({$id:e,path:t,index:r,options:n,storage:l,stateValue:i,customMessages:m,rules:f,externalErrors:S,schemaErrors:y,initialState:b,shortcuts:B,fieldName:D,schemaMode:N}){let w=f.$key?f.$key:he(),a=`${t}.${String(w)}`;typeof i.value=="object"&&i.value!=null&&(i.value.$id?a=`${t}.${i.value.$id}`:Object.defineProperties(i.value,{$id:{value:w,enumerable:false,configurable:false,writable:false}}));let j=toRef(S?.value??[],r),$=computed(()=>y?.value?.[r]),h=Te({state:i,rulesDef:toRef(()=>f),customMessages:m,path:a,storage:l,options:n,externalErrors:j,schemaErrors:$,initialState:b,shortcuts:B,fieldName:D,schemaMode:N});if(h){let E=i.value?.$id;h.$id=E??String(w),l.addArrayStatus(e,h.$id,h);}return h}function wt({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:i,externalErrors:m,schemaErrors:f,schemaMode:S,initialState:y,shortcuts:b,fieldName:B}){let D=effectScope(),N,w=effectScope(),a,j=[];if(!Array.isArray(e.value)&&!t.value.$each)return;let $=ref(),h=ref(e.value),E,u=ref({}),v=l.getCollectionsEntry(n);a=w.run(()=>({isPrimitiveArray:computed(()=>Array.isArray(e.value)&&e.value.length?e.value.every(c=>typeof c!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(c=>Oe(c)||typeof c=="function"):false)})),M(),I();function M(){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)),h.value=u.value.$value,Array.isArray(e.value)&&!a.isPrimitiveArray.value?v.value=e.value.filter(R=>typeof R=="object").map((R,c)=>{let{scope:d,unwrapped:T}=Je(t.value.$each,toRef(()=>R),c);d&&j.push(d);let P=toRef(y.value??[],c),X=toRef(m?.value??{},"$each"),p=computed(()=>f?.value?.$each),A=Ze({$id:$.value,path:n,customMessages:r,rules:T??{},stateValue:toRef(()=>R),index:c,options:i,storage:l,externalErrors:X,schemaErrors:p,initialState:P,shortcuts:b,fieldName:B,schemaMode:S});return A||null}).filter(R=>!!R):v.value=[],u.value=Ne({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:i,externalErrors:toRef(m?.value??{},"$self"),schemaErrors:computed(()=>f?.value?.$self),$isArray:true,initialState:y,shortcuts:b,fieldName:B,schemaMode:S});}function o(){if(Array.isArray(e.value)&&!a.isPrimitiveArray.value){let R=Q(v.value);v.value=e.value.filter(c=>typeof c=="object").map((c,d)=>{let T=toRef(()=>c);if(c.$id&&v.value.find(P=>P.$id===c.$id)){let P=l.getArrayStatus($.value,c.$id);return P?(P.$value=T,P):null}else {let{scope:P,unwrapped:X}=Je(t.value.$each,T,d);P&&j.push(P);let p=toRef(m?.value??{},"$each"),A=computed(()=>f?.value?.$each??[]),H=Ze({$id:$.value,path:n,customMessages:r,rules:X??{},stateValue:T,index:d,options:i,storage:l,externalErrors:p,schemaErrors:A,initialState:toRef(y.value??[],d),shortcuts:b,fieldName:B,schemaMode:S});return H||null}}).filter(c=>!!c),R.filter(c=>!e.value?.find(d=>c.$id===d.$id)).forEach((c,d)=>{l.deleteArrayStatus($.value,d.toString());});}else v.value=[];}function s(){E=watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?M():o();},{deep:_e?1:true,flush:"pre"});}function I(){s(),D=effectScope(),N=D.run(()=>{let R=computed({get:()=>e.value,set(x){E(),e.value=x,s();}}),c=computed(()=>u.value.$dirty&&(!v.value.length||v.value.every(x=>x.$dirty))),d=computed(()=>u.value.$anyDirty||v.value.some(x=>x.$anyDirty)),T=computed(()=>u.value.$invalid||v.value.some(x=>x.$invalid)),P=computed(()=>(Y(u.value.$rules)?true:u.value.$valid)&&(!v.value.length||v.value.every(x=>x.$valid))),X=computed(()=>u.value.$error||v.value.some(x=>x.$error)),p=computed(()=>!(T.value||A.value)),A=computed(()=>u.value.$pending||v.value.some(x=>x.$pending)),H=computed(()=>!!v.value.length&&v.value.every(x=>x.$edited)),Z=computed(()=>u.value.$anyEdited||v.value.some(x=>x.$anyEdited)),z=computed(()=>({$self:u.value.$errors,$each:v.value.map(x=>x.$errors)})),oe=computed(()=>({$self:u.value.$silentErrors,$each:v.value.map(x=>x.$silentErrors)})),g=computed(()=>B);function _(){b?.collections&&Object.entries(b?.collections).forEach(([x,se])=>{let le=effectScope();W[x]=le.run(()=>{let ge=ref();return watchEffect(()=>{ge.value=se(reactive({$dirty:c,$error:X,$silentValue:R,$pending:A,$invalid:T,$valid:P,$errors:z,$ready:p,$silentErrors:oe,$anyDirty:d,$name:g,$each:v,$self:u,$value:e,$edited:H,$anyEdited:Z}));}),ge}),j.push(le);});}let W={};return _(),{$dirty:c,$anyDirty:d,$invalid:T,$valid:P,$error:X,$pending:A,$errors:z,$silentErrors:oe,$ready:p,$name:g,$shortcuts:W,$silentValue:R,$edited:H,$anyEdited:Z}}),a.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 V(){E&&E(),u.value&&u.value.$unwatch(),v.value&&v.value.forEach(R=>{"$dirty"in R&&R.$unwatch();}),D.stop(),D=effectScope(),w.stop(),w=effectScope(true),j.forEach(R=>R.stop()),j=[];}function G(R=true,c=false){u.value.$touch(R,c),v.value.forEach(d=>{d.$touch(R,c);});}function J(){u.value.$reset(),v.value.forEach(R=>{R.$reset();});}async function C(){let R=e.value;try{return {result:(await Promise.allSettled([u.value.$validate(),...v.value.map(T=>T.$validate())])).every(T=>T.status==="fulfilled"?T.value.result===!0:!1),data:R}}catch{return {result:false,data:R}}}function L(){u.value.$clearExternalErrors(),v.value.forEach(R=>{R.$clearExternalErrors();});}function ie(R=true){let c=v.value.map(d=>{if(Tt(d))return d.$extractDirtyFields(R)});return R&&c.every(d=>Y(d))&&(c=[]),c}function de(){V(),e.value=Q(y.value),J();}let{$shortcuts:pe,...me}=N;return reactive({$self:u,...me,...pe,$each:v,$value:e,$validate:C,$unwatch:V,$watch:I,$touch:G,$reset:J,$resetAll:de,$extractDirtyFields:ie,$clearExternalErrors:L})}function Ue({rulesDef:e,state:t,path:r="",rootRules:n,externalErrors:l,schemaErrors:i,rootSchemaErrors:m,validationGroups:f,initialState:S,fieldName:y,...b}){let B=effectScope(),D,N=[],w=null,a=null,j=null,$=null;async function E(R=true){let c=Object.entries(e.value),d=Object.fromEntries(c.filter(([p,A])=>!!A).map(([p,A])=>{if(A){let H=toRef(t.value??{},p),Z=toRef(()=>A),z=toRef(l?.value??{},p),oe=computed(()=>i?.value?.[p]),g=toRef(S?.value??{},p);return [p,Te({state:H,rulesDef:Z,path:r?`${r}.${p}`:p,externalErrors:z,schemaErrors:oe,initialState:g,fieldName:p,...b})]}return []})),T=Object.fromEntries(Object.entries(unref(l)??{}).filter(([p,A])=>!(p in e.value)&&!!A).map(([p])=>{let A=toRef(t.value??{},p),H=toRef(l?.value??{},p),Z=computed(()=>i?.value?.[p]),z=toRef(S?.value??{},p);return [p,Te({state:A,rulesDef:computed(()=>({})),path:r?`${r}.${p}`:p,externalErrors:H,schemaErrors:Z,initialState:z,fieldName:p,...b})]})),P=Object.fromEntries(Object.entries(unref(i)??{}).map(([p])=>{let A=toRef(t.value??{},p),H=toRef(l?.value??{},p),Z=computed(()=>i?.value?.[p]),z=toRef(S?.value??{},p);return [p,Te({state:A,rulesDef:computed(()=>({})),path:r?`${r}.${p}`:p,externalErrors:H,schemaErrors:Z,initialState:z,fieldName:p,...b})]})),X=Object.fromEntries(Object.entries(t.value??{}).filter(([p])=>!(p in e.value)&&!(p in(T??{}))&&!(p in(P??{}))).map(([p])=>{let A=toRef(t.value??{},p),H=toRef(l?.value??{},p),Z=computed(()=>i?.value?.[p]),z=toRef(S?.value??{},p);return [p,Te({state:A,rulesDef:computed(()=>({})),path:r?`${r}.${p}`:p,externalErrors:H,schemaErrors:Z,initialState:z,fieldName:p,...b})]}));u.value={...d,...T,...P,...X},R&&o();}let u=b.storage.getFieldsEntry(r);E();function v(){l&&(j=watch(l,()=>{s(),E();},{deep:true}));}function M(){$=watch(t,()=>{s(),E(),G(true,true);},{flush:"sync"});}function o(){n&&(w?.(),w=watch(n,()=>{s(),E();},{deep:true,flush:"post"}),v()),m&&(a?.(),a=watch(m,()=>{s(),E();},{deep:true,flush:"post"})),M(),D=B.run(()=>{let R=computed({get:()=>t.value,set(U){s(),t.value=U,E();}}),c=computed(()=>!!Object.entries(u.value).length&&Object.entries(u.value).every(([U,O])=>O?.$dirty)),d=computed(()=>Object.entries(u.value).some(([U,O])=>O?.$anyDirty)),T=computed(()=>Object.entries(u.value).some(([U,O])=>O?.$invalid)),P=computed(()=>{let U=Object.entries(u.value).filter(([O,K])=>xt(K)?!K.$inactive:true);return U.length?U.every(([O,K])=>K?.$valid):false}),X=computed(()=>d.value&&!z.value&&T.value),p=computed(()=>unref(b.options.rewardEarly)!=null?unref(b.options.rewardEarly):false),A=computed(()=>unref(b.options.autoDirty)!=null?unref(b.options.autoDirty):!p.value),H=computed(()=>A.value?d.value&&!(T.value||z.value):!(T.value||z.value)),Z=ref(false),z=computed(()=>Z.value||Object.entries(u.value).some(([U,O])=>O?.$pending)),oe=computed(()=>Object.fromEntries(Object.entries(u.value).map(([U,O])=>[U,O?.$errors]))),g=computed(()=>Object.fromEntries(Object.entries(u.value).map(([U,O])=>[U,O?.$silentErrors]))),_=computed(()=>!!Object.entries(u.value).length&&Object.entries(u.value).every(([U,O])=>O?.$edited)),W=computed(()=>Object.entries(u.value).some(([U,O])=>O?.$anyEdited)),x=computed(()=>y);function se(){b.shortcuts?.nested&&Object.entries(b.shortcuts.nested).forEach(([U,O])=>{let K=effectScope();ge[U]=K.run(()=>{let $e=ref();return watchEffect(()=>{$e.value=O(reactive({$dirty:c,$value:t,$silentValue:R,$error:X,$pending:z,$invalid:T,$valid:P,$ready:H,$anyDirty:d,$name:x,$silentErrors:g,$errors:oe,$fields:u,$edited:_,$anyEdited:W}));}),$e}),N.push(K);});}let le=computed({get:()=>f?Object.fromEntries(Object.entries(f?.(u.value)??{}).map(([U,O])=>O.length?[U,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$valid"].map(K=>[K,$t(O,K)])),...Object.fromEntries(["$errors","$silentErrors"].map(K=>[K,yt(O,K)]))}]:[])):{},set(){}}),ge={};return se(),{$dirty:c,$anyDirty:d,$invalid:T,$valid:P,$error:X,$pending:z,$errors:oe,$silentErrors:g,$ready:H,$name:x,$shortcuts:ge,$groups:le,$silentValue:R,$edited:_,$anyEdited:W,$localPending:Z}});}function s(){w?.(),j?.(),$?.(),a?.(),N=[],D={},u.value&&Object.entries(u.value).forEach(([R,c])=>{c.$unwatch();});}function I(){Object.entries(u.value).forEach(([R,c])=>{c.$clearExternalErrors();});}function V(){j?.(),Object.values(u.value).forEach(R=>{R.$reset();}),S.value={...Q(t.value)},v();}function G(R=true,c=false){Object.values(u.value).forEach(d=>{d.$touch(R,c);});}async function J(){s(),t.value=Q({...S.value??{}}),V(),E();}function C(R){return R.filter(([c,d])=>ne(d)?!(d&&typeof d=="object"&&"_null"in d)&&!Y(d):Array.isArray(d)?d.length:true)}function L(R=true){let c=Object.entries(u.value).map(([d,T])=>[d,T.$extractDirtyFields(R)]);return R&&(c=C(c)),Object.fromEntries(c)}async function ie(){try{if(b.schemaMode)return b.onValidate?(G(!1),D.$localPending.value=!0,b.onValidate()):{result:!1,data:t.value};{let R=t.value;return {result:(await Promise.allSettled(Object.values(u.value).map(T=>T.$validate()))).every(T=>T.status==="fulfilled"?T.value.result===!0:!1),data:R}}}catch{return {result:false,data:t.value}}finally{D.$localPending.value=false;}}let{$shortcuts:de,$localPending:pe,...me}=D;return reactive({...me,...de,$fields:u,$value:t,$resetAll:J,$reset:V,$touch:G,$validate:ie,$unwatch:s,$watch:o,$clearExternalErrors:I,$extractDirtyFields:L})}function Te({rulesDef:e,...t}){if(bt(e,t.state))return wt({rulesDef:e,...t});if(ht(t.state,e)){if(Ve(t.state))return Ue({rulesDef:e,...t});{let n=effectScope().run(()=>{let m=toRef(t.state.value?t.state:ref({}));return watch(()=>t.state.value,f=>{m.value=f;},{deep:true}),watch(m,f=>{t.state.value=f;},{deep:true}),{fakeState:m}}),{state:l,...i}=t;return Ue({rulesDef:e,...i,state:n.fakeState})}}else if(Et(e))return Ne({rulesDef:e,...t})}function Ie({initialState:e,options:t,scopeRules:r,state:n,customRules:l,shortcuts:i,schemaErrors:m,schemaMode:f=false,onValidate:S}){let y=Ke(),b=ref();return b.value=Ue({rootRules:r,rulesDef:r,state:n,customMessages:l?.(),storage:y,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:i,fieldName:"root",path:"",schemaErrors:m,rootSchemaErrors:m,schemaMode:f,onValidate:S}),getCurrentScope()&&onScopeDispose(()=>{b.value?.$unwatch();}),reactive({regle:b})}function rt(e,t,r){let n={autoDirty:t?.autoDirty,lazy:t?.lazy,rewardEarly:t?.rewardEarly,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange};function l(i,m,f){let S=isRef(m)?m:computed(typeof m=="function"?m:()=>m),y={...n,...f},b=isRef(i)?i:ref(i),B=ref({...Q(b.value)});return {r$:Ie({scopeRules:S,state:b,options:y,initialState:B,customRules:e,shortcuts:r}).regle}}return l}var ke=rt();function nt(){function e(t,r){return r}return e}var at=nt();function Vt({rules:e,modifiers:t,shortcuts:r}){let n=rt(e,t,r),l=nt();return {useRegle:n,inferRules:l}}function je(e,t){let r=t??false,n=computed({get:()=>Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$value])),set:o=>{typeof o=="object"&&Object.entries(o).forEach(([s,I])=>e[s].$value=I);}}),l=computed({get:()=>Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$silentValue])),set:o=>{typeof o=="object"&&Object.entries(o).forEach(([s,I])=>e[s].$silentValue=I);}}),i=computed(()=>Object.entries(e).every(([o,s])=>s?.$dirty)),m=computed(()=>Object.entries(e).some(([o,s])=>s?.$anyDirty)),f=computed(()=>Object.entries(e).some(([o,s])=>s?.$invalid)),S=computed(()=>Object.entries(e).every(([o,s])=>s?.$invalid)),y=computed(()=>Object.entries(e).some(([o,s])=>s?.$error)),b=computed(()=>Object.entries(e).every(([o,s])=>s?.$ready)),B=computed(()=>Object.entries(e).some(([o,s])=>s?.$pending)),D=computed(()=>Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$errors]))),N=computed(()=>Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$silentErrors]))),w=computed(()=>Object.entries(e).every(([o,s])=>s?.$edited)),a=computed(()=>Object.entries(e).some(([o,s])=>s?.$anyEdited)),j=computed(()=>e);function $(){Object.values(e).forEach(o=>{o.$reset();});}function h(){Object.values(e).forEach(o=>{o.$touch();});}function E(){Object.values(e).forEach(o=>{o.$resetAll();});}function u(o=true){return Object.values(e).map(s=>s.$extractDirtyFields(o))}function v(){Object.values(e).forEach(o=>{o.$clearExternalErrors();});}async function M(){try{let o=n.value;return {result:(await Promise.allSettled(Object.values(e).map(V=>V.$validate()))).every(V=>V.status==="fulfilled"?V.value.result===!0:!1),data:o}}catch{return {result:false,data:n.value}}}return reactive({...!r&&{$instances:j,$value:n,$silentValue:l,$errors:D,$silentErrors:N},$dirty:i,$anyDirty:m,$invalid:f,$valid:S,$error:y,$pending:B,$ready:b,$edited:w,$anyEdited:a,$resetAll:E,$reset:$,$touch:h,$validate:M,$extractDirtyFields:u,$clearExternalErrors:v})}function Ft(e){function t(){let r=ref(je(e.value,true)),n=reactive({r$:r});return watch(e,l=>{r.value=je(l,true);}),{r$:n.r$}}return {useCollectScopedValidations:t}}function _t(e){let t=e??ke,r=ref({});return {useScopedRegle:(l,i,m)=>{let f=he(),{r$:S}=t(l,i,m);r.value[f]=S,onScopeDispose(()=>{delete r.value[f];});function y(){delete r.value[f];}return {r$:S,$dispose:y}},instances:r}}function lt(e){let{instances:t,useScopedRegle:r}=_t(e),{useCollectScopedValidations:n}=Ft(t);return {useScopedRegle:r,useCollectScopedValidations:n}}
|
|
1
|
+
import {toValue,version,ref,getCurrentScope,onScopeDispose,reactive,computed,shallowRef,effectScope,isRef,toRef,unref,watch,watchEffect}from'vue';function Y(e,t=true){return e==null?true:e instanceof Date?isNaN(e.getTime()):Array.isArray(e)?t?e.length===0:false:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}var gt=Symbol("regle-rule");function Ut(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 Q(e){let t=e,r={}.toString.call(e).slice(8,-1);if(r=="Set"&&(t=new Set([...e].map(n=>Q(n)))),r=="Map"&&(t=new Map([...e].map(n=>[Q(n[0]),Q(n[1])]))),r=="Date"&&(t=new Date(e.getTime())),r=="RegExp"&&(t=RegExp(e.source,Ut(e))),r=="Array"||r=="Object"){t=Array.isArray(e)?[]:{};for(let n in e)t[n]=Q(e[n]);}return t}function ne(e){return e&&(e instanceof Date||e.constructor.name=="File"||e.constructor.name=="FileList")?false:typeof e=="object"&&e!==null&&!Array.isArray(e)}function Be(e){if(Y(e))return false;try{let t=null;if(e instanceof Date)t=e;else if(typeof e=="string"){let r=new Date(e);if(r.toString()==="Invalid Date")return !1;t=r;}return !!t}catch{return false}}function Le(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)}var He=(r=>(r.Inline="__inline",r.Async="__async",r))(He||{});function $t(e,t){return e.some(r=>r[t])}function yt(e,t){return e.reduce((r,n)=>{let l=n[t]||[];return r.concat(l)},[])}function ee(e){try{return e.map(t=>toValue(t))}catch{return []}}function vt(e){return e.map(t=>t instanceof Function?computed(t):isRef(t)?t:toRef(()=>t))}function St(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(m=>m.trim()).filter(m=>m.length>0).length:0}function ze(e,...t){let{validator:r,type:n}=e,l=n==="__async"||r.constructor.name==="AsyncFunction";return {...{validator(f,...S){return e.validator(f,...ee(S.length?S:t))},message(f){return typeof e.message=="function"?e.message({...f,$params:ee(f?.$params?.length?f.$params:t)}):e.message},active(f){return typeof e.active=="function"?e.active({...f,$params:ee(f?.$params?.length?f.$params:t)}):e.active??true},tooltip(f){return typeof e.tooltip=="function"?e.tooltip({...f,$params:ee(f?.$params?.length?f.$params:t)}):e.tooltip??[]},exec(f){let S=e.validator(f,...ee(t)),y;return S instanceof Promise?S.then(b=>(y=b,typeof y=="object"&&"$valid"in y?y.$valid:typeof y=="boolean"?y:false)):(y=S,typeof y=="object"&&"$valid"in y?y.$valid:typeof y=="boolean"?y:false)}},_validator:e.validator,_message:e.message,_active:e.active,_tooltip:e.tooltip,_type:e.type,_message_patched:false,_tooltip_patched:false,_async:l,_params:vt(t),_brand:gt}}function qe(e){if(typeof e.validator=="function"){let r=ze(e,...[]),n=e.async??e.validator.constructor.name==="AsyncFunction";if(St(e.validator)>1){let l=function(...i){return ze(e,...i)};return l.validator=r.validator,l.message=r.message,l.active=r.active,l.tooltip=r.tooltip,l.type=r.type,l.exec=r.exec,l._validator=r.validator,l._message=r.message,l._active=r.active,l._tooltip=r.tooltip,l._type=e.type,l._message_pacthed=false,l._tooltip_pacthed=false,l._async=n,l}else return r}throw new Error("Validator must be a function")}function Ke(){let e=shallowRef(new Map),t=shallowRef(new Map),r=shallowRef(new Map),n=shallowRef(new Map),l=shallowRef(new Map),i=shallowRef(new Map);function m($){let h=t.value.get($);if(h)return h;{let E=ref({});return t.value.set($,E),E}}function f($){let h=r.value.get($);if(h)return h;{let E=ref([]);return r.value.set($,E),E}}function S($,h,E){i.value.set(`${$}-${h}`,E);}function y($,h){return i.value.get(`${$}-${h}`)}function b($,h){$&&h!=null&&i.value.delete(`${$}-${h}`);}function B($,h){n.value.set($,h);}function D($){return n.value.get($)??false}function N($,h){e.value.set($,h);}function w($,h){let E=e.value.get($);return E?a(h,E)?{valid:true}:{valid:false}:undefined}function a($,h){let E=Object.keys(h),u=Object.keys($);return u.length!==E.length||!u.every(M=>E.includes(M))?false:u.every(M=>{let o=$[M],s=h[M];return !s||!o||typeof o=="function"||typeof s=="function"||typeof o=="number"||typeof o=="boolean"?false:o._params?o._params?.every((I,V)=>{if(typeof s=="number"||typeof s=="boolean")return true;{let G=ee(s._params),J=ee(o._params);return G?.[V]===J?.[V]}}):true})}function j($){let h=l.value.get($);if(h)return h;{let E=ref(false),u=ref(true),v=ref({}),M=ref(false);return l.value.set($,{$pending:E,$valid:u,$metadata:v,$validating:M}),{$pending:E,$valid:u,$metadata:v,$validating:M}}}return getCurrentScope()&&onScopeDispose(()=>{e.value.clear(),t.value.clear(),r.value.clear(),n.value.clear(),l.value.clear(),i.value.clear();}),{addRuleDeclEntry:N,setDirtyEntry:B,checkRuleDeclEntry:w,getDirtyState:D,trySetRuleStatusRef:j,getFieldsEntry:m,getCollectionsEntry:f,getArrayStatus:y,addArrayStatus:S,deleteArrayStatus:b,arrayStatusStorage:i}}function Ve(e){return ne(e.value)}function Je(e,t,r){let n=effectScope(),l;return e instanceof Function?l=n.run(()=>e(t,r??0)):l=e,{scope:n,unwrapped:l}}function Fe(e,t,r){let n,l=(...i)=>new Promise(m=>{clearTimeout(n),n=setTimeout(()=>{n=undefined,Promise.resolve(e.apply(this,[...i])).then(m);},t);});return l.cancel=()=>{clearTimeout(n),n=undefined;},l}function Jt(e,t){let r=String(e).split("."),n=String(t).split(".");for(let l=0;l<Math.min(r.length,n.length);l++){let i=Number(r[l]),m=Number(n[l]);if(i>m)return 1;if(m>i)return -1;if(!isNaN(i)&&isNaN(m))return 1;if(isNaN(i)&&!isNaN(m))return -1}return 0}var _e=Jt(version,"3.5.0")!==-1;function Yt(){return Math.floor(Math.random()*Date.now()).toString()}function he(){return typeof window>"u"?Yt():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function ht(e,t){return Ve(e)||ne(t.value)&&!Y(t.value)&&!Object.entries(t.value).some(([r,n])=>Oe(n)||typeof n=="function")}function bt(e,t){return !!e.value&&ne(e.value)&&"$each"in e.value||Array.isArray(t.value)}function Et(e){return !!e.value&&ne(e.value)}function Oe(e){return ne(e)&&"_validator"in e}function we(e){return typeof e.value!="function"}function Tt(e){return ne(e)&&"$fields"in e}function xt(e){return !!e&&"$rules"in e}function Ye({field:e,silent:t=false}){return Object.entries(e.$rules??{}).map(([r,n])=>t||!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 Dt({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 Ct({customMessages:e,rule:t,ruleKey:r,state:n,path:l,storage:i,$debounce:m,modifiers:f}){let S=effectScope(),y={},b,B=ref(false),{$pending:D,$valid:N,$metadata:w,$validating:a}=i.trySetRuleStatusRef(`${l}.${r}`);function j(){S=effectScope(),y=S.run(()=>{let o=ref(false),s=ref(false),I=ref(true),V=ref(false),G=ref(false),J=computed(()=>({$value:n.value,$error:s.value,$dirty:o.value,$pending:V.value,$valid:G.value,$invalid:I.value,$rule:{$valid:N.value,$invalid:!N.value,$pending:D.value},$params:R.value,...w.value})),C=computed(()=>we(t)?typeof t.value.active=="function"?t.value.active(J.value):!!t.value.active:true);function L(d){let T="",P=e?e[r]?.[d]:undefined;if(P&&(typeof P=="function"?T=P(J.value):T=P),we(t)){let X=`_${d}_patched`;P&&!t.value[X]||(typeof t.value[d]=="function"?T=t.value[d](J.value):T=t.value[d]??"");}return T}let ie=computed(()=>{let d=L("message");return Y(d)&&(d="This field is not valid"),d}),de=computed(()=>L("tooltip")),pe=computed(()=>we(t)&&t.value.type?t.value.type:r),me=computed(()=>we(t)?t.value.validator:t.value),R=computed(()=>typeof t.value=="function"?[]:ee(t.value._params??[])),c=computed(()=>`${l}.${pe.value}`);return {$active:C,$message:ie,$type:pe,$validator:me,$params:R,$path:c,$tooltip:de,$fieldValid:G,$fieldError:s,$fieldDirty:o,$fieldPending:V,$fieldInvalid:I}}),b=watch(y?.$params,()=>{(f.$autoDirty.value||f.$rewardEarly.value&&y.$fieldError.value)&&u();});}j();function $(){N.value=true,y.$fieldDirty.value&&(D.value=true);}async function h(){let o=false;try{let s=y.$validator.value,I=s(n.value,...y.$params.value),V=n.value;$();let G;if(I instanceof Promise?G=await I:G=I,n.value!==V)return !0;if(typeof G=="boolean")o=G;else {let{$valid:J,...C}=G;o=J,w.value=C;}}catch{o=false;}finally{D.value=false;}return o}let E=Fe(h,m??200);async function u(){try{a.value=!0;let o=!1;if(Oe(t.value)&&t.value._async)o=await E();else {let s=y.$validator.value,I=s(n.value,...y.$params.value);if(I instanceof Promise)console.warn('You used a async validator function on a non-async rule, please use "async await" or the "withAsync" helper');else if(I!=null)if(typeof I=="boolean")o=I;else {let{$valid:V,...G}=I;o=V,w.value=G;}}return N.value=o,o}catch{return false}finally{a.value=false;}}function v(){N.value=true,w.value={},D.value=false,a.value=false,j();}function M(){b(),S.stop(),S=effectScope();}return reactive({...y,$pending:D,$valid:N,$metadata:w,$haveAsync:B,$validating:a,$validate:u,$unwatch:M,$watch:j,$reset:v})}function Ne({state:e,rulesDef:t,customMessages:r,path:n,fieldName:l,storage:i,options:m,externalErrors:f,schemaErrors:S,schemaMode:y,onUnwatch:b,$isArray:B,initialState:D,shortcuts:N}){let w=effectScope(),a,j=[],$,h,E,u,v,M=()=>{};function o(){let g=t.value,_=i.checkRuleDeclEntry(n,g);L.value=Object.fromEntries(Object.entries(g).filter(([W])=>W.startsWith("$"))),V(),C.value=Object.fromEntries(Object.entries(t.value).filter(([W])=>!W.startsWith("$")).map(([W,x])=>{if(x){let se=toRef(()=>x);return [W,Ct({modifiers:{$autoDirty:a.$autoDirty,$rewardEarly:a.$rewardEarly},customMessages:r,rule:se,ruleKey:W,state:e,path:n,storage:i,$debounce:L.value.$debounce})]}return []}).filter(W=>!!W.length)),a.processShortcuts(),s(),_?.valid!=null&&(a.$dirty.value=i.getDirtyState(n),a.$dirty.value&&M()),i.addRuleDeclEntry(n,g);}function s(){M=a.$debounce.value?Fe(J,a.$debounce.value??a.$haveAnyAsyncRule?100:0):J;}function I(){C.value&&Object.entries(C.value).forEach(([g,_])=>{_.$unwatch();}),E(),v?.(),a.$dirty.value&&i.setDirtyEntry(n,a.$dirty.value),$?.(),h?.(),w.stop(),w=effectScope(),j.forEach(g=>g.stop()),j=[],b?.(),u?.();}function V(){C.value&&Object.entries(C.value).forEach(([g,_])=>{_.$watch();}),a=w.run(()=>{let g=ref(false),_=ref(false),W=computed(()=>g.value),x=computed(()=>L.value.$debounce),se=computed(()=>L.value.$lazy!=null?L.value.$lazy:unref(m.lazy)!=null?unref(m.lazy):false),le=computed(()=>L.value.$rewardEarly!=null?L.value.$rewardEarly:unref(m.rewardEarly)!=null?unref(m.rewardEarly):false),ge=computed(()=>L.value.$clearExternalErrorsOnChange!=null?L.value.$clearExternalErrorsOnChange:unref(m.clearExternalErrorsOnChange)!=null?unref(m.clearExternalErrorsOnChange):true),U=computed(()=>L.value.$autoDirty!=null?L.value.$autoDirty:unref(m.autoDirty)!=null?unref(m.autoDirty):!le.value),O=computed(()=>Object.entries(C.value).some(([ae,ue])=>ue.$validating)),K=computed({get:()=>e.value,set(ae){$(),e.value=ae,G();}}),$e=computed(()=>ye.value&&!Pe.value&&g.value),ot=computed(()=>Ye({field:{$error:$e.value,$externalErrors:f?.value,$schemaErrors:S?.value,$rules:C.value}})),st=computed(()=>Ye({field:{$error:true,$externalErrors:f?.value,$schemaErrors:S?.value,$rules:C.value},silent:true})),We=computed(()=>g.value?Be(D.value)&&Be(e.value)?Le(D.value).getDate()!==Le(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),ut=computed(()=>We.value),it=computed(()=>Dt({field:{$rules:C.value}})),ct=computed(()=>U.value?W.value&&!(ye.value||Pe.value):!(ye.value||Pe.value)),Pe=computed(()=>_.value||!le.value?Object.entries(C.value).some(([ae,ue])=>ue.$pending):false),ye=computed(()=>f?.value?.length||S?.value?.length?true:Me.value?false:!le.value||le.value&&_.value?Object.entries(C.value).some(([ae,ue])=>!ue.$valid):false),ft=computed(()=>l),Me=computed(()=>!!(Y(C.value)&&!y)),Rt=computed(()=>f?.value?.length||Me.value?false:g.value&&!Y(e.value)&&!O.value?y?!S?.value?.length:Object.values(C.value).every(ae=>ae.$valid&&ae.$active):false),Nt=computed(()=>Object.entries(C.value).some(([ae,ue])=>ue.$haveAsync));function Gt(){N?.fields&&Object.entries(N.fields).forEach(([ae,ue])=>{let pt=effectScope();dt[ae]=pt.run(()=>{let mt=ref();return watchEffect(()=>{mt.value=ue(reactive({$dirty:g,$externalErrors:f?.value??[],$value:e,$silentValue:K,$rules:C,$error:$e,$pending:Pe,$invalid:ye,$valid:Rt,$errors:ot,$ready:ct,$silentErrors:st,$anyDirty:W,$tooltips:it,$name:ft,$inactive:Me,$edited:We,$anyEdited:ut}));}),mt}),j.push(pt);});}let dt={};return watch(ye,ae=>{ae||(_.value=false);}),{$error:$e,$pending:Pe,$invalid:ye,$valid:Rt,$debounce:x,$lazy:se,$errors:ot,$ready:ct,$silentErrors:st,$rewardEarly:le,$autoDirty:U,$clearExternalErrorsOnChange:ge,$anyDirty:W,$edited:We,$anyEdited:ut,$name:ft,$haveAnyAsyncRule:Nt,$shortcuts:dt,$validating:O,$tooltips:it,$dirty:g,triggerPunishment:_,processShortcuts:Gt,$silentValue:K,$inactive:Me}}),G(),E=watch(a.$dirty,g=>{i.setDirtyEntry(n,g),Object.values(C.value).forEach(_=>{_.$fieldDirty=g;});}),v=watch([a.$error,a.$valid,a.$invalid,a.$pending],()=>{Object.values(C.value).forEach(g=>{g.$fieldError=a.$error.value,g.$fieldInvalid=a.$invalid.value,g.$fieldPending=a.$pending.value,g.$fieldValid=a.$valid.value;});}),h=watch(a.$valid,g=>{a.$rewardEarly.value&&g&&(a.triggerPunishment.value=false);}),u=watch(a.$haveAnyAsyncRule,s);}function G(){$=watch(e,()=>{a.$autoDirty.value&&(a.$dirty.value||(a.$dirty.value=true)),t.value instanceof Function&&o(),(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&M(),a.$rewardEarly.value!==true&&a.$clearExternalErrorsOnChange.value&&c();},{deep:B?true:_e?1:true,flush:"post"});}function J(){Object.values(C.value).forEach(g=>{g.$validate();});}let C=ref({}),L=ref({});o();function ie(){c(),a.$dirty.value=false,a.triggerPunishment.value=false,i.setDirtyEntry(n,false),D.value=ne(e.value)?Q(e.value):Array.isArray(e.value)?[...e.value]:e.value,Object.entries(C.value).forEach(([g,_])=>{_.$reset();}),!a.$lazy.value&&a.$autoDirty.value&&Object.values(C.value).forEach(g=>g.$validate());}function de(g=true,_=false){a.$dirty.value||(a.$dirty.value=true),_&&g?(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&M():g&&M();}async function pe(){try{let g=e.value;if(a.triggerPunishment.value=!0,!a.$dirty.value)a.$dirty.value=!0;else if(a.$autoDirty.value&&a.$dirty.value&&!a.$pending.value)return {result:!a.$error.value,data:g};return y?{result:!S?.value?.length,data:g}:Y(C.value)?{result:!0,data:g}:{result:(await Promise.allSettled(Object.entries(C.value).map(([x,se])=>se.$validate()))).every(x=>x.status==="fulfilled"?x.value===!0:!1),data:g}}catch{return {result:false,data:e.value}}}function me(){I(),e.value=Q(D),ie();}function R(g=true){return a.$dirty.value?e.value:g?{_null:true}:null}function c(){f?.value?.length&&(f.value=[]);}!a.$lazy.value&&!a.$dirty.value&&a.$autoDirty.value&&M();let{$shortcuts:d,$validating:T,$autoDirty:P,$rewardEarly:X,$clearExternalErrorsOnChange:p,$haveAnyAsyncRule:A,$debounce:H,$lazy:Z,triggerPunishment:z,...oe}=a;return reactive({...oe,$externalErrors:f,$value:e,$rules:C,...d,$reset:ie,$touch:de,$validate:pe,$unwatch:I,$watch:V,$resetAll:me,$extractDirtyFields:R,$clearExternalErrors:c})}function Ze({$id:e,path:t,index:r,options:n,storage:l,stateValue:i,customMessages:m,rules:f,externalErrors:S,schemaErrors:y,initialState:b,shortcuts:B,fieldName:D,schemaMode:N}){let w=f.$key?f.$key:he(),a=`${t}.${String(w)}`;typeof i.value=="object"&&i.value!=null&&(i.value.$id?a=`${t}.${i.value.$id}`:Object.defineProperties(i.value,{$id:{value:w,enumerable:false,configurable:false,writable:false}}));let j=toRef(S?.value??[],r),$=computed(()=>y?.value?.[r]),h=Te({state:i,rulesDef:toRef(()=>f),customMessages:m,path:a,storage:l,options:n,externalErrors:j,schemaErrors:$,initialState:b,shortcuts:B,fieldName:D,schemaMode:N});if(h){let E=i.value?.$id;h.$id=E??String(w),l.addArrayStatus(e,h.$id,h);}return h}function wt({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:i,externalErrors:m,schemaErrors:f,schemaMode:S,initialState:y,shortcuts:b,fieldName:B}){let D=effectScope(),N,w=effectScope(),a,j=[];if(!Array.isArray(e.value)&&!t.value.$each)return;let $=ref(),h=ref(e.value),E,u=ref({}),v=l.getCollectionsEntry(n);a=w.run(()=>({isPrimitiveArray:computed(()=>Array.isArray(e.value)&&e.value.length?e.value.every(c=>typeof c!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(c=>Oe(c)||typeof c=="function"):false)})),M(),I();function M(){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)),h.value=u.value.$value,Array.isArray(e.value)&&!a.isPrimitiveArray.value?v.value=e.value.filter(R=>typeof R=="object").map((R,c)=>{let{scope:d,unwrapped:T}=Je(t.value.$each,toRef(()=>R),c);d&&j.push(d);let P=toRef(y.value??[],c),X=toRef(m?.value??{},"$each"),p=computed(()=>f?.value?.$each),A=Ze({$id:$.value,path:n,customMessages:r,rules:T??{},stateValue:toRef(()=>R),index:c,options:i,storage:l,externalErrors:X,schemaErrors:p,initialState:P,shortcuts:b,fieldName:B,schemaMode:S});return A||null}).filter(R=>!!R):v.value=[],u.value=Ne({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:i,externalErrors:toRef(m?.value??{},"$self"),schemaErrors:computed(()=>f?.value?.$self),$isArray:true,initialState:y,shortcuts:b,fieldName:B,schemaMode:S});}function o(){if(Array.isArray(e.value)&&!a.isPrimitiveArray.value){let R=Q(v.value);v.value=e.value.filter(c=>typeof c=="object").map((c,d)=>{let T=toRef(()=>c);if(c.$id&&v.value.find(P=>P.$id===c.$id)){let P=l.getArrayStatus($.value,c.$id);return P?(P.$value=T,P):null}else {let{scope:P,unwrapped:X}=Je(t.value.$each,T,d);P&&j.push(P);let p=toRef(m?.value??{},"$each"),A=computed(()=>f?.value?.$each??[]),H=Ze({$id:$.value,path:n,customMessages:r,rules:X??{},stateValue:T,index:d,options:i,storage:l,externalErrors:p,schemaErrors:A,initialState:toRef(y.value??[],d),shortcuts:b,fieldName:B,schemaMode:S});return H||null}}).filter(c=>!!c),R.filter(c=>!e.value?.find(d=>c.$id===d.$id)).forEach((c,d)=>{l.deleteArrayStatus($.value,d.toString());});}else v.value=[];}function s(){E=watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?M():o();},{deep:_e?1:true,flush:"pre"});}function I(){s(),D=effectScope(),N=D.run(()=>{let R=computed({get:()=>e.value,set(x){E(),e.value=x,s();}}),c=computed(()=>u.value.$dirty&&(!v.value.length||v.value.every(x=>x.$dirty))),d=computed(()=>u.value.$anyDirty||v.value.some(x=>x.$anyDirty)),T=computed(()=>u.value.$invalid||v.value.some(x=>x.$invalid)),P=computed(()=>(Y(u.value.$rules)?true:u.value.$valid)&&(!v.value.length||v.value.every(x=>x.$valid))),X=computed(()=>u.value.$error||v.value.some(x=>x.$error)),p=computed(()=>!(T.value||A.value)),A=computed(()=>u.value.$pending||v.value.some(x=>x.$pending)),H=computed(()=>!!v.value.length&&v.value.every(x=>x.$edited)),Z=computed(()=>u.value.$anyEdited||v.value.some(x=>x.$anyEdited)),z=computed(()=>({$self:u.value.$errors,$each:v.value.map(x=>x.$errors)})),oe=computed(()=>({$self:u.value.$silentErrors,$each:v.value.map(x=>x.$silentErrors)})),g=computed(()=>B);function _(){b?.collections&&Object.entries(b?.collections).forEach(([x,se])=>{let le=effectScope();W[x]=le.run(()=>{let ge=ref();return watchEffect(()=>{ge.value=se(reactive({$dirty:c,$error:X,$silentValue:R,$pending:A,$invalid:T,$valid:P,$errors:z,$ready:p,$silentErrors:oe,$anyDirty:d,$name:g,$each:v,$self:u,$value:e,$edited:H,$anyEdited:Z}));}),ge}),j.push(le);});}let W={};return _(),{$dirty:c,$anyDirty:d,$invalid:T,$valid:P,$error:X,$pending:A,$errors:z,$silentErrors:oe,$ready:p,$name:g,$shortcuts:W,$silentValue:R,$edited:H,$anyEdited:Z}}),a.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 V(){E&&E(),u.value&&u.value.$unwatch(),v.value&&v.value.forEach(R=>{"$dirty"in R&&R.$unwatch();}),D.stop(),D=effectScope(),w.stop(),w=effectScope(true),j.forEach(R=>R.stop()),j=[];}function G(R=true,c=false){u.value.$touch(R,c),v.value.forEach(d=>{d.$touch(R,c);});}function J(){u.value.$reset(),v.value.forEach(R=>{R.$reset();});}async function C(){let R=e.value;try{return {result:(await Promise.allSettled([u.value.$validate(),...v.value.map(T=>T.$validate())])).every(T=>T.status==="fulfilled"?T.value.result===!0:!1),data:R}}catch{return {result:false,data:R}}}function L(){u.value.$clearExternalErrors(),v.value.forEach(R=>{R.$clearExternalErrors();});}function ie(R=true){let c=v.value.map(d=>{if(Tt(d))return d.$extractDirtyFields(R)});return R&&c.every(d=>Y(d))&&(c=[]),c}function de(){V(),e.value=Q(y.value),J();}let{$shortcuts:pe,...me}=N;return reactive({$self:u,...me,...pe,$each:v,$value:e,$validate:C,$unwatch:V,$watch:I,$touch:G,$reset:J,$resetAll:de,$extractDirtyFields:ie,$clearExternalErrors:L})}function Ue({rulesDef:e,state:t,path:r="",rootRules:n,externalErrors:l,schemaErrors:i,rootSchemaErrors:m,validationGroups:f,initialState:S,fieldName:y,...b}){let B=effectScope(),D,N=[],w=null,a=null,j=null,$=null;async function E(R=true){let c=Object.entries(e.value),d=Object.fromEntries(c.filter(([p,A])=>!!A).map(([p,A])=>{if(A){let H=toRef(t.value??{},p),Z=toRef(()=>A),z=toRef(l?.value??{},p),oe=computed(()=>i?.value?.[p]),g=toRef(S?.value??{},p);return [p,Te({state:H,rulesDef:Z,path:r?`${r}.${p}`:p,externalErrors:z,schemaErrors:oe,initialState:g,fieldName:p,...b})]}return []})),T=Object.fromEntries(Object.entries(unref(l)??{}).filter(([p,A])=>!(p in e.value)&&!!A).map(([p])=>{let A=toRef(t.value??{},p),H=toRef(l?.value??{},p),Z=computed(()=>i?.value?.[p]),z=toRef(S?.value??{},p);return [p,Te({state:A,rulesDef:computed(()=>({})),path:r?`${r}.${p}`:p,externalErrors:H,schemaErrors:Z,initialState:z,fieldName:p,...b})]})),P=Object.fromEntries(Object.entries(unref(i)??{}).map(([p])=>{let A=toRef(t.value??{},p),H=toRef(l?.value??{},p),Z=computed(()=>i?.value?.[p]),z=toRef(S?.value??{},p);return [p,Te({state:A,rulesDef:computed(()=>({})),path:r?`${r}.${p}`:p,externalErrors:H,schemaErrors:Z,initialState:z,fieldName:p,...b})]})),X=Object.fromEntries(Object.entries(t.value??{}).filter(([p])=>!(p in e.value)&&!(p in(T??{}))&&!(p in(P??{}))).map(([p])=>{let A=toRef(t.value??{},p),H=toRef(l?.value??{},p),Z=computed(()=>i?.value?.[p]),z=toRef(S?.value??{},p);return [p,Te({state:A,rulesDef:computed(()=>({})),path:r?`${r}.${p}`:p,externalErrors:H,schemaErrors:Z,initialState:z,fieldName:p,...b})]}));u.value={...d,...T,...P,...X},R&&o();}let u=b.storage.getFieldsEntry(r);E();function v(){l&&(j=watch(l,()=>{s(),E();},{deep:true}));}function M(){$=watch(t,()=>{s(),E(),G(true,true);},{flush:"sync"});}function o(){n&&(w?.(),w=watch(n,()=>{s(),E();},{deep:true,flush:"post"}),v()),m&&(a?.(),a=watch(m,()=>{s(),E();},{deep:true,flush:"post"})),M(),D=B.run(()=>{let R=computed({get:()=>t.value,set(U){s(),t.value=U,E();}}),c=computed(()=>!!Object.entries(u.value).length&&Object.entries(u.value).every(([U,O])=>O?.$dirty)),d=computed(()=>Object.entries(u.value).some(([U,O])=>O?.$anyDirty)),T=computed(()=>Object.entries(u.value).some(([U,O])=>O?.$invalid)),P=computed(()=>{let U=Object.entries(u.value).filter(([O,K])=>xt(K)?!K.$inactive:true);return U.length?U.every(([O,K])=>K?.$valid):false}),X=computed(()=>d.value&&!z.value&&T.value),p=computed(()=>unref(b.options.rewardEarly)!=null?unref(b.options.rewardEarly):false),A=computed(()=>unref(b.options.autoDirty)!=null?unref(b.options.autoDirty):!p.value),H=computed(()=>A.value?d.value&&!(T.value||z.value):!(T.value||z.value)),Z=ref(false),z=computed(()=>Z.value||Object.entries(u.value).some(([U,O])=>O?.$pending)),oe=computed(()=>Object.fromEntries(Object.entries(u.value).map(([U,O])=>[U,O?.$errors]))),g=computed(()=>Object.fromEntries(Object.entries(u.value).map(([U,O])=>[U,O?.$silentErrors]))),_=computed(()=>!!Object.entries(u.value).length&&Object.entries(u.value).every(([U,O])=>O?.$edited)),W=computed(()=>Object.entries(u.value).some(([U,O])=>O?.$anyEdited)),x=computed(()=>y);function se(){b.shortcuts?.nested&&Object.entries(b.shortcuts.nested).forEach(([U,O])=>{let K=effectScope();ge[U]=K.run(()=>{let $e=ref();return watchEffect(()=>{$e.value=O(reactive({$dirty:c,$value:t,$silentValue:R,$error:X,$pending:z,$invalid:T,$valid:P,$ready:H,$anyDirty:d,$name:x,$silentErrors:g,$errors:oe,$fields:u,$edited:_,$anyEdited:W}));}),$e}),N.push(K);});}let le=computed({get:()=>f?Object.fromEntries(Object.entries(f?.(u.value)??{}).map(([U,O])=>O.length?[U,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$valid"].map(K=>[K,$t(O,K)])),...Object.fromEntries(["$errors","$silentErrors"].map(K=>[K,yt(O,K)]))}]:[])):{},set(){}}),ge={};return se(),{$dirty:c,$anyDirty:d,$invalid:T,$valid:P,$error:X,$pending:z,$errors:oe,$silentErrors:g,$ready:H,$name:x,$shortcuts:ge,$groups:le,$silentValue:R,$edited:_,$anyEdited:W,$localPending:Z}});}function s(){w?.(),j?.(),$?.(),a?.(),N=[],D={},u.value&&Object.entries(u.value).forEach(([R,c])=>{c.$unwatch();});}function I(){Object.entries(u.value).forEach(([R,c])=>{c.$clearExternalErrors();});}function V(){j?.(),Object.values(u.value).forEach(R=>{R.$reset();}),S.value={...Q(t.value)},v();}function G(R=true,c=false){Object.values(u.value).forEach(d=>{d.$touch(R,c);});}async function J(){s(),t.value=Q({...S.value??{}}),V(),E();}function C(R){return R.filter(([c,d])=>ne(d)?!(d&&typeof d=="object"&&"_null"in d)&&!Y(d):Array.isArray(d)?d.length:true)}function L(R=true){let c=Object.entries(u.value).map(([d,T])=>[d,T.$extractDirtyFields(R)]);return R&&(c=C(c)),Object.fromEntries(c)}async function ie(){try{if(b.schemaMode)return b.onValidate?(G(!1),D.$localPending.value=!0,b.onValidate()):{result:!1,data:t.value};{let R=t.value;return {result:(await Promise.allSettled(Object.values(u.value).map(T=>T.$validate()))).every(T=>T.status==="fulfilled"?T.value.result===!0:!1),data:R}}}catch{return {result:false,data:t.value}}finally{D.$localPending.value=false;}}let{$shortcuts:de,$localPending:pe,...me}=D;return reactive({...me,...de,$fields:u,$value:t,$resetAll:J,$reset:V,$touch:G,$validate:ie,$unwatch:s,$watch:o,$clearExternalErrors:I,$extractDirtyFields:L})}function Te({rulesDef:e,...t}){if(bt(e,t.state))return wt({rulesDef:e,...t});if(ht(t.state,e)){if(Ve(t.state))return Ue({rulesDef:e,...t});{let n=effectScope().run(()=>{let m=toRef(t.state.value?t.state:ref({}));return watch(()=>t.state.value,f=>{m.value=f;},{deep:true}),watch(m,f=>{t.state.value=f;},{deep:true}),{fakeState:m}}),{state:l,...i}=t;return Ue({rulesDef:e,...i,state:n.fakeState})}}else if(Et(e))return Ne({rulesDef:e,...t})}function Ie({initialState:e,options:t,scopeRules:r,state:n,customRules:l,shortcuts:i,schemaErrors:m,schemaMode:f=false,onValidate:S}){let y=Ke(),b=ref();return b.value=Ue({rootRules:r,rulesDef:r,state:n,customMessages:l?.(),storage:y,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:i,fieldName:"root",path:"",schemaErrors:m,rootSchemaErrors:m,schemaMode:f,onValidate:S}),getCurrentScope()&&onScopeDispose(()=>{b.value?.$unwatch();}),reactive({regle:b})}function rt(e,t,r){let n={autoDirty:t?.autoDirty,lazy:t?.lazy,rewardEarly:t?.rewardEarly,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange};function l(i,m,f){let S=isRef(m)?m:computed(typeof m=="function"?m:()=>m),y={...n,...f},b=isRef(i)?i:ref(i),B=ref({...Q(b.value)});return {r$:Ie({scopeRules:S,state:b,options:y,initialState:B,customRules:e,shortcuts:r}).regle}}return l}var ke=rt();function nt(){function e(t,r){return r}return e}var at=nt();function Vt({rules:e,modifiers:t,shortcuts:r}){let n=rt(e,t,r),l=nt();return {useRegle:n,inferRules:l}}function je(e,t){let r=t??false,n=computed({get:()=>Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$value])),set:o=>{typeof o=="object"&&Object.entries(o).forEach(([s,I])=>e[s].$value=I);}}),l=computed({get:()=>Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$silentValue])),set:o=>{typeof o=="object"&&Object.entries(o).forEach(([s,I])=>e[s].$silentValue=I);}}),i=computed(()=>Object.entries(e).every(([o,s])=>s?.$dirty)),m=computed(()=>Object.entries(e).some(([o,s])=>s?.$anyDirty)),f=computed(()=>Object.entries(e).some(([o,s])=>s?.$invalid)),S=computed(()=>Object.entries(e).every(([o,s])=>s?.$invalid)),y=computed(()=>Object.entries(e).some(([o,s])=>s?.$error)),b=computed(()=>Object.entries(e).every(([o,s])=>s?.$ready)),B=computed(()=>Object.entries(e).some(([o,s])=>s?.$pending)),D=computed(()=>Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$errors]))),N=computed(()=>Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$silentErrors]))),w=computed(()=>Object.entries(e).every(([o,s])=>s?.$edited)),a=computed(()=>Object.entries(e).some(([o,s])=>s?.$anyEdited)),j=computed(()=>e);function $(){Object.values(e).forEach(o=>{o.$reset();});}function h(){Object.values(e).forEach(o=>{o.$touch();});}function E(){Object.values(e).forEach(o=>{o.$resetAll();});}function u(o=true){return Object.values(e).map(s=>s.$extractDirtyFields(o))}function v(){Object.values(e).forEach(o=>{o.$clearExternalErrors();});}async function M(){try{let o=n.value;return {result:(await Promise.allSettled(Object.values(e).map(V=>V.$validate()))).every(V=>V.status==="fulfilled"?V.value.result===!0:!1),data:o}}catch{return {result:false,data:n.value}}}return reactive({...!r&&{$instances:j,$value:n,$silentValue:l,$errors:D,$silentErrors:N},$dirty:i,$anyDirty:m,$invalid:f,$valid:S,$error:y,$pending:B,$ready:b,$edited:w,$anyEdited:a,$resetAll:E,$reset:$,$touch:h,$validate:M,$extractDirtyFields:u,$clearExternalErrors:v})}function Ft(e){function t(){let r=ref(je(e.value,true)),n=reactive({r$:r});return watch(e,l=>{r.value=je(l,true);}),{r$:n.r$}}return {useCollectScopedValidations:t}}function _t(e){let t=e??ke,r=ref({});return {useScopedRegle:(l,i,m)=>{let f=he(),{r$:S}=t(l,i,m);r.value[f]=S,onScopeDispose(()=>{delete r.value[f];});function y(){delete r.value[f];}return {r$:S,$dispose:y}},instances:r}}function lt(e){let{instances:t,useScopedRegle:r}=_t(e),{useCollectScopedValidations:n}=Ft(t);return {useScopedRegle:r,useCollectScopedValidations:n}}
|
|
2
2
|
export{He as InternalRuleType,qe as createRule,lt as createScopedUseRegle,Vt as defineRegleConfig,at as inferRules,je as mergeRegles,ee as unwrapRuleParameters,ke as useRegle,Ie as useRootStorage};
|
package/dist/regle-core.mjs
CHANGED
|
@@ -63,7 +63,7 @@ function cloneDeep(obj) {
|
|
|
63
63
|
|
|
64
64
|
// ../shared/utils/object.utils.ts
|
|
65
65
|
function isObject(obj) {
|
|
66
|
-
if (obj instanceof Date || obj
|
|
66
|
+
if (obj && (obj instanceof Date || obj.constructor.name == "File" || obj.constructor.name == "FileList")) {
|
|
67
67
|
return false;
|
|
68
68
|
}
|
|
69
69
|
return typeof obj === "object" && obj !== null && !Array.isArray(obj);
|
|
@@ -384,9 +384,6 @@ function useStorage() {
|
|
|
384
384
|
};
|
|
385
385
|
}
|
|
386
386
|
function isRefObject(obj) {
|
|
387
|
-
if (obj.value instanceof Date || obj.value instanceof File) {
|
|
388
|
-
return false;
|
|
389
|
-
}
|
|
390
387
|
return isObject(obj.value);
|
|
391
388
|
}
|
|
392
389
|
function unwrapGetter(getter, value, index) {
|