@regle/core 1.2.1 → 1.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/regle-core.d.ts +6 -1
- package/dist/regle-core.min.mjs +2 -2
- package/dist/regle-core.mjs +9 -22
- package/package.json +1 -1
package/dist/regle-core.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ type Prettify<T> = T extends infer R ? {
|
|
|
7
7
|
type Maybe<T = any> = T | null | undefined;
|
|
8
8
|
type MaybeInput<T = any> = T | null | undefined;
|
|
9
9
|
type MaybeOutput<T = any> = T | undefined;
|
|
10
|
+
type MaybeReadonly<T> = T | Readonly<T>;
|
|
10
11
|
type PromiseReturn<T> = T extends Promise<infer U> ? U : T;
|
|
11
12
|
type MaybeGetter<T, V = any, TAdd extends Record<string, any> = {}> = T | ((value: Ref<V>, index: number) => T & TAdd);
|
|
12
13
|
type Unwrap<T extends MaybeRef<Record<string, any>>> = T extends Ref ? UnwrapRef<T> : UnwrapNestedRefs<T>;
|
|
@@ -1183,8 +1184,12 @@ interface RegleBehaviourOptions {
|
|
|
1183
1184
|
rewardEarly?: boolean | undefined;
|
|
1184
1185
|
/**
|
|
1185
1186
|
* Define whether the external errors should be cleared when updating a field
|
|
1187
|
+
*
|
|
1188
|
+
* Default to `false` if `$silent` is set to `true`
|
|
1189
|
+
|
|
1186
1190
|
* @default true
|
|
1187
1191
|
*
|
|
1192
|
+
*
|
|
1188
1193
|
*/
|
|
1189
1194
|
clearExternalErrorsOnChange?: boolean | undefined;
|
|
1190
1195
|
}
|
|
@@ -2890,4 +2895,4 @@ declare function defineRules<TRules extends RegleUnknownRulesTree>(rules: TRules
|
|
|
2890
2895
|
*/
|
|
2891
2896
|
declare function refineRules<TRules extends RegleUnknownRulesTree, TRefinement extends ReglePartialRuleTree<InferInput<TRules>> & RegleUnknownRulesTree>(rules: TRules, refinement: (state: Ref<InferInput<TRules>>) => TRefinement): (state: Ref<InferInput<TRules>>) => Merge<TRules, TRefinement>;
|
|
2892
2897
|
|
|
2893
|
-
export { type $InternalRegleStatus, type AllRulesDeclarations, type CommonAlphaOptions, type CommonComparisonOptions, type CreateScopedUseRegleOptions, type DeepMaybeRef, type DeepReactiveState, type DefaultValidatorsTree, type FormRuleDeclaration, type HaveAnyRequiredProps, type InferInput, type InferRegleRoot, type InferRegleRule, type InferRegleRules, type InferRegleShortcuts, type InferRegleStatusType, type InferSafeOutput, type InlineRuleDeclaration, InternalRuleType, type JoinDiscriminatedUnions, type LocalRegleBehaviourOptions, type Maybe, type MaybeInput, type MaybeOutput, type MaybeVariantStatus, type MergedRegles, type MergedScopedRegles, type NarrowVariant, type NoInferLegacy, type PrimitiveTypes, type Regle, type RegleBehaviourOptions, type RegleCollectionErrors, type RegleCollectionRuleDecl, type RegleCollectionRuleDefinition, type RegleCollectionStatus, type RegleCommonStatus, type RegleComputedRules, type RegleEnforceCustomRequiredRules, type RegleEnforceRequiredRules, type RegleErrorTree, type RegleExternalCollectionErrors, 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 RegleRuleMetadataExtended, type RegleRuleRaw, type RegleRuleStatus, type RegleRuleTypeReturn, type RegleRuleWithParamsDefinition, type RegleShortcutDefinition, type RegleSingleField, type RegleStatus, type RegleUniversalParams, type RegleUnknownRulesTree, type RegleValidationErrors, type RegleValidationGroupEntry, type RegleValidationGroupOutput, type RegleRuleTree as RegleValidationTree, type ResolvedRegleBehaviourOptions, type ScopedInstancesRecord, type ScopedInstancesRecordLike, type SuperCompatibleRegle, type SuperCompatibleRegleCollectionErrors, type SuperCompatibleRegleCollectionStatus, type SuperCompatibleRegleFieldStatus, type SuperCompatibleRegleResult, type SuperCompatibleRegleRoot, type SuperCompatibleRegleRuleStatus, type SuperCompatibleRegleStatus, type Unwrap, type UnwrapRegleUniversalParams, type UnwrapRuleWithParams, type UseScopedRegleOptions, createRule, createScopedUseRegle, createVariant, defineRegleConfig, defineRules, extendRegleConfig, flatErrors, inferRules, type inferRulesFn, mergeRegles, narrowVariant, refineRules, unwrapRuleParameters, useCollectScope, type useCollectScopeFn, useRegle, type useRegleFn, useRootStorage, useScopedRegle, variantToRef };
|
|
2898
|
+
export { type $InternalRegleStatus, type AllRulesDeclarations, type CommonAlphaOptions, type CommonComparisonOptions, type CreateScopedUseRegleOptions, type DeepMaybeRef, type DeepReactiveState, type DefaultValidatorsTree, type FormRuleDeclaration, type HaveAnyRequiredProps, type InferInput, type InferRegleRoot, type InferRegleRule, type InferRegleRules, type InferRegleShortcuts, type InferRegleStatusType, type InferSafeOutput, type InlineRuleDeclaration, InternalRuleType, type JoinDiscriminatedUnions, type LocalRegleBehaviourOptions, type Maybe, type MaybeInput, type MaybeOutput, type MaybeReadonly, type MaybeVariantStatus, type MergedRegles, type MergedScopedRegles, type NarrowVariant, type NoInferLegacy, type PrimitiveTypes, type Regle, type RegleBehaviourOptions, type RegleCollectionErrors, type RegleCollectionRuleDecl, type RegleCollectionRuleDefinition, type RegleCollectionStatus, type RegleCommonStatus, type RegleComputedRules, type RegleEnforceCustomRequiredRules, type RegleEnforceRequiredRules, type RegleErrorTree, type RegleExternalCollectionErrors, 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 RegleRuleMetadataExtended, type RegleRuleRaw, type RegleRuleStatus, type RegleRuleTypeReturn, type RegleRuleWithParamsDefinition, type RegleShortcutDefinition, type RegleSingleField, type RegleStatus, type RegleUniversalParams, type RegleUnknownRulesTree, type RegleValidationErrors, type RegleValidationGroupEntry, type RegleValidationGroupOutput, type RegleRuleTree as RegleValidationTree, type ResolvedRegleBehaviourOptions, type ScopedInstancesRecord, type ScopedInstancesRecordLike, type SuperCompatibleRegle, type SuperCompatibleRegleCollectionErrors, type SuperCompatibleRegleCollectionStatus, type SuperCompatibleRegleFieldStatus, type SuperCompatibleRegleResult, type SuperCompatibleRegleRoot, type SuperCompatibleRegleRuleStatus, type SuperCompatibleRegleStatus, type Unwrap, type UnwrapRegleUniversalParams, type UnwrapRuleWithParams, type UseScopedRegleOptions, createRule, createScopedUseRegle, createVariant, defineRegleConfig, defineRules, extendRegleConfig, flatErrors, inferRules, type inferRulesFn, mergeRegles, narrowVariant, refineRules, unwrapRuleParameters, useCollectScope, type useCollectScopeFn, useRegle, type useRegleFn, useRootStorage, useScopedRegle, variantToRef };
|
package/dist/regle-core.min.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {effectScope,computed,toValue,ref,watch,getCurrentInstance,onMounted,reactive,getCurrentScope,onScopeDispose,isRef,shallowRef,watchEffect,triggerRef,toRef,unref,version,nextTick,markRaw}from'vue';function Ot(e){return e?.constructor.name=="File"||e?.constructor.name=="FileList"}function re(e,t=true){return e==null?true:e instanceof Date?isNaN(e.getTime()):Ot(e)?e.size<=0:Array.isArray(e)?t?e.length===0:false:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}var wt=Symbol("regle-rule");function fr(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 W(e){let t=e,r={}.toString.call(e).slice(8,-1);if(r=="Set"&&(t=new Set([...e].map(n=>W(n)))),r=="Map"&&(t=new Map([...e].map(n=>[W(n[0]),W(n[1])]))),r=="Date"&&(t=new Date(e.getTime())),r=="RegExp"&&(t=RegExp(e.source,fr(e))),r=="Array"||r=="Object"){t=Array.isArray(e)?[]:{};for(let n in e)t[n]=W(e[n]);}return t}function A(e){return e&&(e instanceof Date||e.constructor.name=="File"||e.constructor.name=="FileList")?false:typeof e=="object"&&e!==null&&!Array.isArray(e)}function je(e,...t){for(var r=[].slice.call(arguments),n,a=r.length;n=r[a-1],a--;)if(!n||typeof n!="object"&&typeof n!="function")throw new Error("expected object, got "+n);for(var l=r[0],u=r.slice(1),c=u.length,a=0;a<c;a++){var g=u[a];for(var p in g)l[p]=g[p];}return l}function tt(e){let t=Object.prototype.toString.call(e);return e==null?new Date(NaN):e instanceof Date||typeof e=="object"&&t==="[object Date]"?new Date(e.getTime()):typeof e=="number"||t==="[object Number]"?new Date(e):typeof e=="string"||t==="[object String]"?new Date(e):new Date(NaN)}function We(e,t,r){let n,a=(...l)=>new Promise(u=>{clearTimeout(n),n=setTimeout(()=>{n=void 0,Promise.resolve(e.apply(this,[...l])).then(u);},t);});return a.cancel=()=>{clearTimeout(n),n=void 0;},a}function Be(e,t,r=false,n=true){if(e===t)return true;if(e&&t&&typeof e=="object"&&typeof t=="object"){if(e.constructor!==t.constructor)return false;var a,l,u;if(Array.isArray(e)&&Array.isArray(t)){if(a=e.length,a!=t.length)return false;if(n||!n&&r){for(l=a;l--!==0;)if(!Be(e[l],t[l],r,false))return false}return true}if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===t.toString();if(u=Object.keys(e),a=u.length,a!==Object.keys(t).length)return false;for(l=a;l--!==0;)if(!Object.prototype.hasOwnProperty.call(t,u[l]))return false;for(l=a;l--!==0;){var c=u[l];return !(A(e)&&A(t)&&(n||!n&&r)&&!Be(e[c],t[c],r,false))}return true}return e!==e&&t!==t}var rt={Inline:"__inline",Async:"__async"};function Pt(e,t){return e.some(r=>r[t])}function At(e,t){return e.reduce((r,n)=>{let a=n[t]||[];return r.concat(a)},[])}function ne(e){try{return e.map(t=>toValue(t))}catch{return []}}function Mt(e){return e.map(t=>t instanceof Function?computed(t):isRef(t)?t:toRef(()=>t))}function jt(e){let n=e.toString().replace(/\/\/.*$/gm,"").replace(/\/\*[\s\S]*?\*\//g,"").match(/^(?:async\s*)?(?:function\b.*?\(|\((.*?)\)|(\w+))\s*=>|\((.*?)\)\s*=>|function.*?\((.*?)\)|\((.*?)\)/);return n?(n[0]||n[1]||n[2]||n[3]||n[4]||"").split(",").map(u=>u.trim()).filter(u=>u.length>0).length:0}function nt(e,...t){let{validator:r,type:n}=e,a=n===rt.Async||r.constructor.name==="AsyncFunction";return markRaw({...{validator(c,...g){return e.validator(c,...ne(g.length?g:t))},message(c){return typeof e.message=="function"?e.message({...c,$params:ne(c?.$params?.length?c.$params:t)}):e.message},active(c){return typeof e.active=="function"?e.active({...c,$params:ne(c?.$params?.length?c.$params:t)}):e.active??true},tooltip(c){return typeof e.tooltip=="function"?e.tooltip({...c,$params:ne(c?.$params?.length?c.$params:t)}):e.tooltip??[]},exec(c){let g=e.validator(c,...ne(t)),p;return g instanceof Promise?g.then(d=>(p=d,typeof p=="object"&&"$valid"in p?p.$valid:typeof p=="boolean"?p:false)):(p=g,typeof p=="object"&&"$valid"in p?p.$valid:typeof p=="boolean"?p:false)}},_validator:e.validator,_message:e.message,_active:e.active,_tooltip:e.tooltip,_type:e.type,_message_patched:false,_tooltip_patched:false,_async:a,_params:Mt(t),_brand:wt})}function at(e){if(typeof e.validator=="function"){let r=nt(e,...[]),n=e.async??e.validator.constructor.name==="AsyncFunction";if(jt(e.validator)>1){let a=function(...l){return nt(e,...l)};return a.validator=r.validator,a.message=r.message,a.active=r.active,a.tooltip=r.tooltip,a.type=r.type,a.exec=r.exec,a._validator=r.validator,a._message=r.message,a._active=r.active,a._tooltip=r.tooltip,a._type=e.type,a._message_pacthed=false,a._tooltip_pacthed=false,a._async=n,a}else return r}throw new Error("[createRule] validator must be a function")}function lt(){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 u(y){let b=t.value.get(y);if(b)return b;{let x=ref({});return t.value.set(y,x),x}}function c(y){let b=r.value.get(y);if(b)return b;{let x=ref([]);return r.value.set(y,x),x}}function g(y,b,x){l.value.set(`${y}-${b}`,x);}function p(y,b){return l.value.get(`${y}-${b}`)}function d(y,b){y&&b!=null&&l.value.delete(`${y}-${b}`);}function L(y,b){n.value.set(y,b);}function h(y){return n.value.get(y)??false}function P(y,b){e.value.set(y,b);}function C(y,b){let x=e.value.get(y);return x?w(b,x)?{valid:true}:{valid:false}:void 0}function w(y,b){let x=Object.keys(b),T=Object.keys(y);return T.length!==x.length||!T.every(i=>x.includes(i))?false:T.every(i=>{let s=y[i],v=b[i];return !v||!s||typeof s=="function"||typeof v=="function"||typeof s=="number"||typeof s=="boolean"?false:s._params?s._params?.every((H,z)=>{if(typeof v=="number"||typeof v=="boolean")return true;{let J=ne(v._params),K=ne(s._params);return J?.[z]===K?.[z]}}):true})}function o(y){let b=a.value.get(y);if(b)return b;{let x=ref(false),T=ref(true),Q=ref({}),i=ref(false);return a.value.set(y,{$pending:x,$valid:T,$metadata:Q,$validating:i}),{$pending:x,$valid:T,$metadata:Q,$validating:i}}}return getCurrentScope()&&onScopeDispose(()=>{e.value.clear(),t.value.clear(),r.value.clear(),n.value.clear(),a.value.clear(),l.value.clear();}),{addRuleDeclEntry:P,setDirtyEntry:L,checkRuleDeclEntry:C,getDirtyState:h,trySetRuleStatusRef:o,getFieldsEntry:u,getCollectionsEntry:c,getArrayStatus:p,addArrayStatus:g,deleteArrayStatus:d,arrayStatusStorage:l}}function Le(e){return A(e.value)}function ot(e,t,r){let n=effectScope(),a;return e instanceof Function?a=n.run(()=>e(t,r??0)):a=e,{scope:n,unwrapped:a}}var Fe={LessThan:-1,EqualTo:0,GreaterThan:1};function Tr(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]),u=Number(n[a]);if(l>u)return Fe.GreaterThan;if(u>l)return Fe.LessThan;if(!isNaN(l)&&isNaN(u))return Fe.GreaterThan;if(isNaN(l)&&!isNaN(u))return Fe.LessThan}return Fe.EqualTo}var He=Tr(version,"3.5.0")!==-1;function hr(){return Math.floor(Math.random()*Date.now()).toString()}function xe(){return typeof window>"u"?hr():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function Ft(e){return getCurrentScope()?(onScopeDispose(e),true):false}function Vt(e){let t=false,r,n=effectScope(true);return (...a)=>(t||(r=n.run(()=>e(...a)),t=true),r)}function ze(e,t){return Le(e)||A(t.value)&&!re(t.value)&&!Object.entries(t.value).some(([r,n])=>ve(n)||typeof n=="function")}function _t(e,t,r=false){return !!e.value&&A(e.value)&&"$each"in e.value||r&&Array.isArray(t.value)&&t.value.some(A)||Array.isArray(t.value)&&t.value.some(A)}function Ke(e){return !!e.value&&A(e.value)}function ve(e){return A(e)&&"_validator"in e}function Ve(e){return typeof e.value=="function"?"_validator"in e.value:true}function Ut(e){return A(e)&&"$fields"in e}function st(e){return !!e&&"$rules"in e}function it({field:e,silent:t=false}){return Object.entries(e.$rules??{}).map(([r,n])=>t&&!n.$valid||!n.$valid&&e.$error&&!n.$validating?n.$message:null).filter(r=>!!r).reduce((r,n)=>typeof n=="string"?r?.concat([n]):r?.concat(n),[]).concat(e.$error?e.$externalErrors??[]:[]).concat(e.$error?e.$schemaErrors??[]:[])}function Nt({field:e}){return Object.entries(e.$rules??{}).map(([t,r])=>r.$tooltip).filter(t=>!!t).reduce((t,r)=>typeof r=="string"?t?.concat([r]):t?.concat(r),[])}function kt(e){return A(e)&&"$each"in e}function ut(e,t){let{includePath:r=false}=t??{};if(Array.isArray(e)&&e.every(n=>!A(n)))return e;if(kt(e)){let n=r?e.$self?.map(l=>({error:l,path:""}))??[]:e.$self??[],a=e.$each?.map(l=>qe(l,r))??[];return n?.concat(a.flat())}else return Object.entries(e).map(([n,a])=>qe(a,r,[n])).flat()}function qe(e,t=false,r){let n=t&&!r?[]:r;if(Array.isArray(e)&&e.every(a=>!A(a)))return t?e.map(a=>({error:a,path:n?.join(".")??""})):e;if(kt(e)){let a=n?.length?e.$self?.map(u=>({error:u,path:n.join(".")}))??[]:e.$self??[],l=e.$each?.map((u,c)=>qe(u,t,n?.concat(c.toString())))??[];return a?.concat(l.flat())}else return Object.entries(e).map(([a,l])=>qe(l,t,n?.concat(a))).flat()}function Gt({customMessages:e,rule:t,ruleKey:r,state:n,path:a,storage:l,$debounce:u,modifiers:c}){let g=effectScope(),p={},d,L=ref(false),h=ref(false),{$pending:P,$valid:C,$metadata:w,$validating:o}=l.trySetRuleStatusRef(`${a}.${r}`);function y(){g=effectScope(),p=g.run(()=>{let v=ref(false),H=ref(false),z=ref(true),J=ref(false),K=ref(false),oe=computed(()=>({$value:n.value,$error:H.value,$dirty:v.value,$pending:J.value,$correct:K.value,$invalid:z.value,$rule:{$valid:C.value,$invalid:!C.value,$pending:P.value},$params:f.value,...w.value})),E=computed(()=>Ve(t)?typeof t.value.active=="function"?t.value.active(oe.value):!!t.value.active:true);function G(S){let M="",R=e?e[r]?.[S]:void 0;if(R&&(typeof R=="function"?M=R(oe.value):M=R),Ve(t)){let k=`_${S}_patched`;R&&!t.value[k]||(typeof t.value[S]=="function"?M=t.value[S](oe.value):M=t.value[S]??"");}return M}let ge=computed(()=>{let S=G("message");return re(S)&&(S="This field is not valid"),S}),Re=computed(()=>G("tooltip")),D=computed(()=>Ve(t)&&t.value.type?t.value.type:r),_=computed(()=>Ve(t)?t.value.validator:t.value),f=computed(()=>typeof t.value=="function"?[]:ne(t.value._params??[])),m=computed(()=>`${a}.${D.value}`);return {$active:E,$message:ge,$type:D,$validator:_,$params:f,$path:m,$tooltip:Re,$fieldCorrect:K,$fieldError:H,$fieldDirty:v,$fieldPending:J,$fieldInvalid:z}}),d=watch(p?.$params,()=>{(!c.$silent.value||c.$rewardEarly.value&&p.$fieldError.value)&&Q();});}y();function b(){C.value=true,p.$fieldDirty.value&&(P.value=true);}async function x(){let v=false;try{let H=p.$validator.value;if(typeof H!="function")return console.error(`${a}: Incorrect rule format, it needs to be either a function or created with "createRule".`),!1;let z=H(n.value,...p.$params.value),J=n.value;b();let K;if(z instanceof Promise?K=await z:K=z,n.value!==J)return !0;if(typeof K=="boolean")v=K;else {let{$valid:oe,...E}=K;v=oe,w.value=E;}}catch{v=false;}finally{P.value=false;}return v}let T=We(x,u??200);async function Q(){try{o.value=!0;let v=!1;if(h.value=!0,ve(t.value)&&t.value._async)v=await T();else {let H=p.$validator.value,z=H(n.value,...p.$params.value);if(z 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(z!=null)if(typeof z=="boolean")v=z;else {let{$valid:J,...K}=z;v=J,w.value=K;}}return C.value=v,v}catch{return false}finally{o.value=false,h.value=false;}}function i(){C.value=true,w.value={},P.value=false,o.value=false,y();}function s(){d(),g.stop(),g=effectScope();}return reactive({...p,$pending:P,$valid:C,$metadata:w,$haveAsync:L,$maybePending:h,$validating:o,$parse:Q,$unwatch:s,$watch:y,$reset:i})}function Ce({state:e,rulesDef:t,customMessages:r,path:n,fieldName:a,storage:l,options:u,externalErrors:c,schemaErrors:g,schemaMode:p,onUnwatch:d,$isArray:L,initialState:h,shortcuts:P,onValidate:C}){let w=effectScope(),o,y=[],b,x,T,Q,i,s=()=>{};function v(){let $=t.value,U=l.checkRuleDeclEntry(n,$);G.value=Object.fromEntries(Object.entries($).filter(([j])=>j.startsWith("$"))),J(),E.value=Object.fromEntries(Object.entries(t.value).filter(([j])=>!j.startsWith("$")).map(([j,te])=>{if(te){let ie=toRef(()=>te);return [j,Gt({modifiers:{$silent:o.$silent,$rewardEarly:o.$rewardEarly},customMessages:r,rule:ie,ruleKey:j,state:e,path:n,storage:l,$debounce:G.value.$debounce})]}return []}).filter(j=>!!j.length)),o.processShortcuts(),H(),U?.valid!=null&&(o.$dirty.value=l.getDirtyState(n),(o.$dirty.value&&!o.$silent.value||o.$rewardEarly.value&&o.$error.value)&&s()),l.addRuleDeclEntry(n,$);}function H(){s=o.$debounce.value?We(oe,o.$debounce.value??o.$haveAnyAsyncRule?100:0):oe;}function z(){E.value&&Object.entries(E.value).forEach(([$,U])=>{U.$unwatch();}),T(),i?.(),o.$dirty.value&&l.setDirtyEntry(n,o.$dirty.value),b?.(),x?.(),w.stop(),w=effectScope(),y.forEach($=>$.stop()),y=[],d?.(),Q?.();}function J(){E.value&&Object.entries(E.value).forEach(([$,U])=>{U.$watch();}),o=w.run(()=>{let $=ref(false),U=ref(false),j=computed(()=>$.value),te=computed(()=>G.value.$debounce),ie=computed(()=>G.value.$deepCompare!=null?G.value.$deepCompare:false),Ae=computed(()=>G.value.$lazy!=null?G.value.$lazy:unref(u.lazy)!=null?unref(u.lazy):false),ue=computed(()=>G.value.$rewardEarly!=null?G.value.$rewardEarly:unref(u.rewardEarly)!=null?unref(u.rewardEarly):false),I=computed(()=>G.value.$clearExternalErrorsOnChange!=null?G.value.$clearExternalErrorsOnChange:unref(u.clearExternalErrorsOnChange)!=null?unref(u.clearExternalErrorsOnChange):true),F=computed(()=>ue.value?true:G.value.$silent!=null?G.value.$silent:unref(u.silent)!=null?unref(u.silent):false),O=computed(()=>G.value.$autoDirty!=null?G.value.$autoDirty:unref(u.autoDirty)!=null?unref(u.autoDirty):true),V=computed(()=>Object.entries(E.value).some(([ce,ee])=>ee.$validating)),Me=computed({get:()=>e.value,set(ce){b(),e.value=ce,K();}}),ke=computed(()=>Te.value&&!Se.value&&$.value),$t=computed(()=>it({field:{$rules:E.value,$error:ke.value,$externalErrors:c?.value,$schemaErrors:g?.value}})),St=computed(()=>it({field:{$rules:E.value,$error:ke.value,$externalErrors:c?.value,$schemaErrors:g?.value},silent:true})),et=computed(()=>$.value?h.value instanceof Date&&e.value instanceof Date?tt(h.value).getDate()!==tt(e.value).getDate():h.value==null?!!e.value:Array.isArray(e.value)&&Array.isArray(h.value)?!Be(e.value,h.value,G.value.$deepCompare):h.value!==e.value:false),Tt=computed(()=>et.value),ht=computed(()=>Nt({field:{$rules:E.value}})),bt=computed(()=>(F.value||j.value)&&!(Te.value||Se.value)),Se=computed(()=>U.value||!ue.value?Object.entries(E.value).some(([ce,ee])=>ee.$pending):false),Te=computed(()=>c?.value?.length||g?.value?.length?true:Ge.value?false:!ue.value||ue.value&&U.value?Object.entries(E.value).some(([ce,ee])=>!(ee.$valid&&!ee.$maybePending)):false),xt=computed(()=>a),Ge=computed(()=>!!(re(E.value)&&!p)),Et=computed(()=>c?.value?.length||Ge.value?false:$.value&&!re(e.value)&&!V.value&&!Se.value?p?!g?.value?.length:Object.values(E.value).some(ee=>ee.$active)?Object.values(E.value).filter(ee=>ee.$active).every(ee=>ee.$valid):false:false),ur=computed(()=>Object.entries(E.value).some(([ce,ee])=>ee.$haveAsync));function cr(){P?.fields&&Object.entries(P.fields).forEach(([ce,ee])=>{let Dt=effectScope();Ct[ce]=Dt.run(()=>{let It=ref();return watchEffect(()=>{It.value=ee(reactive({$dirty:$,$externalErrors:c?.value??[],$value:e,$silentValue:Me,$rules:E,$error:ke,$pending:Se,$invalid:Te,$correct:Et,$errors:$t,$ready:bt,$silentErrors:St,$anyDirty:j,$tooltips:ht,$name:xt,$inactive:Ge,$edited:et,$anyEdited:Tt}));}),It}),y.push(Dt);});}let Ct={};return watch(Te,ce=>{ce||(U.value=false);}),{$error:ke,$pending:Se,$invalid:Te,$correct:Et,$debounce:te,$deepCompare:ie,$lazy:Ae,$errors:$t,$ready:bt,$silentErrors:St,$rewardEarly:ue,$autoDirty:O,$silent:F,$clearExternalErrorsOnChange:I,$anyDirty:j,$edited:et,$anyEdited:Tt,$name:xt,$haveAnyAsyncRule:ur,$shortcuts:Ct,$validating:V,$tooltips:ht,$dirty:$,triggerPunishment:U,processShortcuts:cr,$silentValue:Me,$inactive:Ge}}),K(),T=watch(o.$dirty,$=>{l.setDirtyEntry(n,$),Object.values(E.value).forEach(U=>{U.$fieldDirty=$;});}),i=watch([o.$error,o.$correct,o.$invalid,o.$pending],()=>{Object.values(E.value).forEach($=>{$.$fieldError=o.$error.value,$.$fieldInvalid=o.$invalid.value,$.$fieldPending=o.$pending.value,$.$fieldCorrect=o.$correct.value;});}),x=watch(o.$invalid,$=>{o.$rewardEarly.value&&!$&&(o.triggerPunishment.value=false);}),Q=watch(o.$haveAnyAsyncRule,H);}function K(){b=watch(e,()=>{o.$autoDirty.value&&!o.$silent.value&&(o.$dirty.value||(o.$dirty.value=true)),t.value instanceof Function&&v(),(!o.$silent.value||o.$rewardEarly.value&&o.$error.value)&&s(),o.$rewardEarly.value!==true&&o.$clearExternalErrorsOnChange.value&&f();},{deep:L?true:He?1:true});}function oe(){Object.values(E.value).forEach($=>{$.$parse();});}let E=ref({}),G=ref({});v();function ge($,U){if(f(),o.$dirty.value=false,o.triggerPunishment.value=false,l.setDirtyEntry(n,false),!U)if($?.toInitialState)e.value=W(h.value);else if($?.toState){let j;typeof $?.toState=="function"?j=$?.toState():j=$?.toState,h.value=W(j),e.value=W(j);}else h.value=A(e.value)?W(e.value):Array.isArray(e.value)?[...e.value]:e.value;$?.clearExternalErrors&&f(),U||Object.entries(E.value).forEach(([j,te])=>{te.$reset();}),!o.$lazy.value&&!o.$silent.value&&!U&&Object.values(E.value).forEach(j=>j.$parse());}function Re($=true,U=false){o.$dirty.value||(o.$dirty.value=true),U&&$?(!o.$silent.value||o.$rewardEarly.value&&o.$error.value)&&s():$&&s();}async function D(){try{if(p)return C?(Re(!1),C()):{valid:!1,data:e.value};let $=e.value;if(o.triggerPunishment.value=!0,!o.$dirty.value)o.$dirty.value=!0;else if(!o.$silent.value&&o.$dirty.value&&!o.$pending.value)return {valid:!o.$error.value,data:$};return p?{valid:!g?.value?.length,data:$}:re(E.value)?{valid:!0,data:$}:{valid:(await Promise.allSettled(Object.entries(E.value).map(([te,ie])=>ie.$parse()))).every(te=>te.status==="fulfilled"?te.value===!0:!1),data:$}}catch{return {valid:false,data:e.value}}}function _($=true){return o.$dirty.value?e.value:$?{_null:true}:null}function f(){c?.value?.length&&(c.value=[]);}!o.$lazy.value&&!o.$dirty.value&&!o.$silent.value&&s();let{$shortcuts:m,$validating:S,$autoDirty:M,$rewardEarly:R,$clearExternalErrorsOnChange:k,$haveAnyAsyncRule:X,$debounce:Y,$lazy:Z,triggerPunishment:pe,...se}=o;return reactive({...se,$externalErrors:c,$value:e,$rules:E,...m,$reset:ge,$touch:Re,$validate:D,$unwatch:z,$watch:J,$extractDirtyFields:_,$clearExternalErrors:f})}function Rt({$id:e,path:t,index:r,options:n,storage:a,stateValue:l,customMessages:u,rules:c,externalErrors:g,schemaErrors:p,initialState:d,shortcuts:L,fieldName:h,schemaMode:P}){let C=c.$key?c.$key:xe(),w=`${t}.${String(C)}`;typeof l.value=="object"&&l.value!=null&&(l.value.$id?w=`${t}.${l.value.$id}`:Object.defineProperties(l.value,{$id:{value:C,enumerable:false,configurable:false,writable:false}}));let o=toRef(g?.value??[],r),y=computed(()=>p?.value?.[r]),b=De({state:l,rulesDef:toRef(()=>c),customMessages:u,path:w,storage:a,options:n,externalErrors:o,schemaErrors:y,initialState:d,shortcuts:L,fieldName:h,schemaMode:P});if(b){let x=l.value?.$id;b.$id=x??String(C),a.addArrayStatus(e,b.$id,b);}return b}function zt({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:l,externalErrors:u,schemaErrors:c,schemaMode:g,initialState:p,shortcuts:d,fieldName:L}){let h=effectScope(),P,C=effectScope(),w,o=[];if(!Array.isArray(e.value)&&!t.value.$each)return;let y=ref(),b=ref(e.value),x=ref({}),T,Q,i=ref({}),s=a.getCollectionsEntry(n);w=C.run(()=>({isPrimitiveArray:computed(()=>e.value?.length?Array.isArray(e.value)&&e.value.length?e.value.every(m=>typeof m!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(m=>ve(m)||typeof m=="function"):false:false)})),v(),J();function v(){x.value=Object.fromEntries(Object.entries(t.value).filter(([f])=>f.startsWith("$"))),typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?(y.value=xe(),Object.defineProperties(e.value,{$id:{value:y.value,enumerable:false,configurable:false,writable:false}})):e.value?.$id&&(y.value=e.value.$id)),b.value=i.value.$value,Array.isArray(e.value)&&!w.isPrimitiveArray.value?s.value=e.value.filter(f=>typeof f=="object").map((f,m)=>{let{scope:S,unwrapped:M}=ot(t.value.$each,toRef(()=>f),m);S&&o.push(S);let R=toRef(p.value??[],m),k=toRef(u?.value??{},"$each"),X=computed(()=>c?.value?.$each),Y=Rt({$id:y.value,path:n,customMessages:r,rules:M??{},stateValue:toRef(()=>f),index:m,options:l,storage:a,externalErrors:k,schemaErrors:X,initialState:R,shortcuts:d,fieldName:L,schemaMode:g});return Y||null}).filter(f=>!!f):s.value=[],i.value=Ce({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:l,externalErrors:toRef(u?.value??{},"$self"),schemaErrors:computed(()=>c?.value?.$self),$isArray:true,initialState:p,shortcuts:d,fieldName:L,schemaMode:g});}function H(){if(Array.isArray(e.value)&&!w.isPrimitiveArray.value){let f=W(s.value);s.value=e.value.filter(m=>typeof m=="object").map((m,S)=>{let M=toRef(()=>m);if(m.$id&&s.value.find(R=>R.$id===m.$id)){let R=a.getArrayStatus(y.value,m.$id);return R?(R.$value=M,R):null}else {let{scope:R,unwrapped:k}=ot(t.value.$each,M,S);R&&o.push(R);let X=toRef(u?.value??{},"$each"),Y=computed(()=>c?.value?.$each??[]),Z=Rt({$id:y.value,path:n,customMessages:r,rules:k??{},stateValue:M,index:S,options:l,storage:a,externalErrors:X,schemaErrors:Y,initialState:toRef(p.value??[],S),shortcuts:d,fieldName:L,schemaMode:g});return Z||null}}).filter(m=>!!m),f.filter(m=>!e.value?.find(S=>m.$id===S.$id)).forEach((m,S)=>{a.deleteArrayStatus(y.value,S.toString());});}else s.value=[];}function z(){T=watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?v():H();},{deep:He?1:true,flush:"pre"}),Q=watch(e,()=>{P.$autoDirty.value&&!P.$silent.value&&oe(false,true);},{flush:"pre"});}function J(){z(),h=effectScope(),P=h.run(()=>{let f=computed({get:()=>e.value,set(I){T?.(),Q?.(),e.value=I,z();}}),m=computed(()=>i.value.$dirty&&(!s.value.length||s.value.every(I=>I.$dirty))),S=computed(()=>i.value.$anyDirty||s.value.some(I=>I.$anyDirty)),M=computed(()=>i.value.$invalid||s.value.some(I=>I.$invalid)),R=computed(()=>(re(i.value.$rules)?true:i.value.$correct)&&(!s.value.length||s.value.every(I=>I.$correct||I.$anyDirty&&!I.$invalid))),k=computed(()=>i.value.$error||s.value.some(I=>I.$error)),X=computed(()=>!(M.value||Y.value)),Y=computed(()=>i.value.$pending||s.value.some(I=>I.$pending)),Z=computed(()=>!!s.value.length&&s.value.every(I=>I.$edited)),pe=computed(()=>i.value.$anyEdited||s.value.some(I=>I.$anyEdited)),se=computed(()=>({$self:i.value.$errors,$each:s.value.map(I=>I.$errors)})),$=computed(()=>({$self:i.value.$silentErrors,$each:s.value.map(I=>I.$silentErrors)})),U=computed(()=>x.value.$rewardEarly!=null?x.value.$rewardEarly:unref(l.rewardEarly)!=null?unref(l.rewardEarly):false),j=computed(()=>U.value?true:x.value.$silent!=null?x.value.$silent:unref(l.silent)!=null?unref(l.silent):false),te=computed(()=>x.value.$autoDirty!=null?x.value.$autoDirty:unref(l.autoDirty)!=null?unref(l.autoDirty):true),ie=computed(()=>L);function Ae(){d?.collections&&Object.entries(d?.collections).forEach(([I,F])=>{let O=effectScope();ue[I]=O.run(()=>{let V=ref();return watchEffect(()=>{V.value=F(reactive({$dirty:m,$error:k,$silentValue:f,$pending:Y,$invalid:M,$correct:R,$errors:se,$ready:X,$silentErrors:$,$anyDirty:S,$name:ie,$each:s,$self:i,$value:e,$edited:Z,$anyEdited:pe}));}),V}),o.push(O);});}let ue={};return Ae(),{$dirty:m,$anyDirty:S,$invalid:M,$correct:R,$error:k,$pending:Y,$errors:se,$silentErrors:$,$ready:X,$name:ie,$shortcuts:ue,$silentValue:f,$edited:Z,$anyEdited:pe,$rewardEarly:U,$silent:j,$autoDirty:te}}),w.isPrimitiveArray.value&&t.value.$each&&console.warn(`${n} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`);}function K(){T?.(),i.value&&i.value.$unwatch(),s.value&&s.value.forEach(f=>{"$dirty"in f&&f.$unwatch();}),h.stop(),h=effectScope(),C.stop(),C=effectScope(true),o.forEach(f=>f.stop()),o=[];}function oe(f=true,m=false){i.value.$touch(f,m),s.value.forEach(S=>{S.$touch(f,m);});}function E(f,m){if(K(),!m)if(f?.toInitialState)e.value=W(p.value);else if(f?.toState){let S;typeof f?.toState=="function"?S=f?.toState():S=f?.toState,p.value=W(S),e.value=W(S);}else p.value=W(e.value);f?.clearExternalErrors&&ge(),i.value.$reset(f,m),s.value.forEach(S=>{S.$reset(f,true);}),m||v();}async function G(){let f=e.value;try{return {valid:(await Promise.allSettled([i.value.$validate(),...s.value.map(M=>M.$validate())])).every(M=>M.status==="fulfilled"?M.value.valid===!0:!1),data:f}}catch{return {valid:false,data:f}}}function ge(){i.value.$clearExternalErrors(),s.value.forEach(f=>{f.$clearExternalErrors();});}function Re(f=true){let m=s.value.map(S=>{if(Ut(S))return S.$extractDirtyFields(f)});return f&&m.every(S=>re(S))&&(m=[]),m}let{$shortcuts:D,..._}=P;return reactive({$self:i,..._,...D,$each:s,$value:e,$validate:G,$unwatch:K,$watch:J,$touch:oe,$reset:E,$extractDirtyFields:Re,$clearExternalErrors:ge})}function Je({rulesDef:e,state:t,path:r="",rootRules:n,externalErrors:a,schemaErrors:l,rootSchemaErrors:u,validationGroups:c,initialState:g,fieldName:p,...d}){let L=effectScope(),h,P=[],C=null,w=null,o=null,y=null;async function x(D=true){let _=Object.entries(e.value),f=Object.fromEntries(_.filter(([R,k])=>!!k).map(([R,k])=>{if(k){let X=toRef(t.value??{},R),Y=toRef(()=>k),Z=toRef(a?.value??{},R),pe=computed(()=>l?.value?.[R]),se=toRef(g?.value??{},R);return [R,De({state:X,rulesDef:Y,path:r?`${r}.${R}`:R,externalErrors:Z,schemaErrors:pe,initialState:se,fieldName:R,...d})]}return []})),m=Object.fromEntries(Object.entries(unref(a)??{}).filter(([R,k])=>!(R in e.value)&&!!k).map(([R])=>{let k=toRef(t.value??{},R),X=toRef(a?.value??{},R),Y=computed(()=>l?.value?.[R]),Z=toRef(g?.value??{},R);return [R,De({state:k,rulesDef:computed(()=>({})),path:r?`${r}.${R}`:R,externalErrors:X,schemaErrors:Y,initialState:Z,fieldName:R,...d})]})),S=Object.fromEntries(Object.entries(unref(l)??{}).map(([R])=>{let k=toRef(t.value??{},R),X=toRef(a?.value??{},R),Y=computed(()=>l?.value?.[R]),Z=toRef(g?.value??{},R);return [R,De({state:k,rulesDef:computed(()=>({})),path:r?`${r}.${R}`:R,externalErrors:X,schemaErrors:Y,initialState:Z,fieldName:R,...d})]})),M=Object.fromEntries(Object.entries(t.value??{}).filter(([R])=>!(R in e.value)&&!(R in(m??{}))&&!(R in(S??{}))).map(([R])=>{let k=toRef(t.value??{},R),X=toRef(a?.value??{},R),Y=computed(()=>l?.value?.[R]),Z=toRef(g?.value??{},R);return [R,De({state:k,rulesDef:computed(()=>({})),path:r?`${r}.${R}`:R,externalErrors:X,schemaErrors:Y,initialState:Z,fieldName:R,...d})]}));T.value={...f,...m,...S,...M},D&&s();}let T=d.storage.getFieldsEntry(r);x();function Q(){a&&(o=watch(a,()=>{v(),x();},{deep:true}));}function i(){y=watch(t,()=>{v(),x(),h.$autoDirty.value&&!h.$silent.value&&J(false,true);});}function s(){n&&(C?.(),C=watch(n,()=>{v(),x();},{deep:true,flush:"pre"}),Q()),u&&(w?.(),w=watch(u,()=>{v(),x();},{deep:true,flush:"post"})),i(),h=L.run(()=>{let D=computed({get:()=>t.value,set(F){v(),t.value=F,x(),h.$autoDirty.value&&!h.$silent.value&&J(false,true);}}),_=computed({get:()=>t.value,set(F){v(),t.value=F,x();}}),f=computed(()=>!!Object.entries(T.value).length&&Object.entries(T.value).every(([F,O])=>O?.$dirty)),m=computed(()=>Object.entries(T.value).some(([F,O])=>O?.$anyDirty)),S=computed(()=>!!Object.entries(T.value).length&&Object.entries(T.value).some(([F,O])=>O?.$invalid)),M=computed(()=>{let F=Object.entries(T.value).filter(([O,V])=>st(V)?!V.$inactive:true);return F.length?F.every(([O,V])=>d.schemaMode?V.$correct:st(V)?"required"in V.$rules&&V.$rules.required.$active?V?.$correct:!V.$invalid&&!V.$pending:V?.$correct):false}),R=computed(()=>!!Object.entries(T.value).length&&Object.entries(T.value).some(([F,O])=>O?.$error)),k=computed(()=>unref(d.options.rewardEarly)!=null?unref(d.options.rewardEarly):false),X=computed(()=>unref(d.options.silent)!=null?unref(d.options.silent):!!k.value),Y=computed(()=>unref(d.options.autoDirty)!=null?unref(d.options.autoDirty):true),Z=computed(()=>(X.value||m.value)&&!(S.value||se.value)),pe=ref(false),se=computed(()=>pe.value||Object.entries(T.value).some(([F,O])=>O?.$pending)),$=computed(()=>Object.fromEntries(Object.entries(T.value).map(([F,O])=>[F,O?.$errors]))),U=computed(()=>Object.fromEntries(Object.entries(T.value).map(([F,O])=>[F,O?.$silentErrors]))),j=computed(()=>!!Object.entries(T.value).length&&Object.entries(T.value).every(([F,O])=>O?.$edited)),te=computed(()=>Object.entries(T.value).some(([F,O])=>O?.$anyEdited)),ie=computed(()=>p);function Ae(){d.shortcuts?.nested&&Object.entries(d.shortcuts.nested).forEach(([F,O])=>{let V=effectScope();I[F]=V.run(()=>{let Me=ref();return watchEffect(()=>{Me.value=O(reactive({$dirty:f,$value:t,$silentValue:_,$error:R,$pending:se,$invalid:S,$correct:M,$ready:Z,$anyDirty:m,$name:ie,$silentErrors:U,$errors:$,$fields:T,$edited:j,$anyEdited:te}));}),Me}),P.push(V);});}let ue=computed({get:()=>c?Object.fromEntries(Object.entries(c?.(T.value)??{}).map(([F,O])=>O.length?[F,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$correct"].map(V=>[V,Pt(O,V)])),...Object.fromEntries(["$errors","$silentErrors"].map(V=>[V,At(O,V)]))}]:[])):{},set(){}}),I={};return Ae(),{$dirty:f,$anyDirty:m,$invalid:S,$correct:M,$error:R,$pending:se,$errors:$,$silentErrors:U,$ready:Z,$name:ie,$shortcuts:I,$groups:ue,$silentValue:_,$edited:j,$anyEdited:te,$localPending:pe,$autoDirty:Y,$silent:X,$value:D}});}function v(){C?.(),o?.(),y?.(),w?.(),P=[],h={},T.value&&Object.entries(T.value).forEach(([D,_])=>{_.$unwatch();});}function H(){Object.entries(T.value).forEach(([D,_])=>{_.$clearExternalErrors();});}function z(D,_){if(o?.(),v(),!_)if(D?.toInitialState)t.value=W({...g.value??{}});else if(D?.toState){let f;typeof D?.toState=="function"?f=D?.toState():f=D?.toState,g.value=W(f),t.value=W(f);}else g.value=W(t.value);Object.values(T.value).forEach(f=>{f.$reset(D,true);}),D?.clearExternalErrors&&H(),Q(),_||x();}function J(D=true,_=false){Object.values(T.value).forEach(f=>{f.$touch(D,_);});}function K(D){return D.filter(([_,f])=>A(f)?!(f&&typeof f=="object"&&"_null"in f)&&!re(f):Array.isArray(f)?f.length:true)}function oe(D=true){let _=Object.entries(T.value).map(([f,m])=>[f,m.$extractDirtyFields(D)]);return D&&(_=K(_)),Object.fromEntries(_)}async function E(){try{if(d.schemaMode)return d.onValidate?(J(!1),h.$localPending.value=!0,d.onValidate()):{valid:!1,data:t.value};{let D=t.value;return {valid:(await Promise.allSettled(Object.values(T.value).map(m=>m.$validate()))).every(m=>m.status==="fulfilled"?m.value.valid===!0:!1),data:D}}}catch{return {valid:false,data:t.value}}finally{h.$localPending.value=false;}}let{$shortcuts:G,$localPending:ge,...Re}=h;return reactive({...Re,...G,$fields:T,$reset:z,$touch:J,$validate:E,$unwatch:v,$watch:s,$clearExternalErrors:H,$extractDirtyFields:oe})}function De({rulesDef:e,...t}){if(_t(e,t.state,t.schemaMode))return zt({rulesDef:e,...t});if(ze(t.state,e)){if(Le(t.state))return Je({rulesDef:e,...t});{let n=effectScope().run(()=>{let u=toRef(t.state.value?t.state:ref({}));return watch(()=>t.state.value,c=>{u.value=c;},{deep:true}),watch(u,c=>{t.state.value=c;},{deep:true}),{fakeState:u}}),{state:a,...l}=t;return Je({rulesDef:e,...l,state:n.fakeState})}}else if(Ke(e))return Ce({rulesDef:e,...t})}function Pe({initialState:e,options:t,scopeRules:r,state:n,customRules:a,shortcuts:l,schemaErrors:u,schemaMode:c=false,onValidate:g}){let p=lt(),d=ref();return ze(n,r)?d.value=Je({rootRules:r,rulesDef:r,state:n,customMessages:a?.(),storage:p,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:l,fieldName:"root",path:"",schemaErrors:u,rootSchemaErrors:u,schemaMode:c,onValidate:g}):Ke(r)&&(d.value=Ce({rulesDef:r,state:n,customMessages:a?.(),storage:p,options:t,externalErrors:t.externalErrors,initialState:e,shortcuts:l,fieldName:"root",path:"",schemaMode:c,schemaErrors:u,onValidate:g})),getCurrentScope()&&onScopeDispose(()=>{d.value?.$unwatch();}),reactive({regle:d})}function Ye(e,t,r){let n={autoDirty:t?.autoDirty,lazy:t?.lazy,rewardEarly:t?.rewardEarly,silent:t?.silent,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange};function a(l,u,c){let g=isRef(u)?u:typeof u=="function"?void 0:computed(()=>u),p={...n,...c},d=isRef(l)?l:ref(l),L=shallowRef(g??{});typeof u=="function"&&watchEffect(()=>{L.value=u(d),triggerRef(L);});let h=ref(A(d.value)?{...W(d.value)}:W(d.value));return {r$:Pe({scopeRules:L,state:d,options:p,initialState:h,customRules:e,shortcuts:r}).regle}}return a}var Qe=Ye();function Xe(){function e(t,r){return r}return e}var yt=Xe();function Yt({rules:e,modifiers:t,shortcuts:r}){let n=Ye(e,t,r);n.__config={rules:e,modifiers:t,shortcuts:r};let a=Xe();return {useRegle:n,inferRules:a}}function Qt(e,{rules:t,modifiers:r,shortcuts:n}){let a=e.__config??{},l=()=>({...a.rules?.(),...t?.()}),u=a.modifiers&&r?je(a.modifiers,r):r,c=a.shortcuts&&n?je(a.shortcuts,n):n,g=Ye(l,u,c);g.__config={rules:l,modifiers:u,shortcuts:c};let p=Xe();return {useRegle:g,inferRules:p}}function Ne(e,t){let r=t??false,n=computed({get:()=>r?Object.values(e).map(i=>i.$value):Object.fromEntries(Object.entries(e).map(([i,s])=>[i,s.$value])),set:i=>{r||typeof i=="object"&&Object.entries(i).forEach(([s,v])=>e[s].$value=v);}}),a=computed({get:()=>Object.fromEntries(Object.entries(e).map(([i,s])=>[i,s.$silentValue])),set:i=>{typeof i=="object"&&Object.entries(i).forEach(([s,v])=>e[s].$silentValue=v);}}),l=computed(()=>{let i=Object.entries(e);return !!i.length&&i.every(([s,v])=>v?.$dirty)}),u=computed(()=>Object.entries(e).some(([i,s])=>s?.$anyDirty)),c=computed(()=>Object.entries(e).some(([i,s])=>s?.$invalid)),g=computed(()=>{let i=Object.entries(e);return !!i.length&&i.every(([s,v])=>v?.$correct||v.$anyDirty&&!v.$invalid)}),p=computed(()=>Object.entries(e).some(([i,s])=>s?.$error)),d=computed(()=>{let i=Object.entries(e);return !!i.length&&i.every(([s,v])=>v?.$ready)}),L=computed(()=>Object.entries(e).some(([i,s])=>s?.$pending)),h=computed(()=>r?Object.entries(e).map(([i,s])=>s.$errors):Object.fromEntries(Object.entries(e).map(([i,s])=>[i,s.$errors]))),P=computed(()=>r?Object.entries(e).map(([i,s])=>s.$silentErrors):Object.fromEntries(Object.entries(e).map(([i,s])=>[i,s.$silentErrors]))),C=computed(()=>{let i=Object.entries(e);return !!i.length&&i.every(([s,v])=>v?.$edited)}),w=computed(()=>Object.entries(e).some(([i,s])=>s?.$anyEdited)),o=computed(()=>r?Object.values(e):e);function y(i){Object.values(e).forEach(s=>{s.$reset(i);});}function b(){Object.values(e).forEach(i=>{i.$touch();});}function x(i=true){return Object.values(e).map(s=>s.$extractDirtyFields(i))}function T(){Object.values(e).forEach(i=>{i.$clearExternalErrors();});}async function Q(){try{let i=n.value;return {valid:(await Promise.allSettled(Object.values(e).map(H=>H.$validate()))).every(H=>H.status==="fulfilled"?H.value.valid===!0:!1),data:i}}catch{return {valid:false,data:n.value}}}return reactive({...!r&&{$silentValue:a},$errors:h,$silentErrors:P,$instances:o,$value:n,$dirty:l,$anyDirty:u,$invalid:c,$correct:g,$error:p,$pending:L,$ready:d,$edited:C,$anyEdited:w,$reset:y,$touch:b,$validate:Q,$extractDirtyFields:x,$clearExternalErrors:T})}function Zt(e,t){function r(n){let a=computed(()=>toValue(n));c();let l=ref(g(e.value)),u=reactive({r$:l});function c(){a.value&&!e.value[a.value]&&(e.value[a.value]={});}watch(a,c),watch(e,p=>{l.value=g(p);},{deep:true});function g(p){if(a.value){let d=p[a.value]??{};return Ne(d,!t.asRecord)}else return Ne(p["~~global"]??{},!t.asRecord)}return {r$:u.r$}}return {useCollectScope:r}}function rr(e,t){let r=t??Qe;return {useScopedRegle:(a,l,u)=>{let{namespace:c,scopeKey:g,...p}=u??{};r.__config??={};let d=computed(()=>toValue(c)),L=ref(`${Object.keys(e.value).length+1}-${xe()}`),h=computed(()=>u?.scopeKey??`instance-${L.value}`),{r$:P}=r(a,l,p);w(),Ft(C),watch(d,(o,y)=>{C(y),w();}),getCurrentInstance()&&onMounted(()=>{let o=getCurrentInstance();typeof window<"u"&&o?.proxy?.$el?.parentElement&&document.documentElement&&!document.documentElement.contains(o?.proxy?.$el?.parentElement)&&C();});function C(o){let y=o??d.value;y?e.value[y]&&delete e.value[y][h.value]:e.value["~~global"][h.value]&&delete e.value["~~global"][h.value];}function w(){d.value?(e.value[d.value]||(e.value[d.value]={}),e.value[d.value][h.value]=P):(e.value["~~global"]||(e.value["~~global"]={}),e.value["~~global"][h.value]=P);}return {r$:P,dispose:C,register:w}}}}function Ze(e){let r=(e?.customStore?()=>(e.customStore&&(e.customStore?.value["~~global"]?e.customStore?.value&&(e.customStore.value={"~~global":{}}):e.customStore.value["~~global"]={}),e.customStore):Vt(()=>ref({"~~global":{}})))(),{useScopedRegle:n}=rr(r,e?.customUseRegle),{useCollectScope:a}=Zt(r,{asRecord:e?.asRecord});return {useScopedRegle:n,useCollectScope:a}}var {useCollectScope:mt,useScopedRegle:gt}=Ze();function lr(e,t,r){let n=computed(()=>toValue(e)[t]);return computed(()=>{let l=r.find(u=>{if(u[t]&&"literal"in u[t]){let c=u[t].literal;if(ve(c))return unref(c._params?.[0])===n.value}});if(l)return l;{let u=r.find(c=>A(c[t])&&!Object.keys(c[t]).some(g=>g==="literal"));return u||{}}})}function vt(e,t,r){return A(e[t])&&"$value"in e[t]&&e[t]?.$value===r}function or(e,t,r){let n=isRef(e)?toRef(e.value,"$fields"):toRef(e,"$fields"),a=ref();return watch(n,async()=>{await nextTick(),vt(n.value,t,r)?a.value=n.value:a.value=void 0;},{immediate:true,flush:"pre"}),a}function sr(e){return e}function ir(e,t){return r=>je({...e},t(r))}
|
|
2
|
-
export{rt as InternalRuleType,at as createRule,Ze as createScopedUseRegle,
|
|
1
|
+
import {effectScope,computed,toValue,ref,watch,getCurrentInstance,onMounted,reactive,getCurrentScope,onScopeDispose,isRef,shallowRef,watchEffect,triggerRef,toRef,unref,version,nextTick,markRaw}from'vue';function It(e){return e?.constructor.name=="File"||e?.constructor.name=="FileList"}function oe(e,t=true){return e==null?true:e instanceof Date?isNaN(e.getTime()):It(e)?e.size<=0:Array.isArray(e)?t?e.length===0:false:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}var Ot=Symbol("regle-rule");function cr(e){if(typeof e.source.flags=="string")return e.source.flags;{let t=[];return e.global&&t.push("g"),e.ignoreCase&&t.push("i"),e.multiline&&t.push("m"),e.sticky&&t.push("y"),e.unicode&&t.push("u"),t.join("")}}function G(e){let t=e,r={}.toString.call(e).slice(8,-1);if(r=="Set"&&(t=new Set([...e].map(n=>G(n)))),r=="Map"&&(t=new Map([...e].map(n=>[G(n[0]),G(n[1])]))),r=="Date"&&(t=new Date(e.getTime())),r=="RegExp"&&(t=RegExp(e.source,cr(e))),r=="Array"||r=="Object"){t=Array.isArray(e)?[]:{};for(let n in e)t[n]=G(e[n]);}return t}function M(e){return e&&(e instanceof Date||e.constructor.name=="File"||e.constructor.name=="FileList")?false:typeof e=="object"&&e!==null&&!Array.isArray(e)}function je(e,...t){for(var r=[].slice.call(arguments),n,a=r.length;n=r[a-1],a--;)if(!n||typeof n!="object"&&typeof n!="function")throw new Error("expected object, got "+n);for(var l=r[0],i=r.slice(1),c=i.length,a=0;a<c;a++){var g=i[a];for(var p in g)l[p]=g[p];}return l}function tt(e){let t=Object.prototype.toString.call(e);return e==null?new Date(NaN):e instanceof Date||typeof e=="object"&&t==="[object Date]"?new Date(e.getTime()):typeof e=="number"||t==="[object Number]"?new Date(e):typeof e=="string"||t==="[object String]"?new Date(e):new Date(NaN)}function Ge(e,t,r){let n,a=(...l)=>new Promise(i=>{clearTimeout(n),n=setTimeout(()=>{n=void 0,Promise.resolve(e.apply(this,[...l])).then(i);},t);});return a.cancel=()=>{clearTimeout(n),n=void 0;},a}function We(e,t,r=false,n=true){if(e===t)return true;if(e&&t&&typeof e=="object"&&typeof t=="object"){if(e.constructor!==t.constructor)return false;var a,l,i;if(Array.isArray(e)&&Array.isArray(t)){if(a=e.length,a!=t.length)return false;if(n||!n&&r){for(l=a;l--!==0;)if(!We(e[l],t[l],r,false))return false}return true}if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===t.toString();if(i=Object.keys(e),a=i.length,a!==Object.keys(t).length)return false;for(l=a;l--!==0;)if(!Object.prototype.hasOwnProperty.call(t,i[l]))return false;for(l=a;l--!==0;){var c=i[l];return !(M(e)&&M(t)&&(n||!n&&r)&&!We(e[c],t[c],r,false))}return true}return e!==e&&t!==t}var rt={Inline:"__inline",Async:"__async"};function wt(e,t){return e.some(r=>r[t])}function Pt(e,t){return e.reduce((r,n)=>{let a=n[t]||[];return r.concat(a)},[])}function re(e){try{return e.map(t=>toValue(t))}catch{return []}}function At(e){return e.map(t=>t instanceof Function?computed(t):isRef(t)?t:toRef(()=>t))}function Mt(e){let n=e.toString().replace(/\/\/.*$/gm,"").replace(/\/\*[\s\S]*?\*\//g,"").match(/^(?:async\s*)?(?:function\b.*?\(|\((.*?)\)|(\w+))\s*=>|\((.*?)\)\s*=>|function.*?\((.*?)\)|\((.*?)\)/);return n?(n[0]||n[1]||n[2]||n[3]||n[4]||"").split(",").map(i=>i.trim()).filter(i=>i.length>0).length:0}function nt(e,...t){let{validator:r,type:n}=e,a=n===rt.Async||r.constructor.name==="AsyncFunction";return markRaw({...{validator(c,...g){return e.validator(c,...re(g.length?g:t))},message(c){return typeof e.message=="function"?e.message({...c,$params:re(c?.$params?.length?c.$params:t)}):e.message},active(c){return typeof e.active=="function"?e.active({...c,$params:re(c?.$params?.length?c.$params:t)}):e.active??true},tooltip(c){return typeof e.tooltip=="function"?e.tooltip({...c,$params:re(c?.$params?.length?c.$params:t)}):e.tooltip??[]},exec(c){let g=e.validator(c,...re(t)),p;return g instanceof Promise?g.then(d=>(p=d,typeof p=="object"&&"$valid"in p?p.$valid:typeof p=="boolean"?p:false)):(p=g,typeof p=="object"&&"$valid"in p?p.$valid:typeof p=="boolean"?p:false)}},_validator:e.validator,_message:e.message,_active:e.active,_tooltip:e.tooltip,_type:e.type,_message_patched:false,_tooltip_patched:false,_async:a,_params:At(t),_brand:Ot})}function at(e){if(typeof e.validator=="function"){let r=nt(e,...[]),n=e.async??e.validator.constructor.name==="AsyncFunction";if(Mt(e.validator)>1){let a=function(...l){return nt(e,...l)};return a.validator=r.validator,a.message=r.message,a.active=r.active,a.tooltip=r.tooltip,a.type=r.type,a.exec=r.exec,a._validator=r.validator,a._message=r.message,a._active=r.active,a._tooltip=r.tooltip,a._type=e.type,a._message_pacthed=false,a._tooltip_pacthed=false,a._async=n,a}else return r}throw new Error("[createRule] validator must be a function")}function lt(){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 i(y){let h=t.value.get(y);if(h)return h;{let x=ref({});return t.value.set(y,x),x}}function c(y){let h=r.value.get(y);if(h)return h;{let x=ref([]);return r.value.set(y,x),x}}function g(y,h,x){l.value.set(`${y}-${h}`,x);}function p(y,h){return l.value.get(`${y}-${h}`)}function d(y,h){y&&h!=null&&l.value.delete(`${y}-${h}`);}function B(y,h){n.value.set(y,h);}function b(y){return n.value.get(y)??false}function P(y,h){e.value.set(y,h);}function I(y,h){let x=e.value.get(y);return x?w(h,x)?{valid:true}:{valid:false}:void 0}function w(y,h){let x=Object.keys(h),T=Object.keys(y);return T.length!==x.length||!T.every(s=>x.includes(s))?false:T.every(s=>{let o=y[s],$=h[s];return !$||!o||typeof o=="function"||typeof $=="function"||typeof o=="number"||typeof o=="boolean"?false:o._params?o._params?.every((L,H)=>{if(typeof $=="number"||typeof $=="boolean")return true;{let J=re($._params),K=re(o._params);return J?.[H]===K?.[H]}}):true})}function u(y){let h=a.value.get(y);if(h)return h;{let x=ref(false),T=ref(true),Q=ref({}),s=ref(false);return a.value.set(y,{$pending:x,$valid:T,$metadata:Q,$validating:s}),{$pending:x,$valid:T,$metadata:Q,$validating:s}}}return getCurrentScope()&&onScopeDispose(()=>{e.value.clear(),t.value.clear(),r.value.clear(),n.value.clear(),a.value.clear(),l.value.clear();}),{addRuleDeclEntry:P,setDirtyEntry:B,checkRuleDeclEntry:I,getDirtyState:b,trySetRuleStatusRef:u,getFieldsEntry:i,getCollectionsEntry:c,getArrayStatus:p,addArrayStatus:g,deleteArrayStatus:d,arrayStatusStorage:l}}function Be(e){return M(e.value)}function ot(e,t,r){let n=effectScope(),a;return e instanceof Function?a=n.run(()=>e(t,r??0)):a=e,{scope:n,unwrapped:a}}var Fe={LessThan:-1,EqualTo:0,GreaterThan:1};function Sr(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]),i=Number(n[a]);if(l>i)return Fe.GreaterThan;if(i>l)return Fe.LessThan;if(!isNaN(l)&&isNaN(i))return Fe.GreaterThan;if(isNaN(l)&&!isNaN(i))return Fe.LessThan}return Fe.EqualTo}var Le=Sr(version,"3.5.0")!==-1;function Tr(){return Math.floor(Math.random()*Date.now()).toString()}function Ee(){return typeof window>"u"?Tr():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function jt(e){return getCurrentScope()?(onScopeDispose(e),true):false}function Ft(e){let t=false,r,n=effectScope(true);return (...a)=>(t||(r=n.run(()=>e(...a)),t=true),r)}function He(e,t){return Be(e)||M(t.value)&&!oe(t.value)&&!Object.entries(t.value).some(([r,n])=>$e(n)||typeof n=="function")}function Vt(e,t,r=false){return !!e.value&&M(e.value)&&"$each"in e.value||r&&Array.isArray(t.value)&&t.value.some(M)||Array.isArray(t.value)&&t.value.some(M)}function ze(e){return !!e.value&&M(e.value)}function $e(e){return M(e)&&"_validator"in e}function Ve(e){return typeof e.value=="function"?"_validator"in e.value:true}function _t(e){return M(e)&&"$fields"in e}function st(e){return !!e&&"$rules"in e}function it({field:e,silent:t=false}){return Object.entries(e.$rules??{}).map(([r,n])=>t&&!n.$valid||!n.$valid&&e.$error&&!n.$validating?n.$message:null).filter(r=>!!r).reduce((r,n)=>typeof n=="string"?r?.concat([n]):r?.concat(n),[]).concat(e.$error?e.$externalErrors??[]:[]).concat(e.$error?e.$schemaErrors??[]:[])}function Ut({field:e}){return Object.entries(e.$rules??{}).map(([t,r])=>r.$tooltip).filter(t=>!!t).reduce((t,r)=>typeof r=="string"?t?.concat([r]):t?.concat(r),[])}function Nt(e){return M(e)&&"$each"in e}function ut(e,t){let{includePath:r=false}=t??{};if(Array.isArray(e)&&e.every(n=>!M(n)))return e;if(Nt(e)){let n=r?e.$self?.map(l=>({error:l,path:""}))??[]:e.$self??[],a=e.$each?.map(l=>Ke(l,r))??[];return n?.concat(a.flat())}else return Object.entries(e).map(([n,a])=>Ke(a,r,[n])).flat()}function Ke(e,t=false,r){let n=t&&!r?[]:r;if(Array.isArray(e)&&e.every(a=>!M(a)))return t?e.map(a=>({error:a,path:n?.join(".")??""})):e;if(Nt(e)){let a=n?.length?e.$self?.map(i=>({error:i,path:n.join(".")}))??[]:e.$self??[],l=e.$each?.map((i,c)=>Ke(i,t,n?.concat(c.toString())))??[];return a?.concat(l.flat())}else return Object.entries(e).map(([a,l])=>Ke(l,t,n?.concat(a))).flat()}function kt({customMessages:e,rule:t,ruleKey:r,state:n,path:a,storage:l,$debounce:i,modifiers:c}){let g=effectScope(),p={},d,B=ref(false),b=ref(false),{$pending:P,$valid:I,$metadata:w,$validating:u}=l.trySetRuleStatusRef(`${a}.${r}`);function y(){g=effectScope(),p=g.run(()=>{let $=ref(false),L=ref(false),H=ref(true),J=ref(false),K=ref(false),le=computed(()=>({$value:n.value,$error:L.value,$dirty:$.value,$pending:J.value,$correct:K.value,$invalid:H.value,$rule:{$valid:I.value,$invalid:!I.value,$pending:P.value},$params:f.value,...w.value})),C=computed(()=>Ve(t)?typeof t.value.active=="function"?t.value.active(le.value):!!t.value.active:true);function k(S){let j="",R=e?e[r]?.[S]:void 0;if(R&&(typeof R=="function"?j=R(le.value):j=R),Ve(t)){let N=`_${S}_patched`;R&&!t.value[N]||(typeof t.value[S]=="function"?j=t.value[S](le.value):j=t.value[S]??"");}return j}let me=computed(()=>{let S=k("message");return oe(S)&&(S="This field is not valid"),S}),Re=computed(()=>k("tooltip")),O=computed(()=>Ve(t)&&t.value.type?t.value.type:r),V=computed(()=>Ve(t)?t.value.validator:t.value),f=computed(()=>typeof t.value=="function"?[]:re(t.value._params??[])),m=computed(()=>`${a}.${O.value}`);return {$active:C,$message:me,$type:O,$validator:V,$params:f,$path:m,$tooltip:Re,$fieldCorrect:K,$fieldError:L,$fieldDirty:$,$fieldPending:J,$fieldInvalid:H}}),d=watch(p?.$params,()=>{(!c.$silent.value||c.$rewardEarly.value&&p.$fieldError.value)&&Q();});}y();function h(){I.value=true,p.$fieldDirty.value&&(P.value=true);}async function x(){let $=false;try{let L=p.$validator.value;if(typeof L!="function")return console.error(`${a}: Incorrect rule format, it needs to be either a function or created with "createRule".`),!1;let H=L(n.value,...p.$params.value),J=n.value;h();let K;if(H instanceof Promise?K=await H:K=H,n.value!==J)return !0;if(typeof K=="boolean")$=K;else {let{$valid:le,...C}=K;$=le,w.value=C;}}catch{$=false;}finally{P.value=false;}return $}let T=Ge(x,i??200);async function Q(){try{u.value=!0;let $=!1;if(b.value=!0,$e(t.value)&&t.value._async)$=await T();else {let L=p.$validator.value,H=L(n.value,...p.$params.value);if(H 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(H!=null)if(typeof H=="boolean")$=H;else {let{$valid:J,...K}=H;$=J,w.value=K;}}return I.value=$,$}catch{return false}finally{u.value=false,b.value=false;}}function s(){I.value=true,w.value={},P.value=false,u.value=false,y();}function o(){d(),g.stop(),g=effectScope();}return reactive({...p,$pending:P,$valid:I,$metadata:w,$haveAsync:B,$maybePending:b,$validating:u,$parse:Q,$unwatch:o,$watch:y,$reset:s})}function Ce({state:e,rulesDef:t,customMessages:r,path:n,fieldName:a,storage:l,options:i,externalErrors:c,schemaErrors:g,schemaMode:p,onUnwatch:d,$isArray:B,initialState:b,shortcuts:P,onValidate:I}){let w=effectScope(),u,y=[],h,T,Q,s,o=()=>{};function $(){let v=t.value,z=l.checkRuleDeclEntry(n,v);k.value=Object.fromEntries(Object.entries(v).filter(([A])=>A.startsWith("$"))),J(),C.value=Object.fromEntries(Object.entries(t.value).filter(([A])=>!A.startsWith("$")).map(([A,ee])=>{if(ee){let se=toRef(()=>ee);return [A,kt({modifiers:{$silent:u.$silent,$rewardEarly:u.$rewardEarly},customMessages:r,rule:se,ruleKey:A,state:e,path:n,storage:l,$debounce:k.value.$debounce})]}return []}).filter(A=>!!A.length)),u.processShortcuts(),L(),z?.valid!=null&&(u.$dirty.value=l.getDirtyState(n),(u.$dirty.value&&!u.$silent.value||u.$rewardEarly.value&&u.$error.value)&&o()),l.addRuleDeclEntry(n,v);}function L(){o=u.$debounce.value?Ge(le,u.$debounce.value??u.$haveAnyAsyncRule?100:0):le;}function H(){C.value&&Object.entries(C.value).forEach(([v,z])=>{z.$unwatch();}),T(),s?.(),u.$dirty.value&&l.setDirtyEntry(n,u.$dirty.value),h?.(),w.stop(),w=effectScope(),y.forEach(v=>v.stop()),y=[],d?.(),Q?.();}function J(){C.value&&Object.entries(C.value).forEach(([v,z])=>{z.$watch();}),u=w.run(()=>{let v=ref(false),z=ref(false),A=computed(()=>v.value),ee=computed(()=>k.value.$debounce),se=computed(()=>k.value.$deepCompare!=null?k.value.$deepCompare:false),ge=computed(()=>k.value.$lazy!=null?k.value.$lazy:unref(i.lazy)!=null?unref(i.lazy):false),fe=computed(()=>k.value.$rewardEarly!=null?k.value.$rewardEarly:unref(i.rewardEarly)!=null?unref(i.rewardEarly):false),Te=computed(()=>k.value.$clearExternalErrorsOnChange!=null?k.value.$clearExternalErrorsOnChange:unref(i.clearExternalErrorsOnChange)!=null?unref(i.clearExternalErrorsOnChange):!E.value),E=computed(()=>fe.value?true:k.value.$silent!=null?k.value.$silent:unref(i.silent)!=null?unref(i.silent):false),_=computed(()=>k.value.$autoDirty!=null?k.value.$autoDirty:unref(i.autoDirty)!=null?unref(i.autoDirty):true),D=computed(()=>Object.entries(C.value).some(([ie,te])=>te.$validating)),F=computed({get:()=>e.value,set(ie){h(),e.value=ie,K();}}),ve=computed(()=>Ae.value&&!be.value&&v.value),$t=computed(()=>it({field:{$rules:C.value,$error:ve.value,$externalErrors:c?.value,$schemaErrors:g?.value}})),St=computed(()=>it({field:{$rules:C.value,$error:ve.value,$externalErrors:c?.value,$schemaErrors:g?.value},silent:true})),et=computed(()=>v.value?b.value instanceof Date&&e.value instanceof Date?tt(b.value).getDate()!==tt(e.value).getDate():b.value==null?!!e.value:Array.isArray(e.value)&&Array.isArray(b.value)?!We(e.value,b.value,k.value.$deepCompare):b.value!==e.value:false),Tt=computed(()=>et.value),bt=computed(()=>Ut({field:{$rules:C.value}})),ht=computed(()=>(E.value||A.value)&&!(Ae.value||be.value)),be=computed(()=>z.value||!fe.value?Object.entries(C.value).some(([ie,te])=>te.$pending):false),Ae=computed(()=>c?.value?.length||g?.value?.length?true:ke.value?false:!fe.value||fe.value?Object.entries(C.value).some(([te,Me])=>!(Me.$valid&&!Me.$maybePending)):false),xt=computed(()=>a),ke=computed(()=>Object.keys(t.value).filter(([ie])=>!ie.startsWith("$")).length===0&&!p),Et=computed(()=>c?.value?.length||ke.value?false:v.value&&!oe(e.value)&&!D.value&&!be.value?p?!g?.value?.length:Object.values(C.value).some(te=>te.$active)?Object.values(C.value).filter(te=>te.$active).every(te=>te.$valid):false:false),ir=computed(()=>Object.entries(C.value).some(([ie,te])=>te.$haveAsync));function ur(){P?.fields&&Object.entries(P.fields).forEach(([ie,te])=>{let Me=effectScope();Ct[ie]=Me.run(()=>{let Dt=ref();return watchEffect(()=>{Dt.value=te(reactive({$dirty:v,$externalErrors:c?.value??[],$value:e,$silentValue:F,$rules:C,$error:ve,$pending:be,$invalid:Ae,$correct:Et,$errors:$t,$ready:ht,$silentErrors:St,$anyDirty:A,$tooltips:bt,$name:xt,$inactive:ke,$edited:et,$anyEdited:Tt}));}),Dt}),y.push(Me);});}let Ct={};return {$error:ve,$pending:be,$invalid:Ae,$correct:Et,$debounce:ee,$deepCompare:se,$lazy:ge,$errors:$t,$ready:ht,$silentErrors:St,$rewardEarly:fe,$autoDirty:_,$silent:E,$clearExternalErrorsOnChange:Te,$anyDirty:A,$edited:et,$anyEdited:Tt,$name:xt,$haveAnyAsyncRule:ir,$shortcuts:Ct,$validating:D,$tooltips:bt,$dirty:v,processShortcuts:ur,$silentValue:F,$inactive:ke}}),K(),T=watch(u.$dirty,v=>{l.setDirtyEntry(n,v),Object.values(C.value).forEach(z=>{z.$fieldDirty=v;});}),s=watch([u.$error,u.$correct,u.$invalid,u.$pending],()=>{Object.values(C.value).forEach(v=>{v.$fieldError=u.$error.value,v.$fieldInvalid=u.$invalid.value,v.$fieldPending=u.$pending.value,v.$fieldCorrect=u.$correct.value;});}),Q=watch(u.$haveAnyAsyncRule,L);}function K(){h=watch(e,()=>{u.$autoDirty.value&&!u.$silent.value&&(u.$dirty.value||(u.$dirty.value=true)),t.value instanceof Function&&$(),(!u.$silent.value||u.$rewardEarly.value&&u.$error.value)&&o(),u.$clearExternalErrorsOnChange.value&&f();},{deep:B?true:Le?1:true});}function le(){Object.values(C.value).forEach(v=>{v.$parse();});}let C=ref({}),k=ref({});$();function me(v,z){if(f(),u.$dirty.value=false,l.setDirtyEntry(n,false),!z)if(v?.toInitialState)e.value=G(b.value);else if(v?.toState){let A;typeof v?.toState=="function"?A=v?.toState():A=v?.toState,b.value=G(A),e.value=G(A);}else b.value=M(e.value)?G(e.value):Array.isArray(e.value)?[...e.value]:e.value;v?.clearExternalErrors&&f(),z||Object.entries(C.value).forEach(([A,ee])=>{ee.$reset();}),!u.$lazy.value&&!u.$silent.value&&!z&&Object.values(C.value).forEach(A=>A.$parse());}function Re(v=true,z=false){u.$dirty.value||(u.$dirty.value=true),z&&v?(!u.$silent.value||u.$rewardEarly.value&&u.$error.value)&&o():v&&o();}async function O(){try{if(p)return I?(Re(!1),I()):{valid:!1,data:e.value};let v=e.value;if(!u.$dirty.value)u.$dirty.value=!0;else if(!u.$silent.value&&u.$dirty.value&&!u.$pending.value)return {valid:!u.$error.value,data:v};return p?{valid:!g?.value?.length,data:v}:oe(C.value)?{valid:!0,data:v}:{valid:(await Promise.allSettled(Object.entries(C.value).map(([ee,se])=>se.$parse()))).every(ee=>ee.status==="fulfilled"?ee.value===!0:!1),data:v}}catch{return {valid:false,data:e.value}}}function V(v=true){return u.$dirty.value?e.value:v?{_null:true}:null}function f(){c?.value?.length&&(c.value=[]);}!u.$lazy.value&&!u.$dirty.value&&!u.$silent.value&&o();let{$shortcuts:m,$validating:S,$autoDirty:j,$rewardEarly:R,$clearExternalErrorsOnChange:N,$haveAnyAsyncRule:X,$debounce:Y,$lazy:Z,...ce}=u;return reactive({...ce,$externalErrors:c,$value:e,$rules:C,...m,$reset:me,$touch:Re,$validate:O,$unwatch:H,$watch:J,$extractDirtyFields:V,$clearExternalErrors:f})}function Rt({$id:e,path:t,index:r,options:n,storage:a,stateValue:l,customMessages:i,rules:c,externalErrors:g,schemaErrors:p,initialState:d,shortcuts:B,fieldName:b,schemaMode:P}){let I=c.$key?c.$key:Ee(),w=`${t}.${String(I)}`;typeof l.value=="object"&&l.value!=null&&(l.value.$id?w=`${t}.${l.value.$id}`:Object.defineProperties(l.value,{$id:{value:I,enumerable:false,configurable:false,writable:false}}));let u=toRef(g?.value??[],r),y=computed(()=>p?.value?.[r]),h=De({state:l,rulesDef:toRef(()=>c),customMessages:i,path:w,storage:a,options:n,externalErrors:u,schemaErrors:y,initialState:d,shortcuts:B,fieldName:b,schemaMode:P});if(h){let x=l.value?.$id;h.$id=x??String(I),a.addArrayStatus(e,h.$id,h);}return h}function Ht({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:l,externalErrors:i,schemaErrors:c,schemaMode:g,initialState:p,shortcuts:d,fieldName:B}){let b=effectScope(),P,I=effectScope(),w,u=[];if(!Array.isArray(e.value)&&!t.value.$each)return;let y=ref(),h=ref(e.value),x=ref({}),T,Q,s=ref({}),o=a.getCollectionsEntry(n);w=I.run(()=>({isPrimitiveArray:computed(()=>e.value?.length?Array.isArray(e.value)&&e.value.length?e.value.every(m=>typeof m!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(m=>$e(m)||typeof m=="function"):false:false)})),$(),J();function $(){x.value=Object.fromEntries(Object.entries(t.value).filter(([f])=>f.startsWith("$"))),typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?(y.value=Ee(),Object.defineProperties(e.value,{$id:{value:y.value,enumerable:false,configurable:false,writable:false}})):e.value?.$id&&(y.value=e.value.$id)),h.value=s.value.$value,Array.isArray(e.value)&&!w.isPrimitiveArray.value?o.value=e.value.filter(f=>typeof f=="object").map((f,m)=>{let{scope:S,unwrapped:j}=ot(t.value.$each,toRef(()=>f),m);S&&u.push(S);let R=toRef(p.value??[],m),N=toRef(i?.value??{},"$each"),X=computed(()=>c?.value?.$each),Y=Rt({$id:y.value,path:n,customMessages:r,rules:j??{},stateValue:toRef(()=>f),index:m,options:l,storage:a,externalErrors:N,schemaErrors:X,initialState:R,shortcuts:d,fieldName:B,schemaMode:g});return Y||null}).filter(f=>!!f):o.value=[],s.value=Ce({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:l,externalErrors:toRef(i?.value??{},"$self"),schemaErrors:computed(()=>c?.value?.$self),$isArray:true,initialState:p,shortcuts:d,fieldName:B,schemaMode:g});}function L(){if(Array.isArray(e.value)&&!w.isPrimitiveArray.value){let f=G(o.value);o.value=e.value.filter(m=>typeof m=="object").map((m,S)=>{let j=toRef(()=>m);if(m.$id&&o.value.find(R=>R.$id===m.$id)){let R=a.getArrayStatus(y.value,m.$id);return R?(R.$value=j,R):null}else {let{scope:R,unwrapped:N}=ot(t.value.$each,j,S);R&&u.push(R);let X=toRef(i?.value??{},"$each"),Y=computed(()=>c?.value?.$each??[]),Z=Rt({$id:y.value,path:n,customMessages:r,rules:N??{},stateValue:j,index:S,options:l,storage:a,externalErrors:X,schemaErrors:Y,initialState:toRef(p.value??[],S),shortcuts:d,fieldName:B,schemaMode:g});return Z||null}}).filter(m=>!!m),f.filter(m=>!e.value?.find(S=>m.$id===S.$id)).forEach((m,S)=>{a.deleteArrayStatus(y.value,S.toString());});}else o.value=[];}function H(){T=watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?$():L();},{deep:Le?1:true,flush:"pre"}),Q=watch(e,()=>{P.$autoDirty.value&&!P.$silent.value&&le(false,true);},{flush:"pre"});}function J(){H(),b=effectScope(),P=b.run(()=>{let f=computed({get:()=>e.value,set(E){T?.(),Q?.(),e.value=E,H();}}),m=computed(()=>s.value.$dirty&&(!o.value.length||o.value.every(E=>E.$dirty))),S=computed(()=>s.value.$anyDirty||o.value.some(E=>E.$anyDirty)),j=computed(()=>s.value.$invalid||o.value.some(E=>E.$invalid)),R=computed(()=>(oe(s.value.$rules)?true:s.value.$correct)&&(!o.value.length||o.value.every(E=>E.$correct||E.$anyDirty&&!E.$invalid))),N=computed(()=>s.value.$error||o.value.some(E=>E.$error)),X=computed(()=>!(j.value||Y.value)),Y=computed(()=>s.value.$pending||o.value.some(E=>E.$pending)),Z=computed(()=>!!o.value.length&&o.value.every(E=>E.$edited)),ce=computed(()=>s.value.$anyEdited||o.value.some(E=>E.$anyEdited)),v=computed(()=>({$self:s.value.$errors,$each:o.value.map(E=>E.$errors)})),z=computed(()=>({$self:s.value.$silentErrors,$each:o.value.map(E=>E.$silentErrors)})),A=computed(()=>x.value.$rewardEarly!=null?x.value.$rewardEarly:unref(l.rewardEarly)!=null?unref(l.rewardEarly):false),ee=computed(()=>A.value?true:x.value.$silent!=null?x.value.$silent:unref(l.silent)!=null?unref(l.silent):false),se=computed(()=>x.value.$autoDirty!=null?x.value.$autoDirty:unref(l.autoDirty)!=null?unref(l.autoDirty):true),ge=computed(()=>B);function fe(){d?.collections&&Object.entries(d?.collections).forEach(([E,_])=>{let D=effectScope();Te[E]=D.run(()=>{let F=ref();return watchEffect(()=>{F.value=_(reactive({$dirty:m,$error:N,$silentValue:f,$pending:Y,$invalid:j,$correct:R,$errors:v,$ready:X,$silentErrors:z,$anyDirty:S,$name:ge,$each:o,$self:s,$value:e,$edited:Z,$anyEdited:ce}));}),F}),u.push(D);});}let Te={};return fe(),{$dirty:m,$anyDirty:S,$invalid:j,$correct:R,$error:N,$pending:Y,$errors:v,$silentErrors:z,$ready:X,$name:ge,$shortcuts:Te,$silentValue:f,$edited:Z,$anyEdited:ce,$rewardEarly:A,$silent:ee,$autoDirty:se}}),w.isPrimitiveArray.value&&t.value.$each&&console.warn(`${n} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`);}function K(){T?.(),s.value&&s.value.$unwatch(),o.value&&o.value.forEach(f=>{"$dirty"in f&&f.$unwatch();}),b.stop(),b=effectScope(),I.stop(),I=effectScope(true),u.forEach(f=>f.stop()),u=[];}function le(f=true,m=false){s.value.$touch(f,m),o.value.forEach(S=>{S.$touch(f,m);});}function C(f,m){if(K(),!m)if(f?.toInitialState)e.value=G(p.value);else if(f?.toState){let S;typeof f?.toState=="function"?S=f?.toState():S=f?.toState,p.value=G(S),e.value=G(S);}else p.value=G(e.value);f?.clearExternalErrors&&me(),s.value.$reset(f,m),o.value.forEach(S=>{S.$reset(f,true);}),m||$();}async function k(){let f=e.value;try{return {valid:(await Promise.allSettled([s.value.$validate(),...o.value.map(j=>j.$validate())])).every(j=>j.status==="fulfilled"?j.value.valid===!0:!1),data:f}}catch{return {valid:false,data:f}}}function me(){s.value.$clearExternalErrors(),o.value.forEach(f=>{f.$clearExternalErrors();});}function Re(f=true){let m=o.value.map(S=>{if(_t(S))return S.$extractDirtyFields(f)});return f&&m.every(S=>oe(S))&&(m=[]),m}let{$shortcuts:O,...V}=P;return reactive({$self:s,...V,...O,$each:o,$value:e,$validate:k,$unwatch:K,$watch:J,$touch:le,$reset:C,$extractDirtyFields:Re,$clearExternalErrors:me})}function Je({rulesDef:e,state:t,path:r="",rootRules:n,externalErrors:a,schemaErrors:l,rootSchemaErrors:i,validationGroups:c,initialState:g,fieldName:p,...d}){let B=effectScope(),b,P=[],I=null,w=null,u=null,y=null;async function x(O=true){let V=Object.entries(e.value),f=Object.fromEntries(V.filter(([R,N])=>!!N).map(([R,N])=>{if(N){let X=toRef(t.value??{},R),Y=toRef(()=>N),Z=toRef(a?.value??{},R),ce=computed(()=>l?.value?.[R]),v=toRef(g?.value??{},R);return [R,De({state:X,rulesDef:Y,path:r?`${r}.${R}`:R,externalErrors:Z,schemaErrors:ce,initialState:v,fieldName:R,...d})]}return []})),m=Object.fromEntries(Object.entries(unref(a)??{}).filter(([R,N])=>!(R in e.value)&&!!N).map(([R])=>{let N=toRef(t.value??{},R),X=toRef(a?.value??{},R),Y=computed(()=>l?.value?.[R]),Z=toRef(g?.value??{},R);return [R,De({state:N,rulesDef:computed(()=>({})),path:r?`${r}.${R}`:R,externalErrors:X,schemaErrors:Y,initialState:Z,fieldName:R,...d})]})),S=Object.fromEntries(Object.entries(unref(l)??{}).map(([R])=>{let N=toRef(t.value??{},R),X=toRef(a?.value??{},R),Y=computed(()=>l?.value?.[R]),Z=toRef(g?.value??{},R);return [R,De({state:N,rulesDef:computed(()=>({})),path:r?`${r}.${R}`:R,externalErrors:X,schemaErrors:Y,initialState:Z,fieldName:R,...d})]})),j=Object.fromEntries(Object.entries(t.value??{}).filter(([R])=>!(R in e.value)&&!(R in(m??{}))&&!(R in(S??{}))).map(([R])=>{let N=toRef(t.value??{},R),X=toRef(a?.value??{},R),Y=computed(()=>l?.value?.[R]),Z=toRef(g?.value??{},R);return [R,De({state:N,rulesDef:computed(()=>({})),path:r?`${r}.${R}`:R,externalErrors:X,schemaErrors:Y,initialState:Z,fieldName:R,...d})]}));T.value={...f,...m,...S,...j},O&&o();}let T=d.storage.getFieldsEntry(r);x();function Q(){a&&(u=watch(a,()=>{$(),x();},{deep:true}));}function s(){y=watch(t,()=>{$(),x(),b.$autoDirty.value&&!b.$silent.value&&J(false,true);});}function o(){n&&(I?.(),I=watch(n,()=>{$(),x();},{deep:true,flush:"pre"}),Q()),i&&(w?.(),w=watch(i,()=>{$(),x();},{deep:true,flush:"post"})),s(),b=B.run(()=>{let O=computed({get:()=>t.value,set(_){$(),t.value=_,x(),b.$autoDirty.value&&!b.$silent.value&&J(false,true);}}),V=computed({get:()=>t.value,set(_){$(),t.value=_,x();}}),f=computed(()=>!!Object.entries(T.value).length&&Object.entries(T.value).every(([_,D])=>D?.$dirty)),m=computed(()=>Object.entries(T.value).some(([_,D])=>D?.$anyDirty)),S=computed(()=>!!Object.entries(T.value).length&&Object.entries(T.value).some(([_,D])=>D?.$invalid)),j=computed(()=>{let _=Object.entries(T.value).filter(([D,F])=>st(F)?!F.$inactive:true);return _.length?_.every(([D,F])=>d.schemaMode?F.$correct:st(F)?"required"in F.$rules&&F.$rules.required.$active?F?.$correct:!F.$invalid&&!F.$pending:F?.$correct):false}),R=computed(()=>!!Object.entries(T.value).length&&Object.entries(T.value).some(([_,D])=>D?.$error)),N=computed(()=>unref(d.options.rewardEarly)!=null?unref(d.options.rewardEarly):false),X=computed(()=>unref(d.options.silent)!=null?unref(d.options.silent):!!N.value),Y=computed(()=>unref(d.options.autoDirty)!=null?unref(d.options.autoDirty):true),Z=computed(()=>(X.value||m.value)&&!(S.value||v.value)),ce=ref(false),v=computed(()=>ce.value||Object.entries(T.value).some(([_,D])=>D?.$pending)),z=computed(()=>Object.fromEntries(Object.entries(T.value).map(([_,D])=>[_,D?.$errors]))),A=computed(()=>Object.fromEntries(Object.entries(T.value).map(([_,D])=>[_,D?.$silentErrors]))),ee=computed(()=>!!Object.entries(T.value).length&&Object.entries(T.value).every(([_,D])=>D?.$edited)),se=computed(()=>Object.entries(T.value).some(([_,D])=>D?.$anyEdited)),ge=computed(()=>p);function fe(){d.shortcuts?.nested&&Object.entries(d.shortcuts.nested).forEach(([_,D])=>{let F=effectScope();E[_]=F.run(()=>{let ve=ref();return watchEffect(()=>{ve.value=D(reactive({$dirty:f,$value:t,$silentValue:V,$error:R,$pending:v,$invalid:S,$correct:j,$ready:Z,$anyDirty:m,$name:ge,$silentErrors:A,$errors:z,$fields:T,$edited:ee,$anyEdited:se}));}),ve}),P.push(F);});}let Te=computed({get:()=>c?Object.fromEntries(Object.entries(c?.(T.value)??{}).map(([_,D])=>D.length?[_,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$correct"].map(F=>[F,wt(D,F)])),...Object.fromEntries(["$errors","$silentErrors"].map(F=>[F,Pt(D,F)]))}]:[])):{},set(){}}),E={};return fe(),{$dirty:f,$anyDirty:m,$invalid:S,$correct:j,$error:R,$pending:v,$errors:z,$silentErrors:A,$ready:Z,$name:ge,$shortcuts:E,$groups:Te,$silentValue:V,$edited:ee,$anyEdited:se,$localPending:ce,$autoDirty:Y,$silent:X,$value:O}});}function $(){I?.(),u?.(),y?.(),w?.(),P=[],b={},T.value&&Object.entries(T.value).forEach(([O,V])=>{V.$unwatch();});}function L(){Object.entries(T.value).forEach(([O,V])=>{V.$clearExternalErrors();});}function H(O,V){if(u?.(),$(),!V)if(O?.toInitialState)t.value=G({...g.value??{}});else if(O?.toState){let f;typeof O?.toState=="function"?f=O?.toState():f=O?.toState,g.value=G(f),t.value=G(f);}else g.value=G(t.value);Object.values(T.value).forEach(f=>{f.$reset(O,true);}),O?.clearExternalErrors&&L(),Q(),V||x();}function J(O=true,V=false){Object.values(T.value).forEach(f=>{f.$touch(O,V);});}function K(O){return O.filter(([V,f])=>M(f)?!(f&&typeof f=="object"&&"_null"in f)&&!oe(f):Array.isArray(f)?f.length:true)}function le(O=true){let V=Object.entries(T.value).map(([f,m])=>[f,m.$extractDirtyFields(O)]);return O&&(V=K(V)),Object.fromEntries(V)}async function C(){try{if(d.schemaMode)return d.onValidate?(J(!1),b.$localPending.value=!0,d.onValidate()):{valid:!1,data:t.value};{let O=t.value;return {valid:(await Promise.allSettled(Object.values(T.value).map(m=>m.$validate()))).every(m=>m.status==="fulfilled"?m.value.valid===!0:!1),data:O}}}catch{return {valid:false,data:t.value}}finally{b.$localPending.value=false;}}let{$shortcuts:k,$localPending:me,...Re}=b;return reactive({...Re,...k,$fields:T,$reset:H,$touch:J,$validate:C,$unwatch:$,$watch:o,$clearExternalErrors:L,$extractDirtyFields:le})}function De({rulesDef:e,...t}){if(Vt(e,t.state,t.schemaMode))return Ht({rulesDef:e,...t});if(He(t.state,e)){if(Be(t.state))return Je({rulesDef:e,...t});{let n=effectScope().run(()=>{let i=toRef(t.state.value?t.state:ref({}));return watch(()=>t.state.value,c=>{i.value=c;},{deep:true}),watch(i,c=>{t.state.value=c;},{deep:true}),{fakeState:i}}),{state:a,...l}=t;return Je({rulesDef:e,...l,state:n.fakeState})}}else if(ze(e))return Ce({rulesDef:e,...t})}function Pe({initialState:e,options:t,scopeRules:r,state:n,customRules:a,shortcuts:l,schemaErrors:i,schemaMode:c=false,onValidate:g}){let p=lt(),d=ref();return He(n,r)?d.value=Je({rootRules:r,rulesDef:r,state:n,customMessages:a?.(),storage:p,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:l,fieldName:"root",path:"",schemaErrors:i,rootSchemaErrors:i,schemaMode:c,onValidate:g}):ze(r)&&(d.value=Ce({rulesDef:r,state:n,customMessages:a?.(),storage:p,options:t,externalErrors:t.externalErrors,initialState:e,shortcuts:l,fieldName:"root",path:"",schemaMode:c,schemaErrors:i,onValidate:g})),getCurrentScope()&&onScopeDispose(()=>{d.value?.$unwatch();}),reactive({regle:d})}function Ye(e,t,r){let n={autoDirty:t?.autoDirty,lazy:t?.lazy,rewardEarly:t?.rewardEarly,silent:t?.silent,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange};function a(l,i,c){let g=isRef(i)?i:typeof i=="function"?void 0:computed(()=>i),p={...n,...c},d=isRef(l)?l:ref(l),B=shallowRef(g??{});typeof i=="function"&&watchEffect(()=>{B.value=i(d),triggerRef(B);});let b=ref(M(d.value)?{...G(d.value)}:G(d.value));return {r$:Pe({scopeRules:B,state:d,options:p,initialState:b,customRules:e,shortcuts:r}).regle}}return a}var Qe=Ye();function Xe(){function e(t,r){return r}return e}var yt=Xe();function Jt({rules:e,modifiers:t,shortcuts:r}){let n=Ye(e,t,r);n.__config={rules:e,modifiers:t,shortcuts:r};let a=Xe();return {useRegle:n,inferRules:a}}function Yt(e,{rules:t,modifiers:r,shortcuts:n}){let a=e.__config??{},l=()=>({...a.rules?.(),...t?.()}),i=a.modifiers&&r?je(a.modifiers,r):r,c=a.shortcuts&&n?je(a.shortcuts,n):n,g=Ye(l,i,c);g.__config={rules:l,modifiers:i,shortcuts:c};let p=Xe();return {useRegle:g,inferRules:p}}function Ne(e,t){let r=t??false,n=computed({get:()=>r?Object.values(e).map(s=>s.$value):Object.fromEntries(Object.entries(e).map(([s,o])=>[s,o.$value])),set:s=>{r||typeof s=="object"&&Object.entries(s).forEach(([o,$])=>e[o].$value=$);}}),a=computed({get:()=>Object.fromEntries(Object.entries(e).map(([s,o])=>[s,o.$silentValue])),set:s=>{typeof s=="object"&&Object.entries(s).forEach(([o,$])=>e[o].$silentValue=$);}}),l=computed(()=>{let s=Object.entries(e);return !!s.length&&s.every(([o,$])=>$?.$dirty)}),i=computed(()=>Object.entries(e).some(([s,o])=>o?.$anyDirty)),c=computed(()=>Object.entries(e).some(([s,o])=>o?.$invalid)),g=computed(()=>{let s=Object.entries(e);return !!s.length&&s.every(([o,$])=>$?.$correct||$.$anyDirty&&!$.$invalid)}),p=computed(()=>Object.entries(e).some(([s,o])=>o?.$error)),d=computed(()=>{let s=Object.entries(e);return !!s.length&&s.every(([o,$])=>$?.$ready)}),B=computed(()=>Object.entries(e).some(([s,o])=>o?.$pending)),b=computed(()=>r?Object.entries(e).map(([s,o])=>o.$errors):Object.fromEntries(Object.entries(e).map(([s,o])=>[s,o.$errors]))),P=computed(()=>r?Object.entries(e).map(([s,o])=>o.$silentErrors):Object.fromEntries(Object.entries(e).map(([s,o])=>[s,o.$silentErrors]))),I=computed(()=>{let s=Object.entries(e);return !!s.length&&s.every(([o,$])=>$?.$edited)}),w=computed(()=>Object.entries(e).some(([s,o])=>o?.$anyEdited)),u=computed(()=>r?Object.values(e):e);function y(s){Object.values(e).forEach(o=>{o.$reset(s);});}function h(){Object.values(e).forEach(s=>{s.$touch();});}function x(s=true){return Object.values(e).map(o=>o.$extractDirtyFields(s))}function T(){Object.values(e).forEach(s=>{s.$clearExternalErrors();});}async function Q(){try{let s=n.value;return {valid:(await Promise.allSettled(Object.values(e).map(L=>L.$validate()))).every(L=>L.status==="fulfilled"?L.value.valid===!0:!1),data:s}}catch{return {valid:false,data:n.value}}}return reactive({...!r&&{$silentValue:a},$errors:b,$silentErrors:P,$instances:u,$value:n,$dirty:l,$anyDirty:i,$invalid:c,$correct:g,$error:p,$pending:B,$ready:d,$edited:I,$anyEdited:w,$reset:y,$touch:h,$validate:Q,$extractDirtyFields:x,$clearExternalErrors:T})}function Xt(e,t){function r(n){let a=computed(()=>toValue(n));c();let l=ref(g(e.value)),i=reactive({r$:l});function c(){a.value&&!e.value[a.value]&&(e.value[a.value]={});}watch(a,c),watch(e,p=>{l.value=g(p);},{deep:true});function g(p){if(a.value){let d=p[a.value]??{};return Ne(d,!t.asRecord)}else return Ne(p["~~global"]??{},!t.asRecord)}return {r$:i.r$}}return {useCollectScope:r}}function tr(e,t){let r=t??Qe;return {useScopedRegle:(a,l,i)=>{let{namespace:c,scopeKey:g,...p}=i??{};r.__config??={};let d=computed(()=>toValue(c)),B=ref(`${Object.keys(e.value).length+1}-${Ee()}`),b=computed(()=>i?.scopeKey??`instance-${B.value}`),{r$:P}=r(a,l,p);w(),jt(I),watch(d,(u,y)=>{I(y),w();}),getCurrentInstance()&&onMounted(()=>{let u=getCurrentInstance();typeof window<"u"&&u?.proxy?.$el?.parentElement&&document.documentElement&&!document.documentElement.contains(u?.proxy?.$el?.parentElement)&&I();});function I(u){let y=u??d.value;y?e.value[y]&&delete e.value[y][b.value]:e.value["~~global"][b.value]&&delete e.value["~~global"][b.value];}function w(){d.value?(e.value[d.value]||(e.value[d.value]={}),e.value[d.value][b.value]=P):(e.value["~~global"]||(e.value["~~global"]={}),e.value["~~global"][b.value]=P);}return {r$:P,dispose:I,register:w}}}}function Ze(e){let r=(e?.customStore?()=>(e.customStore&&(e.customStore?.value["~~global"]?e.customStore?.value&&(e.customStore.value={"~~global":{}}):e.customStore.value["~~global"]={}),e.customStore):Ft(()=>ref({"~~global":{}})))(),{useScopedRegle:n}=tr(r,e?.customUseRegle),{useCollectScope:a}=Xt(r,{asRecord:e?.asRecord});return {useScopedRegle:n,useCollectScope:a}}var {useCollectScope:mt,useScopedRegle:gt}=Ze();function ar(e,t,r){let n=computed(()=>toValue(e)[t]);return computed(()=>{let l=r.find(i=>{if(i[t]&&"literal"in i[t]){let c=i[t].literal;if($e(c))return unref(c._params?.[0])===n.value}});if(l)return l;{let i=r.find(c=>M(c[t])&&!Object.keys(c[t]).some(g=>g==="literal"));return i||{}}})}function vt(e,t,r){return M(e[t])&&"$value"in e[t]&&e[t]?.$value===r}function lr(e,t,r){let n=isRef(e)?toRef(e.value,"$fields"):toRef(e,"$fields"),a=ref();return watch(n,async()=>{await nextTick(),vt(n.value,t,r)?a.value=n.value:a.value=void 0;},{immediate:true,flush:"pre"}),a}function or(e){return e}function sr(e,t){return r=>je({...e},t(r))}
|
|
2
|
+
export{rt as InternalRuleType,at as createRule,Ze as createScopedUseRegle,ar as createVariant,Jt as defineRegleConfig,or as defineRules,Yt as extendRegleConfig,ut as flatErrors,yt as inferRules,Ne as mergeRegles,vt as narrowVariant,sr as refineRules,re as unwrapRuleParameters,mt as useCollectScope,Qe as useRegle,Pe as useRootStorage,gt as useScopedRegle,lr as variantToRef};
|
package/dist/regle-core.mjs
CHANGED
|
@@ -851,7 +851,6 @@ function createReactiveFieldStatus({
|
|
|
851
851
|
let scopeState;
|
|
852
852
|
let fieldScopes = [];
|
|
853
853
|
let $unwatchState;
|
|
854
|
-
let $unwatchValid;
|
|
855
854
|
let $unwatchDirty;
|
|
856
855
|
let $unwatchAsync;
|
|
857
856
|
let $unwatchRuleFieldValues;
|
|
@@ -913,7 +912,6 @@ function createReactiveFieldStatus({
|
|
|
913
912
|
storage.setDirtyEntry(path, scopeState.$dirty.value);
|
|
914
913
|
}
|
|
915
914
|
$unwatchState?.();
|
|
916
|
-
$unwatchValid?.();
|
|
917
915
|
scope.stop();
|
|
918
916
|
scope = effectScope();
|
|
919
917
|
fieldScopes.forEach((s) => s.stop());
|
|
@@ -929,7 +927,7 @@ function createReactiveFieldStatus({
|
|
|
929
927
|
}
|
|
930
928
|
scopeState = scope.run(() => {
|
|
931
929
|
const $dirty = ref(false);
|
|
932
|
-
const
|
|
930
|
+
const triggerPunishment = ref(false);
|
|
933
931
|
const $anyDirty = computed(() => $dirty.value);
|
|
934
932
|
const $debounce2 = computed(() => {
|
|
935
933
|
return $localOptions.value.$debounce;
|
|
@@ -961,6 +959,8 @@ function createReactiveFieldStatus({
|
|
|
961
959
|
return $localOptions.value.$clearExternalErrorsOnChange;
|
|
962
960
|
} else if (unref(options.clearExternalErrorsOnChange) != null) {
|
|
963
961
|
return unref(options.clearExternalErrorsOnChange);
|
|
962
|
+
} else if ($silent.value) {
|
|
963
|
+
return false;
|
|
964
964
|
}
|
|
965
965
|
return true;
|
|
966
966
|
});
|
|
@@ -1046,7 +1046,7 @@ function createReactiveFieldStatus({
|
|
|
1046
1046
|
return $anyDirty.value && !($invalid.value || $pending.value);
|
|
1047
1047
|
});
|
|
1048
1048
|
const $pending = computed(() => {
|
|
1049
|
-
if (
|
|
1049
|
+
if (triggerPunishment.value || !$rewardEarly2.value) {
|
|
1050
1050
|
return Object.entries($rules.value).some(([key, ruleResult]) => {
|
|
1051
1051
|
return ruleResult.$pending;
|
|
1052
1052
|
});
|
|
@@ -1058,16 +1058,17 @@ function createReactiveFieldStatus({
|
|
|
1058
1058
|
return true;
|
|
1059
1059
|
} else if ($inactive.value) {
|
|
1060
1060
|
return false;
|
|
1061
|
-
} else if (!$rewardEarly2.value || $rewardEarly2.value
|
|
1062
|
-
|
|
1061
|
+
} else if (!$rewardEarly2.value || $rewardEarly2.value) {
|
|
1062
|
+
const result = Object.entries($rules.value).some(([_, ruleResult]) => {
|
|
1063
1063
|
return !(ruleResult.$valid && !ruleResult.$maybePending);
|
|
1064
1064
|
});
|
|
1065
|
+
return result;
|
|
1065
1066
|
}
|
|
1066
1067
|
return false;
|
|
1067
1068
|
});
|
|
1068
1069
|
const $name = computed(() => fieldName);
|
|
1069
1070
|
const $inactive = computed(() => {
|
|
1070
|
-
if (
|
|
1071
|
+
if (Object.keys(rulesDef.value).filter(([ruleKey]) => !ruleKey.startsWith("$")).length === 0 && !schemaMode) {
|
|
1071
1072
|
return true;
|
|
1072
1073
|
}
|
|
1073
1074
|
return false;
|
|
@@ -1133,11 +1134,6 @@ function createReactiveFieldStatus({
|
|
|
1133
1134
|
}
|
|
1134
1135
|
}
|
|
1135
1136
|
const $shortcuts2 = {};
|
|
1136
|
-
watch($invalid, (value) => {
|
|
1137
|
-
if (!value) {
|
|
1138
|
-
triggerPunishment2.value = false;
|
|
1139
|
-
}
|
|
1140
|
-
});
|
|
1141
1137
|
return {
|
|
1142
1138
|
$error,
|
|
1143
1139
|
$pending,
|
|
@@ -1162,7 +1158,6 @@ function createReactiveFieldStatus({
|
|
|
1162
1158
|
$validating: $validating2,
|
|
1163
1159
|
$tooltips,
|
|
1164
1160
|
$dirty,
|
|
1165
|
-
triggerPunishment: triggerPunishment2,
|
|
1166
1161
|
processShortcuts,
|
|
1167
1162
|
$silentValue,
|
|
1168
1163
|
$inactive
|
|
@@ -1186,11 +1181,6 @@ function createReactiveFieldStatus({
|
|
|
1186
1181
|
});
|
|
1187
1182
|
}
|
|
1188
1183
|
);
|
|
1189
|
-
$unwatchValid = watch(scopeState.$invalid, (invalid) => {
|
|
1190
|
-
if (scopeState.$rewardEarly.value && !invalid) {
|
|
1191
|
-
scopeState.triggerPunishment.value = false;
|
|
1192
|
-
}
|
|
1193
|
-
});
|
|
1194
1184
|
$unwatchAsync = watch(scopeState.$haveAnyAsyncRule, define$commit);
|
|
1195
1185
|
}
|
|
1196
1186
|
function define$watchState() {
|
|
@@ -1208,7 +1198,7 @@ function createReactiveFieldStatus({
|
|
|
1208
1198
|
if (!scopeState.$silent.value || scopeState.$rewardEarly.value && scopeState.$error.value) {
|
|
1209
1199
|
$commit();
|
|
1210
1200
|
}
|
|
1211
|
-
if (scopeState.$
|
|
1201
|
+
if (scopeState.$clearExternalErrorsOnChange.value) {
|
|
1212
1202
|
$clearExternalErrors();
|
|
1213
1203
|
}
|
|
1214
1204
|
},
|
|
@@ -1226,7 +1216,6 @@ function createReactiveFieldStatus({
|
|
|
1226
1216
|
function $reset(options2, fromParent) {
|
|
1227
1217
|
$clearExternalErrors();
|
|
1228
1218
|
scopeState.$dirty.value = false;
|
|
1229
|
-
scopeState.triggerPunishment.value = false;
|
|
1230
1219
|
storage.setDirtyEntry(path, false);
|
|
1231
1220
|
if (!fromParent) {
|
|
1232
1221
|
if (options2?.toInitialState) {
|
|
@@ -1281,7 +1270,6 @@ function createReactiveFieldStatus({
|
|
|
1281
1270
|
}
|
|
1282
1271
|
}
|
|
1283
1272
|
const data = state.value;
|
|
1284
|
-
scopeState.triggerPunishment.value = true;
|
|
1285
1273
|
if (!scopeState.$dirty.value) {
|
|
1286
1274
|
scopeState.$dirty.value = true;
|
|
1287
1275
|
} else if (!scopeState.$silent.value && scopeState.$dirty.value && !scopeState.$pending.value) {
|
|
@@ -1335,7 +1323,6 @@ function createReactiveFieldStatus({
|
|
|
1335
1323
|
$haveAnyAsyncRule,
|
|
1336
1324
|
$debounce,
|
|
1337
1325
|
$lazy,
|
|
1338
|
-
triggerPunishment,
|
|
1339
1326
|
...restScope
|
|
1340
1327
|
} = scopeState;
|
|
1341
1328
|
return reactive({
|