@regle/core 0.6.1-beta.1 → 0.7.0
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.cjs +201 -105
- package/dist/regle-core.d.cts +8 -5
- package/dist/regle-core.d.ts +8 -5
- package/dist/regle-core.min.cjs +2 -2
- package/dist/regle-core.min.mjs +2 -2
- package/dist/regle-core.mjs +201 -105
- package/package.json +2 -1
package/dist/regle-core.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { MaybeRef, Ref, UnwrapRef, UnwrapNestedRefs, Raw, MaybeRefOrGetter
|
|
1
|
+
import { MaybeRef, Ref, UnwrapRef, UnwrapNestedRefs, Raw, MaybeRefOrGetter } from 'vue';
|
|
2
2
|
|
|
3
3
|
type Prettify<T> = T extends infer R ? {
|
|
4
4
|
[K in keyof R]: R[K];
|
|
@@ -591,7 +591,7 @@ type useRegleFn<TCustomRules extends Partial<AllRulesDeclarations>, TShortcuts e
|
|
|
591
591
|
declare const useRegle: useRegleFn<Partial<AllRulesDeclarations>, RegleShortcutDefinition<any>>;
|
|
592
592
|
|
|
593
593
|
interface inferRulesFn<TCustomRules extends Partial<AllRulesDeclarations>> {
|
|
594
|
-
<TState extends Record<string, any>, TRules extends ReglePartialRuleTree<Unwrap<TState>, Partial<AllRulesDeclarations> & TCustomRules> & TValid, TValid = isDeepExact<NoInferLegacy<TRules>, ReglePartialRuleTree<Unwrap<TState>, Partial<AllRulesDeclarations> & TCustomRules>> extends true ? {} :
|
|
594
|
+
<TState extends Record<string, any>, TRules extends ReglePartialRuleTree<Unwrap<TState>, Partial<AllRulesDeclarations> & TCustomRules> & TValid, TValid = isDeepExact<NoInferLegacy<TRules>, ReglePartialRuleTree<Unwrap<TState>, Partial<AllRulesDeclarations> & TCustomRules>> extends true ? {} : MismatchInfo<NoInferLegacy<TRules>, ReglePartialRuleTree<Unwrap<TState>, Partial<AllRulesDeclarations> & TCustomRules>>>(state: MaybeRef<TState> | DeepReactiveState<TState> | undefined, rulesFactory: TRules): NoInferLegacy<TRules>;
|
|
595
595
|
<TState extends PrimitiveTypes, TRules extends RegleRuleDecl>(state: MaybeRef<TState>, rulesFactory: TRules): NoInferLegacy<TRules>;
|
|
596
596
|
}
|
|
597
597
|
/**
|
|
@@ -603,13 +603,16 @@ interface inferRulesFn<TCustomRules extends Partial<AllRulesDeclarations>> {
|
|
|
603
603
|
*/
|
|
604
604
|
declare const inferRules: inferRulesFn<Partial<AllRulesDeclarations>>;
|
|
605
605
|
|
|
606
|
-
declare function useRootStorage({ initialState, options, scopeRules, state, customRules, shortcuts, }: {
|
|
607
|
-
scopeRules:
|
|
606
|
+
declare function useRootStorage({ initialState, options, scopeRules, state, customRules, shortcuts, schemaErrors, schemaMode, onValidate, }: {
|
|
607
|
+
scopeRules: Ref<$InternalReglePartialRuleTree>;
|
|
608
608
|
state: Ref<Record<string, any>>;
|
|
609
609
|
options: ResolvedRegleBehaviourOptions;
|
|
610
610
|
initialState: Ref<Record<string, any>>;
|
|
611
611
|
customRules?: () => CustomRulesDeclarationTree;
|
|
612
612
|
shortcuts: RegleShortcutDefinition | undefined;
|
|
613
|
+
schemaErrors?: Ref<Partial<$InternalRegleErrorTree> | undefined>;
|
|
614
|
+
schemaMode?: boolean;
|
|
615
|
+
onValidate?: () => Promise<$InternalRegleResult>;
|
|
613
616
|
}): {
|
|
614
617
|
regle: $InternalRegleStatus | undefined;
|
|
615
618
|
};
|
|
@@ -1688,4 +1691,4 @@ declare function defineRegleConfig<TShortcuts extends RegleShortcutDefinition<TC
|
|
|
1688
1691
|
inferRules: inferRulesFn<TCustomRules>;
|
|
1689
1692
|
};
|
|
1690
1693
|
|
|
1691
|
-
export { type $InternalRegleStatus, type AllRulesDeclarations, type DeepMaybeRef, type DeepReactiveState, type FormRuleDeclaration, type InferRegleRoot, type InferRegleRule, type InferRegleRules, type InferRegleShortcuts, type InferRegleStatusType, type InlineRuleDeclaration, InternalRuleType, type JoinDiscriminatedUnions, type LocalRegleBehaviourOptions, type Maybe, 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 RegleStatus, type RegleUniversalParams, type RegleValidationErrors, type RegleValidationGroupEntry, type RegleValidationGroupOutput, type RegleRuleTree as RegleValidationTree, type ResolvedRegleBehaviourOptions, type Unwrap, type UnwrapRegleUniversalParams, type UnwrapRuleWithParams, createRule, defineRegleConfig, inferRules, unwrapRuleParameters, useRegle, useRootStorage };
|
|
1694
|
+
export { type $InternalRegleStatus, type AllRulesDeclarations, type DeepMaybeRef, type DeepReactiveState, type FormRuleDeclaration, type InferRegleRoot, type InferRegleRule, type InferRegleRules, type InferRegleShortcuts, type InferRegleStatusType, type InlineRuleDeclaration, InternalRuleType, type JoinDiscriminatedUnions, type LocalRegleBehaviourOptions, type Maybe, type MismatchInfo, 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 RegleStatus, type RegleUniversalParams, type RegleValidationErrors, type RegleValidationGroupEntry, type RegleValidationGroupOutput, type RegleRuleTree as RegleValidationTree, type ResolvedRegleBehaviourOptions, type Unwrap, type UnwrapRegleUniversalParams, type UnwrapRuleWithParams, createRule, defineRegleConfig, inferRules, unwrapRuleParameters, useRegle, useRootStorage };
|
package/dist/regle-core.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { MaybeRef, Ref, UnwrapRef, UnwrapNestedRefs, Raw, MaybeRefOrGetter
|
|
1
|
+
import { MaybeRef, Ref, UnwrapRef, UnwrapNestedRefs, Raw, MaybeRefOrGetter } from 'vue';
|
|
2
2
|
|
|
3
3
|
type Prettify<T> = T extends infer R ? {
|
|
4
4
|
[K in keyof R]: R[K];
|
|
@@ -591,7 +591,7 @@ type useRegleFn<TCustomRules extends Partial<AllRulesDeclarations>, TShortcuts e
|
|
|
591
591
|
declare const useRegle: useRegleFn<Partial<AllRulesDeclarations>, RegleShortcutDefinition<any>>;
|
|
592
592
|
|
|
593
593
|
interface inferRulesFn<TCustomRules extends Partial<AllRulesDeclarations>> {
|
|
594
|
-
<TState extends Record<string, any>, TRules extends ReglePartialRuleTree<Unwrap<TState>, Partial<AllRulesDeclarations> & TCustomRules> & TValid, TValid = isDeepExact<NoInferLegacy<TRules>, ReglePartialRuleTree<Unwrap<TState>, Partial<AllRulesDeclarations> & TCustomRules>> extends true ? {} :
|
|
594
|
+
<TState extends Record<string, any>, TRules extends ReglePartialRuleTree<Unwrap<TState>, Partial<AllRulesDeclarations> & TCustomRules> & TValid, TValid = isDeepExact<NoInferLegacy<TRules>, ReglePartialRuleTree<Unwrap<TState>, Partial<AllRulesDeclarations> & TCustomRules>> extends true ? {} : MismatchInfo<NoInferLegacy<TRules>, ReglePartialRuleTree<Unwrap<TState>, Partial<AllRulesDeclarations> & TCustomRules>>>(state: MaybeRef<TState> | DeepReactiveState<TState> | undefined, rulesFactory: TRules): NoInferLegacy<TRules>;
|
|
595
595
|
<TState extends PrimitiveTypes, TRules extends RegleRuleDecl>(state: MaybeRef<TState>, rulesFactory: TRules): NoInferLegacy<TRules>;
|
|
596
596
|
}
|
|
597
597
|
/**
|
|
@@ -603,13 +603,16 @@ interface inferRulesFn<TCustomRules extends Partial<AllRulesDeclarations>> {
|
|
|
603
603
|
*/
|
|
604
604
|
declare const inferRules: inferRulesFn<Partial<AllRulesDeclarations>>;
|
|
605
605
|
|
|
606
|
-
declare function useRootStorage({ initialState, options, scopeRules, state, customRules, shortcuts, }: {
|
|
607
|
-
scopeRules:
|
|
606
|
+
declare function useRootStorage({ initialState, options, scopeRules, state, customRules, shortcuts, schemaErrors, schemaMode, onValidate, }: {
|
|
607
|
+
scopeRules: Ref<$InternalReglePartialRuleTree>;
|
|
608
608
|
state: Ref<Record<string, any>>;
|
|
609
609
|
options: ResolvedRegleBehaviourOptions;
|
|
610
610
|
initialState: Ref<Record<string, any>>;
|
|
611
611
|
customRules?: () => CustomRulesDeclarationTree;
|
|
612
612
|
shortcuts: RegleShortcutDefinition | undefined;
|
|
613
|
+
schemaErrors?: Ref<Partial<$InternalRegleErrorTree> | undefined>;
|
|
614
|
+
schemaMode?: boolean;
|
|
615
|
+
onValidate?: () => Promise<$InternalRegleResult>;
|
|
613
616
|
}): {
|
|
614
617
|
regle: $InternalRegleStatus | undefined;
|
|
615
618
|
};
|
|
@@ -1688,4 +1691,4 @@ declare function defineRegleConfig<TShortcuts extends RegleShortcutDefinition<TC
|
|
|
1688
1691
|
inferRules: inferRulesFn<TCustomRules>;
|
|
1689
1692
|
};
|
|
1690
1693
|
|
|
1691
|
-
export { type $InternalRegleStatus, type AllRulesDeclarations, type DeepMaybeRef, type DeepReactiveState, type FormRuleDeclaration, type InferRegleRoot, type InferRegleRule, type InferRegleRules, type InferRegleShortcuts, type InferRegleStatusType, type InlineRuleDeclaration, InternalRuleType, type JoinDiscriminatedUnions, type LocalRegleBehaviourOptions, type Maybe, 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 RegleStatus, type RegleUniversalParams, type RegleValidationErrors, type RegleValidationGroupEntry, type RegleValidationGroupOutput, type RegleRuleTree as RegleValidationTree, type ResolvedRegleBehaviourOptions, type Unwrap, type UnwrapRegleUniversalParams, type UnwrapRuleWithParams, createRule, defineRegleConfig, inferRules, unwrapRuleParameters, useRegle, useRootStorage };
|
|
1694
|
+
export { type $InternalRegleStatus, type AllRulesDeclarations, type DeepMaybeRef, type DeepReactiveState, type FormRuleDeclaration, type InferRegleRoot, type InferRegleRule, type InferRegleRules, type InferRegleShortcuts, type InferRegleStatusType, type InlineRuleDeclaration, InternalRuleType, type JoinDiscriminatedUnions, type LocalRegleBehaviourOptions, type Maybe, type MismatchInfo, 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 RegleStatus, type RegleUniversalParams, type RegleValidationErrors, type RegleValidationGroupEntry, type RegleValidationGroupOutput, type RegleRuleTree as RegleValidationTree, type ResolvedRegleBehaviourOptions, type Unwrap, type UnwrapRegleUniversalParams, type UnwrapRuleWithParams, createRule, defineRegleConfig, inferRules, unwrapRuleParameters, useRegle, useRootStorage };
|
package/dist/regle-core.min.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var vue=require('vue');function L(e){return e==null?!0:e instanceof Date?isNaN(e.getTime()):Array.isArray(e)?!1:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}var ot=Symbol("regle-rule");function Pt(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 H(e){let t=e,r={}.toString.call(e).slice(8,-1);if(r=="Set"&&(t=new Set([...e].map(n=>H(n)))),r=="Map"&&(t=new Map([...e].map(n=>[H(n[0]),H(n[1])]))),r=="Date"&&(t=new Date(e.getTime())),r=="RegExp"&&(t=RegExp(e.source,Pt(e))),r=="Array"||r=="Object"){t=Array.isArray(e)?[]:{};for(let n in e)t[n]=H(e[n]);}return t}function Q(e){return e instanceof Date||e instanceof File?!1:typeof e=="object"&&e!==null&&!Array.isArray(e)}function _e(e){if(L(e))return !1;try{let t=null;if(e instanceof Date)t=e;else if(typeof e=="string"){let r=new Date(e);if(r.toString()==="Invalid Date")return !1;t=r;}return !!t}catch{return !1}}function je(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)}var Ve=(r=>(r.Inline="__inline",r.Async="__async",r))(Ve||{});function ut(e,t){return e.some(r=>r[t])}function it(e,t){return e.reduce((r,n)=>{let l=n[t]||[];return r.concat(l)},[])}function J(e){try{return e.map(t=>vue.toValue(t))}catch{return []}}function st(e){return e.map(t=>t instanceof Function?vue.computed(t):vue.isRef(t)?t:vue.toRef(()=>t))}function ct(e){let n=e.toString().replace(/\/\/.*$/gm,"").replace(/\/\*[\s\S]*?\*\//g,"").match(/^(?:async\s*)?(?:function\b.*?\(|\((.*?)\)|(\w+))\s*=>|\((.*?)\)\s*=>|function.*?\((.*?)\)|\((.*?)\)/);return n?(n[0]||n[1]||n[2]||n[3]||n[4]||"").split(",").map(p=>p.trim()).filter(p=>p.length>0).length:0}function Ne(e,...t){let{validator:r,type:n}=e,l=n==="__async"||r.constructor.name==="AsyncFunction";return {...{validator(d,...m){return e.validator(d,...J(m.length?m:t))},message(d){return typeof e.message=="function"?e.message({...d,$params:J(d?.$params?.length?d.$params:t)}):e.message},active(d){return typeof e.active=="function"?e.active({...d,$params:J(d?.$params?.length?d.$params:t)}):e.active??!0},tooltip(d){return typeof e.tooltip=="function"?e.tooltip({...d,$params:J(d?.$params?.length?d.$params:t)}):e.tooltip??[]},exec(d){let m=e.validator(d,...J(t)),$;return m instanceof Promise?m.then(g=>($=g,typeof $=="object"&&"$valid"in $?$.$valid:typeof $=="boolean"?$:!1)):($=m,typeof $=="object"&&"$valid"in $?$.$valid:typeof $=="boolean"?$:!1)}},_validator:e.validator,_message:e.message,_active:e.active,_tooltip:e.tooltip,_type:e.type,_message_patched:!1,_tooltip_patched:!1,_async:l,_params:st(t),_brand:ot}}function Ge(e){if(typeof e.validator=="function"){let r=Ne(e,...[]),n=e.async??e.validator.constructor.name==="AsyncFunction";if(ct(e.validator)>1){let l=function(...f){return Ne(e,...f)};return l.validator=r.validator,l.message=r.message,l.active=r.active,l.tooltip=r.tooltip,l.type=r.type,l.exec=r.exec,l._validator=r.validator,l._message=r.message,l._active=r.active,l._tooltip=r.tooltip,l._type=e.type,l._message_pacthed=!1,l._tooltip_pacthed=!1,l._async=n,l}else return r}throw new Error("Validator must be a function")}function ke(){let e=vue.shallowRef(new Map),t=vue.shallowRef(new Map),r=vue.shallowRef(new Map),n=vue.shallowRef(new Map),l=vue.shallowRef(new Map),f=vue.shallowRef(new Map);function p(o){let c=t.value.get(o);if(c)return c;{let i=vue.ref({});return t.value.set(o,i),i}}function d(o){let c=r.value.get(o);if(c)return c;{let i=vue.ref([]);return r.value.set(o,i),i}}function m(o,c,i){f.value.set(`${o}-${c}`,i);}function $(o,c){return f.value.get(`${o}-${c}`)}function g(o,c){o&&c!=null&&f.value.delete(`${o}-${c}`);}function V(o,c){n.value.set(o,c);}function M(o){return n.value.get(o)??!1}function a(o,c){e.value.set(o,c);}function T(o,c){let i=e.value.get(o);return i?C(c,i)?{valid:!0}:{valid:!1}:void 0}function C(o,c){let i=Object.keys(c),G=Object.keys(o);return G.length!==i.length||!G.every(k=>i.includes(k))?!1:G.every(k=>{let w=o[k],b=c[k];return !b||!w||typeof w=="function"||typeof b=="function"||typeof w=="number"||typeof w=="boolean"?!1:w._params?w._params?.every((q,y)=>{if(typeof b=="number"||typeof b=="boolean")return !0;{let I=J(b._params),W=J(w._params);return I?.[y]===W?.[y]}}):!0})}function N(o){let c=l.value.get(o);if(c)return c;{let i=vue.ref(!1),G=vue.ref(!0),z=vue.ref({}),k=vue.ref(!1);return l.value.set(o,{$pending:i,$valid:G,$metadata:z,$validating:k}),{$pending:i,$valid:G,$metadata:z,$validating:k}}}return vue.getCurrentScope()&&vue.onScopeDispose(()=>{e.value.clear(),t.value.clear(),r.value.clear(),n.value.clear(),l.value.clear(),f.value.clear();}),{addRuleDeclEntry:a,setDirtyEntry:V,checkRuleDeclEntry:T,getDirtyState:M,trySetRuleStatusRef:N,getFieldsEntry:p,getCollectionsEntry:d,getArrayStatus:$,addArrayStatus:m,deleteArrayStatus:g,arrayStatusStorage:f}}function Te(e){return e.value instanceof Date||e.value instanceof File?!1:Q(e.value)}function We(e,t,r){let n=vue.effectScope(),l;return e instanceof Function?l=n.run(()=>e(t,r??0)):l=e,{scope:n,unwrapped:l}}function De(e,t,r){let n,l=(...f)=>new Promise(p=>{clearTimeout(n),n=setTimeout(()=>{n=void 0,Promise.resolve(e.apply(this,[...f])).then(p);},t);});return l.cancel=()=>{clearTimeout(n),n=void 0;},l}function Gt(e,t){let r=String(e).split("."),n=String(t).split(".");for(let l=0;l<Math.min(r.length,n.length);l++){let f=Number(r[l]),p=Number(n[l]);if(f>p)return 1;if(p>f)return -1;if(!isNaN(f)&&isNaN(p))return 1;if(isNaN(f)&&!isNaN(p))return -1}return 0}var xe=Gt(vue.version,"3.5.0")!==-1;function kt(){return Math.floor(Math.random()*Date.now()).toString()}function Ce(){return typeof window>"u"?kt():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function ft(e,t){return Te(e)||Q(t.value)&&!L(t.value)&&!Object.entries(t.value).some(([r,n])=>$e(n)||typeof n=="function")}function Rt(e,t){return !!e.value&&Q(e.value)&&"$each"in e.value||Array.isArray(t.value)}function pt(e){return !!e.value&&Q(e.value)}function $e(e){return Q(e)&&"_validator"in e}function ge(e){return typeof e.value!="function"}function dt(e){return Q(e)&&"$fields"in e}function yt(e){return !!e&&"$rules"in e}function Ue({field:e,silent:t=!1}){return Object.entries(e.$rules??{}).map(([r,n])=>t||!n.$valid&&e.$dirty&&!n.$validating?n.$message:null).filter(r=>!!r).reduce((r,n)=>typeof n=="string"?r?.concat([n]):r?.concat(n),[]).concat(e.$dirty?e.$externalErrors??[]:[])}function vt({field:e}){return Object.entries(e.$rules??{}).map(([t,r])=>r.$tooltip).filter(t=>!!t).reduce((t,r)=>typeof r=="string"?t?.concat([r]):t?.concat(r),[])}function mt({fieldProperties:e,customMessages:t,rule:r,ruleKey:n,state:l,path:f,storage:p,$debounce:d,modifiers:m}){let $=vue.effectScope(),g={},V,M=vue.ref(!1),{$pending:a,$valid:T,$metadata:C,$validating:N}=p.trySetRuleStatusRef(`${f}.${n}`);function o(){$=vue.effectScope(),g=$.run(()=>{let b=vue.computed(()=>({$value:l.value,$error:e.$error.value,$dirty:e.$dirty.value,$pending:e.$pending.value,$valid:e.$valid.value,$invalid:e.$invalid.value,$rule:{$valid:T.value,$invalid:!T.value,$pending:a.value},$params:D.value,...C.value})),q=vue.computed(()=>ge(r)?typeof r.value.active=="function"?r.value.active(b.value):!!r.value.active:!0);function y(u){let s="",S=t?t[n]?.[u]:void 0;if(S&&(typeof S=="function"?s=S(b.value):s=S),ge(r)){let R=`_${u}_patched`;S&&!r.value[R]||(typeof r.value[u]=="function"?s=r.value[u](b.value):s=r.value[u]??"");}return s}let I=vue.computed(()=>{let u=y("message");return L(u)&&(u="This field is not valid"),u}),W=vue.computed(()=>y("tooltip")),te=vue.computed(()=>ge(r)&&r.value.type?r.value.type:n),ae=vue.computed(()=>ge(r)?r.value.validator:r.value),D=vue.computed(()=>typeof r.value=="function"?[]:J(r.value._params??[])),P=vue.computed(()=>`${f}.${te.value}`);return {$active:q,$message:I,$type:te,$validator:ae,$params:D,$path:P,$tooltip:W}}),V=vue.watch(g?.$params,()=>{(m.$autoDirty.value||m.$rewardEarly.value&&e.$error.value)&&z();});}o();function c(){T.value=!0,e.$dirty.value&&(a.value=!0);}async function i(){let b=!1;try{let q=g.$validator.value,y=q(l.value,...g.$params.value),I=l.value;c();let W;if(y instanceof Promise?W=await y:W=y,l.value!==I)return !0;if(typeof W=="boolean")b=W;else {let{$valid:te,...ae}=W;b=te,C.value=ae;}}catch{b=!1;}finally{a.value=!1;}return b}let G=De(i,d??200);async function z(){try{N.value=!0;let b=!1;if($e(r.value)&&r.value._async)b=await G();else {let q=g.$validator.value,y=q(l.value,...g.$params.value);if(y 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(y!=null)if(typeof y=="boolean")b=y;else {let{$valid:I,...W}=y;b=I,C.value=W;}}return T.value=b,b}catch{return !1}finally{N.value=!1;}}function k(){T.value=!0,C.value={},a.value=!1,N.value=!1,o();}function w(){V(),$.stop(),$=vue.effectScope();}return vue.reactive({...g,$pending:a,$valid:T,$metadata:C,$haveAsync:M,$validating:N,$validate:z,$unwatch:w,$watch:o,$reset:k})}function Ie({state:e,rulesDef:t,customMessages:r,path:n,fieldName:l,storage:f,options:p,externalErrors:d,onUnwatch:m,$isArray:$,initialState:g,shortcuts:V}){let M=vue.effectScope(),a,T=[],C,N,o,c,i=()=>{};function G(){let v=t.value,A=f.checkRuleDeclEntry(n,v);I.value=Object.fromEntries(Object.entries(v).filter(([_])=>_.startsWith("$"))),w(),y.value=Object.fromEntries(Object.entries(t.value).filter(([_])=>!_.startsWith("$")).map(([_,Z])=>{if(Z){let re=vue.toRef(()=>Z);return [_,mt({fieldProperties:{$dirty:a.$dirty,$error:a.$error,$invalid:a.$invalid,$pending:a.$pending,$valid:a.$valid},modifiers:{$autoDirty:a.$autoDirty,$rewardEarly:a.$rewardEarly},customMessages:r,rule:re,ruleKey:_,state:e,path:n,storage:f,$debounce:I.value.$debounce})]}return []}).filter(_=>!!_.length)),a.processShortcuts(),z(),A?.valid!=null&&(a.$dirty.value=f.getDirtyState(n),a.$dirty.value&&i()),f.addRuleDeclEntry(n,v);}function z(){i=a.$debounce.value?De(q,a.$debounce.value??a.$haveAnyAsyncRule?100:0):q;}function k(){y.value&&Object.entries(y.value).forEach(([v,A])=>{A.$unwatch();}),o(),a.$dirty.value&&f.setDirtyEntry(n,a.$dirty.value),C?.(),N?.(),M.stop(),M=vue.effectScope(),T.forEach(v=>v.stop()),T=[],m?.(),c?.();}function w(){y.value&&Object.entries(y.value).forEach(([v,A])=>{A.$watch();}),a=M.run(()=>{let v=vue.ref(!1),A=vue.ref(!1),_=vue.computed(()=>v.value),Z=vue.computed(()=>I.value.$debounce),re=vue.computed(()=>I.value.$lazy!=null?I.value.$lazy:vue.unref(p.lazy)!=null?vue.unref(p.lazy):!1),h=vue.computed(()=>I.value.$rewardEarly!=null?I.value.$rewardEarly:vue.unref(p.rewardEarly)!=null?vue.unref(p.rewardEarly):!1),O=vue.computed(()=>I.value.$clearExternalErrorsOnChange!=null?I.value.$clearExternalErrorsOnChange:vue.unref(p.clearExternalErrorsOnChange)!=null?vue.unref(p.clearExternalErrorsOnChange):!0),E=vue.computed(()=>I.value.$autoDirty!=null?I.value.$autoDirty:vue.unref(p.autoDirty)!=null?vue.unref(p.autoDirty):!h.value),j=vue.computed(()=>Object.entries(y.value).some(([K,le])=>le.$validating)),ve=vue.computed({get:()=>e.value,set(K){C(),e.value=K,b();}}),Ae=vue.computed(()=>fe.value&&!me.value&&v.value),Qe=vue.computed(()=>Ae.value?Ue({field:{$dirty:v.value,$externalErrors:d?.value,$rules:y.value}}):[]),Fe=vue.computed(()=>v.value?_e(g.value)&&_e(e.value)?je(g.value).getDate()!==je(e.value).getDate():g.value==null?!!e.value:Array.isArray(e.value)&&Array.isArray(g.value)?e.value.length!==g.value.length:g.value!==e.value:!1),Xe=vue.computed(()=>Fe.value),Ze=vue.computed(()=>vt({field:{$rules:y.value}})),Ke=vue.computed(()=>Ue({field:{$dirty:v.value,$externalErrors:d?.value,$rules:y.value},silent:!0})),et=vue.computed(()=>E.value?_.value&&!(fe.value||me.value):!(fe.value||me.value)),me=vue.computed(()=>A.value||!h.value?Object.entries(y.value).some(([K,le])=>le.$pending):!1),fe=vue.computed(()=>d?.value?.length?!0:L(y.value)?!1:!h.value||h.value&&A.value?Object.entries(y.value).some(([K,le])=>!le.$valid):!1),tt=vue.computed(()=>l),Me=vue.computed(()=>!!L(y.value)),rt=vue.computed(()=>d?.value?.length||Me.value?!1:v.value&&!L(e.value)&&!j.value?Object.values(y.value).every(K=>K.$valid&&K.$active):!1),It=vue.computed(()=>Object.entries(y.value).some(([K,le])=>le.$haveAsync));function wt(){V?.fields&&Object.entries(V.fields).forEach(([K,le])=>{let at=vue.effectScope();nt[K]=at.run(()=>{let lt=vue.ref();return vue.watchEffect(()=>{lt.value=le(vue.reactive({$dirty:v,$externalErrors:d?.value??[],$value:e,$silentValue:ve,$rules:y,$error:Ae,$pending:me,$invalid:fe,$valid:rt,$errors:Qe,$ready:et,$silentErrors:Ke,$anyDirty:_,$tooltips:Ze,$name:tt,$inactive:Me,$edited:Fe,$anyEdited:Xe}));}),lt}),T.push(at);});}let nt={};return vue.watch(fe,K=>{K||(A.value=!1);}),{$error:Ae,$pending:me,$invalid:fe,$valid:rt,$debounce:Z,$lazy:re,$errors:Qe,$ready:et,$silentErrors:Ke,$rewardEarly:h,$autoDirty:E,$clearExternalErrorsOnChange:O,$anyDirty:_,$edited:Fe,$anyEdited:Xe,$name:tt,$haveAnyAsyncRule:It,$shortcuts:nt,$validating:j,$tooltips:Ze,$dirty:v,triggerPunishment:A,processShortcuts:wt,$silentValue:ve,$inactive:Me}}),b(),o=vue.watch(a.$dirty,()=>{f.setDirtyEntry(n,a.$dirty.value);}),N=vue.watch(a.$valid,v=>{a.$rewardEarly.value&&v&&(a.triggerPunishment.value=!1);}),c=vue.watch(a.$haveAnyAsyncRule,z);}function b(){C=vue.watch(e,()=>{a.$autoDirty.value&&(a.$dirty.value||(a.$dirty.value=!0)),t.value instanceof Function&&G(),(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&i(),a.$rewardEarly.value!==!0&&a.$clearExternalErrorsOnChange.value&&u();},{deep:$?!0:xe?1:!0,flush:"post"});}function q(){Object.values(y.value).forEach(v=>{v.$validate();});}let y=vue.ref({}),I=vue.ref({});G();function W(){u(),a.$dirty.value=!1,a.triggerPunishment.value=!1,f.setDirtyEntry(n,!1),g.value=Q(e.value)?H(e.value):Array.isArray(e.value)?[...e.value]:e.value,Object.entries(y.value).forEach(([v,A])=>{A.$reset();}),!a.$lazy.value&&a.$autoDirty.value&&Object.values(y.value).forEach(v=>v.$validate());}function te(v=!0,A=!1){a.$dirty.value||(a.$dirty.value=!0),A&&v?(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&i():v&&i();}async function ae(){try{let v=e.value;if(a.triggerPunishment.value=!0,!a.$dirty.value)a.$dirty.value=!0;else if(a.$autoDirty.value&&a.$dirty.value&&!a.$pending.value)return {result:!a.$error.value,data:v};return L(y.value)?{result:!0,data:v}:{result:(await Promise.allSettled(Object.entries(y.value).map(([Z,re])=>re.$validate()))).every(Z=>Z.status==="fulfilled"?Z.value===!0:!1),data:v}}catch{return {result:!1,data:e.value}}}function D(){k(),e.value=H(g),W();}function P(v=!0){return a.$dirty.value?e.value:v?{_null:!0}:null}function u(){d?.value?.length&&(d.value=[]);}!a.$lazy.value&&!a.$dirty.value&&a.$autoDirty.value&&i();let{$shortcuts:s,$validating:S,$autoDirty:R,$rewardEarly:x,$clearExternalErrorsOnChange:B,$haveAnyAsyncRule:ee,$debounce:X,$lazy:oe,...ce}=a;return vue.reactive({...ce,$externalErrors:d,$value:e,$rules:y,...s,$reset:W,$touch:te,$validate:ae,$unwatch:k,$watch:w,$resetAll:D,$extractDirtyFields:P,$clearExternalErrors:u})}function He({$id:e,path:t,index:r,options:n,storage:l,stateValue:f,customMessages:p,rules:d,externalErrors:m,initialState:$,shortcuts:g,fieldName:V}){let M=d.$key?d.$key:Ce(),a=`${t}.${String(M)}`;typeof f.value=="object"&&f.value!=null&&(f.value.$id?a=`${t}.${f.value.$id}`:Object.defineProperties(f.value,{$id:{value:M,enumerable:!1,configurable:!1,writable:!1}}));let T=be({state:f,rulesDef:vue.toRef(()=>d),customMessages:p,path:a,storage:l,options:n,externalErrors:vue.toRef(m?.value??[],r),initialState:$,shortcuts:g,fieldName:V});if(T){let C=f.value?.$id;T.$id=C??String(M),l.addArrayStatus(e,T.$id,T);}return T}function ht({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:f,externalErrors:p,initialState:d,shortcuts:m,fieldName:$}){let g=vue.effectScope(),V,M=vue.effectScope(),a,T=[];if(!Array.isArray(e.value)&&!t.value.$each)return;let C=vue.ref(),N=vue.ref(e.value),o,c=vue.ref({}),i=l.getCollectionsEntry(n);a=M.run(()=>({isPrimitiveArray:vue.computed(()=>Array.isArray(e.value)&&e.value.length?e.value.every(s=>typeof s!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(s=>$e(s)||typeof s=="function"):!1)})),G(),w();function G(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?(C.value=Ce(),Object.defineProperties(e.value,{$id:{value:C.value,enumerable:!1,configurable:!1,writable:!1}})):e.value?.$id&&(C.value=e.value.$id)),!a.isPrimitiveArray.value&&(N.value=c.value.$value,Array.isArray(e.value)?i.value=e.value.map((u,s)=>{let{scope:S,unwrapped:R}=We(t.value.$each,vue.toRef(()=>u),s);S&&T.push(S);let x=vue.toRef(d.value??[],s),B=He({$id:C.value,path:n,customMessages:r,rules:R??{},stateValue:vue.toRef(()=>u),index:s,options:f,storage:l,externalErrors:vue.toRef(p?.value??{},"$each"),initialState:x,shortcuts:m,fieldName:$});return B||null}).filter(u=>!!u):i.value=[],c.value=Ie({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:f,externalErrors:vue.toRef(p?.value??{},"$self"),$isArray:!0,initialState:d,shortcuts:m,fieldName:$}));}function z(){if(Array.isArray(e.value)){let u=H(i.value);i.value=e.value.map((s,S)=>{let R=vue.toRef(()=>s);if(s.$id&&i.value.find(x=>x.$id===s.$id)){let x=l.getArrayStatus(C.value,s.$id);return x?(x.$value=R,x):null}else {let{scope:x,unwrapped:B}=We(t.value.$each,R,S);if(x&&T.push(x),B){let ee=He({$id:C.value,path:n,customMessages:r,rules:B,stateValue:R,index:S,options:f,storage:l,externalErrors:vue.toRef(p?.value??{},"$each"),initialState:vue.toRef(d.value??[],S),shortcuts:m,fieldName:$});return ee||null}}}).filter(s=>!!s),u.filter(s=>!e.value.find(S=>s.$id===S.$id)).forEach((s,S)=>{l.deleteArrayStatus(C.value,S.toString());});}else i.value=[];}function k(){o=vue.watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?G():z();},{deep:xe?1:!0,flush:"pre"});}function w(){k(),g=vue.effectScope(),V=g.run(()=>{let u=vue.computed({get:()=>e.value,set(h){o(),e.value=h,k();}}),s=vue.computed(()=>c.value.$dirty&&!!i.value.length&&i.value.every(h=>h.$dirty)),S=vue.computed(()=>c.value.$anyDirty||i.value.some(h=>h.$anyDirty)),R=vue.computed(()=>c.value.$invalid||i.value.some(h=>h.$invalid)),x=vue.computed(()=>(L(c.value.$rules)?!0:c.value.$valid)&&i.value.every(h=>h.$valid)),B=vue.computed(()=>c.value.$error||i.value.some(h=>h.$error)),ee=vue.computed(()=>!(R.value||X.value)),X=vue.computed(()=>c.value.$pending||i.value.some(h=>h.$pending)),oe=vue.computed(()=>!!i.value.length&&i.value.every(h=>h.$edited)),ce=vue.computed(()=>c.value.$anyEdited||i.value.some(h=>h.$anyEdited)),v=vue.computed(()=>({$self:c.value.$errors,$each:i.value.map(h=>h.$errors)})),A=vue.computed(()=>({$self:c.value.$silentErrors,$each:i.value.map(h=>h.$silentErrors)})),_=vue.computed(()=>$);function Z(){m?.collections&&Object.entries(m?.collections).forEach(([h,O])=>{let E=vue.effectScope();re[h]=E.run(()=>{let j=vue.ref();return vue.watchEffect(()=>{j.value=O(vue.reactive({$dirty:s,$error:B,$silentValue:u,$pending:X,$invalid:R,$valid:x,$errors:v,$ready:ee,$silentErrors:A,$anyDirty:S,$name:_,$each:i,$self:c,$value:e,$edited:oe,$anyEdited:ce}));}),j}),T.push(E);});}let re={};return Z(),{$dirty:s,$anyDirty:S,$invalid:R,$valid:x,$error:B,$pending:X,$errors:v,$silentErrors:A,$ready:ee,$name:_,$shortcuts:re,$silentValue:u,$edited:oe,$anyEdited:ce}}),a.isPrimitiveArray.value&&(console.warn(`${n} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`),o());}function b(){o&&o(),c.value&&c.value.$unwatch(),i.value&&i.value.forEach(u=>{"$dirty"in u&&u.$unwatch();}),g.stop(),g=vue.effectScope(),M.stop(),M=vue.effectScope(!0),T.forEach(u=>u.stop()),T=[];}function q(u=!0,s=!1){c.value.$touch(u,s),i.value.forEach(S=>{S.$touch(u,s);});}function y(){c.value.$reset(),i.value.forEach(u=>{u.$reset();});}async function I(){let u=e.value;try{return {result:(await Promise.allSettled([c.value.$validate(),...i.value.map(R=>R.$validate())])).every(R=>R.status==="fulfilled"?R.value.result===!0:!1),data:u}}catch{return {result:!1,data:u}}}function W(){c.value.$clearExternalErrors(),i.value.forEach(u=>{u.$clearExternalErrors();});}function te(u=!0){let s=i.value.map(S=>{if(dt(S))return S.$extractDirtyFields(u)});return u&&s.every(S=>L(S))&&(s=[]),s}function ae(){b(),e.value=H(d.value),y();}let{$shortcuts:D,...P}=V;return vue.reactive({$self:c,...P,...D,$each:i,$value:e,$validate:I,$unwatch:b,$watch:w,$touch:q,$reset:y,$resetAll:ae,$extractDirtyFields:te,$clearExternalErrors:W})}function Oe({rulesDef:e,state:t,path:r="",rootRules:n,externalErrors:l,validationGroups:f,initialState:p,fieldName:d,...m}){let $=vue.effectScope(),g,V=[],M=null,a=null,T=null;async function N(D=!0){let P=Object.entries(e.value),u=Object.fromEntries(P.filter(([R,x])=>!!x).map(([R,x])=>{if(x){let B=vue.toRef(t.value??{},R),ee=vue.toRef(()=>x),X=vue.toRef(l?.value??{},R),oe=vue.toRef(p?.value??{},R);return [R,be({state:B,rulesDef:ee,path:r?`${r}.${R}`:R,externalErrors:X,initialState:oe,fieldName:R,...m})]}return []})),s=Object.fromEntries(Object.entries(vue.unref(l)??{}).filter(([R,x])=>!(R in e.value)&&!!x).map(([R])=>{let x=vue.toRef(t.value??{},R),B=vue.toRef(p?.value??{},R);return [R,be({state:x,rulesDef:vue.computed(()=>({})),path:r?`${r}.${R}`:R,externalErrors:vue.toRef(l?.value??{},R),initialState:B,fieldName:R,...m})]})),S=Object.fromEntries(Object.entries(t.value??{}).filter(([R])=>!(R in e.value)&&!(R in(s.value??{}))).map(([R])=>{let x=vue.toRef(t.value??{},R),B=vue.toRef(p?.value??{},R);return [R,be({state:x,rulesDef:vue.computed(()=>({})),path:r?`${r}.${R}`:R,externalErrors:vue.toRef(l?.value??{},R),initialState:B,fieldName:R,...m})]}));o.value={...u,...s,...S},D&&k();}let o=m.storage.getFieldsEntry(r);N();function c(){a?.(),Object.values(o.value).forEach(D=>{D.$reset();}),p.value={...H(t.value)},G();}function i(D=!0,P=!1){Object.values(o.value).forEach(u=>{u.$touch(D,P);});}function G(){l?.value&&(a=vue.watch(l,()=>{w(),N();},{deep:!0}));}function z(){T=vue.watch(t,()=>{w(),N(),i(!0,!0);},{flush:"sync"});}function k(){n&&(M?.(),M=vue.watch(n,()=>{w(),N();},{deep:!0,flush:"post"}),G()),z(),$=vue.effectScope(),g=$.run(()=>{let D=vue.computed({get:()=>t.value,set(O){w(),t.value=O,N();}}),P=vue.computed(()=>!!Object.entries(o.value).length&&Object.entries(o.value).every(([O,E])=>E?.$dirty)),u=vue.computed(()=>Object.entries(o.value).some(([O,E])=>E?.$anyDirty)),s=vue.computed(()=>Object.entries(o.value).some(([O,E])=>E?.$invalid)),S=vue.computed(()=>{let O=Object.entries(o.value).filter(([E,j])=>yt(j)?!j.$inactive:!0);return O.length?O.every(([E,j])=>j?.$valid):!1}),R=vue.computed(()=>u.value&&!X.value&&s.value),x=vue.computed(()=>vue.unref(m.options.rewardEarly)!=null?vue.unref(m.options.rewardEarly):!1),B=vue.computed(()=>vue.unref(m.options.autoDirty)!=null?vue.unref(m.options.autoDirty):!x.value),ee=vue.computed(()=>B.value?u.value&&!(s.value||X.value):!(s.value||X.value)),X=vue.computed(()=>Object.entries(o.value).some(([O,E])=>E?.$pending)),oe=vue.computed(()=>Object.fromEntries(Object.entries(o.value).map(([O,E])=>[O,E?.$errors]))),ce=vue.computed(()=>Object.fromEntries(Object.entries(o.value).map(([O,E])=>[O,E?.$silentErrors]))),v=vue.computed(()=>!!Object.entries(o.value).length&&Object.entries(o.value).every(([O,E])=>E?.$edited)),A=vue.computed(()=>Object.entries(o.value).some(([O,E])=>E?.$anyEdited)),_=vue.computed(()=>d);function Z(){m.shortcuts?.nested&&Object.entries(m.shortcuts.nested).forEach(([O,E])=>{let j=vue.effectScope();h[O]=j.run(()=>{let ve=vue.ref();return vue.watchEffect(()=>{ve.value=E(vue.reactive({$dirty:P,$value:t,$silentValue:D,$error:R,$pending:X,$invalid:s,$valid:S,$ready:ee,$anyDirty:u,$name:_,$silentErrors:ce,$errors:oe,$fields:o,$edited:v,$anyEdited:A}));}),ve}),V.push(j);});}let re=vue.computed({get:()=>f?Object.fromEntries(Object.entries(f?.(o.value)??{}).map(([O,E])=>E.length?[O,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$valid"].map(j=>[j,ut(E,j)])),...Object.fromEntries(["$errors","$silentErrors"].map(j=>[j,it(E,j)]))}]:[])):{},set(){}}),h={};return Z(),{$dirty:P,$anyDirty:u,$invalid:s,$valid:S,$error:R,$pending:X,$errors:oe,$silentErrors:ce,$ready:ee,$name:_,$shortcuts:h,$groups:re,$silentValue:D,$edited:v,$anyEdited:A}});}function w(){M?.(),a?.(),T?.(),V.forEach(D=>D.stop()),V=[],$.stop(),o.value&&Object.entries(o.value).forEach(([D,P])=>{P.$unwatch();});}function b(){Object.entries(o.value).forEach(([D,P])=>{P.$clearExternalErrors();});}async function q(){w(),t.value=H({...p.value??{}}),c(),N();}function y(D){return D.filter(([P,u])=>Q(u)?!(u&&typeof u=="object"&&"_null"in u)&&!L(u):Array.isArray(u)?u.length:!0)}function I(D=!0){let P=Object.entries(o.value).map(([u,s])=>[u,s.$extractDirtyFields(D)]);return D&&(P=y(P)),Object.fromEntries(P)}async function W(){try{let D=t.value;return {result:(await Promise.allSettled(Object.values(o.value).map(s=>s.$validate()))).every(s=>s.status==="fulfilled"?s.value.result===!0:!1),data:D}}catch{return {result:!1,data:t.value}}}let{$shortcuts:te,...ae}=g;return vue.reactive({...ae,...te,$fields:o,$value:t,$resetAll:q,$reset:c,$touch:i,$validate:W,$unwatch:w,$watch:k,$clearExternalErrors:b,$extractDirtyFields:I})}function be({rulesDef:e,externalErrors:t,...r}){if(Rt(e,r.state))return ht({rulesDef:e,externalErrors:t,...r});if(ft(r.state,e)){if(Te(r.state))return Oe({rulesDef:e,externalErrors:t,...r});{let n=vue.ref({}),l=vue.watch(n,d=>{l(),r.state.value=d;},{deep:!0}),{state:f,...p}=r;return Oe({rulesDef:e,externalErrors:t,...p,state:n})}}else if(pt(e))return Ie({rulesDef:e,externalErrors:t,...r})}function ye({initialState:e,options:t,scopeRules:r,state:n,customRules:l,shortcuts:f}){let p=ke(),d=vue.ref();return d.value=Oe({rootRules:r,rulesDef:r,state:n,customMessages:l?.(),storage:p,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:f,fieldName:"root",path:""}),vue.getCurrentScope()&&vue.onScopeDispose(()=>{d.value?.$unwatch();}),vue.reactive({regle:d})}function qe(e,t,r){let n={autoDirty:t?.autoDirty,lazy:t?.lazy,rewardEarly:t?.rewardEarly,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange};function l(f,p,d){let m=vue.isRef(p)?p:vue.computed(typeof p=="function"?p:()=>p),$={...n,...d},g=vue.isRef(f)?f:vue.ref(f),V=vue.ref({...H(g.value)});return {r$:ye({scopeRules:m,state:g,options:$,initialState:V,customRules:e,shortcuts:r}).regle}}return l}var xt=qe();function Je(){function e(t,r){return r}return e}var Ye=Je();function Ct({rules:e,modifiers:t,shortcuts:r}){let n=qe(e,t,r),l=Je();return {useRegle:n,inferRules:l}}
|
|
2
|
-
exports.InternalRuleType=
|
|
1
|
+
'use strict';var vue=require('vue');function J(e){return e==null?true:e instanceof Date?isNaN(e.getTime()):Array.isArray(e)?false:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}var ct=Symbol("regle-rule");function Mt(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 Y(e){let t=e,r={}.toString.call(e).slice(8,-1);if(r=="Set"&&(t=new Set([...e].map(n=>Y(n)))),r=="Map"&&(t=new Map([...e].map(n=>[Y(n[0]),Y(n[1])]))),r=="Date"&&(t=new Date(e.getTime())),r=="RegExp"&&(t=RegExp(e.source,Mt(e))),r=="Array"||r=="Object"){t=Array.isArray(e)?[]:{};for(let n in e)t[n]=Y(e[n]);}return t}function re(e){return e instanceof Date||e instanceof File?false:typeof e=="object"&&e!==null&&!Array.isArray(e)}function We(e){if(J(e))return false;try{let t=null;if(e instanceof Date)t=e;else if(typeof e=="string"){let r=new Date(e);if(r.toString()==="Invalid Date")return !1;t=r;}return !!t}catch{return false}}function Ue(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)}var Be=(r=>(r.Inline="__inline",r.Async="__async",r))(Be||{});function ft(e,t){return e.some(r=>r[t])}function Rt(e,t){return e.reduce((r,n)=>{let a=n[t]||[];return r.concat(a)},[])}function ee(e){try{return e.map(t=>vue.toValue(t))}catch{return []}}function dt(e){return e.map(t=>t instanceof Function?vue.computed(t):vue.isRef(t)?t:vue.toRef(()=>t))}function pt(e){let n=e.toString().replace(/\/\/.*$/gm,"").replace(/\/\*[\s\S]*?\*\//g,"").match(/^(?:async\s*)?(?:function\b.*?\(|\((.*?)\)|(\w+))\s*=>|\((.*?)\)\s*=>|function.*?\((.*?)\)|\((.*?)\)/);return n?(n[0]||n[1]||n[2]||n[3]||n[4]||"").split(",").map(f=>f.trim()).filter(f=>f.length>0).length:0}function Le(e,...t){let{validator:r,type:n}=e,a=n==="__async"||r.constructor.name==="AsyncFunction";return {...{validator(R,...E){return e.validator(R,...ee(E.length?E:t))},message(R){return typeof e.message=="function"?e.message({...R,$params:ee(R?.$params?.length?R.$params:t)}):e.message},active(R){return typeof e.active=="function"?e.active({...R,$params:ee(R?.$params?.length?R.$params:t)}):e.active??true},tooltip(R){return typeof e.tooltip=="function"?e.tooltip({...R,$params:ee(R?.$params?.length?R.$params:t)}):e.tooltip??[]},exec(R){let E=e.validator(R,...ee(t)),h;return E instanceof Promise?E.then(v=>(h=v,typeof h=="object"&&"$valid"in h?h.$valid:typeof h=="boolean"?h:false)):(h=E,typeof h=="object"&&"$valid"in h?h.$valid:typeof h=="boolean"?h: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:dt(t),_brand:ct}}function ke(e){if(typeof e.validator=="function"){let r=Le(e,...[]),n=e.async??e.validator.constructor.name==="AsyncFunction";if(pt(e.validator)>1){let a=function(...s){return Le(e,...s)};return a.validator=r.validator,a.message=r.message,a.active=r.active,a.tooltip=r.tooltip,a.type=r.type,a.exec=r.exec,a._validator=r.validator,a._message=r.message,a._active=r.active,a._tooltip=r.tooltip,a._type=e.type,a._message_pacthed=false,a._tooltip_pacthed=false,a._async=n,a}else return r}throw new Error("Validator must be a function")}function He(){let e=vue.shallowRef(new Map),t=vue.shallowRef(new Map),r=vue.shallowRef(new Map),n=vue.shallowRef(new Map),a=vue.shallowRef(new Map),s=vue.shallowRef(new Map);function f(d){let $=t.value.get(d);if($)return $;{let S=vue.ref({});return t.value.set(d,S),S}}function R(d){let $=r.value.get(d);if($)return $;{let S=vue.ref([]);return r.value.set(d,S),S}}function E(d,$,S){s.value.set(`${d}-${$}`,S);}function h(d,$){return s.value.get(`${d}-${$}`)}function v(d,$){d&&$!=null&&s.value.delete(`${d}-${$}`);}function N(d,$){n.value.set(d,$);}function I(d){return n.value.get(d)??false}function G(d,$){e.value.set(d,$);}function w(d,$){let S=e.value.get(d);return S?l($,S)?{valid:true}:{valid:false}:undefined}function l(d,$){let S=Object.keys($),u=Object.keys(d);return u.length!==S.length||!u.every(W=>S.includes(W))?false:u.every(W=>{let L=d[W],D=$[W];return !D||!L||typeof L=="function"||typeof D=="function"||typeof L=="number"||typeof L=="boolean"?false:L._params?L._params?.every((q,x)=>{if(typeof D=="number"||typeof D=="boolean")return true;{let Q=ee(D._params),g=ee(L._params);return Q?.[x]===g?.[x]}}):true})}function M(d){let $=a.value.get(d);if($)return $;{let S=vue.ref(false),u=vue.ref(true),p=vue.ref({}),W=vue.ref(false);return a.value.set(d,{$pending:S,$valid:u,$metadata:p,$validating:W}),{$pending:S,$valid:u,$metadata:p,$validating:W}}}return vue.getCurrentScope()&&vue.onScopeDispose(()=>{e.value.clear(),t.value.clear(),r.value.clear(),n.value.clear(),a.value.clear(),s.value.clear();}),{addRuleDeclEntry:G,setDirtyEntry:N,checkRuleDeclEntry:w,getDirtyState:I,trySetRuleStatusRef:M,getFieldsEntry:f,getCollectionsEntry:R,getArrayStatus:h,addArrayStatus:E,deleteArrayStatus:v,arrayStatusStorage:s}}function Oe(e){return e.value instanceof Date||e.value instanceof File?false:re(e.value)}function ze(e,t,r){let n=vue.effectScope(),a;return e instanceof Function?a=n.run(()=>e(t,r??0)):a=e,{scope:n,unwrapped:a}}function Ae(e,t,r){let n,a=(...s)=>new Promise(f=>{clearTimeout(n),n=setTimeout(()=>{n=undefined,Promise.resolve(e.apply(this,[...s])).then(f);},t);});return a.cancel=()=>{clearTimeout(n),n=undefined;},a}function Bt(e,t){let r=String(e).split("."),n=String(t).split(".");for(let a=0;a<Math.min(r.length,n.length);a++){let s=Number(r[a]),f=Number(n[a]);if(s>f)return 1;if(f>s)return -1;if(!isNaN(s)&&isNaN(f))return 1;if(isNaN(s)&&!isNaN(f))return -1}return 0}var Me=Bt(vue.version,"3.5.0")!==-1;function Lt(){return Math.floor(Math.random()*Date.now()).toString()}function Fe(){return typeof window>"u"?Lt():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function vt(e,t){return Oe(e)||re(t.value)&&!J(t.value)&&!Object.entries(t.value).some(([r,n])=>xe(n)||typeof n=="function")}function mt(e,t){return !!e.value&&re(e.value)&&"$each"in e.value||Array.isArray(t.value)}function yt(e){return !!e.value&&re(e.value)}function xe(e){return re(e)&&"_validator"in e}function Ce(e){return typeof e.value!="function"}function $t(e){return re(e)&&"$fields"in e}function gt(e){return !!e&&"$rules"in e}function qe({field:e,silent:t=false}){return Object.entries(e.$rules??{}).map(([r,n])=>t||!n.$valid&&e.$error&&!n.$validating?n.$message:null).filter(r=>!!r).reduce((r,n)=>typeof n=="string"?r?.concat([n]):r?.concat(n),[]).concat(e.$error?e.$externalErrors??[]:[]).concat(e.$error?e.$schemaErrors??[]:[])}function St({field:e}){return Object.entries(e.$rules??{}).map(([t,r])=>r.$tooltip).filter(t=>!!t).reduce((t,r)=>typeof r=="string"?t?.concat([r]):t?.concat(r),[])}function ht({fieldProperties:e,customMessages:t,rule:r,ruleKey:n,state:a,path:s,storage:f,$debounce:R,modifiers:E}){let h=vue.effectScope(),v={},N,I=vue.ref(false),{$pending:G,$valid:w,$metadata:l,$validating:M}=f.trySetRuleStatusRef(`${s}.${n}`);function d(){h=vue.effectScope(),v=h.run(()=>{let D=vue.computed(()=>({$value:a.value,$error:e.$error.value,$dirty:e.$dirty.value,$pending:e.$pending.value,$valid:e.$valid.value,$invalid:e.$invalid.value,$rule:{$valid:w.value,$invalid:!w.value,$pending:G.value},$params:ie.value,...l.value})),q=vue.computed(()=>Ce(r)?typeof r.value.active=="function"?r.value.active(D.value):!!r.value.active:true);function x(X){let le="",o=t?t[n]?.[X]:undefined;if(o&&(typeof o=="function"?le=o(D.value):le=o),Ce(r)){let c=`_${X}_patched`;o&&!r.value[c]||(typeof r.value[X]=="function"?le=r.value[X](D.value):le=r.value[X]??"");}return le}let Q=vue.computed(()=>{let X=x("message");return J(X)&&(X="This field is not valid"),X}),g=vue.computed(()=>x("tooltip")),j=vue.computed(()=>Ce(r)&&r.value.type?r.value.type:n),oe=vue.computed(()=>Ce(r)?r.value.validator:r.value),ie=vue.computed(()=>typeof r.value=="function"?[]:ee(r.value._params??[])),pe=vue.computed(()=>`${s}.${j.value}`);return {$active:q,$message:Q,$type:j,$validator:oe,$params:ie,$path:pe,$tooltip:g}}),N=vue.watch(v?.$params,()=>{(E.$autoDirty.value||E.$rewardEarly.value&&e.$error.value)&&p();});}d();function $(){w.value=true,e.$dirty.value&&(G.value=true);}async function S(){let D=false;try{let q=v.$validator.value,x=q(a.value,...v.$params.value),Q=a.value;$();let g;if(x instanceof Promise?g=await x:g=x,a.value!==Q)return !0;if(typeof g=="boolean")D=g;else {let{$valid:j,...oe}=g;D=j,l.value=oe;}}catch{D=false;}finally{G.value=false;}return D}let u=Ae(S,R??200);async function p(){try{M.value=!0;let D=!1;if(xe(r.value)&&r.value._async)D=await u();else {let q=v.$validator.value,x=q(a.value,...v.$params.value);if(x 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(x!=null)if(typeof x=="boolean")D=x;else {let{$valid:Q,...g}=x;D=Q,l.value=g;}}return w.value=D,D}catch{return false}finally{M.value=false;}}function W(){w.value=true,l.value={},G.value=false,M.value=false,d();}function L(){N(),h.stop(),h=vue.effectScope();}return vue.reactive({...v,$pending:G,$valid:w,$metadata:l,$haveAsync:I,$validating:M,$validate:p,$unwatch:L,$watch:d,$reset:W})}function _e({state:e,rulesDef:t,customMessages:r,path:n,fieldName:a,storage:s,options:f,externalErrors:R,schemaErrors:E,schemaMode:h,onUnwatch:v,$isArray:N,initialState:I,shortcuts:G}){let w=vue.effectScope(),l,M=[],d,$,S,u,p=()=>{};function W(){let y=t.value,O=s.checkRuleDeclEntry(n,y);j.value=Object.fromEntries(Object.entries(y).filter(([B])=>B.startsWith("$"))),q(),g.value=Object.fromEntries(Object.entries(t.value).filter(([B])=>!B.startsWith("$")).map(([B,K])=>{if(K){let b=vue.toRef(()=>K);return [B,ht({fieldProperties:{$dirty:l.$dirty,$error:l.$error,$invalid:l.$invalid,$pending:l.$pending,$valid:l.$valid},modifiers:{$autoDirty:l.$autoDirty,$rewardEarly:l.$rewardEarly},customMessages:r,rule:b,ruleKey:B,state:e,path:n,storage:s,$debounce:j.value.$debounce})]}return []}).filter(B=>!!B.length)),l.processShortcuts(),L(),O?.valid!=null&&(l.$dirty.value=s.getDirtyState(n),l.$dirty.value&&p()),s.addRuleDeclEntry(n,y);}function L(){p=l.$debounce.value?Ae(Q,l.$debounce.value??l.$haveAnyAsyncRule?100:0):Q;}function D(){g.value&&Object.entries(g.value).forEach(([y,O])=>{O.$unwatch();}),S(),l.$dirty.value&&s.setDirtyEntry(n,l.$dirty.value),d?.(),$?.(),w.stop(),w=vue.effectScope(),M.forEach(y=>y.stop()),M=[],v?.(),u?.();}function q(){g.value&&Object.entries(g.value).forEach(([y,O])=>{O.$watch();}),l=w.run(()=>{let y=vue.ref(false),O=vue.ref(false),B=vue.computed(()=>y.value),K=vue.computed(()=>j.value.$debounce),b=vue.computed(()=>j.value.$lazy!=null?j.value.$lazy:vue.unref(f.lazy)!=null?vue.unref(f.lazy):false),ue=vue.computed(()=>j.value.$rewardEarly!=null?j.value.$rewardEarly:vue.unref(f.rewardEarly)!=null?vue.unref(f.rewardEarly):false),ve=vue.computed(()=>j.value.$clearExternalErrorsOnChange!=null?j.value.$clearExternalErrorsOnChange:vue.unref(f.clearExternalErrorsOnChange)!=null?vue.unref(f.clearExternalErrorsOnChange):true),ce=vue.computed(()=>j.value.$autoDirty!=null?j.value.$autoDirty:vue.unref(f.autoDirty)!=null?vue.unref(f.autoDirty):!ue.value),F=vue.computed(()=>Object.entries(g.value).some(([ae,se])=>se.$validating)),C=vue.computed({get:()=>e.value,set(ae){d(),e.value=ae,x();}}),H=vue.computed(()=>me.value&&!De.value&&y.value),Te=vue.computed(()=>qe({field:{$error:H.value,$externalErrors:R?.value,$schemaErrors:E?.value,$rules:g.value}})),tt=vue.computed(()=>qe({field:{$error:true,$externalErrors:R?.value,$schemaErrors:E?.value,$rules:g.value},silent:true})),Ge=vue.computed(()=>y.value?We(I.value)&&We(e.value)?Ue(I.value).getDate()!==Ue(e.value).getDate():I.value==null?!!e.value:Array.isArray(e.value)&&Array.isArray(I.value)?e.value.length!==I.value.length:I.value!==e.value:false),rt=vue.computed(()=>Ge.value),nt=vue.computed(()=>St({field:{$rules:g.value}})),at=vue.computed(()=>ce.value?B.value&&!(me.value||De.value):!(me.value||De.value)),De=vue.computed(()=>O.value||!ue.value?Object.entries(g.value).some(([ae,se])=>se.$pending):false),me=vue.computed(()=>R?.value?.length||E?.value?.length?true:Pe.value?false:!ue.value||ue.value&&O.value?Object.entries(g.value).some(([ae,se])=>!se.$valid):false),lt=vue.computed(()=>a),Pe=vue.computed(()=>!!(J(g.value)&&!h)),ot=vue.computed(()=>R?.value?.length||Pe.value?false:y.value&&!J(e.value)&&!F.value?h?!E?.value?.length:Object.values(g.value).every(ae=>ae.$valid&&ae.$active):false),Ot=vue.computed(()=>Object.entries(g.value).some(([ae,se])=>se.$haveAsync));function At(){G?.fields&&Object.entries(G.fields).forEach(([ae,se])=>{let st=vue.effectScope();ut[ae]=st.run(()=>{let it=vue.ref();return vue.watchEffect(()=>{it.value=se(vue.reactive({$dirty:y,$externalErrors:R?.value??[],$value:e,$silentValue:C,$rules:g,$error:H,$pending:De,$invalid:me,$valid:ot,$errors:Te,$ready:at,$silentErrors:tt,$anyDirty:B,$tooltips:nt,$name:lt,$inactive:Pe,$edited:Ge,$anyEdited:rt}));}),it}),M.push(st);});}let ut={};return vue.watch(me,ae=>{ae||(O.value=false);}),{$error:H,$pending:De,$invalid:me,$valid:ot,$debounce:K,$lazy:b,$errors:Te,$ready:at,$silentErrors:tt,$rewardEarly:ue,$autoDirty:ce,$clearExternalErrorsOnChange:ve,$anyDirty:B,$edited:Ge,$anyEdited:rt,$name:lt,$haveAnyAsyncRule:Ot,$shortcuts:ut,$validating:F,$tooltips:nt,$dirty:y,triggerPunishment:O,processShortcuts:At,$silentValue:C,$inactive:Pe}}),x(),S=vue.watch(l.$dirty,()=>{s.setDirtyEntry(n,l.$dirty.value);}),$=vue.watch(l.$valid,y=>{l.$rewardEarly.value&&y&&(l.triggerPunishment.value=false);}),u=vue.watch(l.$haveAnyAsyncRule,L);}function x(){d=vue.watch(e,()=>{l.$autoDirty.value&&(l.$dirty.value||(l.$dirty.value=true)),t.value instanceof Function&&W(),(l.$autoDirty.value||l.$rewardEarly.value&&l.$error.value)&&p(),l.$rewardEarly.value!==true&&l.$clearExternalErrorsOnChange.value&&o();},{deep:N?true:Me?1:true,flush:"post"});}function Q(){Object.values(g.value).forEach(y=>{y.$validate();});}let g=vue.ref({}),j=vue.ref({});W();function oe(){o(),l.$dirty.value=false,l.triggerPunishment.value=false,s.setDirtyEntry(n,false),I.value=re(e.value)?Y(e.value):Array.isArray(e.value)?[...e.value]:e.value,Object.entries(g.value).forEach(([y,O])=>{O.$reset();}),!l.$lazy.value&&l.$autoDirty.value&&Object.values(g.value).forEach(y=>y.$validate());}function ie(y=true,O=false){l.$dirty.value||(l.$dirty.value=true),O&&y?(l.$autoDirty.value||l.$rewardEarly.value&&l.$error.value)&&p():y&&p();}async function pe(){try{let y=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 {result:!l.$error.value,data:y};return h?{result:!E?.value?.length,data:y}:J(g.value)?{result:!0,data:y}:{result:(await Promise.allSettled(Object.entries(g.value).map(([K,b])=>b.$validate()))).every(K=>K.status==="fulfilled"?K.value===!0:!1),data:y}}catch{return {result:false,data:e.value}}}function X(){D(),e.value=Y(I),oe();}function le(y=true){return l.$dirty.value?e.value:y?{_null:true}:null}function o(){R?.value?.length&&(R.value=[]);}!l.$lazy.value&&!l.$dirty.value&&l.$autoDirty.value&&p();let{$shortcuts:c,$validating:m,$autoDirty:T,$rewardEarly:V,$clearExternalErrorsOnChange:ne,$haveAnyAsyncRule:i,$debounce:P,$lazy:k,triggerPunishment:Z,...U}=l;return vue.reactive({...U,$externalErrors:R,$value:e,$rules:g,...c,$reset:oe,$touch:ie,$validate:pe,$unwatch:D,$watch:q,$resetAll:X,$extractDirtyFields:le,$clearExternalErrors:o})}function Qe({$id:e,path:t,index:r,options:n,storage:a,stateValue:s,customMessages:f,rules:R,externalErrors:E,schemaErrors:h,initialState:v,shortcuts:N,fieldName:I,schemaMode:G}){let w=R.$key?R.$key:Fe(),l=`${t}.${String(w)}`;typeof s.value=="object"&&s.value!=null&&(s.value.$id?l=`${t}.${s.value.$id}`:Object.defineProperties(s.value,{$id:{value:w,enumerable:false,configurable:false,writable:false}}));let M=vue.toRef(E?.value??[],r),d=vue.computed(()=>h?.value?.[r]),$=ge({state:s,rulesDef:vue.toRef(()=>R),customMessages:f,path:l,storage:a,options:n,externalErrors:M,schemaErrors:d,initialState:v,shortcuts:N,fieldName:I,schemaMode:G});if($){let S=s.value?.$id;$.$id=S??String(w),a.addArrayStatus(e,$.$id,$);}return $}function Dt({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:s,externalErrors:f,schemaErrors:R,schemaMode:E,initialState:h,shortcuts:v,fieldName:N}){let I=vue.effectScope(),G,w=vue.effectScope(),l,M=[];if(!Array.isArray(e.value)&&!t.value.$each)return;let d=vue.ref(),$=vue.ref(e.value),S,u=vue.ref({}),p=a.getCollectionsEntry(n);l=w.run(()=>({isPrimitiveArray:vue.computed(()=>Array.isArray(e.value)&&e.value.length?e.value.every(c=>typeof c!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(c=>xe(c)||typeof c=="function"):false)})),W(),q();function W(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?(d.value=Fe(),Object.defineProperties(e.value,{$id:{value:d.value,enumerable:false,configurable:false,writable:false}})):e.value?.$id&&(d.value=e.value.$id)),!l.isPrimitiveArray.value&&($.value=u.value.$value,Array.isArray(e.value)?p.value=e.value.map((o,c)=>{let{scope:m,unwrapped:T}=ze(t.value.$each,vue.toRef(()=>o),c);m&&M.push(m);let V=vue.toRef(h.value??[],c),ne=vue.toRef(f?.value??{},"$each"),i=vue.computed(()=>R?.value?.$each),P=Qe({$id:d.value,path:n,customMessages:r,rules:T??{},stateValue:vue.toRef(()=>o),index:c,options:s,storage:a,externalErrors:ne,schemaErrors:i,initialState:V,shortcuts:v,fieldName:N,schemaMode:E});return P||null}).filter(o=>!!o):p.value=[],u.value=_e({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:s,externalErrors:vue.toRef(f?.value??{},"$self"),schemaErrors:vue.computed(()=>R?.value?.$self),$isArray:true,initialState:h,shortcuts:v,fieldName:N,schemaMode:E}));}function L(){if(Array.isArray(e.value)){let o=Y(p.value);p.value=e.value.map((c,m)=>{let T=vue.toRef(()=>c);if(c.$id&&p.value.find(V=>V.$id===c.$id)){let V=a.getArrayStatus(d.value,c.$id);return V?(V.$value=T,V):null}else {let{scope:V,unwrapped:ne}=ze(t.value.$each,T,m);V&&M.push(V);let i=vue.toRef(f?.value??{},"$each"),P=vue.computed(()=>R?.value?.$each??[]),k=Qe({$id:d.value,path:n,customMessages:r,rules:ne??{},stateValue:T,index:m,options:s,storage:a,externalErrors:i,schemaErrors:P,initialState:vue.toRef(h.value??[],m),shortcuts:v,fieldName:N,schemaMode:E});return k||null}}).filter(c=>!!c),o.filter(c=>!e.value?.find(m=>c.$id===m.$id)).forEach((c,m)=>{a.deleteArrayStatus(d.value,m.toString());});}else p.value=[];}function D(){S=vue.watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?W():L();},{deep:Me?1:true,flush:"pre"});}function q(){D(),I=vue.effectScope(),G=I.run(()=>{let o=vue.computed({get:()=>e.value,set(b){S(),e.value=b,D();}}),c=vue.computed(()=>u.value.$dirty&&!!p.value.length&&p.value.every(b=>b.$dirty)),m=vue.computed(()=>u.value.$anyDirty||p.value.some(b=>b.$anyDirty)),T=vue.computed(()=>u.value.$invalid||p.value.some(b=>b.$invalid)),V=vue.computed(()=>(J(u.value.$rules)?true:u.value.$valid)&&p.value.every(b=>b.$valid)),ne=vue.computed(()=>u.value.$error||p.value.some(b=>b.$error)),i=vue.computed(()=>!(T.value||P.value)),P=vue.computed(()=>u.value.$pending||p.value.some(b=>b.$pending)),k=vue.computed(()=>!!p.value.length&&p.value.every(b=>b.$edited)),Z=vue.computed(()=>u.value.$anyEdited||p.value.some(b=>b.$anyEdited)),U=vue.computed(()=>({$self:u.value.$errors,$each:p.value.map(b=>b.$errors)})),y=vue.computed(()=>({$self:u.value.$silentErrors,$each:p.value.map(b=>b.$silentErrors)})),O=vue.computed(()=>N);function B(){v?.collections&&Object.entries(v?.collections).forEach(([b,ue])=>{let ve=vue.effectScope();K[b]=ve.run(()=>{let ce=vue.ref();return vue.watchEffect(()=>{ce.value=ue(vue.reactive({$dirty:c,$error:ne,$silentValue:o,$pending:P,$invalid:T,$valid:V,$errors:U,$ready:i,$silentErrors:y,$anyDirty:m,$name:O,$each:p,$self:u,$value:e,$edited:k,$anyEdited:Z}));}),ce}),M.push(ve);});}let K={};return B(),{$dirty:c,$anyDirty:m,$invalid:T,$valid:V,$error:ne,$pending:P,$errors:U,$silentErrors:y,$ready:i,$name:O,$shortcuts:K,$silentValue:o,$edited:k,$anyEdited:Z}}),l.isPrimitiveArray.value&&(console.warn(`${n} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`),S());}function x(){S&&S(),u.value&&u.value.$unwatch(),p.value&&p.value.forEach(o=>{"$dirty"in o&&o.$unwatch();}),I.stop(),I=vue.effectScope(),w.stop(),w=vue.effectScope(true),M.forEach(o=>o.stop()),M=[];}function Q(o=true,c=false){u.value.$touch(o,c),p.value.forEach(m=>{m.$touch(o,c);});}function g(){u.value.$reset(),p.value.forEach(o=>{o.$reset();});}async function j(){let o=e.value;try{return {result:(await Promise.allSettled([u.value.$validate(),...p.value.map(T=>T.$validate())])).every(T=>T.status==="fulfilled"?T.value.result===!0:!1),data:o}}catch{return {result:false,data:o}}}function oe(){u.value.$clearExternalErrors(),p.value.forEach(o=>{o.$clearExternalErrors();});}function ie(o=true){let c=p.value.map(m=>{if($t(m))return m.$extractDirtyFields(o)});return o&&c.every(m=>J(m))&&(c=[]),c}function pe(){x(),e.value=Y(h.value),g();}let{$shortcuts:X,...le}=G;return vue.reactive({$self:u,...le,...X,$each:p,$value:e,$validate:j,$unwatch:x,$watch:q,$touch:Q,$reset:g,$resetAll:pe,$extractDirtyFields:ie,$clearExternalErrors:oe})}function Ne({rulesDef:e,state:t,path:r="",rootRules:n,externalErrors:a,schemaErrors:s,rootSchemaErrors:f,validationGroups:R,initialState:E,fieldName:h,...v}){let N=vue.effectScope(),I,G=[],w=null,l=null,M=null,d=null;async function S(o=true){let c=Object.entries(e.value),m=Object.fromEntries(c.filter(([i,P])=>!!P).map(([i,P])=>{if(P){let k=vue.toRef(t.value??{},i),Z=vue.toRef(()=>P),U=vue.toRef(a?.value??{},i),y=vue.computed(()=>s?.value?.[i]),O=vue.toRef(E?.value??{},i);return [i,ge({state:k,rulesDef:Z,path:r?`${r}.${i}`:i,externalErrors:U,schemaErrors:y,initialState:O,fieldName:i,...v})]}return []})),T=Object.fromEntries(Object.entries(vue.unref(a)??{}).filter(([i,P])=>!(i in e.value)&&!!P).map(([i])=>{let P=vue.toRef(t.value??{},i),k=vue.toRef(a?.value??{},i),Z=vue.computed(()=>s?.value?.[i]),U=vue.toRef(E?.value??{},i);return [i,ge({state:P,rulesDef:vue.computed(()=>({})),path:r?`${r}.${i}`:i,externalErrors:k,schemaErrors:Z,initialState:U,fieldName:i,...v})]})),V=Object.fromEntries(Object.entries(vue.unref(s)??{}).map(([i])=>{let P=vue.toRef(t.value??{},i),k=vue.toRef(a?.value??{},i),Z=vue.computed(()=>s?.value?.[i]),U=vue.toRef(E?.value??{},i);return [i,ge({state:P,rulesDef:vue.computed(()=>({})),path:r?`${r}.${i}`:i,externalErrors:k,schemaErrors:Z,initialState:U,fieldName:i,...v})]})),ne=Object.fromEntries(Object.entries(t.value??{}).filter(([i])=>!(i in e.value)&&!(i in(T??{}))&&!(i in(V??{}))).map(([i])=>{let P=vue.toRef(t.value??{},i),k=vue.toRef(a?.value??{},i),Z=vue.computed(()=>s?.value?.[i]),U=vue.toRef(E?.value??{},i);return [i,ge({state:P,rulesDef:vue.computed(()=>({})),path:r?`${r}.${i}`:i,externalErrors:k,schemaErrors:Z,initialState:U,fieldName:i,...v})]}));u.value={...m,...T,...V,...ne},o&&q();}let u=v.storage.getFieldsEntry(r);S();function p(){M?.(),Object.values(u.value).forEach(o=>{o.$reset();}),E.value={...Y(t.value)},L();}function W(o=true,c=false){Object.values(u.value).forEach(m=>{m.$touch(o,c);});}function L(){a&&(M=vue.watch(a,()=>{x(),S();},{deep:true}));}function D(){d=vue.watch(t,()=>{x(),S(),W(true,true);},{flush:"sync"});}function q(){n&&(w?.(),w=vue.watch(n,()=>{x(),S();},{deep:true,flush:"post"}),L()),f&&(l?.(),l=vue.watch(f,()=>{x(),S();},{deep:true,flush:"post"})),D(),N=vue.effectScope(),I=N.run(()=>{let o=vue.computed({get:()=>t.value,set(F){x(),t.value=F,S();}}),c=vue.computed(()=>!!Object.entries(u.value).length&&Object.entries(u.value).every(([F,C])=>C?.$dirty)),m=vue.computed(()=>Object.entries(u.value).some(([F,C])=>C?.$anyDirty)),T=vue.computed(()=>Object.entries(u.value).some(([F,C])=>C?.$invalid)),V=vue.computed(()=>{let F=Object.entries(u.value).filter(([C,H])=>gt(H)?!H.$inactive:true);return F.length?F.every(([C,H])=>H?.$valid):false}),ne=vue.computed(()=>m.value&&!U.value&&T.value),i=vue.computed(()=>vue.unref(v.options.rewardEarly)!=null?vue.unref(v.options.rewardEarly):false),P=vue.computed(()=>vue.unref(v.options.autoDirty)!=null?vue.unref(v.options.autoDirty):!i.value),k=vue.computed(()=>P.value?m.value&&!(T.value||U.value):!(T.value||U.value)),Z=vue.ref(false),U=vue.computed(()=>Z.value||Object.entries(u.value).some(([F,C])=>C?.$pending)),y=vue.computed(()=>Object.fromEntries(Object.entries(u.value).map(([F,C])=>[F,C?.$errors]))),O=vue.computed(()=>Object.fromEntries(Object.entries(u.value).map(([F,C])=>[F,C?.$silentErrors]))),B=vue.computed(()=>!!Object.entries(u.value).length&&Object.entries(u.value).every(([F,C])=>C?.$edited)),K=vue.computed(()=>Object.entries(u.value).some(([F,C])=>C?.$anyEdited)),b=vue.computed(()=>h);function ue(){v.shortcuts?.nested&&Object.entries(v.shortcuts.nested).forEach(([F,C])=>{let H=vue.effectScope();ce[F]=H.run(()=>{let Te=vue.ref();return vue.watchEffect(()=>{Te.value=C(vue.reactive({$dirty:c,$value:t,$silentValue:o,$error:ne,$pending:U,$invalid:T,$valid:V,$ready:k,$anyDirty:m,$name:b,$silentErrors:O,$errors:y,$fields:u,$edited:B,$anyEdited:K}));}),Te}),G.push(H);});}let ve=vue.computed({get:()=>R?Object.fromEntries(Object.entries(R?.(u.value)??{}).map(([F,C])=>C.length?[F,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$valid"].map(H=>[H,ft(C,H)])),...Object.fromEntries(["$errors","$silentErrors"].map(H=>[H,Rt(C,H)]))}]:[])):{},set(){}}),ce={};return ue(),{$dirty:c,$anyDirty:m,$invalid:T,$valid:V,$error:ne,$pending:U,$errors:y,$silentErrors:O,$ready:k,$name:b,$shortcuts:ce,$groups:ve,$silentValue:o,$edited:B,$anyEdited:K,$localPending:Z}});}function x(){w?.(),M?.(),d?.(),G.forEach(o=>o.stop()),G=[],N.stop(),u.value&&Object.entries(u.value).forEach(([o,c])=>{c.$unwatch();});}function Q(){Object.entries(u.value).forEach(([o,c])=>{c.$clearExternalErrors();});}async function g(){x(),t.value=Y({...E.value??{}}),p(),S();}function j(o){return o.filter(([c,m])=>re(m)?!(m&&typeof m=="object"&&"_null"in m)&&!J(m):Array.isArray(m)?m.length:true)}function oe(o=true){let c=Object.entries(u.value).map(([m,T])=>[m,T.$extractDirtyFields(o)]);return o&&(c=j(c)),Object.fromEntries(c)}async function ie(){try{if(v.schemaMode)return v.onValidate?(W(!1),I.$localPending.value=!0,v.onValidate()):{result:!1,data:t.value};{let o=t.value;return {result:(await Promise.allSettled(Object.values(u.value).map(T=>T.$validate()))).every(T=>T.status==="fulfilled"?T.value.result===!0:!1),data:o}}}catch{return {result:false,data:t.value}}finally{I.$localPending.value=false;}}let{$shortcuts:pe,$localPending:X,...le}=I;return vue.reactive({...le,...pe,$fields:u,$value:t,$resetAll:g,$reset:p,$touch:W,$validate:ie,$unwatch:x,$watch:q,$clearExternalErrors:Q,$extractDirtyFields:oe})}function ge({rulesDef:e,...t}){if(mt(e,t.state))return Dt({rulesDef:e,...t});if(vt(t.state,e)){if(Oe(t.state))return Ne({rulesDef:e,...t});{let n=vue.effectScope().run(()=>{let f=vue.toRef(t.state.value?t.state:vue.ref({}));return vue.watch(()=>t.state.value,R=>{f.value=R;},{deep:true}),vue.watch(f,R=>{t.state.value=R;},{deep:true}),{fakeState:f}}),{state:a,...s}=t;return Ne({rulesDef:e,...s,state:n.fakeState})}}else if(yt(e))return _e({rulesDef:e,...t})}function be({initialState:e,options:t,scopeRules:r,state:n,customRules:a,shortcuts:s,schemaErrors:f,schemaMode:R=false,onValidate:E}){let h=He(),v=vue.ref();return v.value=Ne({rootRules:r,rulesDef:r,state:n,customMessages:a?.(),storage:h,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:s,fieldName:"root",path:"",schemaErrors:f,rootSchemaErrors:f,schemaMode:R,onValidate:E}),vue.getCurrentScope()&&vue.onScopeDispose(()=>{v.value?.$unwatch();}),vue.reactive({regle:v})}function Ze(e,t,r){let n={autoDirty:t?.autoDirty,lazy:t?.lazy,rewardEarly:t?.rewardEarly,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange};function a(s,f,R){let E=vue.isRef(f)?f:vue.computed(typeof f=="function"?f:()=>f),h={...n,...R},v=vue.isRef(s)?s:vue.ref(s),N=vue.ref({...Y(v.value)});return {r$:be({scopeRules:E,state:v,options:h,initialState:N,customRules:e,shortcuts:r}).regle}}return a}var wt=Ze();function Ke(){function e(t,r){return r}return e}var et=Ke();function Pt({rules:e,modifiers:t,shortcuts:r}){let n=Ze(e,t,r),a=Ke();return {useRegle:n,inferRules:a}}
|
|
2
|
+
exports.InternalRuleType=Be;exports.createRule=ke;exports.defineRegleConfig=Pt;exports.inferRules=et;exports.unwrapRuleParameters=ee;exports.useRegle=wt;exports.useRootStorage=be;
|
package/dist/regle-core.min.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {toValue,version,ref,getCurrentScope,onScopeDispose,reactive,shallowRef,effectScope,computed,isRef,toRef,unref,watch,watchEffect}from'vue';function L(e){return e==null?!0:e instanceof Date?isNaN(e.getTime()):Array.isArray(e)?!1:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}var ot=Symbol("regle-rule");function Pt(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 H(e){let t=e,r={}.toString.call(e).slice(8,-1);if(r=="Set"&&(t=new Set([...e].map(n=>H(n)))),r=="Map"&&(t=new Map([...e].map(n=>[H(n[0]),H(n[1])]))),r=="Date"&&(t=new Date(e.getTime())),r=="RegExp"&&(t=RegExp(e.source,Pt(e))),r=="Array"||r=="Object"){t=Array.isArray(e)?[]:{};for(let n in e)t[n]=H(e[n]);}return t}function Q(e){return e instanceof Date||e instanceof File?!1:typeof e=="object"&&e!==null&&!Array.isArray(e)}function _e(e){if(L(e))return !1;try{let t=null;if(e instanceof Date)t=e;else if(typeof e=="string"){let r=new Date(e);if(r.toString()==="Invalid Date")return !1;t=r;}return !!t}catch{return !1}}function je(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)}var Ve=(r=>(r.Inline="__inline",r.Async="__async",r))(Ve||{});function ut(e,t){return e.some(r=>r[t])}function it(e,t){return e.reduce((r,n)=>{let l=n[t]||[];return r.concat(l)},[])}function J(e){try{return e.map(t=>toValue(t))}catch{return []}}function st(e){return e.map(t=>t instanceof Function?computed(t):isRef(t)?t:toRef(()=>t))}function ct(e){let n=e.toString().replace(/\/\/.*$/gm,"").replace(/\/\*[\s\S]*?\*\//g,"").match(/^(?:async\s*)?(?:function\b.*?\(|\((.*?)\)|(\w+))\s*=>|\((.*?)\)\s*=>|function.*?\((.*?)\)|\((.*?)\)/);return n?(n[0]||n[1]||n[2]||n[3]||n[4]||"").split(",").map(p=>p.trim()).filter(p=>p.length>0).length:0}function Ne(e,...t){let{validator:r,type:n}=e,l=n==="__async"||r.constructor.name==="AsyncFunction";return {...{validator(d,...m){return e.validator(d,...J(m.length?m:t))},message(d){return typeof e.message=="function"?e.message({...d,$params:J(d?.$params?.length?d.$params:t)}):e.message},active(d){return typeof e.active=="function"?e.active({...d,$params:J(d?.$params?.length?d.$params:t)}):e.active??!0},tooltip(d){return typeof e.tooltip=="function"?e.tooltip({...d,$params:J(d?.$params?.length?d.$params:t)}):e.tooltip??[]},exec(d){let m=e.validator(d,...J(t)),$;return m instanceof Promise?m.then(g=>($=g,typeof $=="object"&&"$valid"in $?$.$valid:typeof $=="boolean"?$:!1)):($=m,typeof $=="object"&&"$valid"in $?$.$valid:typeof $=="boolean"?$:!1)}},_validator:e.validator,_message:e.message,_active:e.active,_tooltip:e.tooltip,_type:e.type,_message_patched:!1,_tooltip_patched:!1,_async:l,_params:st(t),_brand:ot}}function Ge(e){if(typeof e.validator=="function"){let r=Ne(e,...[]),n=e.async??e.validator.constructor.name==="AsyncFunction";if(ct(e.validator)>1){let l=function(...f){return Ne(e,...f)};return l.validator=r.validator,l.message=r.message,l.active=r.active,l.tooltip=r.tooltip,l.type=r.type,l.exec=r.exec,l._validator=r.validator,l._message=r.message,l._active=r.active,l._tooltip=r.tooltip,l._type=e.type,l._message_pacthed=!1,l._tooltip_pacthed=!1,l._async=n,l}else return r}throw new Error("Validator must be a function")}function ke(){let e=shallowRef(new Map),t=shallowRef(new Map),r=shallowRef(new Map),n=shallowRef(new Map),l=shallowRef(new Map),f=shallowRef(new Map);function p(o){let c=t.value.get(o);if(c)return c;{let i=ref({});return t.value.set(o,i),i}}function d(o){let c=r.value.get(o);if(c)return c;{let i=ref([]);return r.value.set(o,i),i}}function m(o,c,i){f.value.set(`${o}-${c}`,i);}function $(o,c){return f.value.get(`${o}-${c}`)}function g(o,c){o&&c!=null&&f.value.delete(`${o}-${c}`);}function V(o,c){n.value.set(o,c);}function M(o){return n.value.get(o)??!1}function a(o,c){e.value.set(o,c);}function T(o,c){let i=e.value.get(o);return i?C(c,i)?{valid:!0}:{valid:!1}:void 0}function C(o,c){let i=Object.keys(c),G=Object.keys(o);return G.length!==i.length||!G.every(k=>i.includes(k))?!1:G.every(k=>{let w=o[k],b=c[k];return !b||!w||typeof w=="function"||typeof b=="function"||typeof w=="number"||typeof w=="boolean"?!1:w._params?w._params?.every((q,y)=>{if(typeof b=="number"||typeof b=="boolean")return !0;{let I=J(b._params),W=J(w._params);return I?.[y]===W?.[y]}}):!0})}function N(o){let c=l.value.get(o);if(c)return c;{let i=ref(!1),G=ref(!0),z=ref({}),k=ref(!1);return l.value.set(o,{$pending:i,$valid:G,$metadata:z,$validating:k}),{$pending:i,$valid:G,$metadata:z,$validating:k}}}return getCurrentScope()&&onScopeDispose(()=>{e.value.clear(),t.value.clear(),r.value.clear(),n.value.clear(),l.value.clear(),f.value.clear();}),{addRuleDeclEntry:a,setDirtyEntry:V,checkRuleDeclEntry:T,getDirtyState:M,trySetRuleStatusRef:N,getFieldsEntry:p,getCollectionsEntry:d,getArrayStatus:$,addArrayStatus:m,deleteArrayStatus:g,arrayStatusStorage:f}}function Te(e){return e.value instanceof Date||e.value instanceof File?!1:Q(e.value)}function We(e,t,r){let n=effectScope(),l;return e instanceof Function?l=n.run(()=>e(t,r??0)):l=e,{scope:n,unwrapped:l}}function De(e,t,r){let n,l=(...f)=>new Promise(p=>{clearTimeout(n),n=setTimeout(()=>{n=void 0,Promise.resolve(e.apply(this,[...f])).then(p);},t);});return l.cancel=()=>{clearTimeout(n),n=void 0;},l}function Gt(e,t){let r=String(e).split("."),n=String(t).split(".");for(let l=0;l<Math.min(r.length,n.length);l++){let f=Number(r[l]),p=Number(n[l]);if(f>p)return 1;if(p>f)return -1;if(!isNaN(f)&&isNaN(p))return 1;if(isNaN(f)&&!isNaN(p))return -1}return 0}var xe=Gt(version,"3.5.0")!==-1;function kt(){return Math.floor(Math.random()*Date.now()).toString()}function Ce(){return typeof window>"u"?kt():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function ft(e,t){return Te(e)||Q(t.value)&&!L(t.value)&&!Object.entries(t.value).some(([r,n])=>$e(n)||typeof n=="function")}function Rt(e,t){return !!e.value&&Q(e.value)&&"$each"in e.value||Array.isArray(t.value)}function pt(e){return !!e.value&&Q(e.value)}function $e(e){return Q(e)&&"_validator"in e}function ge(e){return typeof e.value!="function"}function dt(e){return Q(e)&&"$fields"in e}function yt(e){return !!e&&"$rules"in e}function Ue({field:e,silent:t=!1}){return Object.entries(e.$rules??{}).map(([r,n])=>t||!n.$valid&&e.$dirty&&!n.$validating?n.$message:null).filter(r=>!!r).reduce((r,n)=>typeof n=="string"?r?.concat([n]):r?.concat(n),[]).concat(e.$dirty?e.$externalErrors??[]:[])}function vt({field:e}){return Object.entries(e.$rules??{}).map(([t,r])=>r.$tooltip).filter(t=>!!t).reduce((t,r)=>typeof r=="string"?t?.concat([r]):t?.concat(r),[])}function mt({fieldProperties:e,customMessages:t,rule:r,ruleKey:n,state:l,path:f,storage:p,$debounce:d,modifiers:m}){let $=effectScope(),g={},V,M=ref(!1),{$pending:a,$valid:T,$metadata:C,$validating:N}=p.trySetRuleStatusRef(`${f}.${n}`);function o(){$=effectScope(),g=$.run(()=>{let b=computed(()=>({$value:l.value,$error:e.$error.value,$dirty:e.$dirty.value,$pending:e.$pending.value,$valid:e.$valid.value,$invalid:e.$invalid.value,$rule:{$valid:T.value,$invalid:!T.value,$pending:a.value},$params:D.value,...C.value})),q=computed(()=>ge(r)?typeof r.value.active=="function"?r.value.active(b.value):!!r.value.active:!0);function y(u){let s="",S=t?t[n]?.[u]:void 0;if(S&&(typeof S=="function"?s=S(b.value):s=S),ge(r)){let R=`_${u}_patched`;S&&!r.value[R]||(typeof r.value[u]=="function"?s=r.value[u](b.value):s=r.value[u]??"");}return s}let I=computed(()=>{let u=y("message");return L(u)&&(u="This field is not valid"),u}),W=computed(()=>y("tooltip")),te=computed(()=>ge(r)&&r.value.type?r.value.type:n),ae=computed(()=>ge(r)?r.value.validator:r.value),D=computed(()=>typeof r.value=="function"?[]:J(r.value._params??[])),P=computed(()=>`${f}.${te.value}`);return {$active:q,$message:I,$type:te,$validator:ae,$params:D,$path:P,$tooltip:W}}),V=watch(g?.$params,()=>{(m.$autoDirty.value||m.$rewardEarly.value&&e.$error.value)&&z();});}o();function c(){T.value=!0,e.$dirty.value&&(a.value=!0);}async function i(){let b=!1;try{let q=g.$validator.value,y=q(l.value,...g.$params.value),I=l.value;c();let W;if(y instanceof Promise?W=await y:W=y,l.value!==I)return !0;if(typeof W=="boolean")b=W;else {let{$valid:te,...ae}=W;b=te,C.value=ae;}}catch{b=!1;}finally{a.value=!1;}return b}let G=De(i,d??200);async function z(){try{N.value=!0;let b=!1;if($e(r.value)&&r.value._async)b=await G();else {let q=g.$validator.value,y=q(l.value,...g.$params.value);if(y 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(y!=null)if(typeof y=="boolean")b=y;else {let{$valid:I,...W}=y;b=I,C.value=W;}}return T.value=b,b}catch{return !1}finally{N.value=!1;}}function k(){T.value=!0,C.value={},a.value=!1,N.value=!1,o();}function w(){V(),$.stop(),$=effectScope();}return reactive({...g,$pending:a,$valid:T,$metadata:C,$haveAsync:M,$validating:N,$validate:z,$unwatch:w,$watch:o,$reset:k})}function Ie({state:e,rulesDef:t,customMessages:r,path:n,fieldName:l,storage:f,options:p,externalErrors:d,onUnwatch:m,$isArray:$,initialState:g,shortcuts:V}){let M=effectScope(),a,T=[],C,N,o,c,i=()=>{};function G(){let v=t.value,A=f.checkRuleDeclEntry(n,v);I.value=Object.fromEntries(Object.entries(v).filter(([_])=>_.startsWith("$"))),w(),y.value=Object.fromEntries(Object.entries(t.value).filter(([_])=>!_.startsWith("$")).map(([_,Z])=>{if(Z){let re=toRef(()=>Z);return [_,mt({fieldProperties:{$dirty:a.$dirty,$error:a.$error,$invalid:a.$invalid,$pending:a.$pending,$valid:a.$valid},modifiers:{$autoDirty:a.$autoDirty,$rewardEarly:a.$rewardEarly},customMessages:r,rule:re,ruleKey:_,state:e,path:n,storage:f,$debounce:I.value.$debounce})]}return []}).filter(_=>!!_.length)),a.processShortcuts(),z(),A?.valid!=null&&(a.$dirty.value=f.getDirtyState(n),a.$dirty.value&&i()),f.addRuleDeclEntry(n,v);}function z(){i=a.$debounce.value?De(q,a.$debounce.value??a.$haveAnyAsyncRule?100:0):q;}function k(){y.value&&Object.entries(y.value).forEach(([v,A])=>{A.$unwatch();}),o(),a.$dirty.value&&f.setDirtyEntry(n,a.$dirty.value),C?.(),N?.(),M.stop(),M=effectScope(),T.forEach(v=>v.stop()),T=[],m?.(),c?.();}function w(){y.value&&Object.entries(y.value).forEach(([v,A])=>{A.$watch();}),a=M.run(()=>{let v=ref(!1),A=ref(!1),_=computed(()=>v.value),Z=computed(()=>I.value.$debounce),re=computed(()=>I.value.$lazy!=null?I.value.$lazy:unref(p.lazy)!=null?unref(p.lazy):!1),h=computed(()=>I.value.$rewardEarly!=null?I.value.$rewardEarly:unref(p.rewardEarly)!=null?unref(p.rewardEarly):!1),O=computed(()=>I.value.$clearExternalErrorsOnChange!=null?I.value.$clearExternalErrorsOnChange:unref(p.clearExternalErrorsOnChange)!=null?unref(p.clearExternalErrorsOnChange):!0),E=computed(()=>I.value.$autoDirty!=null?I.value.$autoDirty:unref(p.autoDirty)!=null?unref(p.autoDirty):!h.value),j=computed(()=>Object.entries(y.value).some(([K,le])=>le.$validating)),ve=computed({get:()=>e.value,set(K){C(),e.value=K,b();}}),Ae=computed(()=>fe.value&&!me.value&&v.value),Qe=computed(()=>Ae.value?Ue({field:{$dirty:v.value,$externalErrors:d?.value,$rules:y.value}}):[]),Fe=computed(()=>v.value?_e(g.value)&&_e(e.value)?je(g.value).getDate()!==je(e.value).getDate():g.value==null?!!e.value:Array.isArray(e.value)&&Array.isArray(g.value)?e.value.length!==g.value.length:g.value!==e.value:!1),Xe=computed(()=>Fe.value),Ze=computed(()=>vt({field:{$rules:y.value}})),Ke=computed(()=>Ue({field:{$dirty:v.value,$externalErrors:d?.value,$rules:y.value},silent:!0})),et=computed(()=>E.value?_.value&&!(fe.value||me.value):!(fe.value||me.value)),me=computed(()=>A.value||!h.value?Object.entries(y.value).some(([K,le])=>le.$pending):!1),fe=computed(()=>d?.value?.length?!0:L(y.value)?!1:!h.value||h.value&&A.value?Object.entries(y.value).some(([K,le])=>!le.$valid):!1),tt=computed(()=>l),Me=computed(()=>!!L(y.value)),rt=computed(()=>d?.value?.length||Me.value?!1:v.value&&!L(e.value)&&!j.value?Object.values(y.value).every(K=>K.$valid&&K.$active):!1),It=computed(()=>Object.entries(y.value).some(([K,le])=>le.$haveAsync));function wt(){V?.fields&&Object.entries(V.fields).forEach(([K,le])=>{let at=effectScope();nt[K]=at.run(()=>{let lt=ref();return watchEffect(()=>{lt.value=le(reactive({$dirty:v,$externalErrors:d?.value??[],$value:e,$silentValue:ve,$rules:y,$error:Ae,$pending:me,$invalid:fe,$valid:rt,$errors:Qe,$ready:et,$silentErrors:Ke,$anyDirty:_,$tooltips:Ze,$name:tt,$inactive:Me,$edited:Fe,$anyEdited:Xe}));}),lt}),T.push(at);});}let nt={};return watch(fe,K=>{K||(A.value=!1);}),{$error:Ae,$pending:me,$invalid:fe,$valid:rt,$debounce:Z,$lazy:re,$errors:Qe,$ready:et,$silentErrors:Ke,$rewardEarly:h,$autoDirty:E,$clearExternalErrorsOnChange:O,$anyDirty:_,$edited:Fe,$anyEdited:Xe,$name:tt,$haveAnyAsyncRule:It,$shortcuts:nt,$validating:j,$tooltips:Ze,$dirty:v,triggerPunishment:A,processShortcuts:wt,$silentValue:ve,$inactive:Me}}),b(),o=watch(a.$dirty,()=>{f.setDirtyEntry(n,a.$dirty.value);}),N=watch(a.$valid,v=>{a.$rewardEarly.value&&v&&(a.triggerPunishment.value=!1);}),c=watch(a.$haveAnyAsyncRule,z);}function b(){C=watch(e,()=>{a.$autoDirty.value&&(a.$dirty.value||(a.$dirty.value=!0)),t.value instanceof Function&&G(),(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&i(),a.$rewardEarly.value!==!0&&a.$clearExternalErrorsOnChange.value&&u();},{deep:$?!0:xe?1:!0,flush:"post"});}function q(){Object.values(y.value).forEach(v=>{v.$validate();});}let y=ref({}),I=ref({});G();function W(){u(),a.$dirty.value=!1,a.triggerPunishment.value=!1,f.setDirtyEntry(n,!1),g.value=Q(e.value)?H(e.value):Array.isArray(e.value)?[...e.value]:e.value,Object.entries(y.value).forEach(([v,A])=>{A.$reset();}),!a.$lazy.value&&a.$autoDirty.value&&Object.values(y.value).forEach(v=>v.$validate());}function te(v=!0,A=!1){a.$dirty.value||(a.$dirty.value=!0),A&&v?(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&i():v&&i();}async function ae(){try{let v=e.value;if(a.triggerPunishment.value=!0,!a.$dirty.value)a.$dirty.value=!0;else if(a.$autoDirty.value&&a.$dirty.value&&!a.$pending.value)return {result:!a.$error.value,data:v};return L(y.value)?{result:!0,data:v}:{result:(await Promise.allSettled(Object.entries(y.value).map(([Z,re])=>re.$validate()))).every(Z=>Z.status==="fulfilled"?Z.value===!0:!1),data:v}}catch{return {result:!1,data:e.value}}}function D(){k(),e.value=H(g),W();}function P(v=!0){return a.$dirty.value?e.value:v?{_null:!0}:null}function u(){d?.value?.length&&(d.value=[]);}!a.$lazy.value&&!a.$dirty.value&&a.$autoDirty.value&&i();let{$shortcuts:s,$validating:S,$autoDirty:R,$rewardEarly:x,$clearExternalErrorsOnChange:B,$haveAnyAsyncRule:ee,$debounce:X,$lazy:oe,...ce}=a;return reactive({...ce,$externalErrors:d,$value:e,$rules:y,...s,$reset:W,$touch:te,$validate:ae,$unwatch:k,$watch:w,$resetAll:D,$extractDirtyFields:P,$clearExternalErrors:u})}function He({$id:e,path:t,index:r,options:n,storage:l,stateValue:f,customMessages:p,rules:d,externalErrors:m,initialState:$,shortcuts:g,fieldName:V}){let M=d.$key?d.$key:Ce(),a=`${t}.${String(M)}`;typeof f.value=="object"&&f.value!=null&&(f.value.$id?a=`${t}.${f.value.$id}`:Object.defineProperties(f.value,{$id:{value:M,enumerable:!1,configurable:!1,writable:!1}}));let T=be({state:f,rulesDef:toRef(()=>d),customMessages:p,path:a,storage:l,options:n,externalErrors:toRef(m?.value??[],r),initialState:$,shortcuts:g,fieldName:V});if(T){let C=f.value?.$id;T.$id=C??String(M),l.addArrayStatus(e,T.$id,T);}return T}function ht({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:f,externalErrors:p,initialState:d,shortcuts:m,fieldName:$}){let g=effectScope(),V,M=effectScope(),a,T=[];if(!Array.isArray(e.value)&&!t.value.$each)return;let C=ref(),N=ref(e.value),o,c=ref({}),i=l.getCollectionsEntry(n);a=M.run(()=>({isPrimitiveArray:computed(()=>Array.isArray(e.value)&&e.value.length?e.value.every(s=>typeof s!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(s=>$e(s)||typeof s=="function"):!1)})),G(),w();function G(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?(C.value=Ce(),Object.defineProperties(e.value,{$id:{value:C.value,enumerable:!1,configurable:!1,writable:!1}})):e.value?.$id&&(C.value=e.value.$id)),!a.isPrimitiveArray.value&&(N.value=c.value.$value,Array.isArray(e.value)?i.value=e.value.map((u,s)=>{let{scope:S,unwrapped:R}=We(t.value.$each,toRef(()=>u),s);S&&T.push(S);let x=toRef(d.value??[],s),B=He({$id:C.value,path:n,customMessages:r,rules:R??{},stateValue:toRef(()=>u),index:s,options:f,storage:l,externalErrors:toRef(p?.value??{},"$each"),initialState:x,shortcuts:m,fieldName:$});return B||null}).filter(u=>!!u):i.value=[],c.value=Ie({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:f,externalErrors:toRef(p?.value??{},"$self"),$isArray:!0,initialState:d,shortcuts:m,fieldName:$}));}function z(){if(Array.isArray(e.value)){let u=H(i.value);i.value=e.value.map((s,S)=>{let R=toRef(()=>s);if(s.$id&&i.value.find(x=>x.$id===s.$id)){let x=l.getArrayStatus(C.value,s.$id);return x?(x.$value=R,x):null}else {let{scope:x,unwrapped:B}=We(t.value.$each,R,S);if(x&&T.push(x),B){let ee=He({$id:C.value,path:n,customMessages:r,rules:B,stateValue:R,index:S,options:f,storage:l,externalErrors:toRef(p?.value??{},"$each"),initialState:toRef(d.value??[],S),shortcuts:m,fieldName:$});return ee||null}}}).filter(s=>!!s),u.filter(s=>!e.value.find(S=>s.$id===S.$id)).forEach((s,S)=>{l.deleteArrayStatus(C.value,S.toString());});}else i.value=[];}function k(){o=watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?G():z();},{deep:xe?1:!0,flush:"pre"});}function w(){k(),g=effectScope(),V=g.run(()=>{let u=computed({get:()=>e.value,set(h){o(),e.value=h,k();}}),s=computed(()=>c.value.$dirty&&!!i.value.length&&i.value.every(h=>h.$dirty)),S=computed(()=>c.value.$anyDirty||i.value.some(h=>h.$anyDirty)),R=computed(()=>c.value.$invalid||i.value.some(h=>h.$invalid)),x=computed(()=>(L(c.value.$rules)?!0:c.value.$valid)&&i.value.every(h=>h.$valid)),B=computed(()=>c.value.$error||i.value.some(h=>h.$error)),ee=computed(()=>!(R.value||X.value)),X=computed(()=>c.value.$pending||i.value.some(h=>h.$pending)),oe=computed(()=>!!i.value.length&&i.value.every(h=>h.$edited)),ce=computed(()=>c.value.$anyEdited||i.value.some(h=>h.$anyEdited)),v=computed(()=>({$self:c.value.$errors,$each:i.value.map(h=>h.$errors)})),A=computed(()=>({$self:c.value.$silentErrors,$each:i.value.map(h=>h.$silentErrors)})),_=computed(()=>$);function Z(){m?.collections&&Object.entries(m?.collections).forEach(([h,O])=>{let E=effectScope();re[h]=E.run(()=>{let j=ref();return watchEffect(()=>{j.value=O(reactive({$dirty:s,$error:B,$silentValue:u,$pending:X,$invalid:R,$valid:x,$errors:v,$ready:ee,$silentErrors:A,$anyDirty:S,$name:_,$each:i,$self:c,$value:e,$edited:oe,$anyEdited:ce}));}),j}),T.push(E);});}let re={};return Z(),{$dirty:s,$anyDirty:S,$invalid:R,$valid:x,$error:B,$pending:X,$errors:v,$silentErrors:A,$ready:ee,$name:_,$shortcuts:re,$silentValue:u,$edited:oe,$anyEdited:ce}}),a.isPrimitiveArray.value&&(console.warn(`${n} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`),o());}function b(){o&&o(),c.value&&c.value.$unwatch(),i.value&&i.value.forEach(u=>{"$dirty"in u&&u.$unwatch();}),g.stop(),g=effectScope(),M.stop(),M=effectScope(!0),T.forEach(u=>u.stop()),T=[];}function q(u=!0,s=!1){c.value.$touch(u,s),i.value.forEach(S=>{S.$touch(u,s);});}function y(){c.value.$reset(),i.value.forEach(u=>{u.$reset();});}async function I(){let u=e.value;try{return {result:(await Promise.allSettled([c.value.$validate(),...i.value.map(R=>R.$validate())])).every(R=>R.status==="fulfilled"?R.value.result===!0:!1),data:u}}catch{return {result:!1,data:u}}}function W(){c.value.$clearExternalErrors(),i.value.forEach(u=>{u.$clearExternalErrors();});}function te(u=!0){let s=i.value.map(S=>{if(dt(S))return S.$extractDirtyFields(u)});return u&&s.every(S=>L(S))&&(s=[]),s}function ae(){b(),e.value=H(d.value),y();}let{$shortcuts:D,...P}=V;return reactive({$self:c,...P,...D,$each:i,$value:e,$validate:I,$unwatch:b,$watch:w,$touch:q,$reset:y,$resetAll:ae,$extractDirtyFields:te,$clearExternalErrors:W})}function Oe({rulesDef:e,state:t,path:r="",rootRules:n,externalErrors:l,validationGroups:f,initialState:p,fieldName:d,...m}){let $=effectScope(),g,V=[],M=null,a=null,T=null;async function N(D=!0){let P=Object.entries(e.value),u=Object.fromEntries(P.filter(([R,x])=>!!x).map(([R,x])=>{if(x){let B=toRef(t.value??{},R),ee=toRef(()=>x),X=toRef(l?.value??{},R),oe=toRef(p?.value??{},R);return [R,be({state:B,rulesDef:ee,path:r?`${r}.${R}`:R,externalErrors:X,initialState:oe,fieldName:R,...m})]}return []})),s=Object.fromEntries(Object.entries(unref(l)??{}).filter(([R,x])=>!(R in e.value)&&!!x).map(([R])=>{let x=toRef(t.value??{},R),B=toRef(p?.value??{},R);return [R,be({state:x,rulesDef:computed(()=>({})),path:r?`${r}.${R}`:R,externalErrors:toRef(l?.value??{},R),initialState:B,fieldName:R,...m})]})),S=Object.fromEntries(Object.entries(t.value??{}).filter(([R])=>!(R in e.value)&&!(R in(s.value??{}))).map(([R])=>{let x=toRef(t.value??{},R),B=toRef(p?.value??{},R);return [R,be({state:x,rulesDef:computed(()=>({})),path:r?`${r}.${R}`:R,externalErrors:toRef(l?.value??{},R),initialState:B,fieldName:R,...m})]}));o.value={...u,...s,...S},D&&k();}let o=m.storage.getFieldsEntry(r);N();function c(){a?.(),Object.values(o.value).forEach(D=>{D.$reset();}),p.value={...H(t.value)},G();}function i(D=!0,P=!1){Object.values(o.value).forEach(u=>{u.$touch(D,P);});}function G(){l?.value&&(a=watch(l,()=>{w(),N();},{deep:!0}));}function z(){T=watch(t,()=>{w(),N(),i(!0,!0);},{flush:"sync"});}function k(){n&&(M?.(),M=watch(n,()=>{w(),N();},{deep:!0,flush:"post"}),G()),z(),$=effectScope(),g=$.run(()=>{let D=computed({get:()=>t.value,set(O){w(),t.value=O,N();}}),P=computed(()=>!!Object.entries(o.value).length&&Object.entries(o.value).every(([O,E])=>E?.$dirty)),u=computed(()=>Object.entries(o.value).some(([O,E])=>E?.$anyDirty)),s=computed(()=>Object.entries(o.value).some(([O,E])=>E?.$invalid)),S=computed(()=>{let O=Object.entries(o.value).filter(([E,j])=>yt(j)?!j.$inactive:!0);return O.length?O.every(([E,j])=>j?.$valid):!1}),R=computed(()=>u.value&&!X.value&&s.value),x=computed(()=>unref(m.options.rewardEarly)!=null?unref(m.options.rewardEarly):!1),B=computed(()=>unref(m.options.autoDirty)!=null?unref(m.options.autoDirty):!x.value),ee=computed(()=>B.value?u.value&&!(s.value||X.value):!(s.value||X.value)),X=computed(()=>Object.entries(o.value).some(([O,E])=>E?.$pending)),oe=computed(()=>Object.fromEntries(Object.entries(o.value).map(([O,E])=>[O,E?.$errors]))),ce=computed(()=>Object.fromEntries(Object.entries(o.value).map(([O,E])=>[O,E?.$silentErrors]))),v=computed(()=>!!Object.entries(o.value).length&&Object.entries(o.value).every(([O,E])=>E?.$edited)),A=computed(()=>Object.entries(o.value).some(([O,E])=>E?.$anyEdited)),_=computed(()=>d);function Z(){m.shortcuts?.nested&&Object.entries(m.shortcuts.nested).forEach(([O,E])=>{let j=effectScope();h[O]=j.run(()=>{let ve=ref();return watchEffect(()=>{ve.value=E(reactive({$dirty:P,$value:t,$silentValue:D,$error:R,$pending:X,$invalid:s,$valid:S,$ready:ee,$anyDirty:u,$name:_,$silentErrors:ce,$errors:oe,$fields:o,$edited:v,$anyEdited:A}));}),ve}),V.push(j);});}let re=computed({get:()=>f?Object.fromEntries(Object.entries(f?.(o.value)??{}).map(([O,E])=>E.length?[O,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$valid"].map(j=>[j,ut(E,j)])),...Object.fromEntries(["$errors","$silentErrors"].map(j=>[j,it(E,j)]))}]:[])):{},set(){}}),h={};return Z(),{$dirty:P,$anyDirty:u,$invalid:s,$valid:S,$error:R,$pending:X,$errors:oe,$silentErrors:ce,$ready:ee,$name:_,$shortcuts:h,$groups:re,$silentValue:D,$edited:v,$anyEdited:A}});}function w(){M?.(),a?.(),T?.(),V.forEach(D=>D.stop()),V=[],$.stop(),o.value&&Object.entries(o.value).forEach(([D,P])=>{P.$unwatch();});}function b(){Object.entries(o.value).forEach(([D,P])=>{P.$clearExternalErrors();});}async function q(){w(),t.value=H({...p.value??{}}),c(),N();}function y(D){return D.filter(([P,u])=>Q(u)?!(u&&typeof u=="object"&&"_null"in u)&&!L(u):Array.isArray(u)?u.length:!0)}function I(D=!0){let P=Object.entries(o.value).map(([u,s])=>[u,s.$extractDirtyFields(D)]);return D&&(P=y(P)),Object.fromEntries(P)}async function W(){try{let D=t.value;return {result:(await Promise.allSettled(Object.values(o.value).map(s=>s.$validate()))).every(s=>s.status==="fulfilled"?s.value.result===!0:!1),data:D}}catch{return {result:!1,data:t.value}}}let{$shortcuts:te,...ae}=g;return reactive({...ae,...te,$fields:o,$value:t,$resetAll:q,$reset:c,$touch:i,$validate:W,$unwatch:w,$watch:k,$clearExternalErrors:b,$extractDirtyFields:I})}function be({rulesDef:e,externalErrors:t,...r}){if(Rt(e,r.state))return ht({rulesDef:e,externalErrors:t,...r});if(ft(r.state,e)){if(Te(r.state))return Oe({rulesDef:e,externalErrors:t,...r});{let n=ref({}),l=watch(n,d=>{l(),r.state.value=d;},{deep:!0}),{state:f,...p}=r;return Oe({rulesDef:e,externalErrors:t,...p,state:n})}}else if(pt(e))return Ie({rulesDef:e,externalErrors:t,...r})}function ye({initialState:e,options:t,scopeRules:r,state:n,customRules:l,shortcuts:f}){let p=ke(),d=ref();return d.value=Oe({rootRules:r,rulesDef:r,state:n,customMessages:l?.(),storage:p,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:f,fieldName:"root",path:""}),getCurrentScope()&&onScopeDispose(()=>{d.value?.$unwatch();}),reactive({regle:d})}function qe(e,t,r){let n={autoDirty:t?.autoDirty,lazy:t?.lazy,rewardEarly:t?.rewardEarly,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange};function l(f,p,d){let m=isRef(p)?p:computed(typeof p=="function"?p:()=>p),$={...n,...d},g=isRef(f)?f:ref(f),V=ref({...H(g.value)});return {r$:ye({scopeRules:m,state:g,options:$,initialState:V,customRules:e,shortcuts:r}).regle}}return l}var xt=qe();function Je(){function e(t,r){return r}return e}var Ye=Je();function Ct({rules:e,modifiers:t,shortcuts:r}){let n=qe(e,t,r),l=Je();return {useRegle:n,inferRules:l}}
|
|
2
|
-
export{
|
|
1
|
+
import {toValue,version,ref,getCurrentScope,onScopeDispose,reactive,shallowRef,effectScope,computed,isRef,toRef,unref,watch,watchEffect}from'vue';function J(e){return e==null?true:e instanceof Date?isNaN(e.getTime()):Array.isArray(e)?false:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}var ct=Symbol("regle-rule");function Mt(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 Y(e){let t=e,r={}.toString.call(e).slice(8,-1);if(r=="Set"&&(t=new Set([...e].map(n=>Y(n)))),r=="Map"&&(t=new Map([...e].map(n=>[Y(n[0]),Y(n[1])]))),r=="Date"&&(t=new Date(e.getTime())),r=="RegExp"&&(t=RegExp(e.source,Mt(e))),r=="Array"||r=="Object"){t=Array.isArray(e)?[]:{};for(let n in e)t[n]=Y(e[n]);}return t}function re(e){return e instanceof Date||e instanceof File?false:typeof e=="object"&&e!==null&&!Array.isArray(e)}function We(e){if(J(e))return false;try{let t=null;if(e instanceof Date)t=e;else if(typeof e=="string"){let r=new Date(e);if(r.toString()==="Invalid Date")return !1;t=r;}return !!t}catch{return false}}function Ue(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)}var Be=(r=>(r.Inline="__inline",r.Async="__async",r))(Be||{});function ft(e,t){return e.some(r=>r[t])}function Rt(e,t){return e.reduce((r,n)=>{let a=n[t]||[];return r.concat(a)},[])}function ee(e){try{return e.map(t=>toValue(t))}catch{return []}}function dt(e){return e.map(t=>t instanceof Function?computed(t):isRef(t)?t:toRef(()=>t))}function pt(e){let n=e.toString().replace(/\/\/.*$/gm,"").replace(/\/\*[\s\S]*?\*\//g,"").match(/^(?:async\s*)?(?:function\b.*?\(|\((.*?)\)|(\w+))\s*=>|\((.*?)\)\s*=>|function.*?\((.*?)\)|\((.*?)\)/);return n?(n[0]||n[1]||n[2]||n[3]||n[4]||"").split(",").map(f=>f.trim()).filter(f=>f.length>0).length:0}function Le(e,...t){let{validator:r,type:n}=e,a=n==="__async"||r.constructor.name==="AsyncFunction";return {...{validator(R,...E){return e.validator(R,...ee(E.length?E:t))},message(R){return typeof e.message=="function"?e.message({...R,$params:ee(R?.$params?.length?R.$params:t)}):e.message},active(R){return typeof e.active=="function"?e.active({...R,$params:ee(R?.$params?.length?R.$params:t)}):e.active??true},tooltip(R){return typeof e.tooltip=="function"?e.tooltip({...R,$params:ee(R?.$params?.length?R.$params:t)}):e.tooltip??[]},exec(R){let E=e.validator(R,...ee(t)),h;return E instanceof Promise?E.then(v=>(h=v,typeof h=="object"&&"$valid"in h?h.$valid:typeof h=="boolean"?h:false)):(h=E,typeof h=="object"&&"$valid"in h?h.$valid:typeof h=="boolean"?h: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:dt(t),_brand:ct}}function ke(e){if(typeof e.validator=="function"){let r=Le(e,...[]),n=e.async??e.validator.constructor.name==="AsyncFunction";if(pt(e.validator)>1){let a=function(...s){return Le(e,...s)};return a.validator=r.validator,a.message=r.message,a.active=r.active,a.tooltip=r.tooltip,a.type=r.type,a.exec=r.exec,a._validator=r.validator,a._message=r.message,a._active=r.active,a._tooltip=r.tooltip,a._type=e.type,a._message_pacthed=false,a._tooltip_pacthed=false,a._async=n,a}else return r}throw new Error("Validator must be a function")}function He(){let e=shallowRef(new Map),t=shallowRef(new Map),r=shallowRef(new Map),n=shallowRef(new Map),a=shallowRef(new Map),s=shallowRef(new Map);function f(d){let $=t.value.get(d);if($)return $;{let S=ref({});return t.value.set(d,S),S}}function R(d){let $=r.value.get(d);if($)return $;{let S=ref([]);return r.value.set(d,S),S}}function E(d,$,S){s.value.set(`${d}-${$}`,S);}function h(d,$){return s.value.get(`${d}-${$}`)}function v(d,$){d&&$!=null&&s.value.delete(`${d}-${$}`);}function N(d,$){n.value.set(d,$);}function I(d){return n.value.get(d)??false}function G(d,$){e.value.set(d,$);}function w(d,$){let S=e.value.get(d);return S?l($,S)?{valid:true}:{valid:false}:undefined}function l(d,$){let S=Object.keys($),u=Object.keys(d);return u.length!==S.length||!u.every(W=>S.includes(W))?false:u.every(W=>{let L=d[W],D=$[W];return !D||!L||typeof L=="function"||typeof D=="function"||typeof L=="number"||typeof L=="boolean"?false:L._params?L._params?.every((q,x)=>{if(typeof D=="number"||typeof D=="boolean")return true;{let Q=ee(D._params),g=ee(L._params);return Q?.[x]===g?.[x]}}):true})}function M(d){let $=a.value.get(d);if($)return $;{let S=ref(false),u=ref(true),p=ref({}),W=ref(false);return a.value.set(d,{$pending:S,$valid:u,$metadata:p,$validating:W}),{$pending:S,$valid:u,$metadata:p,$validating:W}}}return getCurrentScope()&&onScopeDispose(()=>{e.value.clear(),t.value.clear(),r.value.clear(),n.value.clear(),a.value.clear(),s.value.clear();}),{addRuleDeclEntry:G,setDirtyEntry:N,checkRuleDeclEntry:w,getDirtyState:I,trySetRuleStatusRef:M,getFieldsEntry:f,getCollectionsEntry:R,getArrayStatus:h,addArrayStatus:E,deleteArrayStatus:v,arrayStatusStorage:s}}function Oe(e){return e.value instanceof Date||e.value instanceof File?false:re(e.value)}function ze(e,t,r){let n=effectScope(),a;return e instanceof Function?a=n.run(()=>e(t,r??0)):a=e,{scope:n,unwrapped:a}}function Ae(e,t,r){let n,a=(...s)=>new Promise(f=>{clearTimeout(n),n=setTimeout(()=>{n=undefined,Promise.resolve(e.apply(this,[...s])).then(f);},t);});return a.cancel=()=>{clearTimeout(n),n=undefined;},a}function Bt(e,t){let r=String(e).split("."),n=String(t).split(".");for(let a=0;a<Math.min(r.length,n.length);a++){let s=Number(r[a]),f=Number(n[a]);if(s>f)return 1;if(f>s)return -1;if(!isNaN(s)&&isNaN(f))return 1;if(isNaN(s)&&!isNaN(f))return -1}return 0}var Me=Bt(version,"3.5.0")!==-1;function Lt(){return Math.floor(Math.random()*Date.now()).toString()}function Fe(){return typeof window>"u"?Lt():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function vt(e,t){return Oe(e)||re(t.value)&&!J(t.value)&&!Object.entries(t.value).some(([r,n])=>xe(n)||typeof n=="function")}function mt(e,t){return !!e.value&&re(e.value)&&"$each"in e.value||Array.isArray(t.value)}function yt(e){return !!e.value&&re(e.value)}function xe(e){return re(e)&&"_validator"in e}function Ce(e){return typeof e.value!="function"}function $t(e){return re(e)&&"$fields"in e}function gt(e){return !!e&&"$rules"in e}function qe({field:e,silent:t=false}){return Object.entries(e.$rules??{}).map(([r,n])=>t||!n.$valid&&e.$error&&!n.$validating?n.$message:null).filter(r=>!!r).reduce((r,n)=>typeof n=="string"?r?.concat([n]):r?.concat(n),[]).concat(e.$error?e.$externalErrors??[]:[]).concat(e.$error?e.$schemaErrors??[]:[])}function St({field:e}){return Object.entries(e.$rules??{}).map(([t,r])=>r.$tooltip).filter(t=>!!t).reduce((t,r)=>typeof r=="string"?t?.concat([r]):t?.concat(r),[])}function ht({fieldProperties:e,customMessages:t,rule:r,ruleKey:n,state:a,path:s,storage:f,$debounce:R,modifiers:E}){let h=effectScope(),v={},N,I=ref(false),{$pending:G,$valid:w,$metadata:l,$validating:M}=f.trySetRuleStatusRef(`${s}.${n}`);function d(){h=effectScope(),v=h.run(()=>{let D=computed(()=>({$value:a.value,$error:e.$error.value,$dirty:e.$dirty.value,$pending:e.$pending.value,$valid:e.$valid.value,$invalid:e.$invalid.value,$rule:{$valid:w.value,$invalid:!w.value,$pending:G.value},$params:ie.value,...l.value})),q=computed(()=>Ce(r)?typeof r.value.active=="function"?r.value.active(D.value):!!r.value.active:true);function x(X){let le="",o=t?t[n]?.[X]:undefined;if(o&&(typeof o=="function"?le=o(D.value):le=o),Ce(r)){let c=`_${X}_patched`;o&&!r.value[c]||(typeof r.value[X]=="function"?le=r.value[X](D.value):le=r.value[X]??"");}return le}let Q=computed(()=>{let X=x("message");return J(X)&&(X="This field is not valid"),X}),g=computed(()=>x("tooltip")),j=computed(()=>Ce(r)&&r.value.type?r.value.type:n),oe=computed(()=>Ce(r)?r.value.validator:r.value),ie=computed(()=>typeof r.value=="function"?[]:ee(r.value._params??[])),pe=computed(()=>`${s}.${j.value}`);return {$active:q,$message:Q,$type:j,$validator:oe,$params:ie,$path:pe,$tooltip:g}}),N=watch(v?.$params,()=>{(E.$autoDirty.value||E.$rewardEarly.value&&e.$error.value)&&p();});}d();function $(){w.value=true,e.$dirty.value&&(G.value=true);}async function S(){let D=false;try{let q=v.$validator.value,x=q(a.value,...v.$params.value),Q=a.value;$();let g;if(x instanceof Promise?g=await x:g=x,a.value!==Q)return !0;if(typeof g=="boolean")D=g;else {let{$valid:j,...oe}=g;D=j,l.value=oe;}}catch{D=false;}finally{G.value=false;}return D}let u=Ae(S,R??200);async function p(){try{M.value=!0;let D=!1;if(xe(r.value)&&r.value._async)D=await u();else {let q=v.$validator.value,x=q(a.value,...v.$params.value);if(x 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(x!=null)if(typeof x=="boolean")D=x;else {let{$valid:Q,...g}=x;D=Q,l.value=g;}}return w.value=D,D}catch{return false}finally{M.value=false;}}function W(){w.value=true,l.value={},G.value=false,M.value=false,d();}function L(){N(),h.stop(),h=effectScope();}return reactive({...v,$pending:G,$valid:w,$metadata:l,$haveAsync:I,$validating:M,$validate:p,$unwatch:L,$watch:d,$reset:W})}function _e({state:e,rulesDef:t,customMessages:r,path:n,fieldName:a,storage:s,options:f,externalErrors:R,schemaErrors:E,schemaMode:h,onUnwatch:v,$isArray:N,initialState:I,shortcuts:G}){let w=effectScope(),l,M=[],d,$,S,u,p=()=>{};function W(){let y=t.value,O=s.checkRuleDeclEntry(n,y);j.value=Object.fromEntries(Object.entries(y).filter(([B])=>B.startsWith("$"))),q(),g.value=Object.fromEntries(Object.entries(t.value).filter(([B])=>!B.startsWith("$")).map(([B,K])=>{if(K){let b=toRef(()=>K);return [B,ht({fieldProperties:{$dirty:l.$dirty,$error:l.$error,$invalid:l.$invalid,$pending:l.$pending,$valid:l.$valid},modifiers:{$autoDirty:l.$autoDirty,$rewardEarly:l.$rewardEarly},customMessages:r,rule:b,ruleKey:B,state:e,path:n,storage:s,$debounce:j.value.$debounce})]}return []}).filter(B=>!!B.length)),l.processShortcuts(),L(),O?.valid!=null&&(l.$dirty.value=s.getDirtyState(n),l.$dirty.value&&p()),s.addRuleDeclEntry(n,y);}function L(){p=l.$debounce.value?Ae(Q,l.$debounce.value??l.$haveAnyAsyncRule?100:0):Q;}function D(){g.value&&Object.entries(g.value).forEach(([y,O])=>{O.$unwatch();}),S(),l.$dirty.value&&s.setDirtyEntry(n,l.$dirty.value),d?.(),$?.(),w.stop(),w=effectScope(),M.forEach(y=>y.stop()),M=[],v?.(),u?.();}function q(){g.value&&Object.entries(g.value).forEach(([y,O])=>{O.$watch();}),l=w.run(()=>{let y=ref(false),O=ref(false),B=computed(()=>y.value),K=computed(()=>j.value.$debounce),b=computed(()=>j.value.$lazy!=null?j.value.$lazy:unref(f.lazy)!=null?unref(f.lazy):false),ue=computed(()=>j.value.$rewardEarly!=null?j.value.$rewardEarly:unref(f.rewardEarly)!=null?unref(f.rewardEarly):false),ve=computed(()=>j.value.$clearExternalErrorsOnChange!=null?j.value.$clearExternalErrorsOnChange:unref(f.clearExternalErrorsOnChange)!=null?unref(f.clearExternalErrorsOnChange):true),ce=computed(()=>j.value.$autoDirty!=null?j.value.$autoDirty:unref(f.autoDirty)!=null?unref(f.autoDirty):!ue.value),F=computed(()=>Object.entries(g.value).some(([ae,se])=>se.$validating)),C=computed({get:()=>e.value,set(ae){d(),e.value=ae,x();}}),H=computed(()=>me.value&&!De.value&&y.value),Te=computed(()=>qe({field:{$error:H.value,$externalErrors:R?.value,$schemaErrors:E?.value,$rules:g.value}})),tt=computed(()=>qe({field:{$error:true,$externalErrors:R?.value,$schemaErrors:E?.value,$rules:g.value},silent:true})),Ge=computed(()=>y.value?We(I.value)&&We(e.value)?Ue(I.value).getDate()!==Ue(e.value).getDate():I.value==null?!!e.value:Array.isArray(e.value)&&Array.isArray(I.value)?e.value.length!==I.value.length:I.value!==e.value:false),rt=computed(()=>Ge.value),nt=computed(()=>St({field:{$rules:g.value}})),at=computed(()=>ce.value?B.value&&!(me.value||De.value):!(me.value||De.value)),De=computed(()=>O.value||!ue.value?Object.entries(g.value).some(([ae,se])=>se.$pending):false),me=computed(()=>R?.value?.length||E?.value?.length?true:Pe.value?false:!ue.value||ue.value&&O.value?Object.entries(g.value).some(([ae,se])=>!se.$valid):false),lt=computed(()=>a),Pe=computed(()=>!!(J(g.value)&&!h)),ot=computed(()=>R?.value?.length||Pe.value?false:y.value&&!J(e.value)&&!F.value?h?!E?.value?.length:Object.values(g.value).every(ae=>ae.$valid&&ae.$active):false),Ot=computed(()=>Object.entries(g.value).some(([ae,se])=>se.$haveAsync));function At(){G?.fields&&Object.entries(G.fields).forEach(([ae,se])=>{let st=effectScope();ut[ae]=st.run(()=>{let it=ref();return watchEffect(()=>{it.value=se(reactive({$dirty:y,$externalErrors:R?.value??[],$value:e,$silentValue:C,$rules:g,$error:H,$pending:De,$invalid:me,$valid:ot,$errors:Te,$ready:at,$silentErrors:tt,$anyDirty:B,$tooltips:nt,$name:lt,$inactive:Pe,$edited:Ge,$anyEdited:rt}));}),it}),M.push(st);});}let ut={};return watch(me,ae=>{ae||(O.value=false);}),{$error:H,$pending:De,$invalid:me,$valid:ot,$debounce:K,$lazy:b,$errors:Te,$ready:at,$silentErrors:tt,$rewardEarly:ue,$autoDirty:ce,$clearExternalErrorsOnChange:ve,$anyDirty:B,$edited:Ge,$anyEdited:rt,$name:lt,$haveAnyAsyncRule:Ot,$shortcuts:ut,$validating:F,$tooltips:nt,$dirty:y,triggerPunishment:O,processShortcuts:At,$silentValue:C,$inactive:Pe}}),x(),S=watch(l.$dirty,()=>{s.setDirtyEntry(n,l.$dirty.value);}),$=watch(l.$valid,y=>{l.$rewardEarly.value&&y&&(l.triggerPunishment.value=false);}),u=watch(l.$haveAnyAsyncRule,L);}function x(){d=watch(e,()=>{l.$autoDirty.value&&(l.$dirty.value||(l.$dirty.value=true)),t.value instanceof Function&&W(),(l.$autoDirty.value||l.$rewardEarly.value&&l.$error.value)&&p(),l.$rewardEarly.value!==true&&l.$clearExternalErrorsOnChange.value&&o();},{deep:N?true:Me?1:true,flush:"post"});}function Q(){Object.values(g.value).forEach(y=>{y.$validate();});}let g=ref({}),j=ref({});W();function oe(){o(),l.$dirty.value=false,l.triggerPunishment.value=false,s.setDirtyEntry(n,false),I.value=re(e.value)?Y(e.value):Array.isArray(e.value)?[...e.value]:e.value,Object.entries(g.value).forEach(([y,O])=>{O.$reset();}),!l.$lazy.value&&l.$autoDirty.value&&Object.values(g.value).forEach(y=>y.$validate());}function ie(y=true,O=false){l.$dirty.value||(l.$dirty.value=true),O&&y?(l.$autoDirty.value||l.$rewardEarly.value&&l.$error.value)&&p():y&&p();}async function pe(){try{let y=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 {result:!l.$error.value,data:y};return h?{result:!E?.value?.length,data:y}:J(g.value)?{result:!0,data:y}:{result:(await Promise.allSettled(Object.entries(g.value).map(([K,b])=>b.$validate()))).every(K=>K.status==="fulfilled"?K.value===!0:!1),data:y}}catch{return {result:false,data:e.value}}}function X(){D(),e.value=Y(I),oe();}function le(y=true){return l.$dirty.value?e.value:y?{_null:true}:null}function o(){R?.value?.length&&(R.value=[]);}!l.$lazy.value&&!l.$dirty.value&&l.$autoDirty.value&&p();let{$shortcuts:c,$validating:m,$autoDirty:T,$rewardEarly:V,$clearExternalErrorsOnChange:ne,$haveAnyAsyncRule:i,$debounce:P,$lazy:k,triggerPunishment:Z,...U}=l;return reactive({...U,$externalErrors:R,$value:e,$rules:g,...c,$reset:oe,$touch:ie,$validate:pe,$unwatch:D,$watch:q,$resetAll:X,$extractDirtyFields:le,$clearExternalErrors:o})}function Qe({$id:e,path:t,index:r,options:n,storage:a,stateValue:s,customMessages:f,rules:R,externalErrors:E,schemaErrors:h,initialState:v,shortcuts:N,fieldName:I,schemaMode:G}){let w=R.$key?R.$key:Fe(),l=`${t}.${String(w)}`;typeof s.value=="object"&&s.value!=null&&(s.value.$id?l=`${t}.${s.value.$id}`:Object.defineProperties(s.value,{$id:{value:w,enumerable:false,configurable:false,writable:false}}));let M=toRef(E?.value??[],r),d=computed(()=>h?.value?.[r]),$=ge({state:s,rulesDef:toRef(()=>R),customMessages:f,path:l,storage:a,options:n,externalErrors:M,schemaErrors:d,initialState:v,shortcuts:N,fieldName:I,schemaMode:G});if($){let S=s.value?.$id;$.$id=S??String(w),a.addArrayStatus(e,$.$id,$);}return $}function Dt({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:s,externalErrors:f,schemaErrors:R,schemaMode:E,initialState:h,shortcuts:v,fieldName:N}){let I=effectScope(),G,w=effectScope(),l,M=[];if(!Array.isArray(e.value)&&!t.value.$each)return;let d=ref(),$=ref(e.value),S,u=ref({}),p=a.getCollectionsEntry(n);l=w.run(()=>({isPrimitiveArray:computed(()=>Array.isArray(e.value)&&e.value.length?e.value.every(c=>typeof c!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(c=>xe(c)||typeof c=="function"):false)})),W(),q();function W(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?(d.value=Fe(),Object.defineProperties(e.value,{$id:{value:d.value,enumerable:false,configurable:false,writable:false}})):e.value?.$id&&(d.value=e.value.$id)),!l.isPrimitiveArray.value&&($.value=u.value.$value,Array.isArray(e.value)?p.value=e.value.map((o,c)=>{let{scope:m,unwrapped:T}=ze(t.value.$each,toRef(()=>o),c);m&&M.push(m);let V=toRef(h.value??[],c),ne=toRef(f?.value??{},"$each"),i=computed(()=>R?.value?.$each),P=Qe({$id:d.value,path:n,customMessages:r,rules:T??{},stateValue:toRef(()=>o),index:c,options:s,storage:a,externalErrors:ne,schemaErrors:i,initialState:V,shortcuts:v,fieldName:N,schemaMode:E});return P||null}).filter(o=>!!o):p.value=[],u.value=_e({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:s,externalErrors:toRef(f?.value??{},"$self"),schemaErrors:computed(()=>R?.value?.$self),$isArray:true,initialState:h,shortcuts:v,fieldName:N,schemaMode:E}));}function L(){if(Array.isArray(e.value)){let o=Y(p.value);p.value=e.value.map((c,m)=>{let T=toRef(()=>c);if(c.$id&&p.value.find(V=>V.$id===c.$id)){let V=a.getArrayStatus(d.value,c.$id);return V?(V.$value=T,V):null}else {let{scope:V,unwrapped:ne}=ze(t.value.$each,T,m);V&&M.push(V);let i=toRef(f?.value??{},"$each"),P=computed(()=>R?.value?.$each??[]),k=Qe({$id:d.value,path:n,customMessages:r,rules:ne??{},stateValue:T,index:m,options:s,storage:a,externalErrors:i,schemaErrors:P,initialState:toRef(h.value??[],m),shortcuts:v,fieldName:N,schemaMode:E});return k||null}}).filter(c=>!!c),o.filter(c=>!e.value?.find(m=>c.$id===m.$id)).forEach((c,m)=>{a.deleteArrayStatus(d.value,m.toString());});}else p.value=[];}function D(){S=watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?W():L();},{deep:Me?1:true,flush:"pre"});}function q(){D(),I=effectScope(),G=I.run(()=>{let o=computed({get:()=>e.value,set(b){S(),e.value=b,D();}}),c=computed(()=>u.value.$dirty&&!!p.value.length&&p.value.every(b=>b.$dirty)),m=computed(()=>u.value.$anyDirty||p.value.some(b=>b.$anyDirty)),T=computed(()=>u.value.$invalid||p.value.some(b=>b.$invalid)),V=computed(()=>(J(u.value.$rules)?true:u.value.$valid)&&p.value.every(b=>b.$valid)),ne=computed(()=>u.value.$error||p.value.some(b=>b.$error)),i=computed(()=>!(T.value||P.value)),P=computed(()=>u.value.$pending||p.value.some(b=>b.$pending)),k=computed(()=>!!p.value.length&&p.value.every(b=>b.$edited)),Z=computed(()=>u.value.$anyEdited||p.value.some(b=>b.$anyEdited)),U=computed(()=>({$self:u.value.$errors,$each:p.value.map(b=>b.$errors)})),y=computed(()=>({$self:u.value.$silentErrors,$each:p.value.map(b=>b.$silentErrors)})),O=computed(()=>N);function B(){v?.collections&&Object.entries(v?.collections).forEach(([b,ue])=>{let ve=effectScope();K[b]=ve.run(()=>{let ce=ref();return watchEffect(()=>{ce.value=ue(reactive({$dirty:c,$error:ne,$silentValue:o,$pending:P,$invalid:T,$valid:V,$errors:U,$ready:i,$silentErrors:y,$anyDirty:m,$name:O,$each:p,$self:u,$value:e,$edited:k,$anyEdited:Z}));}),ce}),M.push(ve);});}let K={};return B(),{$dirty:c,$anyDirty:m,$invalid:T,$valid:V,$error:ne,$pending:P,$errors:U,$silentErrors:y,$ready:i,$name:O,$shortcuts:K,$silentValue:o,$edited:k,$anyEdited:Z}}),l.isPrimitiveArray.value&&(console.warn(`${n} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`),S());}function x(){S&&S(),u.value&&u.value.$unwatch(),p.value&&p.value.forEach(o=>{"$dirty"in o&&o.$unwatch();}),I.stop(),I=effectScope(),w.stop(),w=effectScope(true),M.forEach(o=>o.stop()),M=[];}function Q(o=true,c=false){u.value.$touch(o,c),p.value.forEach(m=>{m.$touch(o,c);});}function g(){u.value.$reset(),p.value.forEach(o=>{o.$reset();});}async function j(){let o=e.value;try{return {result:(await Promise.allSettled([u.value.$validate(),...p.value.map(T=>T.$validate())])).every(T=>T.status==="fulfilled"?T.value.result===!0:!1),data:o}}catch{return {result:false,data:o}}}function oe(){u.value.$clearExternalErrors(),p.value.forEach(o=>{o.$clearExternalErrors();});}function ie(o=true){let c=p.value.map(m=>{if($t(m))return m.$extractDirtyFields(o)});return o&&c.every(m=>J(m))&&(c=[]),c}function pe(){x(),e.value=Y(h.value),g();}let{$shortcuts:X,...le}=G;return reactive({$self:u,...le,...X,$each:p,$value:e,$validate:j,$unwatch:x,$watch:q,$touch:Q,$reset:g,$resetAll:pe,$extractDirtyFields:ie,$clearExternalErrors:oe})}function Ne({rulesDef:e,state:t,path:r="",rootRules:n,externalErrors:a,schemaErrors:s,rootSchemaErrors:f,validationGroups:R,initialState:E,fieldName:h,...v}){let N=effectScope(),I,G=[],w=null,l=null,M=null,d=null;async function S(o=true){let c=Object.entries(e.value),m=Object.fromEntries(c.filter(([i,P])=>!!P).map(([i,P])=>{if(P){let k=toRef(t.value??{},i),Z=toRef(()=>P),U=toRef(a?.value??{},i),y=computed(()=>s?.value?.[i]),O=toRef(E?.value??{},i);return [i,ge({state:k,rulesDef:Z,path:r?`${r}.${i}`:i,externalErrors:U,schemaErrors:y,initialState:O,fieldName:i,...v})]}return []})),T=Object.fromEntries(Object.entries(unref(a)??{}).filter(([i,P])=>!(i in e.value)&&!!P).map(([i])=>{let P=toRef(t.value??{},i),k=toRef(a?.value??{},i),Z=computed(()=>s?.value?.[i]),U=toRef(E?.value??{},i);return [i,ge({state:P,rulesDef:computed(()=>({})),path:r?`${r}.${i}`:i,externalErrors:k,schemaErrors:Z,initialState:U,fieldName:i,...v})]})),V=Object.fromEntries(Object.entries(unref(s)??{}).map(([i])=>{let P=toRef(t.value??{},i),k=toRef(a?.value??{},i),Z=computed(()=>s?.value?.[i]),U=toRef(E?.value??{},i);return [i,ge({state:P,rulesDef:computed(()=>({})),path:r?`${r}.${i}`:i,externalErrors:k,schemaErrors:Z,initialState:U,fieldName:i,...v})]})),ne=Object.fromEntries(Object.entries(t.value??{}).filter(([i])=>!(i in e.value)&&!(i in(T??{}))&&!(i in(V??{}))).map(([i])=>{let P=toRef(t.value??{},i),k=toRef(a?.value??{},i),Z=computed(()=>s?.value?.[i]),U=toRef(E?.value??{},i);return [i,ge({state:P,rulesDef:computed(()=>({})),path:r?`${r}.${i}`:i,externalErrors:k,schemaErrors:Z,initialState:U,fieldName:i,...v})]}));u.value={...m,...T,...V,...ne},o&&q();}let u=v.storage.getFieldsEntry(r);S();function p(){M?.(),Object.values(u.value).forEach(o=>{o.$reset();}),E.value={...Y(t.value)},L();}function W(o=true,c=false){Object.values(u.value).forEach(m=>{m.$touch(o,c);});}function L(){a&&(M=watch(a,()=>{x(),S();},{deep:true}));}function D(){d=watch(t,()=>{x(),S(),W(true,true);},{flush:"sync"});}function q(){n&&(w?.(),w=watch(n,()=>{x(),S();},{deep:true,flush:"post"}),L()),f&&(l?.(),l=watch(f,()=>{x(),S();},{deep:true,flush:"post"})),D(),N=effectScope(),I=N.run(()=>{let o=computed({get:()=>t.value,set(F){x(),t.value=F,S();}}),c=computed(()=>!!Object.entries(u.value).length&&Object.entries(u.value).every(([F,C])=>C?.$dirty)),m=computed(()=>Object.entries(u.value).some(([F,C])=>C?.$anyDirty)),T=computed(()=>Object.entries(u.value).some(([F,C])=>C?.$invalid)),V=computed(()=>{let F=Object.entries(u.value).filter(([C,H])=>gt(H)?!H.$inactive:true);return F.length?F.every(([C,H])=>H?.$valid):false}),ne=computed(()=>m.value&&!U.value&&T.value),i=computed(()=>unref(v.options.rewardEarly)!=null?unref(v.options.rewardEarly):false),P=computed(()=>unref(v.options.autoDirty)!=null?unref(v.options.autoDirty):!i.value),k=computed(()=>P.value?m.value&&!(T.value||U.value):!(T.value||U.value)),Z=ref(false),U=computed(()=>Z.value||Object.entries(u.value).some(([F,C])=>C?.$pending)),y=computed(()=>Object.fromEntries(Object.entries(u.value).map(([F,C])=>[F,C?.$errors]))),O=computed(()=>Object.fromEntries(Object.entries(u.value).map(([F,C])=>[F,C?.$silentErrors]))),B=computed(()=>!!Object.entries(u.value).length&&Object.entries(u.value).every(([F,C])=>C?.$edited)),K=computed(()=>Object.entries(u.value).some(([F,C])=>C?.$anyEdited)),b=computed(()=>h);function ue(){v.shortcuts?.nested&&Object.entries(v.shortcuts.nested).forEach(([F,C])=>{let H=effectScope();ce[F]=H.run(()=>{let Te=ref();return watchEffect(()=>{Te.value=C(reactive({$dirty:c,$value:t,$silentValue:o,$error:ne,$pending:U,$invalid:T,$valid:V,$ready:k,$anyDirty:m,$name:b,$silentErrors:O,$errors:y,$fields:u,$edited:B,$anyEdited:K}));}),Te}),G.push(H);});}let ve=computed({get:()=>R?Object.fromEntries(Object.entries(R?.(u.value)??{}).map(([F,C])=>C.length?[F,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$valid"].map(H=>[H,ft(C,H)])),...Object.fromEntries(["$errors","$silentErrors"].map(H=>[H,Rt(C,H)]))}]:[])):{},set(){}}),ce={};return ue(),{$dirty:c,$anyDirty:m,$invalid:T,$valid:V,$error:ne,$pending:U,$errors:y,$silentErrors:O,$ready:k,$name:b,$shortcuts:ce,$groups:ve,$silentValue:o,$edited:B,$anyEdited:K,$localPending:Z}});}function x(){w?.(),M?.(),d?.(),G.forEach(o=>o.stop()),G=[],N.stop(),u.value&&Object.entries(u.value).forEach(([o,c])=>{c.$unwatch();});}function Q(){Object.entries(u.value).forEach(([o,c])=>{c.$clearExternalErrors();});}async function g(){x(),t.value=Y({...E.value??{}}),p(),S();}function j(o){return o.filter(([c,m])=>re(m)?!(m&&typeof m=="object"&&"_null"in m)&&!J(m):Array.isArray(m)?m.length:true)}function oe(o=true){let c=Object.entries(u.value).map(([m,T])=>[m,T.$extractDirtyFields(o)]);return o&&(c=j(c)),Object.fromEntries(c)}async function ie(){try{if(v.schemaMode)return v.onValidate?(W(!1),I.$localPending.value=!0,v.onValidate()):{result:!1,data:t.value};{let o=t.value;return {result:(await Promise.allSettled(Object.values(u.value).map(T=>T.$validate()))).every(T=>T.status==="fulfilled"?T.value.result===!0:!1),data:o}}}catch{return {result:false,data:t.value}}finally{I.$localPending.value=false;}}let{$shortcuts:pe,$localPending:X,...le}=I;return reactive({...le,...pe,$fields:u,$value:t,$resetAll:g,$reset:p,$touch:W,$validate:ie,$unwatch:x,$watch:q,$clearExternalErrors:Q,$extractDirtyFields:oe})}function ge({rulesDef:e,...t}){if(mt(e,t.state))return Dt({rulesDef:e,...t});if(vt(t.state,e)){if(Oe(t.state))return Ne({rulesDef:e,...t});{let n=effectScope().run(()=>{let f=toRef(t.state.value?t.state:ref({}));return watch(()=>t.state.value,R=>{f.value=R;},{deep:true}),watch(f,R=>{t.state.value=R;},{deep:true}),{fakeState:f}}),{state:a,...s}=t;return Ne({rulesDef:e,...s,state:n.fakeState})}}else if(yt(e))return _e({rulesDef:e,...t})}function be({initialState:e,options:t,scopeRules:r,state:n,customRules:a,shortcuts:s,schemaErrors:f,schemaMode:R=false,onValidate:E}){let h=He(),v=ref();return v.value=Ne({rootRules:r,rulesDef:r,state:n,customMessages:a?.(),storage:h,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:s,fieldName:"root",path:"",schemaErrors:f,rootSchemaErrors:f,schemaMode:R,onValidate:E}),getCurrentScope()&&onScopeDispose(()=>{v.value?.$unwatch();}),reactive({regle:v})}function Ze(e,t,r){let n={autoDirty:t?.autoDirty,lazy:t?.lazy,rewardEarly:t?.rewardEarly,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange};function a(s,f,R){let E=isRef(f)?f:computed(typeof f=="function"?f:()=>f),h={...n,...R},v=isRef(s)?s:ref(s),N=ref({...Y(v.value)});return {r$:be({scopeRules:E,state:v,options:h,initialState:N,customRules:e,shortcuts:r}).regle}}return a}var wt=Ze();function Ke(){function e(t,r){return r}return e}var et=Ke();function Pt({rules:e,modifiers:t,shortcuts:r}){let n=Ze(e,t,r),a=Ke();return {useRegle:n,inferRules:a}}
|
|
2
|
+
export{Be as InternalRuleType,ke as createRule,Pt as defineRegleConfig,et as inferRules,ee as unwrapRuleParameters,wt as useRegle,be as useRootStorage};
|