@regle/core 0.2.8 → 0.2.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +15 -7
- package/dist/index.d.ts +15 -7
- package/dist/index.js +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';var vue=require('vue');var Ce=(r=>(r.Inline="__inline",r.Async="__async",r))(Ce||{});function Qe(e,t){return vue.computed(()=>e.value.some(r=>r[t]))}function Xe(e,t){return vue.computed(()=>e.value.reduce((r,n)=>{let a=n[t]||[];return r.concat(a)},[]))}function q(e){return e.map(t=>t instanceof Function?t():vue.unref(t))}function Ze(e){return e.map(t=>t instanceof Function||vue.isRef(t)?t:vue.toRef(()=>t))}function Ke(e){let t=e.toString();return (t.includes("=>")?t.split("=>")[0]:t).slice(t.indexOf("(")+1,t.indexOf(")")).split(",").map(o=>o.trim()).filter(o=>o.includes("=")).length+e.length}function Ie(e,...t){let{message:r,validator:n,active:a,type:o,...f}=e,p=o==="__async"||n.constructor.name==="AsyncFunction";return {...{validator($,...y){return e.validator($,...q(y.length?y:t))},message($,y){return typeof e.message=="function"?e.message($,{...y,$params:q(y.$params?.length?y.$params:t)}):e.message},active($,y){return typeof e.active=="function"?e.active($,{...y,$params:q(y.$params?.length?y.$params:t)}):e.active??!0},exec($){let y=e.validator($,...q(t)),d;return y instanceof Promise?y.then(v=>(d=v,typeof d=="object"&&"$valid"in d?d.$valid:typeof d=="boolean"?d:!1)):(d=y,typeof d=="object"&&"$valid"in d?d.$valid:typeof d=="boolean"?d:!1)}},...f,_validator:e.validator,_message:e.message,_active:e.active,_type:e.type,_patched:!1,_async:p,_params:Ze(t)}}function Pe(e){if(typeof e.validator=="function"){let r=Ie(e,...[]),n=e.validator.constructor.name==="AsyncFunction";if(Ke(e.validator)>1){let a=function(...o){return Ie(e,...o)};return a.validator=r.validator,a.message=r.message,a.active=r.active,a.type=r.type,a.exec=r.exec,a._validator=r.validator,a._message=r.message,a._active=r.active,a._type=e.type,a._patched=!1,a._async=n,a}else return r}throw new Error("Validator must be a function")}function L(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function et(e){return L(e.value)}function te(e){let t=e,r={}.toString.call(e).slice(8,-1);if(r=="Set"&&(t=new Set([...e].map(n=>te(n)))),r=="Map"&&(t=new Map([...e].map(n=>[te(n[0]),te(n[1])]))),r=="Date"&&(t=new Date(e.getTime())),r=="RegExp"&&(t=RegExp(e.source,ht(e))),r=="Array"||r=="Object"){t=Array.isArray(e)?[]:{};for(let n in e)t[n]=te(e[n]);}return t}function ht(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 we(e,t,r){return e instanceof Function?e(t,r??0):e}function tt(e,t){vue.isRef(e)?e.value=t:e=t;}function rt(e,t){vue.isRef(e)?e.value=[]:e=[],t.forEach((r,n)=>{let a=vue.isRef(e)?e.value[n]:e[n];a={},fe(a,t[n]);});}function fe(e,t){Object.entries({...vue.unref(e),...t}).forEach(([r,n])=>{let a=vue.isRef(e)?e.value:e,o=vue.isRef(t[r])?t[r]._value:t[r],f=vue.isRef(a[r])?a[r].value:a[r];Array.isArray(a[r])?(a[r]=[],Array.isArray(o)&&o.forEach((p,T)=>{a[r][T]={},fe(a[r][T],o[T]);})):L(o)?fe(f,o):vue.isRef(a[r])?a[r].value=o:a[r]=o;});}function J(e){return e==null?!0:e===!1?!1:e instanceof Date?isNaN(e.getTime()):Array.isArray(e)?e.length===0:typeof e=="object"&&e!=null?Object.keys(e).length===0:typeof e=="string"?!String(e.trim()).length:!1}function $e(e,t,r){let n,a=(...o)=>new Promise(f=>{clearTimeout(n),n=setTimeout(()=>{n=void 0,Promise.resolve(e.apply(this,[...o])).then(f);},t);});return a.cancel=()=>{clearTimeout(n),n=void 0;},a.doImmediately=(...o)=>new Promise(f=>{clearTimeout(n),n=setTimeout(()=>{n=void 0,Promise.resolve(e.apply(this,[...o])).then(f);},0);}),a}function Tt(e,t){let r=String(e).split("."),n=String(t).split(".");for(let a=0;a<Math.min(r.length,n.length);a++){let o=Number(r[a]),f=Number(n[a]);if(o>f)return 1;if(f>o)return -1;if(!isNaN(o)&&isNaN(f))return 1;if(isNaN(o)&&!isNaN(f))return -1}return 0}var Se=Tt(vue.version,"3.5.0")!==-1;function Et(){return Math.floor(Math.random()*Date.now()).toString()}function Oe(){return typeof window>"u"?Et():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function Ae(){let e=vue.shallowRef(new Map),t=vue.shallowRef(new Map),r=vue.shallowRef(new Map),n=vue.shallowRef(new Map),a=vue.shallowRef(new Map),o=vue.shallowRef(new Map);function f(u){let l=t.value.get(u);if(l)return l;{let x=vue.ref({});return t.value.set(u,x),x}}function p(u){let l=r.value.get(u);if(l)return l;{let x=vue.ref([]);return r.value.set(u,x),x}}function T(u,l,x){o.value.set(`${u}-${l}`,x);}function S(u,l){return o.value.get(`${u}-${l}`)}function $(u,l){u&&l!=null&&o.value.delete(`${u}-${l}`);}function y(u,l){n.value.set(u,l);}function d(u){return n.value.get(u)??!1}function v(u,l){e.value.set(u,l);}function i(u,l){let x=e.value.get(u);return x?V(l,x)?{valid:!0}:{valid:!1}:void 0}function V(u,l){let x=Object.keys(l),A=Object.keys(u);return A.length!==x.length||!A.every(j=>x.includes(j))?!1:A.every(j=>{let b=u[j],P=l[j];return !P||!b||typeof b=="function"||typeof P=="function"||typeof b=="number"||typeof b=="boolean"?!1:b._params?b._params?.every((F,m)=>{if(typeof P=="number"||typeof P=="boolean")return !0;{let E=q(P._params),H=q(b._params);return E?.[m]===H?.[m]}}):!0})}function N(u){let l=a.value.get(u);if(l)return l;{let x=vue.ref(!1),A=vue.ref(!0),B=vue.ref({}),j=vue.ref(!1);return a.value.set(u,{$pending:x,$valid:A,$metadata:B,$validating:j}),{$pending:x,$valid:A,$metadata:B,$validating:j}}}return vue.onScopeDispose(()=>{e.value.clear(),t.value.clear(),r.value.clear(),n.value.clear(),a.value.clear(),o.value.clear();}),{addRuleDeclEntry:v,setDirtyEntry:y,checkRuleDeclEntry:i,getDirtyState:d,trySetRuleStatusRef:N,getFieldsEntry:f,getCollectionsEntry:p,getArrayStatus:S,addArrayStatus:T,deleteArrayStatus:$,arrayStatusStorage:o}}function nt(e,t){return L(e.value)&&L(t.value)&&!Object.entries(t.value).some(r=>Re(r))}function at(e,t){return !!e.value&&"$each"in e.value||Array.isArray(t.value)}function lt(e){return !!e.value&&L(e.value)}function Re(e){return L(e)&&"_validator"in e}function pe(e){return typeof e.value!="function"}function Fe(e){return L(e)&&"$fields"in e}function Me({field:e,silent:t=!1}){return Object.entries(e.$rules??{}).map(([r,n])=>t||!n.$valid&&e.$dirty&&!n.$validating?n.$message:null).filter(r=>!!r).reduce((r,n)=>typeof n=="string"?r?.concat([n]):r?.concat(n),[]).concat(e.$dirty?e.$externalErrors??[]:[])}function ut({$dirty:e,customMessages:t,rule:r,ruleKey:n,state:a,path:o,storage:f,$debounce:p}){let T=vue.effectScope(),S,$,y=vue.ref(!1),{$pending:d,$valid:v,$metadata:i,$validating:V}=f.trySetRuleStatusRef(`${o}.${n}`);function N(){S=T.run(()=>{let b=vue.computed(()=>({$invalid:!v.value,$params:H.value,...i.value})),P=vue.computed(()=>pe(r)?typeof r.value.active=="function"?r.value.active(a.value,b.value):!!r.value.active:!0),F=vue.computed(()=>{let h="",s=t?t[n]?.message:void 0;return s&&(typeof s=="function"?h=s(a.value,b.value):h=s),pe(r)&&(s&&!r.value._patched||(typeof r.value.message=="function"?h=r.value.message(a.value,b.value):h=r.value.message)),J(h)&&(h="Error",console.warn(`No error message defined for ${o}.${n}`)),h}),m=vue.computed(()=>pe(r)&&r.value.type?r.value.type:n),E=vue.computed(()=>pe(r)?r.value.validator:r.value),H=vue.computed(()=>typeof r.value=="function"?[]:q(r.value._params??[])),C=vue.computed(()=>`${o}.${m.value}`);return {$active:P,$message:F,$type:m,$validator:E,$params:H,$path:C}}),$=vue.watch(S.$params,A,{deep:!0});}N();function u(){v.value=!0,e.value&&(d.value=!0);}async function l(){let b=S.$validator.value,P=b(a.value,...S.$params.value),F=!1,m=a.value;try{u();let E;if(P instanceof Promise?E=await P:E=P,a.value!==m)return !0;if(typeof E=="boolean")F=E;else {let{$valid:H,...C}=E;F=H,i.value=C;}}catch{F=!1;}finally{d.value=!1;}return F}let x=$e(l,p??200);async function A(){try{V.value=!0;let b=!1;if(Re(r.value)&&r.value._async)b=await x();else {let P=S.$validator.value,F=P(a.value,...S.$params.value);if(F 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(F!=null)if(typeof F=="boolean")b=F;else {let{$valid:m,...E}=F;b=m,i.value=E;}}return v.value=b,b}catch{return !1}finally{V.value=!1;}}function B(){v.value=!0,i.value={},d.value=!1,V.value=!1,N();}function j(){$(),T.stop(),T=vue.effectScope();}return vue.reactive({...S,$pending:d,$valid:v,$metadata:i,_haveAsync:y,$validating:V,$validate:A,$unwatch:j,$watch:N,$reset:B})}function be({state:e,rulesDef:t,customMessages:r,path:n,fieldName:a,storage:o,options:f,externalErrors:p,onUnwatch:T,$isArray:S,initialState:$,shortcuts:y}){let d=vue.effectScope(),v,i=vue.ref(!1),V=vue.ref(!1),N,u,l,x,A=()=>{};function B(){let O=t.value,G=o.checkRuleDeclEntry(n,O);E.value=Object.fromEntries(Object.entries(O).filter(([W])=>W.startsWith("$"))),m.value=Object.fromEntries(Object.entries(t.value).filter(([W])=>!W.startsWith("$")).map(([W,X])=>{if(X){let Ee=vue.toRef(()=>X);return [W,ut({$dirty:i,customMessages:r,rule:Ee,ruleKey:W,state:e,path:n,storage:o,$debounce:E.value.$debounce})]}return []}).filter(W=>!!W.length)),P(),j(),G?.valid!=null&&(i.value=o.getDirtyState(n),i.value&&A()),o.addRuleDeclEntry(n,O);}function j(){A=v.$debounce.value?$e(F,v.$debounce.value??v.haveAnyAsyncRule?100:0):F;}function b(){m.value&&Object.entries(m.value).forEach(([O,G])=>{G.$unwatch();}),l(),i.value&&o.setDirtyEntry(n,i.value),N?.(),u?.(),d.stop(),d=vue.effectScope(),T?.(),x?.();}function P(){m.value&&Object.entries(m.value).forEach(([O,G])=>{G.$watch();}),v=d.run(()=>{let O=vue.computed(()=>i.value),G=vue.computed(()=>E.value.$debounce),W=vue.computed(()=>E.value.$lazy!=null?E.value.$lazy:vue.unref(f.lazy)),X=vue.computed(()=>E.value.$rewardEarly!=null?E.value.$rewardEarly:vue.unref(f.rewardEarly)),Ee=vue.computed(()=>E.value.$clearExternalErrorsOnChange!=null?E.value.$clearExternalErrorsOnChange:vue.unref(f.clearExternalErrorsOnChange)),pt=vue.computed(()=>E.value.$autoDirty!=null?E.value.$autoDirty:vue.unref(f.autoDirty)),Ue=vue.computed(()=>Object.entries(m.value).some(([ee,z])=>z.$validating)),De=vue.computed(()=>ce.value&&!ge.value&&i.value),We=vue.computed(()=>De.value?Me({field:{$dirty:i.value,$externalErrors:p?.value,$rules:m.value}}):[]),He=vue.computed(()=>Me({field:{$dirty:i.value,$externalErrors:p?.value,$rules:m.value},silent:!0})),qe=vue.computed(()=>!(ce.value||ge.value)),ge=vue.computed(()=>V.value||!X.value?Object.entries(m.value).some(([ee,z])=>z.$pending):!1),ce=vue.computed(()=>p?.value?.length?!0:J(m.value)?!1:!X.value||X.value&&V.value?Object.entries(m.value).some(([ee,z])=>!z.$valid):!1),Le=vue.computed(()=>a),xe=vue.computed(()=>J(m.value)?!1:i.value&&!J(e.value)&&!Ue.value?p?.value?.length?!1:X.value?Object.entries(m.value).every(([ee,z])=>z.$valid):!ce.value:!1),dt=vue.computed(()=>Object.entries(m.value).some(([ee,z])=>z._haveAsync));function vt(){y?.fields&&Object.entries(y.fields).forEach(([ee,z])=>{let yt=vue.effectScope();ze[ee]=yt.run(()=>{let Je=vue.ref();return vue.watchEffect(()=>{Je.value=z({$dirty:i.value,$externalErrors:p?.value??[],$value:e,$rules:m.value,$error:De.value,$pending:ge.value,$invalid:ce.value,$valid:xe.value,$errors:We.value,$ready:qe.value,$silentErrors:He.value,$anyDirty:O.value,$name:Le.value});}),Je});});}let ze={};return vt(),vue.watch(xe,ee=>{ee&&(V.value=!1);}),{$error:De,$pending:ge,$invalid:ce,$valid:xe,$debounce:G,$lazy:W,$errors:We,$ready:qe,$silentErrors:He,$rewardEarly:X,$autoDirty:pt,$clearExternalErrorsOnChange:Ee,$anyDirty:O,$name:Le,haveAnyAsyncRule:dt,$shortcuts:ze,$validating:Ue}}),N=vue.watch(e,()=>{v.$autoDirty.value&&(i.value||(i.value=!0)),t.value instanceof Function&&B(),A(),v.$rewardEarly.value!==!0&&v.$clearExternalErrorsOnChange.value&&g();},{deep:S?!0:Se?1:!0}),l=vue.watch(i,()=>{o.setDirtyEntry(n,i.value);}),u=vue.watch(v.$valid,O=>{v.$rewardEarly.value&&O&&(V.value=!1);}),x=vue.watch(v.haveAnyAsyncRule,j);}function F(){Object.values(m.value).forEach(O=>{O.$validate();});}let m=vue.ref(),E=vue.ref();B();function H(){i.value=!1,g(),Object.entries(m.value).forEach(([O,G])=>{G.$reset();}),v.$lazy.value||Object.entries(m.value).map(([O,G])=>G.$validate());}function C(O=!0){i.value||(i.value=!0,O&&A());}async function h(){try{if(V.value=!0,!i.value)i.value=!0;else if(v.$autoDirty.value&&i.value&&!v.$pending.value)return !v.$error.value;return (await Promise.allSettled(Object.entries(m.value).map(([W,X])=>X.$validate()))).every(W=>W.status==="fulfilled"?!!W.value:!1)?e.value:!1}catch{return !1}}function s(){b(),e.value=tt(e,$),H();}function R(O=!0){return i.value?e.value:null}function g(){p?.value?.length&&(p.value=[]);}!v.$lazy.value&&!i.value&&A();let{$anyDirty:c,$error:D,$errors:I,$invalid:k,$name:K,$pending:oe,$ready:ne,$silentErrors:U,$valid:M,$shortcuts:w,$validating:se}=v;return vue.reactive({$dirty:i,$error:D,$errors:I,$valid:M,$invalid:k,$pending:oe,$silentErrors:U,$anyDirty:c,$ready:ne,$name:K,$externalErrors:p,$value:e,$rules:m,...w,$reset:H,$touch:C,$validate:h,$unwatch:b,$watch:P,$resetAll:s,$extractDirtyFields:R,$clearExternalErrors:g})}function it({$id:e,path:t,index:r,options:n,storage:a,stateValue:o,customMessages:f,rules:p,externalErrors:T,initialState:S,shortcuts:$,fieldName:y}){let d=p.$key?p.$key:Oe(),v=`${t}.${String(d)}`;typeof o.value=="object"&&o.value!=null&&(o.value.$id?v=`${t}.${o.value.$id}`:Object.defineProperties(o.value,{$id:{value:d,enumerable:!1,configurable:!1,writable:!1}}));let i=me({state:o,rulesDef:vue.toRef(()=>p),customMessages:f,path:v,storage:a,options:n,externalErrors:vue.toRef(T?.value??[],r),initialState:S?.[r],shortcuts:$,fieldName:y});if(i){let V=o.value?.$id;i.$id=V??String(d),a.addArrayStatus(e,i.$id,i);}return i}function st({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:o,externalErrors:f,initialState:p,shortcuts:T,fieldName:S}){let $=vue.effectScope(),y,d=vue.effectScope(),v;if(!Array.isArray(e.value)&&!t.value.$each)return null;let i=vue.ref(),V=vue.ref(e.value),N,u=vue.ref({}),l=a.getCollectionsEntry(n);v=d.run(()=>({isPrimitiveArray:vue.computed(()=>Array.isArray(e.value)&&e.value.length?e.value.some(R=>typeof R!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(R=>Re(R)):!1)})),x(),B();function x(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?(i.value=Oe(),Object.defineProperties(e.value,{$id:{value:i.value,enumerable:!1,configurable:!1,writable:!1}})):e.value?.$id&&(i.value=e.value.$id)),!v.isPrimitiveArray.value&&(V.value=u.value.$value,Array.isArray(e.value)?l.value=e.value.map((s,R)=>{let g=we(t.value.$each,vue.toRef(()=>s),R),c=it({$id:i.value,path:n,rules:g??{},stateValue:vue.toRef(()=>s),index:R,options:o,storage:a,externalErrors:vue.toRef(f?.value??{},"$each"),initialState:p[R],shortcuts:T,fieldName:S});return c||null}).filter(s=>!!s):l.value=[],u.value=be({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:o,externalErrors:vue.toRef(f?.value??{},"$errors"),$isArray:!0,initialState:p,shortcuts:T,fieldName:S}));}function A(){if(Array.isArray(e.value)){let s=te(l.value);l.value=e.value.map((R,g)=>{let c=vue.toRef(()=>R);if(R.$id&&l.value.find(D=>D.$id===R.$id)){let D=a.getArrayStatus(i.value,R.$id);return D?(D.$value=c,D):null}else {let D=we(t.value.$each,c,g);if(D){let I=it({$id:i.value,path:n,rules:D,stateValue:c,index:g,options:o,storage:a,externalErrors:vue.toRef(f?.value??{},"$each"),initialState:p[g],shortcuts:T,fieldName:S});return I||null}}}).filter(R=>!!R),s.filter(R=>!e.value.find(g=>R.$id===g.$id)).forEach((R,g)=>{a.deleteArrayStatus(i.value,g.toString());});}else l.value=[];}function B(){N=vue.watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?x():A();},{deep:Se?1:!0,flush:"pre"}),y=$.run(()=>{let s=vue.computed(()=>u.value.$dirty&&l.value.every(w=>w.$dirty)),R=vue.computed(()=>u.value.$anyDirty||l.value.some(w=>w.$dirty)),g=vue.computed(()=>u.value.$invalid||l.value.some(w=>w.$invalid)),c=vue.computed(()=>(J(u.value.$rules)?!0:u.value.$valid)&&l.value.every(w=>w.$valid)),D=vue.computed(()=>u.value.$error||l.value.some(w=>w.$error)),I=vue.computed(()=>!(g.value||k.value)),k=vue.computed(()=>u.value.$pending||l.value.some(w=>w.$pending)),K=vue.computed(()=>({$errors:u.value.$errors,$each:l.value.map(w=>w.$errors)})),oe=vue.computed(()=>({$errors:u.value.$silentErrors,$each:l.value.map(w=>w.$silentErrors)})),ne=vue.computed(()=>S);function U(){T?.collections&&Object.entries(T?.collections).forEach(([w,se])=>{let O=vue.effectScope();M[w]=O.run(()=>{let G=vue.ref();return vue.watchEffect(()=>{G.value=se({$dirty:s.value,$error:D.value,$pending:k.value,$invalid:g.value,$valid:c.value,$errors:K.value,$ready:I.value,$silentErrors:oe.value,$anyDirty:R.value,$name:ne.value,$each:l.value,$field:u.value,$value:e});}),G});});}let M={};return U(),{$dirty:s,$anyDirty:R,$invalid:g,$valid:c,$error:D,$pending:k,$errors:K,$silentErrors:oe,$ready:I,$name:ne,$shortcuts:M}}),v.isPrimitiveArray.value&&(console.warn(`${n} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`),N());}function j(){N&&N(),u.value&&u.value.$unwatch(),l.value&&l.value.forEach(s=>{"$dirty"in s&&s.$unwatch();}),$.stop(),$=vue.effectScope(),d.stop(),d=vue.effectScope(!0);}function b(s=!0){u.value.$touch(s),l.value.forEach(R=>{R.$touch(s);});}function P(){u.value.$reset(),l.value.forEach(s=>{s.$reset();});}async function F(){try{return (await Promise.all([u.value.$validate(),...l.value.map(g=>g.$validate())])).every(g=>g.value!==!1)?e.value:!1}catch{return !1}}function m(){u.value.$clearExternalErrors(),l.value.forEach(s=>{s.$clearExternalErrors();});}function E(s=!0){let R=l.value.map(g=>{if(Fe(g))return g.$extractDirtyFields(s)});return s&&(R=R.filter(g=>L(g)?!J(g):!!g)),R}function H(){j(),rt(e,p),P();}let{$shortcuts:C,...h}=y;return vue.reactive({$field:u,...h,...C,$each:l,$value:e,$validate:F,$unwatch:j,$watch:B,$touch:b,$reset:P,$resetAll:H,$extractDirtyFields:E,$clearExternalErrors:m})}function _e({scopeRules:e,state:t,customMessages:r,path:n="",rootRules:a,storage:o,options:f,externalErrors:p,validationGroups:T,initialState:S,shortcuts:$,fieldName:y}){let d,v,i=null;function u(C=!0){l.value=null,vue.triggerRef(l);let h=Object.fromEntries(Object.entries(e.value).map(([c,D])=>{if(D){let I=vue.toRef(t.value,c),k=vue.toRef(()=>D),K=vue.toRef(p?.value,c);return [c,me({state:I,rulesDef:k,customMessages:r,path:n?`${n}.${c}`:c,storage:o,options:f,externalErrors:K,initialState:S?.[c],shortcuts:$,fieldName:c})]}return []}).filter(c=>!!c.length&&c[1]!=null)),s=Object.fromEntries(Object.entries(vue.unref(p)??{}).filter(([c])=>!(c in e.value)).map(([c,D])=>{if(D){let I=vue.toRef(t.value,c),k=vue.toRef(()=>({}));return [c,me({state:I,rulesDef:k,customMessages:r,path:n?`${n}.${c}`:c,storage:o,options:f,externalErrors:vue.toRef(p?.value??{},c),initialState:S?.[c],shortcuts:$,fieldName:c})]}return []})),R=Object.fromEntries(Object.entries(t.value).filter(([c])=>!(c in e.value)&&!(c in(s.value??{}))).map(([c,D])=>{let I=vue.toRef(t.value,c),k=vue.toRef(()=>({}));return [c,me({state:I,rulesDef:k,customMessages:r,path:n?`${n}.${c}`:c,storage:o,options:f,externalErrors:vue.toRef(p?.value??{},c),initialState:S?.[c],shortcuts:$,fieldName:c})]})),g=Object.fromEntries(Object.entries(T?.(h)??{}).map(([c,D])=>D.length?[c,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$valid"].map(I=>[I,Qe(vue.toRef(()=>D),I)])),...Object.fromEntries(["$errors","$silentErrors"].map(I=>[I,Xe(vue.toRef(()=>D),I)]))}]:[]));l.value={...h,...s,...R,...g},C&&j();}let l=o.getFieldsEntry(n);u();function x(){u(!1),Object.entries(l.value).forEach(([C,h])=>{h.$reset();}),j();}function A(C=!0){Object.values(l.value).forEach(h=>{h.$touch(C);});}async function B(){try{return (await Promise.allSettled(Object.values(l.value).map(s=>s.$validate()))).every(s=>s.status==="fulfilled"?s.value!==!1:!1)?t.value:!1}catch{return !1}}function j(){a&&(i=vue.watch([a,p],()=>{b(),u();},{deep:!0,flush:"post"})),d=vue.effectScope(),v=d.run(()=>{let C=vue.computed(()=>!!Object.entries(l.value).length&&Object.entries(l.value).every(([U,M])=>M?.$dirty)),h=vue.computed(()=>Object.entries(l.value).some(([U,M])=>M?.$dirty)),s=vue.computed(()=>Object.entries(l.value).some(([U,M])=>M?.$invalid)),R=vue.computed(()=>Object.entries(l.value).every(([U,M])=>M?.$valid)),g=vue.computed(()=>C.value&&!D.value&&s.value),c=vue.computed(()=>!(s.value||D.value)),D=vue.computed(()=>Object.entries(l.value).some(([U,M])=>M?.$pending)),I=vue.computed(()=>Object.fromEntries(Object.entries(l.value).map(([U,M])=>[U,M?.$errors]))),k=vue.computed(()=>Object.fromEntries(Object.entries(l.value).map(([U,M])=>[U,M?.$silentErrors]))),K=vue.computed(()=>y);function oe(){$?.nested&&Object.entries($.nested).forEach(([U,M])=>{let w=vue.effectScope();ne[U]=w.run(()=>{let se=vue.ref();return vue.watchEffect(()=>{se.value=M({$dirty:C.value,$value:t,$error:g.value,$pending:D.value,$invalid:s.value,$valid:R.value,$ready:c.value,$anyDirty:h.value,$name:K.value,$silentErrors:k.value,$errors:I.value,$fields:l.value});}),se});});}let ne={};return oe(),{$dirty:C,$anyDirty:h,$invalid:s,$valid:R,$error:g,$pending:D,$errors:I,$silentErrors:k,$ready:c,$name:K,$shortcuts:ne}});}function b(){l.value&&Object.entries(l.value).forEach(([C,h])=>{h.$unwatch();}),i?.(),d.stop(),d=vue.effectScope();}function P(){Object.entries(l.value).forEach(([C,h])=>{h.$clearExternalErrors();});}function F(){b(),fe(t,S??{}),x();}function m(C=!0){let h=Object.entries(l.value).map(([s,R])=>[s,R.$extractDirtyFields(C)]);return C&&(h=h.filter(([s,R])=>L(R)?!J(R):Array.isArray(R)?R.length:!!R)),Object.fromEntries(h)}let{$shortcuts:E,...H}=v;return vue.reactive({...H,...E,$fields:l,$value:t,$resetAll:F,$reset:x,$touch:A,$validate:B,$unwatch:b,$watch:j,$clearExternalErrors:P,$extractDirtyFields:m})}function me({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:o,externalErrors:f,index:p,initialState:T,shortcuts:S,onUnwatch:$,fieldName:y}){return at(t,e)?st({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:o,index:p,externalErrors:f,initialState:T,fieldName:y,shortcuts:S}):nt(e,t)&&et(e)?_e({scopeRules:t,state:e,customMessages:r,path:n,storage:a,options:o,index:p,initialState:T,shortcuts:S,fieldName:y,externalErrors:f}):lt(t)?be({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:o,index:p,externalErrors:f,onUnwatch:$,shortcuts:S,initialState:T,fieldName:y}):null}function Ne({initialState:e,options:t,scopeRules:r,state:n,customRules:a,shortcuts:o}){let f=Ae();return vue.reactive(_e({rootRules:r,scopeRules:r,state:n,customMessages:a?.(),storage:f,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:o,fieldName:"root"}))}function Ge(e,t,r){let n={autoDirty:t?.autoDirty??!0,lazy:t?.lazy??!1,rewardEarly:t?.rewardEarly??!1,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange??!0};function a(o,f,p){let T=vue.isRef(f)?f:vue.computed(typeof f=="function"?f:()=>f),S={...n,...p},$=vue.isRef(o)?o:vue.ref(o),y=te(vue.toRaw($.value));return {r$:Ne({scopeRules:T,state:$,options:S,initialState:y,customRules:e,shortcuts:r})}}return a}var ft=Ge();function Be(){function e(t,r){return r}return e}var ke=Be();function Rt({rules:e,modifiers:t,shortcuts:r}){let n=Ge(e,t,r),a=Be();return {useRegle:n,inferRules:a}}exports.InternalRuleType=Ce;exports.createRule=Pe;exports.defineRegleConfig=Rt;exports.inferRules=ke;exports.unwrapRuleParameters=q;exports.useRegle=ft;
|
|
1
|
+
'use strict';var vue=require('vue');var Ce=(r=>(r.Inline="__inline",r.Async="__async",r))(Ce||{});function Qe(e,t){return vue.computed(()=>e.value.some(r=>r[t]))}function Xe(e,t){return vue.computed(()=>e.value.reduce((r,n)=>{let a=n[t]||[];return r.concat(a)},[]))}function H(e){return e.map(t=>t instanceof Function?t():vue.unref(t))}function Ze(e){return e.map(t=>t instanceof Function||vue.isRef(t)?t:vue.toRef(()=>t))}function Ke(e){let t=e.toString();return (t.includes("=>")?t.split("=>")[0]:t).slice(t.indexOf("(")+1,t.indexOf(")")).split(",").map(l=>l.trim()).filter(l=>l.includes("=")).length+e.length}function Ie(e,...t){let{message:r,validator:n,active:a,type:l,...f}=e,d=l==="__async"||n.constructor.name==="AsyncFunction";return {...{validator(h,...$){return e.validator(h,...H($.length?$:t))},message(h,$){return typeof e.message=="function"?e.message(h,{...$,$params:H($.$params?.length?$.$params:t)}):e.message},active(h,$){return typeof e.active=="function"?e.active(h,{...$,$params:H($.$params?.length?$.$params:t)}):e.active??!0},exec(h){let $=e.validator(h,...H(t)),g;return $ instanceof Promise?$.then(v=>(g=v,typeof g=="object"&&"$valid"in g?g.$valid:typeof g=="boolean"?g:!1)):(g=$,typeof g=="object"&&"$valid"in g?g.$valid:typeof g=="boolean"?g:!1)}},...f,_validator:e.validator,_message:e.message,_active:e.active,_type:e.type,_patched:!1,_async:d,_params:Ze(t)}}function Pe(e){if(typeof e.validator=="function"){let r=Ie(e,...[]),n=e.validator.constructor.name==="AsyncFunction";if(Ke(e.validator)>1){let a=function(...l){return Ie(e,...l)};return a.validator=r.validator,a.message=r.message,a.active=r.active,a.type=r.type,a.exec=r.exec,a._validator=r.validator,a._message=r.message,a._active=r.active,a._type=e.type,a._patched=!1,a._async=n,a}else return r}throw new Error("Validator must be a function")}function q(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function et(e){return q(e.value)}function re(e){let t=e,r={}.toString.call(e).slice(8,-1);if(r=="Set"&&(t=new Set([...e].map(n=>re(n)))),r=="Map"&&(t=new Map([...e].map(n=>[re(n[0]),re(n[1])]))),r=="Date"&&(t=new Date(e.getTime())),r=="RegExp"&&(t=RegExp(e.source,Tt(e))),r=="Array"||r=="Object"){t=Array.isArray(e)?[]:{};for(let n in e)t[n]=re(e[n]);}return t}function Tt(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 we(e,t,r){return e instanceof Function?e(t,r??0):e}function tt(e,t){vue.isRef(e)?e.value=t:e=t;}function rt(e,t){vue.isRef(e)?e.value=[]:e=[],t.forEach((r,n)=>{let a=vue.isRef(e)?e.value[n]:e[n];a={},Re(a,t[n]);});}function Re(e,t){Object.entries({...vue.unref(e),...t}).forEach(([r,n])=>{let a=vue.isRef(e)?e.value:e,l=vue.isRef(t[r])?t[r]._value:t[r],f=vue.isRef(a[r])?a[r].value:a[r];Array.isArray(a[r])?(a[r]=[],Array.isArray(l)&&l.forEach((d,E)=>{a[r][E]={},Re(a[r][E],l[E]);})):q(l)?Re(f,l):vue.isRef(a[r])?a[r].value=l:a[r]=l;});}function z(e){return e==null?!0:e===!1?!1:e instanceof Date?isNaN(e.getTime()):Array.isArray(e)?e.length===0:typeof e=="object"&&e!=null?Object.keys(e).length===0:typeof e=="string"?!String(e.trim()).length:!1}function Se(e,t,r){let n,a=(...l)=>new Promise(f=>{clearTimeout(n),n=setTimeout(()=>{n=void 0,Promise.resolve(e.apply(this,[...l])).then(f);},t);});return a.cancel=()=>{clearTimeout(n),n=void 0;},a.doImmediately=(...l)=>new Promise(f=>{clearTimeout(n),n=setTimeout(()=>{n=void 0,Promise.resolve(e.apply(this,[...l])).then(f);},0);}),a}function Dt(e,t){let r=String(e).split("."),n=String(t).split(".");for(let a=0;a<Math.min(r.length,n.length);a++){let l=Number(r[a]),f=Number(n[a]);if(l>f)return 1;if(f>l)return -1;if(!isNaN(l)&&isNaN(f))return 1;if(isNaN(l)&&!isNaN(f))return -1}return 0}var he=Dt(vue.version,"3.5.0")!==-1;function xt(){return Math.floor(Math.random()*Date.now()).toString()}function Oe(){return typeof window>"u"?xt():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function Ae(){let e=vue.shallowRef(new Map),t=vue.shallowRef(new Map),r=vue.shallowRef(new Map),n=vue.shallowRef(new Map),a=vue.shallowRef(new Map),l=vue.shallowRef(new Map);function f(u){let o=t.value.get(u);if(o)return o;{let R=vue.ref({});return t.value.set(u,R),R}}function d(u){let o=r.value.get(u);if(o)return o;{let R=vue.ref([]);return r.value.set(u,R),R}}function E(u,o,R){l.value.set(`${u}-${o}`,R);}function b(u,o){return l.value.get(`${u}-${o}`)}function h(u,o){u&&o!=null&&l.value.delete(`${u}-${o}`);}function $(u,o){n.value.set(u,o);}function g(u){return n.value.get(u)??!1}function v(u,o){e.value.set(u,o);}function i(u,o){let R=e.value.get(u);return R?A(o,R)?{valid:!0}:{valid:!1}:void 0}function A(u,o){let R=Object.keys(o),w=Object.keys(u);return w.length!==R.length||!w.every(V=>R.includes(V))?!1:w.every(V=>{let D=u[V],I=o[V];return !I||!D||typeof D=="function"||typeof I=="function"||typeof D=="number"||typeof D=="boolean"?!1:D._params?D._params?.every((P,m)=>{if(typeof I=="number"||typeof I=="boolean")return !0;{let x=H(I._params),W=H(D._params);return x?.[m]===W?.[m]}}):!0})}function G(u){let o=a.value.get(u);if(o)return o;{let R=vue.ref(!1),w=vue.ref(!0),B=vue.ref({}),V=vue.ref(!1);return a.value.set(u,{$pending:R,$valid:w,$metadata:B,$validating:V}),{$pending:R,$valid:w,$metadata:B,$validating:V}}}return vue.onScopeDispose(()=>{e.value.clear(),t.value.clear(),r.value.clear(),n.value.clear(),a.value.clear(),l.value.clear();}),{addRuleDeclEntry:v,setDirtyEntry:$,checkRuleDeclEntry:i,getDirtyState:g,trySetRuleStatusRef:G,getFieldsEntry:f,getCollectionsEntry:d,getArrayStatus:b,addArrayStatus:E,deleteArrayStatus:h,arrayStatusStorage:l}}function nt(e,t){return q(e.value)&&q(t.value)&&!Object.entries(t.value).some(r=>pe(r))}function at(e,t){return !!e.value&&"$each"in e.value||Array.isArray(t.value)}function lt(e){return !!e.value&&q(e.value)}function pe(e){return q(e)&&"_validator"in e}function de(e){return typeof e.value!="function"}function Me(e){return q(e)&&"$fields"in e}function Fe({field:e,silent:t=!1}){return Object.entries(e.$rules??{}).map(([r,n])=>t||!n.$valid&&e.$dirty&&!n.$validating?n.$message:null).filter(r=>!!r).reduce((r,n)=>typeof n=="string"?r?.concat([n]):r?.concat(n),[]).concat(e.$dirty?e.$externalErrors??[]:[])}function ut({$dirty:e,customMessages:t,rule:r,ruleKey:n,state:a,path:l,storage:f,$debounce:d}){let E=vue.effectScope(),b,h,$=vue.ref(!1),{$pending:g,$valid:v,$metadata:i,$validating:A}=f.trySetRuleStatusRef(`${l}.${n}`);function G(){b=E.run(()=>{let D=vue.computed(()=>({$invalid:!v.value,$params:W.value,...i.value})),I=vue.computed(()=>de(r)?typeof r.value.active=="function"?r.value.active(a.value,D.value):!!r.value.active:!0),P=vue.computed(()=>{let U="",s=t?t[n]?.message:void 0;return s&&(typeof s=="function"?U=s(a.value,D.value):U=s),de(r)&&(s&&!r.value._patched||(typeof r.value.message=="function"?U=r.value.message(a.value,D.value):U=r.value.message)),z(U)&&(U="Error",console.warn(`No error message defined for ${l}.${n}`)),U}),m=vue.computed(()=>de(r)&&r.value.type?r.value.type:n),x=vue.computed(()=>de(r)?r.value.validator:r.value),W=vue.computed(()=>typeof r.value=="function"?[]:H(r.value._params??[])),K=vue.computed(()=>`${l}.${m.value}`);return {$active:I,$message:P,$type:m,$validator:x,$params:W,$path:K}}),h=vue.watch(b.$params,w,{deep:!0});}G();function u(){v.value=!0,e.value&&(g.value=!0);}async function o(){let D=b.$validator.value,I=D(a.value,...b.$params.value),P=!1,m=a.value;try{u();let x;if(I instanceof Promise?x=await I:x=I,a.value!==m)return !0;if(typeof x=="boolean")P=x;else {let{$valid:W,...K}=x;P=W,i.value=K;}}catch{P=!1;}finally{g.value=!1;}return P}let R=Se(o,d??200);async function w(){try{A.value=!0;let D=!1;if(pe(r.value)&&r.value._async)D=await R();else {let I=b.$validator.value,P=I(a.value,...b.$params.value);if(P 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(P!=null)if(typeof P=="boolean")D=P;else {let{$valid:m,...x}=P;D=m,i.value=x;}}return v.value=D,D}catch{return !1}finally{A.value=!1;}}function B(){v.value=!0,i.value={},g.value=!1,A.value=!1,G();}function V(){h(),E.stop(),E=vue.effectScope();}return vue.reactive({...b,$pending:g,$valid:v,$metadata:i,_haveAsync:$,$validating:A,$validate:w,$unwatch:V,$watch:G,$reset:B})}function Te({state:e,rulesDef:t,customMessages:r,path:n,fieldName:a,storage:l,options:f,externalErrors:d,onUnwatch:E,$isArray:b,initialState:h,shortcuts:$}){let g=vue.effectScope(),v,i=vue.ref(!1),A=vue.ref(!1),G,u,o,R,w=()=>{};function B(){let C=t.value,_=l.checkRuleDeclEntry(n,C);x.value=Object.fromEntries(Object.entries(C).filter(([J])=>J.startsWith("$"))),m.value=Object.fromEntries(Object.entries(t.value).filter(([J])=>!J.startsWith("$")).map(([J,L])=>{if(L){let ce=vue.toRef(()=>L);return [J,ut({$dirty:i,customMessages:r,rule:ce,ruleKey:J,state:e,path:n,storage:l,$debounce:x.value.$debounce})]}return []}).filter(J=>!!J.length)),I(),V(),_?.valid!=null&&(i.value=l.getDirtyState(n),i.value&&w()),l.addRuleDeclEntry(n,C);}function V(){w=v.$debounce.value?Se(P,v.$debounce.value??v.haveAnyAsyncRule?100:0):P;}function D(){m.value&&Object.entries(m.value).forEach(([C,_])=>{_.$unwatch();}),o(),i.value&&l.setDirtyEntry(n,i.value),G?.(),u?.(),g.stop(),g=vue.effectScope(),E?.(),R?.();}function I(){m.value&&Object.entries(m.value).forEach(([C,_])=>{_.$watch();}),v=g.run(()=>{let C=vue.computed(()=>i.value),_=vue.computed(()=>x.value.$debounce),J=vue.computed(()=>x.value.$lazy!=null?x.value.$lazy:vue.unref(f.lazy)),L=vue.computed(()=>x.value.$rewardEarly!=null?x.value.$rewardEarly:vue.unref(f.rewardEarly)),ce=vue.computed(()=>x.value.$clearExternalErrorsOnChange!=null?x.value.$clearExternalErrorsOnChange:vue.unref(f.clearExternalErrorsOnChange)),vt=vue.computed(()=>x.value.$autoDirty!=null?x.value.$autoDirty:vue.unref(f.autoDirty)),Ue=vue.computed(()=>Object.entries(m.value).some(([te,Y])=>Y.$validating)),De=vue.computed(()=>fe.value&&!$e.value&&i.value),ke=vue.computed(()=>De.value?Fe({field:{$dirty:i.value,$externalErrors:d?.value,$rules:m.value}}):[]),He=vue.computed(()=>Fe({field:{$dirty:i.value,$externalErrors:d?.value,$rules:m.value},silent:!0})),qe=vue.computed(()=>!(fe.value||$e.value)),$e=vue.computed(()=>A.value||!L.value?Object.entries(m.value).some(([te,Y])=>Y.$pending):!1),fe=vue.computed(()=>d?.value?.length?!0:z(m.value)?!1:!L.value||L.value&&A.value?Object.entries(m.value).some(([te,Y])=>!Y.$valid):!1),Le=vue.computed(()=>a),xe=vue.computed(()=>z(m.value)?!1:i.value&&!z(e.value)&&!Ue.value?d?.value?.length?!1:L.value?Object.entries(m.value).every(([te,Y])=>Y.$valid):!fe.value:!1),yt=vue.computed(()=>Object.entries(m.value).some(([te,Y])=>Y._haveAsync));function gt(){$?.fields&&Object.entries($.fields).forEach(([te,Y])=>{let mt=vue.effectScope();ze[te]=mt.run(()=>{let Je=vue.ref();return vue.watchEffect(()=>{Je.value=Y({$dirty:i.value,$externalErrors:d?.value??[],$value:e,$rules:m.value,$error:De.value,$pending:$e.value,$invalid:fe.value,$valid:xe.value,$errors:ke.value,$ready:qe.value,$silentErrors:He.value,$anyDirty:C.value,$name:Le.value});}),Je});});}let ze={};return gt(),vue.watch(xe,te=>{te&&(A.value=!1);}),{$error:De,$pending:$e,$invalid:fe,$valid:xe,$debounce:_,$lazy:J,$errors:ke,$ready:qe,$silentErrors:He,$rewardEarly:L,$autoDirty:vt,$clearExternalErrorsOnChange:ce,$anyDirty:C,$name:Le,haveAnyAsyncRule:yt,$shortcuts:ze,$validating:Ue}}),G=vue.watch(e,()=>{v.$autoDirty.value&&(i.value||(i.value=!0)),t.value instanceof Function&&B(),w(),v.$rewardEarly.value!==!0&&v.$clearExternalErrorsOnChange.value&&y();},{deep:b?!0:he?1:!0}),o=vue.watch(i,()=>{l.setDirtyEntry(n,i.value);}),u=vue.watch(v.$valid,C=>{v.$rewardEarly.value&&C&&(A.value=!1);}),R=vue.watch(v.haveAnyAsyncRule,V);}function P(){Object.values(m.value).forEach(C=>{C.$validate();});}let m=vue.ref(),x=vue.ref();B();function W(){y(),i.value=!1,Object.entries(m.value).forEach(([C,_])=>{_.$reset();}),!v.$lazy.value&&v.$autoDirty.value&&Object.values(m.value).forEach(C=>C.$validate());}function K(C=!0){i.value||(i.value=!0,C&&w());}async function U(){try{let C=e.value;if(A.value=!0,!i.value)i.value=!0;else if(v.$autoDirty.value&&i.value&&!v.$pending.value)return {result:!v.$error.value,data:C};return z(m.value)?{result:!0,data:C}:{result:(await Promise.allSettled(Object.entries(m.value).map(([L,ce])=>ce.$validate()))).every(L=>L.status==="fulfilled"?L.value===!0:!1),data:C}}catch{return {result:!1,data:e.value}}}function s(){D(),e.value=tt(e,h),W();}function c(C=!0){return i.value?e.value:null}function y(){d?.value?.length&&(d.value=[]);}!v.$lazy.value&&!i.value&&v.$autoDirty.value&&w();let{$anyDirty:S,$error:F,$errors:p,$invalid:O,$name:M,$pending:k,$ready:ee,$silentErrors:ie,$valid:ae,$shortcuts:T,$validating:j}=v;return vue.reactive({$dirty:i,$error:F,$errors:p,$valid:ae,$invalid:O,$pending:k,$silentErrors:ie,$anyDirty:S,$ready:ee,$name:M,$externalErrors:d,$value:e,$rules:m,...T,$reset:W,$touch:K,$validate:U,$unwatch:D,$watch:I,$resetAll:s,$extractDirtyFields:c,$clearExternalErrors:y})}function st({$id:e,path:t,index:r,options:n,storage:a,stateValue:l,customMessages:f,rules:d,externalErrors:E,initialState:b,shortcuts:h,fieldName:$}){let g=d.$key?d.$key:Oe(),v=`${t}.${String(g)}`;typeof l.value=="object"&&l.value!=null&&(l.value.$id?v=`${t}.${l.value.$id}`:Object.defineProperties(l.value,{$id:{value:g,enumerable:!1,configurable:!1,writable:!1}}));let i=me({state:l,rulesDef:vue.toRef(()=>d),customMessages:f,path:v,storage:a,options:n,externalErrors:vue.toRef(E?.value??[],r),initialState:b?.[r],shortcuts:h,fieldName:$});if(i){let A=l.value?.$id;i.$id=A??String(g),a.addArrayStatus(e,i.$id,i);}return i}function it({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:l,externalErrors:f,initialState:d,shortcuts:E,fieldName:b}){let h=vue.effectScope(),$,g=vue.effectScope(),v;if(!Array.isArray(e.value)&&!t.value.$each)return null;let i=vue.ref(),A=vue.ref(e.value),G,u=vue.ref({}),o=a.getCollectionsEntry(n);v=g.run(()=>({isPrimitiveArray:vue.computed(()=>Array.isArray(e.value)&&e.value.length?e.value.some(c=>typeof c!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(c=>pe(c)):!1)})),R(),B();function R(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?(i.value=Oe(),Object.defineProperties(e.value,{$id:{value:i.value,enumerable:!1,configurable:!1,writable:!1}})):e.value?.$id&&(i.value=e.value.$id)),!v.isPrimitiveArray.value&&(A.value=u.value.$value,Array.isArray(e.value)?o.value=e.value.map((s,c)=>{let y=we(t.value.$each,vue.toRef(()=>s),c),S=st({$id:i.value,path:n,rules:y??{},stateValue:vue.toRef(()=>s),index:c,options:l,storage:a,externalErrors:vue.toRef(f?.value??{},"$each"),initialState:d[c],shortcuts:E,fieldName:b});return S||null}).filter(s=>!!s):o.value=[],u.value=Te({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:l,externalErrors:vue.toRef(f?.value??{},"$errors"),$isArray:!0,initialState:d,shortcuts:E,fieldName:b}));}function w(){if(Array.isArray(e.value)){let s=re(o.value);o.value=e.value.map((c,y)=>{let S=vue.toRef(()=>c);if(c.$id&&o.value.find(F=>F.$id===c.$id)){let F=a.getArrayStatus(i.value,c.$id);return F?(F.$value=S,F):null}else {let F=we(t.value.$each,S,y);if(F){let p=st({$id:i.value,path:n,rules:F,stateValue:S,index:y,options:l,storage:a,externalErrors:vue.toRef(f?.value??{},"$each"),initialState:d[y],shortcuts:E,fieldName:b});return p||null}}}).filter(c=>!!c),s.filter(c=>!e.value.find(y=>c.$id===y.$id)).forEach((c,y)=>{a.deleteArrayStatus(i.value,y.toString());});}else o.value=[];}function B(){G=vue.watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?R():w();},{deep:he?1:!0,flush:"pre"}),$=h.run(()=>{let s=vue.computed(()=>u.value.$dirty&&o.value.every(T=>T.$dirty)),c=vue.computed(()=>u.value.$anyDirty||o.value.some(T=>T.$dirty)),y=vue.computed(()=>u.value.$invalid||o.value.some(T=>T.$invalid)),S=vue.computed(()=>(z(u.value.$rules)?!0:u.value.$valid)&&o.value.every(T=>T.$valid)),F=vue.computed(()=>u.value.$error||o.value.some(T=>T.$error)),p=vue.computed(()=>!(y.value||O.value)),O=vue.computed(()=>u.value.$pending||o.value.some(T=>T.$pending)),M=vue.computed(()=>({$errors:u.value.$errors,$each:o.value.map(T=>T.$errors)})),k=vue.computed(()=>({$errors:u.value.$silentErrors,$each:o.value.map(T=>T.$silentErrors)})),ee=vue.computed(()=>b);function ie(){E?.collections&&Object.entries(E?.collections).forEach(([T,j])=>{let C=vue.effectScope();ae[T]=C.run(()=>{let _=vue.ref();return vue.watchEffect(()=>{_.value=j({$dirty:s.value,$error:F.value,$pending:O.value,$invalid:y.value,$valid:S.value,$errors:M.value,$ready:p.value,$silentErrors:k.value,$anyDirty:c.value,$name:ee.value,$each:o.value,$field:u.value,$value:e});}),_});});}let ae={};return ie(),{$dirty:s,$anyDirty:c,$invalid:y,$valid:S,$error:F,$pending:O,$errors:M,$silentErrors:k,$ready:p,$name:ee,$shortcuts:ae}}),v.isPrimitiveArray.value&&(console.warn(`${n} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`),G());}function V(){G&&G(),u.value&&u.value.$unwatch(),o.value&&o.value.forEach(s=>{"$dirty"in s&&s.$unwatch();}),h.stop(),h=vue.effectScope(),g.stop(),g=vue.effectScope(!0);}function D(s=!0){u.value.$touch(s),o.value.forEach(c=>{c.$touch(s);});}function I(){u.value.$reset(),o.value.forEach(s=>{s.$reset();});}async function P(){let s=e.value;try{return {result:(await Promise.allSettled([u.value.$validate(),...o.value.map(S=>S.$validate())])).every(S=>S.status==="fulfilled"?S.value.result===!0:!1),data:s}}catch{return {result:!1,data:s}}}function m(){u.value.$clearExternalErrors(),o.value.forEach(s=>{s.$clearExternalErrors();});}function x(s=!0){let c=o.value.map(y=>{if(Me(y))return y.$extractDirtyFields(s)});return s&&(c=c.filter(y=>q(y)?!z(y):!!y)),c}function W(){V(),rt(e,d),I();}let{$shortcuts:K,...U}=$;return vue.reactive({$field:u,...U,...K,$each:o,$value:e,$validate:P,$unwatch:V,$watch:B,$touch:D,$reset:I,$resetAll:W,$extractDirtyFields:x,$clearExternalErrors:m})}function _e({scopeRules:e,state:t,customMessages:r,path:n="",rootRules:a,storage:l,options:f,externalErrors:d,validationGroups:E,initialState:b,shortcuts:h,fieldName:$}){let g,v,i=null,A=null;function o(s=!0){R.value=null,vue.triggerRef(R);let c=Object.fromEntries(Object.entries(e.value).map(([p,O])=>{if(O){let M=vue.toRef(t.value,p),k=vue.toRef(()=>O),ee=vue.toRef(d?.value,p);return [p,me({state:M,rulesDef:k,customMessages:r,path:n?`${n}.${p}`:p,storage:l,options:f,externalErrors:ee,initialState:b?.[p],shortcuts:h,fieldName:p})]}return []}).filter(p=>!!p.length&&p[1]!=null)),y=Object.fromEntries(Object.entries(vue.unref(d)??{}).filter(([p])=>!(p in e.value)).map(([p,O])=>{if(O){let M=vue.toRef(t.value,p),k=vue.toRef(()=>({}));return [p,me({state:M,rulesDef:k,customMessages:r,path:n?`${n}.${p}`:p,storage:l,options:f,externalErrors:vue.toRef(d?.value??{},p),initialState:b?.[p],shortcuts:h,fieldName:p})]}return []})),S=Object.fromEntries(Object.entries(t.value).filter(([p])=>!(p in e.value)&&!(p in(y.value??{}))).map(([p,O])=>{let M=vue.toRef(t.value,p),k=vue.toRef(()=>({}));return [p,me({state:M,rulesDef:k,customMessages:r,path:n?`${n}.${p}`:p,storage:l,options:f,externalErrors:vue.toRef(d?.value??{},p),initialState:b?.[p],shortcuts:h,fieldName:p})]})),F=Object.fromEntries(Object.entries(E?.(c)??{}).map(([p,O])=>O.length?[p,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$valid"].map(M=>[M,Qe(vue.toRef(()=>O),M)])),...Object.fromEntries(["$errors","$silentErrors"].map(M=>[M,Xe(vue.toRef(()=>O),M)]))}]:[]));R.value={...c,...y,...S,...F},s&&I();}let R=l.getFieldsEntry(n);o();function w(){A?.(),Object.values(R.value).forEach(s=>{s.$reset();}),D();}function B(s=!0){Object.values(R.value).forEach(c=>{c.$touch(s);});}async function V(){try{let s=t.value;return {result:(await Promise.allSettled(Object.values(R.value).map(S=>S.$validate()))).every(S=>S.status==="fulfilled"?S.value.result===!0:!1),data:s}}catch{return {result:!1,data:t.value}}}function D(){d?.value&&(A=vue.watch(d,()=>{P(),o();},{deep:!0}));}function I(){a&&(i=vue.watch(a,()=>{P(),o();},{deep:!0,flush:"post"})),D(),g=vue.effectScope(),v=g.run(()=>{let s=vue.computed(()=>!!Object.entries(R.value).length&&Object.entries(R.value).every(([T,j])=>j?.$dirty)),c=vue.computed(()=>Object.entries(R.value).some(([T,j])=>j?.$dirty)),y=vue.computed(()=>Object.entries(R.value).some(([T,j])=>j?.$invalid)),S=vue.computed(()=>Object.entries(R.value).every(([T,j])=>j?.$valid)),F=vue.computed(()=>s.value&&!O.value&&y.value),p=vue.computed(()=>vue.unref(f.autoDirty)?c.value&&!(y.value||O.value):!(y.value||O.value)),O=vue.computed(()=>Object.entries(R.value).some(([T,j])=>j?.$pending)),M=vue.computed(()=>Object.fromEntries(Object.entries(R.value).map(([T,j])=>[T,j?.$errors]))),k=vue.computed(()=>Object.fromEntries(Object.entries(R.value).map(([T,j])=>[T,j?.$silentErrors]))),ee=vue.computed(()=>$);function ie(){h?.nested&&Object.entries(h.nested).forEach(([T,j])=>{let C=vue.effectScope();ae[T]=C.run(()=>{let _=vue.ref();return vue.watchEffect(()=>{_.value=j({$dirty:s.value,$value:t,$error:F.value,$pending:O.value,$invalid:y.value,$valid:S.value,$ready:p.value,$anyDirty:c.value,$name:ee.value,$silentErrors:k.value,$errors:M.value,$fields:R.value});}),_});});}let ae={};return ie(),{$dirty:s,$anyDirty:c,$invalid:y,$valid:S,$error:F,$pending:O,$errors:M,$silentErrors:k,$ready:p,$name:ee,$shortcuts:ae}});}function P(){R.value&&Object.entries(R.value).forEach(([s,c])=>{c.$unwatch();}),i?.(),A?.(),g.stop(),g=vue.effectScope();}function m(){Object.entries(R.value).forEach(([s,c])=>{c.$clearExternalErrors();});}function x(){P(),Re(t,b??{}),o(!1),w(),I();}function W(s=!0){let c=Object.entries(R.value).map(([y,S])=>[y,S.$extractDirtyFields(s)]);return s&&(c=c.filter(([y,S])=>q(S)?!z(S):Array.isArray(S)?S.length:!!S)),Object.fromEntries(c)}let{$shortcuts:K,...U}=v;return vue.reactive({...U,...K,$fields:R,$value:t,$resetAll:x,$reset:w,$touch:B,$validate:V,$unwatch:P,$watch:I,$clearExternalErrors:m,$extractDirtyFields:W})}function me({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:l,externalErrors:f,index:d,initialState:E,shortcuts:b,onUnwatch:h,fieldName:$}){return at(t,e)?it({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:l,index:d,externalErrors:f,initialState:E,fieldName:$,shortcuts:b}):nt(e,t)&&et(e)?_e({scopeRules:t,state:e,customMessages:r,path:n,storage:a,options:l,index:d,initialState:E,shortcuts:b,fieldName:$,externalErrors:f}):lt(t)?Te({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:l,index:d,externalErrors:f,onUnwatch:h,shortcuts:b,initialState:E,fieldName:$}):null}function Ne({initialState:e,options:t,scopeRules:r,state:n,customRules:a,shortcuts:l}){let f=Ae();return vue.reactive(_e({rootRules:r,scopeRules:r,state:n,customMessages:a?.(),storage:f,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:l,fieldName:"root"}))}function Ge(e,t,r){let n={autoDirty:t?.autoDirty??!0,lazy:t?.lazy??!1,rewardEarly:t?.rewardEarly??!1,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange??!0};function a(l,f,d){let E=vue.isRef(f)?f:vue.computed(typeof f=="function"?f:()=>f),b={...n,...d},h=vue.isRef(l)?l:vue.ref(l),$=re(vue.toRaw(h.value));return {r$:Ne({scopeRules:E,state:h,options:b,initialState:$,customRules:e,shortcuts:r})}}return a}var pt=Ge();function Be(){function e(t,r){return r}return e}var We=Be();function dt({rules:e,modifiers:t,shortcuts:r}){let n=Ge(e,t,r),a=Be();return {useRegle:n,inferRules:a}}exports.InternalRuleType=Ce;exports.createRule=Pe;exports.defineRegleConfig=dt;exports.inferRules=We;exports.unwrapRuleParameters=H;exports.useRegle=pt;
|
package/dist/index.d.cts
CHANGED
|
@@ -16,6 +16,7 @@ type DeepMaybeRef<T extends Record<string, any>> = {
|
|
|
16
16
|
type ExcludeByType<T, U> = {
|
|
17
17
|
[K in keyof T as T[K] extends U ? never : K]: T[K] extends U ? never : T[K];
|
|
18
18
|
};
|
|
19
|
+
type PrimitiveTypes = string | number | boolean | bigint | Date | File;
|
|
19
20
|
type NoInferLegacy<A extends any> = [A][A extends any ? 0 : never];
|
|
20
21
|
|
|
21
22
|
type ArrayElement<T> = T extends Array<infer U> ? U : never;
|
|
@@ -324,7 +325,7 @@ declare const useRegle: useRegleFn<Partial<AllRulesDeclarations>, RegleShortcutD
|
|
|
324
325
|
|
|
325
326
|
interface inferRulesFn<TCustomRules extends Partial<AllRulesDeclarations>> {
|
|
326
327
|
<TState extends Record<string, any>, TRules extends ReglePartialRuleTree<Unwrap<TState>, Partial<AllRulesDeclarations> & TCustomRules> & TValid, TValid = isDeepExact<NoInferLegacy<TRules>, ReglePartialRuleTree<Unwrap<TState>, Partial<AllRulesDeclarations> & TCustomRules>> extends true ? {} : never>(state: MaybeRef<TState> | DeepReactiveState<TState>, rulesFactory: TRules): TRules;
|
|
327
|
-
<TState extends
|
|
328
|
+
<TState extends PrimitiveTypes, TRules extends RegleRuleDecl>(state: MaybeRef<TState>, rulesFactory: TRules): TRules;
|
|
328
329
|
}
|
|
329
330
|
declare const inferRules: inferRulesFn<Partial<AllRulesDeclarations>>;
|
|
330
331
|
|
|
@@ -572,8 +573,8 @@ type InlineRuleDeclaration<TValue extends any = any, TParams extends any[] = any
|
|
|
572
573
|
* */
|
|
573
574
|
type FormRuleDeclaration<TValue extends any, TParams extends any[], TReturn extends RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition> = RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition>, TMetadata extends RegleRuleMetadataDefinition = TReturn extends Promise<infer M> ? M : TReturn, TAsync extends boolean = boolean> = InlineRuleDeclaration<TValue, TParams, TReturn> | RegleRuleDefinition<TValue, TParams, TAsync, TMetadata>;
|
|
574
575
|
|
|
575
|
-
type RegleErrorTree<TState = Record<string, any> | any[]
|
|
576
|
-
readonly [K in keyof TState]: RegleValidationErrors<TState[K]>;
|
|
576
|
+
type RegleErrorTree<TState = MaybeRef<Record<string, any> | any[]>> = {
|
|
577
|
+
readonly [K in keyof UnwrapNestedRefs<TState>]: RegleValidationErrors<UnwrapNestedRefs<TState>[K]>;
|
|
577
578
|
};
|
|
578
579
|
type RegleExternalErrorTree<TState = Record<string, any> | any[]> = PartialDeep<RegleErrorTree<TState>, {
|
|
579
580
|
recurseIntoArrays: true;
|
|
@@ -583,6 +584,13 @@ type RegleCollectionErrors<TState extends Record<string, any>> = {
|
|
|
583
584
|
readonly $errors: string[];
|
|
584
585
|
readonly $each: RegleValidationErrors<TState>[];
|
|
585
586
|
};
|
|
587
|
+
type RegleResult<Data extends Record<string, any> | any[] | unknown, TRules extends ReglePartialRuleTree<any>> = {
|
|
588
|
+
result: false;
|
|
589
|
+
data: Data;
|
|
590
|
+
} | {
|
|
591
|
+
result: true;
|
|
592
|
+
data: Data extends Array<infer U extends Record<string, any>> ? DeepSafeFormState<U, TRules>[] : Data extends Date | File ? SafeFieldProperty<Data, TRules> : Data extends Record<string, any> ? Prettify<DeepSafeFormState<Data, TRules>> : Data;
|
|
593
|
+
};
|
|
586
594
|
|
|
587
595
|
/**
|
|
588
596
|
* @public
|
|
@@ -604,7 +612,7 @@ type RegleStatus<TState extends Record<string, any> = Record<string, any>, TRule
|
|
|
604
612
|
readonly $errors: RegleErrorTree<TState>;
|
|
605
613
|
readonly $silentErrors: RegleErrorTree<TState>;
|
|
606
614
|
$extractDirtyFields: (filterNullishValues?: boolean) => PartialDeep<TState>;
|
|
607
|
-
$validate: () => Promise<
|
|
615
|
+
$validate: () => Promise<RegleResult<TState, TRules>>;
|
|
608
616
|
} & ([TShortcuts['nested']] extends [never] ? {} : {
|
|
609
617
|
[K in keyof TShortcuts['nested']]: ReturnType<NonNullable<TShortcuts['nested']>[K]>;
|
|
610
618
|
});
|
|
@@ -621,7 +629,7 @@ type RegleFieldStatus<TState extends any = any, TRules extends RegleFormProperty
|
|
|
621
629
|
readonly $silentErrors: string[];
|
|
622
630
|
readonly $externalErrors: string[];
|
|
623
631
|
$extractDirtyFields: (filterNullishValues?: boolean) => Maybe<TState>;
|
|
624
|
-
$validate: () => Promise<
|
|
632
|
+
$validate: () => Promise<RegleResult<TState, TRules>>;
|
|
625
633
|
readonly $rules: {
|
|
626
634
|
readonly [TRuleKey in keyof Omit<TRules, '$each' | keyof FieldRegleBehaviourOptions>]: RegleRuleStatus<TState, TRules[TRuleKey] extends RegleRuleDefinition<any, infer TParams, any> ? TParams : [], TRules[TRuleKey] extends RegleRuleDefinition<any, any, any, infer TMetadata> ? TMetadata : TRules[TRuleKey] extends InlineRuleDeclaration<any, any[], infer TMetadata> ? TMetadata extends Promise<infer P> ? P : TMetadata : any>;
|
|
627
635
|
};
|
|
@@ -678,7 +686,7 @@ type RegleCollectionStatus<TState extends any[] = any[], TRules extends ReglePar
|
|
|
678
686
|
readonly $errors: RegleCollectionErrors<TState>;
|
|
679
687
|
readonly $silentErrors: RegleCollectionErrors<TState>;
|
|
680
688
|
$extractDirtyFields: (filterNullishValues?: boolean) => PartialDeep<TState>;
|
|
681
|
-
$validate: () => Promise<
|
|
689
|
+
$validate: () => Promise<RegleResult<TState, TRules>>;
|
|
682
690
|
} & ([TShortcuts['collections']] extends [never] ? {} : {
|
|
683
691
|
[K in keyof TShortcuts['collections']]: ReturnType<NonNullable<TShortcuts['collections']>[K]>;
|
|
684
692
|
});
|
|
@@ -731,4 +739,4 @@ declare function defineRegleConfig<TCustomRules extends Partial<AllRulesDeclarat
|
|
|
731
739
|
inferRules: inferRulesFn<TCustomRules>;
|
|
732
740
|
};
|
|
733
741
|
|
|
734
|
-
export { type AllRulesDeclarations, type DeepMaybeRef, type FormRuleDeclaration, type InferRegleRoot, type InferRegleRule, type InferRegleRules, type InferRegleShortcuts, type InlineRuleDeclaration, InternalRuleType, type LocalRegleBehaviourOptions, type Maybe, type ParamDecl, type Regle, type RegleBehaviourOptions, type RegleCollectionErrors, type RegleCollectionRuleDecl, type RegleCollectionRuleDefinition, type RegleCollectionStatus, type RegleCommonStatus, type RegleComputedRules, type RegleEnforceCustomRequiredRules, type RegleEnforceRequiredRules, type RegleErrorTree, type RegleExternalErrorTree, type RegleFieldStatus, type RegleFormPropertyType, type RegleInternalRuleDefs, type ReglePartialRuleTree, type RegleRoot, type RegleRuleCore, type RegleRuleDecl, type RegleRuleDefinition, type RegleRuleDefinitionProcessor, type RegleRuleDefinitionWithMetadataProcessor, type RegleRuleInit, type RegleRuleMetadataConsumer, type RegleRuleMetadataDefinition, type RegleRuleRaw, type RegleRuleStatus, type RegleRuleWithParamsDefinition, type RegleStatus, type RegleUniversalParams, type RegleValidationErrors, type RegleValidationGroupEntry, type RegleValidationGroupOutput, type RegleRuleTree as RegleValidationTree, type Unwrap, type UnwrapRegleUniversalParams, type UnwrapRuleWithParams, createRule, defineRegleConfig, inferRules, unwrapRuleParameters, useRegle };
|
|
742
|
+
export { type AllRulesDeclarations, type DeepMaybeRef, type FormRuleDeclaration, type InferRegleRoot, type InferRegleRule, type InferRegleRules, type InferRegleShortcuts, type InlineRuleDeclaration, InternalRuleType, type LocalRegleBehaviourOptions, type Maybe, type ParamDecl, type Regle, type RegleBehaviourOptions, type RegleCollectionErrors, type RegleCollectionRuleDecl, type RegleCollectionRuleDefinition, type RegleCollectionStatus, type RegleCommonStatus, type RegleComputedRules, type RegleEnforceCustomRequiredRules, type RegleEnforceRequiredRules, type RegleErrorTree, type RegleExternalErrorTree, type RegleFieldStatus, type RegleFormPropertyType, type RegleInternalRuleDefs, type ReglePartialRuleTree, type RegleResult, type RegleRoot, type RegleRuleCore, type RegleRuleDecl, type RegleRuleDefinition, type RegleRuleDefinitionProcessor, type RegleRuleDefinitionWithMetadataProcessor, type RegleRuleInit, type RegleRuleMetadataConsumer, type RegleRuleMetadataDefinition, type RegleRuleRaw, type RegleRuleStatus, type RegleRuleWithParamsDefinition, type RegleStatus, type RegleUniversalParams, type RegleValidationErrors, type RegleValidationGroupEntry, type RegleValidationGroupOutput, type RegleRuleTree as RegleValidationTree, type Unwrap, type UnwrapRegleUniversalParams, type UnwrapRuleWithParams, createRule, defineRegleConfig, inferRules, unwrapRuleParameters, useRegle };
|
package/dist/index.d.ts
CHANGED
|
@@ -16,6 +16,7 @@ type DeepMaybeRef<T extends Record<string, any>> = {
|
|
|
16
16
|
type ExcludeByType<T, U> = {
|
|
17
17
|
[K in keyof T as T[K] extends U ? never : K]: T[K] extends U ? never : T[K];
|
|
18
18
|
};
|
|
19
|
+
type PrimitiveTypes = string | number | boolean | bigint | Date | File;
|
|
19
20
|
type NoInferLegacy<A extends any> = [A][A extends any ? 0 : never];
|
|
20
21
|
|
|
21
22
|
type ArrayElement<T> = T extends Array<infer U> ? U : never;
|
|
@@ -324,7 +325,7 @@ declare const useRegle: useRegleFn<Partial<AllRulesDeclarations>, RegleShortcutD
|
|
|
324
325
|
|
|
325
326
|
interface inferRulesFn<TCustomRules extends Partial<AllRulesDeclarations>> {
|
|
326
327
|
<TState extends Record<string, any>, TRules extends ReglePartialRuleTree<Unwrap<TState>, Partial<AllRulesDeclarations> & TCustomRules> & TValid, TValid = isDeepExact<NoInferLegacy<TRules>, ReglePartialRuleTree<Unwrap<TState>, Partial<AllRulesDeclarations> & TCustomRules>> extends true ? {} : never>(state: MaybeRef<TState> | DeepReactiveState<TState>, rulesFactory: TRules): TRules;
|
|
327
|
-
<TState extends
|
|
328
|
+
<TState extends PrimitiveTypes, TRules extends RegleRuleDecl>(state: MaybeRef<TState>, rulesFactory: TRules): TRules;
|
|
328
329
|
}
|
|
329
330
|
declare const inferRules: inferRulesFn<Partial<AllRulesDeclarations>>;
|
|
330
331
|
|
|
@@ -572,8 +573,8 @@ type InlineRuleDeclaration<TValue extends any = any, TParams extends any[] = any
|
|
|
572
573
|
* */
|
|
573
574
|
type FormRuleDeclaration<TValue extends any, TParams extends any[], TReturn extends RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition> = RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition>, TMetadata extends RegleRuleMetadataDefinition = TReturn extends Promise<infer M> ? M : TReturn, TAsync extends boolean = boolean> = InlineRuleDeclaration<TValue, TParams, TReturn> | RegleRuleDefinition<TValue, TParams, TAsync, TMetadata>;
|
|
574
575
|
|
|
575
|
-
type RegleErrorTree<TState = Record<string, any> | any[]
|
|
576
|
-
readonly [K in keyof TState]: RegleValidationErrors<TState[K]>;
|
|
576
|
+
type RegleErrorTree<TState = MaybeRef<Record<string, any> | any[]>> = {
|
|
577
|
+
readonly [K in keyof UnwrapNestedRefs<TState>]: RegleValidationErrors<UnwrapNestedRefs<TState>[K]>;
|
|
577
578
|
};
|
|
578
579
|
type RegleExternalErrorTree<TState = Record<string, any> | any[]> = PartialDeep<RegleErrorTree<TState>, {
|
|
579
580
|
recurseIntoArrays: true;
|
|
@@ -583,6 +584,13 @@ type RegleCollectionErrors<TState extends Record<string, any>> = {
|
|
|
583
584
|
readonly $errors: string[];
|
|
584
585
|
readonly $each: RegleValidationErrors<TState>[];
|
|
585
586
|
};
|
|
587
|
+
type RegleResult<Data extends Record<string, any> | any[] | unknown, TRules extends ReglePartialRuleTree<any>> = {
|
|
588
|
+
result: false;
|
|
589
|
+
data: Data;
|
|
590
|
+
} | {
|
|
591
|
+
result: true;
|
|
592
|
+
data: Data extends Array<infer U extends Record<string, any>> ? DeepSafeFormState<U, TRules>[] : Data extends Date | File ? SafeFieldProperty<Data, TRules> : Data extends Record<string, any> ? Prettify<DeepSafeFormState<Data, TRules>> : Data;
|
|
593
|
+
};
|
|
586
594
|
|
|
587
595
|
/**
|
|
588
596
|
* @public
|
|
@@ -604,7 +612,7 @@ type RegleStatus<TState extends Record<string, any> = Record<string, any>, TRule
|
|
|
604
612
|
readonly $errors: RegleErrorTree<TState>;
|
|
605
613
|
readonly $silentErrors: RegleErrorTree<TState>;
|
|
606
614
|
$extractDirtyFields: (filterNullishValues?: boolean) => PartialDeep<TState>;
|
|
607
|
-
$validate: () => Promise<
|
|
615
|
+
$validate: () => Promise<RegleResult<TState, TRules>>;
|
|
608
616
|
} & ([TShortcuts['nested']] extends [never] ? {} : {
|
|
609
617
|
[K in keyof TShortcuts['nested']]: ReturnType<NonNullable<TShortcuts['nested']>[K]>;
|
|
610
618
|
});
|
|
@@ -621,7 +629,7 @@ type RegleFieldStatus<TState extends any = any, TRules extends RegleFormProperty
|
|
|
621
629
|
readonly $silentErrors: string[];
|
|
622
630
|
readonly $externalErrors: string[];
|
|
623
631
|
$extractDirtyFields: (filterNullishValues?: boolean) => Maybe<TState>;
|
|
624
|
-
$validate: () => Promise<
|
|
632
|
+
$validate: () => Promise<RegleResult<TState, TRules>>;
|
|
625
633
|
readonly $rules: {
|
|
626
634
|
readonly [TRuleKey in keyof Omit<TRules, '$each' | keyof FieldRegleBehaviourOptions>]: RegleRuleStatus<TState, TRules[TRuleKey] extends RegleRuleDefinition<any, infer TParams, any> ? TParams : [], TRules[TRuleKey] extends RegleRuleDefinition<any, any, any, infer TMetadata> ? TMetadata : TRules[TRuleKey] extends InlineRuleDeclaration<any, any[], infer TMetadata> ? TMetadata extends Promise<infer P> ? P : TMetadata : any>;
|
|
627
635
|
};
|
|
@@ -678,7 +686,7 @@ type RegleCollectionStatus<TState extends any[] = any[], TRules extends ReglePar
|
|
|
678
686
|
readonly $errors: RegleCollectionErrors<TState>;
|
|
679
687
|
readonly $silentErrors: RegleCollectionErrors<TState>;
|
|
680
688
|
$extractDirtyFields: (filterNullishValues?: boolean) => PartialDeep<TState>;
|
|
681
|
-
$validate: () => Promise<
|
|
689
|
+
$validate: () => Promise<RegleResult<TState, TRules>>;
|
|
682
690
|
} & ([TShortcuts['collections']] extends [never] ? {} : {
|
|
683
691
|
[K in keyof TShortcuts['collections']]: ReturnType<NonNullable<TShortcuts['collections']>[K]>;
|
|
684
692
|
});
|
|
@@ -731,4 +739,4 @@ declare function defineRegleConfig<TCustomRules extends Partial<AllRulesDeclarat
|
|
|
731
739
|
inferRules: inferRulesFn<TCustomRules>;
|
|
732
740
|
};
|
|
733
741
|
|
|
734
|
-
export { type AllRulesDeclarations, type DeepMaybeRef, type FormRuleDeclaration, type InferRegleRoot, type InferRegleRule, type InferRegleRules, type InferRegleShortcuts, type InlineRuleDeclaration, InternalRuleType, type LocalRegleBehaviourOptions, type Maybe, type ParamDecl, type Regle, type RegleBehaviourOptions, type RegleCollectionErrors, type RegleCollectionRuleDecl, type RegleCollectionRuleDefinition, type RegleCollectionStatus, type RegleCommonStatus, type RegleComputedRules, type RegleEnforceCustomRequiredRules, type RegleEnforceRequiredRules, type RegleErrorTree, type RegleExternalErrorTree, type RegleFieldStatus, type RegleFormPropertyType, type RegleInternalRuleDefs, type ReglePartialRuleTree, type RegleRoot, type RegleRuleCore, type RegleRuleDecl, type RegleRuleDefinition, type RegleRuleDefinitionProcessor, type RegleRuleDefinitionWithMetadataProcessor, type RegleRuleInit, type RegleRuleMetadataConsumer, type RegleRuleMetadataDefinition, type RegleRuleRaw, type RegleRuleStatus, type RegleRuleWithParamsDefinition, type RegleStatus, type RegleUniversalParams, type RegleValidationErrors, type RegleValidationGroupEntry, type RegleValidationGroupOutput, type RegleRuleTree as RegleValidationTree, type Unwrap, type UnwrapRegleUniversalParams, type UnwrapRuleWithParams, createRule, defineRegleConfig, inferRules, unwrapRuleParameters, useRegle };
|
|
742
|
+
export { type AllRulesDeclarations, type DeepMaybeRef, type FormRuleDeclaration, type InferRegleRoot, type InferRegleRule, type InferRegleRules, type InferRegleShortcuts, type InlineRuleDeclaration, InternalRuleType, type LocalRegleBehaviourOptions, type Maybe, type ParamDecl, type Regle, type RegleBehaviourOptions, type RegleCollectionErrors, type RegleCollectionRuleDecl, type RegleCollectionRuleDefinition, type RegleCollectionStatus, type RegleCommonStatus, type RegleComputedRules, type RegleEnforceCustomRequiredRules, type RegleEnforceRequiredRules, type RegleErrorTree, type RegleExternalErrorTree, type RegleFieldStatus, type RegleFormPropertyType, type RegleInternalRuleDefs, type ReglePartialRuleTree, type RegleResult, type RegleRoot, type RegleRuleCore, type RegleRuleDecl, type RegleRuleDefinition, type RegleRuleDefinitionProcessor, type RegleRuleDefinitionWithMetadataProcessor, type RegleRuleInit, type RegleRuleMetadataConsumer, type RegleRuleMetadataDefinition, type RegleRuleRaw, type RegleRuleStatus, type RegleRuleWithParamsDefinition, type RegleStatus, type RegleUniversalParams, type RegleValidationErrors, type RegleValidationGroupEntry, type RegleValidationGroupOutput, type RegleRuleTree as RegleValidationTree, type Unwrap, type UnwrapRegleUniversalParams, type UnwrapRuleWithParams, createRule, defineRegleConfig, inferRules, unwrapRuleParameters, useRegle };
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import {unref,version,isRef,toRef,computed,ref,toRaw,reactive,shallowRef,onScopeDispose,triggerRef,watch,effectScope,watchEffect}from'vue';var Ce=(r=>(r.Inline="__inline",r.Async="__async",r))(Ce||{});function Qe(e,t){return computed(()=>e.value.some(r=>r[t]))}function Xe(e,t){return computed(()=>e.value.reduce((r,n)=>{let a=n[t]||[];return r.concat(a)},[]))}function q(e){return e.map(t=>t instanceof Function?t():unref(t))}function Ze(e){return e.map(t=>t instanceof Function||isRef(t)?t:toRef(()=>t))}function Ke(e){let t=e.toString();return (t.includes("=>")?t.split("=>")[0]:t).slice(t.indexOf("(")+1,t.indexOf(")")).split(",").map(o=>o.trim()).filter(o=>o.includes("=")).length+e.length}function Ie(e,...t){let{message:r,validator:n,active:a,type:o,...f}=e,p=o==="__async"||n.constructor.name==="AsyncFunction";return {...{validator($,...y){return e.validator($,...q(y.length?y:t))},message($,y){return typeof e.message=="function"?e.message($,{...y,$params:q(y.$params?.length?y.$params:t)}):e.message},active($,y){return typeof e.active=="function"?e.active($,{...y,$params:q(y.$params?.length?y.$params:t)}):e.active??!0},exec($){let y=e.validator($,...q(t)),d;return y instanceof Promise?y.then(v=>(d=v,typeof d=="object"&&"$valid"in d?d.$valid:typeof d=="boolean"?d:!1)):(d=y,typeof d=="object"&&"$valid"in d?d.$valid:typeof d=="boolean"?d:!1)}},...f,_validator:e.validator,_message:e.message,_active:e.active,_type:e.type,_patched:!1,_async:p,_params:Ze(t)}}function Pe(e){if(typeof e.validator=="function"){let r=Ie(e,...[]),n=e.validator.constructor.name==="AsyncFunction";if(Ke(e.validator)>1){let a=function(...o){return Ie(e,...o)};return a.validator=r.validator,a.message=r.message,a.active=r.active,a.type=r.type,a.exec=r.exec,a._validator=r.validator,a._message=r.message,a._active=r.active,a._type=e.type,a._patched=!1,a._async=n,a}else return r}throw new Error("Validator must be a function")}function L(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function et(e){return L(e.value)}function te(e){let t=e,r={}.toString.call(e).slice(8,-1);if(r=="Set"&&(t=new Set([...e].map(n=>te(n)))),r=="Map"&&(t=new Map([...e].map(n=>[te(n[0]),te(n[1])]))),r=="Date"&&(t=new Date(e.getTime())),r=="RegExp"&&(t=RegExp(e.source,ht(e))),r=="Array"||r=="Object"){t=Array.isArray(e)?[]:{};for(let n in e)t[n]=te(e[n]);}return t}function ht(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 we(e,t,r){return e instanceof Function?e(t,r??0):e}function tt(e,t){isRef(e)?e.value=t:e=t;}function rt(e,t){isRef(e)?e.value=[]:e=[],t.forEach((r,n)=>{let a=isRef(e)?e.value[n]:e[n];a={},fe(a,t[n]);});}function fe(e,t){Object.entries({...unref(e),...t}).forEach(([r,n])=>{let a=isRef(e)?e.value:e,o=isRef(t[r])?t[r]._value:t[r],f=isRef(a[r])?a[r].value:a[r];Array.isArray(a[r])?(a[r]=[],Array.isArray(o)&&o.forEach((p,T)=>{a[r][T]={},fe(a[r][T],o[T]);})):L(o)?fe(f,o):isRef(a[r])?a[r].value=o:a[r]=o;});}function J(e){return e==null?!0:e===!1?!1:e instanceof Date?isNaN(e.getTime()):Array.isArray(e)?e.length===0:typeof e=="object"&&e!=null?Object.keys(e).length===0:typeof e=="string"?!String(e.trim()).length:!1}function $e(e,t,r){let n,a=(...o)=>new Promise(f=>{clearTimeout(n),n=setTimeout(()=>{n=void 0,Promise.resolve(e.apply(this,[...o])).then(f);},t);});return a.cancel=()=>{clearTimeout(n),n=void 0;},a.doImmediately=(...o)=>new Promise(f=>{clearTimeout(n),n=setTimeout(()=>{n=void 0,Promise.resolve(e.apply(this,[...o])).then(f);},0);}),a}function Tt(e,t){let r=String(e).split("."),n=String(t).split(".");for(let a=0;a<Math.min(r.length,n.length);a++){let o=Number(r[a]),f=Number(n[a]);if(o>f)return 1;if(f>o)return -1;if(!isNaN(o)&&isNaN(f))return 1;if(isNaN(o)&&!isNaN(f))return -1}return 0}var Se=Tt(version,"3.5.0")!==-1;function Et(){return Math.floor(Math.random()*Date.now()).toString()}function Oe(){return typeof window>"u"?Et():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function Ae(){let e=shallowRef(new Map),t=shallowRef(new Map),r=shallowRef(new Map),n=shallowRef(new Map),a=shallowRef(new Map),o=shallowRef(new Map);function f(u){let l=t.value.get(u);if(l)return l;{let x=ref({});return t.value.set(u,x),x}}function p(u){let l=r.value.get(u);if(l)return l;{let x=ref([]);return r.value.set(u,x),x}}function T(u,l,x){o.value.set(`${u}-${l}`,x);}function S(u,l){return o.value.get(`${u}-${l}`)}function $(u,l){u&&l!=null&&o.value.delete(`${u}-${l}`);}function y(u,l){n.value.set(u,l);}function d(u){return n.value.get(u)??!1}function v(u,l){e.value.set(u,l);}function i(u,l){let x=e.value.get(u);return x?V(l,x)?{valid:!0}:{valid:!1}:void 0}function V(u,l){let x=Object.keys(l),A=Object.keys(u);return A.length!==x.length||!A.every(j=>x.includes(j))?!1:A.every(j=>{let b=u[j],P=l[j];return !P||!b||typeof b=="function"||typeof P=="function"||typeof b=="number"||typeof b=="boolean"?!1:b._params?b._params?.every((F,m)=>{if(typeof P=="number"||typeof P=="boolean")return !0;{let E=q(P._params),H=q(b._params);return E?.[m]===H?.[m]}}):!0})}function N(u){let l=a.value.get(u);if(l)return l;{let x=ref(!1),A=ref(!0),B=ref({}),j=ref(!1);return a.value.set(u,{$pending:x,$valid:A,$metadata:B,$validating:j}),{$pending:x,$valid:A,$metadata:B,$validating:j}}}return onScopeDispose(()=>{e.value.clear(),t.value.clear(),r.value.clear(),n.value.clear(),a.value.clear(),o.value.clear();}),{addRuleDeclEntry:v,setDirtyEntry:y,checkRuleDeclEntry:i,getDirtyState:d,trySetRuleStatusRef:N,getFieldsEntry:f,getCollectionsEntry:p,getArrayStatus:S,addArrayStatus:T,deleteArrayStatus:$,arrayStatusStorage:o}}function nt(e,t){return L(e.value)&&L(t.value)&&!Object.entries(t.value).some(r=>Re(r))}function at(e,t){return !!e.value&&"$each"in e.value||Array.isArray(t.value)}function lt(e){return !!e.value&&L(e.value)}function Re(e){return L(e)&&"_validator"in e}function pe(e){return typeof e.value!="function"}function Fe(e){return L(e)&&"$fields"in e}function Me({field:e,silent:t=!1}){return Object.entries(e.$rules??{}).map(([r,n])=>t||!n.$valid&&e.$dirty&&!n.$validating?n.$message:null).filter(r=>!!r).reduce((r,n)=>typeof n=="string"?r?.concat([n]):r?.concat(n),[]).concat(e.$dirty?e.$externalErrors??[]:[])}function ut({$dirty:e,customMessages:t,rule:r,ruleKey:n,state:a,path:o,storage:f,$debounce:p}){let T=effectScope(),S,$,y=ref(!1),{$pending:d,$valid:v,$metadata:i,$validating:V}=f.trySetRuleStatusRef(`${o}.${n}`);function N(){S=T.run(()=>{let b=computed(()=>({$invalid:!v.value,$params:H.value,...i.value})),P=computed(()=>pe(r)?typeof r.value.active=="function"?r.value.active(a.value,b.value):!!r.value.active:!0),F=computed(()=>{let h="",s=t?t[n]?.message:void 0;return s&&(typeof s=="function"?h=s(a.value,b.value):h=s),pe(r)&&(s&&!r.value._patched||(typeof r.value.message=="function"?h=r.value.message(a.value,b.value):h=r.value.message)),J(h)&&(h="Error",console.warn(`No error message defined for ${o}.${n}`)),h}),m=computed(()=>pe(r)&&r.value.type?r.value.type:n),E=computed(()=>pe(r)?r.value.validator:r.value),H=computed(()=>typeof r.value=="function"?[]:q(r.value._params??[])),C=computed(()=>`${o}.${m.value}`);return {$active:P,$message:F,$type:m,$validator:E,$params:H,$path:C}}),$=watch(S.$params,A,{deep:!0});}N();function u(){v.value=!0,e.value&&(d.value=!0);}async function l(){let b=S.$validator.value,P=b(a.value,...S.$params.value),F=!1,m=a.value;try{u();let E;if(P instanceof Promise?E=await P:E=P,a.value!==m)return !0;if(typeof E=="boolean")F=E;else {let{$valid:H,...C}=E;F=H,i.value=C;}}catch{F=!1;}finally{d.value=!1;}return F}let x=$e(l,p??200);async function A(){try{V.value=!0;let b=!1;if(Re(r.value)&&r.value._async)b=await x();else {let P=S.$validator.value,F=P(a.value,...S.$params.value);if(F 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(F!=null)if(typeof F=="boolean")b=F;else {let{$valid:m,...E}=F;b=m,i.value=E;}}return v.value=b,b}catch{return !1}finally{V.value=!1;}}function B(){v.value=!0,i.value={},d.value=!1,V.value=!1,N();}function j(){$(),T.stop(),T=effectScope();}return reactive({...S,$pending:d,$valid:v,$metadata:i,_haveAsync:y,$validating:V,$validate:A,$unwatch:j,$watch:N,$reset:B})}function be({state:e,rulesDef:t,customMessages:r,path:n,fieldName:a,storage:o,options:f,externalErrors:p,onUnwatch:T,$isArray:S,initialState:$,shortcuts:y}){let d=effectScope(),v,i=ref(!1),V=ref(!1),N,u,l,x,A=()=>{};function B(){let O=t.value,G=o.checkRuleDeclEntry(n,O);E.value=Object.fromEntries(Object.entries(O).filter(([W])=>W.startsWith("$"))),m.value=Object.fromEntries(Object.entries(t.value).filter(([W])=>!W.startsWith("$")).map(([W,X])=>{if(X){let Ee=toRef(()=>X);return [W,ut({$dirty:i,customMessages:r,rule:Ee,ruleKey:W,state:e,path:n,storage:o,$debounce:E.value.$debounce})]}return []}).filter(W=>!!W.length)),P(),j(),G?.valid!=null&&(i.value=o.getDirtyState(n),i.value&&A()),o.addRuleDeclEntry(n,O);}function j(){A=v.$debounce.value?$e(F,v.$debounce.value??v.haveAnyAsyncRule?100:0):F;}function b(){m.value&&Object.entries(m.value).forEach(([O,G])=>{G.$unwatch();}),l(),i.value&&o.setDirtyEntry(n,i.value),N?.(),u?.(),d.stop(),d=effectScope(),T?.(),x?.();}function P(){m.value&&Object.entries(m.value).forEach(([O,G])=>{G.$watch();}),v=d.run(()=>{let O=computed(()=>i.value),G=computed(()=>E.value.$debounce),W=computed(()=>E.value.$lazy!=null?E.value.$lazy:unref(f.lazy)),X=computed(()=>E.value.$rewardEarly!=null?E.value.$rewardEarly:unref(f.rewardEarly)),Ee=computed(()=>E.value.$clearExternalErrorsOnChange!=null?E.value.$clearExternalErrorsOnChange:unref(f.clearExternalErrorsOnChange)),pt=computed(()=>E.value.$autoDirty!=null?E.value.$autoDirty:unref(f.autoDirty)),Ue=computed(()=>Object.entries(m.value).some(([ee,z])=>z.$validating)),De=computed(()=>ce.value&&!ge.value&&i.value),We=computed(()=>De.value?Me({field:{$dirty:i.value,$externalErrors:p?.value,$rules:m.value}}):[]),He=computed(()=>Me({field:{$dirty:i.value,$externalErrors:p?.value,$rules:m.value},silent:!0})),qe=computed(()=>!(ce.value||ge.value)),ge=computed(()=>V.value||!X.value?Object.entries(m.value).some(([ee,z])=>z.$pending):!1),ce=computed(()=>p?.value?.length?!0:J(m.value)?!1:!X.value||X.value&&V.value?Object.entries(m.value).some(([ee,z])=>!z.$valid):!1),Le=computed(()=>a),xe=computed(()=>J(m.value)?!1:i.value&&!J(e.value)&&!Ue.value?p?.value?.length?!1:X.value?Object.entries(m.value).every(([ee,z])=>z.$valid):!ce.value:!1),dt=computed(()=>Object.entries(m.value).some(([ee,z])=>z._haveAsync));function vt(){y?.fields&&Object.entries(y.fields).forEach(([ee,z])=>{let yt=effectScope();ze[ee]=yt.run(()=>{let Je=ref();return watchEffect(()=>{Je.value=z({$dirty:i.value,$externalErrors:p?.value??[],$value:e,$rules:m.value,$error:De.value,$pending:ge.value,$invalid:ce.value,$valid:xe.value,$errors:We.value,$ready:qe.value,$silentErrors:He.value,$anyDirty:O.value,$name:Le.value});}),Je});});}let ze={};return vt(),watch(xe,ee=>{ee&&(V.value=!1);}),{$error:De,$pending:ge,$invalid:ce,$valid:xe,$debounce:G,$lazy:W,$errors:We,$ready:qe,$silentErrors:He,$rewardEarly:X,$autoDirty:pt,$clearExternalErrorsOnChange:Ee,$anyDirty:O,$name:Le,haveAnyAsyncRule:dt,$shortcuts:ze,$validating:Ue}}),N=watch(e,()=>{v.$autoDirty.value&&(i.value||(i.value=!0)),t.value instanceof Function&&B(),A(),v.$rewardEarly.value!==!0&&v.$clearExternalErrorsOnChange.value&&g();},{deep:S?!0:Se?1:!0}),l=watch(i,()=>{o.setDirtyEntry(n,i.value);}),u=watch(v.$valid,O=>{v.$rewardEarly.value&&O&&(V.value=!1);}),x=watch(v.haveAnyAsyncRule,j);}function F(){Object.values(m.value).forEach(O=>{O.$validate();});}let m=ref(),E=ref();B();function H(){i.value=!1,g(),Object.entries(m.value).forEach(([O,G])=>{G.$reset();}),v.$lazy.value||Object.entries(m.value).map(([O,G])=>G.$validate());}function C(O=!0){i.value||(i.value=!0,O&&A());}async function h(){try{if(V.value=!0,!i.value)i.value=!0;else if(v.$autoDirty.value&&i.value&&!v.$pending.value)return !v.$error.value;return (await Promise.allSettled(Object.entries(m.value).map(([W,X])=>X.$validate()))).every(W=>W.status==="fulfilled"?!!W.value:!1)?e.value:!1}catch{return !1}}function s(){b(),e.value=tt(e,$),H();}function R(O=!0){return i.value?e.value:null}function g(){p?.value?.length&&(p.value=[]);}!v.$lazy.value&&!i.value&&A();let{$anyDirty:c,$error:D,$errors:I,$invalid:k,$name:K,$pending:oe,$ready:ne,$silentErrors:U,$valid:M,$shortcuts:w,$validating:se}=v;return reactive({$dirty:i,$error:D,$errors:I,$valid:M,$invalid:k,$pending:oe,$silentErrors:U,$anyDirty:c,$ready:ne,$name:K,$externalErrors:p,$value:e,$rules:m,...w,$reset:H,$touch:C,$validate:h,$unwatch:b,$watch:P,$resetAll:s,$extractDirtyFields:R,$clearExternalErrors:g})}function it({$id:e,path:t,index:r,options:n,storage:a,stateValue:o,customMessages:f,rules:p,externalErrors:T,initialState:S,shortcuts:$,fieldName:y}){let d=p.$key?p.$key:Oe(),v=`${t}.${String(d)}`;typeof o.value=="object"&&o.value!=null&&(o.value.$id?v=`${t}.${o.value.$id}`:Object.defineProperties(o.value,{$id:{value:d,enumerable:!1,configurable:!1,writable:!1}}));let i=me({state:o,rulesDef:toRef(()=>p),customMessages:f,path:v,storage:a,options:n,externalErrors:toRef(T?.value??[],r),initialState:S?.[r],shortcuts:$,fieldName:y});if(i){let V=o.value?.$id;i.$id=V??String(d),a.addArrayStatus(e,i.$id,i);}return i}function st({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:o,externalErrors:f,initialState:p,shortcuts:T,fieldName:S}){let $=effectScope(),y,d=effectScope(),v;if(!Array.isArray(e.value)&&!t.value.$each)return null;let i=ref(),V=ref(e.value),N,u=ref({}),l=a.getCollectionsEntry(n);v=d.run(()=>({isPrimitiveArray:computed(()=>Array.isArray(e.value)&&e.value.length?e.value.some(R=>typeof R!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(R=>Re(R)):!1)})),x(),B();function x(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?(i.value=Oe(),Object.defineProperties(e.value,{$id:{value:i.value,enumerable:!1,configurable:!1,writable:!1}})):e.value?.$id&&(i.value=e.value.$id)),!v.isPrimitiveArray.value&&(V.value=u.value.$value,Array.isArray(e.value)?l.value=e.value.map((s,R)=>{let g=we(t.value.$each,toRef(()=>s),R),c=it({$id:i.value,path:n,rules:g??{},stateValue:toRef(()=>s),index:R,options:o,storage:a,externalErrors:toRef(f?.value??{},"$each"),initialState:p[R],shortcuts:T,fieldName:S});return c||null}).filter(s=>!!s):l.value=[],u.value=be({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:o,externalErrors:toRef(f?.value??{},"$errors"),$isArray:!0,initialState:p,shortcuts:T,fieldName:S}));}function A(){if(Array.isArray(e.value)){let s=te(l.value);l.value=e.value.map((R,g)=>{let c=toRef(()=>R);if(R.$id&&l.value.find(D=>D.$id===R.$id)){let D=a.getArrayStatus(i.value,R.$id);return D?(D.$value=c,D):null}else {let D=we(t.value.$each,c,g);if(D){let I=it({$id:i.value,path:n,rules:D,stateValue:c,index:g,options:o,storage:a,externalErrors:toRef(f?.value??{},"$each"),initialState:p[g],shortcuts:T,fieldName:S});return I||null}}}).filter(R=>!!R),s.filter(R=>!e.value.find(g=>R.$id===g.$id)).forEach((R,g)=>{a.deleteArrayStatus(i.value,g.toString());});}else l.value=[];}function B(){N=watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?x():A();},{deep:Se?1:!0,flush:"pre"}),y=$.run(()=>{let s=computed(()=>u.value.$dirty&&l.value.every(w=>w.$dirty)),R=computed(()=>u.value.$anyDirty||l.value.some(w=>w.$dirty)),g=computed(()=>u.value.$invalid||l.value.some(w=>w.$invalid)),c=computed(()=>(J(u.value.$rules)?!0:u.value.$valid)&&l.value.every(w=>w.$valid)),D=computed(()=>u.value.$error||l.value.some(w=>w.$error)),I=computed(()=>!(g.value||k.value)),k=computed(()=>u.value.$pending||l.value.some(w=>w.$pending)),K=computed(()=>({$errors:u.value.$errors,$each:l.value.map(w=>w.$errors)})),oe=computed(()=>({$errors:u.value.$silentErrors,$each:l.value.map(w=>w.$silentErrors)})),ne=computed(()=>S);function U(){T?.collections&&Object.entries(T?.collections).forEach(([w,se])=>{let O=effectScope();M[w]=O.run(()=>{let G=ref();return watchEffect(()=>{G.value=se({$dirty:s.value,$error:D.value,$pending:k.value,$invalid:g.value,$valid:c.value,$errors:K.value,$ready:I.value,$silentErrors:oe.value,$anyDirty:R.value,$name:ne.value,$each:l.value,$field:u.value,$value:e});}),G});});}let M={};return U(),{$dirty:s,$anyDirty:R,$invalid:g,$valid:c,$error:D,$pending:k,$errors:K,$silentErrors:oe,$ready:I,$name:ne,$shortcuts:M}}),v.isPrimitiveArray.value&&(console.warn(`${n} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`),N());}function j(){N&&N(),u.value&&u.value.$unwatch(),l.value&&l.value.forEach(s=>{"$dirty"in s&&s.$unwatch();}),$.stop(),$=effectScope(),d.stop(),d=effectScope(!0);}function b(s=!0){u.value.$touch(s),l.value.forEach(R=>{R.$touch(s);});}function P(){u.value.$reset(),l.value.forEach(s=>{s.$reset();});}async function F(){try{return (await Promise.all([u.value.$validate(),...l.value.map(g=>g.$validate())])).every(g=>g.value!==!1)?e.value:!1}catch{return !1}}function m(){u.value.$clearExternalErrors(),l.value.forEach(s=>{s.$clearExternalErrors();});}function E(s=!0){let R=l.value.map(g=>{if(Fe(g))return g.$extractDirtyFields(s)});return s&&(R=R.filter(g=>L(g)?!J(g):!!g)),R}function H(){j(),rt(e,p),P();}let{$shortcuts:C,...h}=y;return reactive({$field:u,...h,...C,$each:l,$value:e,$validate:F,$unwatch:j,$watch:B,$touch:b,$reset:P,$resetAll:H,$extractDirtyFields:E,$clearExternalErrors:m})}function _e({scopeRules:e,state:t,customMessages:r,path:n="",rootRules:a,storage:o,options:f,externalErrors:p,validationGroups:T,initialState:S,shortcuts:$,fieldName:y}){let d,v,i=null;function u(C=!0){l.value=null,triggerRef(l);let h=Object.fromEntries(Object.entries(e.value).map(([c,D])=>{if(D){let I=toRef(t.value,c),k=toRef(()=>D),K=toRef(p?.value,c);return [c,me({state:I,rulesDef:k,customMessages:r,path:n?`${n}.${c}`:c,storage:o,options:f,externalErrors:K,initialState:S?.[c],shortcuts:$,fieldName:c})]}return []}).filter(c=>!!c.length&&c[1]!=null)),s=Object.fromEntries(Object.entries(unref(p)??{}).filter(([c])=>!(c in e.value)).map(([c,D])=>{if(D){let I=toRef(t.value,c),k=toRef(()=>({}));return [c,me({state:I,rulesDef:k,customMessages:r,path:n?`${n}.${c}`:c,storage:o,options:f,externalErrors:toRef(p?.value??{},c),initialState:S?.[c],shortcuts:$,fieldName:c})]}return []})),R=Object.fromEntries(Object.entries(t.value).filter(([c])=>!(c in e.value)&&!(c in(s.value??{}))).map(([c,D])=>{let I=toRef(t.value,c),k=toRef(()=>({}));return [c,me({state:I,rulesDef:k,customMessages:r,path:n?`${n}.${c}`:c,storage:o,options:f,externalErrors:toRef(p?.value??{},c),initialState:S?.[c],shortcuts:$,fieldName:c})]})),g=Object.fromEntries(Object.entries(T?.(h)??{}).map(([c,D])=>D.length?[c,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$valid"].map(I=>[I,Qe(toRef(()=>D),I)])),...Object.fromEntries(["$errors","$silentErrors"].map(I=>[I,Xe(toRef(()=>D),I)]))}]:[]));l.value={...h,...s,...R,...g},C&&j();}let l=o.getFieldsEntry(n);u();function x(){u(!1),Object.entries(l.value).forEach(([C,h])=>{h.$reset();}),j();}function A(C=!0){Object.values(l.value).forEach(h=>{h.$touch(C);});}async function B(){try{return (await Promise.allSettled(Object.values(l.value).map(s=>s.$validate()))).every(s=>s.status==="fulfilled"?s.value!==!1:!1)?t.value:!1}catch{return !1}}function j(){a&&(i=watch([a,p],()=>{b(),u();},{deep:!0,flush:"post"})),d=effectScope(),v=d.run(()=>{let C=computed(()=>!!Object.entries(l.value).length&&Object.entries(l.value).every(([U,M])=>M?.$dirty)),h=computed(()=>Object.entries(l.value).some(([U,M])=>M?.$dirty)),s=computed(()=>Object.entries(l.value).some(([U,M])=>M?.$invalid)),R=computed(()=>Object.entries(l.value).every(([U,M])=>M?.$valid)),g=computed(()=>C.value&&!D.value&&s.value),c=computed(()=>!(s.value||D.value)),D=computed(()=>Object.entries(l.value).some(([U,M])=>M?.$pending)),I=computed(()=>Object.fromEntries(Object.entries(l.value).map(([U,M])=>[U,M?.$errors]))),k=computed(()=>Object.fromEntries(Object.entries(l.value).map(([U,M])=>[U,M?.$silentErrors]))),K=computed(()=>y);function oe(){$?.nested&&Object.entries($.nested).forEach(([U,M])=>{let w=effectScope();ne[U]=w.run(()=>{let se=ref();return watchEffect(()=>{se.value=M({$dirty:C.value,$value:t,$error:g.value,$pending:D.value,$invalid:s.value,$valid:R.value,$ready:c.value,$anyDirty:h.value,$name:K.value,$silentErrors:k.value,$errors:I.value,$fields:l.value});}),se});});}let ne={};return oe(),{$dirty:C,$anyDirty:h,$invalid:s,$valid:R,$error:g,$pending:D,$errors:I,$silentErrors:k,$ready:c,$name:K,$shortcuts:ne}});}function b(){l.value&&Object.entries(l.value).forEach(([C,h])=>{h.$unwatch();}),i?.(),d.stop(),d=effectScope();}function P(){Object.entries(l.value).forEach(([C,h])=>{h.$clearExternalErrors();});}function F(){b(),fe(t,S??{}),x();}function m(C=!0){let h=Object.entries(l.value).map(([s,R])=>[s,R.$extractDirtyFields(C)]);return C&&(h=h.filter(([s,R])=>L(R)?!J(R):Array.isArray(R)?R.length:!!R)),Object.fromEntries(h)}let{$shortcuts:E,...H}=v;return reactive({...H,...E,$fields:l,$value:t,$resetAll:F,$reset:x,$touch:A,$validate:B,$unwatch:b,$watch:j,$clearExternalErrors:P,$extractDirtyFields:m})}function me({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:o,externalErrors:f,index:p,initialState:T,shortcuts:S,onUnwatch:$,fieldName:y}){return at(t,e)?st({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:o,index:p,externalErrors:f,initialState:T,fieldName:y,shortcuts:S}):nt(e,t)&&et(e)?_e({scopeRules:t,state:e,customMessages:r,path:n,storage:a,options:o,index:p,initialState:T,shortcuts:S,fieldName:y,externalErrors:f}):lt(t)?be({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:o,index:p,externalErrors:f,onUnwatch:$,shortcuts:S,initialState:T,fieldName:y}):null}function Ne({initialState:e,options:t,scopeRules:r,state:n,customRules:a,shortcuts:o}){let f=Ae();return reactive(_e({rootRules:r,scopeRules:r,state:n,customMessages:a?.(),storage:f,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:o,fieldName:"root"}))}function Ge(e,t,r){let n={autoDirty:t?.autoDirty??!0,lazy:t?.lazy??!1,rewardEarly:t?.rewardEarly??!1,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange??!0};function a(o,f,p){let T=isRef(f)?f:computed(typeof f=="function"?f:()=>f),S={...n,...p},$=isRef(o)?o:ref(o),y=te(toRaw($.value));return {r$:Ne({scopeRules:T,state:$,options:S,initialState:y,customRules:e,shortcuts:r})}}return a}var ft=Ge();function Be(){function e(t,r){return r}return e}var ke=Be();function Rt({rules:e,modifiers:t,shortcuts:r}){let n=Ge(e,t,r),a=Be();return {useRegle:n,inferRules:a}}export{Ce as InternalRuleType,Pe as createRule,Rt as defineRegleConfig,ke as inferRules,q as unwrapRuleParameters,ft as useRegle};
|
|
1
|
+
import {unref,version,isRef,toRef,computed,ref,toRaw,reactive,shallowRef,onScopeDispose,triggerRef,watch,effectScope,watchEffect}from'vue';var Ce=(r=>(r.Inline="__inline",r.Async="__async",r))(Ce||{});function Qe(e,t){return computed(()=>e.value.some(r=>r[t]))}function Xe(e,t){return computed(()=>e.value.reduce((r,n)=>{let a=n[t]||[];return r.concat(a)},[]))}function H(e){return e.map(t=>t instanceof Function?t():unref(t))}function Ze(e){return e.map(t=>t instanceof Function||isRef(t)?t:toRef(()=>t))}function Ke(e){let t=e.toString();return (t.includes("=>")?t.split("=>")[0]:t).slice(t.indexOf("(")+1,t.indexOf(")")).split(",").map(l=>l.trim()).filter(l=>l.includes("=")).length+e.length}function Ie(e,...t){let{message:r,validator:n,active:a,type:l,...f}=e,d=l==="__async"||n.constructor.name==="AsyncFunction";return {...{validator(h,...$){return e.validator(h,...H($.length?$:t))},message(h,$){return typeof e.message=="function"?e.message(h,{...$,$params:H($.$params?.length?$.$params:t)}):e.message},active(h,$){return typeof e.active=="function"?e.active(h,{...$,$params:H($.$params?.length?$.$params:t)}):e.active??!0},exec(h){let $=e.validator(h,...H(t)),g;return $ instanceof Promise?$.then(v=>(g=v,typeof g=="object"&&"$valid"in g?g.$valid:typeof g=="boolean"?g:!1)):(g=$,typeof g=="object"&&"$valid"in g?g.$valid:typeof g=="boolean"?g:!1)}},...f,_validator:e.validator,_message:e.message,_active:e.active,_type:e.type,_patched:!1,_async:d,_params:Ze(t)}}function Pe(e){if(typeof e.validator=="function"){let r=Ie(e,...[]),n=e.validator.constructor.name==="AsyncFunction";if(Ke(e.validator)>1){let a=function(...l){return Ie(e,...l)};return a.validator=r.validator,a.message=r.message,a.active=r.active,a.type=r.type,a.exec=r.exec,a._validator=r.validator,a._message=r.message,a._active=r.active,a._type=e.type,a._patched=!1,a._async=n,a}else return r}throw new Error("Validator must be a function")}function q(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function et(e){return q(e.value)}function re(e){let t=e,r={}.toString.call(e).slice(8,-1);if(r=="Set"&&(t=new Set([...e].map(n=>re(n)))),r=="Map"&&(t=new Map([...e].map(n=>[re(n[0]),re(n[1])]))),r=="Date"&&(t=new Date(e.getTime())),r=="RegExp"&&(t=RegExp(e.source,Tt(e))),r=="Array"||r=="Object"){t=Array.isArray(e)?[]:{};for(let n in e)t[n]=re(e[n]);}return t}function Tt(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 we(e,t,r){return e instanceof Function?e(t,r??0):e}function tt(e,t){isRef(e)?e.value=t:e=t;}function rt(e,t){isRef(e)?e.value=[]:e=[],t.forEach((r,n)=>{let a=isRef(e)?e.value[n]:e[n];a={},Re(a,t[n]);});}function Re(e,t){Object.entries({...unref(e),...t}).forEach(([r,n])=>{let a=isRef(e)?e.value:e,l=isRef(t[r])?t[r]._value:t[r],f=isRef(a[r])?a[r].value:a[r];Array.isArray(a[r])?(a[r]=[],Array.isArray(l)&&l.forEach((d,E)=>{a[r][E]={},Re(a[r][E],l[E]);})):q(l)?Re(f,l):isRef(a[r])?a[r].value=l:a[r]=l;});}function z(e){return e==null?!0:e===!1?!1:e instanceof Date?isNaN(e.getTime()):Array.isArray(e)?e.length===0:typeof e=="object"&&e!=null?Object.keys(e).length===0:typeof e=="string"?!String(e.trim()).length:!1}function Se(e,t,r){let n,a=(...l)=>new Promise(f=>{clearTimeout(n),n=setTimeout(()=>{n=void 0,Promise.resolve(e.apply(this,[...l])).then(f);},t);});return a.cancel=()=>{clearTimeout(n),n=void 0;},a.doImmediately=(...l)=>new Promise(f=>{clearTimeout(n),n=setTimeout(()=>{n=void 0,Promise.resolve(e.apply(this,[...l])).then(f);},0);}),a}function Dt(e,t){let r=String(e).split("."),n=String(t).split(".");for(let a=0;a<Math.min(r.length,n.length);a++){let l=Number(r[a]),f=Number(n[a]);if(l>f)return 1;if(f>l)return -1;if(!isNaN(l)&&isNaN(f))return 1;if(isNaN(l)&&!isNaN(f))return -1}return 0}var he=Dt(version,"3.5.0")!==-1;function xt(){return Math.floor(Math.random()*Date.now()).toString()}function Oe(){return typeof window>"u"?xt():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function Ae(){let e=shallowRef(new Map),t=shallowRef(new Map),r=shallowRef(new Map),n=shallowRef(new Map),a=shallowRef(new Map),l=shallowRef(new Map);function f(u){let o=t.value.get(u);if(o)return o;{let R=ref({});return t.value.set(u,R),R}}function d(u){let o=r.value.get(u);if(o)return o;{let R=ref([]);return r.value.set(u,R),R}}function E(u,o,R){l.value.set(`${u}-${o}`,R);}function b(u,o){return l.value.get(`${u}-${o}`)}function h(u,o){u&&o!=null&&l.value.delete(`${u}-${o}`);}function $(u,o){n.value.set(u,o);}function g(u){return n.value.get(u)??!1}function v(u,o){e.value.set(u,o);}function i(u,o){let R=e.value.get(u);return R?A(o,R)?{valid:!0}:{valid:!1}:void 0}function A(u,o){let R=Object.keys(o),w=Object.keys(u);return w.length!==R.length||!w.every(V=>R.includes(V))?!1:w.every(V=>{let D=u[V],I=o[V];return !I||!D||typeof D=="function"||typeof I=="function"||typeof D=="number"||typeof D=="boolean"?!1:D._params?D._params?.every((P,m)=>{if(typeof I=="number"||typeof I=="boolean")return !0;{let x=H(I._params),W=H(D._params);return x?.[m]===W?.[m]}}):!0})}function G(u){let o=a.value.get(u);if(o)return o;{let R=ref(!1),w=ref(!0),B=ref({}),V=ref(!1);return a.value.set(u,{$pending:R,$valid:w,$metadata:B,$validating:V}),{$pending:R,$valid:w,$metadata:B,$validating:V}}}return onScopeDispose(()=>{e.value.clear(),t.value.clear(),r.value.clear(),n.value.clear(),a.value.clear(),l.value.clear();}),{addRuleDeclEntry:v,setDirtyEntry:$,checkRuleDeclEntry:i,getDirtyState:g,trySetRuleStatusRef:G,getFieldsEntry:f,getCollectionsEntry:d,getArrayStatus:b,addArrayStatus:E,deleteArrayStatus:h,arrayStatusStorage:l}}function nt(e,t){return q(e.value)&&q(t.value)&&!Object.entries(t.value).some(r=>pe(r))}function at(e,t){return !!e.value&&"$each"in e.value||Array.isArray(t.value)}function lt(e){return !!e.value&&q(e.value)}function pe(e){return q(e)&&"_validator"in e}function de(e){return typeof e.value!="function"}function Me(e){return q(e)&&"$fields"in e}function Fe({field:e,silent:t=!1}){return Object.entries(e.$rules??{}).map(([r,n])=>t||!n.$valid&&e.$dirty&&!n.$validating?n.$message:null).filter(r=>!!r).reduce((r,n)=>typeof n=="string"?r?.concat([n]):r?.concat(n),[]).concat(e.$dirty?e.$externalErrors??[]:[])}function ut({$dirty:e,customMessages:t,rule:r,ruleKey:n,state:a,path:l,storage:f,$debounce:d}){let E=effectScope(),b,h,$=ref(!1),{$pending:g,$valid:v,$metadata:i,$validating:A}=f.trySetRuleStatusRef(`${l}.${n}`);function G(){b=E.run(()=>{let D=computed(()=>({$invalid:!v.value,$params:W.value,...i.value})),I=computed(()=>de(r)?typeof r.value.active=="function"?r.value.active(a.value,D.value):!!r.value.active:!0),P=computed(()=>{let U="",s=t?t[n]?.message:void 0;return s&&(typeof s=="function"?U=s(a.value,D.value):U=s),de(r)&&(s&&!r.value._patched||(typeof r.value.message=="function"?U=r.value.message(a.value,D.value):U=r.value.message)),z(U)&&(U="Error",console.warn(`No error message defined for ${l}.${n}`)),U}),m=computed(()=>de(r)&&r.value.type?r.value.type:n),x=computed(()=>de(r)?r.value.validator:r.value),W=computed(()=>typeof r.value=="function"?[]:H(r.value._params??[])),K=computed(()=>`${l}.${m.value}`);return {$active:I,$message:P,$type:m,$validator:x,$params:W,$path:K}}),h=watch(b.$params,w,{deep:!0});}G();function u(){v.value=!0,e.value&&(g.value=!0);}async function o(){let D=b.$validator.value,I=D(a.value,...b.$params.value),P=!1,m=a.value;try{u();let x;if(I instanceof Promise?x=await I:x=I,a.value!==m)return !0;if(typeof x=="boolean")P=x;else {let{$valid:W,...K}=x;P=W,i.value=K;}}catch{P=!1;}finally{g.value=!1;}return P}let R=Se(o,d??200);async function w(){try{A.value=!0;let D=!1;if(pe(r.value)&&r.value._async)D=await R();else {let I=b.$validator.value,P=I(a.value,...b.$params.value);if(P 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(P!=null)if(typeof P=="boolean")D=P;else {let{$valid:m,...x}=P;D=m,i.value=x;}}return v.value=D,D}catch{return !1}finally{A.value=!1;}}function B(){v.value=!0,i.value={},g.value=!1,A.value=!1,G();}function V(){h(),E.stop(),E=effectScope();}return reactive({...b,$pending:g,$valid:v,$metadata:i,_haveAsync:$,$validating:A,$validate:w,$unwatch:V,$watch:G,$reset:B})}function Te({state:e,rulesDef:t,customMessages:r,path:n,fieldName:a,storage:l,options:f,externalErrors:d,onUnwatch:E,$isArray:b,initialState:h,shortcuts:$}){let g=effectScope(),v,i=ref(!1),A=ref(!1),G,u,o,R,w=()=>{};function B(){let C=t.value,_=l.checkRuleDeclEntry(n,C);x.value=Object.fromEntries(Object.entries(C).filter(([J])=>J.startsWith("$"))),m.value=Object.fromEntries(Object.entries(t.value).filter(([J])=>!J.startsWith("$")).map(([J,L])=>{if(L){let ce=toRef(()=>L);return [J,ut({$dirty:i,customMessages:r,rule:ce,ruleKey:J,state:e,path:n,storage:l,$debounce:x.value.$debounce})]}return []}).filter(J=>!!J.length)),I(),V(),_?.valid!=null&&(i.value=l.getDirtyState(n),i.value&&w()),l.addRuleDeclEntry(n,C);}function V(){w=v.$debounce.value?Se(P,v.$debounce.value??v.haveAnyAsyncRule?100:0):P;}function D(){m.value&&Object.entries(m.value).forEach(([C,_])=>{_.$unwatch();}),o(),i.value&&l.setDirtyEntry(n,i.value),G?.(),u?.(),g.stop(),g=effectScope(),E?.(),R?.();}function I(){m.value&&Object.entries(m.value).forEach(([C,_])=>{_.$watch();}),v=g.run(()=>{let C=computed(()=>i.value),_=computed(()=>x.value.$debounce),J=computed(()=>x.value.$lazy!=null?x.value.$lazy:unref(f.lazy)),L=computed(()=>x.value.$rewardEarly!=null?x.value.$rewardEarly:unref(f.rewardEarly)),ce=computed(()=>x.value.$clearExternalErrorsOnChange!=null?x.value.$clearExternalErrorsOnChange:unref(f.clearExternalErrorsOnChange)),vt=computed(()=>x.value.$autoDirty!=null?x.value.$autoDirty:unref(f.autoDirty)),Ue=computed(()=>Object.entries(m.value).some(([te,Y])=>Y.$validating)),De=computed(()=>fe.value&&!$e.value&&i.value),ke=computed(()=>De.value?Fe({field:{$dirty:i.value,$externalErrors:d?.value,$rules:m.value}}):[]),He=computed(()=>Fe({field:{$dirty:i.value,$externalErrors:d?.value,$rules:m.value},silent:!0})),qe=computed(()=>!(fe.value||$e.value)),$e=computed(()=>A.value||!L.value?Object.entries(m.value).some(([te,Y])=>Y.$pending):!1),fe=computed(()=>d?.value?.length?!0:z(m.value)?!1:!L.value||L.value&&A.value?Object.entries(m.value).some(([te,Y])=>!Y.$valid):!1),Le=computed(()=>a),xe=computed(()=>z(m.value)?!1:i.value&&!z(e.value)&&!Ue.value?d?.value?.length?!1:L.value?Object.entries(m.value).every(([te,Y])=>Y.$valid):!fe.value:!1),yt=computed(()=>Object.entries(m.value).some(([te,Y])=>Y._haveAsync));function gt(){$?.fields&&Object.entries($.fields).forEach(([te,Y])=>{let mt=effectScope();ze[te]=mt.run(()=>{let Je=ref();return watchEffect(()=>{Je.value=Y({$dirty:i.value,$externalErrors:d?.value??[],$value:e,$rules:m.value,$error:De.value,$pending:$e.value,$invalid:fe.value,$valid:xe.value,$errors:ke.value,$ready:qe.value,$silentErrors:He.value,$anyDirty:C.value,$name:Le.value});}),Je});});}let ze={};return gt(),watch(xe,te=>{te&&(A.value=!1);}),{$error:De,$pending:$e,$invalid:fe,$valid:xe,$debounce:_,$lazy:J,$errors:ke,$ready:qe,$silentErrors:He,$rewardEarly:L,$autoDirty:vt,$clearExternalErrorsOnChange:ce,$anyDirty:C,$name:Le,haveAnyAsyncRule:yt,$shortcuts:ze,$validating:Ue}}),G=watch(e,()=>{v.$autoDirty.value&&(i.value||(i.value=!0)),t.value instanceof Function&&B(),w(),v.$rewardEarly.value!==!0&&v.$clearExternalErrorsOnChange.value&&y();},{deep:b?!0:he?1:!0}),o=watch(i,()=>{l.setDirtyEntry(n,i.value);}),u=watch(v.$valid,C=>{v.$rewardEarly.value&&C&&(A.value=!1);}),R=watch(v.haveAnyAsyncRule,V);}function P(){Object.values(m.value).forEach(C=>{C.$validate();});}let m=ref(),x=ref();B();function W(){y(),i.value=!1,Object.entries(m.value).forEach(([C,_])=>{_.$reset();}),!v.$lazy.value&&v.$autoDirty.value&&Object.values(m.value).forEach(C=>C.$validate());}function K(C=!0){i.value||(i.value=!0,C&&w());}async function U(){try{let C=e.value;if(A.value=!0,!i.value)i.value=!0;else if(v.$autoDirty.value&&i.value&&!v.$pending.value)return {result:!v.$error.value,data:C};return z(m.value)?{result:!0,data:C}:{result:(await Promise.allSettled(Object.entries(m.value).map(([L,ce])=>ce.$validate()))).every(L=>L.status==="fulfilled"?L.value===!0:!1),data:C}}catch{return {result:!1,data:e.value}}}function s(){D(),e.value=tt(e,h),W();}function c(C=!0){return i.value?e.value:null}function y(){d?.value?.length&&(d.value=[]);}!v.$lazy.value&&!i.value&&v.$autoDirty.value&&w();let{$anyDirty:S,$error:F,$errors:p,$invalid:O,$name:M,$pending:k,$ready:ee,$silentErrors:ie,$valid:ae,$shortcuts:T,$validating:j}=v;return reactive({$dirty:i,$error:F,$errors:p,$valid:ae,$invalid:O,$pending:k,$silentErrors:ie,$anyDirty:S,$ready:ee,$name:M,$externalErrors:d,$value:e,$rules:m,...T,$reset:W,$touch:K,$validate:U,$unwatch:D,$watch:I,$resetAll:s,$extractDirtyFields:c,$clearExternalErrors:y})}function st({$id:e,path:t,index:r,options:n,storage:a,stateValue:l,customMessages:f,rules:d,externalErrors:E,initialState:b,shortcuts:h,fieldName:$}){let g=d.$key?d.$key:Oe(),v=`${t}.${String(g)}`;typeof l.value=="object"&&l.value!=null&&(l.value.$id?v=`${t}.${l.value.$id}`:Object.defineProperties(l.value,{$id:{value:g,enumerable:!1,configurable:!1,writable:!1}}));let i=me({state:l,rulesDef:toRef(()=>d),customMessages:f,path:v,storage:a,options:n,externalErrors:toRef(E?.value??[],r),initialState:b?.[r],shortcuts:h,fieldName:$});if(i){let A=l.value?.$id;i.$id=A??String(g),a.addArrayStatus(e,i.$id,i);}return i}function it({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:l,externalErrors:f,initialState:d,shortcuts:E,fieldName:b}){let h=effectScope(),$,g=effectScope(),v;if(!Array.isArray(e.value)&&!t.value.$each)return null;let i=ref(),A=ref(e.value),G,u=ref({}),o=a.getCollectionsEntry(n);v=g.run(()=>({isPrimitiveArray:computed(()=>Array.isArray(e.value)&&e.value.length?e.value.some(c=>typeof c!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(c=>pe(c)):!1)})),R(),B();function R(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?(i.value=Oe(),Object.defineProperties(e.value,{$id:{value:i.value,enumerable:!1,configurable:!1,writable:!1}})):e.value?.$id&&(i.value=e.value.$id)),!v.isPrimitiveArray.value&&(A.value=u.value.$value,Array.isArray(e.value)?o.value=e.value.map((s,c)=>{let y=we(t.value.$each,toRef(()=>s),c),S=st({$id:i.value,path:n,rules:y??{},stateValue:toRef(()=>s),index:c,options:l,storage:a,externalErrors:toRef(f?.value??{},"$each"),initialState:d[c],shortcuts:E,fieldName:b});return S||null}).filter(s=>!!s):o.value=[],u.value=Te({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:l,externalErrors:toRef(f?.value??{},"$errors"),$isArray:!0,initialState:d,shortcuts:E,fieldName:b}));}function w(){if(Array.isArray(e.value)){let s=re(o.value);o.value=e.value.map((c,y)=>{let S=toRef(()=>c);if(c.$id&&o.value.find(F=>F.$id===c.$id)){let F=a.getArrayStatus(i.value,c.$id);return F?(F.$value=S,F):null}else {let F=we(t.value.$each,S,y);if(F){let p=st({$id:i.value,path:n,rules:F,stateValue:S,index:y,options:l,storage:a,externalErrors:toRef(f?.value??{},"$each"),initialState:d[y],shortcuts:E,fieldName:b});return p||null}}}).filter(c=>!!c),s.filter(c=>!e.value.find(y=>c.$id===y.$id)).forEach((c,y)=>{a.deleteArrayStatus(i.value,y.toString());});}else o.value=[];}function B(){G=watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?R():w();},{deep:he?1:!0,flush:"pre"}),$=h.run(()=>{let s=computed(()=>u.value.$dirty&&o.value.every(T=>T.$dirty)),c=computed(()=>u.value.$anyDirty||o.value.some(T=>T.$dirty)),y=computed(()=>u.value.$invalid||o.value.some(T=>T.$invalid)),S=computed(()=>(z(u.value.$rules)?!0:u.value.$valid)&&o.value.every(T=>T.$valid)),F=computed(()=>u.value.$error||o.value.some(T=>T.$error)),p=computed(()=>!(y.value||O.value)),O=computed(()=>u.value.$pending||o.value.some(T=>T.$pending)),M=computed(()=>({$errors:u.value.$errors,$each:o.value.map(T=>T.$errors)})),k=computed(()=>({$errors:u.value.$silentErrors,$each:o.value.map(T=>T.$silentErrors)})),ee=computed(()=>b);function ie(){E?.collections&&Object.entries(E?.collections).forEach(([T,j])=>{let C=effectScope();ae[T]=C.run(()=>{let _=ref();return watchEffect(()=>{_.value=j({$dirty:s.value,$error:F.value,$pending:O.value,$invalid:y.value,$valid:S.value,$errors:M.value,$ready:p.value,$silentErrors:k.value,$anyDirty:c.value,$name:ee.value,$each:o.value,$field:u.value,$value:e});}),_});});}let ae={};return ie(),{$dirty:s,$anyDirty:c,$invalid:y,$valid:S,$error:F,$pending:O,$errors:M,$silentErrors:k,$ready:p,$name:ee,$shortcuts:ae}}),v.isPrimitiveArray.value&&(console.warn(`${n} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`),G());}function V(){G&&G(),u.value&&u.value.$unwatch(),o.value&&o.value.forEach(s=>{"$dirty"in s&&s.$unwatch();}),h.stop(),h=effectScope(),g.stop(),g=effectScope(!0);}function D(s=!0){u.value.$touch(s),o.value.forEach(c=>{c.$touch(s);});}function I(){u.value.$reset(),o.value.forEach(s=>{s.$reset();});}async function P(){let s=e.value;try{return {result:(await Promise.allSettled([u.value.$validate(),...o.value.map(S=>S.$validate())])).every(S=>S.status==="fulfilled"?S.value.result===!0:!1),data:s}}catch{return {result:!1,data:s}}}function m(){u.value.$clearExternalErrors(),o.value.forEach(s=>{s.$clearExternalErrors();});}function x(s=!0){let c=o.value.map(y=>{if(Me(y))return y.$extractDirtyFields(s)});return s&&(c=c.filter(y=>q(y)?!z(y):!!y)),c}function W(){V(),rt(e,d),I();}let{$shortcuts:K,...U}=$;return reactive({$field:u,...U,...K,$each:o,$value:e,$validate:P,$unwatch:V,$watch:B,$touch:D,$reset:I,$resetAll:W,$extractDirtyFields:x,$clearExternalErrors:m})}function _e({scopeRules:e,state:t,customMessages:r,path:n="",rootRules:a,storage:l,options:f,externalErrors:d,validationGroups:E,initialState:b,shortcuts:h,fieldName:$}){let g,v,i=null,A=null;function o(s=!0){R.value=null,triggerRef(R);let c=Object.fromEntries(Object.entries(e.value).map(([p,O])=>{if(O){let M=toRef(t.value,p),k=toRef(()=>O),ee=toRef(d?.value,p);return [p,me({state:M,rulesDef:k,customMessages:r,path:n?`${n}.${p}`:p,storage:l,options:f,externalErrors:ee,initialState:b?.[p],shortcuts:h,fieldName:p})]}return []}).filter(p=>!!p.length&&p[1]!=null)),y=Object.fromEntries(Object.entries(unref(d)??{}).filter(([p])=>!(p in e.value)).map(([p,O])=>{if(O){let M=toRef(t.value,p),k=toRef(()=>({}));return [p,me({state:M,rulesDef:k,customMessages:r,path:n?`${n}.${p}`:p,storage:l,options:f,externalErrors:toRef(d?.value??{},p),initialState:b?.[p],shortcuts:h,fieldName:p})]}return []})),S=Object.fromEntries(Object.entries(t.value).filter(([p])=>!(p in e.value)&&!(p in(y.value??{}))).map(([p,O])=>{let M=toRef(t.value,p),k=toRef(()=>({}));return [p,me({state:M,rulesDef:k,customMessages:r,path:n?`${n}.${p}`:p,storage:l,options:f,externalErrors:toRef(d?.value??{},p),initialState:b?.[p],shortcuts:h,fieldName:p})]})),F=Object.fromEntries(Object.entries(E?.(c)??{}).map(([p,O])=>O.length?[p,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$valid"].map(M=>[M,Qe(toRef(()=>O),M)])),...Object.fromEntries(["$errors","$silentErrors"].map(M=>[M,Xe(toRef(()=>O),M)]))}]:[]));R.value={...c,...y,...S,...F},s&&I();}let R=l.getFieldsEntry(n);o();function w(){A?.(),Object.values(R.value).forEach(s=>{s.$reset();}),D();}function B(s=!0){Object.values(R.value).forEach(c=>{c.$touch(s);});}async function V(){try{let s=t.value;return {result:(await Promise.allSettled(Object.values(R.value).map(S=>S.$validate()))).every(S=>S.status==="fulfilled"?S.value.result===!0:!1),data:s}}catch{return {result:!1,data:t.value}}}function D(){d?.value&&(A=watch(d,()=>{P(),o();},{deep:!0}));}function I(){a&&(i=watch(a,()=>{P(),o();},{deep:!0,flush:"post"})),D(),g=effectScope(),v=g.run(()=>{let s=computed(()=>!!Object.entries(R.value).length&&Object.entries(R.value).every(([T,j])=>j?.$dirty)),c=computed(()=>Object.entries(R.value).some(([T,j])=>j?.$dirty)),y=computed(()=>Object.entries(R.value).some(([T,j])=>j?.$invalid)),S=computed(()=>Object.entries(R.value).every(([T,j])=>j?.$valid)),F=computed(()=>s.value&&!O.value&&y.value),p=computed(()=>unref(f.autoDirty)?c.value&&!(y.value||O.value):!(y.value||O.value)),O=computed(()=>Object.entries(R.value).some(([T,j])=>j?.$pending)),M=computed(()=>Object.fromEntries(Object.entries(R.value).map(([T,j])=>[T,j?.$errors]))),k=computed(()=>Object.fromEntries(Object.entries(R.value).map(([T,j])=>[T,j?.$silentErrors]))),ee=computed(()=>$);function ie(){h?.nested&&Object.entries(h.nested).forEach(([T,j])=>{let C=effectScope();ae[T]=C.run(()=>{let _=ref();return watchEffect(()=>{_.value=j({$dirty:s.value,$value:t,$error:F.value,$pending:O.value,$invalid:y.value,$valid:S.value,$ready:p.value,$anyDirty:c.value,$name:ee.value,$silentErrors:k.value,$errors:M.value,$fields:R.value});}),_});});}let ae={};return ie(),{$dirty:s,$anyDirty:c,$invalid:y,$valid:S,$error:F,$pending:O,$errors:M,$silentErrors:k,$ready:p,$name:ee,$shortcuts:ae}});}function P(){R.value&&Object.entries(R.value).forEach(([s,c])=>{c.$unwatch();}),i?.(),A?.(),g.stop(),g=effectScope();}function m(){Object.entries(R.value).forEach(([s,c])=>{c.$clearExternalErrors();});}function x(){P(),Re(t,b??{}),o(!1),w(),I();}function W(s=!0){let c=Object.entries(R.value).map(([y,S])=>[y,S.$extractDirtyFields(s)]);return s&&(c=c.filter(([y,S])=>q(S)?!z(S):Array.isArray(S)?S.length:!!S)),Object.fromEntries(c)}let{$shortcuts:K,...U}=v;return reactive({...U,...K,$fields:R,$value:t,$resetAll:x,$reset:w,$touch:B,$validate:V,$unwatch:P,$watch:I,$clearExternalErrors:m,$extractDirtyFields:W})}function me({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:l,externalErrors:f,index:d,initialState:E,shortcuts:b,onUnwatch:h,fieldName:$}){return at(t,e)?it({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:l,index:d,externalErrors:f,initialState:E,fieldName:$,shortcuts:b}):nt(e,t)&&et(e)?_e({scopeRules:t,state:e,customMessages:r,path:n,storage:a,options:l,index:d,initialState:E,shortcuts:b,fieldName:$,externalErrors:f}):lt(t)?Te({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:l,index:d,externalErrors:f,onUnwatch:h,shortcuts:b,initialState:E,fieldName:$}):null}function Ne({initialState:e,options:t,scopeRules:r,state:n,customRules:a,shortcuts:l}){let f=Ae();return reactive(_e({rootRules:r,scopeRules:r,state:n,customMessages:a?.(),storage:f,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:l,fieldName:"root"}))}function Ge(e,t,r){let n={autoDirty:t?.autoDirty??!0,lazy:t?.lazy??!1,rewardEarly:t?.rewardEarly??!1,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange??!0};function a(l,f,d){let E=isRef(f)?f:computed(typeof f=="function"?f:()=>f),b={...n,...d},h=isRef(l)?l:ref(l),$=re(toRaw(h.value));return {r$:Ne({scopeRules:E,state:h,options:b,initialState:$,customRules:e,shortcuts:r})}}return a}var pt=Ge();function Be(){function e(t,r){return r}return e}var We=Be();function dt({rules:e,modifiers:t,shortcuts:r}){let n=Ge(e,t,r),a=Be();return {useRegle:n,inferRules:a}}export{Ce as InternalRuleType,Pe as createRule,dt as defineRegleConfig,We as inferRules,H as unwrapRuleParameters,pt as useRegle};
|