@regle/core 0.2.9 → 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 +11 -4
- package/dist/index.d.ts +11 -4
- 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,bt(e))),r=="Array"||r=="Object"){t=Array.isArray(e)?[]:{};for(let n in e)t[n]=te(e[n]);}return t}function bt(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,E)=>{a[r][E]={},fe(a[r][E],o[E]);})):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 Et(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=Et(vue.version,"3.5.0")!==-1;function Dt(){return Math.floor(Math.random()*Date.now()).toString()}function Oe(){return typeof window>"u"?Dt():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 E(u,l,x){o.value.set(`${u}-${l}`,x);}function h(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 s(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((M,m)=>{if(typeof P=="number"||typeof P=="boolean")return !0;{let D=q(P._params),H=q(b._params);return D?.[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:s,getDirtyState:d,trySetRuleStatusRef:N,getFieldsEntry:f,getCollectionsEntry:p,getArrayStatus:h,addArrayStatus:E,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 Me(e){return L(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:o,storage:f,$debounce:p}){let E=vue.effectScope(),h,$,y=vue.ref(!1),{$pending:d,$valid:v,$metadata:s,$validating:V}=f.trySetRuleStatusRef(`${o}.${n}`);function N(){h=E.run(()=>{let b=vue.computed(()=>({$invalid:!v.value,$params:H.value,...s.value})),P=vue.computed(()=>pe(r)?typeof r.value.active=="function"?r.value.active(a.value,b.value):!!r.value.active:!0),M=vue.computed(()=>{let S="",i=t?t[n]?.message:void 0;return i&&(typeof i=="function"?S=i(a.value,b.value):S=i),pe(r)&&(i&&!r.value._patched||(typeof r.value.message=="function"?S=r.value.message(a.value,b.value):S=r.value.message)),J(S)&&(S="Error",console.warn(`No error message defined for ${o}.${n}`)),S}),m=vue.computed(()=>pe(r)&&r.value.type?r.value.type:n),D=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:M,$type:m,$validator:D,$params:H,$path:C}}),$=vue.watch(h.$params,A,{deep:!0});}N();function u(){v.value=!0,e.value&&(d.value=!0);}async function l(){let b=h.$validator.value,P=b(a.value,...h.$params.value),M=!1,m=a.value;try{u();let D;if(P instanceof Promise?D=await P:D=P,a.value!==m)return !0;if(typeof D=="boolean")M=D;else {let{$valid:H,...C}=D;M=H,s.value=C;}}catch{M=!1;}finally{d.value=!1;}return M}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=h.$validator.value,M=P(a.value,...h.$params.value);if(M instanceof Promise)console.warn('You used a async validator function on a non-async rule, please use "async await" or the "withAsync" helper');else if(M!=null)if(typeof M=="boolean")b=M;else {let{$valid:m,...D}=M;b=m,s.value=D;}}return v.value=b,b}catch{return !1}finally{V.value=!1;}}function B(){v.value=!0,s.value={},d.value=!1,V.value=!1,N();}function j(){$(),E.stop(),E=vue.effectScope();}return vue.reactive({...h,$pending:d,$valid:v,$metadata:s,_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:E,$isArray:h,initialState:$,shortcuts:y}){let d=vue.effectScope(),v,s=vue.ref(!1),V=vue.ref(!1),N,u,l,x,A=()=>{};function B(){let O=t.value,G=o.checkRuleDeclEntry(n,O);D.value=Object.fromEntries(Object.entries(O).filter(([k])=>k.startsWith("$"))),m.value=Object.fromEntries(Object.entries(t.value).filter(([k])=>!k.startsWith("$")).map(([k,X])=>{if(X){let Ee=vue.toRef(()=>X);return [k,ut({$dirty:s,customMessages:r,rule:Ee,ruleKey:k,state:e,path:n,storage:o,$debounce:D.value.$debounce})]}return []}).filter(k=>!!k.length)),P(),j(),G?.valid!=null&&(s.value=o.getDirtyState(n),s.value&&A()),o.addRuleDeclEntry(n,O);}function j(){A=v.$debounce.value?$e(M,v.$debounce.value??v.haveAnyAsyncRule?100:0):M;}function b(){m.value&&Object.entries(m.value).forEach(([O,G])=>{G.$unwatch();}),l(),s.value&&o.setDirtyEntry(n,s.value),N?.(),u?.(),d.stop(),d=vue.effectScope(),E?.(),x?.();}function P(){m.value&&Object.entries(m.value).forEach(([O,G])=>{G.$watch();}),v=d.run(()=>{let O=vue.computed(()=>s.value),G=vue.computed(()=>D.value.$debounce),k=vue.computed(()=>D.value.$lazy!=null?D.value.$lazy:vue.unref(f.lazy)),X=vue.computed(()=>D.value.$rewardEarly!=null?D.value.$rewardEarly:vue.unref(f.rewardEarly)),Ee=vue.computed(()=>D.value.$clearExternalErrorsOnChange!=null?D.value.$clearExternalErrorsOnChange:vue.unref(f.clearExternalErrorsOnChange)),dt=vue.computed(()=>D.value.$autoDirty!=null?D.value.$autoDirty:vue.unref(f.autoDirty)),We=vue.computed(()=>Object.entries(m.value).some(([ee,z])=>z.$validating)),De=vue.computed(()=>ce.value&&!ge.value&&s.value),ke=vue.computed(()=>De.value?Fe({field:{$dirty:s.value,$externalErrors:p?.value,$rules:m.value}}):[]),He=vue.computed(()=>Fe({field:{$dirty:s.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:s.value&&!J(e.value)&&!We.value?p?.value?.length?!1:X.value?Object.entries(m.value).every(([ee,z])=>z.$valid):!ce.value:!1),vt=vue.computed(()=>Object.entries(m.value).some(([ee,z])=>z._haveAsync));function yt(){y?.fields&&Object.entries(y.fields).forEach(([ee,z])=>{let mt=vue.effectScope();ze[ee]=mt.run(()=>{let Je=vue.ref();return vue.watchEffect(()=>{Je.value=z({$dirty:s.value,$externalErrors:p?.value??[],$value:e,$rules:m.value,$error:De.value,$pending:ge.value,$invalid:ce.value,$valid:xe.value,$errors:ke.value,$ready:qe.value,$silentErrors:He.value,$anyDirty:O.value,$name:Le.value});}),Je});});}let ze={};return yt(),vue.watch(xe,ee=>{ee&&(V.value=!1);}),{$error:De,$pending:ge,$invalid:ce,$valid:xe,$debounce:G,$lazy:k,$errors:ke,$ready:qe,$silentErrors:He,$rewardEarly:X,$autoDirty:dt,$clearExternalErrorsOnChange:Ee,$anyDirty:O,$name:Le,haveAnyAsyncRule:vt,$shortcuts:ze,$validating:We}}),N=vue.watch(e,()=>{v.$autoDirty.value&&(s.value||(s.value=!0)),t.value instanceof Function&&B(),A(),v.$rewardEarly.value!==!0&&v.$clearExternalErrorsOnChange.value&&g();},{deep:h?!0:Se?1:!0}),l=vue.watch(s,()=>{o.setDirtyEntry(n,s.value);}),u=vue.watch(v.$valid,O=>{v.$rewardEarly.value&&O&&(V.value=!1);}),x=vue.watch(v.haveAnyAsyncRule,j);}function M(){Object.values(m.value).forEach(O=>{O.$validate();});}let m=vue.ref(),D=vue.ref();B();function H(){s.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){s.value||(s.value=!0,O&&A());}async function S(){try{if(V.value=!0,!s.value)s.value=!0;else if(v.$autoDirty.value&&s.value&&!v.$pending.value)return !v.$error.value;return (await Promise.allSettled(Object.entries(m.value).map(([k,X])=>X.$validate()))).every(k=>k.status==="fulfilled"?k.value!=!1:!1)?e.value:!1}catch{return !1}}function i(){b(),e.value=tt(e,$),H();}function R(O=!0){return s.value?e.value:null}function g(){p?.value?.length&&(p.value=[]);}!v.$lazy.value&&!s.value&&v.$autoDirty.value&&A();let{$anyDirty:c,$error:T,$errors:I,$invalid:U,$name:K,$pending:oe,$ready:ne,$silentErrors:W,$valid:F,$shortcuts:w,$validating:se}=v;return vue.reactive({$dirty:s,$error:T,$errors:I,$valid:F,$invalid:U,$pending:oe,$silentErrors:W,$anyDirty:c,$ready:ne,$name:K,$externalErrors:p,$value:e,$rules:m,...w,$reset:H,$touch:C,$validate:S,$unwatch:b,$watch:P,$resetAll:i,$extractDirtyFields:R,$clearExternalErrors:g})}function it({$id:e,path:t,index:r,options:n,storage:a,stateValue:o,customMessages:f,rules:p,externalErrors:E,initialState:h,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 s=me({state:o,rulesDef:vue.toRef(()=>p),customMessages:f,path:v,storage:a,options:n,externalErrors:vue.toRef(E?.value??[],r),initialState:h?.[r],shortcuts:$,fieldName:y});if(s){let V=o.value?.$id;s.$id=V??String(d),a.addArrayStatus(e,s.$id,s);}return s}function st({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:o,externalErrors:f,initialState:p,shortcuts:E,fieldName:h}){let $=vue.effectScope(),y,d=vue.effectScope(),v;if(!Array.isArray(e.value)&&!t.value.$each)return null;let s=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?(s.value=Oe(),Object.defineProperties(e.value,{$id:{value:s.value,enumerable:!1,configurable:!1,writable:!1}})):e.value?.$id&&(s.value=e.value.$id)),!v.isPrimitiveArray.value&&(V.value=u.value.$value,Array.isArray(e.value)?l.value=e.value.map((i,R)=>{let g=we(t.value.$each,vue.toRef(()=>i),R),c=it({$id:s.value,path:n,rules:g??{},stateValue:vue.toRef(()=>i),index:R,options:o,storage:a,externalErrors:vue.toRef(f?.value??{},"$each"),initialState:p[R],shortcuts:E,fieldName:h});return c||null}).filter(i=>!!i):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:E,fieldName:h}));}function A(){if(Array.isArray(e.value)){let i=te(l.value);l.value=e.value.map((R,g)=>{let c=vue.toRef(()=>R);if(R.$id&&l.value.find(T=>T.$id===R.$id)){let T=a.getArrayStatus(s.value,R.$id);return T?(T.$value=c,T):null}else {let T=we(t.value.$each,c,g);if(T){let I=it({$id:s.value,path:n,rules:T,stateValue:c,index:g,options:o,storage:a,externalErrors:vue.toRef(f?.value??{},"$each"),initialState:p[g],shortcuts:E,fieldName:h});return I||null}}}).filter(R=>!!R),i.filter(R=>!e.value.find(g=>R.$id===g.$id)).forEach((R,g)=>{a.deleteArrayStatus(s.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 i=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)),T=vue.computed(()=>u.value.$error||l.value.some(w=>w.$error)),I=vue.computed(()=>!(g.value||U.value)),U=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(()=>h);function W(){E?.collections&&Object.entries(E?.collections).forEach(([w,se])=>{let O=vue.effectScope();F[w]=O.run(()=>{let G=vue.ref();return vue.watchEffect(()=>{G.value=se({$dirty:i.value,$error:T.value,$pending:U.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 F={};return W(),{$dirty:i,$anyDirty:R,$invalid:g,$valid:c,$error:T,$pending:U,$errors:K,$silentErrors:oe,$ready:I,$name:ne,$shortcuts:F}}),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(i=>{"$dirty"in i&&i.$unwatch();}),$.stop(),$=vue.effectScope(),d.stop(),d=vue.effectScope(!0);}function b(i=!0){u.value.$touch(i),l.value.forEach(R=>{R.$touch(i);});}function P(){u.value.$reset(),l.value.forEach(i=>{i.$reset();});}async function M(){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(i=>{i.$clearExternalErrors();});}function D(i=!0){let R=l.value.map(g=>{if(Me(g))return g.$extractDirtyFields(i)});return i&&(R=R.filter(g=>L(g)?!J(g):!!g)),R}function H(){j(),rt(e,p),P();}let{$shortcuts:C,...S}=y;return vue.reactive({$field:u,...S,...C,$each:l,$value:e,$validate:M,$unwatch:j,$watch:B,$touch:b,$reset:P,$resetAll:H,$extractDirtyFields:D,$clearExternalErrors:m})}function _e({scopeRules:e,state:t,customMessages:r,path:n="",rootRules:a,storage:o,options:f,externalErrors:p,validationGroups:E,initialState:h,shortcuts:$,fieldName:y}){let d,v,s=null;function u(C=!0){l.value=null,vue.triggerRef(l);let S=Object.fromEntries(Object.entries(e.value).map(([c,T])=>{if(T){let I=vue.toRef(t.value,c),U=vue.toRef(()=>T),K=vue.toRef(p?.value,c);return [c,me({state:I,rulesDef:U,customMessages:r,path:n?`${n}.${c}`:c,storage:o,options:f,externalErrors:K,initialState:h?.[c],shortcuts:$,fieldName:c})]}return []}).filter(c=>!!c.length&&c[1]!=null)),i=Object.fromEntries(Object.entries(vue.unref(p)??{}).filter(([c])=>!(c in e.value)).map(([c,T])=>{if(T){let I=vue.toRef(t.value,c),U=vue.toRef(()=>({}));return [c,me({state:I,rulesDef:U,customMessages:r,path:n?`${n}.${c}`:c,storage:o,options:f,externalErrors:vue.toRef(p?.value??{},c),initialState:h?.[c],shortcuts:$,fieldName:c})]}return []})),R=Object.fromEntries(Object.entries(t.value).filter(([c])=>!(c in e.value)&&!(c in(i.value??{}))).map(([c,T])=>{let I=vue.toRef(t.value,c),U=vue.toRef(()=>({}));return [c,me({state:I,rulesDef:U,customMessages:r,path:n?`${n}.${c}`:c,storage:o,options:f,externalErrors:vue.toRef(p?.value??{},c),initialState:h?.[c],shortcuts:$,fieldName:c})]})),g=Object.fromEntries(Object.entries(E?.(S)??{}).map(([c,T])=>T.length?[c,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$valid"].map(I=>[I,Qe(vue.toRef(()=>T),I)])),...Object.fromEntries(["$errors","$silentErrors"].map(I=>[I,Xe(vue.toRef(()=>T),I)]))}]:[]));l.value={...S,...i,...R,...g},C&&j();}let l=o.getFieldsEntry(n);u();function x(){Object.entries(l.value).forEach(([C,S])=>{S.$reset();});}function A(C=!0){Object.values(l.value).forEach(S=>{S.$touch(C);});}async function B(){try{return (await Promise.allSettled(Object.values(l.value).map(i=>i.$validate()))).every(i=>i.status==="fulfilled"?i.value!==!1:!1)?t.value:!1}catch{return !1}}function j(){a&&(s=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(([W,F])=>F?.$dirty)),S=vue.computed(()=>Object.entries(l.value).some(([W,F])=>F?.$dirty)),i=vue.computed(()=>Object.entries(l.value).some(([W,F])=>F?.$invalid)),R=vue.computed(()=>Object.entries(l.value).every(([W,F])=>F?.$valid)),g=vue.computed(()=>C.value&&!T.value&&i.value),c=vue.computed(()=>vue.unref(f.autoDirty)?S.value&&!(i.value||T.value):!(i.value||T.value)),T=vue.computed(()=>Object.entries(l.value).some(([W,F])=>F?.$pending)),I=vue.computed(()=>Object.fromEntries(Object.entries(l.value).map(([W,F])=>[W,F?.$errors]))),U=vue.computed(()=>Object.fromEntries(Object.entries(l.value).map(([W,F])=>[W,F?.$silentErrors]))),K=vue.computed(()=>y);function oe(){$?.nested&&Object.entries($.nested).forEach(([W,F])=>{let w=vue.effectScope();ne[W]=w.run(()=>{let se=vue.ref();return vue.watchEffect(()=>{se.value=F({$dirty:C.value,$value:t,$error:g.value,$pending:T.value,$invalid:i.value,$valid:R.value,$ready:c.value,$anyDirty:S.value,$name:K.value,$silentErrors:U.value,$errors:I.value,$fields:l.value});}),se});});}let ne={};return oe(),{$dirty:C,$anyDirty:S,$invalid:i,$valid:R,$error:g,$pending:T,$errors:I,$silentErrors:U,$ready:c,$name:K,$shortcuts:ne}});}function b(){l.value&&Object.entries(l.value).forEach(([C,S])=>{S.$unwatch();}),s?.(),d.stop(),d=vue.effectScope();}function P(){Object.entries(l.value).forEach(([C,S])=>{S.$clearExternalErrors();});}function M(){b(),fe(t,h??{}),u(!1),x(),j();}function m(C=!0){let S=Object.entries(l.value).map(([i,R])=>[i,R.$extractDirtyFields(C)]);return C&&(S=S.filter(([i,R])=>L(R)?!J(R):Array.isArray(R)?R.length:!!R)),Object.fromEntries(S)}let{$shortcuts:D,...H}=v;return vue.reactive({...H,...D,$fields:l,$value:t,$resetAll:M,$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:E,shortcuts:h,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:E,fieldName:y,shortcuts:h}):nt(e,t)&&et(e)?_e({scopeRules:t,state:e,customMessages:r,path:n,storage:a,options:o,index:p,initialState:E,shortcuts:h,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:h,initialState:E,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 E=vue.isRef(f)?f:vue.computed(typeof f=="function"?f:()=>f),h={...n,...p},$=vue.isRef(o)?o:vue.ref(o),y=te(vue.toRaw($.value));return {r$:Ne({scopeRules:E,state:$,options:h,initialState:y,customRules:e,shortcuts:r})}}return a}var Rt=Ge();function Be(){function e(t,r){return r}return e}var Ue=Be();function pt({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=pt;exports.inferRules=Ue;exports.unwrapRuleParameters=q;exports.useRegle=Rt;
|
|
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
|
@@ -584,6 +584,13 @@ type RegleCollectionErrors<TState extends Record<string, any>> = {
|
|
|
584
584
|
readonly $errors: string[];
|
|
585
585
|
readonly $each: RegleValidationErrors<TState>[];
|
|
586
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
|
+
};
|
|
587
594
|
|
|
588
595
|
/**
|
|
589
596
|
* @public
|
|
@@ -605,7 +612,7 @@ type RegleStatus<TState extends Record<string, any> = Record<string, any>, TRule
|
|
|
605
612
|
readonly $errors: RegleErrorTree<TState>;
|
|
606
613
|
readonly $silentErrors: RegleErrorTree<TState>;
|
|
607
614
|
$extractDirtyFields: (filterNullishValues?: boolean) => PartialDeep<TState>;
|
|
608
|
-
$validate: () => Promise<
|
|
615
|
+
$validate: () => Promise<RegleResult<TState, TRules>>;
|
|
609
616
|
} & ([TShortcuts['nested']] extends [never] ? {} : {
|
|
610
617
|
[K in keyof TShortcuts['nested']]: ReturnType<NonNullable<TShortcuts['nested']>[K]>;
|
|
611
618
|
});
|
|
@@ -622,7 +629,7 @@ type RegleFieldStatus<TState extends any = any, TRules extends RegleFormProperty
|
|
|
622
629
|
readonly $silentErrors: string[];
|
|
623
630
|
readonly $externalErrors: string[];
|
|
624
631
|
$extractDirtyFields: (filterNullishValues?: boolean) => Maybe<TState>;
|
|
625
|
-
$validate: () => Promise<
|
|
632
|
+
$validate: () => Promise<RegleResult<TState, TRules>>;
|
|
626
633
|
readonly $rules: {
|
|
627
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>;
|
|
628
635
|
};
|
|
@@ -679,7 +686,7 @@ type RegleCollectionStatus<TState extends any[] = any[], TRules extends ReglePar
|
|
|
679
686
|
readonly $errors: RegleCollectionErrors<TState>;
|
|
680
687
|
readonly $silentErrors: RegleCollectionErrors<TState>;
|
|
681
688
|
$extractDirtyFields: (filterNullishValues?: boolean) => PartialDeep<TState>;
|
|
682
|
-
$validate: () => Promise<
|
|
689
|
+
$validate: () => Promise<RegleResult<TState, TRules>>;
|
|
683
690
|
} & ([TShortcuts['collections']] extends [never] ? {} : {
|
|
684
691
|
[K in keyof TShortcuts['collections']]: ReturnType<NonNullable<TShortcuts['collections']>[K]>;
|
|
685
692
|
});
|
|
@@ -732,4 +739,4 @@ declare function defineRegleConfig<TCustomRules extends Partial<AllRulesDeclarat
|
|
|
732
739
|
inferRules: inferRulesFn<TCustomRules>;
|
|
733
740
|
};
|
|
734
741
|
|
|
735
|
-
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
|
@@ -584,6 +584,13 @@ type RegleCollectionErrors<TState extends Record<string, any>> = {
|
|
|
584
584
|
readonly $errors: string[];
|
|
585
585
|
readonly $each: RegleValidationErrors<TState>[];
|
|
586
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
|
+
};
|
|
587
594
|
|
|
588
595
|
/**
|
|
589
596
|
* @public
|
|
@@ -605,7 +612,7 @@ type RegleStatus<TState extends Record<string, any> = Record<string, any>, TRule
|
|
|
605
612
|
readonly $errors: RegleErrorTree<TState>;
|
|
606
613
|
readonly $silentErrors: RegleErrorTree<TState>;
|
|
607
614
|
$extractDirtyFields: (filterNullishValues?: boolean) => PartialDeep<TState>;
|
|
608
|
-
$validate: () => Promise<
|
|
615
|
+
$validate: () => Promise<RegleResult<TState, TRules>>;
|
|
609
616
|
} & ([TShortcuts['nested']] extends [never] ? {} : {
|
|
610
617
|
[K in keyof TShortcuts['nested']]: ReturnType<NonNullable<TShortcuts['nested']>[K]>;
|
|
611
618
|
});
|
|
@@ -622,7 +629,7 @@ type RegleFieldStatus<TState extends any = any, TRules extends RegleFormProperty
|
|
|
622
629
|
readonly $silentErrors: string[];
|
|
623
630
|
readonly $externalErrors: string[];
|
|
624
631
|
$extractDirtyFields: (filterNullishValues?: boolean) => Maybe<TState>;
|
|
625
|
-
$validate: () => Promise<
|
|
632
|
+
$validate: () => Promise<RegleResult<TState, TRules>>;
|
|
626
633
|
readonly $rules: {
|
|
627
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>;
|
|
628
635
|
};
|
|
@@ -679,7 +686,7 @@ type RegleCollectionStatus<TState extends any[] = any[], TRules extends ReglePar
|
|
|
679
686
|
readonly $errors: RegleCollectionErrors<TState>;
|
|
680
687
|
readonly $silentErrors: RegleCollectionErrors<TState>;
|
|
681
688
|
$extractDirtyFields: (filterNullishValues?: boolean) => PartialDeep<TState>;
|
|
682
|
-
$validate: () => Promise<
|
|
689
|
+
$validate: () => Promise<RegleResult<TState, TRules>>;
|
|
683
690
|
} & ([TShortcuts['collections']] extends [never] ? {} : {
|
|
684
691
|
[K in keyof TShortcuts['collections']]: ReturnType<NonNullable<TShortcuts['collections']>[K]>;
|
|
685
692
|
});
|
|
@@ -732,4 +739,4 @@ declare function defineRegleConfig<TCustomRules extends Partial<AllRulesDeclarat
|
|
|
732
739
|
inferRules: inferRulesFn<TCustomRules>;
|
|
733
740
|
};
|
|
734
741
|
|
|
735
|
-
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,bt(e))),r=="Array"||r=="Object"){t=Array.isArray(e)?[]:{};for(let n in e)t[n]=te(e[n]);}return t}function bt(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,E)=>{a[r][E]={},fe(a[r][E],o[E]);})):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 Et(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=Et(version,"3.5.0")!==-1;function Dt(){return Math.floor(Math.random()*Date.now()).toString()}function Oe(){return typeof window>"u"?Dt():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 E(u,l,x){o.value.set(`${u}-${l}`,x);}function h(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 s(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((M,m)=>{if(typeof P=="number"||typeof P=="boolean")return !0;{let D=q(P._params),H=q(b._params);return D?.[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:s,getDirtyState:d,trySetRuleStatusRef:N,getFieldsEntry:f,getCollectionsEntry:p,getArrayStatus:h,addArrayStatus:E,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 Me(e){return L(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:o,storage:f,$debounce:p}){let E=effectScope(),h,$,y=ref(!1),{$pending:d,$valid:v,$metadata:s,$validating:V}=f.trySetRuleStatusRef(`${o}.${n}`);function N(){h=E.run(()=>{let b=computed(()=>({$invalid:!v.value,$params:H.value,...s.value})),P=computed(()=>pe(r)?typeof r.value.active=="function"?r.value.active(a.value,b.value):!!r.value.active:!0),M=computed(()=>{let S="",i=t?t[n]?.message:void 0;return i&&(typeof i=="function"?S=i(a.value,b.value):S=i),pe(r)&&(i&&!r.value._patched||(typeof r.value.message=="function"?S=r.value.message(a.value,b.value):S=r.value.message)),J(S)&&(S="Error",console.warn(`No error message defined for ${o}.${n}`)),S}),m=computed(()=>pe(r)&&r.value.type?r.value.type:n),D=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:M,$type:m,$validator:D,$params:H,$path:C}}),$=watch(h.$params,A,{deep:!0});}N();function u(){v.value=!0,e.value&&(d.value=!0);}async function l(){let b=h.$validator.value,P=b(a.value,...h.$params.value),M=!1,m=a.value;try{u();let D;if(P instanceof Promise?D=await P:D=P,a.value!==m)return !0;if(typeof D=="boolean")M=D;else {let{$valid:H,...C}=D;M=H,s.value=C;}}catch{M=!1;}finally{d.value=!1;}return M}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=h.$validator.value,M=P(a.value,...h.$params.value);if(M instanceof Promise)console.warn('You used a async validator function on a non-async rule, please use "async await" or the "withAsync" helper');else if(M!=null)if(typeof M=="boolean")b=M;else {let{$valid:m,...D}=M;b=m,s.value=D;}}return v.value=b,b}catch{return !1}finally{V.value=!1;}}function B(){v.value=!0,s.value={},d.value=!1,V.value=!1,N();}function j(){$(),E.stop(),E=effectScope();}return reactive({...h,$pending:d,$valid:v,$metadata:s,_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:E,$isArray:h,initialState:$,shortcuts:y}){let d=effectScope(),v,s=ref(!1),V=ref(!1),N,u,l,x,A=()=>{};function B(){let O=t.value,G=o.checkRuleDeclEntry(n,O);D.value=Object.fromEntries(Object.entries(O).filter(([k])=>k.startsWith("$"))),m.value=Object.fromEntries(Object.entries(t.value).filter(([k])=>!k.startsWith("$")).map(([k,X])=>{if(X){let Ee=toRef(()=>X);return [k,ut({$dirty:s,customMessages:r,rule:Ee,ruleKey:k,state:e,path:n,storage:o,$debounce:D.value.$debounce})]}return []}).filter(k=>!!k.length)),P(),j(),G?.valid!=null&&(s.value=o.getDirtyState(n),s.value&&A()),o.addRuleDeclEntry(n,O);}function j(){A=v.$debounce.value?$e(M,v.$debounce.value??v.haveAnyAsyncRule?100:0):M;}function b(){m.value&&Object.entries(m.value).forEach(([O,G])=>{G.$unwatch();}),l(),s.value&&o.setDirtyEntry(n,s.value),N?.(),u?.(),d.stop(),d=effectScope(),E?.(),x?.();}function P(){m.value&&Object.entries(m.value).forEach(([O,G])=>{G.$watch();}),v=d.run(()=>{let O=computed(()=>s.value),G=computed(()=>D.value.$debounce),k=computed(()=>D.value.$lazy!=null?D.value.$lazy:unref(f.lazy)),X=computed(()=>D.value.$rewardEarly!=null?D.value.$rewardEarly:unref(f.rewardEarly)),Ee=computed(()=>D.value.$clearExternalErrorsOnChange!=null?D.value.$clearExternalErrorsOnChange:unref(f.clearExternalErrorsOnChange)),dt=computed(()=>D.value.$autoDirty!=null?D.value.$autoDirty:unref(f.autoDirty)),We=computed(()=>Object.entries(m.value).some(([ee,z])=>z.$validating)),De=computed(()=>ce.value&&!ge.value&&s.value),ke=computed(()=>De.value?Fe({field:{$dirty:s.value,$externalErrors:p?.value,$rules:m.value}}):[]),He=computed(()=>Fe({field:{$dirty:s.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:s.value&&!J(e.value)&&!We.value?p?.value?.length?!1:X.value?Object.entries(m.value).every(([ee,z])=>z.$valid):!ce.value:!1),vt=computed(()=>Object.entries(m.value).some(([ee,z])=>z._haveAsync));function yt(){y?.fields&&Object.entries(y.fields).forEach(([ee,z])=>{let mt=effectScope();ze[ee]=mt.run(()=>{let Je=ref();return watchEffect(()=>{Je.value=z({$dirty:s.value,$externalErrors:p?.value??[],$value:e,$rules:m.value,$error:De.value,$pending:ge.value,$invalid:ce.value,$valid:xe.value,$errors:ke.value,$ready:qe.value,$silentErrors:He.value,$anyDirty:O.value,$name:Le.value});}),Je});});}let ze={};return yt(),watch(xe,ee=>{ee&&(V.value=!1);}),{$error:De,$pending:ge,$invalid:ce,$valid:xe,$debounce:G,$lazy:k,$errors:ke,$ready:qe,$silentErrors:He,$rewardEarly:X,$autoDirty:dt,$clearExternalErrorsOnChange:Ee,$anyDirty:O,$name:Le,haveAnyAsyncRule:vt,$shortcuts:ze,$validating:We}}),N=watch(e,()=>{v.$autoDirty.value&&(s.value||(s.value=!0)),t.value instanceof Function&&B(),A(),v.$rewardEarly.value!==!0&&v.$clearExternalErrorsOnChange.value&&g();},{deep:h?!0:Se?1:!0}),l=watch(s,()=>{o.setDirtyEntry(n,s.value);}),u=watch(v.$valid,O=>{v.$rewardEarly.value&&O&&(V.value=!1);}),x=watch(v.haveAnyAsyncRule,j);}function M(){Object.values(m.value).forEach(O=>{O.$validate();});}let m=ref(),D=ref();B();function H(){s.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){s.value||(s.value=!0,O&&A());}async function S(){try{if(V.value=!0,!s.value)s.value=!0;else if(v.$autoDirty.value&&s.value&&!v.$pending.value)return !v.$error.value;return (await Promise.allSettled(Object.entries(m.value).map(([k,X])=>X.$validate()))).every(k=>k.status==="fulfilled"?k.value!=!1:!1)?e.value:!1}catch{return !1}}function i(){b(),e.value=tt(e,$),H();}function R(O=!0){return s.value?e.value:null}function g(){p?.value?.length&&(p.value=[]);}!v.$lazy.value&&!s.value&&v.$autoDirty.value&&A();let{$anyDirty:c,$error:T,$errors:I,$invalid:U,$name:K,$pending:oe,$ready:ne,$silentErrors:W,$valid:F,$shortcuts:w,$validating:se}=v;return reactive({$dirty:s,$error:T,$errors:I,$valid:F,$invalid:U,$pending:oe,$silentErrors:W,$anyDirty:c,$ready:ne,$name:K,$externalErrors:p,$value:e,$rules:m,...w,$reset:H,$touch:C,$validate:S,$unwatch:b,$watch:P,$resetAll:i,$extractDirtyFields:R,$clearExternalErrors:g})}function it({$id:e,path:t,index:r,options:n,storage:a,stateValue:o,customMessages:f,rules:p,externalErrors:E,initialState:h,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 s=me({state:o,rulesDef:toRef(()=>p),customMessages:f,path:v,storage:a,options:n,externalErrors:toRef(E?.value??[],r),initialState:h?.[r],shortcuts:$,fieldName:y});if(s){let V=o.value?.$id;s.$id=V??String(d),a.addArrayStatus(e,s.$id,s);}return s}function st({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:o,externalErrors:f,initialState:p,shortcuts:E,fieldName:h}){let $=effectScope(),y,d=effectScope(),v;if(!Array.isArray(e.value)&&!t.value.$each)return null;let s=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?(s.value=Oe(),Object.defineProperties(e.value,{$id:{value:s.value,enumerable:!1,configurable:!1,writable:!1}})):e.value?.$id&&(s.value=e.value.$id)),!v.isPrimitiveArray.value&&(V.value=u.value.$value,Array.isArray(e.value)?l.value=e.value.map((i,R)=>{let g=we(t.value.$each,toRef(()=>i),R),c=it({$id:s.value,path:n,rules:g??{},stateValue:toRef(()=>i),index:R,options:o,storage:a,externalErrors:toRef(f?.value??{},"$each"),initialState:p[R],shortcuts:E,fieldName:h});return c||null}).filter(i=>!!i):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:E,fieldName:h}));}function A(){if(Array.isArray(e.value)){let i=te(l.value);l.value=e.value.map((R,g)=>{let c=toRef(()=>R);if(R.$id&&l.value.find(T=>T.$id===R.$id)){let T=a.getArrayStatus(s.value,R.$id);return T?(T.$value=c,T):null}else {let T=we(t.value.$each,c,g);if(T){let I=it({$id:s.value,path:n,rules:T,stateValue:c,index:g,options:o,storage:a,externalErrors:toRef(f?.value??{},"$each"),initialState:p[g],shortcuts:E,fieldName:h});return I||null}}}).filter(R=>!!R),i.filter(R=>!e.value.find(g=>R.$id===g.$id)).forEach((R,g)=>{a.deleteArrayStatus(s.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 i=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)),T=computed(()=>u.value.$error||l.value.some(w=>w.$error)),I=computed(()=>!(g.value||U.value)),U=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(()=>h);function W(){E?.collections&&Object.entries(E?.collections).forEach(([w,se])=>{let O=effectScope();F[w]=O.run(()=>{let G=ref();return watchEffect(()=>{G.value=se({$dirty:i.value,$error:T.value,$pending:U.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 F={};return W(),{$dirty:i,$anyDirty:R,$invalid:g,$valid:c,$error:T,$pending:U,$errors:K,$silentErrors:oe,$ready:I,$name:ne,$shortcuts:F}}),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(i=>{"$dirty"in i&&i.$unwatch();}),$.stop(),$=effectScope(),d.stop(),d=effectScope(!0);}function b(i=!0){u.value.$touch(i),l.value.forEach(R=>{R.$touch(i);});}function P(){u.value.$reset(),l.value.forEach(i=>{i.$reset();});}async function M(){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(i=>{i.$clearExternalErrors();});}function D(i=!0){let R=l.value.map(g=>{if(Me(g))return g.$extractDirtyFields(i)});return i&&(R=R.filter(g=>L(g)?!J(g):!!g)),R}function H(){j(),rt(e,p),P();}let{$shortcuts:C,...S}=y;return reactive({$field:u,...S,...C,$each:l,$value:e,$validate:M,$unwatch:j,$watch:B,$touch:b,$reset:P,$resetAll:H,$extractDirtyFields:D,$clearExternalErrors:m})}function _e({scopeRules:e,state:t,customMessages:r,path:n="",rootRules:a,storage:o,options:f,externalErrors:p,validationGroups:E,initialState:h,shortcuts:$,fieldName:y}){let d,v,s=null;function u(C=!0){l.value=null,triggerRef(l);let S=Object.fromEntries(Object.entries(e.value).map(([c,T])=>{if(T){let I=toRef(t.value,c),U=toRef(()=>T),K=toRef(p?.value,c);return [c,me({state:I,rulesDef:U,customMessages:r,path:n?`${n}.${c}`:c,storage:o,options:f,externalErrors:K,initialState:h?.[c],shortcuts:$,fieldName:c})]}return []}).filter(c=>!!c.length&&c[1]!=null)),i=Object.fromEntries(Object.entries(unref(p)??{}).filter(([c])=>!(c in e.value)).map(([c,T])=>{if(T){let I=toRef(t.value,c),U=toRef(()=>({}));return [c,me({state:I,rulesDef:U,customMessages:r,path:n?`${n}.${c}`:c,storage:o,options:f,externalErrors:toRef(p?.value??{},c),initialState:h?.[c],shortcuts:$,fieldName:c})]}return []})),R=Object.fromEntries(Object.entries(t.value).filter(([c])=>!(c in e.value)&&!(c in(i.value??{}))).map(([c,T])=>{let I=toRef(t.value,c),U=toRef(()=>({}));return [c,me({state:I,rulesDef:U,customMessages:r,path:n?`${n}.${c}`:c,storage:o,options:f,externalErrors:toRef(p?.value??{},c),initialState:h?.[c],shortcuts:$,fieldName:c})]})),g=Object.fromEntries(Object.entries(E?.(S)??{}).map(([c,T])=>T.length?[c,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$valid"].map(I=>[I,Qe(toRef(()=>T),I)])),...Object.fromEntries(["$errors","$silentErrors"].map(I=>[I,Xe(toRef(()=>T),I)]))}]:[]));l.value={...S,...i,...R,...g},C&&j();}let l=o.getFieldsEntry(n);u();function x(){Object.entries(l.value).forEach(([C,S])=>{S.$reset();});}function A(C=!0){Object.values(l.value).forEach(S=>{S.$touch(C);});}async function B(){try{return (await Promise.allSettled(Object.values(l.value).map(i=>i.$validate()))).every(i=>i.status==="fulfilled"?i.value!==!1:!1)?t.value:!1}catch{return !1}}function j(){a&&(s=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(([W,F])=>F?.$dirty)),S=computed(()=>Object.entries(l.value).some(([W,F])=>F?.$dirty)),i=computed(()=>Object.entries(l.value).some(([W,F])=>F?.$invalid)),R=computed(()=>Object.entries(l.value).every(([W,F])=>F?.$valid)),g=computed(()=>C.value&&!T.value&&i.value),c=computed(()=>unref(f.autoDirty)?S.value&&!(i.value||T.value):!(i.value||T.value)),T=computed(()=>Object.entries(l.value).some(([W,F])=>F?.$pending)),I=computed(()=>Object.fromEntries(Object.entries(l.value).map(([W,F])=>[W,F?.$errors]))),U=computed(()=>Object.fromEntries(Object.entries(l.value).map(([W,F])=>[W,F?.$silentErrors]))),K=computed(()=>y);function oe(){$?.nested&&Object.entries($.nested).forEach(([W,F])=>{let w=effectScope();ne[W]=w.run(()=>{let se=ref();return watchEffect(()=>{se.value=F({$dirty:C.value,$value:t,$error:g.value,$pending:T.value,$invalid:i.value,$valid:R.value,$ready:c.value,$anyDirty:S.value,$name:K.value,$silentErrors:U.value,$errors:I.value,$fields:l.value});}),se});});}let ne={};return oe(),{$dirty:C,$anyDirty:S,$invalid:i,$valid:R,$error:g,$pending:T,$errors:I,$silentErrors:U,$ready:c,$name:K,$shortcuts:ne}});}function b(){l.value&&Object.entries(l.value).forEach(([C,S])=>{S.$unwatch();}),s?.(),d.stop(),d=effectScope();}function P(){Object.entries(l.value).forEach(([C,S])=>{S.$clearExternalErrors();});}function M(){b(),fe(t,h??{}),u(!1),x(),j();}function m(C=!0){let S=Object.entries(l.value).map(([i,R])=>[i,R.$extractDirtyFields(C)]);return C&&(S=S.filter(([i,R])=>L(R)?!J(R):Array.isArray(R)?R.length:!!R)),Object.fromEntries(S)}let{$shortcuts:D,...H}=v;return reactive({...H,...D,$fields:l,$value:t,$resetAll:M,$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:E,shortcuts:h,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:E,fieldName:y,shortcuts:h}):nt(e,t)&&et(e)?_e({scopeRules:t,state:e,customMessages:r,path:n,storage:a,options:o,index:p,initialState:E,shortcuts:h,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:h,initialState:E,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 E=isRef(f)?f:computed(typeof f=="function"?f:()=>f),h={...n,...p},$=isRef(o)?o:ref(o),y=te(toRaw($.value));return {r$:Ne({scopeRules:E,state:$,options:h,initialState:y,customRules:e,shortcuts:r})}}return a}var Rt=Ge();function Be(){function e(t,r){return r}return e}var Ue=Be();function pt({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,pt as defineRegleConfig,Ue as inferRules,q as unwrapRuleParameters,Rt 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};
|