@regle/core 0.2.3 → 0.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +3 -4
- package/dist/index.d.ts +3 -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 Re=(r=>(r.Inline="__inline",r.Async="__async",r))(Re||{});function Oe(e,t){return vue.computed(()=>e.value.some(r=>r[t]))}function Ae(e,t){return vue.computed(()=>e.value.reduce((r,n)=>{let a=n[t]||[];return r.concat(a)},[]))}function B(e){return e.map(t=>t instanceof Function?t():vue.unref(t))}function Fe(e){return e.map(t=>t instanceof Function||vue.isRef(t)?t:vue.toRef(()=>t))}function Me(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 pe(e,...t){let{message:r,validator:n,active:a,type:l,...m}=e,x=l==="__async"||n.constructor.name==="AsyncFunction";return {...{validator($,...i){return e.validator($,...B(i.length?i:t))},message($,i){return typeof e.message=="function"?e.message($,{...i,$params:B(i.$params?.length?i.$params:t)}):e.message},active($,i){return typeof e.active=="function"?e.active($,{...i,$params:B(i.$params?.length?i.$params:t)}):e.active??!0},exec($){let i=e.validator($,...B(t)),c;return i instanceof Promise?i.then(h=>(c=h,typeof c=="object"&&"$valid"in c?c.$valid:typeof c=="boolean"?c:!1)):(c=i,typeof c=="object"&&"$valid"in c?c.$valid:typeof c=="boolean"?c:!1)}},...m,_validator:e.validator,_message:e.message,_active:e.active,_type:e.type,_patched:!1,_async:x,_params:Fe(t)}}function de(e){if(typeof e.validator=="function"){let r=pe(e,...[]),n=e.validator.constructor.name==="AsyncFunction";if(Me(e.validator)>1){let a=function(...l){return pe(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 N(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ve(e){return N(e.value)}function q(e){let t=e,r={}.toString.call(e).slice(8,-1);if(r=="Set"&&(t=new Set([...e].map(n=>q(n)))),r=="Map"&&(t=new Map([...e].map(n=>[q(n[0]),q(n[1])]))),r=="Date"&&(t=new Date(e.getTime())),r=="RegExp"&&(t=RegExp(e.source,rt(e))),r=="Array"||r=="Object"){t=Array.isArray(e)?[]:{};for(let n in e)t[n]=q(e[n]);}return t}function rt(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 me(e,t,r){return e instanceof Function?e(t,r??0):e}function L(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 ee(e,t,r){let n,a=(...l)=>new Promise(m=>{clearTimeout(n),n=setTimeout(()=>{n=void 0,Promise.resolve(e.apply(this,[...l])).then(m);},t);});return a.cancel=()=>{clearTimeout(n),n=void 0;},a.doImmediately=(...l)=>new Promise(m=>{clearTimeout(n),n=setTimeout(()=>{n=void 0,Promise.resolve(e.apply(this,[...l])).then(m);},0);}),a}function at(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]),m=Number(n[a]);if(l>m)return 1;if(m>l)return -1;if(!isNaN(l)&&isNaN(m))return 1;if(isNaN(l)&&!isNaN(m))return -1}return 0}var Q=at(vue.version,"3.5.0")!==-1;function lt(){return Math.floor(Math.random()*Date.now()).toString()}function ye(){return typeof window>"u"?lt():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function ge(){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 m(u){let g=t.value.get(u);if(g)return g;{let E=vue.ref({});return t.value.set(u,E),E}}function x(u){let g=r.value.get(u);if(g)return g;{let E=vue.ref([]);return r.value.set(u,E),E}}function F(u,g,E){l.value.set(`${u}-${g}`,E);}function S(u,g){return l.value.get(`${u}-${g}`)}function $(u,g){u&&g!=null&&l.value.delete(`${u}-${g}`);}function i(u,g){n.value.set(u,g);}function c(u){return n.value.get(u)??!1}function h(u,g){e.value.set(u,g);}function y(u,g){let E=e.value.get(u);return E?v(g,E)?{valid:!0}:{valid:!1}:void 0}function v(u,g){let E=Object.keys(g),A=Object.keys(u);return A.length!==E.length||!A.every(V=>E.includes(V))?!1:A.every(V=>{let b=u[V],j=g[V];return !j||!b||typeof b=="function"||typeof j=="function"||typeof b=="number"||typeof b=="boolean"?!1:b._params?b._params?.every((O,d)=>{if(typeof j=="number"||typeof j=="boolean")return !0;{let o=B(j._params),s=B(b._params);return o?.[d]===s?.[d]}}):!0})}function _(u){let g=a.value.get(u);if(g)return g;{let E=vue.ref(!1),A=vue.ref(!0),k=vue.ref({}),V=vue.ref(!1);return a.value.set(u,{$pending:E,$valid:A,$metadata:k,$validating:V}),{$pending:E,$valid:A,$metadata:k,$validating:V}}}return vue.onScopeDispose(()=>{e.value.clear(),t.value.clear(),r.value.clear(),n.value.clear(),a.value.clear(),l.value.clear();}),{addRuleDeclEntry:h,setDirtyEntry:i,checkRuleDeclEntry:y,getDirtyState:c,trySetRuleStatusRef:_,getFieldsEntry:m,getCollectionsEntry:x,getArrayStatus:S,addArrayStatus:F,deleteArrayStatus:$,arrayStatusStorage:l}}function je(e,t){return N(e.value)&&N(t.value)&&!Object.entries(t.value).some(r=>te(r))}function _e(e){return !!e.value&&"$each"in e.value}function ke(e){return !!e.value&&N(e.value)}function te(e){return N(e)&&"_validator"in e}function re(e){return typeof e.value!="function"}function ve(e){return N(e)&&"$fields"in e}function $e(e){return "$each"in e||"$errors"in e}function Se({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.$externalErrors??[])}function Be({$dirty:e,customMessages:t,rule:r,ruleKey:n,state:a,path:l,storage:m,$debounce:x}){let F=vue.effectScope(),S,$,i=vue.ref(!1),{$pending:c,$valid:h,$metadata:y,$validating:v}=m.trySetRuleStatusRef(`${l}.${n}`);function _(){S=F.run(()=>{let b=vue.computed(()=>({$invalid:!h.value,$params:s.value,...y.value})),j=vue.computed(()=>re(r)?typeof r.value.active=="function"?r.value.active(a.value,b.value):r.value.active:!0),O=vue.computed(()=>{let f="",T=t?t[n]?.message:void 0;return T&&(typeof T=="function"?f=T(a.value,b.value):f=T),re(r)&&(T&&!r.value._patched||(typeof r.value.message=="function"?f=r.value.message(a.value,b.value):f=r.value.message)),L(f)&&(f="Error",console.warn(`No error message defined for ${l}.${n}`)),f}),d=vue.computed(()=>re(r)&&r.value.type?r.value.type:n),o=vue.computed(()=>re(r)?r.value.validator:r.value),s=vue.computed(()=>typeof r.value=="function"?[]:B(r.value._params??[])),p=vue.computed(()=>`${l}.${d.value}`);return {$active:j,$message:O,$type:d,$validator:o,$params:s,$path:p}}),$=vue.watch(S.$params,A,{deep:!0});}_();function u(){h.value=!0,e.value&&(c.value=!0);}async function g(){let b=S.$validator.value,j=b(a.value,...S.$params.value),O=!1,d=a.value;try{u();let o;if(j instanceof Promise?o=await j:o=j,a.value!==d)return !0;if(typeof o=="boolean")O=o;else {let{$valid:s,...p}=o;O=s,y.value=p;}}catch{O=!1;}finally{c.value=!1;}return O}let E=ee(g,x??200);async function A(){v.value=!0;let b=!1;if(te(r.value)&&r.value._async)b=await E();else {let j=S.$validator.value,O=j(a.value,...S.$params.value);if(O 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(O!=null)if(typeof O=="boolean")b=O;else {let{$valid:d,...o}=O;b=d,y.value=o;}}return h.value=b,v.value=!1,b}function k(){h.value=!0,y.value={},c.value=!1,v.value=!1,_();}function V(){$(),F.stop(),F=vue.effectScope();}return vue.reactive({...S,$pending:c,$valid:h,$metadata:y,_haveAsync:i,$validating:v,$validate:A,$unwatch:V,$watch:_,$reset:k})}function oe({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:l,externalErrors:m,index:x,onUnwatch:F,$isArray:S}){let $=vue.effectScope(),i,c=vue.ref(!1),h=vue.ref(!1),y=vue.ref([]),v,_,u,g,E,A=()=>{};function k(){y.value=m.value??[];}k();function V(){let R=t.value,P=a.checkRuleDeclEntry(n,R);s.value=Object.fromEntries(Object.entries(R).filter(([I])=>I.startsWith("$"))),o.value=Object.fromEntries(Object.entries(t.value).filter(([I])=>!I.startsWith("$")).map(([I,w])=>{if(w){let ce=vue.toRef(()=>w);return [I,Be({$dirty:c,customMessages:r,rule:ce,ruleKey:I,state:e,path:n,storage:a,$debounce:s.value.$debounce})]}return []}).filter(I=>!!I.length)),O(),b(),P?.valid!=null&&(c.value=a.getDirtyState(n),c.value&&A()),a.addRuleDeclEntry(n,R);}function b(){A=i.$debounce.value?ee(d,i.$debounce.value??i.haveAnyAsyncRule?100:0):d;}function j(){o.value&&Object.entries(o.value).forEach(([R,P])=>{P.$unwatch();}),g(),c.value&&a.setDirtyEntry(n,c.value),v(),_(),u(),$.stop(),$=vue.effectScope(),F?.(),E?.();}function O(){o.value&&Object.entries(o.value).forEach(([R,P])=>{P.$watch();}),i=$.run(()=>{let R=vue.computed(()=>c.value),P=vue.computed(()=>s.value.$debounce),I=vue.computed(()=>s.value.$lazy!=null?s.value.$lazy:vue.unref(l.lazy)),w=vue.computed(()=>s.value.$rewardEarly!=null?s.value.$rewardEarly:vue.unref(l.rewardEarly)),ce=vue.computed(()=>s.value.$autoDirty!=null?s.value.$autoDirty:vue.unref(l.autoDirty)),Je=vue.computed(()=>Object.entries(o.value).some(([Y,W])=>W.$validating)),Ie=vue.computed(()=>le.value&&!fe.value&&c.value),Ye=vue.computed(()=>Ie.value?Se({field:{$dirty:c.value,$externalErrors:y.value,$rules:o.value}}):[]),Qe=vue.computed(()=>Se({field:{$dirty:c.value,$externalErrors:y.value,$rules:o.value},silent:!0})),Xe=vue.computed(()=>!le.value&&!fe.value),fe=vue.computed(()=>h.value||!w.value?Object.entries(o.value).some(([Y,W])=>W.$pending):!1),le=vue.computed(()=>y.value?.length?!0:!w.value||w.value&&h.value?Object.entries(o.value).some(([Y,W])=>!W.$valid):!1),Pe=vue.computed(()=>c.value&&!L(e.value)&&!Je.value?y.value?.length?!1:w.value?Object.entries(o.value).every(([Y,W])=>W.$valid):!le.value:!1),Ze=vue.computed(()=>Object.entries(o.value).some(([Y,W])=>W._haveAsync));return vue.watch(Pe,Y=>{Y&&(h.value=!1);}),{$error:Ie,$pending:fe,$invalid:le,$valid:Pe,$debounce:P,$lazy:I,$errors:Ye,$ready:Xe,$silentErrors:Qe,$rewardEarly:w,$autoDirty:ce,$anyDirty:R,haveAnyAsyncRule:Ze}}),u=vue.watch(m,k),v=vue.watch(e,()=>{i.$autoDirty.value&&(c.value||(c.value=!0)),t.value instanceof Function&&V(),A(),i.$rewardEarly.value;},{deep:S?!0:Q?1:!0}),g=vue.watch(c,()=>{a.setDirtyEntry(n,c.value);}),_=vue.watch(i.$valid,R=>{i.$rewardEarly.value&&R&&(h.value=!1);}),E=vue.watch(i.haveAnyAsyncRule,b);}function d(){Object.entries(o.value).forEach(([R,P])=>{P.$validate();});}let o=vue.ref(),s=vue.ref();V();function p(){c.value=!1,y.value=[],Object.entries(o.value).forEach(([R,P])=>{P.$reset();}),i.$lazy.value||Object.entries(o.value).map(([R,P])=>P.$validate());}function f(){c.value||(c.value=!0,i.$rewardEarly.value,A());}let T=i.$debounce.value?ee(M,i.$debounce.value??0):M;async function M(){try{if(h.value=!0,i.$autoDirty.value&&c.value&&!i.$pending.value)return !i.$error.value;{let R=Object.entries(o.value).map(([I,w])=>w.$validate());return (await Promise.allSettled(R)).every(I=>I.status==="fulfilled"?I.value:!1)}}catch{return !1}}function D(R=!0){return c.value?e.value:null}function C(){y.value=[];}return i.$lazy.value||M(),vue.reactive({$dirty:c,...i,$externalErrors:y,$value:e,$rules:o,$reset:p,$touch:f,$validate:T,$unwatch:j,$watch:O,$extractDirtyFields:D,$clearExternalErrors:C})}function Ue({$id:e,path:t,index:r,options:n,storage:a,stateValue:l,customMessages:m,rules:x,externalErrors:F}){let S=x.$key?x.$key:ye(),$=`${t}.${String(S)}`;typeof l.value=="object"&&l.value!=null&&(l.value.$id?$=`${t}.${l.value.$id}`:Object.defineProperties(l.value,{$id:{value:S,enumerable:!1,configurable:!1,writable:!1}}));let i=vue.toRef(()=>F.value?.[r]),c=ie({state:l,rulesDef:vue.toRef(()=>x),customMessages:m,path:$,storage:a,options:n,externalErrors:i});if(c){let h=l.value?.$id;c.$id=h??String(S),a.addArrayStatus(e,c.$id,c);}return c}function We({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:l,externalErrors:m}){let x=vue.effectScope(),F,S=vue.effectScope(),$;if(Array.isArray(e.value)&&!t.value.$each)return null;let i=vue.ref(),c=vue.ref(e.value),h,y=vue.ref({}),v=a.getCollectionsEntry(n);$=S.run(()=>{let d=vue.computed(()=>Array.isArray(e.value)&&e.value.length?e.value.some(p=>typeof p!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(p=>te(p)):!1),o=vue.computed(()=>m.value?$e(m.value)?m.value.$errors??[]:[]:[]),s=vue.computed(()=>m.value?$e(m.value)?m.value.$each??[]:[]:[]);return {isPrimitiveArray:d,$externalErrorsField:o,$externalErrorsEach:s}}),_(),g();function _(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?(i.value=ye(),Object.defineProperties(e.value,{$id:{value:i.value,enumerable:!1,configurable:!1,writable:!1}})):e.value?.$id&&(i.value=e.value.$id)),!$.isPrimitiveArray.value&&(c.value=y.value.$value,Array.isArray(e.value)&&t.value.$each?v.value=e.value.map((d,o)=>{let s=me(t.value.$each,vue.toRef(()=>d),o);if(s){let p=Ue({$id:i.value,path:n,rules:s,stateValue:vue.toRef(()=>d),index:o,options:l,storage:a,externalErrors:$.$externalErrorsEach});return p||null}}).filter(d=>!!d):v.value=[],y.value=oe({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:l,externalErrors:$.$externalErrorsField,$isArray:!0}));}function u(){if(Array.isArray(e.value)){let d=q(v.value);v.value=e.value.map((o,s)=>{let p=vue.toRef(()=>o);if(o.$id&&v.value.find(f=>f.$id===o.$id)){let f=a.getArrayStatus(i.value,o.$id);return f?(f.$value=p,f):null}else {let f=me(t.value.$each,p,s);if(f){let T=Ue({$id:i.value,path:n,rules:f,stateValue:p,index:s,options:l,storage:a,externalErrors:$.$externalErrorsEach});return T||null}}}).filter(o=>!!o),d.filter(o=>!e.value.find(s=>o.$id===s.$id)).forEach((o,s)=>{a.deleteArrayStatus(i.value,s.toString());});}else v.value=[];}function g(){h=vue.watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?_():u();},{deep:Q?1:!0,flush:"pre"}),F=x.run(()=>{let d=vue.computed(()=>y.value.$dirty&&v.value.every(R=>R.$dirty)),o=vue.computed(()=>y.value.$anyDirty||v.value.some(R=>R.$dirty)),s=vue.computed(()=>y.value.$invalid||v.value.some(R=>R.$invalid)),p=vue.computed(()=>y.value.$valid&&v.value.every(R=>R.$valid)),f=vue.computed(()=>y.value.$error||v.value.some(R=>R.$error)),T=vue.computed(()=>!s.value&&!M.value),M=vue.computed(()=>y.value.$pending||v.value.some(R=>R.$pending)),D=vue.computed(()=>({$errors:y.value.$errors,$each:v.value.map(R=>R.$errors)})),C=vue.computed(()=>({$errors:y.value.$silentErrors,$each:v.value.map(R=>R.$silentErrors)}));return {$dirty:d,$anyDirty:o,$invalid:s,$valid:p,$error:f,$pending:M,$errors:D,$silentErrors:C,$ready:T}}),$.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`),h());}function E(){h&&h(),y.value&&y.value.$unwatch(),v.value&&v.value.forEach(d=>{"$dirty"in d&&d.$unwatch();}),x.stop(),x=vue.effectScope(),S.stop(),S=vue.effectScope(!0);}function A(){y.value.$touch(),v.value.forEach(d=>{d.$touch();});}function k(){y.value.$reset(),v.value.forEach(d=>{d.$reset();});}async function V(){try{return (await Promise.all([y.value.$validate(),...v.value.map(o=>o.$validate())])).every(o=>!!o)}catch{return !1}}function b(){y.value.$clearExternalErrors(),v.value.forEach(d=>{d.$clearExternalErrors();});}function j(d=!0){let o=v.value.map(s=>{if(ve(s))return s.$extractDirtyFields(d)});return d&&(o=o.filter(s=>N(s)?!L(s):!!s)),o}async function O(){return A(),await V()?e.value:!1}return vue.reactive({$field:y,...F,$each:v,$value:e,$validate:V,$unwatch:E,$watch:g,$touch:A,$reset:k,$extractDirtyFields:j,$parse:O,$clearExternalErrors:b})}function xe({scopeRules:e,state:t,customMessages:r,path:n="",rootRules:a,storage:l,options:m,externalErrors:x,validationGroups:F,initialState:S,processedState:$}){let i,c,h=null;function _(s=!0,p=!1){u.value=null,vue.triggerRef(u);let f=Object.fromEntries(Object.entries(e.value).map(([D,C])=>{if(C){let R=vue.toRef(t.value,D),P=vue.toRef(()=>C),I=vue.toRef(()=>x.value?.[D]);return [D,ie({state:R,rulesDef:P,customMessages:r,path:n?`${n}.${D}`:D,storage:l,options:m,externalErrors:I})]}return []}).filter(D=>!!D.length&&D[1]!=null)),T=Object.fromEntries(Object.entries(vue.unref(x)??{}).filter(([D])=>!(D in e.value)).map(([D,C])=>{if(C){let R=vue.toRef(()=>({})),P=vue.toRef(()=>C);return [D,ie({state:vue.ref(void 0),rulesDef:R,customMessages:r,path:n?`${n}.${D}`:D,storage:l,options:m,externalErrors:P})]}return []})),M=Object.fromEntries(Object.entries(F?.(f)??{}).map(([D,C])=>C.length?[D,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$valid"].map(R=>[R,Oe(vue.toRef(()=>C),R)])),...Object.fromEntries(["$errors","$silentErrors"].map(R=>[R,Ae(vue.toRef(()=>C),R)]))}]:[]));u.value={...f,...T,...M},s&&k();}let u=l.getFieldsEntry(n);_();function g(){_(!1),Object.entries(u.value).forEach(([s,p])=>{p.$reset();}),k();}function E(){Object.entries(u.value).forEach(([s,p])=>{p.$touch();});}async function A(){try{return (await Promise.allSettled(Object.entries(u.value).map(([p,f])=>f.$validate()))).every(p=>p.status==="fulfilled"?p.value:!1)}catch{return !1}}function k(){a&&(h=vue.watch(a,()=>{V(),_();},{deep:Q?1:!0,flush:"post"})),i=vue.effectScope(),c=i.run(()=>{let s=vue.computed(()=>!!Object.entries(u.value).length&&Object.entries(u.value).every(([I,w])=>w.$dirty)),p=vue.computed(()=>Object.entries(u.value).some(([I,w])=>w.$dirty)),f=vue.computed(()=>Object.entries(u.value).some(([I,w])=>w.$invalid)),T=vue.computed(()=>Object.entries(u.value).every(([I,w])=>w.$valid)),M=vue.computed(()=>s.value&&!C.value&&f.value),D=vue.computed(()=>!f.value&&!C.value),C=vue.computed(()=>Object.entries(u.value).some(([I,w])=>w.$pending)),R=vue.computed(()=>Object.fromEntries(Object.entries(u.value).map(([I,w])=>[I,w.$errors]))),P=vue.computed(()=>Object.fromEntries(Object.entries(u.value).map(([I,w])=>[I,w.$silentErrors])));return {$dirty:s,$anyDirty:p,$invalid:f,$valid:T,$error:M,$pending:C,$errors:R,$silentErrors:P,$ready:D}});}function V(){u.value&&Object.entries(u.value).forEach(([s,p])=>{p.$unwatch();}),h?.(),i.stop(),i=vue.effectScope();}function b(){Object.entries(u.value).forEach(([s,p])=>{p.$clearExternalErrors();});}function j(){S&&(V(),O(t,S),g());}function O(s,p){Object.entries(p).forEach(([f,T])=>{let M=vue.isRef(s)?s.value:s,D=vue.isRef(M[f])?M[f].value:M[f],C=vue.isRef(p[f])?p[f]._value:p[f];Array.isArray(C)&&Array.isArray(D)?(M[f]=[],C.forEach((R,P)=>{M[f][P]={},O(M[f][P],C[P]);})):N(C)?O(D,C):vue.isRef(M[f])?M[f].value=C:M[f]=C;});}function d(s=!0){let p=Object.entries(u.value).map(([f,T])=>[f,T.$extractDirtyFields(s)]);return s&&(p=p.filter(([f,T])=>N(T)?!L(T):Array.isArray(T)?T.length:!!T)),Object.fromEntries(p)}async function o(){return E(),await A()?t.value:!1}return vue.reactive({...c,$fields:u,$value:t,...S&&{$resetAll:j},$reset:g,$touch:E,$validate:A,$unwatch:V,$watch:k,$clearExternalErrors:b,$extractDirtyFields:d,$parse:o})}function ie({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:l,externalErrors:m,index:x,onUnwatch:F}){return _e(t)?We({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:l,index:x,externalErrors:m}):je(e,t)&&Ve(e)?xe({scopeRules:t,state:e,customMessages:r,path:n,storage:a,options:l,index:x,externalErrors:m}):ke(t)?oe({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:l,index:x,externalErrors:m,onUnwatch:F}):null}function he(e,t,r,n,a,l){let m=ge(),x=vue.computed(()=>vue.unref(r.externalErrors));return vue.reactive(xe({rootRules:e,scopeRules:e,state:t,customMessages:l?.(),storage:m,options:r,externalErrors:x,validationGroups:r.validationGroups,processedState:n,initialState:a}))}function Te(e,t){let r={autoDirty:t?.autoDirty??!0,lazy:t?.lazy??!1,rewardEarly:t?.rewardEarly??!1};function n(a,l,m){let x=vue.isRef(l)?l:vue.computed(typeof l=="function"?l:()=>l),F={...r,...m},S=vue.isRef(a)?a:vue.ref(a),$=q(vue.toRaw(S.value));return {r$:he(x,S,F,S,$,e)}}return n}var Le=Te();function De(){function e(t,r){return r}return e}var Ce=De();function ze({rules:e,modifiers:t}){let r=Te(e,t),n=De();return {useRegle:r,inferRules:n}}exports.InternalRuleType=Re;exports.createRule=de;exports.defineRegleConfig=ze;exports.inferRules=Ce;exports.unwrapRuleParameters=B;exports.useRegle=Le;
|
|
1
|
+
'use strict';var vue=require('vue');var de=(r=>(r.Inline="__inline",r.Async="__async",r))(de||{});function Fe(e,t){return vue.computed(()=>e.value.some(r=>r[t]))}function Me(e,t){return vue.computed(()=>e.value.reduce((r,n)=>{let a=n[t]||[];return r.concat(a)},[]))}function _(e){return e.map(t=>t instanceof Function?t():vue.unref(t))}function Ve(e){return e.map(t=>t instanceof Function||vue.isRef(t)?t:vue.toRef(()=>t))}function je(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 ye(e,...t){let{message:r,validator:n,active:a,type:l,...p}=e,b=l==="__async"||n.constructor.name==="AsyncFunction";return {...{validator(v,...c){return e.validator(v,..._(c.length?c:t))},message(v,c){return typeof e.message=="function"?e.message(v,{...c,$params:_(c.$params?.length?c.$params:t)}):e.message},active(v,c){return typeof e.active=="function"?e.active(v,{...c,$params:_(c.$params?.length?c.$params:t)}):e.active??!0},exec(v){let c=e.validator(v,..._(t)),o;return c instanceof Promise?c.then(I=>(o=I,typeof o=="object"&&"$valid"in o?o.$valid:typeof o=="boolean"?o:!1)):(o=c,typeof o=="object"&&"$valid"in o?o.$valid:typeof o=="boolean"?o:!1)}},...p,_validator:e.validator,_message:e.message,_active:e.active,_type:e.type,_patched:!1,_async:b,_params:Ve(t)}}function me(e){if(typeof e.validator=="function"){let r=ye(e,...[]),n=e.validator.constructor.name==="AsyncFunction";if(je(e.validator)>1){let a=function(...l){return ye(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 k(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function _e(e){return k(e.value)}function L(e){let t=e,r={}.toString.call(e).slice(8,-1);if(r=="Set"&&(t=new Set([...e].map(n=>L(n)))),r=="Map"&&(t=new Map([...e].map(n=>[L(n[0]),L(n[1])]))),r=="Date"&&(t=new Date(e.getTime())),r=="RegExp"&&(t=RegExp(e.source,st(e))),r=="Array"||r=="Object"){t=Array.isArray(e)?[]:{};for(let n in e)t[n]=L(e[n]);}return t}function st(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 ge(e,t,r){return e instanceof Function?e(t,r??0):e}function ke(e,t){vue.isRef(e)?e.value=t:e=t;}function Ge(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],p=vue.isRef(a[r])?a[r].value:a[r];Array.isArray(a[r])?(a[r]=[],Array.isArray(l)&&l.forEach((b,D)=>{a[r][D]={},re(a[r][D],l[D]);})):k(l)?re(p,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 ne(e,t,r){let n,a=(...l)=>new Promise(p=>{clearTimeout(n),n=setTimeout(()=>{n=void 0,Promise.resolve(e.apply(this,[...l])).then(p);},t);});return a.cancel=()=>{clearTimeout(n),n=void 0;},a.doImmediately=(...l)=>new Promise(p=>{clearTimeout(n),n=setTimeout(()=>{n=void 0,Promise.resolve(e.apply(this,[...l])).then(p);},0);}),a}function ut(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]),p=Number(n[a]);if(l>p)return 1;if(p>l)return -1;if(!isNaN(l)&&isNaN(p))return 1;if(isNaN(l)&&!isNaN(p))return -1}return 0}var Z=ut(vue.version,"3.5.0")!==-1;function ct(){return Math.floor(Math.random()*Date.now()).toString()}function ve(){return typeof window>"u"?ct():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function $e(){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 p(d){let y=t.value.get(d);if(y)return y;{let h=vue.ref({});return t.value.set(d,h),h}}function b(d){let y=r.value.get(d);if(y)return y;{let h=vue.ref([]);return r.value.set(d,h),h}}function D(d,y,h){l.value.set(`${d}-${y}`,h);}function C(d,y){return l.value.get(`${d}-${y}`)}function v(d,y){d&&y!=null&&l.value.delete(`${d}-${y}`);}function c(d,y){n.value.set(d,y);}function o(d){return n.value.get(d)??!1}function I(d,y){e.value.set(d,y);}function P(d,y){let h=e.value.get(d);return h?$(y,h)?{valid:!0}:{valid:!1}:void 0}function $(d,y){let h=Object.keys(y),w=Object.keys(d);return w.length!==h.length||!w.every(F=>h.includes(F))?!1:w.every(F=>{let T=d[F],O=y[F];return !O||!T||typeof T=="function"||typeof O=="function"||typeof T=="number"||typeof T=="boolean"?!1:T._params?T._params?.every((A,E)=>{if(typeof O=="number"||typeof O=="boolean")return !0;{let s=_(O._params),i=_(T._params);return s?.[E]===i?.[E]}}):!0})}function f(d){let y=a.value.get(d);if(y)return y;{let h=vue.ref(!1),w=vue.ref(!0),M=vue.ref({}),F=vue.ref(!1);return a.value.set(d,{$pending:h,$valid:w,$metadata:M,$validating:F}),{$pending:h,$valid:w,$metadata:M,$validating:F}}}return vue.onScopeDispose(()=>{e.value.clear(),t.value.clear(),r.value.clear(),n.value.clear(),a.value.clear(),l.value.clear();}),{addRuleDeclEntry:I,setDirtyEntry:c,checkRuleDeclEntry:P,getDirtyState:o,trySetRuleStatusRef:f,getFieldsEntry:p,getCollectionsEntry:b,getArrayStatus:C,addArrayStatus:D,deleteArrayStatus:v,arrayStatusStorage:l}}function Be(e,t){return k(e.value)&&k(t.value)&&!Object.entries(t.value).some(r=>ae(r))}function Ne(e){return !!e.value&&"$each"in e.value}function Ue(e){return !!e.value&&k(e.value)}function ae(e){return k(e)&&"_validator"in e}function le(e){return typeof e.value!="function"}function Se(e){return k(e)&&"$fields"in e}function Ee(e){return "$each"in e||"$errors"in e}function be({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.$externalErrors??[])}function He({$dirty:e,customMessages:t,rule:r,ruleKey:n,state:a,path:l,storage:p,$debounce:b}){let D=vue.effectScope(),C,v,c=vue.ref(!1),{$pending:o,$valid:I,$metadata:P,$validating:$}=p.trySetRuleStatusRef(`${l}.${n}`);function f(){C=D.run(()=>{let T=vue.computed(()=>({$invalid:!I.value,$params:i.value,...P.value})),O=vue.computed(()=>le(r)?typeof r.value.active=="function"?r.value.active(a.value,T.value):r.value.active:!0),A=vue.computed(()=>{let u="",m=t?t[n]?.message:void 0;return m&&(typeof m=="function"?u=m(a.value,T.value):u=m),le(r)&&(m&&!r.value._patched||(typeof r.value.message=="function"?u=r.value.message(a.value,T.value):u=r.value.message)),z(u)&&(u="Error",console.warn(`No error message defined for ${l}.${n}`)),u}),E=vue.computed(()=>le(r)&&r.value.type?r.value.type:n),s=vue.computed(()=>le(r)?r.value.validator:r.value),i=vue.computed(()=>typeof r.value=="function"?[]:_(r.value._params??[])),R=vue.computed(()=>`${l}.${E.value}`);return {$active:O,$message:A,$type:E,$validator:s,$params:i,$path:R}}),v=vue.watch(C.$params,w,{deep:!0});}f();function d(){I.value=!0,e.value&&(o.value=!0);}async function y(){let T=C.$validator.value,O=T(a.value,...C.$params.value),A=!1,E=a.value;try{d();let s;if(O instanceof Promise?s=await O:s=O,a.value!==E)return !0;if(typeof s=="boolean")A=s;else {let{$valid:i,...R}=s;A=i,P.value=R;}}catch{A=!1;}finally{o.value=!1;}return A}let h=ne(y,b??200);async function w(){$.value=!0;let T=!1;if(ae(r.value)&&r.value._async)T=await h();else {let O=C.$validator.value,A=O(a.value,...C.$params.value);if(A 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(A!=null)if(typeof A=="boolean")T=A;else {let{$valid:E,...s}=A;T=E,P.value=s;}}return I.value=T,$.value=!1,T}function M(){I.value=!0,P.value={},o.value=!1,$.value=!1,f();}function F(){v(),D.stop(),D=vue.effectScope();}return vue.reactive({...C,$pending:o,$valid:I,$metadata:P,_haveAsync:c,$validating:$,$validate:w,$unwatch:F,$watch:f,$reset:M})}function ue({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:l,externalErrors:p,onUnwatch:b,$isArray:D,initialState:C}){let v=vue.effectScope(),c,o=vue.ref(!1),I=vue.ref(!1),P=vue.ref([]),$,f,d,y,h,w=()=>{};function M(){P.value=p.value??[];}M();function F(){let g=t.value,S=a.checkRuleDeclEntry(n,g);i.value=Object.fromEntries(Object.entries(g).filter(([V])=>V.startsWith("$"))),s.value=Object.fromEntries(Object.entries(t.value).filter(([V])=>!V.startsWith("$")).map(([V,U])=>{if(U){let Re=vue.toRef(()=>U);return [V,He({$dirty:o,customMessages:r,rule:Re,ruleKey:V,state:e,path:n,storage:a,$debounce:i.value.$debounce})]}return []}).filter(V=>!!V.length)),A(),T(),S?.valid!=null&&(o.value=a.getDirtyState(n),o.value&&w()),a.addRuleDeclEntry(n,g);}function T(){w=c.$debounce.value?ne(E,c.$debounce.value??c.haveAnyAsyncRule?100:0):E;}function O(){s.value&&Object.entries(s.value).forEach(([g,S])=>{S.$unwatch();}),y(),o.value&&a.setDirtyEntry(n,o.value),$(),f(),d(),v.stop(),v=vue.effectScope(),b?.(),h?.();}function A(){s.value&&Object.entries(s.value).forEach(([g,S])=>{S.$watch();}),c=v.run(()=>{let g=vue.computed(()=>o.value),S=vue.computed(()=>i.value.$debounce),V=vue.computed(()=>i.value.$lazy!=null?i.value.$lazy:vue.unref(l.lazy)),U=vue.computed(()=>i.value.$rewardEarly!=null?i.value.$rewardEarly:vue.unref(l.rewardEarly)),Re=vue.computed(()=>i.value.$autoDirty!=null?i.value.$autoDirty:vue.unref(l.autoDirty)),Ze=vue.computed(()=>Object.entries(s.value).some(([X,W])=>W.$validating)),we=vue.computed(()=>ie.value&&!pe.value&&o.value),Ke=vue.computed(()=>we.value?be({field:{$dirty:o.value,$externalErrors:P.value,$rules:s.value}}):[]),et=vue.computed(()=>be({field:{$dirty:o.value,$externalErrors:P.value,$rules:s.value},silent:!0})),tt=vue.computed(()=>!(ie.value||pe.value)),pe=vue.computed(()=>I.value||!U.value?Object.entries(s.value).some(([X,W])=>W.$pending):!1),ie=vue.computed(()=>P.value?.length?!0:!U.value||U.value&&I.value?Object.entries(s.value).some(([X,W])=>!W.$valid):!1),Oe=vue.computed(()=>o.value&&!z(e.value)&&!Ze.value?P.value?.length?!1:U.value?Object.entries(s.value).every(([X,W])=>W.$valid):!ie.value:!1),rt=vue.computed(()=>Object.entries(s.value).some(([X,W])=>W._haveAsync));return vue.watch(Oe,X=>{X&&(I.value=!1);}),{$error:we,$pending:pe,$invalid:ie,$valid:Oe,$debounce:S,$lazy:V,$errors:Ke,$ready:tt,$silentErrors:et,$rewardEarly:U,$autoDirty:Re,$anyDirty:g,haveAnyAsyncRule:rt}}),d=vue.watch(p,M),$=vue.watch(e,()=>{c.$autoDirty.value&&(o.value||(o.value=!0)),t.value instanceof Function&&F(),w(),c.$rewardEarly.value;},{deep:D?!0:Z?1:!0}),y=vue.watch(o,()=>{a.setDirtyEntry(n,o.value);}),f=vue.watch(c.$valid,g=>{c.$rewardEarly.value&&g&&(I.value=!1);}),h=vue.watch(c.haveAnyAsyncRule,T);}function E(){Object.entries(s.value).forEach(([g,S])=>{S.$validate();});}let s=vue.ref(),i=vue.ref();F();function R(){o.value=!1,P.value=[],Object.entries(s.value).forEach(([g,S])=>{S.$reset();}),c.$lazy.value||Object.entries(s.value).map(([g,S])=>S.$validate());}function u(){o.value||(o.value=!0,c.$rewardEarly.value,w());}let m=c.$debounce.value?ne(x,c.$debounce.value??0):x;async function x(){try{if(I.value=!0,c.$autoDirty.value&&o.value&&!c.$pending.value)return !c.$error.value;{let g=Object.entries(s.value).map(([V,U])=>U.$validate());return (await Promise.allSettled(g)).every(V=>V.status==="fulfilled"?V.value:!1)}}catch{return !1}}function G(){O(),e.value=ke(e,C),R();}function q(g=!0){return o.value?e.value:null}function B(){P.value=[];}return c.$lazy.value||x(),vue.reactive({$dirty:o,...c,$externalErrors:P,$value:e,$rules:s,$reset:R,$touch:u,$validate:m,$unwatch:O,$watch:A,$resetAll:G,$extractDirtyFields:q,$clearExternalErrors:B})}function Le({$id:e,path:t,index:r,options:n,storage:a,stateValue:l,customMessages:p,rules:b,externalErrors:D,initialState:C}){let v=b.$key?b.$key:ve(),c=`${t}.${String(v)}`;typeof l.value=="object"&&l.value!=null&&(l.value.$id?c=`${t}.${l.value.$id}`:Object.defineProperties(l.value,{$id:{value:v,enumerable:!1,configurable:!1,writable:!1}}));let o=vue.toRef(()=>D.value?.[r]),I=fe({state:l,rulesDef:vue.toRef(()=>b),customMessages:p,path:c,storage:a,options:n,externalErrors:o,initialState:C?.[r]});if(I){let P=l.value?.$id;I.$id=P??String(v),a.addArrayStatus(e,I.$id,I);}return I}function ze({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:l,externalErrors:p,initialState:b}){let D=vue.effectScope(),C,v=vue.effectScope(),c;if(Array.isArray(e.value)&&!t.value.$each)return null;let o=vue.ref(),I=vue.ref(e.value),P,$=vue.ref({}),f=a.getCollectionsEntry(n);c=v.run(()=>{let i=vue.computed(()=>Array.isArray(e.value)&&e.value.length?e.value.some(m=>typeof m!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(m=>ae(m)):!1),R=vue.computed(()=>p.value?Ee(p.value)?p.value.$errors??[]:[]:[]),u=vue.computed(()=>p.value?Ee(p.value)?p.value.$each??[]:[]:[]);return {isPrimitiveArray:i,$externalErrorsField:R,$externalErrorsEach:u}}),d(),h();function d(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?(o.value=ve(),Object.defineProperties(e.value,{$id:{value:o.value,enumerable:!1,configurable:!1,writable:!1}})):e.value?.$id&&(o.value=e.value.$id)),!c.isPrimitiveArray.value&&(I.value=$.value.$value,Array.isArray(e.value)&&t.value.$each?f.value=e.value.map((i,R)=>{let u=ge(t.value.$each,vue.toRef(()=>i),R);if(u){let m=Le({$id:o.value,path:n,rules:u,stateValue:vue.toRef(()=>i),index:R,options:l,storage:a,externalErrors:c.$externalErrorsEach,initialState:b[R]});return m||null}}).filter(i=>!!i):f.value=[],$.value=ue({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:l,externalErrors:c.$externalErrorsField,$isArray:!0,initialState:b}));}function y(){if(Array.isArray(e.value)){let i=L(f.value);f.value=e.value.map((R,u)=>{let m=vue.toRef(()=>R);if(R.$id&&f.value.find(x=>x.$id===R.$id)){let x=a.getArrayStatus(o.value,R.$id);return x?(x.$value=m,x):null}else {let x=ge(t.value.$each,m,u);if(x){let G=Le({$id:o.value,path:n,rules:x,stateValue:m,index:u,options:l,storage:a,externalErrors:c.$externalErrorsEach,initialState:b[u]});return G||null}}}).filter(R=>!!R),i.filter(R=>!e.value.find(u=>R.$id===u.$id)).forEach((R,u)=>{a.deleteArrayStatus(o.value,u.toString());});}else f.value=[];}function h(){P=vue.watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?d():y();},{deep:Z?1:!0,flush:"pre"}),C=D.run(()=>{let i=vue.computed(()=>$.value.$dirty&&f.value.every(S=>S.$dirty)),R=vue.computed(()=>$.value.$anyDirty||f.value.some(S=>S.$dirty)),u=vue.computed(()=>$.value.$invalid||f.value.some(S=>S.$invalid)),m=vue.computed(()=>$.value.$valid&&f.value.every(S=>S.$valid)),x=vue.computed(()=>$.value.$error||f.value.some(S=>S.$error)),G=vue.computed(()=>!(u.value||q.value)),q=vue.computed(()=>$.value.$pending||f.value.some(S=>S.$pending)),B=vue.computed(()=>({$errors:$.value.$errors,$each:f.value.map(S=>S.$errors)})),g=vue.computed(()=>({$errors:$.value.$silentErrors,$each:f.value.map(S=>S.$silentErrors)}));return {$dirty:i,$anyDirty:R,$invalid:u,$valid:m,$error:x,$pending:q,$errors:B,$silentErrors:g,$ready:G}}),c.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`),P());}function w(){P&&P(),$.value&&$.value.$unwatch(),f.value&&f.value.forEach(i=>{"$dirty"in i&&i.$unwatch();}),D.stop(),D=vue.effectScope(),v.stop(),v=vue.effectScope(!0);}function M(){$.value.$touch(),f.value.forEach(i=>{i.$touch();});}function F(){$.value.$reset(),f.value.forEach(i=>{i.$reset();});}async function T(){try{return (await Promise.all([$.value.$validate(),...f.value.map(R=>R.$validate())])).every(R=>!!R)}catch{return !1}}function O(){$.value.$clearExternalErrors(),f.value.forEach(i=>{i.$clearExternalErrors();});}function A(i=!0){let R=f.value.map(u=>{if(Se(u))return u.$extractDirtyFields(i)});return i&&(R=R.filter(u=>k(u)?!z(u):!!u)),R}function E(){console.log(b),w(),Ge(e,b),F();}async function s(){return M(),await T()?e.value:!1}return vue.reactive({$field:$,...C,$each:f,$value:e,$validate:T,$unwatch:w,$watch:h,$touch:M,$reset:F,$resetAll:E,$extractDirtyFields:A,$parse:s,$clearExternalErrors:O})}function Te({scopeRules:e,state:t,customMessages:r,path:n="",rootRules:a,storage:l,options:p,externalErrors:b,validationGroups:D,initialState:C}){let v,c,o=null;function $(E=!0){f.value=null,vue.triggerRef(f);let s=Object.fromEntries(Object.entries(e.value).map(([u,m])=>{if(m){let x=vue.toRef(t.value,u),G=vue.toRef(()=>m),q=vue.toRef(()=>b.value?.[u]);return [u,fe({state:x,rulesDef:G,customMessages:r,path:n?`${n}.${u}`:u,storage:l,options:p,externalErrors:q,initialState:C?.[u]})]}return []}).filter(u=>!!u.length&&u[1]!=null)),i=Object.fromEntries(Object.entries(vue.unref(b)??{}).filter(([u])=>!(u in e.value)).map(([u,m])=>{if(m){let x=vue.toRef(()=>({})),G=vue.toRef(()=>m);return [u,fe({state:vue.ref(void 0),rulesDef:x,customMessages:r,path:n?`${n}.${u}`:u,storage:l,options:p,externalErrors:G,initialState:C?.[u]})]}return []})),R=Object.fromEntries(Object.entries(D?.(s)??{}).map(([u,m])=>m.length?[u,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$valid"].map(x=>[x,Fe(vue.toRef(()=>m),x)])),...Object.fromEntries(["$errors","$silentErrors"].map(x=>[x,Me(vue.toRef(()=>m),x)]))}]:[]));f.value={...s,...i,...R},E&&w();}let f=l.getFieldsEntry(n);$();function d(){$(!1),Object.entries(f.value).forEach(([E,s])=>{s.$reset();}),w();}function y(){Object.entries(f.value).forEach(([E,s])=>{s.$touch();});}async function h(){try{return (await Promise.allSettled(Object.entries(f.value).map(([s,i])=>i.$validate()))).every(s=>s.status==="fulfilled"?s.value:!1)}catch{return !1}}function w(){a&&(o=vue.watch(a,()=>{M(),$();},{deep:Z?1:!0,flush:"post"})),v=vue.effectScope(),c=v.run(()=>{let E=vue.computed(()=>!!Object.entries(f.value).length&&Object.entries(f.value).every(([B,g])=>g.$dirty)),s=vue.computed(()=>Object.entries(f.value).some(([B,g])=>g.$dirty)),i=vue.computed(()=>Object.entries(f.value).some(([B,g])=>g.$invalid)),R=vue.computed(()=>Object.entries(f.value).every(([B,g])=>g.$valid)),u=vue.computed(()=>E.value&&!x.value&&i.value),m=vue.computed(()=>!(i.value||x.value)),x=vue.computed(()=>Object.entries(f.value).some(([B,g])=>g.$pending)),G=vue.computed(()=>Object.fromEntries(Object.entries(f.value).map(([B,g])=>[B,g.$errors]))),q=vue.computed(()=>Object.fromEntries(Object.entries(f.value).map(([B,g])=>[B,g.$silentErrors])));return {$dirty:E,$anyDirty:s,$invalid:i,$valid:R,$error:u,$pending:x,$errors:G,$silentErrors:q,$ready:m}});}function M(){f.value&&Object.entries(f.value).forEach(([E,s])=>{s.$unwatch();}),o?.(),v.stop(),v=vue.effectScope();}function F(){Object.entries(f.value).forEach(([E,s])=>{s.$clearExternalErrors();});}function T(){M(),re(t,C??{}),d();}function O(E=!0){let s=Object.entries(f.value).map(([i,R])=>[i,R.$extractDirtyFields(E)]);return E&&(s=s.filter(([i,R])=>k(R)?!z(R):Array.isArray(R)?R.length:!!R)),Object.fromEntries(s)}async function A(){return y(),await h()?t.value:!1}return vue.reactive({...c,$fields:f,$value:t,$resetAll:T,$reset:d,$touch:y,$validate:h,$unwatch:M,$watch:w,$clearExternalErrors:F,$extractDirtyFields:O,$parse:A})}function fe({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:l,externalErrors:p,index:b,initialState:D,onUnwatch:C}){return Ne(t)?ze({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:l,index:b,externalErrors:p,initialState:D}):Be(e,t)&&_e(e)?Te({scopeRules:t,state:e,customMessages:r,path:n,storage:a,options:l,index:b,initialState:D,externalErrors:p}):Ue(t)?ue({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:l,index:b,externalErrors:p,onUnwatch:C,initialState:D}):null}function De({initialState:e,options:t,scopeRules:r,state:n,customRules:a}){let l=$e(),p=vue.computed(()=>vue.unref(t.externalErrors));return vue.reactive(Te({rootRules:r,scopeRules:r,state:n,customMessages:a?.(),storage:l,options:t,externalErrors:p,validationGroups:t.validationGroups,initialState:e}))}function Ce(e,t){let r={autoDirty:t?.autoDirty??!0,lazy:t?.lazy??!1,rewardEarly:t?.rewardEarly??!1};function n(a,l,p){let b=vue.isRef(l)?l:vue.computed(typeof l=="function"?l:()=>l),D={...r,...p},C=vue.isRef(a)?a:vue.ref(a),v=L(vue.toRaw(C.value));return {r$:De({scopeRules:b,state:C,options:D,initialState:v,customRules:e})}}return n}var Qe=Ce();function Ie(){function e(t,r){return r}return e}var Pe=Ie();function Xe({rules:e,modifiers:t}){let r=Ce(e,t),n=Ie();return {useRegle:r,inferRules:n}}exports.InternalRuleType=de;exports.createRule=me;exports.defineRegleConfig=Xe;exports.inferRules=Pe;exports.unwrapRuleParameters=_;exports.useRegle=Qe;
|
package/dist/index.d.cts
CHANGED
|
@@ -575,9 +575,7 @@ type RegleExternalValidationErrorsReport<TExternalError extends RegleExternalVal
|
|
|
575
575
|
/**
|
|
576
576
|
* @public
|
|
577
577
|
*/
|
|
578
|
-
type RegleRoot<TState extends Record<string, any> = Record<string, any>, TRules extends ReglePartialValidationTree<TState> = Record<string, any>, TValidationGroups extends Record<string, RegleValidationGroupEntry[]> = never, TExternal extends RegleExternalErrorTree<TState> = never> = RegleStatus<TState, TRules, TExternal> & {
|
|
579
|
-
$resetAll: () => void;
|
|
580
|
-
} & ([TValidationGroups] extends [never] ? {} : {
|
|
578
|
+
type RegleRoot<TState extends Record<string, any> = Record<string, any>, TRules extends ReglePartialValidationTree<TState> = Record<string, any>, TValidationGroups extends Record<string, RegleValidationGroupEntry[]> = never, TExternal extends RegleExternalErrorTree<TState> = never> = RegleStatus<TState, TRules, TExternal> & {} & ([TValidationGroups] extends [never] ? {} : {
|
|
581
579
|
$groups: {
|
|
582
580
|
readonly [TKey in keyof TValidationGroups]: RegleValidationGroupOutput;
|
|
583
581
|
};
|
|
@@ -606,7 +604,7 @@ interface RegleFieldStatus<TState extends any = any, TRules extends RegleFormPro
|
|
|
606
604
|
readonly $errors: string[];
|
|
607
605
|
readonly $silentErrors: string[];
|
|
608
606
|
readonly $externalErrors?: string[];
|
|
609
|
-
$extractDirtyFields: (filterNullishValues?: boolean) => TState
|
|
607
|
+
$extractDirtyFields: (filterNullishValues?: boolean) => Maybe<TState>;
|
|
610
608
|
readonly $rules: {
|
|
611
609
|
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>;
|
|
612
610
|
};
|
|
@@ -626,6 +624,7 @@ interface RegleCommonStatus<TValue = any> {
|
|
|
626
624
|
$value: UnwrapNestedRefs<TValue>;
|
|
627
625
|
$touch(): void;
|
|
628
626
|
$reset(): void;
|
|
627
|
+
$resetAll: () => void;
|
|
629
628
|
$validate(): Promise<boolean>;
|
|
630
629
|
$unwatch(): void;
|
|
631
630
|
$watch(): void;
|
package/dist/index.d.ts
CHANGED
|
@@ -575,9 +575,7 @@ type RegleExternalValidationErrorsReport<TExternalError extends RegleExternalVal
|
|
|
575
575
|
/**
|
|
576
576
|
* @public
|
|
577
577
|
*/
|
|
578
|
-
type RegleRoot<TState extends Record<string, any> = Record<string, any>, TRules extends ReglePartialValidationTree<TState> = Record<string, any>, TValidationGroups extends Record<string, RegleValidationGroupEntry[]> = never, TExternal extends RegleExternalErrorTree<TState> = never> = RegleStatus<TState, TRules, TExternal> & {
|
|
579
|
-
$resetAll: () => void;
|
|
580
|
-
} & ([TValidationGroups] extends [never] ? {} : {
|
|
578
|
+
type RegleRoot<TState extends Record<string, any> = Record<string, any>, TRules extends ReglePartialValidationTree<TState> = Record<string, any>, TValidationGroups extends Record<string, RegleValidationGroupEntry[]> = never, TExternal extends RegleExternalErrorTree<TState> = never> = RegleStatus<TState, TRules, TExternal> & {} & ([TValidationGroups] extends [never] ? {} : {
|
|
581
579
|
$groups: {
|
|
582
580
|
readonly [TKey in keyof TValidationGroups]: RegleValidationGroupOutput;
|
|
583
581
|
};
|
|
@@ -606,7 +604,7 @@ interface RegleFieldStatus<TState extends any = any, TRules extends RegleFormPro
|
|
|
606
604
|
readonly $errors: string[];
|
|
607
605
|
readonly $silentErrors: string[];
|
|
608
606
|
readonly $externalErrors?: string[];
|
|
609
|
-
$extractDirtyFields: (filterNullishValues?: boolean) => TState
|
|
607
|
+
$extractDirtyFields: (filterNullishValues?: boolean) => Maybe<TState>;
|
|
610
608
|
readonly $rules: {
|
|
611
609
|
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>;
|
|
612
610
|
};
|
|
@@ -626,6 +624,7 @@ interface RegleCommonStatus<TValue = any> {
|
|
|
626
624
|
$value: UnwrapNestedRefs<TValue>;
|
|
627
625
|
$touch(): void;
|
|
628
626
|
$reset(): void;
|
|
627
|
+
$resetAll: () => void;
|
|
629
628
|
$validate(): Promise<boolean>;
|
|
630
629
|
$unwatch(): void;
|
|
631
630
|
$watch(): void;
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import {unref,version,isRef,toRef,computed,ref,toRaw,reactive,shallowRef,onScopeDispose,triggerRef,watch,effectScope}from'vue';var Re=(r=>(r.Inline="__inline",r.Async="__async",r))(Re||{});function Oe(e,t){return computed(()=>e.value.some(r=>r[t]))}function Ae(e,t){return computed(()=>e.value.reduce((r,n)=>{let a=n[t]||[];return r.concat(a)},[]))}function B(e){return e.map(t=>t instanceof Function?t():unref(t))}function Fe(e){return e.map(t=>t instanceof Function||isRef(t)?t:toRef(()=>t))}function Me(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 pe(e,...t){let{message:r,validator:n,active:a,type:l,...m}=e,x=l==="__async"||n.constructor.name==="AsyncFunction";return {...{validator($,...i){return e.validator($,...B(i.length?i:t))},message($,i){return typeof e.message=="function"?e.message($,{...i,$params:B(i.$params?.length?i.$params:t)}):e.message},active($,i){return typeof e.active=="function"?e.active($,{...i,$params:B(i.$params?.length?i.$params:t)}):e.active??!0},exec($){let i=e.validator($,...B(t)),c;return i instanceof Promise?i.then(h=>(c=h,typeof c=="object"&&"$valid"in c?c.$valid:typeof c=="boolean"?c:!1)):(c=i,typeof c=="object"&&"$valid"in c?c.$valid:typeof c=="boolean"?c:!1)}},...m,_validator:e.validator,_message:e.message,_active:e.active,_type:e.type,_patched:!1,_async:x,_params:Fe(t)}}function de(e){if(typeof e.validator=="function"){let r=pe(e,...[]),n=e.validator.constructor.name==="AsyncFunction";if(Me(e.validator)>1){let a=function(...l){return pe(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 N(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ve(e){return N(e.value)}function q(e){let t=e,r={}.toString.call(e).slice(8,-1);if(r=="Set"&&(t=new Set([...e].map(n=>q(n)))),r=="Map"&&(t=new Map([...e].map(n=>[q(n[0]),q(n[1])]))),r=="Date"&&(t=new Date(e.getTime())),r=="RegExp"&&(t=RegExp(e.source,rt(e))),r=="Array"||r=="Object"){t=Array.isArray(e)?[]:{};for(let n in e)t[n]=q(e[n]);}return t}function rt(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 me(e,t,r){return e instanceof Function?e(t,r??0):e}function L(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 ee(e,t,r){let n,a=(...l)=>new Promise(m=>{clearTimeout(n),n=setTimeout(()=>{n=void 0,Promise.resolve(e.apply(this,[...l])).then(m);},t);});return a.cancel=()=>{clearTimeout(n),n=void 0;},a.doImmediately=(...l)=>new Promise(m=>{clearTimeout(n),n=setTimeout(()=>{n=void 0,Promise.resolve(e.apply(this,[...l])).then(m);},0);}),a}function at(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]),m=Number(n[a]);if(l>m)return 1;if(m>l)return -1;if(!isNaN(l)&&isNaN(m))return 1;if(isNaN(l)&&!isNaN(m))return -1}return 0}var Q=at(version,"3.5.0")!==-1;function lt(){return Math.floor(Math.random()*Date.now()).toString()}function ye(){return typeof window>"u"?lt():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function ge(){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 m(u){let g=t.value.get(u);if(g)return g;{let E=ref({});return t.value.set(u,E),E}}function x(u){let g=r.value.get(u);if(g)return g;{let E=ref([]);return r.value.set(u,E),E}}function F(u,g,E){l.value.set(`${u}-${g}`,E);}function S(u,g){return l.value.get(`${u}-${g}`)}function $(u,g){u&&g!=null&&l.value.delete(`${u}-${g}`);}function i(u,g){n.value.set(u,g);}function c(u){return n.value.get(u)??!1}function h(u,g){e.value.set(u,g);}function y(u,g){let E=e.value.get(u);return E?v(g,E)?{valid:!0}:{valid:!1}:void 0}function v(u,g){let E=Object.keys(g),A=Object.keys(u);return A.length!==E.length||!A.every(V=>E.includes(V))?!1:A.every(V=>{let b=u[V],j=g[V];return !j||!b||typeof b=="function"||typeof j=="function"||typeof b=="number"||typeof b=="boolean"?!1:b._params?b._params?.every((O,d)=>{if(typeof j=="number"||typeof j=="boolean")return !0;{let o=B(j._params),s=B(b._params);return o?.[d]===s?.[d]}}):!0})}function _(u){let g=a.value.get(u);if(g)return g;{let E=ref(!1),A=ref(!0),k=ref({}),V=ref(!1);return a.value.set(u,{$pending:E,$valid:A,$metadata:k,$validating:V}),{$pending:E,$valid:A,$metadata:k,$validating:V}}}return onScopeDispose(()=>{e.value.clear(),t.value.clear(),r.value.clear(),n.value.clear(),a.value.clear(),l.value.clear();}),{addRuleDeclEntry:h,setDirtyEntry:i,checkRuleDeclEntry:y,getDirtyState:c,trySetRuleStatusRef:_,getFieldsEntry:m,getCollectionsEntry:x,getArrayStatus:S,addArrayStatus:F,deleteArrayStatus:$,arrayStatusStorage:l}}function je(e,t){return N(e.value)&&N(t.value)&&!Object.entries(t.value).some(r=>te(r))}function _e(e){return !!e.value&&"$each"in e.value}function ke(e){return !!e.value&&N(e.value)}function te(e){return N(e)&&"_validator"in e}function re(e){return typeof e.value!="function"}function ve(e){return N(e)&&"$fields"in e}function $e(e){return "$each"in e||"$errors"in e}function Se({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.$externalErrors??[])}function Be({$dirty:e,customMessages:t,rule:r,ruleKey:n,state:a,path:l,storage:m,$debounce:x}){let F=effectScope(),S,$,i=ref(!1),{$pending:c,$valid:h,$metadata:y,$validating:v}=m.trySetRuleStatusRef(`${l}.${n}`);function _(){S=F.run(()=>{let b=computed(()=>({$invalid:!h.value,$params:s.value,...y.value})),j=computed(()=>re(r)?typeof r.value.active=="function"?r.value.active(a.value,b.value):r.value.active:!0),O=computed(()=>{let f="",T=t?t[n]?.message:void 0;return T&&(typeof T=="function"?f=T(a.value,b.value):f=T),re(r)&&(T&&!r.value._patched||(typeof r.value.message=="function"?f=r.value.message(a.value,b.value):f=r.value.message)),L(f)&&(f="Error",console.warn(`No error message defined for ${l}.${n}`)),f}),d=computed(()=>re(r)&&r.value.type?r.value.type:n),o=computed(()=>re(r)?r.value.validator:r.value),s=computed(()=>typeof r.value=="function"?[]:B(r.value._params??[])),p=computed(()=>`${l}.${d.value}`);return {$active:j,$message:O,$type:d,$validator:o,$params:s,$path:p}}),$=watch(S.$params,A,{deep:!0});}_();function u(){h.value=!0,e.value&&(c.value=!0);}async function g(){let b=S.$validator.value,j=b(a.value,...S.$params.value),O=!1,d=a.value;try{u();let o;if(j instanceof Promise?o=await j:o=j,a.value!==d)return !0;if(typeof o=="boolean")O=o;else {let{$valid:s,...p}=o;O=s,y.value=p;}}catch{O=!1;}finally{c.value=!1;}return O}let E=ee(g,x??200);async function A(){v.value=!0;let b=!1;if(te(r.value)&&r.value._async)b=await E();else {let j=S.$validator.value,O=j(a.value,...S.$params.value);if(O 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(O!=null)if(typeof O=="boolean")b=O;else {let{$valid:d,...o}=O;b=d,y.value=o;}}return h.value=b,v.value=!1,b}function k(){h.value=!0,y.value={},c.value=!1,v.value=!1,_();}function V(){$(),F.stop(),F=effectScope();}return reactive({...S,$pending:c,$valid:h,$metadata:y,_haveAsync:i,$validating:v,$validate:A,$unwatch:V,$watch:_,$reset:k})}function oe({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:l,externalErrors:m,index:x,onUnwatch:F,$isArray:S}){let $=effectScope(),i,c=ref(!1),h=ref(!1),y=ref([]),v,_,u,g,E,A=()=>{};function k(){y.value=m.value??[];}k();function V(){let R=t.value,P=a.checkRuleDeclEntry(n,R);s.value=Object.fromEntries(Object.entries(R).filter(([I])=>I.startsWith("$"))),o.value=Object.fromEntries(Object.entries(t.value).filter(([I])=>!I.startsWith("$")).map(([I,w])=>{if(w){let ce=toRef(()=>w);return [I,Be({$dirty:c,customMessages:r,rule:ce,ruleKey:I,state:e,path:n,storage:a,$debounce:s.value.$debounce})]}return []}).filter(I=>!!I.length)),O(),b(),P?.valid!=null&&(c.value=a.getDirtyState(n),c.value&&A()),a.addRuleDeclEntry(n,R);}function b(){A=i.$debounce.value?ee(d,i.$debounce.value??i.haveAnyAsyncRule?100:0):d;}function j(){o.value&&Object.entries(o.value).forEach(([R,P])=>{P.$unwatch();}),g(),c.value&&a.setDirtyEntry(n,c.value),v(),_(),u(),$.stop(),$=effectScope(),F?.(),E?.();}function O(){o.value&&Object.entries(o.value).forEach(([R,P])=>{P.$watch();}),i=$.run(()=>{let R=computed(()=>c.value),P=computed(()=>s.value.$debounce),I=computed(()=>s.value.$lazy!=null?s.value.$lazy:unref(l.lazy)),w=computed(()=>s.value.$rewardEarly!=null?s.value.$rewardEarly:unref(l.rewardEarly)),ce=computed(()=>s.value.$autoDirty!=null?s.value.$autoDirty:unref(l.autoDirty)),Je=computed(()=>Object.entries(o.value).some(([Y,W])=>W.$validating)),Ie=computed(()=>le.value&&!fe.value&&c.value),Ye=computed(()=>Ie.value?Se({field:{$dirty:c.value,$externalErrors:y.value,$rules:o.value}}):[]),Qe=computed(()=>Se({field:{$dirty:c.value,$externalErrors:y.value,$rules:o.value},silent:!0})),Xe=computed(()=>!le.value&&!fe.value),fe=computed(()=>h.value||!w.value?Object.entries(o.value).some(([Y,W])=>W.$pending):!1),le=computed(()=>y.value?.length?!0:!w.value||w.value&&h.value?Object.entries(o.value).some(([Y,W])=>!W.$valid):!1),Pe=computed(()=>c.value&&!L(e.value)&&!Je.value?y.value?.length?!1:w.value?Object.entries(o.value).every(([Y,W])=>W.$valid):!le.value:!1),Ze=computed(()=>Object.entries(o.value).some(([Y,W])=>W._haveAsync));return watch(Pe,Y=>{Y&&(h.value=!1);}),{$error:Ie,$pending:fe,$invalid:le,$valid:Pe,$debounce:P,$lazy:I,$errors:Ye,$ready:Xe,$silentErrors:Qe,$rewardEarly:w,$autoDirty:ce,$anyDirty:R,haveAnyAsyncRule:Ze}}),u=watch(m,k),v=watch(e,()=>{i.$autoDirty.value&&(c.value||(c.value=!0)),t.value instanceof Function&&V(),A(),i.$rewardEarly.value;},{deep:S?!0:Q?1:!0}),g=watch(c,()=>{a.setDirtyEntry(n,c.value);}),_=watch(i.$valid,R=>{i.$rewardEarly.value&&R&&(h.value=!1);}),E=watch(i.haveAnyAsyncRule,b);}function d(){Object.entries(o.value).forEach(([R,P])=>{P.$validate();});}let o=ref(),s=ref();V();function p(){c.value=!1,y.value=[],Object.entries(o.value).forEach(([R,P])=>{P.$reset();}),i.$lazy.value||Object.entries(o.value).map(([R,P])=>P.$validate());}function f(){c.value||(c.value=!0,i.$rewardEarly.value,A());}let T=i.$debounce.value?ee(M,i.$debounce.value??0):M;async function M(){try{if(h.value=!0,i.$autoDirty.value&&c.value&&!i.$pending.value)return !i.$error.value;{let R=Object.entries(o.value).map(([I,w])=>w.$validate());return (await Promise.allSettled(R)).every(I=>I.status==="fulfilled"?I.value:!1)}}catch{return !1}}function D(R=!0){return c.value?e.value:null}function C(){y.value=[];}return i.$lazy.value||M(),reactive({$dirty:c,...i,$externalErrors:y,$value:e,$rules:o,$reset:p,$touch:f,$validate:T,$unwatch:j,$watch:O,$extractDirtyFields:D,$clearExternalErrors:C})}function Ue({$id:e,path:t,index:r,options:n,storage:a,stateValue:l,customMessages:m,rules:x,externalErrors:F}){let S=x.$key?x.$key:ye(),$=`${t}.${String(S)}`;typeof l.value=="object"&&l.value!=null&&(l.value.$id?$=`${t}.${l.value.$id}`:Object.defineProperties(l.value,{$id:{value:S,enumerable:!1,configurable:!1,writable:!1}}));let i=toRef(()=>F.value?.[r]),c=ie({state:l,rulesDef:toRef(()=>x),customMessages:m,path:$,storage:a,options:n,externalErrors:i});if(c){let h=l.value?.$id;c.$id=h??String(S),a.addArrayStatus(e,c.$id,c);}return c}function We({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:l,externalErrors:m}){let x=effectScope(),F,S=effectScope(),$;if(Array.isArray(e.value)&&!t.value.$each)return null;let i=ref(),c=ref(e.value),h,y=ref({}),v=a.getCollectionsEntry(n);$=S.run(()=>{let d=computed(()=>Array.isArray(e.value)&&e.value.length?e.value.some(p=>typeof p!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(p=>te(p)):!1),o=computed(()=>m.value?$e(m.value)?m.value.$errors??[]:[]:[]),s=computed(()=>m.value?$e(m.value)?m.value.$each??[]:[]:[]);return {isPrimitiveArray:d,$externalErrorsField:o,$externalErrorsEach:s}}),_(),g();function _(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?(i.value=ye(),Object.defineProperties(e.value,{$id:{value:i.value,enumerable:!1,configurable:!1,writable:!1}})):e.value?.$id&&(i.value=e.value.$id)),!$.isPrimitiveArray.value&&(c.value=y.value.$value,Array.isArray(e.value)&&t.value.$each?v.value=e.value.map((d,o)=>{let s=me(t.value.$each,toRef(()=>d),o);if(s){let p=Ue({$id:i.value,path:n,rules:s,stateValue:toRef(()=>d),index:o,options:l,storage:a,externalErrors:$.$externalErrorsEach});return p||null}}).filter(d=>!!d):v.value=[],y.value=oe({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:l,externalErrors:$.$externalErrorsField,$isArray:!0}));}function u(){if(Array.isArray(e.value)){let d=q(v.value);v.value=e.value.map((o,s)=>{let p=toRef(()=>o);if(o.$id&&v.value.find(f=>f.$id===o.$id)){let f=a.getArrayStatus(i.value,o.$id);return f?(f.$value=p,f):null}else {let f=me(t.value.$each,p,s);if(f){let T=Ue({$id:i.value,path:n,rules:f,stateValue:p,index:s,options:l,storage:a,externalErrors:$.$externalErrorsEach});return T||null}}}).filter(o=>!!o),d.filter(o=>!e.value.find(s=>o.$id===s.$id)).forEach((o,s)=>{a.deleteArrayStatus(i.value,s.toString());});}else v.value=[];}function g(){h=watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?_():u();},{deep:Q?1:!0,flush:"pre"}),F=x.run(()=>{let d=computed(()=>y.value.$dirty&&v.value.every(R=>R.$dirty)),o=computed(()=>y.value.$anyDirty||v.value.some(R=>R.$dirty)),s=computed(()=>y.value.$invalid||v.value.some(R=>R.$invalid)),p=computed(()=>y.value.$valid&&v.value.every(R=>R.$valid)),f=computed(()=>y.value.$error||v.value.some(R=>R.$error)),T=computed(()=>!s.value&&!M.value),M=computed(()=>y.value.$pending||v.value.some(R=>R.$pending)),D=computed(()=>({$errors:y.value.$errors,$each:v.value.map(R=>R.$errors)})),C=computed(()=>({$errors:y.value.$silentErrors,$each:v.value.map(R=>R.$silentErrors)}));return {$dirty:d,$anyDirty:o,$invalid:s,$valid:p,$error:f,$pending:M,$errors:D,$silentErrors:C,$ready:T}}),$.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`),h());}function E(){h&&h(),y.value&&y.value.$unwatch(),v.value&&v.value.forEach(d=>{"$dirty"in d&&d.$unwatch();}),x.stop(),x=effectScope(),S.stop(),S=effectScope(!0);}function A(){y.value.$touch(),v.value.forEach(d=>{d.$touch();});}function k(){y.value.$reset(),v.value.forEach(d=>{d.$reset();});}async function V(){try{return (await Promise.all([y.value.$validate(),...v.value.map(o=>o.$validate())])).every(o=>!!o)}catch{return !1}}function b(){y.value.$clearExternalErrors(),v.value.forEach(d=>{d.$clearExternalErrors();});}function j(d=!0){let o=v.value.map(s=>{if(ve(s))return s.$extractDirtyFields(d)});return d&&(o=o.filter(s=>N(s)?!L(s):!!s)),o}async function O(){return A(),await V()?e.value:!1}return reactive({$field:y,...F,$each:v,$value:e,$validate:V,$unwatch:E,$watch:g,$touch:A,$reset:k,$extractDirtyFields:j,$parse:O,$clearExternalErrors:b})}function xe({scopeRules:e,state:t,customMessages:r,path:n="",rootRules:a,storage:l,options:m,externalErrors:x,validationGroups:F,initialState:S,processedState:$}){let i,c,h=null;function _(s=!0,p=!1){u.value=null,triggerRef(u);let f=Object.fromEntries(Object.entries(e.value).map(([D,C])=>{if(C){let R=toRef(t.value,D),P=toRef(()=>C),I=toRef(()=>x.value?.[D]);return [D,ie({state:R,rulesDef:P,customMessages:r,path:n?`${n}.${D}`:D,storage:l,options:m,externalErrors:I})]}return []}).filter(D=>!!D.length&&D[1]!=null)),T=Object.fromEntries(Object.entries(unref(x)??{}).filter(([D])=>!(D in e.value)).map(([D,C])=>{if(C){let R=toRef(()=>({})),P=toRef(()=>C);return [D,ie({state:ref(void 0),rulesDef:R,customMessages:r,path:n?`${n}.${D}`:D,storage:l,options:m,externalErrors:P})]}return []})),M=Object.fromEntries(Object.entries(F?.(f)??{}).map(([D,C])=>C.length?[D,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$valid"].map(R=>[R,Oe(toRef(()=>C),R)])),...Object.fromEntries(["$errors","$silentErrors"].map(R=>[R,Ae(toRef(()=>C),R)]))}]:[]));u.value={...f,...T,...M},s&&k();}let u=l.getFieldsEntry(n);_();function g(){_(!1),Object.entries(u.value).forEach(([s,p])=>{p.$reset();}),k();}function E(){Object.entries(u.value).forEach(([s,p])=>{p.$touch();});}async function A(){try{return (await Promise.allSettled(Object.entries(u.value).map(([p,f])=>f.$validate()))).every(p=>p.status==="fulfilled"?p.value:!1)}catch{return !1}}function k(){a&&(h=watch(a,()=>{V(),_();},{deep:Q?1:!0,flush:"post"})),i=effectScope(),c=i.run(()=>{let s=computed(()=>!!Object.entries(u.value).length&&Object.entries(u.value).every(([I,w])=>w.$dirty)),p=computed(()=>Object.entries(u.value).some(([I,w])=>w.$dirty)),f=computed(()=>Object.entries(u.value).some(([I,w])=>w.$invalid)),T=computed(()=>Object.entries(u.value).every(([I,w])=>w.$valid)),M=computed(()=>s.value&&!C.value&&f.value),D=computed(()=>!f.value&&!C.value),C=computed(()=>Object.entries(u.value).some(([I,w])=>w.$pending)),R=computed(()=>Object.fromEntries(Object.entries(u.value).map(([I,w])=>[I,w.$errors]))),P=computed(()=>Object.fromEntries(Object.entries(u.value).map(([I,w])=>[I,w.$silentErrors])));return {$dirty:s,$anyDirty:p,$invalid:f,$valid:T,$error:M,$pending:C,$errors:R,$silentErrors:P,$ready:D}});}function V(){u.value&&Object.entries(u.value).forEach(([s,p])=>{p.$unwatch();}),h?.(),i.stop(),i=effectScope();}function b(){Object.entries(u.value).forEach(([s,p])=>{p.$clearExternalErrors();});}function j(){S&&(V(),O(t,S),g());}function O(s,p){Object.entries(p).forEach(([f,T])=>{let M=isRef(s)?s.value:s,D=isRef(M[f])?M[f].value:M[f],C=isRef(p[f])?p[f]._value:p[f];Array.isArray(C)&&Array.isArray(D)?(M[f]=[],C.forEach((R,P)=>{M[f][P]={},O(M[f][P],C[P]);})):N(C)?O(D,C):isRef(M[f])?M[f].value=C:M[f]=C;});}function d(s=!0){let p=Object.entries(u.value).map(([f,T])=>[f,T.$extractDirtyFields(s)]);return s&&(p=p.filter(([f,T])=>N(T)?!L(T):Array.isArray(T)?T.length:!!T)),Object.fromEntries(p)}async function o(){return E(),await A()?t.value:!1}return reactive({...c,$fields:u,$value:t,...S&&{$resetAll:j},$reset:g,$touch:E,$validate:A,$unwatch:V,$watch:k,$clearExternalErrors:b,$extractDirtyFields:d,$parse:o})}function ie({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:l,externalErrors:m,index:x,onUnwatch:F}){return _e(t)?We({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:l,index:x,externalErrors:m}):je(e,t)&&Ve(e)?xe({scopeRules:t,state:e,customMessages:r,path:n,storage:a,options:l,index:x,externalErrors:m}):ke(t)?oe({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:l,index:x,externalErrors:m,onUnwatch:F}):null}function he(e,t,r,n,a,l){let m=ge(),x=computed(()=>unref(r.externalErrors));return reactive(xe({rootRules:e,scopeRules:e,state:t,customMessages:l?.(),storage:m,options:r,externalErrors:x,validationGroups:r.validationGroups,processedState:n,initialState:a}))}function Te(e,t){let r={autoDirty:t?.autoDirty??!0,lazy:t?.lazy??!1,rewardEarly:t?.rewardEarly??!1};function n(a,l,m){let x=isRef(l)?l:computed(typeof l=="function"?l:()=>l),F={...r,...m},S=isRef(a)?a:ref(a),$=q(toRaw(S.value));return {r$:he(x,S,F,S,$,e)}}return n}var Le=Te();function De(){function e(t,r){return r}return e}var Ce=De();function ze({rules:e,modifiers:t}){let r=Te(e,t),n=De();return {useRegle:r,inferRules:n}}export{Re as InternalRuleType,de as createRule,ze as defineRegleConfig,Ce as inferRules,B as unwrapRuleParameters,Le as useRegle};
|
|
1
|
+
import {unref,version,isRef,toRef,computed,ref,toRaw,reactive,shallowRef,onScopeDispose,triggerRef,watch,effectScope}from'vue';var de=(r=>(r.Inline="__inline",r.Async="__async",r))(de||{});function Fe(e,t){return computed(()=>e.value.some(r=>r[t]))}function Me(e,t){return computed(()=>e.value.reduce((r,n)=>{let a=n[t]||[];return r.concat(a)},[]))}function _(e){return e.map(t=>t instanceof Function?t():unref(t))}function Ve(e){return e.map(t=>t instanceof Function||isRef(t)?t:toRef(()=>t))}function je(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 ye(e,...t){let{message:r,validator:n,active:a,type:l,...p}=e,b=l==="__async"||n.constructor.name==="AsyncFunction";return {...{validator(v,...c){return e.validator(v,..._(c.length?c:t))},message(v,c){return typeof e.message=="function"?e.message(v,{...c,$params:_(c.$params?.length?c.$params:t)}):e.message},active(v,c){return typeof e.active=="function"?e.active(v,{...c,$params:_(c.$params?.length?c.$params:t)}):e.active??!0},exec(v){let c=e.validator(v,..._(t)),o;return c instanceof Promise?c.then(I=>(o=I,typeof o=="object"&&"$valid"in o?o.$valid:typeof o=="boolean"?o:!1)):(o=c,typeof o=="object"&&"$valid"in o?o.$valid:typeof o=="boolean"?o:!1)}},...p,_validator:e.validator,_message:e.message,_active:e.active,_type:e.type,_patched:!1,_async:b,_params:Ve(t)}}function me(e){if(typeof e.validator=="function"){let r=ye(e,...[]),n=e.validator.constructor.name==="AsyncFunction";if(je(e.validator)>1){let a=function(...l){return ye(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 k(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function _e(e){return k(e.value)}function L(e){let t=e,r={}.toString.call(e).slice(8,-1);if(r=="Set"&&(t=new Set([...e].map(n=>L(n)))),r=="Map"&&(t=new Map([...e].map(n=>[L(n[0]),L(n[1])]))),r=="Date"&&(t=new Date(e.getTime())),r=="RegExp"&&(t=RegExp(e.source,st(e))),r=="Array"||r=="Object"){t=Array.isArray(e)?[]:{};for(let n in e)t[n]=L(e[n]);}return t}function st(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 ge(e,t,r){return e instanceof Function?e(t,r??0):e}function ke(e,t){isRef(e)?e.value=t:e=t;}function Ge(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],p=isRef(a[r])?a[r].value:a[r];Array.isArray(a[r])?(a[r]=[],Array.isArray(l)&&l.forEach((b,D)=>{a[r][D]={},re(a[r][D],l[D]);})):k(l)?re(p,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 ne(e,t,r){let n,a=(...l)=>new Promise(p=>{clearTimeout(n),n=setTimeout(()=>{n=void 0,Promise.resolve(e.apply(this,[...l])).then(p);},t);});return a.cancel=()=>{clearTimeout(n),n=void 0;},a.doImmediately=(...l)=>new Promise(p=>{clearTimeout(n),n=setTimeout(()=>{n=void 0,Promise.resolve(e.apply(this,[...l])).then(p);},0);}),a}function ut(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]),p=Number(n[a]);if(l>p)return 1;if(p>l)return -1;if(!isNaN(l)&&isNaN(p))return 1;if(isNaN(l)&&!isNaN(p))return -1}return 0}var Z=ut(version,"3.5.0")!==-1;function ct(){return Math.floor(Math.random()*Date.now()).toString()}function ve(){return typeof window>"u"?ct():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function $e(){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 p(d){let y=t.value.get(d);if(y)return y;{let h=ref({});return t.value.set(d,h),h}}function b(d){let y=r.value.get(d);if(y)return y;{let h=ref([]);return r.value.set(d,h),h}}function D(d,y,h){l.value.set(`${d}-${y}`,h);}function C(d,y){return l.value.get(`${d}-${y}`)}function v(d,y){d&&y!=null&&l.value.delete(`${d}-${y}`);}function c(d,y){n.value.set(d,y);}function o(d){return n.value.get(d)??!1}function I(d,y){e.value.set(d,y);}function P(d,y){let h=e.value.get(d);return h?$(y,h)?{valid:!0}:{valid:!1}:void 0}function $(d,y){let h=Object.keys(y),w=Object.keys(d);return w.length!==h.length||!w.every(F=>h.includes(F))?!1:w.every(F=>{let T=d[F],O=y[F];return !O||!T||typeof T=="function"||typeof O=="function"||typeof T=="number"||typeof T=="boolean"?!1:T._params?T._params?.every((A,E)=>{if(typeof O=="number"||typeof O=="boolean")return !0;{let s=_(O._params),i=_(T._params);return s?.[E]===i?.[E]}}):!0})}function f(d){let y=a.value.get(d);if(y)return y;{let h=ref(!1),w=ref(!0),M=ref({}),F=ref(!1);return a.value.set(d,{$pending:h,$valid:w,$metadata:M,$validating:F}),{$pending:h,$valid:w,$metadata:M,$validating:F}}}return onScopeDispose(()=>{e.value.clear(),t.value.clear(),r.value.clear(),n.value.clear(),a.value.clear(),l.value.clear();}),{addRuleDeclEntry:I,setDirtyEntry:c,checkRuleDeclEntry:P,getDirtyState:o,trySetRuleStatusRef:f,getFieldsEntry:p,getCollectionsEntry:b,getArrayStatus:C,addArrayStatus:D,deleteArrayStatus:v,arrayStatusStorage:l}}function Be(e,t){return k(e.value)&&k(t.value)&&!Object.entries(t.value).some(r=>ae(r))}function Ne(e){return !!e.value&&"$each"in e.value}function Ue(e){return !!e.value&&k(e.value)}function ae(e){return k(e)&&"_validator"in e}function le(e){return typeof e.value!="function"}function Se(e){return k(e)&&"$fields"in e}function Ee(e){return "$each"in e||"$errors"in e}function be({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.$externalErrors??[])}function He({$dirty:e,customMessages:t,rule:r,ruleKey:n,state:a,path:l,storage:p,$debounce:b}){let D=effectScope(),C,v,c=ref(!1),{$pending:o,$valid:I,$metadata:P,$validating:$}=p.trySetRuleStatusRef(`${l}.${n}`);function f(){C=D.run(()=>{let T=computed(()=>({$invalid:!I.value,$params:i.value,...P.value})),O=computed(()=>le(r)?typeof r.value.active=="function"?r.value.active(a.value,T.value):r.value.active:!0),A=computed(()=>{let u="",m=t?t[n]?.message:void 0;return m&&(typeof m=="function"?u=m(a.value,T.value):u=m),le(r)&&(m&&!r.value._patched||(typeof r.value.message=="function"?u=r.value.message(a.value,T.value):u=r.value.message)),z(u)&&(u="Error",console.warn(`No error message defined for ${l}.${n}`)),u}),E=computed(()=>le(r)&&r.value.type?r.value.type:n),s=computed(()=>le(r)?r.value.validator:r.value),i=computed(()=>typeof r.value=="function"?[]:_(r.value._params??[])),R=computed(()=>`${l}.${E.value}`);return {$active:O,$message:A,$type:E,$validator:s,$params:i,$path:R}}),v=watch(C.$params,w,{deep:!0});}f();function d(){I.value=!0,e.value&&(o.value=!0);}async function y(){let T=C.$validator.value,O=T(a.value,...C.$params.value),A=!1,E=a.value;try{d();let s;if(O instanceof Promise?s=await O:s=O,a.value!==E)return !0;if(typeof s=="boolean")A=s;else {let{$valid:i,...R}=s;A=i,P.value=R;}}catch{A=!1;}finally{o.value=!1;}return A}let h=ne(y,b??200);async function w(){$.value=!0;let T=!1;if(ae(r.value)&&r.value._async)T=await h();else {let O=C.$validator.value,A=O(a.value,...C.$params.value);if(A 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(A!=null)if(typeof A=="boolean")T=A;else {let{$valid:E,...s}=A;T=E,P.value=s;}}return I.value=T,$.value=!1,T}function M(){I.value=!0,P.value={},o.value=!1,$.value=!1,f();}function F(){v(),D.stop(),D=effectScope();}return reactive({...C,$pending:o,$valid:I,$metadata:P,_haveAsync:c,$validating:$,$validate:w,$unwatch:F,$watch:f,$reset:M})}function ue({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:l,externalErrors:p,onUnwatch:b,$isArray:D,initialState:C}){let v=effectScope(),c,o=ref(!1),I=ref(!1),P=ref([]),$,f,d,y,h,w=()=>{};function M(){P.value=p.value??[];}M();function F(){let g=t.value,S=a.checkRuleDeclEntry(n,g);i.value=Object.fromEntries(Object.entries(g).filter(([V])=>V.startsWith("$"))),s.value=Object.fromEntries(Object.entries(t.value).filter(([V])=>!V.startsWith("$")).map(([V,U])=>{if(U){let Re=toRef(()=>U);return [V,He({$dirty:o,customMessages:r,rule:Re,ruleKey:V,state:e,path:n,storage:a,$debounce:i.value.$debounce})]}return []}).filter(V=>!!V.length)),A(),T(),S?.valid!=null&&(o.value=a.getDirtyState(n),o.value&&w()),a.addRuleDeclEntry(n,g);}function T(){w=c.$debounce.value?ne(E,c.$debounce.value??c.haveAnyAsyncRule?100:0):E;}function O(){s.value&&Object.entries(s.value).forEach(([g,S])=>{S.$unwatch();}),y(),o.value&&a.setDirtyEntry(n,o.value),$(),f(),d(),v.stop(),v=effectScope(),b?.(),h?.();}function A(){s.value&&Object.entries(s.value).forEach(([g,S])=>{S.$watch();}),c=v.run(()=>{let g=computed(()=>o.value),S=computed(()=>i.value.$debounce),V=computed(()=>i.value.$lazy!=null?i.value.$lazy:unref(l.lazy)),U=computed(()=>i.value.$rewardEarly!=null?i.value.$rewardEarly:unref(l.rewardEarly)),Re=computed(()=>i.value.$autoDirty!=null?i.value.$autoDirty:unref(l.autoDirty)),Ze=computed(()=>Object.entries(s.value).some(([X,W])=>W.$validating)),we=computed(()=>ie.value&&!pe.value&&o.value),Ke=computed(()=>we.value?be({field:{$dirty:o.value,$externalErrors:P.value,$rules:s.value}}):[]),et=computed(()=>be({field:{$dirty:o.value,$externalErrors:P.value,$rules:s.value},silent:!0})),tt=computed(()=>!(ie.value||pe.value)),pe=computed(()=>I.value||!U.value?Object.entries(s.value).some(([X,W])=>W.$pending):!1),ie=computed(()=>P.value?.length?!0:!U.value||U.value&&I.value?Object.entries(s.value).some(([X,W])=>!W.$valid):!1),Oe=computed(()=>o.value&&!z(e.value)&&!Ze.value?P.value?.length?!1:U.value?Object.entries(s.value).every(([X,W])=>W.$valid):!ie.value:!1),rt=computed(()=>Object.entries(s.value).some(([X,W])=>W._haveAsync));return watch(Oe,X=>{X&&(I.value=!1);}),{$error:we,$pending:pe,$invalid:ie,$valid:Oe,$debounce:S,$lazy:V,$errors:Ke,$ready:tt,$silentErrors:et,$rewardEarly:U,$autoDirty:Re,$anyDirty:g,haveAnyAsyncRule:rt}}),d=watch(p,M),$=watch(e,()=>{c.$autoDirty.value&&(o.value||(o.value=!0)),t.value instanceof Function&&F(),w(),c.$rewardEarly.value;},{deep:D?!0:Z?1:!0}),y=watch(o,()=>{a.setDirtyEntry(n,o.value);}),f=watch(c.$valid,g=>{c.$rewardEarly.value&&g&&(I.value=!1);}),h=watch(c.haveAnyAsyncRule,T);}function E(){Object.entries(s.value).forEach(([g,S])=>{S.$validate();});}let s=ref(),i=ref();F();function R(){o.value=!1,P.value=[],Object.entries(s.value).forEach(([g,S])=>{S.$reset();}),c.$lazy.value||Object.entries(s.value).map(([g,S])=>S.$validate());}function u(){o.value||(o.value=!0,c.$rewardEarly.value,w());}let m=c.$debounce.value?ne(x,c.$debounce.value??0):x;async function x(){try{if(I.value=!0,c.$autoDirty.value&&o.value&&!c.$pending.value)return !c.$error.value;{let g=Object.entries(s.value).map(([V,U])=>U.$validate());return (await Promise.allSettled(g)).every(V=>V.status==="fulfilled"?V.value:!1)}}catch{return !1}}function G(){O(),e.value=ke(e,C),R();}function q(g=!0){return o.value?e.value:null}function B(){P.value=[];}return c.$lazy.value||x(),reactive({$dirty:o,...c,$externalErrors:P,$value:e,$rules:s,$reset:R,$touch:u,$validate:m,$unwatch:O,$watch:A,$resetAll:G,$extractDirtyFields:q,$clearExternalErrors:B})}function Le({$id:e,path:t,index:r,options:n,storage:a,stateValue:l,customMessages:p,rules:b,externalErrors:D,initialState:C}){let v=b.$key?b.$key:ve(),c=`${t}.${String(v)}`;typeof l.value=="object"&&l.value!=null&&(l.value.$id?c=`${t}.${l.value.$id}`:Object.defineProperties(l.value,{$id:{value:v,enumerable:!1,configurable:!1,writable:!1}}));let o=toRef(()=>D.value?.[r]),I=fe({state:l,rulesDef:toRef(()=>b),customMessages:p,path:c,storage:a,options:n,externalErrors:o,initialState:C?.[r]});if(I){let P=l.value?.$id;I.$id=P??String(v),a.addArrayStatus(e,I.$id,I);}return I}function ze({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:l,externalErrors:p,initialState:b}){let D=effectScope(),C,v=effectScope(),c;if(Array.isArray(e.value)&&!t.value.$each)return null;let o=ref(),I=ref(e.value),P,$=ref({}),f=a.getCollectionsEntry(n);c=v.run(()=>{let i=computed(()=>Array.isArray(e.value)&&e.value.length?e.value.some(m=>typeof m!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(m=>ae(m)):!1),R=computed(()=>p.value?Ee(p.value)?p.value.$errors??[]:[]:[]),u=computed(()=>p.value?Ee(p.value)?p.value.$each??[]:[]:[]);return {isPrimitiveArray:i,$externalErrorsField:R,$externalErrorsEach:u}}),d(),h();function d(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?(o.value=ve(),Object.defineProperties(e.value,{$id:{value:o.value,enumerable:!1,configurable:!1,writable:!1}})):e.value?.$id&&(o.value=e.value.$id)),!c.isPrimitiveArray.value&&(I.value=$.value.$value,Array.isArray(e.value)&&t.value.$each?f.value=e.value.map((i,R)=>{let u=ge(t.value.$each,toRef(()=>i),R);if(u){let m=Le({$id:o.value,path:n,rules:u,stateValue:toRef(()=>i),index:R,options:l,storage:a,externalErrors:c.$externalErrorsEach,initialState:b[R]});return m||null}}).filter(i=>!!i):f.value=[],$.value=ue({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:l,externalErrors:c.$externalErrorsField,$isArray:!0,initialState:b}));}function y(){if(Array.isArray(e.value)){let i=L(f.value);f.value=e.value.map((R,u)=>{let m=toRef(()=>R);if(R.$id&&f.value.find(x=>x.$id===R.$id)){let x=a.getArrayStatus(o.value,R.$id);return x?(x.$value=m,x):null}else {let x=ge(t.value.$each,m,u);if(x){let G=Le({$id:o.value,path:n,rules:x,stateValue:m,index:u,options:l,storage:a,externalErrors:c.$externalErrorsEach,initialState:b[u]});return G||null}}}).filter(R=>!!R),i.filter(R=>!e.value.find(u=>R.$id===u.$id)).forEach((R,u)=>{a.deleteArrayStatus(o.value,u.toString());});}else f.value=[];}function h(){P=watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?d():y();},{deep:Z?1:!0,flush:"pre"}),C=D.run(()=>{let i=computed(()=>$.value.$dirty&&f.value.every(S=>S.$dirty)),R=computed(()=>$.value.$anyDirty||f.value.some(S=>S.$dirty)),u=computed(()=>$.value.$invalid||f.value.some(S=>S.$invalid)),m=computed(()=>$.value.$valid&&f.value.every(S=>S.$valid)),x=computed(()=>$.value.$error||f.value.some(S=>S.$error)),G=computed(()=>!(u.value||q.value)),q=computed(()=>$.value.$pending||f.value.some(S=>S.$pending)),B=computed(()=>({$errors:$.value.$errors,$each:f.value.map(S=>S.$errors)})),g=computed(()=>({$errors:$.value.$silentErrors,$each:f.value.map(S=>S.$silentErrors)}));return {$dirty:i,$anyDirty:R,$invalid:u,$valid:m,$error:x,$pending:q,$errors:B,$silentErrors:g,$ready:G}}),c.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`),P());}function w(){P&&P(),$.value&&$.value.$unwatch(),f.value&&f.value.forEach(i=>{"$dirty"in i&&i.$unwatch();}),D.stop(),D=effectScope(),v.stop(),v=effectScope(!0);}function M(){$.value.$touch(),f.value.forEach(i=>{i.$touch();});}function F(){$.value.$reset(),f.value.forEach(i=>{i.$reset();});}async function T(){try{return (await Promise.all([$.value.$validate(),...f.value.map(R=>R.$validate())])).every(R=>!!R)}catch{return !1}}function O(){$.value.$clearExternalErrors(),f.value.forEach(i=>{i.$clearExternalErrors();});}function A(i=!0){let R=f.value.map(u=>{if(Se(u))return u.$extractDirtyFields(i)});return i&&(R=R.filter(u=>k(u)?!z(u):!!u)),R}function E(){console.log(b),w(),Ge(e,b),F();}async function s(){return M(),await T()?e.value:!1}return reactive({$field:$,...C,$each:f,$value:e,$validate:T,$unwatch:w,$watch:h,$touch:M,$reset:F,$resetAll:E,$extractDirtyFields:A,$parse:s,$clearExternalErrors:O})}function Te({scopeRules:e,state:t,customMessages:r,path:n="",rootRules:a,storage:l,options:p,externalErrors:b,validationGroups:D,initialState:C}){let v,c,o=null;function $(E=!0){f.value=null,triggerRef(f);let s=Object.fromEntries(Object.entries(e.value).map(([u,m])=>{if(m){let x=toRef(t.value,u),G=toRef(()=>m),q=toRef(()=>b.value?.[u]);return [u,fe({state:x,rulesDef:G,customMessages:r,path:n?`${n}.${u}`:u,storage:l,options:p,externalErrors:q,initialState:C?.[u]})]}return []}).filter(u=>!!u.length&&u[1]!=null)),i=Object.fromEntries(Object.entries(unref(b)??{}).filter(([u])=>!(u in e.value)).map(([u,m])=>{if(m){let x=toRef(()=>({})),G=toRef(()=>m);return [u,fe({state:ref(void 0),rulesDef:x,customMessages:r,path:n?`${n}.${u}`:u,storage:l,options:p,externalErrors:G,initialState:C?.[u]})]}return []})),R=Object.fromEntries(Object.entries(D?.(s)??{}).map(([u,m])=>m.length?[u,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$valid"].map(x=>[x,Fe(toRef(()=>m),x)])),...Object.fromEntries(["$errors","$silentErrors"].map(x=>[x,Me(toRef(()=>m),x)]))}]:[]));f.value={...s,...i,...R},E&&w();}let f=l.getFieldsEntry(n);$();function d(){$(!1),Object.entries(f.value).forEach(([E,s])=>{s.$reset();}),w();}function y(){Object.entries(f.value).forEach(([E,s])=>{s.$touch();});}async function h(){try{return (await Promise.allSettled(Object.entries(f.value).map(([s,i])=>i.$validate()))).every(s=>s.status==="fulfilled"?s.value:!1)}catch{return !1}}function w(){a&&(o=watch(a,()=>{M(),$();},{deep:Z?1:!0,flush:"post"})),v=effectScope(),c=v.run(()=>{let E=computed(()=>!!Object.entries(f.value).length&&Object.entries(f.value).every(([B,g])=>g.$dirty)),s=computed(()=>Object.entries(f.value).some(([B,g])=>g.$dirty)),i=computed(()=>Object.entries(f.value).some(([B,g])=>g.$invalid)),R=computed(()=>Object.entries(f.value).every(([B,g])=>g.$valid)),u=computed(()=>E.value&&!x.value&&i.value),m=computed(()=>!(i.value||x.value)),x=computed(()=>Object.entries(f.value).some(([B,g])=>g.$pending)),G=computed(()=>Object.fromEntries(Object.entries(f.value).map(([B,g])=>[B,g.$errors]))),q=computed(()=>Object.fromEntries(Object.entries(f.value).map(([B,g])=>[B,g.$silentErrors])));return {$dirty:E,$anyDirty:s,$invalid:i,$valid:R,$error:u,$pending:x,$errors:G,$silentErrors:q,$ready:m}});}function M(){f.value&&Object.entries(f.value).forEach(([E,s])=>{s.$unwatch();}),o?.(),v.stop(),v=effectScope();}function F(){Object.entries(f.value).forEach(([E,s])=>{s.$clearExternalErrors();});}function T(){M(),re(t,C??{}),d();}function O(E=!0){let s=Object.entries(f.value).map(([i,R])=>[i,R.$extractDirtyFields(E)]);return E&&(s=s.filter(([i,R])=>k(R)?!z(R):Array.isArray(R)?R.length:!!R)),Object.fromEntries(s)}async function A(){return y(),await h()?t.value:!1}return reactive({...c,$fields:f,$value:t,$resetAll:T,$reset:d,$touch:y,$validate:h,$unwatch:M,$watch:w,$clearExternalErrors:F,$extractDirtyFields:O,$parse:A})}function fe({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:l,externalErrors:p,index:b,initialState:D,onUnwatch:C}){return Ne(t)?ze({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:l,index:b,externalErrors:p,initialState:D}):Be(e,t)&&_e(e)?Te({scopeRules:t,state:e,customMessages:r,path:n,storage:a,options:l,index:b,initialState:D,externalErrors:p}):Ue(t)?ue({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:l,index:b,externalErrors:p,onUnwatch:C,initialState:D}):null}function De({initialState:e,options:t,scopeRules:r,state:n,customRules:a}){let l=$e(),p=computed(()=>unref(t.externalErrors));return reactive(Te({rootRules:r,scopeRules:r,state:n,customMessages:a?.(),storage:l,options:t,externalErrors:p,validationGroups:t.validationGroups,initialState:e}))}function Ce(e,t){let r={autoDirty:t?.autoDirty??!0,lazy:t?.lazy??!1,rewardEarly:t?.rewardEarly??!1};function n(a,l,p){let b=isRef(l)?l:computed(typeof l=="function"?l:()=>l),D={...r,...p},C=isRef(a)?a:ref(a),v=L(toRaw(C.value));return {r$:De({scopeRules:b,state:C,options:D,initialState:v,customRules:e})}}return n}var Qe=Ce();function Ie(){function e(t,r){return r}return e}var Pe=Ie();function Xe({rules:e,modifiers:t}){let r=Ce(e,t),n=Ie();return {useRegle:r,inferRules:n}}export{de as InternalRuleType,me as createRule,Xe as defineRegleConfig,Pe as inferRules,_ as unwrapRuleParameters,Qe as useRegle};
|