@regle/core 1.1.0-beta.3 → 1.1.0-beta.5

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.
@@ -1161,6 +1161,13 @@ type RegleResult<Data extends Record<string, any> | any[] | unknown, TRules exte
1161
1161
  valid: true;
1162
1162
  data: Data extends Array<infer U extends Record<string, any>> ? DeepSafeFormState<U, TRules>[] : Data extends Date | File ? SafeFieldProperty<Data, TRules> : Data extends Record<string, any> ? DeepSafeFormState<Data, TRules> : SafeFieldProperty<Data, TRules>;
1163
1163
  };
1164
+ /**
1165
+ * Infer safe output from any `r$` instance
1166
+ *
1167
+ * ```ts
1168
+ * type FormRequest = InferSafeOutput<typeof r$>;
1169
+ * ```
1170
+ */
1164
1171
  type InferSafeOutput<TRegle extends MaybeRef<RegleRoot<{}, any, any, any>> | MaybeRef<RegleFieldStatus<any, any, any>>> = UnwrapRef<TRegle> extends Raw<RegleRoot<infer TState extends Record<string, any>, infer TRules, any, any>> ? DeepSafeFormState<JoinDiscriminatedUnions<TState>, TRules> : UnwrapRef<TRegle> extends RegleFieldStatus<infer TState, infer TRules> ? SafeFieldProperty<TState, TRules> : never;
1165
1172
  type $InternalRegleResult = {
1166
1173
  valid: boolean;
@@ -1936,16 +1943,23 @@ type RegleRuleTypeReturn<TValue, TParams extends [...any[]]> = {
1936
1943
  params: [...TParams];
1937
1944
  };
1938
1945
 
1939
- interface CommonComparationOptions {
1946
+ interface CommonComparisonOptions {
1940
1947
  /**
1941
1948
  * Change the behaviour of the rule to check only if the value is equal in addition to be strictly superior or inferior
1942
1949
  * @default true
1943
1950
  */
1944
1951
  allowEqual?: boolean;
1945
1952
  }
1953
+ interface CommonAlphaOptions {
1954
+ /**
1955
+ * Allow symbols in alphabetical-like rules (like "_")
1956
+ * @default true
1957
+ */
1958
+ allowSymbols?: boolean;
1959
+ }
1946
1960
  type DefaultValidators = {
1947
- alpha: RegleRuleWithParamsDefinition<string, [allowSymbols?: boolean | undefined]>;
1948
- alphaNum: RegleRuleWithParamsDefinition<string | number, [allowSymbols?: boolean | undefined]>;
1961
+ alpha: RegleRuleWithParamsDefinition<string, [options?: CommonAlphaOptions | undefined]>;
1962
+ alphaNum: RegleRuleWithParamsDefinition<string | number, [options?: CommonAlphaOptions | undefined]>;
1949
1963
  between: RegleRuleWithParamsDefinition<number, [min: Maybe<number>, max: Maybe<number>]>;
1950
1964
  checked: RegleRuleDefinition<boolean, [], false, boolean, boolean>;
1951
1965
  contains: RegleRuleWithParamsDefinition<string, [part: Maybe<string>], false, boolean>;
@@ -1984,14 +1998,14 @@ type DefaultValidators = {
1984
1998
  macAddress: RegleRuleWithParamsDefinition<string, [separator?: string | undefined], false, boolean>;
1985
1999
  maxLength: RegleRuleWithParamsDefinition<string | any[] | Record<PropertyKey, any>, [
1986
2000
  count: number,
1987
- options?: CommonComparationOptions
2001
+ options?: CommonComparisonOptions
1988
2002
  ], false, boolean>;
1989
- maxValue: RegleRuleWithParamsDefinition<number, [count: number, options?: CommonComparationOptions], false, boolean>;
2003
+ maxValue: RegleRuleWithParamsDefinition<number, [count: number, options?: CommonComparisonOptions], false, boolean>;
1990
2004
  minLength: RegleRuleWithParamsDefinition<string | any[] | Record<PropertyKey, any>, [
1991
2005
  count: number,
1992
- options?: CommonComparationOptions
2006
+ options?: CommonComparisonOptions
1993
2007
  ], false, boolean>;
1994
- minValue: RegleRuleWithParamsDefinition<number, [count: number, options?: CommonComparationOptions], false, boolean>;
2008
+ minValue: RegleRuleWithParamsDefinition<number, [count: number, options?: CommonComparisonOptions], false, boolean>;
1995
2009
  nativeEnum: RegleRuleDefinition<string | number, [enumLike: EnumLike], false, boolean, string | number>;
1996
2010
  numeric: RegleRuleDefinition<string | number, [], false, boolean, string | number>;
1997
2011
  oneOf: RegleRuleDefinition<string | number, [options: (string | number)[]], false, boolean, string | number>;
@@ -2324,6 +2338,7 @@ interface $InternalRegleRuleStatus {
2324
2338
  $fieldPending: boolean;
2325
2339
  $fieldCorrect: boolean;
2326
2340
  $fieldError: boolean;
2341
+ $maybePending: boolean;
2327
2342
  $validator(value: any, ...args: any[]): RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition>;
2328
2343
  $parse(): Promise<boolean>;
2329
2344
  $reset(): void;
@@ -2386,7 +2401,7 @@ interface SuperCompatibleRegleStatus extends SuperCompatibleRegleCommonStatus {
2386
2401
  $extractDirtyFields: (filterNullishValues?: boolean) => Record<string, any>;
2387
2402
  $validate?: () => Promise<SuperCompatibleRegleResult>;
2388
2403
  }
2389
- type SuperCompatibleRegleRuleStatus = Omit<$InternalRegleRuleStatus, '$haveAsync' | '$validating' | '$fieldDirty' | '$fieldInvalid' | '$fieldPending' | '$fieldCorrect' | '$fieldError' | '$unwatch' | '$watch'>;
2404
+ type SuperCompatibleRegleRuleStatus = Omit<$InternalRegleRuleStatus, '$haveAsync' | '$validating' | '$fieldDirty' | '$fieldInvalid' | '$fieldPending' | '$fieldCorrect' | '$fieldError' | '$unwatch' | '$watch' | '$maybePending'>;
2390
2405
  type SuperCompatibleRegleCommonStatus = Omit<RegleCommonStatus, '$pending'> & {
2391
2406
  $pending?: boolean;
2392
2407
  };
@@ -2418,9 +2433,6 @@ type SuperCompatibleRegleCollectionErrors = $InternalRegleCollectionErrors;
2418
2433
  *
2419
2434
  * It will automatically detect if the rule is async
2420
2435
  *
2421
- * @typeParam TValue - The input value the rule should receive
2422
- * @typeParam TParams - Tuple declaration of the rule parameters (if any)
2423
- *
2424
2436
  *
2425
2437
  * @param definition - The rule processors object
2426
2438
  *
@@ -2591,4 +2603,4 @@ declare function variantToRef<TRoot extends RegleStatus<{}, any, any>, const TKe
2591
2603
  [K in TKey]: RegleFieldStatus<TValue, any, any>;
2592
2604
  }> | undefined>;
2593
2605
 
2594
- export { type $InternalRegleStatus, type AllRulesDeclarations, type CommonComparationOptions, type DeepMaybeRef, type DeepReactiveState, type DefaultValidatorsTree, type FormRuleDeclaration, 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 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 RegleValidationErrors, type RegleValidationGroupEntry, type RegleValidationGroupOutput, type RegleRuleTree as RegleValidationTree, type ResolvedRegleBehaviourOptions, type ScopedInstancesRecord, type ScopedInstancesRecordLike, type SuperCompatibleRegleCollectionErrors, type SuperCompatibleRegleCollectionStatus, type SuperCompatibleRegleFieldStatus, type SuperCompatibleRegleResult, type SuperCompatibleRegleRoot, type SuperCompatibleRegleRuleStatus, type SuperCompatibleRegleStatus, type Unwrap, type UnwrapRegleUniversalParams, type UnwrapRuleWithParams, createRule, createScopedUseRegle, createVariant, defineRegleConfig, extendRegleConfig, flatErrors, inferRules, mergeRegles, narrowVariant, unwrapRuleParameters, useCollectScope, useRegle, useRootStorage, useScopedRegle, variantToRef };
2606
+ export { type $InternalRegleStatus, type AllRulesDeclarations, type CommonAlphaOptions, type CommonComparisonOptions, type DeepMaybeRef, type DeepReactiveState, type DefaultValidatorsTree, type FormRuleDeclaration, 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 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 RegleValidationErrors, type RegleValidationGroupEntry, type RegleValidationGroupOutput, type RegleRuleTree as RegleValidationTree, type ResolvedRegleBehaviourOptions, type ScopedInstancesRecord, type ScopedInstancesRecordLike, type SuperCompatibleRegleCollectionErrors, type SuperCompatibleRegleCollectionStatus, type SuperCompatibleRegleFieldStatus, type SuperCompatibleRegleResult, type SuperCompatibleRegleRoot, type SuperCompatibleRegleRuleStatus, type SuperCompatibleRegleStatus, type Unwrap, type UnwrapRegleUniversalParams, type UnwrapRuleWithParams, createRule, createScopedUseRegle, createVariant, defineRegleConfig, extendRegleConfig, flatErrors, inferRules, mergeRegles, narrowVariant, unwrapRuleParameters, useCollectScope, useRegle, useRootStorage, useScopedRegle, variantToRef };
@@ -1,2 +1,2 @@
1
- import {effectScope,computed,toValue,ref,watch,getCurrentInstance,onMounted,reactive,getCurrentScope,onScopeDispose,isRef,shallowRef,toRef,unref,watchEffect,version}from'vue';function te(e,t=true){return e==null?true:e instanceof Date?isNaN(e.getTime()):e.constructor.name=="File"||e.constructor.name=="FileList"?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 Et=Symbol("regle-rule");function nr(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 k(e){let t=e,n={}.toString.call(e).slice(8,-1);if(n=="Set"&&(t=new Set([...e].map(r=>k(r)))),n=="Map"&&(t=new Map([...e].map(r=>[k(r[0]),k(r[1])]))),n=="Date"&&(t=new Date(e.getTime())),n=="RegExp"&&(t=RegExp(e.source,nr(e))),n=="Array"||n=="Object"){t=Array.isArray(e)?[]:{};for(let r in e)t[r]=k(e[r]);}return t}function N(e){return e&&(e instanceof Date||e.constructor.name=="File"||e.constructor.name=="FileList")?false:typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ye(e,...t){for(var n=[].slice.call(arguments),r,a=n.length;r=n[a-1],a--;)if(!r||typeof r!="object"&&typeof r!="function")throw new Error("expected object, got "+r);for(var o=n[0],s=n.slice(1),i=s.length,a=0;a<i;a++){var y=s[a];for(var d in y)o[d]=y[d];}return o}function Qe(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 _e(e,t,n){let r,a=(...o)=>new Promise(s=>{clearTimeout(r),r=setTimeout(()=>{r=void 0,Promise.resolve(e.apply(this,[...o])).then(s);},t);});return a.cancel=()=>{clearTimeout(r),r=void 0;},a}var Xe={Inline:"__inline",Async:"__async"};function xt(e,t){return e.some(n=>n[t])}function Dt(e,t){return e.reduce((n,r)=>{let a=r[t]||[];return n.concat(a)},[])}function re(e){try{return e.map(t=>toValue(t))}catch{return []}}function Ct(e){return e.map(t=>t instanceof Function?computed(t):isRef(t)?t:toRef(()=>t))}function It(e){let r=e.toString().replace(/\/\/.*$/gm,"").replace(/\/\*[\s\S]*?\*\//g,"").match(/^(?:async\s*)?(?:function\b.*?\(|\((.*?)\)|(\w+))\s*=>|\((.*?)\)\s*=>|function.*?\((.*?)\)|\((.*?)\)/);return r?(r[0]||r[1]||r[2]||r[3]||r[4]||"").split(",").map(s=>s.trim()).filter(s=>s.length>0).length:0}function Ze(e,...t){let{validator:n,type:r}=e,a=r===Xe.Async||n.constructor.name==="AsyncFunction";return {...{validator(i,...y){return e.validator(i,...re(y.length?y:t))},message(i){return typeof e.message=="function"?e.message({...i,$params:re(i?.$params?.length?i.$params:t)}):e.message},active(i){return typeof e.active=="function"?e.active({...i,$params:re(i?.$params?.length?i.$params:t)}):e.active??true},tooltip(i){return typeof e.tooltip=="function"?e.tooltip({...i,$params:re(i?.$params?.length?i.$params:t)}):e.tooltip??[]},exec(i){let y=e.validator(i,...re(t)),d;return y instanceof Promise?y.then(T=>(d=T,typeof d=="object"&&"$valid"in d?d.$valid:typeof d=="boolean"?d:false)):(d=y,typeof d=="object"&&"$valid"in d?d.$valid:typeof d=="boolean"?d: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:Ct(t),_brand:Et}}function et(e){if(typeof e.validator=="function"){let n=Ze(e,...[]),r=e.async??e.validator.constructor.name==="AsyncFunction";if(It(e.validator)>1){let a=function(...o){return Ze(e,...o)};return a.validator=n.validator,a.message=n.message,a.active=n.active,a.tooltip=n.tooltip,a.type=n.type,a.exec=n.exec,a._validator=n.validator,a._message=n.message,a._active=n.active,a._tooltip=n.tooltip,a._type=e.type,a._message_pacthed=false,a._tooltip_pacthed=false,a._async=r,a}else return n}throw new Error("[createRule] validator must be a function")}function tt(){let e=shallowRef(new Map),t=shallowRef(new Map),n=shallowRef(new Map),r=shallowRef(new Map),a=shallowRef(new Map),o=shallowRef(new Map);function s(S){let E=t.value.get(S);if(E)return E;{let D=ref({});return t.value.set(S,D),D}}function i(S){let E=n.value.get(S);if(E)return E;{let D=ref([]);return n.value.set(S,D),D}}function y(S,E,D){o.value.set(`${S}-${E}`,D);}function d(S,E){return o.value.get(`${S}-${E}`)}function T(S,E){S&&E!=null&&o.value.delete(`${S}-${E}`);}function V(S,E){r.value.set(S,E);}function C(S){return r.value.get(S)??false}function j(S,E){e.value.set(S,E);}function w(S,E){let D=e.value.get(S);return D?O(E,D)?{valid:true}:{valid:false}:void 0}function O(S,E){let D=Object.keys(E),R=Object.keys(S);return R.length!==D.length||!R.every(f=>D.includes(f))?false:R.every(f=>{let u=S[f],b=E[f];return !b||!u||typeof u=="function"||typeof b=="function"||typeof u=="number"||typeof u=="boolean"?false:u._params?u._params?.every((M,q)=>{if(typeof b=="number"||typeof b=="boolean")return true;{let U=re(b._params),X=re(u._params);return U?.[q]===X?.[q]}}):true})}function l(S){let E=a.value.get(S);if(E)return E;{let D=ref(false),R=ref(true),h=ref({}),f=ref(false);return a.value.set(S,{$pending:D,$valid:R,$metadata:h,$validating:f}),{$pending:D,$valid:R,$metadata:h,$validating:f}}}return getCurrentScope()&&onScopeDispose(()=>{e.value.clear(),t.value.clear(),n.value.clear(),r.value.clear(),a.value.clear(),o.value.clear();}),{addRuleDeclEntry:j,setDirtyEntry:V,checkRuleDeclEntry:w,getDirtyState:C,trySetRuleStatusRef:l,getFieldsEntry:s,getCollectionsEntry:i,getArrayStatus:d,addArrayStatus:y,deleteArrayStatus:T,arrayStatusStorage:o}}function Ne(e){return N(e.value)}function rt(e,t,n){let r=effectScope(),a;return e instanceof Function?a=r.run(()=>e(t,n??0)):a=e,{scope:r,unwrapped:a}}var Pe={LessThan:-1,EqualTo:0,GreaterThan:1};function Rr(e,t){let n=String(e).split("."),r=String(t).split(".");for(let a=0;a<Math.min(n.length,r.length);a++){let o=Number(n[a]),s=Number(r[a]);if(o>s)return Pe.GreaterThan;if(s>o)return Pe.LessThan;if(!isNaN(o)&&isNaN(s))return Pe.GreaterThan;if(isNaN(o)&&!isNaN(s))return Pe.LessThan}return Pe.EqualTo}var ke=Rr(version,"3.5.0")!==-1;function dr(){return Math.floor(Math.random()*Date.now()).toString()}function Se(){return typeof window>"u"?dr():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function Ot(e){return getCurrentScope()?(onScopeDispose(e),true):false}function wt(e){let t=false,n,r=effectScope(true);return (...a)=>(t||(n=r.run(()=>e(...a)),t=true),n)}function Ge(e,t){return Ne(e)||N(t.value)&&!te(t.value)&&!Object.entries(t.value).some(([n,r])=>me(r)||typeof r=="function")}function Pt(e,t,n=false){return !!e.value&&N(e.value)&&"$each"in e.value||n&&Array.isArray(t.value)&&t.value.some(N)||Array.isArray(t.value)&&t.value.some(N)}function Ue(e){return !!e.value&&N(e.value)}function me(e){return N(e)&&"_validator"in e}function Me(e){return typeof e.value=="function"?"_validator"in e.value:true}function Mt(e){return N(e)&&"$fields"in e}function jt(e){return !!e&&"$rules"in e}function nt({field:e,silent:t=false}){return Object.entries(e.$rules??{}).map(([n,r])=>t&&!r.$valid||!r.$valid&&e.$error&&!r.$validating?r.$message:null).filter(n=>!!n).reduce((n,r)=>typeof r=="string"?n?.concat([r]):n?.concat(r),[]).concat(e.$error?e.$externalErrors??[]:[]).concat(e.$error?e.$schemaErrors??[]:[])}function At({field:e}){return Object.entries(e.$rules??{}).map(([t,n])=>n.$tooltip).filter(t=>!!t).reduce((t,n)=>typeof n=="string"?t?.concat([n]):t?.concat(n),[])}function Vt(e){return N(e)&&"$each"in e}function at(e,t){let{includePath:n=false}=t??{};if(Array.isArray(e)&&e.every(r=>!N(r)))return e;if(Vt(e)){let r=n?e.$self?.map(o=>({error:o,path:""}))??[]:e.$self??[],a=e.$each?.map(o=>We(o,n))??[];return r?.concat(a.flat())}else return Object.entries(e).map(([r,a])=>We(a,n,[r])).flat()}function We(e,t=false,n){let r=t&&!n?[]:n;if(Array.isArray(e)&&e.every(a=>!N(a)))return t?e.map(a=>({error:a,path:r?.join(".")??""})):e;if(Vt(e)){let a=r?.length?e.$self?.map(s=>({error:s,path:r.join(".")}))??[]:e.$self??[],o=e.$each?.map((s,i)=>We(s,t,r?.concat(i.toString())))??[];return a?.concat(o.flat())}else return Object.entries(e).map(([a,o])=>We(o,t,r?.concat(a))).flat()}function Ft({customMessages:e,rule:t,ruleKey:n,state:r,path:a,storage:o,$debounce:s,modifiers:i}){let y=effectScope(),d={},T,V=ref(false),{$pending:C,$valid:j,$metadata:w,$validating:O}=o.trySetRuleStatusRef(`${a}.${n}`);function l(){y=effectScope(),d=y.run(()=>{let u=ref(false),b=ref(false),M=ref(true),q=ref(false),U=ref(false),X=computed(()=>({$value:r.value,$error:b.value,$dirty:u.value,$pending:q.value,$correct:U.value,$invalid:M.value,$rule:{$valid:j.value,$invalid:!j.value,$pending:C.value},$params:m.value,...w.value})),oe=computed(()=>Me(t)?typeof t.value.active=="function"?t.value.active(X.value):!!t.value.active:true);function I(x){let A="",L=e?e[n]?.[x]:void 0;if(L&&(typeof L=="function"?A=L(X.value):A=L),Me(t)){let g=`_${x}_patched`;L&&!t.value[g]||(typeof t.value[x]=="function"?A=t.value[x](X.value):A=t.value[x]??"");}return A}let z=computed(()=>{let x=I("message");return te(x)&&(x="This field is not valid"),x}),ye=computed(()=>I("tooltip")),ue=computed(()=>Me(t)&&t.value.type?t.value.type:n),c=computed(()=>Me(t)?t.value.validator:t.value),m=computed(()=>typeof t.value=="function"?[]:re(t.value._params??[])),p=computed(()=>`${a}.${ue.value}`);return {$active:oe,$message:z,$type:ue,$validator:c,$params:m,$path:p,$tooltip:ye,$fieldCorrect:U,$fieldError:b,$fieldDirty:u,$fieldPending:q,$fieldInvalid:M}}),T=watch(d?.$params,()=>{(i.$autoDirty.value||i.$rewardEarly.value&&d.$fieldError.value)&&R();});}l();function S(){j.value=true,d.$fieldDirty.value&&(C.value=true);}async function E(){let u=false;try{let b=d.$validator.value;if(typeof b!="function")return console.error(`${a}: Incorrect rule format, it needs to be either a function or created with "createRule".`),!1;let M=b(r.value,...d.$params.value),q=r.value;S();let U;if(M instanceof Promise?U=await M:U=M,r.value!==q)return !0;if(typeof U=="boolean")u=U;else {let{$valid:X,...oe}=U;u=X,w.value=oe;}}catch{u=false;}finally{C.value=false;}return u}let D=_e(E,s??200);async function R(){try{O.value=!0;let u=!1;if(me(t.value)&&t.value._async)u=await D();else {let b=d.$validator.value,M=b(r.value,...d.$params.value);if(M instanceof Promise)console.warn('You used a async validator function on a non-async rule, please use "async await" or the "withAsync" helper');else if(M!=null)if(typeof M=="boolean")u=M;else {let{$valid:q,...U}=M;u=q,w.value=U;}}return j.value=u,u}catch{return false}finally{O.value=false;}}function h(){j.value=true,w.value={},C.value=false,O.value=false,l();}function f(){T(),y.stop(),y=effectScope();}return reactive({...d,$pending:C,$valid:j,$metadata:w,$haveAsync:V,$validating:O,$parse:R,$unwatch:f,$watch:l,$reset:h})}function be({state:e,rulesDef:t,customMessages:n,path:r,fieldName:a,storage:o,options:s,externalErrors:i,schemaErrors:y,schemaMode:d,onUnwatch:T,$isArray:V,initialState:C,shortcuts:j,onValidate:w}){let O=effectScope(),l,S=[],E,D,R,h,f,u=()=>{};function b(){let $=t.value,_=o.checkRuleDeclEntry(r,$);z.value=Object.fromEntries(Object.entries($).filter(([v])=>v.startsWith("$"))),U(),I.value=Object.fromEntries(Object.entries(t.value).filter(([v])=>!v.startsWith("$")).map(([v,ee])=>{if(ee){let se=toRef(()=>ee);return [v,Ft({modifiers:{$autoDirty:l.$autoDirty,$rewardEarly:l.$rewardEarly},customMessages:n,rule:se,ruleKey:v,state:e,path:r,storage:o,$debounce:z.value.$debounce})]}return []}).filter(v=>!!v.length)),l.processShortcuts(),M(),_?.valid!=null&&(l.$dirty.value=o.getDirtyState(r),(l.$dirty.value&&l.$autoDirty.value||l.$rewardEarly.value&&l.$error.value)&&u()),o.addRuleDeclEntry(r,$);}function M(){u=l.$debounce.value?_e(oe,l.$debounce.value??l.$haveAnyAsyncRule?100:0):oe;}function q(){I.value&&Object.entries(I.value).forEach(([$,_])=>{_.$unwatch();}),R(),f?.(),l.$dirty.value&&o.setDirtyEntry(r,l.$dirty.value),E?.(),D?.(),O.stop(),O=effectScope(),S.forEach($=>$.stop()),S=[],T?.(),h?.();}function U(){I.value&&Object.entries(I.value).forEach(([$,_])=>{_.$watch();}),l=O.run(()=>{let $=ref(false),_=ref(false),v=computed(()=>$.value),ee=computed(()=>z.value.$debounce),se=computed(()=>z.value.$lazy!=null?z.value.$lazy:unref(s.lazy)!=null?unref(s.lazy):false),le=computed(()=>z.value.$rewardEarly!=null?z.value.$rewardEarly:unref(s.rewardEarly)!=null?unref(s.rewardEarly):false),W=computed(()=>z.value.$clearExternalErrorsOnChange!=null?z.value.$clearExternalErrorsOnChange:unref(s.clearExternalErrorsOnChange)!=null?unref(s.clearExternalErrorsOnChange):true),P=computed(()=>z.value.$autoDirty!=null?z.value.$autoDirty:unref(s.autoDirty)!=null?unref(s.autoDirty):!le.value),H=computed(()=>Object.entries(I.value).some(([ie,Q])=>Q.$validating)),Oe=computed({get:()=>e.value,set(ie){E(),e.value=ie,X();}}),Ve=computed(()=>ge.value&&!we.value&&$.value),pt=computed(()=>nt({field:{$rules:I.value,$error:Ve.value,$externalErrors:i?.value,$schemaErrors:y?.value}})),mt=computed(()=>nt({field:{$rules:I.value,$error:Ve.value,$externalErrors:i?.value,$schemaErrors:y?.value},silent:true})),qe=computed(()=>$.value?C.value instanceof Date&&e.value instanceof Date?Qe(C.value).getDate()!==Qe(e.value).getDate():C.value==null?!!e.value:Array.isArray(e.value)&&Array.isArray(C.value)?e.value.length!==C.value.length:C.value!==e.value:false),yt=computed(()=>qe.value),gt=computed(()=>At({field:{$rules:I.value}})),vt=computed(()=>P.value?v.value&&!(ge.value||we.value):!(ge.value||we.value)),we=computed(()=>_.value||!le.value?Object.entries(I.value).some(([ie,Q])=>Q.$pending):false),ge=computed(()=>i?.value?.length||y?.value?.length?true:Fe.value?false:!le.value||le.value&&_.value?Object.entries(I.value).some(([ie,Q])=>!Q.$valid):false),$t=computed(()=>a),Fe=computed(()=>!!(te(I.value)&&!d)),St=computed(()=>i?.value?.length||Fe.value?false:$.value&&!te(e.value)&&!H.value?d?!y?.value?.length:Object.values(I.value).some(Q=>Q.$active)?Object.values(I.value).filter(Q=>Q.$active).every(Q=>Q.$valid):false:false),tr=computed(()=>Object.entries(I.value).some(([ie,Q])=>Q.$haveAsync));function rr(){j?.fields&&Object.entries(j.fields).forEach(([ie,Q])=>{let ht=effectScope();Tt[ie]=ht.run(()=>{let bt=ref();return watchEffect(()=>{bt.value=Q(reactive({$dirty:$,$externalErrors:i?.value??[],$value:e,$silentValue:Oe,$rules:I,$error:Ve,$pending:we,$invalid:ge,$correct:St,$errors:pt,$ready:vt,$silentErrors:mt,$anyDirty:v,$tooltips:gt,$name:$t,$inactive:Fe,$edited:qe,$anyEdited:yt}));}),bt}),S.push(ht);});}let Tt={};return watch(ge,ie=>{ie||(_.value=false);}),{$error:Ve,$pending:we,$invalid:ge,$correct:St,$debounce:ee,$lazy:se,$errors:pt,$ready:vt,$silentErrors:mt,$rewardEarly:le,$autoDirty:P,$clearExternalErrorsOnChange:W,$anyDirty:v,$edited:qe,$anyEdited:yt,$name:$t,$haveAnyAsyncRule:tr,$shortcuts:Tt,$validating:H,$tooltips:gt,$dirty:$,triggerPunishment:_,processShortcuts:rr,$silentValue:Oe,$inactive:Fe}}),X(),R=watch(l.$dirty,$=>{o.setDirtyEntry(r,$),Object.values(I.value).forEach(_=>{_.$fieldDirty=$;});}),f=watch([l.$error,l.$correct,l.$invalid,l.$pending],()=>{Object.values(I.value).forEach($=>{$.$fieldError=l.$error.value,$.$fieldInvalid=l.$invalid.value,$.$fieldPending=l.$pending.value,$.$fieldCorrect=l.$correct.value;});}),D=watch(l.$invalid,$=>{l.$rewardEarly.value&&!$&&(l.triggerPunishment.value=false);}),h=watch(l.$haveAnyAsyncRule,M);}function X(){E=watch(e,()=>{l.$autoDirty.value&&(l.$dirty.value||(l.$dirty.value=true)),t.value instanceof Function&&b(),(l.$autoDirty.value||l.$rewardEarly.value&&l.$error.value)&&u(),l.$rewardEarly.value!==true&&l.$clearExternalErrorsOnChange.value&&p();},{deep:V?true:ke?1:true});}function oe(){Object.values(I.value).forEach($=>{$.$parse();});}let I=ref({}),z=ref({});b();function ye($,_){if(p(),l.$dirty.value=false,l.triggerPunishment.value=false,o.setDirtyEntry(r,false),!_)if($?.toInitialState)e.value=k(C);else if($?.toState){let v;typeof $?.toState=="function"?v=$?.toState():v=$?.toState,C.value=k(v),e.value=k(v);}else C.value=N(e.value)?k(e.value):Array.isArray(e.value)?[...e.value]:e.value;$?.clearExternalErrors&&p(),_||Object.entries(I.value).forEach(([v,ee])=>{ee.$reset();}),!l.$lazy.value&&l.$autoDirty.value&&Object.values(I.value).forEach(v=>v.$parse());}function ue($=true,_=false){l.$dirty.value||(l.$dirty.value=true),_&&$?(l.$autoDirty.value||l.$rewardEarly.value&&l.$error.value)&&u():$&&u();}async function c(){try{if(d)return w?(ue(!1),w()):{valid:!1,data:e.value};let $=e.value;if(l.triggerPunishment.value=!0,!l.$dirty.value)l.$dirty.value=!0;else if(l.$autoDirty.value&&l.$dirty.value&&!l.$pending.value)return {valid:!l.$error.value,data:$};return d?{valid:!y?.value?.length,data:$}:te(I.value)?{valid:!0,data:$}:{valid:(await Promise.allSettled(Object.entries(I.value).map(([ee,se])=>se.$parse()))).every(ee=>ee.status==="fulfilled"?ee.value===!0:!1),data:$}}catch{return {valid:false,data:e.value}}}function m($=true){return l.$dirty.value?e.value:$?{_null:true}:null}function p(){i?.value?.length&&(i.value=[]);}!l.$lazy.value&&!l.$dirty.value&&l.$autoDirty.value&&u();let{$shortcuts:x,$validating:A,$autoDirty:L,$rewardEarly:g,$clearExternalErrorsOnChange:F,$haveAnyAsyncRule:J,$debounce:Z,$lazy:Y,triggerPunishment:fe,...ce}=l;return reactive({...ce,$externalErrors:i,$value:e,$rules:I,...x,$reset:ye,$touch:ue,$validate:c,$unwatch:q,$watch:U,$extractDirtyFields:m,$clearExternalErrors:p})}function st({$id:e,path:t,index:n,options:r,storage:a,stateValue:o,customMessages:s,rules:i,externalErrors:y,schemaErrors:d,initialState:T,shortcuts:V,fieldName:C,schemaMode:j}){let w=i.$key?i.$key:Se(),O=`${t}.${String(w)}`;typeof o.value=="object"&&o.value!=null&&(o.value.$id?O=`${t}.${o.value.$id}`:Object.defineProperties(o.value,{$id:{value:w,enumerable:false,configurable:false,writable:false}}));let l=toRef(y?.value??[],n),S=computed(()=>d?.value?.[n]),E=Ee({state:o,rulesDef:toRef(()=>i),customMessages:s,path:O,storage:a,options:r,externalErrors:l,schemaErrors:S,initialState:T,shortcuts:V,fieldName:C,schemaMode:j});if(E){let D=o.value?.$id;E.$id=D??String(w),a.addArrayStatus(e,E.$id,E);}return E}function Gt({state:e,rulesDef:t,customMessages:n,path:r,storage:a,options:o,externalErrors:s,schemaErrors:i,schemaMode:y,initialState:d,shortcuts:T,fieldName:V}){let C=effectScope(),j,w=effectScope(),O,l=[];if(!Array.isArray(e.value)&&!t.value.$each)return;let S=ref(),E=ref(e.value),D,R=ref({}),h=a.getCollectionsEntry(r);O=w.run(()=>({isPrimitiveArray:computed(()=>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=>me(m)||typeof m=="function"):false)})),f(),M();function f(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?(S.value=Se(),Object.defineProperties(e.value,{$id:{value:S.value,enumerable:false,configurable:false,writable:false}})):e.value?.$id&&(S.value=e.value.$id)),E.value=R.value.$value,Array.isArray(e.value)&&!O.isPrimitiveArray.value?h.value=e.value.filter(c=>typeof c=="object").map((c,m)=>{let{scope:p,unwrapped:x}=rt(t.value.$each,toRef(()=>c),m);p&&l.push(p);let A=toRef(d.value??[],m),L=toRef(s?.value??{},"$each"),g=computed(()=>i?.value?.$each),F=st({$id:S.value,path:r,customMessages:n,rules:x??{},stateValue:toRef(()=>c),index:m,options:o,storage:a,externalErrors:L,schemaErrors:g,initialState:A,shortcuts:T,fieldName:V,schemaMode:y});return F||null}).filter(c=>!!c):h.value=[],R.value=be({state:e,rulesDef:t,customMessages:n,path:r,storage:a,options:o,externalErrors:toRef(s?.value??{},"$self"),schemaErrors:computed(()=>i?.value?.$self),$isArray:true,initialState:d,shortcuts:T,fieldName:V,schemaMode:y});}function u(){if(Array.isArray(e.value)&&!O.isPrimitiveArray.value){let c=k(h.value);h.value=e.value.filter(m=>typeof m=="object").map((m,p)=>{let x=toRef(()=>m);if(m.$id&&h.value.find(A=>A.$id===m.$id)){let A=a.getArrayStatus(S.value,m.$id);return A?(A.$value=x,A):null}else {let{scope:A,unwrapped:L}=rt(t.value.$each,x,p);A&&l.push(A);let g=toRef(s?.value??{},"$each"),F=computed(()=>i?.value?.$each??[]),J=st({$id:S.value,path:r,customMessages:n,rules:L??{},stateValue:x,index:p,options:o,storage:a,externalErrors:g,schemaErrors:F,initialState:toRef(d.value??[],p),shortcuts:T,fieldName:V,schemaMode:y});return J||null}}).filter(m=>!!m),c.filter(m=>!e.value?.find(p=>m.$id===p.$id)).forEach((m,p)=>{a.deleteArrayStatus(S.value,p.toString());});}else h.value=[];}function b(){D=watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?f():u();},{deep:ke?1:true,flush:"pre"});}function M(){b(),C=effectScope(),j=C.run(()=>{let c=computed({get:()=>e.value,set(v){D(),e.value=v,b();}}),m=computed(()=>R.value.$dirty&&(!h.value.length||h.value.every(v=>v.$dirty))),p=computed(()=>R.value.$anyDirty||h.value.some(v=>v.$anyDirty)),x=computed(()=>R.value.$invalid||h.value.some(v=>v.$invalid)),A=computed(()=>(te(R.value.$rules)?true:R.value.$correct)&&(!h.value.length||h.value.every(v=>v.$correct||v.$anyDirty&&!v.$invalid))),L=computed(()=>R.value.$error||h.value.some(v=>v.$error)),g=computed(()=>!(x.value||F.value)),F=computed(()=>R.value.$pending||h.value.some(v=>v.$pending)),J=computed(()=>!!h.value.length&&h.value.every(v=>v.$edited)),Z=computed(()=>R.value.$anyEdited||h.value.some(v=>v.$anyEdited)),Y=computed(()=>({$self:R.value.$errors,$each:h.value.map(v=>v.$errors)})),fe=computed(()=>({$self:R.value.$silentErrors,$each:h.value.map(v=>v.$silentErrors)})),ce=computed(()=>V);function $(){T?.collections&&Object.entries(T?.collections).forEach(([v,ee])=>{let se=effectScope();_[v]=se.run(()=>{let le=ref();return watchEffect(()=>{le.value=ee(reactive({$dirty:m,$error:L,$silentValue:c,$pending:F,$invalid:x,$correct:A,$errors:Y,$ready:g,$silentErrors:fe,$anyDirty:p,$name:ce,$each:h,$self:R,$value:e,$edited:J,$anyEdited:Z}));}),le}),l.push(se);});}let _={};return $(),{$dirty:m,$anyDirty:p,$invalid:x,$correct:A,$error:L,$pending:F,$errors:Y,$silentErrors:fe,$ready:g,$name:ce,$shortcuts:_,$silentValue:c,$edited:J,$anyEdited:Z}}),O.isPrimitiveArray.value&&t.value.$each&&console.warn(`${r} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`);}function q(){D&&D(),R.value&&R.value.$unwatch(),h.value&&h.value.forEach(c=>{"$dirty"in c&&c.$unwatch();}),C.stop(),C=effectScope(),w.stop(),w=effectScope(true),l.forEach(c=>c.stop()),l=[];}function U(c=true,m=false){R.value.$touch(c,m),h.value.forEach(p=>{p.$touch(c,m);});}function X(c,m){if(q(),!m)if(c?.toInitialState)e.value=k(d.value);else if(c?.toState){let p;typeof c?.toState=="function"?p=c?.toState():p=c?.toState,d.value=k(p),e.value=k(p);}else d.value=k(e.value);c?.clearExternalErrors&&I(),R.value.$reset(),h.value.forEach(p=>{p.$reset(c,true);}),m||f();}async function oe(){let c=e.value;try{return {valid:(await Promise.allSettled([R.value.$validate(),...h.value.map(x=>x.$validate())])).every(x=>x.status==="fulfilled"?x.value.valid===!0:!1),data:c}}catch{return {valid:false,data:c}}}function I(){R.value.$clearExternalErrors(),h.value.forEach(c=>{c.$clearExternalErrors();});}function z(c=true){let m=h.value.map(p=>{if(Mt(p))return p.$extractDirtyFields(c)});return c&&m.every(p=>te(p))&&(m=[]),m}let{$shortcuts:ye,...ue}=j;return reactive({$self:R,...ue,...ye,$each:h,$value:e,$validate:oe,$unwatch:q,$watch:M,$touch:U,$reset:X,$extractDirtyFields:z,$clearExternalErrors:I})}function Le({rulesDef:e,state:t,path:n="",rootRules:r,externalErrors:a,schemaErrors:o,rootSchemaErrors:s,validationGroups:i,initialState:y,fieldName:d,...T}){let V=effectScope(),C,j=[],w=null,O=null,l=null,S=null;async function D(c=true){let m=Object.entries(e.value),p=Object.fromEntries(m.filter(([g,F])=>!!F).map(([g,F])=>{if(F){let J=toRef(t.value??{},g),Z=toRef(()=>F),Y=toRef(a?.value??{},g),fe=computed(()=>o?.value?.[g]),ce=toRef(y?.value??{},g);return [g,Ee({state:J,rulesDef:Z,path:n?`${n}.${g}`:g,externalErrors:Y,schemaErrors:fe,initialState:ce,fieldName:g,...T})]}return []})),x=Object.fromEntries(Object.entries(unref(a)??{}).filter(([g,F])=>!(g in e.value)&&!!F).map(([g])=>{let F=toRef(t.value??{},g),J=toRef(a?.value??{},g),Z=computed(()=>o?.value?.[g]),Y=toRef(y?.value??{},g);return [g,Ee({state:F,rulesDef:computed(()=>({})),path:n?`${n}.${g}`:g,externalErrors:J,schemaErrors:Z,initialState:Y,fieldName:g,...T})]})),A=Object.fromEntries(Object.entries(unref(o)??{}).map(([g])=>{let F=toRef(t.value??{},g),J=toRef(a?.value??{},g),Z=computed(()=>o?.value?.[g]),Y=toRef(y?.value??{},g);return [g,Ee({state:F,rulesDef:computed(()=>({})),path:n?`${n}.${g}`:g,externalErrors:J,schemaErrors:Z,initialState:Y,fieldName:g,...T})]})),L=Object.fromEntries(Object.entries(t.value??{}).filter(([g])=>!(g in e.value)&&!(g in(x??{}))&&!(g in(A??{}))).map(([g])=>{let F=toRef(t.value??{},g),J=toRef(a?.value??{},g),Z=computed(()=>o?.value?.[g]),Y=toRef(y?.value??{},g);return [g,Ee({state:F,rulesDef:computed(()=>({})),path:n?`${n}.${g}`:g,externalErrors:J,schemaErrors:Z,initialState:Y,fieldName:g,...T})]}));R.value={...p,...x,...A,...L},c&&u();}let R=T.storage.getFieldsEntry(n);D();function h(){a&&(l=watch(a,()=>{b(),D();},{deep:true}));}function f(){S=watch(t,()=>{b(),D(),U(true,true);},{flush:"sync"});}function u(){r&&(w?.(),w=watch(r,()=>{b(),D();},{deep:true,flush:"pre"}),h()),s&&(O?.(),O=watch(s,()=>{b(),D();},{deep:true,flush:"post"})),f(),C=V.run(()=>{let c=computed({get:()=>t.value,set(W){b(),t.value=W,D();}}),m=computed(()=>!!Object.entries(R.value).length&&Object.entries(R.value).every(([W,P])=>P?.$dirty)),p=computed(()=>Object.entries(R.value).some(([W,P])=>P?.$anyDirty)),x=computed(()=>!!Object.entries(R.value).length&&Object.entries(R.value).some(([W,P])=>P?.$invalid)),A=computed(()=>{let W=Object.entries(R.value).filter(([P,H])=>jt(H)?!H.$inactive:true);return W.length?W.every(([P,H])=>H?.$correct||H.$anyDirty&&!H.$invalid):false}),L=computed(()=>!!Object.entries(R.value).length&&Object.entries(R.value).some(([W,P])=>P?.$error)),g=computed(()=>unref(T.options.rewardEarly)!=null?unref(T.options.rewardEarly):false),F=computed(()=>unref(T.options.autoDirty)!=null?unref(T.options.autoDirty):!g.value),J=computed(()=>F.value?p.value&&!(x.value||Y.value):!(x.value||Y.value)),Z=ref(false),Y=computed(()=>Z.value||Object.entries(R.value).some(([W,P])=>P?.$pending)),fe=computed(()=>Object.fromEntries(Object.entries(R.value).map(([W,P])=>[W,P?.$errors]))),ce=computed(()=>Object.fromEntries(Object.entries(R.value).map(([W,P])=>[W,P?.$silentErrors]))),$=computed(()=>!!Object.entries(R.value).length&&Object.entries(R.value).every(([W,P])=>P?.$edited)),_=computed(()=>Object.entries(R.value).some(([W,P])=>P?.$anyEdited)),v=computed(()=>d);function ee(){T.shortcuts?.nested&&Object.entries(T.shortcuts.nested).forEach(([W,P])=>{let H=effectScope();le[W]=H.run(()=>{let Oe=ref();return watchEffect(()=>{Oe.value=P(reactive({$dirty:m,$value:t,$silentValue:c,$error:L,$pending:Y,$invalid:x,$correct:A,$ready:J,$anyDirty:p,$name:v,$silentErrors:ce,$errors:fe,$fields:R,$edited:$,$anyEdited:_}));}),Oe}),j.push(H);});}let se=computed({get:()=>i?Object.fromEntries(Object.entries(i?.(R.value)??{}).map(([W,P])=>P.length?[W,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$correct"].map(H=>[H,xt(P,H)])),...Object.fromEntries(["$errors","$silentErrors"].map(H=>[H,Dt(P,H)]))}]:[])):{},set(){}}),le={};return ee(),{$dirty:m,$anyDirty:p,$invalid:x,$correct:A,$error:L,$pending:Y,$errors:fe,$silentErrors:ce,$ready:J,$name:v,$shortcuts:le,$groups:se,$silentValue:c,$edited:$,$anyEdited:_,$localPending:Z}});}function b(){w?.(),l?.(),S?.(),O?.(),j=[],C={},R.value&&Object.entries(R.value).forEach(([c,m])=>{m.$unwatch();});}function M(){Object.entries(R.value).forEach(([c,m])=>{m.$clearExternalErrors();});}function q(c,m){if(l?.(),b(),!m)if(c?.toInitialState)t.value=k({...y.value??{}});else if(c?.toState){let p;typeof c?.toState=="function"?p=c?.toState():p=c?.toState,y.value=k(p),t.value=k(p);}else y.value=k(t.value);Object.values(R.value).forEach(p=>{p.$reset(c,true);}),c?.clearExternalErrors&&M(),h(),m||D();}function U(c=true,m=false){Object.values(R.value).forEach(p=>{p.$touch(c,m);});}function X(c){return c.filter(([m,p])=>N(p)?!(p&&typeof p=="object"&&"_null"in p)&&!te(p):Array.isArray(p)?p.length:true)}function oe(c=true){let m=Object.entries(R.value).map(([p,x])=>[p,x.$extractDirtyFields(c)]);return c&&(m=X(m)),Object.fromEntries(m)}async function I(){try{if(T.schemaMode)return T.onValidate?(U(!1),C.$localPending.value=!0,T.onValidate()):{valid:!1,data:t.value};{let c=t.value;return {valid:(await Promise.allSettled(Object.values(R.value).map(x=>x.$validate()))).every(x=>x.status==="fulfilled"?x.value.valid===!0:!1),data:c}}}catch{return {valid:false,data:t.value}}finally{C.$localPending.value=false;}}let{$shortcuts:z,$localPending:ye,...ue}=C;return reactive({...ue,...z,$fields:R,$value:t,$reset:q,$touch:U,$validate:I,$unwatch:b,$watch:u,$clearExternalErrors:M,$extractDirtyFields:oe})}function Ee({rulesDef:e,...t}){if(Pt(e,t.state,t.schemaMode))return Gt({rulesDef:e,...t});if(Ge(t.state,e)){if(Ne(t.state))return Le({rulesDef:e,...t});{let r=effectScope().run(()=>{let s=toRef(t.state.value?t.state:ref({}));return watch(()=>t.state.value,i=>{s.value=i;},{deep:true}),watch(s,i=>{t.state.value=i;},{deep:true}),{fakeState:s}}),{state:a,...o}=t;return Le({rulesDef:e,...o,state:r.fakeState})}}else if(Ue(e))return be({rulesDef:e,...t})}function Ie({initialState:e,options:t,scopeRules:n,state:r,customRules:a,shortcuts:o,schemaErrors:s,schemaMode:i=false,onValidate:y}){let d=tt(),T=ref();return Ge(r,n)?T.value=Le({rootRules:n,rulesDef:n,state:r,customMessages:a?.(),storage:d,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:o,fieldName:"root",path:"",schemaErrors:s,rootSchemaErrors:s,schemaMode:i,onValidate:y}):Ue(n)&&(T.value=be({rulesDef:n,state:r,customMessages:a?.(),storage:d,options:t,externalErrors:t.externalErrors,initialState:e,shortcuts:o,fieldName:"root",path:"",schemaMode:i,schemaErrors:s,onValidate:y})),getCurrentScope()&&onScopeDispose(()=>{T.value?.$unwatch();}),reactive({regle:T})}function He(e,t,n){let r={autoDirty:t?.autoDirty,lazy:t?.lazy,rewardEarly:t?.rewardEarly,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange};function a(o,s,i){let y=isRef(s)?s:computed(typeof s=="function"?s:()=>s),d={...r,...i},T=isRef(o)?o:ref(o),V=ref(N(T.value)?{...k(T.value)}:k(T.value));return {r$:Ie({scopeRules:y,state:T,options:d,initialState:V,customRules:e,shortcuts:n}).regle}}return a}var ze=He();function Je(){function e(t,n){return n}return e}var ct=Je();function Lt({rules:e,modifiers:t,shortcuts:n}){let r=He(e,t,n);r.__config={rules:e,modifiers:t,shortcuts:n};let a=Je();return {useRegle:r,inferRules:a}}function Ht(e,{rules:t,modifiers:n,shortcuts:r}){let a=e.__config??{},o=()=>({...a.rules?.(),...t?.()}),s=a.modifiers&&n?Ye(a.modifiers,n):n,i=a.shortcuts&&r?Ye(a.shortcuts,r):r,y=He(o,s,i);y.__config={rules:o,modifiers:s,shortcuts:i};let d=Je();return {useRegle:y,inferRules:d}}function Ae(e,t){let n=t??false,r=computed({get:()=>n?Object.values(e).map(f=>f.$value):Object.fromEntries(Object.entries(e).map(([f,u])=>[f,u.$value])),set:f=>{n||typeof f=="object"&&Object.entries(f).forEach(([u,b])=>e[u].$value=b);}}),a=computed({get:()=>Object.fromEntries(Object.entries(e).map(([f,u])=>[f,u.$silentValue])),set:f=>{typeof f=="object"&&Object.entries(f).forEach(([u,b])=>e[u].$silentValue=b);}}),o=computed(()=>{let f=Object.entries(e);return !!f.length&&f.every(([u,b])=>b?.$dirty)}),s=computed(()=>Object.entries(e).some(([f,u])=>u?.$anyDirty)),i=computed(()=>Object.entries(e).some(([f,u])=>u?.$invalid)),y=computed(()=>{let f=Object.entries(e);return !!f.length&&f.every(([u,b])=>b?.$correct||b.$anyDirty&&!b.$invalid)}),d=computed(()=>Object.entries(e).some(([f,u])=>u?.$error)),T=computed(()=>{let f=Object.entries(e);return !!f.length&&f.every(([u,b])=>b?.$ready)}),V=computed(()=>Object.entries(e).some(([f,u])=>u?.$pending)),C=computed(()=>n?Object.entries(e).map(([f,u])=>u.$errors):Object.fromEntries(Object.entries(e).map(([f,u])=>[f,u.$errors]))),j=computed(()=>n?Object.entries(e).map(([f,u])=>u.$silentErrors):Object.fromEntries(Object.entries(e).map(([f,u])=>[f,u.$silentErrors]))),w=computed(()=>{let f=Object.entries(e);return !!f.length&&f.every(([u,b])=>b?.$edited)}),O=computed(()=>Object.entries(e).some(([f,u])=>u?.$anyEdited)),l=computed(()=>n?Object.values(e):e);function S(f){Object.values(e).forEach(u=>{u.$reset(f);});}function E(){Object.values(e).forEach(f=>{f.$touch();});}function D(f=true){return Object.values(e).map(u=>u.$extractDirtyFields(f))}function R(){Object.values(e).forEach(f=>{f.$clearExternalErrors();});}async function h(){try{let f=r.value;return {valid:(await Promise.allSettled(Object.values(e).map(M=>M.$validate()))).every(M=>M.status==="fulfilled"?M.value.valid===!0:!1),data:f}}catch{return {valid:false,data:r.value}}}return reactive({...!n&&{$silentValue:a},$errors:C,$silentErrors:j,$instances:l,$value:r,$dirty:o,$anyDirty:s,$invalid:i,$correct:y,$error:d,$pending:V,$ready:T,$edited:w,$anyEdited:O,$reset:S,$touch:E,$validate:h,$extractDirtyFields:D,$clearExternalErrors:R})}function Jt(e){function t(n){let r=computed(()=>toValue(n));s();let a=ref(i(e.value)),o=reactive({r$:a});function s(){r.value&&!e.value[r.value]&&(e.value[r.value]={});}watch(r,s),watch(e,y=>{a.value=i(y);},{deep:true});function i(y){if(r.value){let d=y[r.value]??{};return Ae(d,true)}else return Ae(y["~~global"]??{},true)}return {r$:o.r$}}return {useCollectScope:t}}function Yt(e,t){let n=t??ze;return {useScopedRegle:(a,o,s)=>{let{namespace:i,...y}=s??{},d=computed(()=>toValue(i)),T=ref(`${Object.keys(e.value).length+1}-${Se()}`),V=computed(()=>`instance-${T.value}`),{r$:C}=n(a,o,y);w(),Ot(j),watch(d,(O,l)=>{j(l),w();}),getCurrentInstance()&&onMounted(()=>{let O=getCurrentInstance();typeof window<"u"&&O?.proxy?.$el?.parentElement&&document.documentElement&&!document.documentElement.contains(O?.proxy?.$el?.parentElement)&&j();});function j(O){let l=O??d.value;l?e.value[l]&&delete e.value[l][V.value]:e.value["~~global"][V.value]&&delete e.value["~~global"][V.value];}function w(){d.value?(e.value[d.value]||(e.value[d.value]={}),e.value[d.value][V.value]=C):(e.value["~~global"]||(e.value["~~global"]={}),e.value["~~global"][V.value]=C);}return {r$:C,dispose:j,register:w}}}}function Ke(e){let n=(e?.customStore?()=>(e.customStore&&(e.customStore?.value["~~global"]?e.customStore?.value&&(e.customStore.value={"~~global":{}}):e.customStore.value["~~global"]={}),e.customStore):wt(()=>ref({"~~global":{}})))(),{useScopedRegle:r}=Yt(n,e?.customUseRegle),{useCollectScope:a}=Jt(n);return {useScopedRegle:r,useCollectScope:a}}var {useCollectScope:ft,useScopedRegle:Rt}=Ke();function Zt(e,t,n){let r=computed(()=>toValue(e)[t]);return computed(()=>{let o=n.find(s=>{if(s[t]&&"literal"in s[t]){let i=s[t].literal;if(me(i))return unref(i._params?.[0])===r.value}});if(o)return o;{let s=n.find(i=>N(i[t])&&!Object.keys(i[t]).some(y=>y==="literal"));return s||{}}})}function dt(e,t,n){return N(e[t])&&"$value"in e[t]&&e[t]?.$value===n}function er(e,t,n){let r=isRef(e)?toRef(e.value,"$fields"):toRef(e,"$fields"),a=ref();return watch(r,()=>{dt(r.value,t,n)?a.value=r.value:a.value=void 0;},{}),a}
2
- export{Xe as InternalRuleType,et as createRule,Ke as createScopedUseRegle,Zt as createVariant,Lt as defineRegleConfig,Ht as extendRegleConfig,at as flatErrors,ct as inferRules,Ae as mergeRegles,dt as narrowVariant,re as unwrapRuleParameters,ft as useCollectScope,ze as useRegle,Ie as useRootStorage,Rt as useScopedRegle,er as variantToRef};
1
+ import {effectScope,computed,toValue,ref,watch,getCurrentInstance,onMounted,reactive,getCurrentScope,onScopeDispose,isRef,shallowRef,toRef,unref,watchEffect,version}from'vue';function te(e,t=true){return e==null?true:e instanceof Date?isNaN(e.getTime()):e.constructor.name=="File"||e.constructor.name=="FileList"?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 xt=Symbol("regle-rule");function nr(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,n={}.toString.call(e).slice(8,-1);if(n=="Set"&&(t=new Set([...e].map(r=>G(r)))),n=="Map"&&(t=new Map([...e].map(r=>[G(r[0]),G(r[1])]))),n=="Date"&&(t=new Date(e.getTime())),n=="RegExp"&&(t=RegExp(e.source,nr(e))),n=="Array"||n=="Object"){t=Array.isArray(e)?[]:{};for(let r in e)t[r]=G(e[r]);}return t}function _(e){return e&&(e instanceof Date||e.constructor.name=="File"||e.constructor.name=="FileList")?false:typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ye(e,...t){for(var n=[].slice.call(arguments),r,a=n.length;r=n[a-1],a--;)if(!r||typeof r!="object"&&typeof r!="function")throw new Error("expected object, got "+r);for(var o=n[0],s=n.slice(1),i=s.length,a=0;a<i;a++){var g=s[a];for(var R in g)o[R]=g[R];}return o}function Qe(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 _e(e,t,n){let r,a=(...o)=>new Promise(s=>{clearTimeout(r),r=setTimeout(()=>{r=void 0,Promise.resolve(e.apply(this,[...o])).then(s);},t);});return a.cancel=()=>{clearTimeout(r),r=void 0;},a}var Xe={Inline:"__inline",Async:"__async"};function Dt(e,t){return e.some(n=>n[t])}function Ct(e,t){return e.reduce((n,r)=>{let a=r[t]||[];return n.concat(a)},[])}function re(e){try{return e.map(t=>toValue(t))}catch{return []}}function It(e){return e.map(t=>t instanceof Function?computed(t):isRef(t)?t:toRef(()=>t))}function Ot(e){let r=e.toString().replace(/\/\/.*$/gm,"").replace(/\/\*[\s\S]*?\*\//g,"").match(/^(?:async\s*)?(?:function\b.*?\(|\((.*?)\)|(\w+))\s*=>|\((.*?)\)\s*=>|function.*?\((.*?)\)|\((.*?)\)/);return r?(r[0]||r[1]||r[2]||r[3]||r[4]||"").split(",").map(s=>s.trim()).filter(s=>s.length>0).length:0}function Ze(e,...t){let{validator:n,type:r}=e,a=r===Xe.Async||n.constructor.name==="AsyncFunction";return {...{validator(i,...g){return e.validator(i,...re(g.length?g:t))},message(i){return typeof e.message=="function"?e.message({...i,$params:re(i?.$params?.length?i.$params:t)}):e.message},active(i){return typeof e.active=="function"?e.active({...i,$params:re(i?.$params?.length?i.$params:t)}):e.active??true},tooltip(i){return typeof e.tooltip=="function"?e.tooltip({...i,$params:re(i?.$params?.length?i.$params:t)}):e.tooltip??[]},exec(i){let g=e.validator(i,...re(t)),R;return g instanceof Promise?g.then(h=>(R=h,typeof R=="object"&&"$valid"in R?R.$valid:typeof R=="boolean"?R:false)):(R=g,typeof R=="object"&&"$valid"in R?R.$valid:typeof R=="boolean"?R: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:It(t),_brand:xt}}function et(e){if(typeof e.validator=="function"){let n=Ze(e,...[]),r=e.async??e.validator.constructor.name==="AsyncFunction";if(Ot(e.validator)>1){let a=function(...o){return Ze(e,...o)};return a.validator=n.validator,a.message=n.message,a.active=n.active,a.tooltip=n.tooltip,a.type=n.type,a.exec=n.exec,a._validator=n.validator,a._message=n.message,a._active=n.active,a._tooltip=n.tooltip,a._type=e.type,a._message_pacthed=false,a._tooltip_pacthed=false,a._async=r,a}else return n}throw new Error("[createRule] validator must be a function")}function tt(){let e=shallowRef(new Map),t=shallowRef(new Map),n=shallowRef(new Map),r=shallowRef(new Map),a=shallowRef(new Map),o=shallowRef(new Map);function s($){let E=t.value.get($);if(E)return E;{let x=ref({});return t.value.set($,x),x}}function i($){let E=n.value.get($);if(E)return E;{let x=ref([]);return n.value.set($,x),x}}function g($,E,x){o.value.set(`${$}-${E}`,x);}function R($,E){return o.value.get(`${$}-${E}`)}function h($,E){$&&E!=null&&o.value.delete(`${$}-${E}`);}function V($,E){r.value.set($,E);}function D($){return r.value.get($)??false}function A($,E){e.value.set($,E);}function P($,E){let x=e.value.get($);return x?O(E,x)?{valid:true}:{valid:false}:void 0}function O($,E){let x=Object.keys(E),d=Object.keys($);return d.length!==x.length||!d.every(c=>x.includes(c))?false:d.every(c=>{let y=$[c],S=E[c];return !S||!y||typeof y=="function"||typeof S=="function"||typeof y=="number"||typeof y=="boolean"?false:y._params?y._params?.every((N,W)=>{if(typeof S=="number"||typeof S=="boolean")return true;{let K=re(S._params),H=re(y._params);return K?.[W]===H?.[W]}}):true})}function l($){let E=a.value.get($);if(E)return E;{let x=ref(false),d=ref(true),b=ref({}),c=ref(false);return a.value.set($,{$pending:x,$valid:d,$metadata:b,$validating:c}),{$pending:x,$valid:d,$metadata:b,$validating:c}}}return getCurrentScope()&&onScopeDispose(()=>{e.value.clear(),t.value.clear(),n.value.clear(),r.value.clear(),a.value.clear(),o.value.clear();}),{addRuleDeclEntry:A,setDirtyEntry:V,checkRuleDeclEntry:P,getDirtyState:D,trySetRuleStatusRef:l,getFieldsEntry:s,getCollectionsEntry:i,getArrayStatus:R,addArrayStatus:g,deleteArrayStatus:h,arrayStatusStorage:o}}function Ne(e){return _(e.value)}function rt(e,t,n){let r=effectScope(),a;return e instanceof Function?a=r.run(()=>e(t,n??0)):a=e,{scope:r,unwrapped:a}}var Pe={LessThan:-1,EqualTo:0,GreaterThan:1};function Rr(e,t){let n=String(e).split("."),r=String(t).split(".");for(let a=0;a<Math.min(n.length,r.length);a++){let o=Number(n[a]),s=Number(r[a]);if(o>s)return Pe.GreaterThan;if(s>o)return Pe.LessThan;if(!isNaN(o)&&isNaN(s))return Pe.GreaterThan;if(isNaN(o)&&!isNaN(s))return Pe.LessThan}return Pe.EqualTo}var ke=Rr(version,"3.5.0")!==-1;function dr(){return Math.floor(Math.random()*Date.now()).toString()}function he(){return typeof window>"u"?dr():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function wt(e){return getCurrentScope()?(onScopeDispose(e),true):false}function Pt(e){let t=false,n,r=effectScope(true);return (...a)=>(t||(n=r.run(()=>e(...a)),t=true),n)}function Ge(e,t){return Ne(e)||_(t.value)&&!te(t.value)&&!Object.entries(t.value).some(([n,r])=>me(r)||typeof r=="function")}function Mt(e,t,n=false){return !!e.value&&_(e.value)&&"$each"in e.value||n&&Array.isArray(t.value)&&t.value.some(_)||Array.isArray(t.value)&&t.value.some(_)}function Ue(e){return !!e.value&&_(e.value)}function me(e){return _(e)&&"_validator"in e}function Me(e){return typeof e.value=="function"?"_validator"in e.value:true}function jt(e){return _(e)&&"$fields"in e}function nt(e){return !!e&&"$rules"in e}function at({field:e,silent:t=false}){return Object.entries(e.$rules??{}).map(([n,r])=>t&&!r.$valid||!r.$valid&&e.$error&&!r.$validating?r.$message:null).filter(n=>!!n).reduce((n,r)=>typeof r=="string"?n?.concat([r]):n?.concat(r),[]).concat(e.$error?e.$externalErrors??[]:[]).concat(e.$error?e.$schemaErrors??[]:[])}function At({field:e}){return Object.entries(e.$rules??{}).map(([t,n])=>n.$tooltip).filter(t=>!!t).reduce((t,n)=>typeof n=="string"?t?.concat([n]):t?.concat(n),[])}function Vt(e){return _(e)&&"$each"in e}function lt(e,t){let{includePath:n=false}=t??{};if(Array.isArray(e)&&e.every(r=>!_(r)))return e;if(Vt(e)){let r=n?e.$self?.map(o=>({error:o,path:""}))??[]:e.$self??[],a=e.$each?.map(o=>We(o,n))??[];return r?.concat(a.flat())}else return Object.entries(e).map(([r,a])=>We(a,n,[r])).flat()}function We(e,t=false,n){let r=t&&!n?[]:n;if(Array.isArray(e)&&e.every(a=>!_(a)))return t?e.map(a=>({error:a,path:r?.join(".")??""})):e;if(Vt(e)){let a=r?.length?e.$self?.map(s=>({error:s,path:r.join(".")}))??[]:e.$self??[],o=e.$each?.map((s,i)=>We(s,t,r?.concat(i.toString())))??[];return a?.concat(o.flat())}else return Object.entries(e).map(([a,o])=>We(o,t,r?.concat(a))).flat()}function Ft({customMessages:e,rule:t,ruleKey:n,state:r,path:a,storage:o,$debounce:s,modifiers:i}){let g=effectScope(),R={},h,V=ref(false),D=ref(false),{$pending:A,$valid:P,$metadata:O,$validating:l}=o.trySetRuleStatusRef(`${a}.${n}`);function $(){g=effectScope(),R=g.run(()=>{let S=ref(false),N=ref(false),W=ref(true),K=ref(false),H=ref(false),le=computed(()=>({$value:r.value,$error:N.value,$dirty:S.value,$pending:K.value,$correct:H.value,$invalid:W.value,$rule:{$valid:P.value,$invalid:!P.value,$pending:A.value},$params:f.value,...O.value})),C=computed(()=>Me(t)?typeof t.value.active=="function"?t.value.active(le.value):!!t.value.active:true);function z(w){let J="",m=e?e[n]?.[w]:void 0;if(m&&(typeof m=="function"?J=m(le.value):J=m),Me(t)){let j=`_${w}_patched`;m&&!t.value[j]||(typeof t.value[w]=="function"?J=t.value[w](le.value):J=t.value[w]??"");}return J}let ge=computed(()=>{let w=z("message");return te(w)&&(w="This field is not valid"),w}),ce=computed(()=>z("tooltip")),u=computed(()=>Me(t)&&t.value.type?t.value.type:n),p=computed(()=>Me(t)?t.value.validator:t.value),f=computed(()=>typeof t.value=="function"?[]:re(t.value._params??[])),I=computed(()=>`${a}.${u.value}`);return {$active:C,$message:ge,$type:u,$validator:p,$params:f,$path:I,$tooltip:ce,$fieldCorrect:H,$fieldError:N,$fieldDirty:S,$fieldPending:K,$fieldInvalid:W}}),h=watch(R?.$params,()=>{(i.$autoDirty.value||i.$rewardEarly.value&&R.$fieldError.value)&&b();});}$();function E(){P.value=true,R.$fieldDirty.value&&(A.value=true);}async function x(){let S=false;try{let N=R.$validator.value;if(typeof N!="function")return console.error(`${a}: Incorrect rule format, it needs to be either a function or created with "createRule".`),!1;let W=N(r.value,...R.$params.value),K=r.value;E();let H;if(W instanceof Promise?H=await W:H=W,r.value!==K)return !0;if(typeof H=="boolean")S=H;else {let{$valid:le,...C}=H;S=le,O.value=C;}}catch{S=false;}finally{A.value=false;}return S}let d=_e(x,s??200);async function b(){try{l.value=!0;let S=!1;if(D.value=!0,me(t.value)&&t.value._async)S=await d();else {let N=R.$validator.value,W=N(r.value,...R.$params.value);if(W 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(W!=null)if(typeof W=="boolean")S=W;else {let{$valid:K,...H}=W;S=K,O.value=H;}}return P.value=S,S}catch{return false}finally{l.value=false,D.value=false;}}function c(){P.value=true,O.value={},A.value=false,l.value=false,$();}function y(){h(),g.stop(),g=effectScope();}return reactive({...R,$pending:A,$valid:P,$metadata:O,$haveAsync:V,$maybePending:D,$validating:l,$parse:b,$unwatch:y,$watch:$,$reset:c})}function Ee({state:e,rulesDef:t,customMessages:n,path:r,fieldName:a,storage:o,options:s,externalErrors:i,schemaErrors:g,schemaMode:R,onUnwatch:h,$isArray:V,initialState:D,shortcuts:A,onValidate:P}){let O=effectScope(),l,$=[],E,x,d,b,c,y=()=>{};function S(){let T=t.value,F=o.checkRuleDeclEntry(r,T);z.value=Object.fromEntries(Object.entries(T).filter(([v])=>v.startsWith("$"))),K(),C.value=Object.fromEntries(Object.entries(t.value).filter(([v])=>!v.startsWith("$")).map(([v,ee])=>{if(ee){let se=toRef(()=>ee);return [v,Ft({modifiers:{$autoDirty:l.$autoDirty,$rewardEarly:l.$rewardEarly},customMessages:n,rule:se,ruleKey:v,state:e,path:r,storage:o,$debounce:z.value.$debounce})]}return []}).filter(v=>!!v.length)),l.processShortcuts(),N(),F?.valid!=null&&(l.$dirty.value=o.getDirtyState(r),(l.$dirty.value&&l.$autoDirty.value||l.$rewardEarly.value&&l.$error.value)&&y()),o.addRuleDeclEntry(r,T);}function N(){y=l.$debounce.value?_e(le,l.$debounce.value??l.$haveAnyAsyncRule?100:0):le;}function W(){C.value&&Object.entries(C.value).forEach(([T,F])=>{F.$unwatch();}),d(),c?.(),l.$dirty.value&&o.setDirtyEntry(r,l.$dirty.value),E?.(),x?.(),O.stop(),O=effectScope(),$.forEach(T=>T.stop()),$=[],h?.(),b?.();}function K(){C.value&&Object.entries(C.value).forEach(([T,F])=>{F.$watch();}),l=O.run(()=>{let T=ref(false),F=ref(false),v=computed(()=>T.value),ee=computed(()=>z.value.$debounce),se=computed(()=>z.value.$lazy!=null?z.value.$lazy:unref(s.lazy)!=null?unref(s.lazy):false),oe=computed(()=>z.value.$rewardEarly!=null?z.value.$rewardEarly:unref(s.rewardEarly)!=null?unref(s.rewardEarly):false),B=computed(()=>z.value.$clearExternalErrorsOnChange!=null?z.value.$clearExternalErrorsOnChange:unref(s.clearExternalErrorsOnChange)!=null?unref(s.clearExternalErrorsOnChange):true),M=computed(()=>z.value.$autoDirty!=null?z.value.$autoDirty:unref(s.autoDirty)!=null?unref(s.autoDirty):!oe.value),k=computed(()=>Object.entries(C.value).some(([ie,X])=>X.$validating)),we=computed({get:()=>e.value,set(ie){E(),e.value=ie,H();}}),Ve=computed(()=>$e.value&&!ve.value&&T.value),mt=computed(()=>at({field:{$rules:C.value,$error:Ve.value,$externalErrors:i?.value,$schemaErrors:g?.value}})),yt=computed(()=>at({field:{$rules:C.value,$error:Ve.value,$externalErrors:i?.value,$schemaErrors:g?.value},silent:true})),qe=computed(()=>T.value?D.value instanceof Date&&e.value instanceof Date?Qe(D.value).getDate()!==Qe(e.value).getDate():D.value==null?!!e.value:Array.isArray(e.value)&&Array.isArray(D.value)?e.value.length!==D.value.length:D.value!==e.value:false),gt=computed(()=>qe.value),vt=computed(()=>At({field:{$rules:C.value}})),$t=computed(()=>M.value?v.value&&!($e.value||ve.value):!($e.value||ve.value)),ve=computed(()=>F.value||!oe.value?Object.entries(C.value).some(([ie,X])=>X.$pending):false),$e=computed(()=>i?.value?.length||g?.value?.length?true:Fe.value?false:!oe.value||oe.value&&F.value?Object.entries(C.value).some(([ie,X])=>!(X.$valid&&!X.$maybePending)):false),St=computed(()=>a),Fe=computed(()=>!!(te(C.value)&&!R)),Tt=computed(()=>i?.value?.length||Fe.value?false:T.value&&!te(e.value)&&!k.value&&!ve.value?R?!g?.value?.length:Object.values(C.value).some(X=>X.$active)?Object.values(C.value).filter(X=>X.$active).every(X=>X.$valid):false:false),tr=computed(()=>Object.entries(C.value).some(([ie,X])=>X.$haveAsync));function rr(){A?.fields&&Object.entries(A.fields).forEach(([ie,X])=>{let bt=effectScope();ht[ie]=bt.run(()=>{let Et=ref();return watchEffect(()=>{Et.value=X(reactive({$dirty:T,$externalErrors:i?.value??[],$value:e,$silentValue:we,$rules:C,$error:Ve,$pending:ve,$invalid:$e,$correct:Tt,$errors:mt,$ready:$t,$silentErrors:yt,$anyDirty:v,$tooltips:vt,$name:St,$inactive:Fe,$edited:qe,$anyEdited:gt}));}),Et}),$.push(bt);});}let ht={};return watch($e,ie=>{ie||(F.value=false);}),{$error:Ve,$pending:ve,$invalid:$e,$correct:Tt,$debounce:ee,$lazy:se,$errors:mt,$ready:$t,$silentErrors:yt,$rewardEarly:oe,$autoDirty:M,$clearExternalErrorsOnChange:B,$anyDirty:v,$edited:qe,$anyEdited:gt,$name:St,$haveAnyAsyncRule:tr,$shortcuts:ht,$validating:k,$tooltips:vt,$dirty:T,triggerPunishment:F,processShortcuts:rr,$silentValue:we,$inactive:Fe}}),H(),d=watch(l.$dirty,T=>{o.setDirtyEntry(r,T),Object.values(C.value).forEach(F=>{F.$fieldDirty=T;});}),c=watch([l.$error,l.$correct,l.$invalid,l.$pending],()=>{Object.values(C.value).forEach(T=>{T.$fieldError=l.$error.value,T.$fieldInvalid=l.$invalid.value,T.$fieldPending=l.$pending.value,T.$fieldCorrect=l.$correct.value;});}),x=watch(l.$invalid,T=>{l.$rewardEarly.value&&!T&&(l.triggerPunishment.value=false);}),b=watch(l.$haveAnyAsyncRule,N);}function H(){E=watch(e,()=>{l.$autoDirty.value&&(l.$dirty.value||(l.$dirty.value=true)),t.value instanceof Function&&S(),(l.$autoDirty.value||l.$rewardEarly.value&&l.$error.value)&&y(),l.$rewardEarly.value!==true&&l.$clearExternalErrorsOnChange.value&&f();},{deep:V?true:ke?1:true});}function le(){Object.values(C.value).forEach(T=>{T.$parse();});}let C=ref({}),z=ref({});S();function ge(T,F){if(f(),l.$dirty.value=false,l.triggerPunishment.value=false,o.setDirtyEntry(r,false),!F)if(T?.toInitialState)e.value=G(D);else if(T?.toState){let v;typeof T?.toState=="function"?v=T?.toState():v=T?.toState,D.value=G(v),e.value=G(v);}else D.value=_(e.value)?G(e.value):Array.isArray(e.value)?[...e.value]:e.value;T?.clearExternalErrors&&f(),F||Object.entries(C.value).forEach(([v,ee])=>{ee.$reset();}),!l.$lazy.value&&l.$autoDirty.value&&Object.values(C.value).forEach(v=>v.$parse());}function ce(T=true,F=false){l.$dirty.value||(l.$dirty.value=true),F&&T?(l.$autoDirty.value||l.$rewardEarly.value&&l.$error.value)&&y():T&&y();}async function u(){try{if(R)return P?(ce(!1),P()):{valid:!1,data:e.value};let T=e.value;if(l.triggerPunishment.value=!0,!l.$dirty.value)l.$dirty.value=!0;else if(l.$autoDirty.value&&l.$dirty.value&&!l.$pending.value)return {valid:!l.$error.value,data:T};return R?{valid:!g?.value?.length,data:T}:te(C.value)?{valid:!0,data:T}:{valid:(await Promise.allSettled(Object.entries(C.value).map(([ee,se])=>se.$parse()))).every(ee=>ee.status==="fulfilled"?ee.value===!0:!1),data:T}}catch{return {valid:false,data:e.value}}}function p(T=true){return l.$dirty.value?e.value:T?{_null:true}:null}function f(){i?.value?.length&&(i.value=[]);}!l.$lazy.value&&!l.$dirty.value&&l.$autoDirty.value&&y();let{$shortcuts:I,$validating:w,$autoDirty:J,$rewardEarly:m,$clearExternalErrorsOnChange:j,$haveAnyAsyncRule:q,$debounce:Z,$lazy:Q,triggerPunishment:fe,...ue}=l;return reactive({...ue,$externalErrors:i,$value:e,$rules:C,...I,$reset:ge,$touch:ce,$validate:u,$unwatch:W,$watch:K,$extractDirtyFields:p,$clearExternalErrors:f})}function it({$id:e,path:t,index:n,options:r,storage:a,stateValue:o,customMessages:s,rules:i,externalErrors:g,schemaErrors:R,initialState:h,shortcuts:V,fieldName:D,schemaMode:A}){let P=i.$key?i.$key:he(),O=`${t}.${String(P)}`;typeof o.value=="object"&&o.value!=null&&(o.value.$id?O=`${t}.${o.value.$id}`:Object.defineProperties(o.value,{$id:{value:P,enumerable:false,configurable:false,writable:false}}));let l=toRef(g?.value??[],n),$=computed(()=>R?.value?.[n]),E=xe({state:o,rulesDef:toRef(()=>i),customMessages:s,path:O,storage:a,options:r,externalErrors:l,schemaErrors:$,initialState:h,shortcuts:V,fieldName:D,schemaMode:A});if(E){let x=o.value?.$id;E.$id=x??String(P),a.addArrayStatus(e,E.$id,E);}return E}function Gt({state:e,rulesDef:t,customMessages:n,path:r,storage:a,options:o,externalErrors:s,schemaErrors:i,schemaMode:g,initialState:R,shortcuts:h,fieldName:V}){let D=effectScope(),A,P=effectScope(),O,l=[];if(!Array.isArray(e.value)&&!t.value.$each)return;let $=ref(),E=ref(e.value),x,d=ref({}),b=a.getCollectionsEntry(r);O=P.run(()=>({isPrimitiveArray:computed(()=>Array.isArray(e.value)&&e.value.length?e.value.every(p=>typeof p!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(p=>me(p)||typeof p=="function"):false)})),c(),N();function c(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?($.value=he(),Object.defineProperties(e.value,{$id:{value:$.value,enumerable:false,configurable:false,writable:false}})):e.value?.$id&&($.value=e.value.$id)),E.value=d.value.$value,Array.isArray(e.value)&&!O.isPrimitiveArray.value?b.value=e.value.filter(u=>typeof u=="object").map((u,p)=>{let{scope:f,unwrapped:I}=rt(t.value.$each,toRef(()=>u),p);f&&l.push(f);let w=toRef(R.value??[],p),J=toRef(s?.value??{},"$each"),m=computed(()=>i?.value?.$each),j=it({$id:$.value,path:r,customMessages:n,rules:I??{},stateValue:toRef(()=>u),index:p,options:o,storage:a,externalErrors:J,schemaErrors:m,initialState:w,shortcuts:h,fieldName:V,schemaMode:g});return j||null}).filter(u=>!!u):b.value=[],d.value=Ee({state:e,rulesDef:t,customMessages:n,path:r,storage:a,options:o,externalErrors:toRef(s?.value??{},"$self"),schemaErrors:computed(()=>i?.value?.$self),$isArray:true,initialState:R,shortcuts:h,fieldName:V,schemaMode:g});}function y(){if(Array.isArray(e.value)&&!O.isPrimitiveArray.value){let u=G(b.value);b.value=e.value.filter(p=>typeof p=="object").map((p,f)=>{let I=toRef(()=>p);if(p.$id&&b.value.find(w=>w.$id===p.$id)){let w=a.getArrayStatus($.value,p.$id);return w?(w.$value=I,w):null}else {let{scope:w,unwrapped:J}=rt(t.value.$each,I,f);w&&l.push(w);let m=toRef(s?.value??{},"$each"),j=computed(()=>i?.value?.$each??[]),q=it({$id:$.value,path:r,customMessages:n,rules:J??{},stateValue:I,index:f,options:o,storage:a,externalErrors:m,schemaErrors:j,initialState:toRef(R.value??[],f),shortcuts:h,fieldName:V,schemaMode:g});return q||null}}).filter(p=>!!p),u.filter(p=>!e.value?.find(f=>p.$id===f.$id)).forEach((p,f)=>{a.deleteArrayStatus($.value,f.toString());});}else b.value=[];}function S(){x=watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?c():y();},{deep:ke?1:true,flush:"pre"});}function N(){S(),D=effectScope(),A=D.run(()=>{let u=computed({get:()=>e.value,set(v){x(),e.value=v,S();}}),p=computed(()=>d.value.$dirty&&(!b.value.length||b.value.every(v=>v.$dirty))),f=computed(()=>d.value.$anyDirty||b.value.some(v=>v.$anyDirty)),I=computed(()=>d.value.$invalid||b.value.some(v=>v.$invalid)),w=computed(()=>(te(d.value.$rules)?true:d.value.$correct)&&(!b.value.length||b.value.every(v=>v.$correct||v.$anyDirty&&!v.$invalid))),J=computed(()=>d.value.$error||b.value.some(v=>v.$error)),m=computed(()=>!(I.value||j.value)),j=computed(()=>d.value.$pending||b.value.some(v=>v.$pending)),q=computed(()=>!!b.value.length&&b.value.every(v=>v.$edited)),Z=computed(()=>d.value.$anyEdited||b.value.some(v=>v.$anyEdited)),Q=computed(()=>({$self:d.value.$errors,$each:b.value.map(v=>v.$errors)})),fe=computed(()=>({$self:d.value.$silentErrors,$each:b.value.map(v=>v.$silentErrors)})),ue=computed(()=>V);function T(){h?.collections&&Object.entries(h?.collections).forEach(([v,ee])=>{let se=effectScope();F[v]=se.run(()=>{let oe=ref();return watchEffect(()=>{oe.value=ee(reactive({$dirty:p,$error:J,$silentValue:u,$pending:j,$invalid:I,$correct:w,$errors:Q,$ready:m,$silentErrors:fe,$anyDirty:f,$name:ue,$each:b,$self:d,$value:e,$edited:q,$anyEdited:Z}));}),oe}),l.push(se);});}let F={};return T(),{$dirty:p,$anyDirty:f,$invalid:I,$correct:w,$error:J,$pending:j,$errors:Q,$silentErrors:fe,$ready:m,$name:ue,$shortcuts:F,$silentValue:u,$edited:q,$anyEdited:Z}}),O.isPrimitiveArray.value&&t.value.$each&&console.warn(`${r} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`);}function W(){x&&x(),d.value&&d.value.$unwatch(),b.value&&b.value.forEach(u=>{"$dirty"in u&&u.$unwatch();}),D.stop(),D=effectScope(),P.stop(),P=effectScope(true),l.forEach(u=>u.stop()),l=[];}function K(u=true,p=false){d.value.$touch(u,p),b.value.forEach(f=>{f.$touch(u,p);});}function H(u,p){if(W(),!p)if(u?.toInitialState)e.value=G(R.value);else if(u?.toState){let f;typeof u?.toState=="function"?f=u?.toState():f=u?.toState,R.value=G(f),e.value=G(f);}else R.value=G(e.value);u?.clearExternalErrors&&C(),d.value.$reset(),b.value.forEach(f=>{f.$reset(u,true);}),p||c();}async function le(){let u=e.value;try{return {valid:(await Promise.allSettled([d.value.$validate(),...b.value.map(I=>I.$validate())])).every(I=>I.status==="fulfilled"?I.value.valid===!0:!1),data:u}}catch{return {valid:false,data:u}}}function C(){d.value.$clearExternalErrors(),b.value.forEach(u=>{u.$clearExternalErrors();});}function z(u=true){let p=b.value.map(f=>{if(jt(f))return f.$extractDirtyFields(u)});return u&&p.every(f=>te(f))&&(p=[]),p}let{$shortcuts:ge,...ce}=A;return reactive({$self:d,...ce,...ge,$each:b,$value:e,$validate:le,$unwatch:W,$watch:N,$touch:K,$reset:H,$extractDirtyFields:z,$clearExternalErrors:C})}function Le({rulesDef:e,state:t,path:n="",rootRules:r,externalErrors:a,schemaErrors:o,rootSchemaErrors:s,validationGroups:i,initialState:g,fieldName:R,...h}){let V=effectScope(),D,A=[],P=null,O=null,l=null,$=null;async function x(u=true){let p=Object.entries(e.value),f=Object.fromEntries(p.filter(([m,j])=>!!j).map(([m,j])=>{if(j){let q=toRef(t.value??{},m),Z=toRef(()=>j),Q=toRef(a?.value??{},m),fe=computed(()=>o?.value?.[m]),ue=toRef(g?.value??{},m);return [m,xe({state:q,rulesDef:Z,path:n?`${n}.${m}`:m,externalErrors:Q,schemaErrors:fe,initialState:ue,fieldName:m,...h})]}return []})),I=Object.fromEntries(Object.entries(unref(a)??{}).filter(([m,j])=>!(m in e.value)&&!!j).map(([m])=>{let j=toRef(t.value??{},m),q=toRef(a?.value??{},m),Z=computed(()=>o?.value?.[m]),Q=toRef(g?.value??{},m);return [m,xe({state:j,rulesDef:computed(()=>({})),path:n?`${n}.${m}`:m,externalErrors:q,schemaErrors:Z,initialState:Q,fieldName:m,...h})]})),w=Object.fromEntries(Object.entries(unref(o)??{}).map(([m])=>{let j=toRef(t.value??{},m),q=toRef(a?.value??{},m),Z=computed(()=>o?.value?.[m]),Q=toRef(g?.value??{},m);return [m,xe({state:j,rulesDef:computed(()=>({})),path:n?`${n}.${m}`:m,externalErrors:q,schemaErrors:Z,initialState:Q,fieldName:m,...h})]})),J=Object.fromEntries(Object.entries(t.value??{}).filter(([m])=>!(m in e.value)&&!(m in(I??{}))&&!(m in(w??{}))).map(([m])=>{let j=toRef(t.value??{},m),q=toRef(a?.value??{},m),Z=computed(()=>o?.value?.[m]),Q=toRef(g?.value??{},m);return [m,xe({state:j,rulesDef:computed(()=>({})),path:n?`${n}.${m}`:m,externalErrors:q,schemaErrors:Z,initialState:Q,fieldName:m,...h})]}));d.value={...f,...I,...w,...J},u&&y();}let d=h.storage.getFieldsEntry(n);x();function b(){a&&(l=watch(a,()=>{S(),x();},{deep:true}));}function c(){$=watch(t,()=>{S(),x(),K(true,true);},{flush:"sync"});}function y(){r&&(P?.(),P=watch(r,()=>{S(),x();},{deep:true,flush:"pre"}),b()),s&&(O?.(),O=watch(s,()=>{S(),x();},{deep:true,flush:"post"})),c(),D=V.run(()=>{let u=computed({get:()=>t.value,set(B){S(),t.value=B,x();}}),p=computed(()=>!!Object.entries(d.value).length&&Object.entries(d.value).every(([B,M])=>M?.$dirty)),f=computed(()=>Object.entries(d.value).some(([B,M])=>M?.$anyDirty)),I=computed(()=>!!Object.entries(d.value).length&&Object.entries(d.value).some(([B,M])=>M?.$invalid)),w=computed(()=>{let B=Object.entries(d.value).filter(([M,k])=>nt(k)?!k.$inactive:true);return B.length?B.every(([M,k])=>h.schemaMode?k.$correct:nt(k)?"required"in k.$rules&&k.$rules.required.$active?k?.$correct:!k.$invalid&&!k.$pending:k?.$correct):false}),J=computed(()=>!!Object.entries(d.value).length&&Object.entries(d.value).some(([B,M])=>M?.$error)),m=computed(()=>unref(h.options.rewardEarly)!=null?unref(h.options.rewardEarly):false),j=computed(()=>unref(h.options.autoDirty)!=null?unref(h.options.autoDirty):!m.value),q=computed(()=>j.value?f.value&&!(I.value||Q.value):!(I.value||Q.value)),Z=ref(false),Q=computed(()=>Z.value||Object.entries(d.value).some(([B,M])=>M?.$pending)),fe=computed(()=>Object.fromEntries(Object.entries(d.value).map(([B,M])=>[B,M?.$errors]))),ue=computed(()=>Object.fromEntries(Object.entries(d.value).map(([B,M])=>[B,M?.$silentErrors]))),T=computed(()=>!!Object.entries(d.value).length&&Object.entries(d.value).every(([B,M])=>M?.$edited)),F=computed(()=>Object.entries(d.value).some(([B,M])=>M?.$anyEdited)),v=computed(()=>R);function ee(){h.shortcuts?.nested&&Object.entries(h.shortcuts.nested).forEach(([B,M])=>{let k=effectScope();oe[B]=k.run(()=>{let we=ref();return watchEffect(()=>{we.value=M(reactive({$dirty:p,$value:t,$silentValue:u,$error:J,$pending:Q,$invalid:I,$correct:w,$ready:q,$anyDirty:f,$name:v,$silentErrors:ue,$errors:fe,$fields:d,$edited:T,$anyEdited:F}));}),we}),A.push(k);});}let se=computed({get:()=>i?Object.fromEntries(Object.entries(i?.(d.value)??{}).map(([B,M])=>M.length?[B,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$correct"].map(k=>[k,Dt(M,k)])),...Object.fromEntries(["$errors","$silentErrors"].map(k=>[k,Ct(M,k)]))}]:[])):{},set(){}}),oe={};return ee(),{$dirty:p,$anyDirty:f,$invalid:I,$correct:w,$error:J,$pending:Q,$errors:fe,$silentErrors:ue,$ready:q,$name:v,$shortcuts:oe,$groups:se,$silentValue:u,$edited:T,$anyEdited:F,$localPending:Z}});}function S(){P?.(),l?.(),$?.(),O?.(),A=[],D={},d.value&&Object.entries(d.value).forEach(([u,p])=>{p.$unwatch();});}function N(){Object.entries(d.value).forEach(([u,p])=>{p.$clearExternalErrors();});}function W(u,p){if(l?.(),S(),!p)if(u?.toInitialState)t.value=G({...g.value??{}});else if(u?.toState){let f;typeof u?.toState=="function"?f=u?.toState():f=u?.toState,g.value=G(f),t.value=G(f);}else g.value=G(t.value);Object.values(d.value).forEach(f=>{f.$reset(u,true);}),u?.clearExternalErrors&&N(),b(),p||x();}function K(u=true,p=false){Object.values(d.value).forEach(f=>{f.$touch(u,p);});}function H(u){return u.filter(([p,f])=>_(f)?!(f&&typeof f=="object"&&"_null"in f)&&!te(f):Array.isArray(f)?f.length:true)}function le(u=true){let p=Object.entries(d.value).map(([f,I])=>[f,I.$extractDirtyFields(u)]);return u&&(p=H(p)),Object.fromEntries(p)}async function C(){try{if(h.schemaMode)return h.onValidate?(K(!1),D.$localPending.value=!0,h.onValidate()):{valid:!1,data:t.value};{let u=t.value;return {valid:(await Promise.allSettled(Object.values(d.value).map(I=>I.$validate()))).every(I=>I.status==="fulfilled"?I.value.valid===!0:!1),data:u}}}catch{return {valid:false,data:t.value}}finally{D.$localPending.value=false;}}let{$shortcuts:z,$localPending:ge,...ce}=D;return reactive({...ce,...z,$fields:d,$value:t,$reset:W,$touch:K,$validate:C,$unwatch:S,$watch:y,$clearExternalErrors:N,$extractDirtyFields:le})}function xe({rulesDef:e,...t}){if(Mt(e,t.state,t.schemaMode))return Gt({rulesDef:e,...t});if(Ge(t.state,e)){if(Ne(t.state))return Le({rulesDef:e,...t});{let r=effectScope().run(()=>{let s=toRef(t.state.value?t.state:ref({}));return watch(()=>t.state.value,i=>{s.value=i;},{deep:true}),watch(s,i=>{t.state.value=i;},{deep:true}),{fakeState:s}}),{state:a,...o}=t;return Le({rulesDef:e,...o,state:r.fakeState})}}else if(Ue(e))return Ee({rulesDef:e,...t})}function Oe({initialState:e,options:t,scopeRules:n,state:r,customRules:a,shortcuts:o,schemaErrors:s,schemaMode:i=false,onValidate:g}){let R=tt(),h=ref();return Ge(r,n)?h.value=Le({rootRules:n,rulesDef:n,state:r,customMessages:a?.(),storage:R,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:o,fieldName:"root",path:"",schemaErrors:s,rootSchemaErrors:s,schemaMode:i,onValidate:g}):Ue(n)&&(h.value=Ee({rulesDef:n,state:r,customMessages:a?.(),storage:R,options:t,externalErrors:t.externalErrors,initialState:e,shortcuts:o,fieldName:"root",path:"",schemaMode:i,schemaErrors:s,onValidate:g})),getCurrentScope()&&onScopeDispose(()=>{h.value?.$unwatch();}),reactive({regle:h})}function He(e,t,n){let r={autoDirty:t?.autoDirty,lazy:t?.lazy,rewardEarly:t?.rewardEarly,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange};function a(o,s,i){let g=isRef(s)?s:computed(typeof s=="function"?s:()=>s),R={...r,...i},h=isRef(o)?o:ref(o),V=ref(_(h.value)?{...G(h.value)}:G(h.value));return {r$:Oe({scopeRules:g,state:h,options:R,initialState:V,customRules:e,shortcuts:n}).regle}}return a}var ze=He();function Je(){function e(t,n){return n}return e}var ft=Je();function Lt({rules:e,modifiers:t,shortcuts:n}){let r=He(e,t,n);r.__config={rules:e,modifiers:t,shortcuts:n};let a=Je();return {useRegle:r,inferRules:a}}function Ht(e,{rules:t,modifiers:n,shortcuts:r}){let a=e.__config??{},o=()=>({...a.rules?.(),...t?.()}),s=a.modifiers&&n?Ye(a.modifiers,n):n,i=a.shortcuts&&r?Ye(a.shortcuts,r):r,g=He(o,s,i);g.__config={rules:o,modifiers:s,shortcuts:i};let R=Je();return {useRegle:g,inferRules:R}}function Ae(e,t){let n=t??false,r=computed({get:()=>n?Object.values(e).map(c=>c.$value):Object.fromEntries(Object.entries(e).map(([c,y])=>[c,y.$value])),set:c=>{n||typeof c=="object"&&Object.entries(c).forEach(([y,S])=>e[y].$value=S);}}),a=computed({get:()=>Object.fromEntries(Object.entries(e).map(([c,y])=>[c,y.$silentValue])),set:c=>{typeof c=="object"&&Object.entries(c).forEach(([y,S])=>e[y].$silentValue=S);}}),o=computed(()=>{let c=Object.entries(e);return !!c.length&&c.every(([y,S])=>S?.$dirty)}),s=computed(()=>Object.entries(e).some(([c,y])=>y?.$anyDirty)),i=computed(()=>Object.entries(e).some(([c,y])=>y?.$invalid)),g=computed(()=>{let c=Object.entries(e);return !!c.length&&c.every(([y,S])=>S?.$correct||S.$anyDirty&&!S.$invalid)}),R=computed(()=>Object.entries(e).some(([c,y])=>y?.$error)),h=computed(()=>{let c=Object.entries(e);return !!c.length&&c.every(([y,S])=>S?.$ready)}),V=computed(()=>Object.entries(e).some(([c,y])=>y?.$pending)),D=computed(()=>n?Object.entries(e).map(([c,y])=>y.$errors):Object.fromEntries(Object.entries(e).map(([c,y])=>[c,y.$errors]))),A=computed(()=>n?Object.entries(e).map(([c,y])=>y.$silentErrors):Object.fromEntries(Object.entries(e).map(([c,y])=>[c,y.$silentErrors]))),P=computed(()=>{let c=Object.entries(e);return !!c.length&&c.every(([y,S])=>S?.$edited)}),O=computed(()=>Object.entries(e).some(([c,y])=>y?.$anyEdited)),l=computed(()=>n?Object.values(e):e);function $(c){Object.values(e).forEach(y=>{y.$reset(c);});}function E(){Object.values(e).forEach(c=>{c.$touch();});}function x(c=true){return Object.values(e).map(y=>y.$extractDirtyFields(c))}function d(){Object.values(e).forEach(c=>{c.$clearExternalErrors();});}async function b(){try{let c=r.value;return {valid:(await Promise.allSettled(Object.values(e).map(N=>N.$validate()))).every(N=>N.status==="fulfilled"?N.value.valid===!0:!1),data:c}}catch{return {valid:false,data:r.value}}}return reactive({...!n&&{$silentValue:a},$errors:D,$silentErrors:A,$instances:l,$value:r,$dirty:o,$anyDirty:s,$invalid:i,$correct:g,$error:R,$pending:V,$ready:h,$edited:P,$anyEdited:O,$reset:$,$touch:E,$validate:b,$extractDirtyFields:x,$clearExternalErrors:d})}function Jt(e){function t(n){let r=computed(()=>toValue(n));s();let a=ref(i(e.value)),o=reactive({r$:a});function s(){r.value&&!e.value[r.value]&&(e.value[r.value]={});}watch(r,s),watch(e,g=>{a.value=i(g);},{deep:true});function i(g){if(r.value){let R=g[r.value]??{};return Ae(R,true)}else return Ae(g["~~global"]??{},true)}return {r$:o.r$}}return {useCollectScope:t}}function Yt(e,t){let n=t??ze;return {useScopedRegle:(a,o,s)=>{let{namespace:i,...g}=s??{},R=computed(()=>toValue(i)),h=ref(`${Object.keys(e.value).length+1}-${he()}`),V=computed(()=>`instance-${h.value}`),{r$:D}=n(a,o,g);P(),wt(A),watch(R,(O,l)=>{A(l),P();}),getCurrentInstance()&&onMounted(()=>{let O=getCurrentInstance();typeof window<"u"&&O?.proxy?.$el?.parentElement&&document.documentElement&&!document.documentElement.contains(O?.proxy?.$el?.parentElement)&&A();});function A(O){let l=O??R.value;l?e.value[l]&&delete e.value[l][V.value]:e.value["~~global"][V.value]&&delete e.value["~~global"][V.value];}function P(){R.value?(e.value[R.value]||(e.value[R.value]={}),e.value[R.value][V.value]=D):(e.value["~~global"]||(e.value["~~global"]={}),e.value["~~global"][V.value]=D);}return {r$:D,dispose:A,register:P}}}}function Ke(e){let n=(e?.customStore?()=>(e.customStore&&(e.customStore?.value["~~global"]?e.customStore?.value&&(e.customStore.value={"~~global":{}}):e.customStore.value["~~global"]={}),e.customStore):Pt(()=>ref({"~~global":{}})))(),{useScopedRegle:r}=Yt(n,e?.customUseRegle),{useCollectScope:a}=Jt(n);return {useScopedRegle:r,useCollectScope:a}}var {useCollectScope:Rt,useScopedRegle:dt}=Ke();function Zt(e,t,n){let r=computed(()=>toValue(e)[t]);return computed(()=>{let o=n.find(s=>{if(s[t]&&"literal"in s[t]){let i=s[t].literal;if(me(i))return unref(i._params?.[0])===r.value}});if(o)return o;{let s=n.find(i=>_(i[t])&&!Object.keys(i[t]).some(g=>g==="literal"));return s||{}}})}function pt(e,t,n){return _(e[t])&&"$value"in e[t]&&e[t]?.$value===n}function er(e,t,n){let r=isRef(e)?toRef(e.value,"$fields"):toRef(e,"$fields"),a=ref();return watch(r,()=>{pt(r.value,t,n)?a.value=r.value:a.value=void 0;},{}),a}
2
+ export{Xe as InternalRuleType,et as createRule,Ke as createScopedUseRegle,Zt as createVariant,Lt as defineRegleConfig,Ht as extendRegleConfig,lt as flatErrors,ft as inferRules,Ae as mergeRegles,pt as narrowVariant,re as unwrapRuleParameters,Rt as useCollectScope,ze as useRegle,Oe as useRootStorage,dt as useScopedRegle,er as variantToRef};
@@ -568,6 +568,7 @@ function createReactiveRuleStatus({
568
568
  let scopeState = {};
569
569
  let $unwatchState;
570
570
  const $haveAsync = ref(false);
571
+ const $maybePending = ref(false);
571
572
  const { $pending, $valid, $metadata, $validating } = storage.trySetRuleStatusRef(`${path}.${ruleKey}`);
572
573
  function $watch() {
573
574
  scope = effectScope();
@@ -723,6 +724,7 @@ function createReactiveRuleStatus({
723
724
  try {
724
725
  $validating.value = true;
725
726
  let ruleResult = false;
727
+ $maybePending.value = true;
726
728
  if (isRuleDef(rule.value) && rule.value._async) {
727
729
  ruleResult = await $computeAsyncDebounce();
728
730
  } else {
@@ -750,6 +752,7 @@ function createReactiveRuleStatus({
750
752
  return false;
751
753
  } finally {
752
754
  $validating.value = false;
755
+ $maybePending.value = false;
753
756
  }
754
757
  }
755
758
  function $reset() {
@@ -770,6 +773,7 @@ function createReactiveRuleStatus({
770
773
  $valid,
771
774
  $metadata,
772
775
  $haveAsync,
776
+ $maybePending,
773
777
  $validating,
774
778
  $parse,
775
779
  $unwatch,
@@ -998,7 +1002,7 @@ function createReactiveFieldStatus({
998
1002
  return false;
999
1003
  } else if (!$rewardEarly2.value || $rewardEarly2.value && triggerPunishment2.value) {
1000
1004
  return Object.entries($rules.value).some(([_, ruleResult]) => {
1001
- return !ruleResult.$valid;
1005
+ return !(ruleResult.$valid && !ruleResult.$maybePending);
1002
1006
  });
1003
1007
  }
1004
1008
  return false;
@@ -1015,7 +1019,7 @@ function createReactiveFieldStatus({
1015
1019
  return false;
1016
1020
  } else if ($inactive.value) {
1017
1021
  return false;
1018
- } else if ($dirty.value && !isEmpty(state.value) && !$validating2.value) {
1022
+ } else if ($dirty.value && !isEmpty(state.value) && !$validating2.value && !$pending.value) {
1019
1023
  if (schemaMode) {
1020
1024
  return !schemaErrors?.value?.length;
1021
1025
  } else {
@@ -1967,7 +1971,15 @@ function createReactiveNestedStatus({
1967
1971
  });
1968
1972
  if (fields.length) {
1969
1973
  return fields.every(([_, statusOrField]) => {
1970
- return statusOrField?.$correct || statusOrField.$anyDirty && !statusOrField.$invalid;
1974
+ if (commonArgs.schemaMode) {
1975
+ return statusOrField.$correct;
1976
+ } else if (isFieldStatus(statusOrField)) {
1977
+ if ("required" in statusOrField.$rules && statusOrField.$rules.required.$active) {
1978
+ return statusOrField?.$correct;
1979
+ }
1980
+ return !statusOrField.$invalid && !statusOrField.$pending;
1981
+ }
1982
+ return statusOrField?.$correct;
1971
1983
  });
1972
1984
  }
1973
1985
  return false;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@regle/core",
3
- "version": "1.1.0-beta.3",
3
+ "version": "1.1.0-beta.5",
4
4
  "description": "Headless form validation library for Vue 3",
5
5
  "peerDependencies": {
6
6
  "pinia": ">=2.2.5",