@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.
- package/dist/regle-core.d.ts +24 -12
- package/dist/regle-core.min.mjs +2 -2
- package/dist/regle-core.mjs +15 -3
- package/package.json +1 -1
package/dist/regle-core.d.ts
CHANGED
|
@@ -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
|
|
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, [
|
|
1948
|
-
alphaNum: RegleRuleWithParamsDefinition<string | number, [
|
|
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?:
|
|
2001
|
+
options?: CommonComparisonOptions
|
|
1988
2002
|
], false, boolean>;
|
|
1989
|
-
maxValue: RegleRuleWithParamsDefinition<number, [count: number, options?:
|
|
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?:
|
|
2006
|
+
options?: CommonComparisonOptions
|
|
1993
2007
|
], false, boolean>;
|
|
1994
|
-
minValue: RegleRuleWithParamsDefinition<number, [count: number, options?:
|
|
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
|
|
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 };
|
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,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,
|
|
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};
|
package/dist/regle-core.mjs
CHANGED
|
@@ -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
|
-
|
|
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;
|