@regle/core 1.2.0-beta.3 β†’ 1.2.0-beta.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -27,7 +27,7 @@ It's heavily inspired by Vuelidate.
27
27
  - 🧰 Modular
28
28
  - πŸ”„ Async validation
29
29
  - 🌐 Plug any i18n library
30
- - πŸ“— Vuelidate compatible API
30
+ - πŸ“— Vuelidate like API
31
31
  - Standard Schemas spec support
32
32
  - πŸ¦Έβ€β™‚οΈ [Zod](https://zod.dev/)
33
33
  - πŸ€– [Valibot](https://valibot.dev/)
@@ -1,3 +1,4 @@
1
+ import * as vue from 'vue';
1
2
  import { Ref, MaybeRef, UnwrapRef, UnwrapNestedRefs, Raw, MaybeRefOrGetter } from 'vue';
2
3
 
3
4
  type Prettify<T> = T extends infer R ? {
@@ -2657,28 +2658,49 @@ type MergedReglesResult<TRegles extends Record<string, SuperCompatibleRegleRoot>
2657
2658
  };
2658
2659
  declare function mergeRegles<TRegles extends Record<string, SuperCompatibleRegleRoot>, TScoped extends boolean = false>(regles: TRegles, _scoped?: TScoped): TScoped extends false ? MergedRegles<TRegles> : MergedScopedRegles;
2659
2660
 
2660
- declare function createScopedUseRegle<TCustomRegle extends useRegleFn<any, any> = useRegleFn<Partial<AllRulesDeclarations>>, TReturnedRegle extends useRegleFn<any, any> = TCustomRegle extends useRegleFn<infer A, infer B> ? useRegleFn<A, B, {
2661
- dispose: () => void;
2662
- register: () => void;
2663
- }, {
2661
+ type useCollectScopeFn<TNamedScoped extends boolean = false> = TNamedScoped extends true ? <const TValue extends Record<string, Record<string, any>>>(namespace?: MaybeRefOrGetter<string>) => {
2662
+ r$: MergedRegles<{
2663
+ [K in keyof TValue]: RegleRoot<TValue[K]>;
2664
+ }>;
2665
+ } : <TValue extends Record<string, unknown>[] = Record<string, unknown>[]>(namespace?: MaybeRefOrGetter<string>) => {
2666
+ r$: MergedScopedRegles<TValue>;
2667
+ };
2668
+
2669
+ type UseScopedRegleOptions<TAsRecord extends boolean> = {
2664
2670
  namespace?: MaybeRefOrGetter<string>;
2665
- }> : useRegleFn<Partial<AllRulesDeclarations>>>(options?: {
2671
+ } & (TAsRecord extends true ? {
2672
+ scopeKey: string;
2673
+ } : {});
2674
+
2675
+ type CreateScopedUseRegleOption<TCustomRegle extends useRegleFn<any, any>, TAsRecord extends boolean> = {
2676
+ /**
2677
+ * Inject a global configuration to the exported composables to keep your translations and typings
2678
+ */
2666
2679
  customUseRegle?: TCustomRegle;
2680
+ /**
2681
+ * Store the collected instances externally
2682
+ */
2667
2683
  customStore?: Ref<ScopedInstancesRecordLike>;
2668
- }): {
2684
+ /**
2685
+ * Set the
2686
+ */
2687
+ asRecord?: TAsRecord;
2688
+ };
2689
+ declare function createScopedUseRegle<TCustomRegle extends useRegleFn<any, any> = useRegleFn<Partial<AllRulesDeclarations>>, TAsRecord extends boolean = false, TReturnedRegle extends useRegleFn<any, any, any, any> = TCustomRegle extends useRegleFn<infer A, infer B> ? useRegleFn<A, B, {
2690
+ dispose: () => void;
2691
+ register: () => void;
2692
+ }, UseScopedRegleOptions<TAsRecord>> : useRegleFn<Partial<AllRulesDeclarations>>>(options?: CreateScopedUseRegleOption<TCustomRegle, TAsRecord>): {
2669
2693
  useScopedRegle: TReturnedRegle;
2670
- useCollectScope<TValue extends Record<string, unknown>[] = Record<string, unknown>[]>(namespace?: MaybeRefOrGetter<string>): {
2671
- r$: MergedScopedRegles<TValue>;
2672
- };
2694
+ useCollectScope: useCollectScopeFn<TAsRecord>;
2673
2695
  };
2674
- declare const useCollectScope: <TValue extends Record<string, unknown>[] = Record<string, unknown>[]>(namespace?: MaybeRefOrGetter<string>) => {
2696
+ declare const useCollectScope: <TValue extends Record<string, unknown>[] = Record<string, unknown>[]>(namespace?: vue.MaybeRefOrGetter<string>) => {
2675
2697
  r$: MergedScopedRegles<TValue>;
2676
2698
  };
2677
2699
  declare const useScopedRegle: useRegleFn<Partial<AllRulesDeclarations>, never, {
2678
2700
  dispose: () => void;
2679
2701
  register: () => void;
2680
2702
  }, {
2681
- namespace?: MaybeRefOrGetter<string>;
2703
+ namespace?: vue.MaybeRefOrGetter<string>;
2682
2704
  }>;
2683
2705
 
2684
2706
  /**
@@ -2760,4 +2782,4 @@ declare function defineRules<TRules extends RegleUnknownRulesTree>(rules: TRules
2760
2782
  */
2761
2783
  declare function refineRules<TRules extends RegleUnknownRulesTree, TRefinement extends ReglePartialRuleTree<InferInput<TRules>> & RegleUnknownRulesTree>(rules: TRules, refinement: (state: Ref<InferInput<TRules>>) => TRefinement): (state: Ref<InferInput<TRules>>) => Merge<TRules, TRefinement>;
2762
2784
 
2763
- export { type $InternalRegleStatus, type AllRulesDeclarations, type CommonAlphaOptions, type CommonComparisonOptions, type DeepMaybeRef, type DeepReactiveState, type DefaultValidatorsTree, type FormRuleDeclaration, type InferInput, type InferRegleRoot, type InferRegleRule, type InferRegleRules, type InferRegleShortcuts, type InferRegleStatusType, type InferSafeOutput, type InlineRuleDeclaration, InternalRuleType, type JoinDiscriminatedUnions, type LocalRegleBehaviourOptions, type Maybe, type MaybeInput, type MaybeOutput, type MaybeVariantStatus, type MergedRegles, type NarrowVariant, type NoInferLegacy, type PrimitiveTypes, type Regle, type RegleBehaviourOptions, type RegleCollectionErrors, type RegleCollectionRuleDecl, type RegleCollectionRuleDefinition, type RegleCollectionStatus, type RegleCommonStatus, type RegleComputedRules, type RegleEnforceCustomRequiredRules, type RegleEnforceRequiredRules, type RegleErrorTree, type RegleExternalCollectionErrors, type RegleExternalErrorTree, type RegleFieldStatus, type RegleFormPropertyType, type RegleInternalRuleDefs, type ReglePartialRuleTree, type RegleResult, type RegleRoot, type RegleRuleCore, type RegleRuleDecl, type RegleRuleDefinition, type RegleRuleDefinitionProcessor, type RegleRuleDefinitionWithMetadataProcessor, type RegleRuleInit, type RegleRuleMetadataConsumer, type RegleRuleMetadataDefinition, type RegleRuleMetadataExtended, type RegleRuleRaw, type RegleRuleStatus, type RegleRuleTypeReturn, type RegleRuleWithParamsDefinition, type RegleShortcutDefinition, type RegleSingleField, type RegleStatus, type RegleUniversalParams, type RegleUnknownRulesTree, type RegleValidationErrors, type RegleValidationGroupEntry, type RegleValidationGroupOutput, type RegleRuleTree as RegleValidationTree, type ResolvedRegleBehaviourOptions, type ScopedInstancesRecord, type ScopedInstancesRecordLike, type SuperCompatibleRegleCollectionErrors, type SuperCompatibleRegleCollectionStatus, type SuperCompatibleRegleFieldStatus, type SuperCompatibleRegleResult, type SuperCompatibleRegleRoot, type SuperCompatibleRegleRuleStatus, type SuperCompatibleRegleStatus, type Unwrap, type UnwrapRegleUniversalParams, type UnwrapRuleWithParams, createRule, createScopedUseRegle, createVariant, defineRegleConfig, defineRules, extendRegleConfig, flatErrors, inferRules, type inferRulesFn, mergeRegles, narrowVariant, refineRules, unwrapRuleParameters, useCollectScope, useRegle, type useRegleFn, useRootStorage, useScopedRegle, variantToRef };
2785
+ export { type $InternalRegleStatus, type AllRulesDeclarations, type CommonAlphaOptions, type CommonComparisonOptions, type DeepMaybeRef, type DeepReactiveState, type DefaultValidatorsTree, type FormRuleDeclaration, type InferInput, type InferRegleRoot, type InferRegleRule, type InferRegleRules, type InferRegleShortcuts, type InferRegleStatusType, type InferSafeOutput, type InlineRuleDeclaration, InternalRuleType, type JoinDiscriminatedUnions, type LocalRegleBehaviourOptions, type Maybe, type MaybeInput, type MaybeOutput, type MaybeVariantStatus, type MergedRegles, type MergedScopedRegles, type NarrowVariant, type NoInferLegacy, type PrimitiveTypes, type Regle, type RegleBehaviourOptions, type RegleCollectionErrors, type RegleCollectionRuleDecl, type RegleCollectionRuleDefinition, type RegleCollectionStatus, type RegleCommonStatus, type RegleComputedRules, type RegleEnforceCustomRequiredRules, type RegleEnforceRequiredRules, type RegleErrorTree, type RegleExternalCollectionErrors, type RegleExternalErrorTree, type RegleFieldStatus, type RegleFormPropertyType, type RegleInternalRuleDefs, type ReglePartialRuleTree, type RegleResult, type RegleRoot, type RegleRuleCore, type RegleRuleDecl, type RegleRuleDefinition, type RegleRuleDefinitionProcessor, type RegleRuleDefinitionWithMetadataProcessor, type RegleRuleInit, type RegleRuleMetadataConsumer, type RegleRuleMetadataDefinition, type RegleRuleMetadataExtended, type RegleRuleRaw, type RegleRuleStatus, type RegleRuleTypeReturn, type RegleRuleWithParamsDefinition, type RegleShortcutDefinition, type RegleSingleField, type RegleStatus, type RegleUniversalParams, type RegleUnknownRulesTree, type RegleValidationErrors, type RegleValidationGroupEntry, type RegleValidationGroupOutput, type RegleRuleTree as RegleValidationTree, type ResolvedRegleBehaviourOptions, type ScopedInstancesRecord, type ScopedInstancesRecordLike, type SuperCompatibleRegleCollectionErrors, type SuperCompatibleRegleCollectionStatus, type SuperCompatibleRegleFieldStatus, type SuperCompatibleRegleResult, type SuperCompatibleRegleRoot, type SuperCompatibleRegleRuleStatus, type SuperCompatibleRegleStatus, type Unwrap, type UnwrapRegleUniversalParams, type UnwrapRuleWithParams, createRule, createScopedUseRegle, createVariant, defineRegleConfig, defineRules, extendRegleConfig, flatErrors, inferRules, type inferRulesFn, mergeRegles, narrowVariant, refineRules, unwrapRuleParameters, useCollectScope, useRegle, type useRegleFn, useRootStorage, useScopedRegle, variantToRef };
@@ -1,2 +1,2 @@
1
- import {effectScope,computed,toValue,ref,watch,getCurrentInstance,onMounted,reactive,getCurrentScope,onScopeDispose,isRef,shallowRef,watchEffect,triggerRef,toRef,unref,version,nextTick}from'vue';function te(e,t=true){return e==null?true:e instanceof Date?isNaN(e.getTime()):e.constructor.name=="File"||e.constructor.name=="FileList"?e.size<=0:Array.isArray(e)?t?e.length===0:false:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}var Ct=Symbol("regle-rule");function or(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 N(e){let t=e,r={}.toString.call(e).slice(8,-1);if(r=="Set"&&(t=new Set([...e].map(n=>N(n)))),r=="Map"&&(t=new Map([...e].map(n=>[N(n[0]),N(n[1])]))),r=="Date"&&(t=new Date(e.getTime())),r=="RegExp"&&(t=RegExp(e.source,or(e))),r=="Array"||r=="Object"){t=Array.isArray(e)?[]:{};for(let n in e)t[n]=N(e[n]);}return t}function _(e){return e&&(e instanceof Date||e.constructor.name=="File"||e.constructor.name=="FileList")?false:typeof e=="object"&&e!==null&&!Array.isArray(e)}function Pe(e,...t){for(var r=[].slice.call(arguments),n,a=r.length;n=r[a-1],a--;)if(!n||typeof n!="object"&&typeof n!="function")throw new Error("expected object, got "+n);for(var o=r[0],s=r.slice(1),i=s.length,a=0;a<i;a++){var g=s[a];for(var R in g)o[R]=g[R];}return o}function Qe(e){let t=Object.prototype.toString.call(e);return e==null?new Date(NaN):e instanceof Date||typeof e=="object"&&t==="[object Date]"?new Date(e.getTime()):typeof e=="number"||t==="[object Number]"?new Date(e):typeof e=="string"||t==="[object String]"?new Date(e):new Date(NaN)}function ke(e,t,r){let n,a=(...o)=>new Promise(s=>{clearTimeout(n),n=setTimeout(()=>{n=void 0,Promise.resolve(e.apply(this,[...o])).then(s);},t);});return a.cancel=()=>{clearTimeout(n),n=void 0;},a}var Xe={Inline:"__inline",Async:"__async"};function Dt(e,t){return e.some(r=>r[t])}function It(e,t){return e.reduce((r,n)=>{let a=n[t]||[];return r.concat(a)},[])}function re(e){try{return e.map(t=>toValue(t))}catch{return []}}function wt(e){return e.map(t=>t instanceof Function?computed(t):isRef(t)?t:toRef(()=>t))}function Ot(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(s=>s.trim()).filter(s=>s.length>0).length:0}function Ze(e,...t){let{validator:r,type:n}=e,a=n===Xe.Async||r.constructor.name==="AsyncFunction";return {...{validator(i,...g){return e.validator(i,...re(g.length?g:t))},message(i){return typeof e.message=="function"?e.message({...i,$params:re(i?.$params?.length?i.$params:t)}):e.message},active(i){return typeof e.active=="function"?e.active({...i,$params:re(i?.$params?.length?i.$params:t)}):e.active??true},tooltip(i){return typeof e.tooltip=="function"?e.tooltip({...i,$params:re(i?.$params?.length?i.$params:t)}):e.tooltip??[]},exec(i){let g=e.validator(i,...re(t)),R;return g instanceof Promise?g.then(h=>(R=h,typeof R=="object"&&"$valid"in R?R.$valid:typeof R=="boolean"?R:false)):(R=g,typeof R=="object"&&"$valid"in R?R.$valid:typeof R=="boolean"?R:false)}},_validator:e.validator,_message:e.message,_active:e.active,_tooltip:e.tooltip,_type:e.type,_message_patched:false,_tooltip_patched:false,_async:a,_params:wt(t),_brand:Ct}}function et(e){if(typeof e.validator=="function"){let r=Ze(e,...[]),n=e.async??e.validator.constructor.name==="AsyncFunction";if(Ot(e.validator)>1){let a=function(...o){return Ze(e,...o)};return a.validator=r.validator,a.message=r.message,a.active=r.active,a.tooltip=r.tooltip,a.type=r.type,a.exec=r.exec,a._validator=r.validator,a._message=r.message,a._active=r.active,a._tooltip=r.tooltip,a._type=e.type,a._message_pacthed=false,a._tooltip_pacthed=false,a._async=n,a}else return r}throw new Error("[createRule] validator must be a function")}function tt(){let e=shallowRef(new Map),t=shallowRef(new Map),r=shallowRef(new Map),n=shallowRef(new Map),a=shallowRef(new Map),o=shallowRef(new Map);function s($){let E=t.value.get($);if(E)return E;{let x=ref({});return t.value.set($,x),x}}function i($){let E=r.value.get($);if(E)return E;{let x=ref([]);return r.value.set($,x),x}}function g($,E,x){o.value.set(`${$}-${E}`,x);}function R($,E){return o.value.get(`${$}-${E}`)}function h($,E){$&&E!=null&&o.value.delete(`${$}-${E}`);}function j($,E){n.value.set($,E);}function C($){return n.value.get($)??false}function A($,E){e.value.set($,E);}function P($,E){let x=e.value.get($);return x?w(E,x)?{valid:true}:{valid:false}:void 0}function w($,E){let x=Object.keys(E),d=Object.keys($);return d.length!==x.length||!d.every(c=>x.includes(c))?false:d.every(c=>{let y=$[c],S=E[c];return !S||!y||typeof y=="function"||typeof S=="function"||typeof y=="number"||typeof y=="boolean"?false:y._params?y._params?.every((k,G)=>{if(typeof S=="number"||typeof S=="boolean")return true;{let K=re(S._params),z=re(y._params);return K?.[G]===z?.[G]}}):true})}function l($){let E=a.value.get($);if(E)return E;{let x=ref(false),d=ref(true),b=ref({}),c=ref(false);return a.value.set($,{$pending:x,$valid:d,$metadata:b,$validating:c}),{$pending:x,$valid:d,$metadata:b,$validating:c}}}return getCurrentScope()&&onScopeDispose(()=>{e.value.clear(),t.value.clear(),r.value.clear(),n.value.clear(),a.value.clear(),o.value.clear();}),{addRuleDeclEntry:A,setDirtyEntry:j,checkRuleDeclEntry:P,getDirtyState:C,trySetRuleStatusRef:l,getFieldsEntry:s,getCollectionsEntry:i,getArrayStatus:R,addArrayStatus:g,deleteArrayStatus:h,arrayStatusStorage:o}}function Ne(e){return _(e.value)}function rt(e,t,r){let n=effectScope(),a;return e instanceof Function?a=n.run(()=>e(t,r??0)):a=e,{scope:n,unwrapped:a}}var Me={LessThan:-1,EqualTo:0,GreaterThan:1};function mr(e,t){let r=String(e).split("."),n=String(t).split(".");for(let a=0;a<Math.min(r.length,n.length);a++){let o=Number(r[a]),s=Number(n[a]);if(o>s)return Me.GreaterThan;if(s>o)return Me.LessThan;if(!isNaN(o)&&isNaN(s))return Me.GreaterThan;if(isNaN(o)&&!isNaN(s))return Me.LessThan}return Me.EqualTo}var Ue=mr(version,"3.5.0")!==-1;function yr(){return Math.floor(Math.random()*Date.now()).toString()}function he(){return typeof window>"u"?yr():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function Pt(e){return getCurrentScope()?(onScopeDispose(e),true):false}function Mt(e){let t=false,r,n=effectScope(true);return (...a)=>(t||(r=n.run(()=>e(...a)),t=true),r)}function Ge(e,t){return Ne(e)||_(t.value)&&!te(t.value)&&!Object.entries(t.value).some(([r,n])=>me(n)||typeof n=="function")}function jt(e,t,r=false){return !!e.value&&_(e.value)&&"$each"in e.value||r&&Array.isArray(t.value)&&t.value.some(_)||Array.isArray(t.value)&&t.value.some(_)}function We(e){return !!e.value&&_(e.value)}function me(e){return _(e)&&"_validator"in e}function je(e){return typeof e.value=="function"?"_validator"in e.value:true}function At(e){return _(e)&&"$fields"in e}function nt(e){return !!e&&"$rules"in e}function at({field:e,silent:t=false}){return Object.entries(e.$rules??{}).map(([r,n])=>t&&!n.$valid||!n.$valid&&e.$error&&!n.$validating?n.$message:null).filter(r=>!!r).reduce((r,n)=>typeof n=="string"?r?.concat([n]):r?.concat(n),[]).concat(e.$error?e.$externalErrors??[]:[]).concat(e.$error?e.$schemaErrors??[]:[])}function 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 Ft(e){return _(e)&&"$each"in e}function lt(e,t){let{includePath:r=false}=t??{};if(Array.isArray(e)&&e.every(n=>!_(n)))return e;if(Ft(e)){let n=r?e.$self?.map(o=>({error:o,path:""}))??[]:e.$self??[],a=e.$each?.map(o=>Be(o,r))??[];return n?.concat(a.flat())}else return Object.entries(e).map(([n,a])=>Be(a,r,[n])).flat()}function Be(e,t=false,r){let n=t&&!r?[]:r;if(Array.isArray(e)&&e.every(a=>!_(a)))return t?e.map(a=>({error:a,path:n?.join(".")??""})):e;if(Ft(e)){let a=n?.length?e.$self?.map(s=>({error:s,path:n.join(".")}))??[]:e.$self??[],o=e.$each?.map((s,i)=>Be(s,t,n?.concat(i.toString())))??[];return a?.concat(o.flat())}else return Object.entries(e).map(([a,o])=>Be(o,t,n?.concat(a))).flat()}function _t({customMessages:e,rule:t,ruleKey:r,state:n,path:a,storage:o,$debounce:s,modifiers:i}){let g=effectScope(),R={},h,j=ref(false),C=ref(false),{$pending:A,$valid:P,$metadata:w,$validating:l}=o.trySetRuleStatusRef(`${a}.${r}`);function $(){g=effectScope(),R=g.run(()=>{let S=ref(false),k=ref(false),G=ref(true),K=ref(false),z=ref(false),le=computed(()=>({$value:n.value,$error:k.value,$dirty:S.value,$pending:K.value,$correct:z.value,$invalid:G.value,$rule:{$valid:P.value,$invalid:!P.value,$pending:A.value},$params:f.value,...w.value})),D=computed(()=>je(t)?typeof t.value.active=="function"?t.value.active(le.value):!!t.value.active:true);function H(O){let J="",m=e?e[r]?.[O]:void 0;if(m&&(typeof m=="function"?J=m(le.value):J=m),je(t)){let V=`_${O}_patched`;m&&!t.value[V]||(typeof t.value[O]=="function"?J=t.value[O](le.value):J=t.value[O]??"");}return J}let ge=computed(()=>{let O=H("message");return te(O)&&(O="This field is not valid"),O}),fe=computed(()=>H("tooltip")),u=computed(()=>je(t)&&t.value.type?t.value.type:r),p=computed(()=>je(t)?t.value.validator:t.value),f=computed(()=>typeof t.value=="function"?[]:re(t.value._params??[])),I=computed(()=>`${a}.${u.value}`);return {$active:D,$message:ge,$type:u,$validator:p,$params:f,$path:I,$tooltip:fe,$fieldCorrect:z,$fieldError:k,$fieldDirty:S,$fieldPending:K,$fieldInvalid:G}}),h=watch(R?.$params,()=>{(!i.$silent.value||i.$rewardEarly.value&&R.$fieldError.value)&&b();});}$();function E(){P.value=true,R.$fieldDirty.value&&(A.value=true);}async function x(){let S=false;try{let k=R.$validator.value;if(typeof k!="function")return console.error(`${a}: Incorrect rule format, it needs to be either a function or created with "createRule".`),!1;let G=k(n.value,...R.$params.value),K=n.value;E();let z;if(G instanceof Promise?z=await G:z=G,n.value!==K)return !0;if(typeof z=="boolean")S=z;else {let{$valid:le,...D}=z;S=le,w.value=D;}}catch{S=false;}finally{A.value=false;}return S}let d=ke(x,s??200);async function b(){try{l.value=!0;let S=!1;if(C.value=!0,me(t.value)&&t.value._async)S=await d();else {let k=R.$validator.value,G=k(n.value,...R.$params.value);if(G 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(G!=null)if(typeof G=="boolean")S=G;else {let{$valid:K,...z}=G;S=K,w.value=z;}}return P.value=S,S}catch{return false}finally{l.value=false,C.value=false;}}function c(){P.value=true,w.value={},A.value=false,l.value=false,$();}function y(){h(),g.stop(),g=effectScope();}return reactive({...R,$pending:A,$valid:P,$metadata:w,$haveAsync:j,$maybePending:C,$validating:l,$parse:b,$unwatch:y,$watch:$,$reset:c})}function Ee({state:e,rulesDef:t,customMessages:r,path:n,fieldName:a,storage:o,options:s,externalErrors:i,schemaErrors:g,schemaMode:R,onUnwatch:h,$isArray:j,initialState:C,shortcuts:A,onValidate:P}){let w=effectScope(),l,$=[],E,x,d,b,c,y=()=>{};function S(){let T=t.value,F=o.checkRuleDeclEntry(n,T);H.value=Object.fromEntries(Object.entries(T).filter(([v])=>v.startsWith("$"))),K(),D.value=Object.fromEntries(Object.entries(t.value).filter(([v])=>!v.startsWith("$")).map(([v,ee])=>{if(ee){let se=toRef(()=>ee);return [v,_t({modifiers:{$silent:l.$silent,$rewardEarly:l.$rewardEarly},customMessages:r,rule:se,ruleKey:v,state:e,path:n,storage:o,$debounce:H.value.$debounce})]}return []}).filter(v=>!!v.length)),l.processShortcuts(),k(),F?.valid!=null&&(l.$dirty.value=o.getDirtyState(n),(l.$dirty.value&&!l.$silent.value||l.$rewardEarly.value&&l.$error.value)&&y()),o.addRuleDeclEntry(n,T);}function k(){y=l.$debounce.value?ke(le,l.$debounce.value??l.$haveAnyAsyncRule?100:0):le;}function G(){D.value&&Object.entries(D.value).forEach(([T,F])=>{F.$unwatch();}),d(),c?.(),l.$dirty.value&&o.setDirtyEntry(n,l.$dirty.value),E?.(),x?.(),w.stop(),w=effectScope(),$.forEach(T=>T.stop()),$=[],h?.(),b?.();}function K(){D.value&&Object.entries(D.value).forEach(([T,F])=>{F.$watch();}),l=w.run(()=>{let T=ref(false),F=ref(false),v=computed(()=>T.value),ee=computed(()=>H.value.$debounce),se=computed(()=>H.value.$lazy!=null?H.value.$lazy:unref(s.lazy)!=null?unref(s.lazy):false),oe=computed(()=>H.value.$rewardEarly!=null?H.value.$rewardEarly:unref(s.rewardEarly)!=null?unref(s.rewardEarly):false),L=computed(()=>H.value.$clearExternalErrorsOnChange!=null?H.value.$clearExternalErrorsOnChange:unref(s.clearExternalErrorsOnChange)!=null?unref(s.clearExternalErrorsOnChange):true),M=computed(()=>oe.value?true:H.value.$silent!=null?H.value.$silent:unref(s.silent)!=null?unref(s.silent):false),W=computed(()=>H.value.$autoDirty!=null?H.value.$autoDirty:unref(s.autoDirty)!=null?unref(s.autoDirty):true),Oe=computed(()=>Object.entries(D.value).some(([ie,X])=>X.$validating)),mt=computed({get:()=>e.value,set(ie){E(),e.value=ie,z();}}),Fe=computed(()=>$e.value&&!ve.value&&T.value),yt=computed(()=>at({field:{$rules:D.value,$error:Fe.value,$externalErrors:i?.value,$schemaErrors:g?.value}})),gt=computed(()=>at({field:{$rules:D.value,$error:Fe.value,$externalErrors:i?.value,$schemaErrors:g?.value},silent:true})),Ye=computed(()=>T.value?C.value instanceof Date&&e.value instanceof Date?Qe(C.value).getDate()!==Qe(e.value).getDate():C.value==null?!!e.value:Array.isArray(e.value)&&Array.isArray(C.value)?e.value.length!==C.value.length:C.value!==e.value:false),vt=computed(()=>Ye.value),$t=computed(()=>Vt({field:{$rules:D.value}})),St=computed(()=>(M.value||v.value)&&!($e.value||ve.value)),ve=computed(()=>F.value||!oe.value?Object.entries(D.value).some(([ie,X])=>X.$pending):false),$e=computed(()=>i?.value?.length||g?.value?.length?true:_e.value?false:!oe.value||oe.value&&F.value?Object.entries(D.value).some(([ie,X])=>!(X.$valid&&!X.$maybePending)):false),Tt=computed(()=>a),_e=computed(()=>!!(te(D.value)&&!R)),ht=computed(()=>i?.value?.length||_e.value?false:T.value&&!te(e.value)&&!Oe.value&&!ve.value?R?!g?.value?.length:Object.values(D.value).some(X=>X.$active)?Object.values(D.value).filter(X=>X.$active).every(X=>X.$valid):false:false),ar=computed(()=>Object.entries(D.value).some(([ie,X])=>X.$haveAsync));function lr(){A?.fields&&Object.entries(A.fields).forEach(([ie,X])=>{let Et=effectScope();bt[ie]=Et.run(()=>{let xt=ref();return watchEffect(()=>{xt.value=X(reactive({$dirty:T,$externalErrors:i?.value??[],$value:e,$silentValue:mt,$rules:D,$error:Fe,$pending:ve,$invalid:$e,$correct:ht,$errors:yt,$ready:St,$silentErrors:gt,$anyDirty:v,$tooltips:$t,$name:Tt,$inactive:_e,$edited:Ye,$anyEdited:vt}));}),xt}),$.push(Et);});}let bt={};return watch($e,ie=>{ie||(F.value=false);}),{$error:Fe,$pending:ve,$invalid:$e,$correct:ht,$debounce:ee,$lazy:se,$errors:yt,$ready:St,$silentErrors:gt,$rewardEarly:oe,$autoDirty:W,$silent:M,$clearExternalErrorsOnChange:L,$anyDirty:v,$edited:Ye,$anyEdited:vt,$name:Tt,$haveAnyAsyncRule:ar,$shortcuts:bt,$validating:Oe,$tooltips:$t,$dirty:T,triggerPunishment:F,processShortcuts:lr,$silentValue:mt,$inactive:_e}}),z(),d=watch(l.$dirty,T=>{o.setDirtyEntry(n,T),Object.values(D.value).forEach(F=>{F.$fieldDirty=T;});}),c=watch([l.$error,l.$correct,l.$invalid,l.$pending],()=>{Object.values(D.value).forEach(T=>{T.$fieldError=l.$error.value,T.$fieldInvalid=l.$invalid.value,T.$fieldPending=l.$pending.value,T.$fieldCorrect=l.$correct.value;});}),x=watch(l.$invalid,T=>{l.$rewardEarly.value&&!T&&(l.triggerPunishment.value=false);}),b=watch(l.$haveAnyAsyncRule,k);}function z(){E=watch(e,()=>{l.$autoDirty.value&&!l.$silent.value&&(l.$dirty.value||(l.$dirty.value=true)),t.value instanceof Function&&S(),(!l.$silent.value||l.$rewardEarly.value&&l.$error.value)&&y(),l.$rewardEarly.value!==true&&l.$clearExternalErrorsOnChange.value&&f();},{deep:j?true:Ue?1:true});}function le(){Object.values(D.value).forEach(T=>{T.$parse();});}let D=ref({}),H=ref({});S();function ge(T,F){if(f(),l.$dirty.value=false,l.triggerPunishment.value=false,o.setDirtyEntry(n,false),!F)if(T?.toInitialState)e.value=N(C);else if(T?.toState){let v;typeof T?.toState=="function"?v=T?.toState():v=T?.toState,C.value=N(v),e.value=N(v);}else C.value=_(e.value)?N(e.value):Array.isArray(e.value)?[...e.value]:e.value;T?.clearExternalErrors&&f(),F||Object.entries(D.value).forEach(([v,ee])=>{ee.$reset();}),!l.$lazy.value&&!l.$silent.value&&Object.values(D.value).forEach(v=>v.$parse());}function fe(T=true,F=false){l.$dirty.value||(l.$dirty.value=true),F&&T?(!l.$silent.value||l.$rewardEarly.value&&l.$error.value)&&y():T&&y();}async function u(){try{if(R)return P?(fe(!1),P()):{valid:!1,data:e.value};let T=e.value;if(l.triggerPunishment.value=!0,!l.$dirty.value)l.$dirty.value=!0;else if(!l.$silent.value&&l.$dirty.value&&!l.$pending.value)return {valid:!l.$error.value,data:T};return R?{valid:!g?.value?.length,data:T}:te(D.value)?{valid:!0,data:T}:{valid:(await Promise.allSettled(Object.entries(D.value).map(([ee,se])=>se.$parse()))).every(ee=>ee.status==="fulfilled"?ee.value===!0:!1),data:T}}catch{return {valid:false,data:e.value}}}function p(T=true){return l.$dirty.value?e.value:T?{_null:true}:null}function f(){i?.value?.length&&(i.value=[]);}!l.$lazy.value&&!l.$dirty.value&&!l.$silent.value&&y();let{$shortcuts:I,$validating:O,$autoDirty:J,$rewardEarly:m,$clearExternalErrorsOnChange:V,$haveAnyAsyncRule:q,$debounce:Z,$lazy:Q,triggerPunishment:Re,...ce}=l;return reactive({...ce,$externalErrors:i,$value:e,$rules:D,...I,$reset:ge,$touch:fe,$validate:u,$unwatch:G,$watch:K,$extractDirtyFields:p,$clearExternalErrors:f})}function it({$id:e,path:t,index:r,options:n,storage:a,stateValue:o,customMessages:s,rules:i,externalErrors:g,schemaErrors:R,initialState:h,shortcuts:j,fieldName:C,schemaMode:A}){let P=i.$key?i.$key:he(),w=`${t}.${String(P)}`;typeof o.value=="object"&&o.value!=null&&(o.value.$id?w=`${t}.${o.value.$id}`:Object.defineProperties(o.value,{$id:{value:P,enumerable:false,configurable:false,writable:false}}));let l=toRef(g?.value??[],r),$=computed(()=>R?.value?.[r]),E=xe({state:o,rulesDef:toRef(()=>i),customMessages:s,path:w,storage:a,options:n,externalErrors:l,schemaErrors:$,initialState:h,shortcuts:j,fieldName:C,schemaMode:A});if(E){let x=o.value?.$id;E.$id=x??String(P),a.addArrayStatus(e,E.$id,E);}return E}function Gt({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:o,externalErrors:s,schemaErrors:i,schemaMode:g,initialState:R,shortcuts:h,fieldName:j}){let C=effectScope(),A,P=effectScope(),w,l=[];if(!Array.isArray(e.value)&&!t.value.$each)return;let $=ref(),E=ref(e.value),x,d=ref({}),b=a.getCollectionsEntry(n);w=P.run(()=>({isPrimitiveArray:computed(()=>Array.isArray(e.value)&&e.value.length?e.value.every(p=>typeof p!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(p=>me(p)||typeof p=="function"):false)})),c(),k();function c(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?($.value=he(),Object.defineProperties(e.value,{$id:{value:$.value,enumerable:false,configurable:false,writable:false}})):e.value?.$id&&($.value=e.value.$id)),E.value=d.value.$value,Array.isArray(e.value)&&!w.isPrimitiveArray.value?b.value=e.value.filter(u=>typeof u=="object").map((u,p)=>{let{scope:f,unwrapped:I}=rt(t.value.$each,toRef(()=>u),p);f&&l.push(f);let O=toRef(R.value??[],p),J=toRef(s?.value??{},"$each"),m=computed(()=>i?.value?.$each),V=it({$id:$.value,path:n,customMessages:r,rules:I??{},stateValue:toRef(()=>u),index:p,options:o,storage:a,externalErrors:J,schemaErrors:m,initialState:O,shortcuts:h,fieldName:j,schemaMode:g});return V||null}).filter(u=>!!u):b.value=[],d.value=Ee({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:o,externalErrors:toRef(s?.value??{},"$self"),schemaErrors:computed(()=>i?.value?.$self),$isArray:true,initialState:R,shortcuts:h,fieldName:j,schemaMode:g});}function y(){if(Array.isArray(e.value)&&!w.isPrimitiveArray.value){let u=N(b.value);b.value=e.value.filter(p=>typeof p=="object").map((p,f)=>{let I=toRef(()=>p);if(p.$id&&b.value.find(O=>O.$id===p.$id)){let O=a.getArrayStatus($.value,p.$id);return O?(O.$value=I,O):null}else {let{scope:O,unwrapped:J}=rt(t.value.$each,I,f);O&&l.push(O);let m=toRef(s?.value??{},"$each"),V=computed(()=>i?.value?.$each??[]),q=it({$id:$.value,path:n,customMessages:r,rules:J??{},stateValue:I,index:f,options:o,storage:a,externalErrors:m,schemaErrors:V,initialState:toRef(R.value??[],f),shortcuts:h,fieldName:j,schemaMode:g});return q||null}}).filter(p=>!!p),u.filter(p=>!e.value?.find(f=>p.$id===f.$id)).forEach((p,f)=>{a.deleteArrayStatus($.value,f.toString());});}else b.value=[];}function S(){x=watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?c():y();},{deep:Ue?1:true,flush:"pre"});}function k(){S(),C=effectScope(),A=C.run(()=>{let u=computed({get:()=>e.value,set(v){x(),e.value=v,S();}}),p=computed(()=>d.value.$dirty&&(!b.value.length||b.value.every(v=>v.$dirty))),f=computed(()=>d.value.$anyDirty||b.value.some(v=>v.$anyDirty)),I=computed(()=>d.value.$invalid||b.value.some(v=>v.$invalid)),O=computed(()=>(te(d.value.$rules)?true:d.value.$correct)&&(!b.value.length||b.value.every(v=>v.$correct||v.$anyDirty&&!v.$invalid))),J=computed(()=>d.value.$error||b.value.some(v=>v.$error)),m=computed(()=>!(I.value||V.value)),V=computed(()=>d.value.$pending||b.value.some(v=>v.$pending)),q=computed(()=>!!b.value.length&&b.value.every(v=>v.$edited)),Z=computed(()=>d.value.$anyEdited||b.value.some(v=>v.$anyEdited)),Q=computed(()=>({$self:d.value.$errors,$each:b.value.map(v=>v.$errors)})),Re=computed(()=>({$self:d.value.$silentErrors,$each:b.value.map(v=>v.$silentErrors)})),ce=computed(()=>j);function T(){h?.collections&&Object.entries(h?.collections).forEach(([v,ee])=>{let se=effectScope();F[v]=se.run(()=>{let oe=ref();return watchEffect(()=>{oe.value=ee(reactive({$dirty:p,$error:J,$silentValue:u,$pending:V,$invalid:I,$correct:O,$errors:Q,$ready:m,$silentErrors:Re,$anyDirty:f,$name:ce,$each:b,$self:d,$value:e,$edited:q,$anyEdited:Z}));}),oe}),l.push(se);});}let F={};return T(),{$dirty:p,$anyDirty:f,$invalid:I,$correct:O,$error:J,$pending:V,$errors:Q,$silentErrors:Re,$ready:m,$name:ce,$shortcuts:F,$silentValue:u,$edited:q,$anyEdited:Z}}),w.isPrimitiveArray.value&&t.value.$each&&console.warn(`${n} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`);}function G(){x&&x(),d.value&&d.value.$unwatch(),b.value&&b.value.forEach(u=>{"$dirty"in u&&u.$unwatch();}),C.stop(),C=effectScope(),P.stop(),P=effectScope(true),l.forEach(u=>u.stop()),l=[];}function K(u=true,p=false){d.value.$touch(u,p),b.value.forEach(f=>{f.$touch(u,p);});}function z(u,p){if(G(),!p)if(u?.toInitialState)e.value=N(R.value);else if(u?.toState){let f;typeof u?.toState=="function"?f=u?.toState():f=u?.toState,R.value=N(f),e.value=N(f);}else R.value=N(e.value);u?.clearExternalErrors&&D(),d.value.$reset(),b.value.forEach(f=>{f.$reset(u,true);}),p||c();}async function le(){let u=e.value;try{return {valid:(await Promise.allSettled([d.value.$validate(),...b.value.map(I=>I.$validate())])).every(I=>I.status==="fulfilled"?I.value.valid===!0:!1),data:u}}catch{return {valid:false,data:u}}}function D(){d.value.$clearExternalErrors(),b.value.forEach(u=>{u.$clearExternalErrors();});}function H(u=true){let p=b.value.map(f=>{if(At(f))return f.$extractDirtyFields(u)});return u&&p.every(f=>te(f))&&(p=[]),p}let{$shortcuts:ge,...fe}=A;return reactive({$self:d,...fe,...ge,$each:b,$value:e,$validate:le,$unwatch:G,$watch:k,$touch:K,$reset:z,$extractDirtyFields:H,$clearExternalErrors:D})}function He({rulesDef:e,state:t,path:r="",rootRules:n,externalErrors:a,schemaErrors:o,rootSchemaErrors:s,validationGroups:i,initialState:g,fieldName:R,...h}){let j=effectScope(),C,A=[],P=null,w=null,l=null,$=null;async function x(u=true){let p=Object.entries(e.value),f=Object.fromEntries(p.filter(([m,V])=>!!V).map(([m,V])=>{if(V){let q=toRef(t.value??{},m),Z=toRef(()=>V),Q=toRef(a?.value??{},m),Re=computed(()=>o?.value?.[m]),ce=toRef(g?.value??{},m);return [m,xe({state:q,rulesDef:Z,path:r?`${r}.${m}`:m,externalErrors:Q,schemaErrors:Re,initialState:ce,fieldName:m,...h})]}return []})),I=Object.fromEntries(Object.entries(unref(a)??{}).filter(([m,V])=>!(m in e.value)&&!!V).map(([m])=>{let V=toRef(t.value??{},m),q=toRef(a?.value??{},m),Z=computed(()=>o?.value?.[m]),Q=toRef(g?.value??{},m);return [m,xe({state:V,rulesDef:computed(()=>({})),path:r?`${r}.${m}`:m,externalErrors:q,schemaErrors:Z,initialState:Q,fieldName:m,...h})]})),O=Object.fromEntries(Object.entries(unref(o)??{}).map(([m])=>{let V=toRef(t.value??{},m),q=toRef(a?.value??{},m),Z=computed(()=>o?.value?.[m]),Q=toRef(g?.value??{},m);return [m,xe({state:V,rulesDef:computed(()=>({})),path:r?`${r}.${m}`:m,externalErrors:q,schemaErrors:Z,initialState:Q,fieldName:m,...h})]})),J=Object.fromEntries(Object.entries(t.value??{}).filter(([m])=>!(m in e.value)&&!(m in(I??{}))&&!(m in(O??{}))).map(([m])=>{let V=toRef(t.value??{},m),q=toRef(a?.value??{},m),Z=computed(()=>o?.value?.[m]),Q=toRef(g?.value??{},m);return [m,xe({state:V,rulesDef:computed(()=>({})),path:r?`${r}.${m}`:m,externalErrors:q,schemaErrors:Z,initialState:Q,fieldName:m,...h})]}));d.value={...f,...I,...O,...J},u&&y();}let d=h.storage.getFieldsEntry(r);x();function b(){a&&(l=watch(a,()=>{S(),x();},{deep:true}));}function c(){$=watch(t,()=>{S(),x(),K(true,true);},{flush:"sync"});}function y(){n&&(P?.(),P=watch(n,()=>{S(),x();},{deep:true,flush:"pre"}),b()),s&&(w?.(),w=watch(s,()=>{S(),x();},{deep:true,flush:"post"})),c(),C=j.run(()=>{let u=computed({get:()=>t.value,set(L){S(),t.value=L,x();}}),p=computed(()=>!!Object.entries(d.value).length&&Object.entries(d.value).every(([L,M])=>M?.$dirty)),f=computed(()=>Object.entries(d.value).some(([L,M])=>M?.$anyDirty)),I=computed(()=>!!Object.entries(d.value).length&&Object.entries(d.value).some(([L,M])=>M?.$invalid)),O=computed(()=>{let L=Object.entries(d.value).filter(([M,W])=>nt(W)?!W.$inactive:true);return L.length?L.every(([M,W])=>h.schemaMode?W.$correct:nt(W)?"required"in W.$rules&&W.$rules.required.$active?W?.$correct:!W.$invalid&&!W.$pending:W?.$correct):false}),J=computed(()=>!!Object.entries(d.value).length&&Object.entries(d.value).some(([L,M])=>M?.$error)),m=computed(()=>unref(h.options.rewardEarly)!=null?unref(h.options.rewardEarly):false),V=computed(()=>unref(h.options.silent)!=null?unref(h.options.silent):!!m.value),q=computed(()=>(V.value||f.value)&&!(I.value||Q.value)),Z=ref(false),Q=computed(()=>Z.value||Object.entries(d.value).some(([L,M])=>M?.$pending)),Re=computed(()=>Object.fromEntries(Object.entries(d.value).map(([L,M])=>[L,M?.$errors]))),ce=computed(()=>Object.fromEntries(Object.entries(d.value).map(([L,M])=>[L,M?.$silentErrors]))),T=computed(()=>!!Object.entries(d.value).length&&Object.entries(d.value).every(([L,M])=>M?.$edited)),F=computed(()=>Object.entries(d.value).some(([L,M])=>M?.$anyEdited)),v=computed(()=>R);function ee(){h.shortcuts?.nested&&Object.entries(h.shortcuts.nested).forEach(([L,M])=>{let W=effectScope();oe[L]=W.run(()=>{let Oe=ref();return watchEffect(()=>{Oe.value=M(reactive({$dirty:p,$value:t,$silentValue:u,$error:J,$pending:Q,$invalid:I,$correct:O,$ready:q,$anyDirty:f,$name:v,$silentErrors:ce,$errors:Re,$fields:d,$edited:T,$anyEdited:F}));}),Oe}),A.push(W);});}let se=computed({get:()=>i?Object.fromEntries(Object.entries(i?.(d.value)??{}).map(([L,M])=>M.length?[L,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$correct"].map(W=>[W,Dt(M,W)])),...Object.fromEntries(["$errors","$silentErrors"].map(W=>[W,It(M,W)]))}]:[])):{},set(){}}),oe={};return ee(),{$dirty:p,$anyDirty:f,$invalid:I,$correct:O,$error:J,$pending:Q,$errors:Re,$silentErrors:ce,$ready:q,$name:v,$shortcuts:oe,$groups:se,$silentValue:u,$edited:T,$anyEdited:F,$localPending:Z}});}function S(){P?.(),l?.(),$?.(),w?.(),A=[],C={},d.value&&Object.entries(d.value).forEach(([u,p])=>{p.$unwatch();});}function k(){Object.entries(d.value).forEach(([u,p])=>{p.$clearExternalErrors();});}function G(u,p){if(l?.(),S(),!p)if(u?.toInitialState)t.value=N({...g.value??{}});else if(u?.toState){let f;typeof u?.toState=="function"?f=u?.toState():f=u?.toState,g.value=N(f),t.value=N(f);}else g.value=N(t.value);Object.values(d.value).forEach(f=>{f.$reset(u,true);}),u?.clearExternalErrors&&k(),b(),p||x();}function K(u=true,p=false){Object.values(d.value).forEach(f=>{f.$touch(u,p);});}function z(u){return u.filter(([p,f])=>_(f)?!(f&&typeof f=="object"&&"_null"in f)&&!te(f):Array.isArray(f)?f.length:true)}function le(u=true){let p=Object.entries(d.value).map(([f,I])=>[f,I.$extractDirtyFields(u)]);return u&&(p=z(p)),Object.fromEntries(p)}async function D(){try{if(h.schemaMode)return h.onValidate?(K(!1),C.$localPending.value=!0,h.onValidate()):{valid:!1,data:t.value};{let u=t.value;return {valid:(await Promise.allSettled(Object.values(d.value).map(I=>I.$validate()))).every(I=>I.status==="fulfilled"?I.value.valid===!0:!1),data:u}}}catch{return {valid:false,data:t.value}}finally{C.$localPending.value=false;}}let{$shortcuts:H,$localPending:ge,...fe}=C;return reactive({...fe,...H,$fields:d,$value:t,$reset:G,$touch:K,$validate:D,$unwatch:S,$watch:y,$clearExternalErrors:k,$extractDirtyFields:le})}function xe({rulesDef:e,...t}){if(jt(e,t.state,t.schemaMode))return Gt({rulesDef:e,...t});if(Ge(t.state,e)){if(Ne(t.state))return He({rulesDef:e,...t});{let n=effectScope().run(()=>{let s=toRef(t.state.value?t.state:ref({}));return watch(()=>t.state.value,i=>{s.value=i;},{deep:true}),watch(s,i=>{t.state.value=i;},{deep:true}),{fakeState:s}}),{state:a,...o}=t;return He({rulesDef:e,...o,state:n.fakeState})}}else if(We(e))return Ee({rulesDef:e,...t})}function we({initialState:e,options:t,scopeRules:r,state:n,customRules:a,shortcuts:o,schemaErrors:s,schemaMode:i=false,onValidate:g}){let R=tt(),h=ref();return Ge(n,r)?h.value=He({rootRules:r,rulesDef:r,state:n,customMessages:a?.(),storage:R,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:o,fieldName:"root",path:"",schemaErrors:s,rootSchemaErrors:s,schemaMode:i,onValidate:g}):We(r)&&(h.value=Ee({rulesDef:r,state:n,customMessages:a?.(),storage:R,options:t,externalErrors:t.externalErrors,initialState:e,shortcuts:o,fieldName:"root",path:"",schemaMode:i,schemaErrors:s,onValidate:g})),getCurrentScope()&&onScopeDispose(()=>{h.value?.$unwatch();}),reactive({regle:h})}function ze(e,t,r){let n={autoDirty:t?.autoDirty,lazy:t?.lazy,rewardEarly:t?.rewardEarly,silent:t?.silent,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange};function a(o,s,i){let g=isRef(s)?s:typeof s=="function"?void 0:computed(()=>s),R={...n,...i},h=isRef(o)?o:ref(o),j=shallowRef(g??{});typeof s=="function"&&watchEffect(()=>{j.value=s(h),triggerRef(j);});let C=ref(_(h.value)?{...N(h.value)}:N(h.value));return {r$:we({scopeRules:j,state:h,options:R,initialState:C,customRules:e,shortcuts:r}).regle}}return a}var Je=ze();function Ke(){function e(t,r){return r}return e}var ft=Ke();function Ht({rules:e,modifiers:t,shortcuts:r}){let n=ze(e,t,r);n.__config={rules:e,modifiers:t,shortcuts:r};let a=Ke();return {useRegle:n,inferRules:a}}function zt(e,{rules:t,modifiers:r,shortcuts:n}){let a=e.__config??{},o=()=>({...a.rules?.(),...t?.()}),s=a.modifiers&&r?Pe(a.modifiers,r):r,i=a.shortcuts&&n?Pe(a.shortcuts,n):n,g=ze(o,s,i);g.__config={rules:o,modifiers:s,shortcuts:i};let R=Ke();return {useRegle:g,inferRules:R}}function Ve(e,t){let r=t??false,n=computed({get:()=>r?Object.values(e).map(c=>c.$value):Object.fromEntries(Object.entries(e).map(([c,y])=>[c,y.$value])),set:c=>{r||typeof c=="object"&&Object.entries(c).forEach(([y,S])=>e[y].$value=S);}}),a=computed({get:()=>Object.fromEntries(Object.entries(e).map(([c,y])=>[c,y.$silentValue])),set:c=>{typeof c=="object"&&Object.entries(c).forEach(([y,S])=>e[y].$silentValue=S);}}),o=computed(()=>{let c=Object.entries(e);return !!c.length&&c.every(([y,S])=>S?.$dirty)}),s=computed(()=>Object.entries(e).some(([c,y])=>y?.$anyDirty)),i=computed(()=>Object.entries(e).some(([c,y])=>y?.$invalid)),g=computed(()=>{let c=Object.entries(e);return !!c.length&&c.every(([y,S])=>S?.$correct||S.$anyDirty&&!S.$invalid)}),R=computed(()=>Object.entries(e).some(([c,y])=>y?.$error)),h=computed(()=>{let c=Object.entries(e);return !!c.length&&c.every(([y,S])=>S?.$ready)}),j=computed(()=>Object.entries(e).some(([c,y])=>y?.$pending)),C=computed(()=>r?Object.entries(e).map(([c,y])=>y.$errors):Object.fromEntries(Object.entries(e).map(([c,y])=>[c,y.$errors]))),A=computed(()=>r?Object.entries(e).map(([c,y])=>y.$silentErrors):Object.fromEntries(Object.entries(e).map(([c,y])=>[c,y.$silentErrors]))),P=computed(()=>{let c=Object.entries(e);return !!c.length&&c.every(([y,S])=>S?.$edited)}),w=computed(()=>Object.entries(e).some(([c,y])=>y?.$anyEdited)),l=computed(()=>r?Object.values(e):e);function $(c){Object.values(e).forEach(y=>{y.$reset(c);});}function E(){Object.values(e).forEach(c=>{c.$touch();});}function x(c=true){return Object.values(e).map(y=>y.$extractDirtyFields(c))}function d(){Object.values(e).forEach(c=>{c.$clearExternalErrors();});}async function b(){try{let c=n.value;return {valid:(await Promise.allSettled(Object.values(e).map(k=>k.$validate()))).every(k=>k.status==="fulfilled"?k.value.valid===!0:!1),data:c}}catch{return {valid:false,data:n.value}}}return reactive({...!r&&{$silentValue:a},$errors:C,$silentErrors:A,$instances:l,$value:n,$dirty:o,$anyDirty:s,$invalid:i,$correct:g,$error:R,$pending:j,$ready:h,$edited:P,$anyEdited:w,$reset:$,$touch:E,$validate:b,$extractDirtyFields:x,$clearExternalErrors:d})}function Kt(e){function t(r){let n=computed(()=>toValue(r));s();let a=ref(i(e.value)),o=reactive({r$:a});function s(){n.value&&!e.value[n.value]&&(e.value[n.value]={});}watch(n,s),watch(e,g=>{a.value=i(g);},{deep:true});function i(g){if(n.value){let R=g[n.value]??{};return Ve(R,true)}else return Ve(g["~~global"]??{},true)}return {r$:o.r$}}return {useCollectScope:t}}function Qt(e,t){let r=t??Je;return {useScopedRegle:(a,o,s)=>{let{namespace:i,...g}=s??{},R=computed(()=>toValue(i)),h=ref(`${Object.keys(e.value).length+1}-${he()}`),j=computed(()=>`instance-${h.value}`),{r$:C}=r(a,o,g);P(),Pt(A),watch(R,(w,l)=>{A(l),P();}),getCurrentInstance()&&onMounted(()=>{let w=getCurrentInstance();typeof window<"u"&&w?.proxy?.$el?.parentElement&&document.documentElement&&!document.documentElement.contains(w?.proxy?.$el?.parentElement)&&A();});function A(w){let l=w??R.value;l?e.value[l]&&delete e.value[l][j.value]:e.value["~~global"][j.value]&&delete e.value["~~global"][j.value];}function P(){R.value?(e.value[R.value]||(e.value[R.value]={}),e.value[R.value][j.value]=C):(e.value["~~global"]||(e.value["~~global"]={}),e.value["~~global"][j.value]=C);}return {r$:C,dispose:A,register:P}}}}function qe(e){let r=(e?.customStore?()=>(e.customStore&&(e.customStore?.value["~~global"]?e.customStore?.value&&(e.customStore.value={"~~global":{}}):e.customStore.value["~~global"]={}),e.customStore):Mt(()=>ref({"~~global":{}})))(),{useScopedRegle:n}=Qt(r,e?.customUseRegle),{useCollectScope:a}=Kt(r);return {useScopedRegle:n,useCollectScope:a}}var {useCollectScope:Rt,useScopedRegle:dt}=qe();function er(e,t,r){let n=computed(()=>toValue(e)[t]);return computed(()=>{let o=r.find(s=>{if(s[t]&&"literal"in s[t]){let i=s[t].literal;if(me(i))return unref(i._params?.[0])===n.value}});if(o)return o;{let s=r.find(i=>_(i[t])&&!Object.keys(i[t]).some(g=>g==="literal"));return s||{}}})}function pt(e,t,r){return _(e[t])&&"$value"in e[t]&&e[t]?.$value===r}function tr(e,t,r){let n=isRef(e)?toRef(e.value,"$fields"):toRef(e,"$fields"),a=ref();return watch(n,async()=>{await nextTick(),pt(n.value,t,r)?a.value=n.value:a.value=void 0;},{immediate:true,flush:"pre"}),a}function rr(e){return e}function nr(e,t){return r=>Pe({...e},t(r))}
2
- export{Xe as InternalRuleType,et as createRule,qe as createScopedUseRegle,er as createVariant,Ht as defineRegleConfig,rr as defineRules,zt as extendRegleConfig,lt as flatErrors,ft as inferRules,Ve as mergeRegles,pt as narrowVariant,nr as refineRules,re as unwrapRuleParameters,Rt as useCollectScope,Je as useRegle,we as useRootStorage,dt as useScopedRegle,tr as variantToRef};
1
+ import {effectScope,computed,toValue,ref,watch,getCurrentInstance,onMounted,reactive,getCurrentScope,onScopeDispose,isRef,shallowRef,watchEffect,triggerRef,toRef,unref,version,nextTick}from'vue';function te(e,t=true){return e==null?true:e instanceof Date?isNaN(e.getTime()):e.constructor.name=="File"||e.constructor.name=="FileList"?e.size<=0:Array.isArray(e)?t?e.length===0:false:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}var Ct=Symbol("regle-rule");function or(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 U(e){let t=e,r={}.toString.call(e).slice(8,-1);if(r=="Set"&&(t=new Set([...e].map(n=>U(n)))),r=="Map"&&(t=new Map([...e].map(n=>[U(n[0]),U(n[1])]))),r=="Date"&&(t=new Date(e.getTime())),r=="RegExp"&&(t=RegExp(e.source,or(e))),r=="Array"||r=="Object"){t=Array.isArray(e)?[]:{};for(let n in e)t[n]=U(e[n]);}return t}function F(e){return e&&(e instanceof Date||e.constructor.name=="File"||e.constructor.name=="FileList")?false:typeof e=="object"&&e!==null&&!Array.isArray(e)}function Pe(e,...t){for(var r=[].slice.call(arguments),n,a=r.length;n=r[a-1],a--;)if(!n||typeof n!="object"&&typeof n!="function")throw new Error("expected object, got "+n);for(var o=r[0],s=r.slice(1),i=s.length,a=0;a<i;a++){var $=s[a];for(var d in $)o[d]=$[d];}return o}function Xe(e){let t=Object.prototype.toString.call(e);return e==null?new Date(NaN):e instanceof Date||typeof e=="object"&&t==="[object Date]"?new Date(e.getTime()):typeof e=="number"||t==="[object Number]"?new Date(e):typeof e=="string"||t==="[object String]"?new Date(e):new Date(NaN)}function ke(e,t,r){let n,a=(...o)=>new Promise(s=>{clearTimeout(n),n=setTimeout(()=>{n=void 0,Promise.resolve(e.apply(this,[...o])).then(s);},t);});return a.cancel=()=>{clearTimeout(n),n=void 0;},a}var Ze={Inline:"__inline",Async:"__async"};function Dt(e,t){return e.some(r=>r[t])}function It(e,t){return e.reduce((r,n)=>{let a=n[t]||[];return r.concat(a)},[])}function re(e){try{return e.map(t=>toValue(t))}catch{return []}}function Ot(e){return e.map(t=>t instanceof Function?computed(t):isRef(t)?t:toRef(()=>t))}function wt(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(s=>s.trim()).filter(s=>s.length>0).length:0}function et(e,...t){let{validator:r,type:n}=e,a=n===Ze.Async||r.constructor.name==="AsyncFunction";return {...{validator(i,...$){return e.validator(i,...re($.length?$:t))},message(i){return typeof e.message=="function"?e.message({...i,$params:re(i?.$params?.length?i.$params:t)}):e.message},active(i){return typeof e.active=="function"?e.active({...i,$params:re(i?.$params?.length?i.$params:t)}):e.active??true},tooltip(i){return typeof e.tooltip=="function"?e.tooltip({...i,$params:re(i?.$params?.length?i.$params:t)}):e.tooltip??[]},exec(i){let $=e.validator(i,...re(t)),d;return $ instanceof Promise?$.then(y=>(d=y,typeof d=="object"&&"$valid"in d?d.$valid:typeof d=="boolean"?d:false)):(d=$,typeof d=="object"&&"$valid"in d?d.$valid:typeof d=="boolean"?d:false)}},_validator:e.validator,_message:e.message,_active:e.active,_tooltip:e.tooltip,_type:e.type,_message_patched:false,_tooltip_patched:false,_async:a,_params:Ot(t),_brand:Ct}}function tt(e){if(typeof e.validator=="function"){let r=et(e,...[]),n=e.async??e.validator.constructor.name==="AsyncFunction";if(wt(e.validator)>1){let a=function(...o){return et(e,...o)};return a.validator=r.validator,a.message=r.message,a.active=r.active,a.tooltip=r.tooltip,a.type=r.type,a.exec=r.exec,a._validator=r.validator,a._message=r.message,a._active=r.active,a._tooltip=r.tooltip,a._type=e.type,a._message_pacthed=false,a._tooltip_pacthed=false,a._async=n,a}else return r}throw new Error("[createRule] validator must be a function")}function rt(){let e=shallowRef(new Map),t=shallowRef(new Map),r=shallowRef(new Map),n=shallowRef(new Map),a=shallowRef(new Map),o=shallowRef(new Map);function s(v){let x=t.value.get(v);if(x)return x;{let C=ref({});return t.value.set(v,C),C}}function i(v){let x=r.value.get(v);if(x)return x;{let C=ref([]);return r.value.set(v,C),C}}function $(v,x,C){o.value.set(`${v}-${x}`,C);}function d(v,x){return o.value.get(`${v}-${x}`)}function y(v,x){v&&x!=null&&o.value.delete(`${v}-${x}`);}function G(v,x){n.value.set(v,x);}function E(v){return n.value.get(v)??false}function j(v,x){e.value.set(v,x);}function O(v,x){let C=e.value.get(v);return C?P(x,C)?{valid:true}:{valid:false}:void 0}function P(v,x){let C=Object.keys(x),R=Object.keys(v);return R.length!==C.length||!R.every(c=>C.includes(c))?false:R.every(c=>{let g=v[c],T=x[c];return !T||!g||typeof g=="function"||typeof T=="function"||typeof g=="number"||typeof g=="boolean"?false:g._params?g._params?.every((N,W)=>{if(typeof T=="number"||typeof T=="boolean")return true;{let J=re(T._params),z=re(g._params);return J?.[W]===z?.[W]}}):true})}function l(v){let x=a.value.get(v);if(x)return x;{let C=ref(false),R=ref(true),b=ref({}),c=ref(false);return a.value.set(v,{$pending:C,$valid:R,$metadata:b,$validating:c}),{$pending:C,$valid:R,$metadata:b,$validating:c}}}return getCurrentScope()&&onScopeDispose(()=>{e.value.clear(),t.value.clear(),r.value.clear(),n.value.clear(),a.value.clear(),o.value.clear();}),{addRuleDeclEntry:j,setDirtyEntry:G,checkRuleDeclEntry:O,getDirtyState:E,trySetRuleStatusRef:l,getFieldsEntry:s,getCollectionsEntry:i,getArrayStatus:d,addArrayStatus:$,deleteArrayStatus:y,arrayStatusStorage:o}}function Ue(e){return F(e.value)}function nt(e,t,r){let n=effectScope(),a;return e instanceof Function?a=n.run(()=>e(t,r??0)):a=e,{scope:n,unwrapped:a}}var Me={LessThan:-1,EqualTo:0,GreaterThan:1};function mr(e,t){let r=String(e).split("."),n=String(t).split(".");for(let a=0;a<Math.min(r.length,n.length);a++){let o=Number(r[a]),s=Number(n[a]);if(o>s)return Me.GreaterThan;if(s>o)return Me.LessThan;if(!isNaN(o)&&isNaN(s))return Me.GreaterThan;if(isNaN(o)&&!isNaN(s))return Me.LessThan}return Me.EqualTo}var Ge=mr(version,"3.5.0")!==-1;function yr(){return Math.floor(Math.random()*Date.now()).toString()}function be(){return typeof window>"u"?yr():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function Pt(e){return getCurrentScope()?(onScopeDispose(e),true):false}function Mt(e){let t=false,r,n=effectScope(true);return (...a)=>(t||(r=n.run(()=>e(...a)),t=true),r)}function We(e,t){return Ue(e)||F(t.value)&&!te(t.value)&&!Object.entries(t.value).some(([r,n])=>ye(n)||typeof n=="function")}function At(e,t,r=false){return !!e.value&&F(e.value)&&"$each"in e.value||r&&Array.isArray(t.value)&&t.value.some(F)||Array.isArray(t.value)&&t.value.some(F)}function Be(e){return !!e.value&&F(e.value)}function ye(e){return F(e)&&"_validator"in e}function Ae(e){return typeof e.value=="function"?"_validator"in e.value:true}function jt(e){return F(e)&&"$fields"in e}function at(e){return !!e&&"$rules"in e}function lt({field:e,silent:t=false}){return Object.entries(e.$rules??{}).map(([r,n])=>t&&!n.$valid||!n.$valid&&e.$error&&!n.$validating?n.$message:null).filter(r=>!!r).reduce((r,n)=>typeof n=="string"?r?.concat([n]):r?.concat(n),[]).concat(e.$error?e.$externalErrors??[]:[]).concat(e.$error?e.$schemaErrors??[]:[])}function 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 Ft(e){return F(e)&&"$each"in e}function ot(e,t){let{includePath:r=false}=t??{};if(Array.isArray(e)&&e.every(n=>!F(n)))return e;if(Ft(e)){let n=r?e.$self?.map(o=>({error:o,path:""}))??[]:e.$self??[],a=e.$each?.map(o=>Le(o,r))??[];return n?.concat(a.flat())}else return Object.entries(e).map(([n,a])=>Le(a,r,[n])).flat()}function Le(e,t=false,r){let n=t&&!r?[]:r;if(Array.isArray(e)&&e.every(a=>!F(a)))return t?e.map(a=>({error:a,path:n?.join(".")??""})):e;if(Ft(e)){let a=n?.length?e.$self?.map(s=>({error:s,path:n.join(".")}))??[]:e.$self??[],o=e.$each?.map((s,i)=>Le(s,t,n?.concat(i.toString())))??[];return a?.concat(o.flat())}else return Object.entries(e).map(([a,o])=>Le(o,t,n?.concat(a))).flat()}function _t({customMessages:e,rule:t,ruleKey:r,state:n,path:a,storage:o,$debounce:s,modifiers:i}){let $=effectScope(),d={},y,G=ref(false),E=ref(false),{$pending:j,$valid:O,$metadata:P,$validating:l}=o.trySetRuleStatusRef(`${a}.${r}`);function v(){$=effectScope(),d=$.run(()=>{let T=ref(false),N=ref(false),W=ref(true),J=ref(false),z=ref(false),le=computed(()=>({$value:n.value,$error:N.value,$dirty:T.value,$pending:J.value,$correct:z.value,$invalid:W.value,$rule:{$valid:O.value,$invalid:!O.value,$pending:j.value},$params:f.value,...P.value})),D=computed(()=>Ae(t)?typeof t.value.active=="function"?t.value.active(le.value):!!t.value.active:true);function H(w){let K="",m=e?e[r]?.[w]:void 0;if(m&&(typeof m=="function"?K=m(le.value):K=m),Ae(t)){let M=`_${w}_patched`;m&&!t.value[M]||(typeof t.value[w]=="function"?K=t.value[w](le.value):K=t.value[w]??"");}return K}let ve=computed(()=>{let w=H("message");return te(w)&&(w="This field is not valid"),w}),Re=computed(()=>H("tooltip")),u=computed(()=>Ae(t)&&t.value.type?t.value.type:r),p=computed(()=>Ae(t)?t.value.validator:t.value),f=computed(()=>typeof t.value=="function"?[]:re(t.value._params??[])),I=computed(()=>`${a}.${u.value}`);return {$active:D,$message:ve,$type:u,$validator:p,$params:f,$path:I,$tooltip:Re,$fieldCorrect:z,$fieldError:N,$fieldDirty:T,$fieldPending:J,$fieldInvalid:W}}),y=watch(d?.$params,()=>{(!i.$silent.value||i.$rewardEarly.value&&d.$fieldError.value)&&b();});}v();function x(){O.value=true,d.$fieldDirty.value&&(j.value=true);}async function C(){let T=false;try{let N=d.$validator.value;if(typeof N!="function")return console.error(`${a}: Incorrect rule format, it needs to be either a function or created with "createRule".`),!1;let W=N(n.value,...d.$params.value),J=n.value;x();let z;if(W instanceof Promise?z=await W:z=W,n.value!==J)return !0;if(typeof z=="boolean")T=z;else {let{$valid:le,...D}=z;T=le,P.value=D;}}catch{T=false;}finally{j.value=false;}return T}let R=ke(C,s??200);async function b(){try{l.value=!0;let T=!1;if(E.value=!0,ye(t.value)&&t.value._async)T=await R();else {let N=d.$validator.value,W=N(n.value,...d.$params.value);if(W instanceof Promise)console.warn('You used a async validator function on a non-async rule, please use "async await" or the "withAsync" helper');else if(W!=null)if(typeof W=="boolean")T=W;else {let{$valid:J,...z}=W;T=J,P.value=z;}}return O.value=T,T}catch{return false}finally{l.value=false,E.value=false;}}function c(){O.value=true,P.value={},j.value=false,l.value=false,v();}function g(){y(),$.stop(),$=effectScope();}return reactive({...d,$pending:j,$valid:O,$metadata:P,$haveAsync:G,$maybePending:E,$validating:l,$parse:b,$unwatch:g,$watch:v,$reset:c})}function Ee({state:e,rulesDef:t,customMessages:r,path:n,fieldName:a,storage:o,options:s,externalErrors:i,schemaErrors:$,schemaMode:d,onUnwatch:y,$isArray:G,initialState:E,shortcuts:j,onValidate:O}){let P=effectScope(),l,v=[],x,C,R,b,c,g=()=>{};function T(){let h=t.value,V=o.checkRuleDeclEntry(n,h);H.value=Object.fromEntries(Object.entries(h).filter(([S])=>S.startsWith("$"))),J(),D.value=Object.fromEntries(Object.entries(t.value).filter(([S])=>!S.startsWith("$")).map(([S,X])=>{if(X){let se=toRef(()=>X);return [S,_t({modifiers:{$silent:l.$silent,$rewardEarly:l.$rewardEarly},customMessages:r,rule:se,ruleKey:S,state:e,path:n,storage:o,$debounce:H.value.$debounce})]}return []}).filter(S=>!!S.length)),l.processShortcuts(),N(),V?.valid!=null&&(l.$dirty.value=o.getDirtyState(n),(l.$dirty.value&&!l.$silent.value||l.$rewardEarly.value&&l.$error.value)&&g()),o.addRuleDeclEntry(n,h);}function N(){g=l.$debounce.value?ke(le,l.$debounce.value??l.$haveAnyAsyncRule?100:0):le;}function W(){D.value&&Object.entries(D.value).forEach(([h,V])=>{V.$unwatch();}),R(),c?.(),l.$dirty.value&&o.setDirtyEntry(n,l.$dirty.value),x?.(),C?.(),P.stop(),P=effectScope(),v.forEach(h=>h.stop()),v=[],y?.(),b?.();}function J(){D.value&&Object.entries(D.value).forEach(([h,V])=>{V.$watch();}),l=P.run(()=>{let h=ref(false),V=ref(false),S=computed(()=>h.value),X=computed(()=>H.value.$debounce),se=computed(()=>H.value.$lazy!=null?H.value.$lazy:unref(s.lazy)!=null?unref(s.lazy):false),ie=computed(()=>H.value.$rewardEarly!=null?H.value.$rewardEarly:unref(s.rewardEarly)!=null?unref(s.rewardEarly):false),Fe=computed(()=>H.value.$clearExternalErrorsOnChange!=null?H.value.$clearExternalErrorsOnChange:unref(s.clearExternalErrorsOnChange)!=null?unref(s.clearExternalErrorsOnChange):true),B=computed(()=>ie.value?true:H.value.$silent!=null?H.value.$silent:unref(s.silent)!=null?unref(s.silent):false),A=computed(()=>H.value.$autoDirty!=null?H.value.$autoDirty:unref(s.autoDirty)!=null?unref(s.autoDirty):true),k=computed(()=>Object.entries(D.value).some(([ue,Q])=>Q.$validating)),we=computed({get:()=>e.value,set(ue){x(),e.value=ue,z();}}),_e=computed(()=>Se.value&&!$e.value&&h.value),yt=computed(()=>lt({field:{$rules:D.value,$error:_e.value,$externalErrors:i?.value,$schemaErrors:$?.value}})),gt=computed(()=>lt({field:{$rules:D.value,$error:_e.value,$externalErrors:i?.value,$schemaErrors:$?.value},silent:true})),Qe=computed(()=>h.value?E.value instanceof Date&&e.value instanceof Date?Xe(E.value).getDate()!==Xe(e.value).getDate():E.value==null?!!e.value:Array.isArray(e.value)&&Array.isArray(E.value)?e.value.length!==E.value.length:E.value!==e.value:false),vt=computed(()=>Qe.value),$t=computed(()=>Vt({field:{$rules:D.value}})),St=computed(()=>(B.value||S.value)&&!(Se.value||$e.value)),$e=computed(()=>V.value||!ie.value?Object.entries(D.value).some(([ue,Q])=>Q.$pending):false),Se=computed(()=>i?.value?.length||$?.value?.length?true:Ne.value?false:!ie.value||ie.value&&V.value?Object.entries(D.value).some(([ue,Q])=>!(Q.$valid&&!Q.$maybePending)):false),Tt=computed(()=>a),Ne=computed(()=>!!(te(D.value)&&!d)),ht=computed(()=>i?.value?.length||Ne.value?false:h.value&&!te(e.value)&&!k.value&&!$e.value?d?!$?.value?.length:Object.values(D.value).some(Q=>Q.$active)?Object.values(D.value).filter(Q=>Q.$active).every(Q=>Q.$valid):false:false),ar=computed(()=>Object.entries(D.value).some(([ue,Q])=>Q.$haveAsync));function lr(){j?.fields&&Object.entries(j.fields).forEach(([ue,Q])=>{let xt=effectScope();bt[ue]=xt.run(()=>{let Et=ref();return watchEffect(()=>{Et.value=Q(reactive({$dirty:h,$externalErrors:i?.value??[],$value:e,$silentValue:we,$rules:D,$error:_e,$pending:$e,$invalid:Se,$correct:ht,$errors:yt,$ready:St,$silentErrors:gt,$anyDirty:S,$tooltips:$t,$name:Tt,$inactive:Ne,$edited:Qe,$anyEdited:vt}));}),Et}),v.push(xt);});}let bt={};return watch(Se,ue=>{ue||(V.value=false);}),{$error:_e,$pending:$e,$invalid:Se,$correct:ht,$debounce:X,$lazy:se,$errors:yt,$ready:St,$silentErrors:gt,$rewardEarly:ie,$autoDirty:A,$silent:B,$clearExternalErrorsOnChange:Fe,$anyDirty:S,$edited:Qe,$anyEdited:vt,$name:Tt,$haveAnyAsyncRule:ar,$shortcuts:bt,$validating:k,$tooltips:$t,$dirty:h,triggerPunishment:V,processShortcuts:lr,$silentValue:we,$inactive:Ne}}),z(),R=watch(l.$dirty,h=>{o.setDirtyEntry(n,h),Object.values(D.value).forEach(V=>{V.$fieldDirty=h;});}),c=watch([l.$error,l.$correct,l.$invalid,l.$pending],()=>{Object.values(D.value).forEach(h=>{h.$fieldError=l.$error.value,h.$fieldInvalid=l.$invalid.value,h.$fieldPending=l.$pending.value,h.$fieldCorrect=l.$correct.value;});}),C=watch(l.$invalid,h=>{l.$rewardEarly.value&&!h&&(l.triggerPunishment.value=false);}),b=watch(l.$haveAnyAsyncRule,N);}function z(){x=watch(e,()=>{l.$autoDirty.value&&!l.$silent.value&&(l.$dirty.value||(l.$dirty.value=true)),t.value instanceof Function&&T(),(!l.$silent.value||l.$rewardEarly.value&&l.$error.value)&&g(),l.$rewardEarly.value!==true&&l.$clearExternalErrorsOnChange.value&&f();},{deep:G?true:Ge?1:true});}function le(){Object.values(D.value).forEach(h=>{h.$parse();});}let D=ref({}),H=ref({});T();function ve(h,V){if(f(),l.$dirty.value=false,l.triggerPunishment.value=false,o.setDirtyEntry(n,false),!V)if(h?.toInitialState)e.value=U(E);else if(h?.toState){let S;typeof h?.toState=="function"?S=h?.toState():S=h?.toState,E.value=U(S),e.value=U(S);}else E.value=F(e.value)?U(e.value):Array.isArray(e.value)?[...e.value]:e.value;h?.clearExternalErrors&&f(),V||Object.entries(D.value).forEach(([S,X])=>{X.$reset();}),!l.$lazy.value&&!l.$silent.value&&Object.values(D.value).forEach(S=>S.$parse());}function Re(h=true,V=false){l.$dirty.value||(l.$dirty.value=true),V&&h?(!l.$silent.value||l.$rewardEarly.value&&l.$error.value)&&g():h&&g();}async function u(){try{if(d)return O?(Re(!1),O()):{valid:!1,data:e.value};let h=e.value;if(l.triggerPunishment.value=!0,!l.$dirty.value)l.$dirty.value=!0;else if(!l.$silent.value&&l.$dirty.value&&!l.$pending.value)return {valid:!l.$error.value,data:h};return d?{valid:!$?.value?.length,data:h}:te(D.value)?{valid:!0,data:h}:{valid:(await Promise.allSettled(Object.entries(D.value).map(([X,se])=>se.$parse()))).every(X=>X.status==="fulfilled"?X.value===!0:!1),data:h}}catch{return {valid:false,data:e.value}}}function p(h=true){return l.$dirty.value?e.value:h?{_null:true}:null}function f(){i?.value?.length&&(i.value=[]);}!l.$lazy.value&&!l.$dirty.value&&!l.$silent.value&&g();let{$shortcuts:I,$validating:w,$autoDirty:K,$rewardEarly:m,$clearExternalErrorsOnChange:M,$haveAnyAsyncRule:Y,$debounce:Z,$lazy:ee,triggerPunishment:oe,...fe}=l;return reactive({...fe,$externalErrors:i,$value:e,$rules:D,...I,$reset:ve,$touch:Re,$validate:u,$unwatch:W,$watch:J,$extractDirtyFields:p,$clearExternalErrors:f})}function ut({$id:e,path:t,index:r,options:n,storage:a,stateValue:o,customMessages:s,rules:i,externalErrors:$,schemaErrors:d,initialState:y,shortcuts:G,fieldName:E,schemaMode:j}){let O=i.$key?i.$key:be(),P=`${t}.${String(O)}`;typeof o.value=="object"&&o.value!=null&&(o.value.$id?P=`${t}.${o.value.$id}`:Object.defineProperties(o.value,{$id:{value:O,enumerable:false,configurable:false,writable:false}}));let l=toRef($?.value??[],r),v=computed(()=>d?.value?.[r]),x=Ce({state:o,rulesDef:toRef(()=>i),customMessages:s,path:P,storage:a,options:n,externalErrors:l,schemaErrors:v,initialState:y,shortcuts:G,fieldName:E,schemaMode:j});if(x){let C=o.value?.$id;x.$id=C??String(O),a.addArrayStatus(e,x.$id,x);}return x}function Gt({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:o,externalErrors:s,schemaErrors:i,schemaMode:$,initialState:d,shortcuts:y,fieldName:G}){let E=effectScope(),j,O=effectScope(),P,l=[];if(!Array.isArray(e.value)&&!t.value.$each)return;let v=ref(),x=ref(e.value),C,R=ref({}),b=a.getCollectionsEntry(n);P=O.run(()=>({isPrimitiveArray:computed(()=>Array.isArray(e.value)&&e.value.length?e.value.every(p=>typeof p!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(p=>ye(p)||typeof p=="function"):false)})),c(),N();function c(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?(v.value=be(),Object.defineProperties(e.value,{$id:{value:v.value,enumerable:false,configurable:false,writable:false}})):e.value?.$id&&(v.value=e.value.$id)),x.value=R.value.$value,Array.isArray(e.value)&&!P.isPrimitiveArray.value?b.value=e.value.filter(u=>typeof u=="object").map((u,p)=>{let{scope:f,unwrapped:I}=nt(t.value.$each,toRef(()=>u),p);f&&l.push(f);let w=toRef(d.value??[],p),K=toRef(s?.value??{},"$each"),m=computed(()=>i?.value?.$each),M=ut({$id:v.value,path:n,customMessages:r,rules:I??{},stateValue:toRef(()=>u),index:p,options:o,storage:a,externalErrors:K,schemaErrors:m,initialState:w,shortcuts:y,fieldName:G,schemaMode:$});return M||null}).filter(u=>!!u):b.value=[],R.value=Ee({state:e,rulesDef:t,customMessages:r,path:n,storage:a,options:o,externalErrors:toRef(s?.value??{},"$self"),schemaErrors:computed(()=>i?.value?.$self),$isArray:true,initialState:d,shortcuts:y,fieldName:G,schemaMode:$});}function g(){if(Array.isArray(e.value)&&!P.isPrimitiveArray.value){let u=U(b.value);b.value=e.value.filter(p=>typeof p=="object").map((p,f)=>{let I=toRef(()=>p);if(p.$id&&b.value.find(w=>w.$id===p.$id)){let w=a.getArrayStatus(v.value,p.$id);return w?(w.$value=I,w):null}else {let{scope:w,unwrapped:K}=nt(t.value.$each,I,f);w&&l.push(w);let m=toRef(s?.value??{},"$each"),M=computed(()=>i?.value?.$each??[]),Y=ut({$id:v.value,path:n,customMessages:r,rules:K??{},stateValue:I,index:f,options:o,storage:a,externalErrors:m,schemaErrors:M,initialState:toRef(d.value??[],f),shortcuts:y,fieldName:G,schemaMode:$});return Y||null}}).filter(p=>!!p),u.filter(p=>!e.value?.find(f=>p.$id===f.$id)).forEach((p,f)=>{a.deleteArrayStatus(v.value,f.toString());});}else b.value=[];}function T(){C=watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?c():g();},{deep:Ge?1:true,flush:"pre"});}function N(){T(),E=effectScope(),j=E.run(()=>{let u=computed({get:()=>e.value,set(S){C(),e.value=S,T();}}),p=computed(()=>R.value.$dirty&&(!b.value.length||b.value.every(S=>S.$dirty))),f=computed(()=>R.value.$anyDirty||b.value.some(S=>S.$anyDirty)),I=computed(()=>R.value.$invalid||b.value.some(S=>S.$invalid)),w=computed(()=>(te(R.value.$rules)?true:R.value.$correct)&&(!b.value.length||b.value.every(S=>S.$correct||S.$anyDirty&&!S.$invalid))),K=computed(()=>R.value.$error||b.value.some(S=>S.$error)),m=computed(()=>!(I.value||M.value)),M=computed(()=>R.value.$pending||b.value.some(S=>S.$pending)),Y=computed(()=>!!b.value.length&&b.value.every(S=>S.$edited)),Z=computed(()=>R.value.$anyEdited||b.value.some(S=>S.$anyEdited)),ee=computed(()=>({$self:R.value.$errors,$each:b.value.map(S=>S.$errors)})),oe=computed(()=>({$self:R.value.$silentErrors,$each:b.value.map(S=>S.$silentErrors)})),fe=computed(()=>G);function h(){y?.collections&&Object.entries(y?.collections).forEach(([S,X])=>{let se=effectScope();V[S]=se.run(()=>{let ie=ref();return watchEffect(()=>{ie.value=X(reactive({$dirty:p,$error:K,$silentValue:u,$pending:M,$invalid:I,$correct:w,$errors:ee,$ready:m,$silentErrors:oe,$anyDirty:f,$name:fe,$each:b,$self:R,$value:e,$edited:Y,$anyEdited:Z}));}),ie}),l.push(se);});}let V={};return h(),{$dirty:p,$anyDirty:f,$invalid:I,$correct:w,$error:K,$pending:M,$errors:ee,$silentErrors:oe,$ready:m,$name:fe,$shortcuts:V,$silentValue:u,$edited:Y,$anyEdited:Z}}),P.isPrimitiveArray.value&&t.value.$each&&console.warn(`${n} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`);}function W(){C&&C(),R.value&&R.value.$unwatch(),b.value&&b.value.forEach(u=>{"$dirty"in u&&u.$unwatch();}),E.stop(),E=effectScope(),O.stop(),O=effectScope(true),l.forEach(u=>u.stop()),l=[];}function J(u=true,p=false){R.value.$touch(u,p),b.value.forEach(f=>{f.$touch(u,p);});}function z(u,p){if(W(),!p)if(u?.toInitialState)e.value=U(d.value);else if(u?.toState){let f;typeof u?.toState=="function"?f=u?.toState():f=u?.toState,d.value=U(f),e.value=U(f);}else d.value=U(e.value);u?.clearExternalErrors&&D(),R.value.$reset(),b.value.forEach(f=>{f.$reset(u,true);}),p||c();}async function le(){let u=e.value;try{return {valid:(await Promise.allSettled([R.value.$validate(),...b.value.map(I=>I.$validate())])).every(I=>I.status==="fulfilled"?I.value.valid===!0:!1),data:u}}catch{return {valid:false,data:u}}}function D(){R.value.$clearExternalErrors(),b.value.forEach(u=>{u.$clearExternalErrors();});}function H(u=true){let p=b.value.map(f=>{if(jt(f))return f.$extractDirtyFields(u)});return u&&p.every(f=>te(f))&&(p=[]),p}let{$shortcuts:ve,...Re}=j;return reactive({$self:R,...Re,...ve,$each:b,$value:e,$validate:le,$unwatch:W,$watch:N,$touch:J,$reset:z,$extractDirtyFields:H,$clearExternalErrors:D})}function ze({rulesDef:e,state:t,path:r="",rootRules:n,externalErrors:a,schemaErrors:o,rootSchemaErrors:s,validationGroups:i,initialState:$,fieldName:d,...y}){let G=effectScope(),E,j=[],O=null,P=null,l=null,v=null;async function C(u=true){let p=Object.entries(e.value),f=Object.fromEntries(p.filter(([m,M])=>!!M).map(([m,M])=>{if(M){let Y=toRef(t.value??{},m),Z=toRef(()=>M),ee=toRef(a?.value??{},m),oe=computed(()=>o?.value?.[m]),fe=toRef($?.value??{},m);return [m,Ce({state:Y,rulesDef:Z,path:r?`${r}.${m}`:m,externalErrors:ee,schemaErrors:oe,initialState:fe,fieldName:m,...y})]}return []})),I=Object.fromEntries(Object.entries(unref(a)??{}).filter(([m,M])=>!(m in e.value)&&!!M).map(([m])=>{let M=toRef(t.value??{},m),Y=toRef(a?.value??{},m),Z=computed(()=>o?.value?.[m]),ee=toRef($?.value??{},m);return [m,Ce({state:M,rulesDef:computed(()=>({})),path:r?`${r}.${m}`:m,externalErrors:Y,schemaErrors:Z,initialState:ee,fieldName:m,...y})]})),w=Object.fromEntries(Object.entries(unref(o)??{}).map(([m])=>{let M=toRef(t.value??{},m),Y=toRef(a?.value??{},m),Z=computed(()=>o?.value?.[m]),ee=toRef($?.value??{},m);return [m,Ce({state:M,rulesDef:computed(()=>({})),path:r?`${r}.${m}`:m,externalErrors:Y,schemaErrors:Z,initialState:ee,fieldName:m,...y})]})),K=Object.fromEntries(Object.entries(t.value??{}).filter(([m])=>!(m in e.value)&&!(m in(I??{}))&&!(m in(w??{}))).map(([m])=>{let M=toRef(t.value??{},m),Y=toRef(a?.value??{},m),Z=computed(()=>o?.value?.[m]),ee=toRef($?.value??{},m);return [m,Ce({state:M,rulesDef:computed(()=>({})),path:r?`${r}.${m}`:m,externalErrors:Y,schemaErrors:Z,initialState:ee,fieldName:m,...y})]}));R.value={...f,...I,...w,...K},u&&g();}let R=y.storage.getFieldsEntry(r);C();function b(){a&&(l=watch(a,()=>{T(),C();},{deep:true}));}function c(){v=watch(t,()=>{E.$autoDirty.value&&!E.$silent.value&&(T(),C(),J(true,true));},{flush:"sync"});}function g(){n&&(O?.(),O=watch(n,()=>{T(),C();},{deep:true,flush:"pre"}),b()),s&&(P?.(),P=watch(s,()=>{T(),C();},{deep:true,flush:"post"})),c(),E=G.run(()=>{let u=computed({get:()=>t.value,set(B){T(),t.value=B,C();}}),p=computed(()=>!!Object.entries(R.value).length&&Object.entries(R.value).every(([B,A])=>A?.$dirty)),f=computed(()=>Object.entries(R.value).some(([B,A])=>A?.$anyDirty)),I=computed(()=>!!Object.entries(R.value).length&&Object.entries(R.value).some(([B,A])=>A?.$invalid)),w=computed(()=>{let B=Object.entries(R.value).filter(([A,k])=>at(k)?!k.$inactive:true);return B.length?B.every(([A,k])=>y.schemaMode?k.$correct:at(k)?"required"in k.$rules&&k.$rules.required.$active?k?.$correct:!k.$invalid&&!k.$pending:k?.$correct):false}),K=computed(()=>!!Object.entries(R.value).length&&Object.entries(R.value).some(([B,A])=>A?.$error)),m=computed(()=>unref(y.options.rewardEarly)!=null?unref(y.options.rewardEarly):false),M=computed(()=>unref(y.options.silent)!=null?unref(y.options.silent):!!m.value),Y=computed(()=>unref(y.options.autoDirty)!=null?unref(y.options.autoDirty):true),Z=computed(()=>(M.value||f.value)&&!(I.value||oe.value)),ee=ref(false),oe=computed(()=>ee.value||Object.entries(R.value).some(([B,A])=>A?.$pending)),fe=computed(()=>Object.fromEntries(Object.entries(R.value).map(([B,A])=>[B,A?.$errors]))),h=computed(()=>Object.fromEntries(Object.entries(R.value).map(([B,A])=>[B,A?.$silentErrors]))),V=computed(()=>!!Object.entries(R.value).length&&Object.entries(R.value).every(([B,A])=>A?.$edited)),S=computed(()=>Object.entries(R.value).some(([B,A])=>A?.$anyEdited)),X=computed(()=>d);function se(){y.shortcuts?.nested&&Object.entries(y.shortcuts.nested).forEach(([B,A])=>{let k=effectScope();Fe[B]=k.run(()=>{let we=ref();return watchEffect(()=>{we.value=A(reactive({$dirty:p,$value:t,$silentValue:u,$error:K,$pending:oe,$invalid:I,$correct:w,$ready:Z,$anyDirty:f,$name:X,$silentErrors:h,$errors:fe,$fields:R,$edited:V,$anyEdited:S}));}),we}),j.push(k);});}let ie=computed({get:()=>i?Object.fromEntries(Object.entries(i?.(R.value)??{}).map(([B,A])=>A.length?[B,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$correct"].map(k=>[k,Dt(A,k)])),...Object.fromEntries(["$errors","$silentErrors"].map(k=>[k,It(A,k)]))}]:[])):{},set(){}}),Fe={};return se(),{$dirty:p,$anyDirty:f,$invalid:I,$correct:w,$error:K,$pending:oe,$errors:fe,$silentErrors:h,$ready:Z,$name:X,$shortcuts:Fe,$groups:ie,$silentValue:u,$edited:V,$anyEdited:S,$localPending:ee,$autoDirty:Y,$silent:M}});}function T(){O?.(),l?.(),v?.(),P?.(),j=[],E={},R.value&&Object.entries(R.value).forEach(([u,p])=>{p.$unwatch();});}function N(){Object.entries(R.value).forEach(([u,p])=>{p.$clearExternalErrors();});}function W(u,p){if(l?.(),T(),!p)if(u?.toInitialState)t.value=U({...$.value??{}});else if(u?.toState){let f;typeof u?.toState=="function"?f=u?.toState():f=u?.toState,$.value=U(f),t.value=U(f);}else $.value=U(t.value);Object.values(R.value).forEach(f=>{f.$reset(u,true);}),u?.clearExternalErrors&&N(),b(),p||C();}function J(u=true,p=false){Object.values(R.value).forEach(f=>{f.$touch(u,p);});}function z(u){return u.filter(([p,f])=>F(f)?!(f&&typeof f=="object"&&"_null"in f)&&!te(f):Array.isArray(f)?f.length:true)}function le(u=true){let p=Object.entries(R.value).map(([f,I])=>[f,I.$extractDirtyFields(u)]);return u&&(p=z(p)),Object.fromEntries(p)}async function D(){try{if(y.schemaMode)return y.onValidate?(J(!1),E.$localPending.value=!0,y.onValidate()):{valid:!1,data:t.value};{let u=t.value;return {valid:(await Promise.allSettled(Object.values(R.value).map(I=>I.$validate()))).every(I=>I.status==="fulfilled"?I.value.valid===!0:!1),data:u}}}catch{return {valid:false,data:t.value}}finally{E.$localPending.value=false;}}let{$shortcuts:H,$localPending:ve,...Re}=E;return reactive({...Re,...H,$fields:R,$value:t,$reset:W,$touch:J,$validate:D,$unwatch:T,$watch:g,$clearExternalErrors:N,$extractDirtyFields:le})}function Ce({rulesDef:e,...t}){if(At(e,t.state,t.schemaMode))return Gt({rulesDef:e,...t});if(We(t.state,e)){if(Ue(t.state))return ze({rulesDef:e,...t});{let n=effectScope().run(()=>{let s=toRef(t.state.value?t.state:ref({}));return watch(()=>t.state.value,i=>{s.value=i;},{deep:true}),watch(s,i=>{t.state.value=i;},{deep:true}),{fakeState:s}}),{state:a,...o}=t;return ze({rulesDef:e,...o,state:n.fakeState})}}else if(Be(e))return Ee({rulesDef:e,...t})}function Oe({initialState:e,options:t,scopeRules:r,state:n,customRules:a,shortcuts:o,schemaErrors:s,schemaMode:i=false,onValidate:$}){let d=rt(),y=ref();return We(n,r)?y.value=ze({rootRules:r,rulesDef:r,state:n,customMessages:a?.(),storage:d,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:o,fieldName:"root",path:"",schemaErrors:s,rootSchemaErrors:s,schemaMode:i,onValidate:$}):Be(r)&&(y.value=Ee({rulesDef:r,state:n,customMessages:a?.(),storage:d,options:t,externalErrors:t.externalErrors,initialState:e,shortcuts:o,fieldName:"root",path:"",schemaMode:i,schemaErrors:s,onValidate:$})),getCurrentScope()&&onScopeDispose(()=>{y.value?.$unwatch();}),reactive({regle:y})}function Ke(e,t,r){let n={autoDirty:t?.autoDirty,lazy:t?.lazy,rewardEarly:t?.rewardEarly,silent:t?.silent,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange};function a(o,s,i){let $=isRef(s)?s:typeof s=="function"?void 0:computed(()=>s),d={...n,...i},y=isRef(o)?o:ref(o),G=shallowRef($??{});typeof s=="function"&&watchEffect(()=>{G.value=s(y),triggerRef(G);});let E=ref(F(y.value)?{...U(y.value)}:U(y.value));return {r$:Oe({scopeRules:G,state:y,options:d,initialState:E,customRules:e,shortcuts:r}).regle}}return a}var Je=Ke();function qe(){function e(t,r){return r}return e}var Rt=qe();function Ht({rules:e,modifiers:t,shortcuts:r}){let n=Ke(e,t,r);n.__config={rules:e,modifiers:t,shortcuts:r};let a=qe();return {useRegle:n,inferRules:a}}function zt(e,{rules:t,modifiers:r,shortcuts:n}){let a=e.__config??{},o=()=>({...a.rules?.(),...t?.()}),s=a.modifiers&&r?Pe(a.modifiers,r):r,i=a.shortcuts&&n?Pe(a.shortcuts,n):n,$=Ke(o,s,i);$.__config={rules:o,modifiers:s,shortcuts:i};let d=qe();return {useRegle:$,inferRules:d}}function Ve(e,t){let r=t??false,n=computed({get:()=>r?Object.values(e).map(c=>c.$value):Object.fromEntries(Object.entries(e).map(([c,g])=>[c,g.$value])),set:c=>{r||typeof c=="object"&&Object.entries(c).forEach(([g,T])=>e[g].$value=T);}}),a=computed({get:()=>Object.fromEntries(Object.entries(e).map(([c,g])=>[c,g.$silentValue])),set:c=>{typeof c=="object"&&Object.entries(c).forEach(([g,T])=>e[g].$silentValue=T);}}),o=computed(()=>{let c=Object.entries(e);return !!c.length&&c.every(([g,T])=>T?.$dirty)}),s=computed(()=>Object.entries(e).some(([c,g])=>g?.$anyDirty)),i=computed(()=>Object.entries(e).some(([c,g])=>g?.$invalid)),$=computed(()=>{let c=Object.entries(e);return !!c.length&&c.every(([g,T])=>T?.$correct||T.$anyDirty&&!T.$invalid)}),d=computed(()=>Object.entries(e).some(([c,g])=>g?.$error)),y=computed(()=>{let c=Object.entries(e);return !!c.length&&c.every(([g,T])=>T?.$ready)}),G=computed(()=>Object.entries(e).some(([c,g])=>g?.$pending)),E=computed(()=>r?Object.entries(e).map(([c,g])=>g.$errors):Object.fromEntries(Object.entries(e).map(([c,g])=>[c,g.$errors]))),j=computed(()=>r?Object.entries(e).map(([c,g])=>g.$silentErrors):Object.fromEntries(Object.entries(e).map(([c,g])=>[c,g.$silentErrors]))),O=computed(()=>{let c=Object.entries(e);return !!c.length&&c.every(([g,T])=>T?.$edited)}),P=computed(()=>Object.entries(e).some(([c,g])=>g?.$anyEdited)),l=computed(()=>r?Object.values(e):e);function v(c){Object.values(e).forEach(g=>{g.$reset(c);});}function x(){Object.values(e).forEach(c=>{c.$touch();});}function C(c=true){return Object.values(e).map(g=>g.$extractDirtyFields(c))}function R(){Object.values(e).forEach(c=>{c.$clearExternalErrors();});}async function b(){try{let c=n.value;return {valid:(await Promise.allSettled(Object.values(e).map(N=>N.$validate()))).every(N=>N.status==="fulfilled"?N.value.valid===!0:!1),data:c}}catch{return {valid:false,data:n.value}}}return reactive({...!r&&{$silentValue:a},$errors:E,$silentErrors:j,$instances:l,$value:n,$dirty:o,$anyDirty:s,$invalid:i,$correct:$,$error:d,$pending:G,$ready:y,$edited:O,$anyEdited:P,$reset:v,$touch:x,$validate:b,$extractDirtyFields:C,$clearExternalErrors:R})}function Jt(e,t){function r(n){let a=computed(()=>toValue(n));i();let o=ref($(e.value)),s=reactive({r$:o});function i(){a.value&&!e.value[a.value]&&(e.value[a.value]={});}watch(a,i),watch(e,d=>{o.value=$(d);},{deep:true});function $(d){if(a.value){let y=d[a.value]??{};return Ve(y,!t.asRecord)}else return Ve(d["~~global"]??{},!t.asRecord)}return {r$:s.r$}}return {useCollectScope:r}}function Qt(e,t){let r=t??Je;return {useScopedRegle:(a,o,s)=>{let{namespace:i,scopeKey:$,...d}=s??{};r.__config??={};let y=computed(()=>toValue(i)),G=ref(`${Object.keys(e.value).length+1}-${be()}`),E=computed(()=>s?.scopeKey??`instance-${G.value}`),{r$:j}=r(a,o,d);P(),Pt(O),watch(y,(l,v)=>{O(v),P();}),getCurrentInstance()&&onMounted(()=>{let l=getCurrentInstance();typeof window<"u"&&l?.proxy?.$el?.parentElement&&document.documentElement&&!document.documentElement.contains(l?.proxy?.$el?.parentElement)&&O();});function O(l){let v=l??y.value;v?e.value[v]&&delete e.value[v][E.value]:e.value["~~global"][E.value]&&delete e.value["~~global"][E.value];}function P(){y.value?(e.value[y.value]||(e.value[y.value]={}),e.value[y.value][E.value]=j):(e.value["~~global"]||(e.value["~~global"]={}),e.value["~~global"][E.value]=j);}return {r$:j,dispose:O,register:P}}}}function Ye(e){let r=(e?.customStore?()=>(e.customStore&&(e.customStore?.value["~~global"]?e.customStore?.value&&(e.customStore.value={"~~global":{}}):e.customStore.value["~~global"]={}),e.customStore):Mt(()=>ref({"~~global":{}})))(),{useScopedRegle:n}=Qt(r,e?.customUseRegle),{useCollectScope:a}=Jt(r,{asRecord:e?.asRecord});return {useScopedRegle:n,useCollectScope:a}}var {useCollectScope:dt,useScopedRegle:pt}=Ye();function er(e,t,r){let n=computed(()=>toValue(e)[t]);return computed(()=>{let o=r.find(s=>{if(s[t]&&"literal"in s[t]){let i=s[t].literal;if(ye(i))return unref(i._params?.[0])===n.value}});if(o)return o;{let s=r.find(i=>F(i[t])&&!Object.keys(i[t]).some($=>$==="literal"));return s||{}}})}function mt(e,t,r){return F(e[t])&&"$value"in e[t]&&e[t]?.$value===r}function tr(e,t,r){let n=isRef(e)?toRef(e.value,"$fields"):toRef(e,"$fields"),a=ref();return watch(n,async()=>{await nextTick(),mt(n.value,t,r)?a.value=n.value:a.value=void 0;},{immediate:true,flush:"pre"}),a}function rr(e){return e}function nr(e,t){return r=>Pe({...e},t(r))}
2
+ export{Ze as InternalRuleType,tt as createRule,Ye as createScopedUseRegle,er as createVariant,Ht as defineRegleConfig,rr as defineRules,zt as extendRegleConfig,ot as flatErrors,Rt as inferRules,Ve as mergeRegles,mt as narrowVariant,nr as refineRules,re as unwrapRuleParameters,dt as useCollectScope,Je as useRegle,Oe as useRootStorage,pt as useScopedRegle,tr as variantToRef};
@@ -1914,9 +1914,11 @@ function createReactiveNestedStatus({
1914
1914
  $unwatchState = watch(
1915
1915
  state,
1916
1916
  () => {
1917
- $unwatch();
1918
- createReactiveFieldsStatus();
1919
- $touch(true, true);
1917
+ if (scopeState.$autoDirty.value && !scopeState.$silent.value) {
1918
+ $unwatch();
1919
+ createReactiveFieldsStatus();
1920
+ $touch(true, true);
1921
+ }
1920
1922
  },
1921
1923
  { flush: "sync" }
1922
1924
  );
@@ -2011,6 +2013,12 @@ function createReactiveNestedStatus({
2011
2013
  }
2012
2014
  return false;
2013
2015
  });
2016
+ const $autoDirty = computed(() => {
2017
+ if (unref(commonArgs.options.autoDirty) != null) {
2018
+ return unref(commonArgs.options.autoDirty);
2019
+ }
2020
+ return true;
2021
+ });
2014
2022
  const $ready = computed(() => {
2015
2023
  if ($silent.value) {
2016
2024
  return !($invalid.value || $pending.value);
@@ -2132,7 +2140,9 @@ function createReactiveNestedStatus({
2132
2140
  $silentValue,
2133
2141
  $edited,
2134
2142
  $anyEdited,
2135
- $localPending: $localPending2
2143
+ $localPending: $localPending2,
2144
+ $autoDirty,
2145
+ $silent
2136
2146
  };
2137
2147
  });
2138
2148
  }
@@ -2609,7 +2619,7 @@ function mergeRegles(regles, _scoped) {
2609
2619
  $clearExternalErrors
2610
2620
  });
2611
2621
  }
2612
- function createUseCollectScope(instances) {
2622
+ function createUseCollectScope(instances, options) {
2613
2623
  function useCollectScope2(namespace) {
2614
2624
  const computedNamespace = computed(() => toValue(namespace));
2615
2625
  setEmptyNamespace();
@@ -2631,9 +2641,9 @@ function createUseCollectScope(instances) {
2631
2641
  function collectRegles(r$Instances) {
2632
2642
  if (computedNamespace.value) {
2633
2643
  const namespaceInstances = r$Instances[computedNamespace.value] ?? {};
2634
- return mergeRegles(namespaceInstances, true);
2644
+ return mergeRegles(namespaceInstances, !options.asRecord);
2635
2645
  } else {
2636
- return mergeRegles(r$Instances["~~global"] ?? {}, true);
2646
+ return mergeRegles(r$Instances["~~global"] ?? {}, !options.asRecord);
2637
2647
  }
2638
2648
  }
2639
2649
  return { r$: regle.r$ };
@@ -2643,11 +2653,12 @@ function createUseCollectScope(instances) {
2643
2653
  function createUseScopedRegleComposable(instances, customUseRegle) {
2644
2654
  const scopedUseRegle = customUseRegle ?? useRegle;
2645
2655
  const useScopedRegle2 = (state, rulesFactory, options) => {
2646
- const { namespace, ...restOptions } = options ?? {};
2656
+ const { namespace, scopeKey, ...restOptions } = options ?? {};
2657
+ scopedUseRegle.__config ??= {};
2647
2658
  const computedNamespace = computed(() => toValue(namespace));
2648
2659
  const $id = ref(`${Object.keys(instances.value).length + 1}-${randomId()}`);
2649
2660
  const instanceName = computed(() => {
2650
- return `instance-${$id.value}`;
2661
+ return options?.scopeKey ?? `instance-${$id.value}`;
2651
2662
  });
2652
2663
  const { r$ } = scopedUseRegle(state, rulesFactory, restOptions);
2653
2664
  register();
@@ -2711,7 +2722,7 @@ function createScopedUseRegle(options) {
2711
2722
  });
2712
2723
  const instances = useInstances();
2713
2724
  const { useScopedRegle: useScopedRegle2 } = createUseScopedRegleComposable(instances, options?.customUseRegle);
2714
- const { useCollectScope: useCollectScope2 } = createUseCollectScope(instances);
2725
+ const { useCollectScope: useCollectScope2 } = createUseCollectScope(instances, { asRecord: options?.asRecord });
2715
2726
  return {
2716
2727
  useScopedRegle: useScopedRegle2,
2717
2728
  useCollectScope: useCollectScope2
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@regle/core",
3
- "version": "1.2.0-beta.3",
3
+ "version": "1.2.0-beta.4",
4
4
  "description": "Headless form validation library for Vue 3",
5
5
  "peerDependencies": {
6
6
  "pinia": ">=2.2.5",