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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1161,6 +1161,13 @@ type RegleResult<Data extends Record<string, any> | any[] | unknown, TRules exte
1161
1161
  valid: true;
1162
1162
  data: Data extends Array<infer U extends Record<string, any>> ? DeepSafeFormState<U, TRules>[] : Data extends Date | File ? SafeFieldProperty<Data, TRules> : Data extends Record<string, any> ? DeepSafeFormState<Data, TRules> : SafeFieldProperty<Data, TRules>;
1163
1163
  };
1164
+ /**
1165
+ * Infer safe output from any `r$` instance
1166
+ *
1167
+ * ```ts
1168
+ * type FormRequest = InferSafeOutput<typeof r$>;
1169
+ * ```
1170
+ */
1164
1171
  type InferSafeOutput<TRegle extends MaybeRef<RegleRoot<{}, any, any, any>> | MaybeRef<RegleFieldStatus<any, any, any>>> = UnwrapRef<TRegle> extends Raw<RegleRoot<infer TState extends Record<string, any>, infer TRules, any, any>> ? DeepSafeFormState<JoinDiscriminatedUnions<TState>, TRules> : UnwrapRef<TRegle> extends RegleFieldStatus<infer TState, infer TRules> ? SafeFieldProperty<TState, TRules> : never;
1165
1172
  type $InternalRegleResult = {
1166
1173
  valid: boolean;
@@ -1936,16 +1943,23 @@ type RegleRuleTypeReturn<TValue, TParams extends [...any[]]> = {
1936
1943
  params: [...TParams];
1937
1944
  };
1938
1945
 
1939
- interface CommonComparationOptions {
1946
+ interface CommonComparisonOptions {
1940
1947
  /**
1941
1948
  * Change the behaviour of the rule to check only if the value is equal in addition to be strictly superior or inferior
1942
1949
  * @default true
1943
1950
  */
1944
1951
  allowEqual?: boolean;
1945
1952
  }
1953
+ interface CommonAlphaOptions {
1954
+ /**
1955
+ * Allow symbols in alphabetical-like rules (like "_")
1956
+ * @default true
1957
+ */
1958
+ allowSymbols?: boolean;
1959
+ }
1946
1960
  type DefaultValidators = {
1947
- alpha: RegleRuleWithParamsDefinition<string, [allowSymbols?: boolean | undefined]>;
1948
- alphaNum: RegleRuleWithParamsDefinition<string | number, [allowSymbols?: boolean | undefined]>;
1961
+ alpha: RegleRuleWithParamsDefinition<string, [options?: CommonAlphaOptions | undefined]>;
1962
+ alphaNum: RegleRuleWithParamsDefinition<string | number, [options?: CommonAlphaOptions | undefined]>;
1949
1963
  between: RegleRuleWithParamsDefinition<number, [min: Maybe<number>, max: Maybe<number>]>;
1950
1964
  checked: RegleRuleDefinition<boolean, [], false, boolean, boolean>;
1951
1965
  contains: RegleRuleWithParamsDefinition<string, [part: Maybe<string>], false, boolean>;
@@ -1984,14 +1998,14 @@ type DefaultValidators = {
1984
1998
  macAddress: RegleRuleWithParamsDefinition<string, [separator?: string | undefined], false, boolean>;
1985
1999
  maxLength: RegleRuleWithParamsDefinition<string | any[] | Record<PropertyKey, any>, [
1986
2000
  count: number,
1987
- options?: CommonComparationOptions
2001
+ options?: CommonComparisonOptions
1988
2002
  ], false, boolean>;
1989
- maxValue: RegleRuleWithParamsDefinition<number, [count: number, options?: CommonComparationOptions], false, boolean>;
2003
+ maxValue: RegleRuleWithParamsDefinition<number, [count: number, options?: CommonComparisonOptions], false, boolean>;
1990
2004
  minLength: RegleRuleWithParamsDefinition<string | any[] | Record<PropertyKey, any>, [
1991
2005
  count: number,
1992
- options?: CommonComparationOptions
2006
+ options?: CommonComparisonOptions
1993
2007
  ], false, boolean>;
1994
- minValue: RegleRuleWithParamsDefinition<number, [count: number, options?: CommonComparationOptions], false, boolean>;
2008
+ minValue: RegleRuleWithParamsDefinition<number, [count: number, options?: CommonComparisonOptions], false, boolean>;
1995
2009
  nativeEnum: RegleRuleDefinition<string | number, [enumLike: EnumLike], false, boolean, string | number>;
1996
2010
  numeric: RegleRuleDefinition<string | number, [], false, boolean, string | number>;
1997
2011
  oneOf: RegleRuleDefinition<string | number, [options: (string | number)[]], false, boolean, string | number>;
@@ -2419,9 +2433,6 @@ type SuperCompatibleRegleCollectionErrors = $InternalRegleCollectionErrors;
2419
2433
  *
2420
2434
  * It will automatically detect if the rule is async
2421
2435
  *
2422
- * @typeParam TValue - The input value the rule should receive
2423
- * @typeParam TParams - Tuple declaration of the rule parameters (if any)
2424
- *
2425
2436
  *
2426
2437
  * @param definition - The rule processors object
2427
2438
  *
@@ -2592,4 +2603,4 @@ declare function variantToRef<TRoot extends RegleStatus<{}, any, any>, const TKe
2592
2603
  [K in TKey]: RegleFieldStatus<TValue, any, any>;
2593
2604
  }> | undefined>;
2594
2605
 
2595
- export { type $InternalRegleStatus, type AllRulesDeclarations, type CommonComparationOptions, type DeepMaybeRef, type DeepReactiveState, type DefaultValidatorsTree, type FormRuleDeclaration, type InferRegleRoot, type InferRegleRule, type InferRegleRules, type InferRegleShortcuts, type InferRegleStatusType, type InferSafeOutput, type InlineRuleDeclaration, InternalRuleType, type JoinDiscriminatedUnions, type LocalRegleBehaviourOptions, type Maybe, type MaybeInput, type MaybeOutput, type MaybeVariantStatus, type MergedRegles, type NarrowVariant, type NoInferLegacy, type PrimitiveTypes, type Regle, type RegleBehaviourOptions, type RegleCollectionErrors, type RegleCollectionRuleDecl, type RegleCollectionRuleDefinition, type RegleCollectionStatus, type RegleCommonStatus, type RegleComputedRules, type RegleEnforceCustomRequiredRules, type RegleEnforceRequiredRules, type RegleErrorTree, type RegleExternalCollectionErrors, type RegleExternalErrorTree, type RegleFieldStatus, type RegleFormPropertyType, type RegleInternalRuleDefs, type ReglePartialRuleTree, type RegleResult, type RegleRoot, type RegleRuleCore, type RegleRuleDecl, type RegleRuleDefinition, type RegleRuleDefinitionProcessor, type RegleRuleDefinitionWithMetadataProcessor, type RegleRuleInit, type RegleRuleMetadataConsumer, type RegleRuleMetadataDefinition, type RegleRuleMetadataExtended, type RegleRuleRaw, type RegleRuleStatus, type RegleRuleTypeReturn, type RegleRuleWithParamsDefinition, type RegleShortcutDefinition, type RegleSingleField, type RegleStatus, type RegleUniversalParams, type RegleValidationErrors, type RegleValidationGroupEntry, type RegleValidationGroupOutput, type RegleRuleTree as RegleValidationTree, type ResolvedRegleBehaviourOptions, type ScopedInstancesRecord, type ScopedInstancesRecordLike, type SuperCompatibleRegleCollectionErrors, type SuperCompatibleRegleCollectionStatus, type SuperCompatibleRegleFieldStatus, type SuperCompatibleRegleResult, type SuperCompatibleRegleRoot, type SuperCompatibleRegleRuleStatus, type SuperCompatibleRegleStatus, type Unwrap, type UnwrapRegleUniversalParams, type UnwrapRuleWithParams, createRule, createScopedUseRegle, createVariant, defineRegleConfig, extendRegleConfig, flatErrors, inferRules, mergeRegles, narrowVariant, unwrapRuleParameters, useCollectScope, useRegle, useRootStorage, useScopedRegle, variantToRef };
2606
+ export { type $InternalRegleStatus, type AllRulesDeclarations, type CommonAlphaOptions, type CommonComparisonOptions, type DeepMaybeRef, type DeepReactiveState, type DefaultValidatorsTree, type FormRuleDeclaration, type InferRegleRoot, type InferRegleRule, type InferRegleRules, type InferRegleShortcuts, type InferRegleStatusType, type InferSafeOutput, type InlineRuleDeclaration, InternalRuleType, type JoinDiscriminatedUnions, type LocalRegleBehaviourOptions, type Maybe, type MaybeInput, type MaybeOutput, type MaybeVariantStatus, type MergedRegles, type NarrowVariant, type NoInferLegacy, type PrimitiveTypes, type Regle, type RegleBehaviourOptions, type RegleCollectionErrors, type RegleCollectionRuleDecl, type RegleCollectionRuleDefinition, type RegleCollectionStatus, type RegleCommonStatus, type RegleComputedRules, type RegleEnforceCustomRequiredRules, type RegleEnforceRequiredRules, type RegleErrorTree, type RegleExternalCollectionErrors, type RegleExternalErrorTree, type RegleFieldStatus, type RegleFormPropertyType, type RegleInternalRuleDefs, type ReglePartialRuleTree, type RegleResult, type RegleRoot, type RegleRuleCore, type RegleRuleDecl, type RegleRuleDefinition, type RegleRuleDefinitionProcessor, type RegleRuleDefinitionWithMetadataProcessor, type RegleRuleInit, type RegleRuleMetadataConsumer, type RegleRuleMetadataDefinition, type RegleRuleMetadataExtended, type RegleRuleRaw, type RegleRuleStatus, type RegleRuleTypeReturn, type RegleRuleWithParamsDefinition, type RegleShortcutDefinition, type RegleSingleField, type RegleStatus, type RegleUniversalParams, type RegleValidationErrors, type RegleValidationGroupEntry, type RegleValidationGroupOutput, type RegleRuleTree as RegleValidationTree, type ResolvedRegleBehaviourOptions, type ScopedInstancesRecord, type ScopedInstancesRecordLike, type SuperCompatibleRegleCollectionErrors, type SuperCompatibleRegleCollectionStatus, type SuperCompatibleRegleFieldStatus, type SuperCompatibleRegleResult, type SuperCompatibleRegleRoot, type SuperCompatibleRegleRuleStatus, type SuperCompatibleRegleStatus, type Unwrap, type UnwrapRegleUniversalParams, type UnwrapRuleWithParams, createRule, createScopedUseRegle, createVariant, defineRegleConfig, extendRegleConfig, flatErrors, inferRules, mergeRegles, narrowVariant, unwrapRuleParameters, useCollectScope, useRegle, useRootStorage, useScopedRegle, variantToRef };
@@ -1,2 +1,2 @@
1
- import {effectScope,computed,toValue,ref,watch,getCurrentInstance,onMounted,reactive,getCurrentScope,onScopeDispose,isRef,shallowRef,toRef,unref,watchEffect,version}from'vue';function te(e,t=true){return e==null?true:e instanceof Date?isNaN(e.getTime()):e.constructor.name=="File"||e.constructor.name=="FileList"?e.size<=0:Array.isArray(e)?t?e.length===0:false:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}var xt=Symbol("regle-rule");function nr(e){if(typeof e.source.flags=="string")return e.source.flags;{let t=[];return e.global&&t.push("g"),e.ignoreCase&&t.push("i"),e.multiline&&t.push("m"),e.sticky&&t.push("y"),e.unicode&&t.push("u"),t.join("")}}function G(e){let t=e,n={}.toString.call(e).slice(8,-1);if(n=="Set"&&(t=new Set([...e].map(r=>G(r)))),n=="Map"&&(t=new Map([...e].map(r=>[G(r[0]),G(r[1])]))),n=="Date"&&(t=new Date(e.getTime())),n=="RegExp"&&(t=RegExp(e.source,nr(e))),n=="Array"||n=="Object"){t=Array.isArray(e)?[]:{};for(let r in e)t[r]=G(e[r]);}return t}function _(e){return e&&(e instanceof Date||e.constructor.name=="File"||e.constructor.name=="FileList")?false:typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ye(e,...t){for(var n=[].slice.call(arguments),r,a=n.length;r=n[a-1],a--;)if(!r||typeof r!="object"&&typeof r!="function")throw new Error("expected object, got "+r);for(var o=n[0],s=n.slice(1),i=s.length,a=0;a<i;a++){var g=s[a];for(var R in g)o[R]=g[R];}return o}function Qe(e){let t=Object.prototype.toString.call(e);return e==null?new Date(NaN):e instanceof Date||typeof e=="object"&&t==="[object Date]"?new Date(e.getTime()):typeof e=="number"||t==="[object Number]"?new Date(e):typeof e=="string"||t==="[object String]"?new Date(e):new Date(NaN)}function _e(e,t,n){let r,a=(...o)=>new Promise(s=>{clearTimeout(r),r=setTimeout(()=>{r=void 0,Promise.resolve(e.apply(this,[...o])).then(s);},t);});return a.cancel=()=>{clearTimeout(r),r=void 0;},a}var Xe={Inline:"__inline",Async:"__async"};function Dt(e,t){return e.some(n=>n[t])}function Ct(e,t){return e.reduce((n,r)=>{let a=r[t]||[];return n.concat(a)},[])}function re(e){try{return e.map(t=>toValue(t))}catch{return []}}function It(e){return e.map(t=>t instanceof Function?computed(t):isRef(t)?t:toRef(()=>t))}function Ot(e){let r=e.toString().replace(/\/\/.*$/gm,"").replace(/\/\*[\s\S]*?\*\//g,"").match(/^(?:async\s*)?(?:function\b.*?\(|\((.*?)\)|(\w+))\s*=>|\((.*?)\)\s*=>|function.*?\((.*?)\)|\((.*?)\)/);return r?(r[0]||r[1]||r[2]||r[3]||r[4]||"").split(",").map(s=>s.trim()).filter(s=>s.length>0).length:0}function Ze(e,...t){let{validator:n,type:r}=e,a=r===Xe.Async||n.constructor.name==="AsyncFunction";return {...{validator(i,...g){return e.validator(i,...re(g.length?g:t))},message(i){return typeof e.message=="function"?e.message({...i,$params:re(i?.$params?.length?i.$params:t)}):e.message},active(i){return typeof e.active=="function"?e.active({...i,$params:re(i?.$params?.length?i.$params:t)}):e.active??true},tooltip(i){return typeof e.tooltip=="function"?e.tooltip({...i,$params:re(i?.$params?.length?i.$params:t)}):e.tooltip??[]},exec(i){let g=e.validator(i,...re(t)),R;return g instanceof Promise?g.then(h=>(R=h,typeof R=="object"&&"$valid"in R?R.$valid:typeof R=="boolean"?R:false)):(R=g,typeof R=="object"&&"$valid"in R?R.$valid:typeof R=="boolean"?R:false)}},_validator:e.validator,_message:e.message,_active:e.active,_tooltip:e.tooltip,_type:e.type,_message_patched:false,_tooltip_patched:false,_async:a,_params:It(t),_brand:xt}}function et(e){if(typeof e.validator=="function"){let n=Ze(e,...[]),r=e.async??e.validator.constructor.name==="AsyncFunction";if(Ot(e.validator)>1){let a=function(...o){return Ze(e,...o)};return a.validator=n.validator,a.message=n.message,a.active=n.active,a.tooltip=n.tooltip,a.type=n.type,a.exec=n.exec,a._validator=n.validator,a._message=n.message,a._active=n.active,a._tooltip=n.tooltip,a._type=e.type,a._message_pacthed=false,a._tooltip_pacthed=false,a._async=r,a}else return n}throw new Error("[createRule] validator must be a function")}function tt(){let e=shallowRef(new Map),t=shallowRef(new Map),n=shallowRef(new Map),r=shallowRef(new Map),a=shallowRef(new Map),o=shallowRef(new Map);function s($){let E=t.value.get($);if(E)return E;{let x=ref({});return t.value.set($,x),x}}function i($){let E=n.value.get($);if(E)return E;{let x=ref([]);return n.value.set($,x),x}}function g($,E,x){o.value.set(`${$}-${E}`,x);}function R($,E){return o.value.get(`${$}-${E}`)}function h($,E){$&&E!=null&&o.value.delete(`${$}-${E}`);}function A($,E){r.value.set($,E);}function D($){return r.value.get($)??false}function V($,E){e.value.set($,E);}function P($,E){let x=e.value.get($);return x?O(E,x)?{valid:true}:{valid:false}:void 0}function O($,E){let x=Object.keys(E),d=Object.keys($);return d.length!==x.length||!d.every(c=>x.includes(c))?false:d.every(c=>{let y=$[c],S=E[c];return !S||!y||typeof y=="function"||typeof S=="function"||typeof y=="number"||typeof y=="boolean"?false:y._params?y._params?.every((N,W)=>{if(typeof S=="number"||typeof S=="boolean")return true;{let K=re(S._params),H=re(y._params);return K?.[W]===H?.[W]}}):true})}function l($){let E=a.value.get($);if(E)return E;{let x=ref(false),d=ref(true),b=ref({}),c=ref(false);return a.value.set($,{$pending:x,$valid:d,$metadata:b,$validating:c}),{$pending:x,$valid:d,$metadata:b,$validating:c}}}return getCurrentScope()&&onScopeDispose(()=>{e.value.clear(),t.value.clear(),n.value.clear(),r.value.clear(),a.value.clear(),o.value.clear();}),{addRuleDeclEntry:V,setDirtyEntry:A,checkRuleDeclEntry:P,getDirtyState:D,trySetRuleStatusRef:l,getFieldsEntry:s,getCollectionsEntry:i,getArrayStatus:R,addArrayStatus:g,deleteArrayStatus:h,arrayStatusStorage:o}}function Ne(e){return _(e.value)}function rt(e,t,n){let r=effectScope(),a;return e instanceof Function?a=r.run(()=>e(t,n??0)):a=e,{scope:r,unwrapped:a}}var Pe={LessThan:-1,EqualTo:0,GreaterThan:1};function Rr(e,t){let n=String(e).split("."),r=String(t).split(".");for(let a=0;a<Math.min(n.length,r.length);a++){let o=Number(n[a]),s=Number(r[a]);if(o>s)return Pe.GreaterThan;if(s>o)return Pe.LessThan;if(!isNaN(o)&&isNaN(s))return Pe.GreaterThan;if(isNaN(o)&&!isNaN(s))return Pe.LessThan}return Pe.EqualTo}var ke=Rr(version,"3.5.0")!==-1;function dr(){return Math.floor(Math.random()*Date.now()).toString()}function he(){return typeof window>"u"?dr():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function wt(e){return getCurrentScope()?(onScopeDispose(e),true):false}function Pt(e){let t=false,n,r=effectScope(true);return (...a)=>(t||(n=r.run(()=>e(...a)),t=true),n)}function Ge(e,t){return Ne(e)||_(t.value)&&!te(t.value)&&!Object.entries(t.value).some(([n,r])=>me(r)||typeof r=="function")}function Mt(e,t,n=false){return !!e.value&&_(e.value)&&"$each"in e.value||n&&Array.isArray(t.value)&&t.value.some(_)||Array.isArray(t.value)&&t.value.some(_)}function Ue(e){return !!e.value&&_(e.value)}function me(e){return _(e)&&"_validator"in e}function Me(e){return typeof e.value=="function"?"_validator"in e.value:true}function jt(e){return _(e)&&"$fields"in e}function nt(e){return !!e&&"$rules"in e}function at({field:e,silent:t=false}){return Object.entries(e.$rules??{}).map(([n,r])=>t&&!r.$valid||!r.$valid&&e.$error&&!r.$validating?r.$message:null).filter(n=>!!n).reduce((n,r)=>typeof r=="string"?n?.concat([r]):n?.concat(r),[]).concat(e.$error?e.$externalErrors??[]:[]).concat(e.$error?e.$schemaErrors??[]:[])}function Vt({field:e}){return Object.entries(e.$rules??{}).map(([t,n])=>n.$tooltip).filter(t=>!!t).reduce((t,n)=>typeof n=="string"?t?.concat([n]):t?.concat(n),[])}function At(e){return _(e)&&"$each"in e}function lt(e,t){let{includePath:n=false}=t??{};if(Array.isArray(e)&&e.every(r=>!_(r)))return e;if(At(e)){let r=n?e.$self?.map(o=>({error:o,path:""}))??[]:e.$self??[],a=e.$each?.map(o=>We(o,n))??[];return r?.concat(a.flat())}else return Object.entries(e).map(([r,a])=>We(a,n,[r])).flat()}function We(e,t=false,n){let r=t&&!n?[]:n;if(Array.isArray(e)&&e.every(a=>!_(a)))return t?e.map(a=>({error:a,path:r?.join(".")??""})):e;if(At(e)){let a=r?.length?e.$self?.map(s=>({error:s,path:r.join(".")}))??[]:e.$self??[],o=e.$each?.map((s,i)=>We(s,t,r?.concat(i.toString())))??[];return a?.concat(o.flat())}else return Object.entries(e).map(([a,o])=>We(o,t,r?.concat(a))).flat()}function Ft({customMessages:e,rule:t,ruleKey:n,state:r,path:a,storage:o,$debounce:s,modifiers:i}){let g=effectScope(),R={},h,A=ref(false),D=ref(false),{$pending:V,$valid:P,$metadata:O,$validating:l}=o.trySetRuleStatusRef(`${a}.${n}`);function $(){g=effectScope(),R=g.run(()=>{let S=ref(false),N=ref(false),W=ref(true),K=ref(false),H=ref(false),le=computed(()=>({$value:r.value,$error:N.value,$dirty:S.value,$pending:K.value,$correct:H.value,$invalid:W.value,$rule:{$valid:P.value,$invalid:!P.value,$pending:V.value},$params:f.value,...O.value})),C=computed(()=>Me(t)?typeof t.value.active=="function"?t.value.active(le.value):!!t.value.active:true);function z(w){let J="",m=e?e[n]?.[w]:void 0;if(m&&(typeof m=="function"?J=m(le.value):J=m),Me(t)){let j=`_${w}_patched`;m&&!t.value[j]||(typeof t.value[w]=="function"?J=t.value[w](le.value):J=t.value[w]??"");}return J}let ge=computed(()=>{let w=z("message");return te(w)&&(w="This field is not valid"),w}),ce=computed(()=>z("tooltip")),u=computed(()=>Me(t)&&t.value.type?t.value.type:n),p=computed(()=>Me(t)?t.value.validator:t.value),f=computed(()=>typeof t.value=="function"?[]:re(t.value._params??[])),I=computed(()=>`${a}.${u.value}`);return {$active:C,$message:ge,$type:u,$validator:p,$params:f,$path:I,$tooltip:ce,$fieldCorrect:H,$fieldError:N,$fieldDirty:S,$fieldPending:K,$fieldInvalid:W}}),h=watch(R?.$params,()=>{(i.$autoDirty.value||i.$rewardEarly.value&&R.$fieldError.value)&&b();});}$();function E(){P.value=true,R.$fieldDirty.value&&(V.value=true);}async function x(){let S=false;try{let N=R.$validator.value;if(typeof N!="function")return console.error(`${a}: Incorrect rule format, it needs to be either a function or created with "createRule".`),!1;let W=N(r.value,...R.$params.value),K=r.value;E();let H;if(W instanceof Promise?H=await W:H=W,r.value!==K)return !0;if(typeof H=="boolean")S=H;else {let{$valid:le,...C}=H;S=le,O.value=C;}}catch{S=false;}finally{V.value=false;}return S}let d=_e(x,s??200);async function b(){try{l.value=!0;let S=!1;if(D.value=!0,me(t.value)&&t.value._async)S=await d();else {let N=R.$validator.value,W=N(r.value,...R.$params.value);if(W instanceof Promise)console.warn('You used a async validator function on a non-async rule, please use "async await" or the "withAsync" helper');else if(W!=null)if(typeof W=="boolean")S=W;else {let{$valid:K,...H}=W;S=K,O.value=H;}}return P.value=S,S}catch{return false}finally{l.value=false,D.value=false;}}function c(){P.value=true,O.value={},V.value=false,l.value=false,$();}function y(){h(),g.stop(),g=effectScope();}return reactive({...R,$pending:V,$valid:P,$metadata:O,$haveAsync:A,$maybePending:D,$validating:l,$parse:b,$unwatch:y,$watch:$,$reset:c})}function Ee({state:e,rulesDef:t,customMessages:n,path:r,fieldName:a,storage:o,options:s,externalErrors:i,schemaErrors:g,schemaMode:R,onUnwatch:h,$isArray:A,initialState:D,shortcuts:V,onValidate:P}){let O=effectScope(),l,$=[],E,x,d,b,c,y=()=>{};function S(){let T=t.value,F=o.checkRuleDeclEntry(r,T);z.value=Object.fromEntries(Object.entries(T).filter(([v])=>v.startsWith("$"))),K(),C.value=Object.fromEntries(Object.entries(t.value).filter(([v])=>!v.startsWith("$")).map(([v,ee])=>{if(ee){let se=toRef(()=>ee);return [v,Ft({modifiers:{$autoDirty:l.$autoDirty,$rewardEarly:l.$rewardEarly},customMessages:n,rule:se,ruleKey:v,state:e,path:r,storage:o,$debounce:z.value.$debounce})]}return []}).filter(v=>!!v.length)),l.processShortcuts(),N(),F?.valid!=null&&(l.$dirty.value=o.getDirtyState(r),(l.$dirty.value&&l.$autoDirty.value||l.$rewardEarly.value&&l.$error.value)&&y()),o.addRuleDeclEntry(r,T);}function N(){y=l.$debounce.value?_e(le,l.$debounce.value??l.$haveAnyAsyncRule?100:0):le;}function W(){C.value&&Object.entries(C.value).forEach(([T,F])=>{F.$unwatch();}),d(),c?.(),l.$dirty.value&&o.setDirtyEntry(r,l.$dirty.value),E?.(),x?.(),O.stop(),O=effectScope(),$.forEach(T=>T.stop()),$=[],h?.(),b?.();}function K(){C.value&&Object.entries(C.value).forEach(([T,F])=>{F.$watch();}),l=O.run(()=>{let T=ref(false),F=ref(false),v=computed(()=>T.value),ee=computed(()=>z.value.$debounce),se=computed(()=>z.value.$lazy!=null?z.value.$lazy:unref(s.lazy)!=null?unref(s.lazy):false),oe=computed(()=>z.value.$rewardEarly!=null?z.value.$rewardEarly:unref(s.rewardEarly)!=null?unref(s.rewardEarly):false),B=computed(()=>z.value.$clearExternalErrorsOnChange!=null?z.value.$clearExternalErrorsOnChange:unref(s.clearExternalErrorsOnChange)!=null?unref(s.clearExternalErrorsOnChange):true),M=computed(()=>z.value.$autoDirty!=null?z.value.$autoDirty:unref(s.autoDirty)!=null?unref(s.autoDirty):!oe.value),k=computed(()=>Object.entries(C.value).some(([ie,X])=>X.$validating)),we=computed({get:()=>e.value,set(ie){E(),e.value=ie,H();}}),Ae=computed(()=>$e.value&&!ve.value&&T.value),mt=computed(()=>at({field:{$rules:C.value,$error:Ae.value,$externalErrors:i?.value,$schemaErrors:g?.value}})),yt=computed(()=>at({field:{$rules:C.value,$error:Ae.value,$externalErrors:i?.value,$schemaErrors:g?.value},silent:true})),qe=computed(()=>T.value?D.value instanceof Date&&e.value instanceof Date?Qe(D.value).getDate()!==Qe(e.value).getDate():D.value==null?!!e.value:Array.isArray(e.value)&&Array.isArray(D.value)?e.value.length!==D.value.length:D.value!==e.value:false),gt=computed(()=>qe.value),vt=computed(()=>Vt({field:{$rules:C.value}})),$t=computed(()=>M.value?v.value&&!($e.value||ve.value):!($e.value||ve.value)),ve=computed(()=>F.value||!oe.value?Object.entries(C.value).some(([ie,X])=>X.$pending):false),$e=computed(()=>i?.value?.length||g?.value?.length?true:Fe.value?false:!oe.value||oe.value&&F.value?Object.entries(C.value).some(([ie,X])=>!(X.$valid&&!X.$maybePending)):false),St=computed(()=>a),Fe=computed(()=>!!(te(C.value)&&!R)),Tt=computed(()=>i?.value?.length||Fe.value?false:T.value&&!te(e.value)&&!k.value&&!ve.value?R?!g?.value?.length:Object.values(C.value).some(X=>X.$active)?Object.values(C.value).filter(X=>X.$active).every(X=>X.$valid):false:false),tr=computed(()=>Object.entries(C.value).some(([ie,X])=>X.$haveAsync));function rr(){V?.fields&&Object.entries(V.fields).forEach(([ie,X])=>{let bt=effectScope();ht[ie]=bt.run(()=>{let Et=ref();return watchEffect(()=>{Et.value=X(reactive({$dirty:T,$externalErrors:i?.value??[],$value:e,$silentValue:we,$rules:C,$error:Ae,$pending:ve,$invalid:$e,$correct:Tt,$errors:mt,$ready:$t,$silentErrors:yt,$anyDirty:v,$tooltips:vt,$name:St,$inactive:Fe,$edited:qe,$anyEdited:gt}));}),Et}),$.push(bt);});}let ht={};return watch($e,ie=>{ie||(F.value=false);}),{$error:Ae,$pending:ve,$invalid:$e,$correct:Tt,$debounce:ee,$lazy:se,$errors:mt,$ready:$t,$silentErrors:yt,$rewardEarly:oe,$autoDirty:M,$clearExternalErrorsOnChange:B,$anyDirty:v,$edited:qe,$anyEdited:gt,$name:St,$haveAnyAsyncRule:tr,$shortcuts:ht,$validating:k,$tooltips:vt,$dirty:T,triggerPunishment:F,processShortcuts:rr,$silentValue:we,$inactive:Fe}}),H(),d=watch(l.$dirty,T=>{o.setDirtyEntry(r,T),Object.values(C.value).forEach(F=>{F.$fieldDirty=T;});}),c=watch([l.$error,l.$correct,l.$invalid,l.$pending],()=>{Object.values(C.value).forEach(T=>{T.$fieldError=l.$error.value,T.$fieldInvalid=l.$invalid.value,T.$fieldPending=l.$pending.value,T.$fieldCorrect=l.$correct.value;});}),x=watch(l.$invalid,T=>{l.$rewardEarly.value&&!T&&(l.triggerPunishment.value=false);}),b=watch(l.$haveAnyAsyncRule,N);}function H(){E=watch(e,()=>{l.$autoDirty.value&&(l.$dirty.value||(l.$dirty.value=true)),t.value instanceof Function&&S(),(l.$autoDirty.value||l.$rewardEarly.value&&l.$error.value)&&y(),l.$rewardEarly.value!==true&&l.$clearExternalErrorsOnChange.value&&f();},{deep:A?true:ke?1:true});}function le(){Object.values(C.value).forEach(T=>{T.$parse();});}let C=ref({}),z=ref({});S();function ge(T,F){if(f(),l.$dirty.value=false,l.triggerPunishment.value=false,o.setDirtyEntry(r,false),!F)if(T?.toInitialState)e.value=G(D);else if(T?.toState){let v;typeof T?.toState=="function"?v=T?.toState():v=T?.toState,D.value=G(v),e.value=G(v);}else D.value=_(e.value)?G(e.value):Array.isArray(e.value)?[...e.value]:e.value;T?.clearExternalErrors&&f(),F||Object.entries(C.value).forEach(([v,ee])=>{ee.$reset();}),!l.$lazy.value&&l.$autoDirty.value&&Object.values(C.value).forEach(v=>v.$parse());}function ce(T=true,F=false){l.$dirty.value||(l.$dirty.value=true),F&&T?(l.$autoDirty.value||l.$rewardEarly.value&&l.$error.value)&&y():T&&y();}async function u(){try{if(R)return P?(ce(!1),P()):{valid:!1,data:e.value};let T=e.value;if(l.triggerPunishment.value=!0,!l.$dirty.value)l.$dirty.value=!0;else if(l.$autoDirty.value&&l.$dirty.value&&!l.$pending.value)return {valid:!l.$error.value,data:T};return R?{valid:!g?.value?.length,data:T}:te(C.value)?{valid:!0,data:T}:{valid:(await Promise.allSettled(Object.entries(C.value).map(([ee,se])=>se.$parse()))).every(ee=>ee.status==="fulfilled"?ee.value===!0:!1),data:T}}catch{return {valid:false,data:e.value}}}function p(T=true){return l.$dirty.value?e.value:T?{_null:true}:null}function f(){i?.value?.length&&(i.value=[]);}!l.$lazy.value&&!l.$dirty.value&&l.$autoDirty.value&&y();let{$shortcuts:I,$validating:w,$autoDirty:J,$rewardEarly:m,$clearExternalErrorsOnChange:j,$haveAnyAsyncRule:q,$debounce:Z,$lazy:Q,triggerPunishment:fe,...ue}=l;return reactive({...ue,$externalErrors:i,$value:e,$rules:C,...I,$reset:ge,$touch:ce,$validate:u,$unwatch:W,$watch:K,$extractDirtyFields:p,$clearExternalErrors:f})}function it({$id:e,path:t,index:n,options:r,storage:a,stateValue:o,customMessages:s,rules:i,externalErrors:g,schemaErrors:R,initialState:h,shortcuts:A,fieldName:D,schemaMode:V}){let P=i.$key?i.$key:he(),O=`${t}.${String(P)}`;typeof o.value=="object"&&o.value!=null&&(o.value.$id?O=`${t}.${o.value.$id}`:Object.defineProperties(o.value,{$id:{value:P,enumerable:false,configurable:false,writable:false}}));let l=toRef(g?.value??[],n),$=computed(()=>R?.value?.[n]),E=xe({state:o,rulesDef:toRef(()=>i),customMessages:s,path:O,storage:a,options:r,externalErrors:l,schemaErrors:$,initialState:h,shortcuts:A,fieldName:D,schemaMode:V});if(E){let x=o.value?.$id;E.$id=x??String(P),a.addArrayStatus(e,E.$id,E);}return E}function Gt({state:e,rulesDef:t,customMessages:n,path:r,storage:a,options:o,externalErrors:s,schemaErrors:i,schemaMode:g,initialState:R,shortcuts:h,fieldName:A}){let D=effectScope(),V,P=effectScope(),O,l=[];if(!Array.isArray(e.value)&&!t.value.$each)return;let $=ref(),E=ref(e.value),x,d=ref({}),b=a.getCollectionsEntry(r);O=P.run(()=>({isPrimitiveArray:computed(()=>Array.isArray(e.value)&&e.value.length?e.value.every(p=>typeof p!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(p=>me(p)||typeof p=="function"):false)})),c(),N();function c(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?($.value=he(),Object.defineProperties(e.value,{$id:{value:$.value,enumerable:false,configurable:false,writable:false}})):e.value?.$id&&($.value=e.value.$id)),E.value=d.value.$value,Array.isArray(e.value)&&!O.isPrimitiveArray.value?b.value=e.value.filter(u=>typeof u=="object").map((u,p)=>{let{scope:f,unwrapped:I}=rt(t.value.$each,toRef(()=>u),p);f&&l.push(f);let w=toRef(R.value??[],p),J=toRef(s?.value??{},"$each"),m=computed(()=>i?.value?.$each),j=it({$id:$.value,path:r,customMessages:n,rules:I??{},stateValue:toRef(()=>u),index:p,options:o,storage:a,externalErrors:J,schemaErrors:m,initialState:w,shortcuts:h,fieldName:A,schemaMode:g});return j||null}).filter(u=>!!u):b.value=[],d.value=Ee({state:e,rulesDef:t,customMessages:n,path:r,storage:a,options:o,externalErrors:toRef(s?.value??{},"$self"),schemaErrors:computed(()=>i?.value?.$self),$isArray:true,initialState:R,shortcuts:h,fieldName:A,schemaMode:g});}function y(){if(Array.isArray(e.value)&&!O.isPrimitiveArray.value){let u=G(b.value);b.value=e.value.filter(p=>typeof p=="object").map((p,f)=>{let I=toRef(()=>p);if(p.$id&&b.value.find(w=>w.$id===p.$id)){let w=a.getArrayStatus($.value,p.$id);return w?(w.$value=I,w):null}else {let{scope:w,unwrapped:J}=rt(t.value.$each,I,f);w&&l.push(w);let m=toRef(s?.value??{},"$each"),j=computed(()=>i?.value?.$each??[]),q=it({$id:$.value,path:r,customMessages:n,rules:J??{},stateValue:I,index:f,options:o,storage:a,externalErrors:m,schemaErrors:j,initialState:toRef(R.value??[],f),shortcuts:h,fieldName:A,schemaMode:g});return q||null}}).filter(p=>!!p),u.filter(p=>!e.value?.find(f=>p.$id===f.$id)).forEach((p,f)=>{a.deleteArrayStatus($.value,f.toString());});}else b.value=[];}function S(){x=watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?c():y();},{deep:ke?1:true,flush:"pre"});}function N(){S(),D=effectScope(),V=D.run(()=>{let u=computed({get:()=>e.value,set(v){x(),e.value=v,S();}}),p=computed(()=>d.value.$dirty&&(!b.value.length||b.value.every(v=>v.$dirty))),f=computed(()=>d.value.$anyDirty||b.value.some(v=>v.$anyDirty)),I=computed(()=>d.value.$invalid||b.value.some(v=>v.$invalid)),w=computed(()=>(te(d.value.$rules)?true:d.value.$correct)&&(!b.value.length||b.value.every(v=>v.$correct||v.$anyDirty&&!v.$invalid))),J=computed(()=>d.value.$error||b.value.some(v=>v.$error)),m=computed(()=>!(I.value||j.value)),j=computed(()=>d.value.$pending||b.value.some(v=>v.$pending)),q=computed(()=>!!b.value.length&&b.value.every(v=>v.$edited)),Z=computed(()=>d.value.$anyEdited||b.value.some(v=>v.$anyEdited)),Q=computed(()=>({$self:d.value.$errors,$each:b.value.map(v=>v.$errors)})),fe=computed(()=>({$self:d.value.$silentErrors,$each:b.value.map(v=>v.$silentErrors)})),ue=computed(()=>A);function T(){h?.collections&&Object.entries(h?.collections).forEach(([v,ee])=>{let se=effectScope();F[v]=se.run(()=>{let oe=ref();return watchEffect(()=>{oe.value=ee(reactive({$dirty:p,$error:J,$silentValue:u,$pending:j,$invalid:I,$correct:w,$errors:Q,$ready:m,$silentErrors:fe,$anyDirty:f,$name:ue,$each:b,$self:d,$value:e,$edited:q,$anyEdited:Z}));}),oe}),l.push(se);});}let F={};return T(),{$dirty:p,$anyDirty:f,$invalid:I,$correct:w,$error:J,$pending:j,$errors:Q,$silentErrors:fe,$ready:m,$name:ue,$shortcuts:F,$silentValue:u,$edited:q,$anyEdited:Z}}),O.isPrimitiveArray.value&&t.value.$each&&console.warn(`${r} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`);}function W(){x&&x(),d.value&&d.value.$unwatch(),b.value&&b.value.forEach(u=>{"$dirty"in u&&u.$unwatch();}),D.stop(),D=effectScope(),P.stop(),P=effectScope(true),l.forEach(u=>u.stop()),l=[];}function K(u=true,p=false){d.value.$touch(u,p),b.value.forEach(f=>{f.$touch(u,p);});}function H(u,p){if(W(),!p)if(u?.toInitialState)e.value=G(R.value);else if(u?.toState){let f;typeof u?.toState=="function"?f=u?.toState():f=u?.toState,R.value=G(f),e.value=G(f);}else R.value=G(e.value);u?.clearExternalErrors&&C(),d.value.$reset(),b.value.forEach(f=>{f.$reset(u,true);}),p||c();}async function le(){let u=e.value;try{return {valid:(await Promise.allSettled([d.value.$validate(),...b.value.map(I=>I.$validate())])).every(I=>I.status==="fulfilled"?I.value.valid===!0:!1),data:u}}catch{return {valid:false,data:u}}}function C(){d.value.$clearExternalErrors(),b.value.forEach(u=>{u.$clearExternalErrors();});}function z(u=true){let p=b.value.map(f=>{if(jt(f))return f.$extractDirtyFields(u)});return u&&p.every(f=>te(f))&&(p=[]),p}let{$shortcuts:ge,...ce}=V;return reactive({$self:d,...ce,...ge,$each:b,$value:e,$validate:le,$unwatch:W,$watch:N,$touch:K,$reset:H,$extractDirtyFields:z,$clearExternalErrors:C})}function Le({rulesDef:e,state:t,path:n="",rootRules:r,externalErrors:a,schemaErrors:o,rootSchemaErrors:s,validationGroups:i,initialState:g,fieldName:R,...h}){let A=effectScope(),D,V=[],P=null,O=null,l=null,$=null;async function x(u=true){let p=Object.entries(e.value),f=Object.fromEntries(p.filter(([m,j])=>!!j).map(([m,j])=>{if(j){let q=toRef(t.value??{},m),Z=toRef(()=>j),Q=toRef(a?.value??{},m),fe=computed(()=>o?.value?.[m]),ue=toRef(g?.value??{},m);return [m,xe({state:q,rulesDef:Z,path:n?`${n}.${m}`:m,externalErrors:Q,schemaErrors:fe,initialState:ue,fieldName:m,...h})]}return []})),I=Object.fromEntries(Object.entries(unref(a)??{}).filter(([m,j])=>!(m in e.value)&&!!j).map(([m])=>{let j=toRef(t.value??{},m),q=toRef(a?.value??{},m),Z=computed(()=>o?.value?.[m]),Q=toRef(g?.value??{},m);return [m,xe({state:j,rulesDef:computed(()=>({})),path:n?`${n}.${m}`:m,externalErrors:q,schemaErrors:Z,initialState:Q,fieldName:m,...h})]})),w=Object.fromEntries(Object.entries(unref(o)??{}).map(([m])=>{let j=toRef(t.value??{},m),q=toRef(a?.value??{},m),Z=computed(()=>o?.value?.[m]),Q=toRef(g?.value??{},m);return [m,xe({state:j,rulesDef:computed(()=>({})),path:n?`${n}.${m}`:m,externalErrors:q,schemaErrors:Z,initialState:Q,fieldName:m,...h})]})),J=Object.fromEntries(Object.entries(t.value??{}).filter(([m])=>!(m in e.value)&&!(m in(I??{}))&&!(m in(w??{}))).map(([m])=>{let j=toRef(t.value??{},m),q=toRef(a?.value??{},m),Z=computed(()=>o?.value?.[m]),Q=toRef(g?.value??{},m);return [m,xe({state:j,rulesDef:computed(()=>({})),path:n?`${n}.${m}`:m,externalErrors:q,schemaErrors:Z,initialState:Q,fieldName:m,...h})]}));d.value={...f,...I,...w,...J},u&&y();}let d=h.storage.getFieldsEntry(n);x();function b(){a&&(l=watch(a,()=>{S(),x();},{deep:true}));}function c(){$=watch(t,()=>{S(),x(),K(true,true);},{flush:"sync"});}function y(){r&&(P?.(),P=watch(r,()=>{S(),x();},{deep:true,flush:"pre"}),b()),s&&(O?.(),O=watch(s,()=>{S(),x();},{deep:true,flush:"post"})),c(),D=A.run(()=>{let u=computed({get:()=>t.value,set(B){S(),t.value=B,x();}}),p=computed(()=>!!Object.entries(d.value).length&&Object.entries(d.value).every(([B,M])=>M?.$dirty)),f=computed(()=>Object.entries(d.value).some(([B,M])=>M?.$anyDirty)),I=computed(()=>!!Object.entries(d.value).length&&Object.entries(d.value).some(([B,M])=>M?.$invalid)),w=computed(()=>{let B=Object.entries(d.value).filter(([M,k])=>nt(k)?!k.$inactive:true);return B.length?B.every(([M,k])=>h.schemaMode?k.$correct:nt(k)?"required"in k.$rules&&k.$rules.required.$active?k?.$correct:!k.$invalid&&!k.$pending:k?.$correct):false}),J=computed(()=>!!Object.entries(d.value).length&&Object.entries(d.value).some(([B,M])=>M?.$error)),m=computed(()=>unref(h.options.rewardEarly)!=null?unref(h.options.rewardEarly):false),j=computed(()=>unref(h.options.autoDirty)!=null?unref(h.options.autoDirty):!m.value),q=computed(()=>j.value?f.value&&!(I.value||Q.value):!(I.value||Q.value)),Z=ref(false),Q=computed(()=>Z.value||Object.entries(d.value).some(([B,M])=>M?.$pending)),fe=computed(()=>Object.fromEntries(Object.entries(d.value).map(([B,M])=>[B,M?.$errors]))),ue=computed(()=>Object.fromEntries(Object.entries(d.value).map(([B,M])=>[B,M?.$silentErrors]))),T=computed(()=>!!Object.entries(d.value).length&&Object.entries(d.value).every(([B,M])=>M?.$edited)),F=computed(()=>Object.entries(d.value).some(([B,M])=>M?.$anyEdited)),v=computed(()=>R);function ee(){h.shortcuts?.nested&&Object.entries(h.shortcuts.nested).forEach(([B,M])=>{let k=effectScope();oe[B]=k.run(()=>{let we=ref();return watchEffect(()=>{we.value=M(reactive({$dirty:p,$value:t,$silentValue:u,$error:J,$pending:Q,$invalid:I,$correct:w,$ready:q,$anyDirty:f,$name:v,$silentErrors:ue,$errors:fe,$fields:d,$edited:T,$anyEdited:F}));}),we}),V.push(k);});}let se=computed({get:()=>i?Object.fromEntries(Object.entries(i?.(d.value)??{}).map(([B,M])=>M.length?[B,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$correct"].map(k=>[k,Dt(M,k)])),...Object.fromEntries(["$errors","$silentErrors"].map(k=>[k,Ct(M,k)]))}]:[])):{},set(){}}),oe={};return ee(),{$dirty:p,$anyDirty:f,$invalid:I,$correct:w,$error:J,$pending:Q,$errors:fe,$silentErrors:ue,$ready:q,$name:v,$shortcuts:oe,$groups:se,$silentValue:u,$edited:T,$anyEdited:F,$localPending:Z}});}function S(){P?.(),l?.(),$?.(),O?.(),V=[],D={},d.value&&Object.entries(d.value).forEach(([u,p])=>{p.$unwatch();});}function N(){Object.entries(d.value).forEach(([u,p])=>{p.$clearExternalErrors();});}function W(u,p){if(l?.(),S(),!p)if(u?.toInitialState)t.value=G({...g.value??{}});else if(u?.toState){let f;typeof u?.toState=="function"?f=u?.toState():f=u?.toState,g.value=G(f),t.value=G(f);}else g.value=G(t.value);Object.values(d.value).forEach(f=>{f.$reset(u,true);}),u?.clearExternalErrors&&N(),b(),p||x();}function K(u=true,p=false){Object.values(d.value).forEach(f=>{f.$touch(u,p);});}function H(u){return u.filter(([p,f])=>_(f)?!(f&&typeof f=="object"&&"_null"in f)&&!te(f):Array.isArray(f)?f.length:true)}function le(u=true){let p=Object.entries(d.value).map(([f,I])=>[f,I.$extractDirtyFields(u)]);return u&&(p=H(p)),Object.fromEntries(p)}async function C(){try{if(h.schemaMode)return h.onValidate?(K(!1),D.$localPending.value=!0,h.onValidate()):{valid:!1,data:t.value};{let u=t.value;return {valid:(await Promise.allSettled(Object.values(d.value).map(I=>I.$validate()))).every(I=>I.status==="fulfilled"?I.value.valid===!0:!1),data:u}}}catch{return {valid:false,data:t.value}}finally{D.$localPending.value=false;}}let{$shortcuts:z,$localPending:ge,...ce}=D;return reactive({...ce,...z,$fields:d,$value:t,$reset:W,$touch:K,$validate:C,$unwatch:S,$watch:y,$clearExternalErrors:N,$extractDirtyFields:le})}function xe({rulesDef:e,...t}){if(Mt(e,t.state,t.schemaMode))return Gt({rulesDef:e,...t});if(Ge(t.state,e)){if(Ne(t.state))return Le({rulesDef:e,...t});{let r=effectScope().run(()=>{let s=toRef(t.state.value?t.state:ref({}));return watch(()=>t.state.value,i=>{s.value=i;},{deep:true}),watch(s,i=>{t.state.value=i;},{deep:true}),{fakeState:s}}),{state:a,...o}=t;return Le({rulesDef:e,...o,state:r.fakeState})}}else if(Ue(e))return Ee({rulesDef:e,...t})}function Oe({initialState:e,options:t,scopeRules:n,state:r,customRules:a,shortcuts:o,schemaErrors:s,schemaMode:i=false,onValidate:g}){let R=tt(),h=ref();return Ge(r,n)?h.value=Le({rootRules:n,rulesDef:n,state:r,customMessages:a?.(),storage:R,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:o,fieldName:"root",path:"",schemaErrors:s,rootSchemaErrors:s,schemaMode:i,onValidate:g}):Ue(n)&&(h.value=Ee({rulesDef:n,state:r,customMessages:a?.(),storage:R,options:t,externalErrors:t.externalErrors,initialState:e,shortcuts:o,fieldName:"root",path:"",schemaMode:i,schemaErrors:s,onValidate:g})),getCurrentScope()&&onScopeDispose(()=>{h.value?.$unwatch();}),reactive({regle:h})}function He(e,t,n){let r={autoDirty:t?.autoDirty,lazy:t?.lazy,rewardEarly:t?.rewardEarly,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange};function a(o,s,i){let g=isRef(s)?s:computed(typeof s=="function"?s:()=>s),R={...r,...i},h=isRef(o)?o:ref(o),A=ref(_(h.value)?{...G(h.value)}:G(h.value));return {r$:Oe({scopeRules:g,state:h,options:R,initialState:A,customRules:e,shortcuts:n}).regle}}return a}var ze=He();function Je(){function e(t,n){return n}return e}var ft=Je();function Lt({rules:e,modifiers:t,shortcuts:n}){let r=He(e,t,n);r.__config={rules:e,modifiers:t,shortcuts:n};let a=Je();return {useRegle:r,inferRules:a}}function Ht(e,{rules:t,modifiers:n,shortcuts:r}){let a=e.__config??{},o=()=>({...a.rules?.(),...t?.()}),s=a.modifiers&&n?Ye(a.modifiers,n):n,i=a.shortcuts&&r?Ye(a.shortcuts,r):r,g=He(o,s,i);g.__config={rules:o,modifiers:s,shortcuts:i};let R=Je();return {useRegle:g,inferRules:R}}function Ve(e,t){let n=t??false,r=computed({get:()=>n?Object.values(e).map(c=>c.$value):Object.fromEntries(Object.entries(e).map(([c,y])=>[c,y.$value])),set:c=>{n||typeof c=="object"&&Object.entries(c).forEach(([y,S])=>e[y].$value=S);}}),a=computed({get:()=>Object.fromEntries(Object.entries(e).map(([c,y])=>[c,y.$silentValue])),set:c=>{typeof c=="object"&&Object.entries(c).forEach(([y,S])=>e[y].$silentValue=S);}}),o=computed(()=>{let c=Object.entries(e);return !!c.length&&c.every(([y,S])=>S?.$dirty)}),s=computed(()=>Object.entries(e).some(([c,y])=>y?.$anyDirty)),i=computed(()=>Object.entries(e).some(([c,y])=>y?.$invalid)),g=computed(()=>{let c=Object.entries(e);return !!c.length&&c.every(([y,S])=>S?.$correct||S.$anyDirty&&!S.$invalid)}),R=computed(()=>Object.entries(e).some(([c,y])=>y?.$error)),h=computed(()=>{let c=Object.entries(e);return !!c.length&&c.every(([y,S])=>S?.$ready)}),A=computed(()=>Object.entries(e).some(([c,y])=>y?.$pending)),D=computed(()=>n?Object.entries(e).map(([c,y])=>y.$errors):Object.fromEntries(Object.entries(e).map(([c,y])=>[c,y.$errors]))),V=computed(()=>n?Object.entries(e).map(([c,y])=>y.$silentErrors):Object.fromEntries(Object.entries(e).map(([c,y])=>[c,y.$silentErrors]))),P=computed(()=>{let c=Object.entries(e);return !!c.length&&c.every(([y,S])=>S?.$edited)}),O=computed(()=>Object.entries(e).some(([c,y])=>y?.$anyEdited)),l=computed(()=>n?Object.values(e):e);function $(c){Object.values(e).forEach(y=>{y.$reset(c);});}function E(){Object.values(e).forEach(c=>{c.$touch();});}function x(c=true){return Object.values(e).map(y=>y.$extractDirtyFields(c))}function d(){Object.values(e).forEach(c=>{c.$clearExternalErrors();});}async function b(){try{let c=r.value;return {valid:(await Promise.allSettled(Object.values(e).map(N=>N.$validate()))).every(N=>N.status==="fulfilled"?N.value.valid===!0:!1),data:c}}catch{return {valid:false,data:r.value}}}return reactive({...!n&&{$silentValue:a},$errors:D,$silentErrors:V,$instances:l,$value:r,$dirty:o,$anyDirty:s,$invalid:i,$correct:g,$error:R,$pending:A,$ready:h,$edited:P,$anyEdited:O,$reset:$,$touch:E,$validate:b,$extractDirtyFields:x,$clearExternalErrors:d})}function Jt(e){function t(n){let r=computed(()=>toValue(n));s();let a=ref(i(e.value)),o=reactive({r$:a});function s(){r.value&&!e.value[r.value]&&(e.value[r.value]={});}watch(r,s),watch(e,g=>{a.value=i(g);},{deep:true});function i(g){if(r.value){let R=g[r.value]??{};return Ve(R,true)}else return Ve(g["~~global"]??{},true)}return {r$:o.r$}}return {useCollectScope:t}}function Yt(e,t){let n=t??ze;return {useScopedRegle:(a,o,s)=>{let{namespace:i,...g}=s??{},R=computed(()=>toValue(i)),h=ref(`${Object.keys(e.value).length+1}-${he()}`),A=computed(()=>`instance-${h.value}`),{r$:D}=n(a,o,g);P(),wt(V),watch(R,(O,l)=>{V(l),P();}),getCurrentInstance()&&onMounted(()=>{let O=getCurrentInstance();typeof window<"u"&&O?.proxy?.$el?.parentElement&&document.documentElement&&!document.documentElement.contains(O?.proxy?.$el?.parentElement)&&V();});function V(O){let l=O??R.value;l?e.value[l]&&delete e.value[l][A.value]:e.value["~~global"][A.value]&&delete e.value["~~global"][A.value];}function P(){R.value?(e.value[R.value]||(e.value[R.value]={}),e.value[R.value][A.value]=D):(e.value["~~global"]||(e.value["~~global"]={}),e.value["~~global"][A.value]=D);}return {r$:D,dispose:V,register:P}}}}function Ke(e){let n=(e?.customStore?()=>(e.customStore&&(e.customStore?.value["~~global"]?e.customStore?.value&&(e.customStore.value={"~~global":{}}):e.customStore.value["~~global"]={}),e.customStore):Pt(()=>ref({"~~global":{}})))(),{useScopedRegle:r}=Yt(n,e?.customUseRegle),{useCollectScope:a}=Jt(n);return {useScopedRegle:r,useCollectScope:a}}var {useCollectScope:Rt,useScopedRegle:dt}=Ke();function Zt(e,t,n){let r=computed(()=>toValue(e)[t]);return computed(()=>{let o=n.find(s=>{if(s[t]&&"literal"in s[t]){let i=s[t].literal;if(me(i))return unref(i._params?.[0])===r.value}});if(o)return o;{let s=n.find(i=>_(i[t])&&!Object.keys(i[t]).some(g=>g==="literal"));return s||{}}})}function pt(e,t,n){return _(e[t])&&"$value"in e[t]&&e[t]?.$value===n}function er(e,t,n){let r=isRef(e)?toRef(e.value,"$fields"):toRef(e,"$fields"),a=ref();return watch(r,()=>{pt(r.value,t,n)?a.value=r.value:a.value=void 0;},{}),a}
2
- export{Xe as InternalRuleType,et as createRule,Ke as createScopedUseRegle,Zt as createVariant,Lt as defineRegleConfig,Ht as extendRegleConfig,lt as flatErrors,ft as inferRules,Ve as mergeRegles,pt as narrowVariant,re as unwrapRuleParameters,Rt as useCollectScope,ze as useRegle,Oe as useRootStorage,dt as useScopedRegle,er as variantToRef};
1
+ import {effectScope,computed,toValue,ref,watch,getCurrentInstance,onMounted,reactive,getCurrentScope,onScopeDispose,isRef,shallowRef,toRef,unref,watchEffect,version}from'vue';function te(e,t=true){return e==null?true:e instanceof Date?isNaN(e.getTime()):e.constructor.name=="File"||e.constructor.name=="FileList"?e.size<=0:Array.isArray(e)?t?e.length===0:false:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}var xt=Symbol("regle-rule");function nr(e){if(typeof e.source.flags=="string")return e.source.flags;{let t=[];return e.global&&t.push("g"),e.ignoreCase&&t.push("i"),e.multiline&&t.push("m"),e.sticky&&t.push("y"),e.unicode&&t.push("u"),t.join("")}}function G(e){let t=e,n={}.toString.call(e).slice(8,-1);if(n=="Set"&&(t=new Set([...e].map(r=>G(r)))),n=="Map"&&(t=new Map([...e].map(r=>[G(r[0]),G(r[1])]))),n=="Date"&&(t=new Date(e.getTime())),n=="RegExp"&&(t=RegExp(e.source,nr(e))),n=="Array"||n=="Object"){t=Array.isArray(e)?[]:{};for(let r in e)t[r]=G(e[r]);}return t}function _(e){return e&&(e instanceof Date||e.constructor.name=="File"||e.constructor.name=="FileList")?false:typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ye(e,...t){for(var n=[].slice.call(arguments),r,a=n.length;r=n[a-1],a--;)if(!r||typeof r!="object"&&typeof r!="function")throw new Error("expected object, got "+r);for(var o=n[0],s=n.slice(1),i=s.length,a=0;a<i;a++){var g=s[a];for(var R in g)o[R]=g[R];}return o}function Qe(e){let t=Object.prototype.toString.call(e);return e==null?new Date(NaN):e instanceof Date||typeof e=="object"&&t==="[object Date]"?new Date(e.getTime()):typeof e=="number"||t==="[object Number]"?new Date(e):typeof e=="string"||t==="[object String]"?new Date(e):new Date(NaN)}function _e(e,t,n){let r,a=(...o)=>new Promise(s=>{clearTimeout(r),r=setTimeout(()=>{r=void 0,Promise.resolve(e.apply(this,[...o])).then(s);},t);});return a.cancel=()=>{clearTimeout(r),r=void 0;},a}var Xe={Inline:"__inline",Async:"__async"};function Dt(e,t){return e.some(n=>n[t])}function Ct(e,t){return e.reduce((n,r)=>{let a=r[t]||[];return n.concat(a)},[])}function re(e){try{return e.map(t=>toValue(t))}catch{return []}}function It(e){return e.map(t=>t instanceof Function?computed(t):isRef(t)?t:toRef(()=>t))}function Ot(e){let r=e.toString().replace(/\/\/.*$/gm,"").replace(/\/\*[\s\S]*?\*\//g,"").match(/^(?:async\s*)?(?:function\b.*?\(|\((.*?)\)|(\w+))\s*=>|\((.*?)\)\s*=>|function.*?\((.*?)\)|\((.*?)\)/);return r?(r[0]||r[1]||r[2]||r[3]||r[4]||"").split(",").map(s=>s.trim()).filter(s=>s.length>0).length:0}function Ze(e,...t){let{validator:n,type:r}=e,a=r===Xe.Async||n.constructor.name==="AsyncFunction";return {...{validator(i,...g){return e.validator(i,...re(g.length?g:t))},message(i){return typeof e.message=="function"?e.message({...i,$params:re(i?.$params?.length?i.$params:t)}):e.message},active(i){return typeof e.active=="function"?e.active({...i,$params:re(i?.$params?.length?i.$params:t)}):e.active??true},tooltip(i){return typeof e.tooltip=="function"?e.tooltip({...i,$params:re(i?.$params?.length?i.$params:t)}):e.tooltip??[]},exec(i){let g=e.validator(i,...re(t)),R;return g instanceof Promise?g.then(h=>(R=h,typeof R=="object"&&"$valid"in R?R.$valid:typeof R=="boolean"?R:false)):(R=g,typeof R=="object"&&"$valid"in R?R.$valid:typeof R=="boolean"?R:false)}},_validator:e.validator,_message:e.message,_active:e.active,_tooltip:e.tooltip,_type:e.type,_message_patched:false,_tooltip_patched:false,_async:a,_params:It(t),_brand:xt}}function et(e){if(typeof e.validator=="function"){let n=Ze(e,...[]),r=e.async??e.validator.constructor.name==="AsyncFunction";if(Ot(e.validator)>1){let a=function(...o){return Ze(e,...o)};return a.validator=n.validator,a.message=n.message,a.active=n.active,a.tooltip=n.tooltip,a.type=n.type,a.exec=n.exec,a._validator=n.validator,a._message=n.message,a._active=n.active,a._tooltip=n.tooltip,a._type=e.type,a._message_pacthed=false,a._tooltip_pacthed=false,a._async=r,a}else return n}throw new Error("[createRule] validator must be a function")}function tt(){let e=shallowRef(new Map),t=shallowRef(new Map),n=shallowRef(new Map),r=shallowRef(new Map),a=shallowRef(new Map),o=shallowRef(new Map);function s($){let E=t.value.get($);if(E)return E;{let x=ref({});return t.value.set($,x),x}}function i($){let E=n.value.get($);if(E)return E;{let x=ref([]);return n.value.set($,x),x}}function g($,E,x){o.value.set(`${$}-${E}`,x);}function R($,E){return o.value.get(`${$}-${E}`)}function h($,E){$&&E!=null&&o.value.delete(`${$}-${E}`);}function V($,E){r.value.set($,E);}function D($){return r.value.get($)??false}function A($,E){e.value.set($,E);}function P($,E){let x=e.value.get($);return x?O(E,x)?{valid:true}:{valid:false}:void 0}function O($,E){let x=Object.keys(E),d=Object.keys($);return d.length!==x.length||!d.every(c=>x.includes(c))?false:d.every(c=>{let y=$[c],S=E[c];return !S||!y||typeof y=="function"||typeof S=="function"||typeof y=="number"||typeof y=="boolean"?false:y._params?y._params?.every((N,W)=>{if(typeof S=="number"||typeof S=="boolean")return true;{let K=re(S._params),H=re(y._params);return K?.[W]===H?.[W]}}):true})}function l($){let E=a.value.get($);if(E)return E;{let x=ref(false),d=ref(true),b=ref({}),c=ref(false);return a.value.set($,{$pending:x,$valid:d,$metadata:b,$validating:c}),{$pending:x,$valid:d,$metadata:b,$validating:c}}}return getCurrentScope()&&onScopeDispose(()=>{e.value.clear(),t.value.clear(),n.value.clear(),r.value.clear(),a.value.clear(),o.value.clear();}),{addRuleDeclEntry:A,setDirtyEntry:V,checkRuleDeclEntry:P,getDirtyState:D,trySetRuleStatusRef:l,getFieldsEntry:s,getCollectionsEntry:i,getArrayStatus:R,addArrayStatus:g,deleteArrayStatus:h,arrayStatusStorage:o}}function Ne(e){return _(e.value)}function rt(e,t,n){let r=effectScope(),a;return e instanceof Function?a=r.run(()=>e(t,n??0)):a=e,{scope:r,unwrapped:a}}var Pe={LessThan:-1,EqualTo:0,GreaterThan:1};function Rr(e,t){let n=String(e).split("."),r=String(t).split(".");for(let a=0;a<Math.min(n.length,r.length);a++){let o=Number(n[a]),s=Number(r[a]);if(o>s)return Pe.GreaterThan;if(s>o)return Pe.LessThan;if(!isNaN(o)&&isNaN(s))return Pe.GreaterThan;if(isNaN(o)&&!isNaN(s))return Pe.LessThan}return Pe.EqualTo}var ke=Rr(version,"3.5.0")!==-1;function dr(){return Math.floor(Math.random()*Date.now()).toString()}function he(){return typeof window>"u"?dr():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function wt(e){return getCurrentScope()?(onScopeDispose(e),true):false}function Pt(e){let t=false,n,r=effectScope(true);return (...a)=>(t||(n=r.run(()=>e(...a)),t=true),n)}function Ge(e,t){return Ne(e)||_(t.value)&&!te(t.value)&&!Object.entries(t.value).some(([n,r])=>me(r)||typeof r=="function")}function Mt(e,t,n=false){return !!e.value&&_(e.value)&&"$each"in e.value||n&&Array.isArray(t.value)&&t.value.some(_)||Array.isArray(t.value)&&t.value.some(_)}function Ue(e){return !!e.value&&_(e.value)}function me(e){return _(e)&&"_validator"in e}function Me(e){return typeof e.value=="function"?"_validator"in e.value:true}function jt(e){return _(e)&&"$fields"in e}function nt(e){return !!e&&"$rules"in e}function at({field:e,silent:t=false}){return Object.entries(e.$rules??{}).map(([n,r])=>t&&!r.$valid||!r.$valid&&e.$error&&!r.$validating?r.$message:null).filter(n=>!!n).reduce((n,r)=>typeof r=="string"?n?.concat([r]):n?.concat(r),[]).concat(e.$error?e.$externalErrors??[]:[]).concat(e.$error?e.$schemaErrors??[]:[])}function At({field:e}){return Object.entries(e.$rules??{}).map(([t,n])=>n.$tooltip).filter(t=>!!t).reduce((t,n)=>typeof n=="string"?t?.concat([n]):t?.concat(n),[])}function Vt(e){return _(e)&&"$each"in e}function lt(e,t){let{includePath:n=false}=t??{};if(Array.isArray(e)&&e.every(r=>!_(r)))return e;if(Vt(e)){let r=n?e.$self?.map(o=>({error:o,path:""}))??[]:e.$self??[],a=e.$each?.map(o=>We(o,n))??[];return r?.concat(a.flat())}else return Object.entries(e).map(([r,a])=>We(a,n,[r])).flat()}function We(e,t=false,n){let r=t&&!n?[]:n;if(Array.isArray(e)&&e.every(a=>!_(a)))return t?e.map(a=>({error:a,path:r?.join(".")??""})):e;if(Vt(e)){let a=r?.length?e.$self?.map(s=>({error:s,path:r.join(".")}))??[]:e.$self??[],o=e.$each?.map((s,i)=>We(s,t,r?.concat(i.toString())))??[];return a?.concat(o.flat())}else return Object.entries(e).map(([a,o])=>We(o,t,r?.concat(a))).flat()}function Ft({customMessages:e,rule:t,ruleKey:n,state:r,path:a,storage:o,$debounce:s,modifiers:i}){let g=effectScope(),R={},h,V=ref(false),D=ref(false),{$pending:A,$valid:P,$metadata:O,$validating:l}=o.trySetRuleStatusRef(`${a}.${n}`);function $(){g=effectScope(),R=g.run(()=>{let S=ref(false),N=ref(false),W=ref(true),K=ref(false),H=ref(false),le=computed(()=>({$value:r.value,$error:N.value,$dirty:S.value,$pending:K.value,$correct:H.value,$invalid:W.value,$rule:{$valid:P.value,$invalid:!P.value,$pending:A.value},$params:f.value,...O.value})),C=computed(()=>Me(t)?typeof t.value.active=="function"?t.value.active(le.value):!!t.value.active:true);function z(w){let J="",m=e?e[n]?.[w]:void 0;if(m&&(typeof m=="function"?J=m(le.value):J=m),Me(t)){let j=`_${w}_patched`;m&&!t.value[j]||(typeof t.value[w]=="function"?J=t.value[w](le.value):J=t.value[w]??"");}return J}let ge=computed(()=>{let w=z("message");return te(w)&&(w="This field is not valid"),w}),ce=computed(()=>z("tooltip")),u=computed(()=>Me(t)&&t.value.type?t.value.type:n),p=computed(()=>Me(t)?t.value.validator:t.value),f=computed(()=>typeof t.value=="function"?[]:re(t.value._params??[])),I=computed(()=>`${a}.${u.value}`);return {$active:C,$message:ge,$type:u,$validator:p,$params:f,$path:I,$tooltip:ce,$fieldCorrect:H,$fieldError:N,$fieldDirty:S,$fieldPending:K,$fieldInvalid:W}}),h=watch(R?.$params,()=>{(i.$autoDirty.value||i.$rewardEarly.value&&R.$fieldError.value)&&b();});}$();function E(){P.value=true,R.$fieldDirty.value&&(A.value=true);}async function x(){let S=false;try{let N=R.$validator.value;if(typeof N!="function")return console.error(`${a}: Incorrect rule format, it needs to be either a function or created with "createRule".`),!1;let W=N(r.value,...R.$params.value),K=r.value;E();let H;if(W instanceof Promise?H=await W:H=W,r.value!==K)return !0;if(typeof H=="boolean")S=H;else {let{$valid:le,...C}=H;S=le,O.value=C;}}catch{S=false;}finally{A.value=false;}return S}let d=_e(x,s??200);async function b(){try{l.value=!0;let S=!1;if(D.value=!0,me(t.value)&&t.value._async)S=await d();else {let N=R.$validator.value,W=N(r.value,...R.$params.value);if(W instanceof Promise)console.warn('You used a async validator function on a non-async rule, please use "async await" or the "withAsync" helper');else if(W!=null)if(typeof W=="boolean")S=W;else {let{$valid:K,...H}=W;S=K,O.value=H;}}return P.value=S,S}catch{return false}finally{l.value=false,D.value=false;}}function c(){P.value=true,O.value={},A.value=false,l.value=false,$();}function y(){h(),g.stop(),g=effectScope();}return reactive({...R,$pending:A,$valid:P,$metadata:O,$haveAsync:V,$maybePending:D,$validating:l,$parse:b,$unwatch:y,$watch:$,$reset:c})}function Ee({state:e,rulesDef:t,customMessages:n,path:r,fieldName:a,storage:o,options:s,externalErrors:i,schemaErrors:g,schemaMode:R,onUnwatch:h,$isArray:V,initialState:D,shortcuts:A,onValidate:P}){let O=effectScope(),l,$=[],E,x,d,b,c,y=()=>{};function S(){let T=t.value,F=o.checkRuleDeclEntry(r,T);z.value=Object.fromEntries(Object.entries(T).filter(([v])=>v.startsWith("$"))),K(),C.value=Object.fromEntries(Object.entries(t.value).filter(([v])=>!v.startsWith("$")).map(([v,ee])=>{if(ee){let se=toRef(()=>ee);return [v,Ft({modifiers:{$autoDirty:l.$autoDirty,$rewardEarly:l.$rewardEarly},customMessages:n,rule:se,ruleKey:v,state:e,path:r,storage:o,$debounce:z.value.$debounce})]}return []}).filter(v=>!!v.length)),l.processShortcuts(),N(),F?.valid!=null&&(l.$dirty.value=o.getDirtyState(r),(l.$dirty.value&&l.$autoDirty.value||l.$rewardEarly.value&&l.$error.value)&&y()),o.addRuleDeclEntry(r,T);}function N(){y=l.$debounce.value?_e(le,l.$debounce.value??l.$haveAnyAsyncRule?100:0):le;}function W(){C.value&&Object.entries(C.value).forEach(([T,F])=>{F.$unwatch();}),d(),c?.(),l.$dirty.value&&o.setDirtyEntry(r,l.$dirty.value),E?.(),x?.(),O.stop(),O=effectScope(),$.forEach(T=>T.stop()),$=[],h?.(),b?.();}function K(){C.value&&Object.entries(C.value).forEach(([T,F])=>{F.$watch();}),l=O.run(()=>{let T=ref(false),F=ref(false),v=computed(()=>T.value),ee=computed(()=>z.value.$debounce),se=computed(()=>z.value.$lazy!=null?z.value.$lazy:unref(s.lazy)!=null?unref(s.lazy):false),oe=computed(()=>z.value.$rewardEarly!=null?z.value.$rewardEarly:unref(s.rewardEarly)!=null?unref(s.rewardEarly):false),B=computed(()=>z.value.$clearExternalErrorsOnChange!=null?z.value.$clearExternalErrorsOnChange:unref(s.clearExternalErrorsOnChange)!=null?unref(s.clearExternalErrorsOnChange):true),M=computed(()=>z.value.$autoDirty!=null?z.value.$autoDirty:unref(s.autoDirty)!=null?unref(s.autoDirty):!oe.value),k=computed(()=>Object.entries(C.value).some(([ie,X])=>X.$validating)),we=computed({get:()=>e.value,set(ie){E(),e.value=ie,H();}}),Ve=computed(()=>$e.value&&!ve.value&&T.value),mt=computed(()=>at({field:{$rules:C.value,$error:Ve.value,$externalErrors:i?.value,$schemaErrors:g?.value}})),yt=computed(()=>at({field:{$rules:C.value,$error:Ve.value,$externalErrors:i?.value,$schemaErrors:g?.value},silent:true})),qe=computed(()=>T.value?D.value instanceof Date&&e.value instanceof Date?Qe(D.value).getDate()!==Qe(e.value).getDate():D.value==null?!!e.value:Array.isArray(e.value)&&Array.isArray(D.value)?e.value.length!==D.value.length:D.value!==e.value:false),gt=computed(()=>qe.value),vt=computed(()=>At({field:{$rules:C.value}})),$t=computed(()=>M.value?v.value&&!($e.value||ve.value):!($e.value||ve.value)),ve=computed(()=>F.value||!oe.value?Object.entries(C.value).some(([ie,X])=>X.$pending):false),$e=computed(()=>i?.value?.length||g?.value?.length?true:Fe.value?false:!oe.value||oe.value&&F.value?Object.entries(C.value).some(([ie,X])=>!(X.$valid&&!X.$maybePending)):false),St=computed(()=>a),Fe=computed(()=>!!(te(C.value)&&!R)),Tt=computed(()=>i?.value?.length||Fe.value?false:T.value&&!te(e.value)&&!k.value&&!ve.value?R?!g?.value?.length:Object.values(C.value).some(X=>X.$active)?Object.values(C.value).filter(X=>X.$active).every(X=>X.$valid):false:false),tr=computed(()=>Object.entries(C.value).some(([ie,X])=>X.$haveAsync));function rr(){A?.fields&&Object.entries(A.fields).forEach(([ie,X])=>{let bt=effectScope();ht[ie]=bt.run(()=>{let Et=ref();return watchEffect(()=>{Et.value=X(reactive({$dirty:T,$externalErrors:i?.value??[],$value:e,$silentValue:we,$rules:C,$error:Ve,$pending:ve,$invalid:$e,$correct:Tt,$errors:mt,$ready:$t,$silentErrors:yt,$anyDirty:v,$tooltips:vt,$name:St,$inactive:Fe,$edited:qe,$anyEdited:gt}));}),Et}),$.push(bt);});}let ht={};return watch($e,ie=>{ie||(F.value=false);}),{$error:Ve,$pending:ve,$invalid:$e,$correct:Tt,$debounce:ee,$lazy:se,$errors:mt,$ready:$t,$silentErrors:yt,$rewardEarly:oe,$autoDirty:M,$clearExternalErrorsOnChange:B,$anyDirty:v,$edited:qe,$anyEdited:gt,$name:St,$haveAnyAsyncRule:tr,$shortcuts:ht,$validating:k,$tooltips:vt,$dirty:T,triggerPunishment:F,processShortcuts:rr,$silentValue:we,$inactive:Fe}}),H(),d=watch(l.$dirty,T=>{o.setDirtyEntry(r,T),Object.values(C.value).forEach(F=>{F.$fieldDirty=T;});}),c=watch([l.$error,l.$correct,l.$invalid,l.$pending],()=>{Object.values(C.value).forEach(T=>{T.$fieldError=l.$error.value,T.$fieldInvalid=l.$invalid.value,T.$fieldPending=l.$pending.value,T.$fieldCorrect=l.$correct.value;});}),x=watch(l.$invalid,T=>{l.$rewardEarly.value&&!T&&(l.triggerPunishment.value=false);}),b=watch(l.$haveAnyAsyncRule,N);}function H(){E=watch(e,()=>{l.$autoDirty.value&&(l.$dirty.value||(l.$dirty.value=true)),t.value instanceof Function&&S(),(l.$autoDirty.value||l.$rewardEarly.value&&l.$error.value)&&y(),l.$rewardEarly.value!==true&&l.$clearExternalErrorsOnChange.value&&f();},{deep:V?true:ke?1:true});}function le(){Object.values(C.value).forEach(T=>{T.$parse();});}let C=ref({}),z=ref({});S();function ge(T,F){if(f(),l.$dirty.value=false,l.triggerPunishment.value=false,o.setDirtyEntry(r,false),!F)if(T?.toInitialState)e.value=G(D);else if(T?.toState){let v;typeof T?.toState=="function"?v=T?.toState():v=T?.toState,D.value=G(v),e.value=G(v);}else D.value=_(e.value)?G(e.value):Array.isArray(e.value)?[...e.value]:e.value;T?.clearExternalErrors&&f(),F||Object.entries(C.value).forEach(([v,ee])=>{ee.$reset();}),!l.$lazy.value&&l.$autoDirty.value&&Object.values(C.value).forEach(v=>v.$parse());}function ce(T=true,F=false){l.$dirty.value||(l.$dirty.value=true),F&&T?(l.$autoDirty.value||l.$rewardEarly.value&&l.$error.value)&&y():T&&y();}async function u(){try{if(R)return P?(ce(!1),P()):{valid:!1,data:e.value};let T=e.value;if(l.triggerPunishment.value=!0,!l.$dirty.value)l.$dirty.value=!0;else if(l.$autoDirty.value&&l.$dirty.value&&!l.$pending.value)return {valid:!l.$error.value,data:T};return R?{valid:!g?.value?.length,data:T}:te(C.value)?{valid:!0,data:T}:{valid:(await Promise.allSettled(Object.entries(C.value).map(([ee,se])=>se.$parse()))).every(ee=>ee.status==="fulfilled"?ee.value===!0:!1),data:T}}catch{return {valid:false,data:e.value}}}function p(T=true){return l.$dirty.value?e.value:T?{_null:true}:null}function f(){i?.value?.length&&(i.value=[]);}!l.$lazy.value&&!l.$dirty.value&&l.$autoDirty.value&&y();let{$shortcuts:I,$validating:w,$autoDirty:J,$rewardEarly:m,$clearExternalErrorsOnChange:j,$haveAnyAsyncRule:q,$debounce:Z,$lazy:Q,triggerPunishment:fe,...ue}=l;return reactive({...ue,$externalErrors:i,$value:e,$rules:C,...I,$reset:ge,$touch:ce,$validate:u,$unwatch:W,$watch:K,$extractDirtyFields:p,$clearExternalErrors:f})}function it({$id:e,path:t,index:n,options:r,storage:a,stateValue:o,customMessages:s,rules:i,externalErrors:g,schemaErrors:R,initialState:h,shortcuts:V,fieldName:D,schemaMode:A}){let P=i.$key?i.$key:he(),O=`${t}.${String(P)}`;typeof o.value=="object"&&o.value!=null&&(o.value.$id?O=`${t}.${o.value.$id}`:Object.defineProperties(o.value,{$id:{value:P,enumerable:false,configurable:false,writable:false}}));let l=toRef(g?.value??[],n),$=computed(()=>R?.value?.[n]),E=xe({state:o,rulesDef:toRef(()=>i),customMessages:s,path:O,storage:a,options:r,externalErrors:l,schemaErrors:$,initialState:h,shortcuts:V,fieldName:D,schemaMode:A});if(E){let x=o.value?.$id;E.$id=x??String(P),a.addArrayStatus(e,E.$id,E);}return E}function Gt({state:e,rulesDef:t,customMessages:n,path:r,storage:a,options:o,externalErrors:s,schemaErrors:i,schemaMode:g,initialState:R,shortcuts:h,fieldName:V}){let D=effectScope(),A,P=effectScope(),O,l=[];if(!Array.isArray(e.value)&&!t.value.$each)return;let $=ref(),E=ref(e.value),x,d=ref({}),b=a.getCollectionsEntry(r);O=P.run(()=>({isPrimitiveArray:computed(()=>Array.isArray(e.value)&&e.value.length?e.value.every(p=>typeof p!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(p=>me(p)||typeof p=="function"):false)})),c(),N();function c(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?($.value=he(),Object.defineProperties(e.value,{$id:{value:$.value,enumerable:false,configurable:false,writable:false}})):e.value?.$id&&($.value=e.value.$id)),E.value=d.value.$value,Array.isArray(e.value)&&!O.isPrimitiveArray.value?b.value=e.value.filter(u=>typeof u=="object").map((u,p)=>{let{scope:f,unwrapped:I}=rt(t.value.$each,toRef(()=>u),p);f&&l.push(f);let w=toRef(R.value??[],p),J=toRef(s?.value??{},"$each"),m=computed(()=>i?.value?.$each),j=it({$id:$.value,path:r,customMessages:n,rules:I??{},stateValue:toRef(()=>u),index:p,options:o,storage:a,externalErrors:J,schemaErrors:m,initialState:w,shortcuts:h,fieldName:V,schemaMode:g});return j||null}).filter(u=>!!u):b.value=[],d.value=Ee({state:e,rulesDef:t,customMessages:n,path:r,storage:a,options:o,externalErrors:toRef(s?.value??{},"$self"),schemaErrors:computed(()=>i?.value?.$self),$isArray:true,initialState:R,shortcuts:h,fieldName:V,schemaMode:g});}function y(){if(Array.isArray(e.value)&&!O.isPrimitiveArray.value){let u=G(b.value);b.value=e.value.filter(p=>typeof p=="object").map((p,f)=>{let I=toRef(()=>p);if(p.$id&&b.value.find(w=>w.$id===p.$id)){let w=a.getArrayStatus($.value,p.$id);return w?(w.$value=I,w):null}else {let{scope:w,unwrapped:J}=rt(t.value.$each,I,f);w&&l.push(w);let m=toRef(s?.value??{},"$each"),j=computed(()=>i?.value?.$each??[]),q=it({$id:$.value,path:r,customMessages:n,rules:J??{},stateValue:I,index:f,options:o,storage:a,externalErrors:m,schemaErrors:j,initialState:toRef(R.value??[],f),shortcuts:h,fieldName:V,schemaMode:g});return q||null}}).filter(p=>!!p),u.filter(p=>!e.value?.find(f=>p.$id===f.$id)).forEach((p,f)=>{a.deleteArrayStatus($.value,f.toString());});}else b.value=[];}function S(){x=watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?c():y();},{deep:ke?1:true,flush:"pre"});}function N(){S(),D=effectScope(),A=D.run(()=>{let u=computed({get:()=>e.value,set(v){x(),e.value=v,S();}}),p=computed(()=>d.value.$dirty&&(!b.value.length||b.value.every(v=>v.$dirty))),f=computed(()=>d.value.$anyDirty||b.value.some(v=>v.$anyDirty)),I=computed(()=>d.value.$invalid||b.value.some(v=>v.$invalid)),w=computed(()=>(te(d.value.$rules)?true:d.value.$correct)&&(!b.value.length||b.value.every(v=>v.$correct||v.$anyDirty&&!v.$invalid))),J=computed(()=>d.value.$error||b.value.some(v=>v.$error)),m=computed(()=>!(I.value||j.value)),j=computed(()=>d.value.$pending||b.value.some(v=>v.$pending)),q=computed(()=>!!b.value.length&&b.value.every(v=>v.$edited)),Z=computed(()=>d.value.$anyEdited||b.value.some(v=>v.$anyEdited)),Q=computed(()=>({$self:d.value.$errors,$each:b.value.map(v=>v.$errors)})),fe=computed(()=>({$self:d.value.$silentErrors,$each:b.value.map(v=>v.$silentErrors)})),ue=computed(()=>V);function T(){h?.collections&&Object.entries(h?.collections).forEach(([v,ee])=>{let se=effectScope();F[v]=se.run(()=>{let oe=ref();return watchEffect(()=>{oe.value=ee(reactive({$dirty:p,$error:J,$silentValue:u,$pending:j,$invalid:I,$correct:w,$errors:Q,$ready:m,$silentErrors:fe,$anyDirty:f,$name:ue,$each:b,$self:d,$value:e,$edited:q,$anyEdited:Z}));}),oe}),l.push(se);});}let F={};return T(),{$dirty:p,$anyDirty:f,$invalid:I,$correct:w,$error:J,$pending:j,$errors:Q,$silentErrors:fe,$ready:m,$name:ue,$shortcuts:F,$silentValue:u,$edited:q,$anyEdited:Z}}),O.isPrimitiveArray.value&&t.value.$each&&console.warn(`${r} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`);}function W(){x&&x(),d.value&&d.value.$unwatch(),b.value&&b.value.forEach(u=>{"$dirty"in u&&u.$unwatch();}),D.stop(),D=effectScope(),P.stop(),P=effectScope(true),l.forEach(u=>u.stop()),l=[];}function K(u=true,p=false){d.value.$touch(u,p),b.value.forEach(f=>{f.$touch(u,p);});}function H(u,p){if(W(),!p)if(u?.toInitialState)e.value=G(R.value);else if(u?.toState){let f;typeof u?.toState=="function"?f=u?.toState():f=u?.toState,R.value=G(f),e.value=G(f);}else R.value=G(e.value);u?.clearExternalErrors&&C(),d.value.$reset(),b.value.forEach(f=>{f.$reset(u,true);}),p||c();}async function le(){let u=e.value;try{return {valid:(await Promise.allSettled([d.value.$validate(),...b.value.map(I=>I.$validate())])).every(I=>I.status==="fulfilled"?I.value.valid===!0:!1),data:u}}catch{return {valid:false,data:u}}}function C(){d.value.$clearExternalErrors(),b.value.forEach(u=>{u.$clearExternalErrors();});}function z(u=true){let p=b.value.map(f=>{if(jt(f))return f.$extractDirtyFields(u)});return u&&p.every(f=>te(f))&&(p=[]),p}let{$shortcuts:ge,...ce}=A;return reactive({$self:d,...ce,...ge,$each:b,$value:e,$validate:le,$unwatch:W,$watch:N,$touch:K,$reset:H,$extractDirtyFields:z,$clearExternalErrors:C})}function Le({rulesDef:e,state:t,path:n="",rootRules:r,externalErrors:a,schemaErrors:o,rootSchemaErrors:s,validationGroups:i,initialState:g,fieldName:R,...h}){let V=effectScope(),D,A=[],P=null,O=null,l=null,$=null;async function x(u=true){let p=Object.entries(e.value),f=Object.fromEntries(p.filter(([m,j])=>!!j).map(([m,j])=>{if(j){let q=toRef(t.value??{},m),Z=toRef(()=>j),Q=toRef(a?.value??{},m),fe=computed(()=>o?.value?.[m]),ue=toRef(g?.value??{},m);return [m,xe({state:q,rulesDef:Z,path:n?`${n}.${m}`:m,externalErrors:Q,schemaErrors:fe,initialState:ue,fieldName:m,...h})]}return []})),I=Object.fromEntries(Object.entries(unref(a)??{}).filter(([m,j])=>!(m in e.value)&&!!j).map(([m])=>{let j=toRef(t.value??{},m),q=toRef(a?.value??{},m),Z=computed(()=>o?.value?.[m]),Q=toRef(g?.value??{},m);return [m,xe({state:j,rulesDef:computed(()=>({})),path:n?`${n}.${m}`:m,externalErrors:q,schemaErrors:Z,initialState:Q,fieldName:m,...h})]})),w=Object.fromEntries(Object.entries(unref(o)??{}).map(([m])=>{let j=toRef(t.value??{},m),q=toRef(a?.value??{},m),Z=computed(()=>o?.value?.[m]),Q=toRef(g?.value??{},m);return [m,xe({state:j,rulesDef:computed(()=>({})),path:n?`${n}.${m}`:m,externalErrors:q,schemaErrors:Z,initialState:Q,fieldName:m,...h})]})),J=Object.fromEntries(Object.entries(t.value??{}).filter(([m])=>!(m in e.value)&&!(m in(I??{}))&&!(m in(w??{}))).map(([m])=>{let j=toRef(t.value??{},m),q=toRef(a?.value??{},m),Z=computed(()=>o?.value?.[m]),Q=toRef(g?.value??{},m);return [m,xe({state:j,rulesDef:computed(()=>({})),path:n?`${n}.${m}`:m,externalErrors:q,schemaErrors:Z,initialState:Q,fieldName:m,...h})]}));d.value={...f,...I,...w,...J},u&&y();}let d=h.storage.getFieldsEntry(n);x();function b(){a&&(l=watch(a,()=>{S(),x();},{deep:true}));}function c(){$=watch(t,()=>{S(),x(),K(true,true);},{flush:"sync"});}function y(){r&&(P?.(),P=watch(r,()=>{S(),x();},{deep:true,flush:"pre"}),b()),s&&(O?.(),O=watch(s,()=>{S(),x();},{deep:true,flush:"post"})),c(),D=V.run(()=>{let u=computed({get:()=>t.value,set(B){S(),t.value=B,x();}}),p=computed(()=>!!Object.entries(d.value).length&&Object.entries(d.value).every(([B,M])=>M?.$dirty)),f=computed(()=>Object.entries(d.value).some(([B,M])=>M?.$anyDirty)),I=computed(()=>!!Object.entries(d.value).length&&Object.entries(d.value).some(([B,M])=>M?.$invalid)),w=computed(()=>{let B=Object.entries(d.value).filter(([M,k])=>nt(k)?!k.$inactive:true);return B.length?B.every(([M,k])=>h.schemaMode?k.$correct:nt(k)?"required"in k.$rules&&k.$rules.required.$active?k?.$correct:!k.$invalid&&!k.$pending:k?.$correct):false}),J=computed(()=>!!Object.entries(d.value).length&&Object.entries(d.value).some(([B,M])=>M?.$error)),m=computed(()=>unref(h.options.rewardEarly)!=null?unref(h.options.rewardEarly):false),j=computed(()=>unref(h.options.autoDirty)!=null?unref(h.options.autoDirty):!m.value),q=computed(()=>j.value?f.value&&!(I.value||Q.value):!(I.value||Q.value)),Z=ref(false),Q=computed(()=>Z.value||Object.entries(d.value).some(([B,M])=>M?.$pending)),fe=computed(()=>Object.fromEntries(Object.entries(d.value).map(([B,M])=>[B,M?.$errors]))),ue=computed(()=>Object.fromEntries(Object.entries(d.value).map(([B,M])=>[B,M?.$silentErrors]))),T=computed(()=>!!Object.entries(d.value).length&&Object.entries(d.value).every(([B,M])=>M?.$edited)),F=computed(()=>Object.entries(d.value).some(([B,M])=>M?.$anyEdited)),v=computed(()=>R);function ee(){h.shortcuts?.nested&&Object.entries(h.shortcuts.nested).forEach(([B,M])=>{let k=effectScope();oe[B]=k.run(()=>{let we=ref();return watchEffect(()=>{we.value=M(reactive({$dirty:p,$value:t,$silentValue:u,$error:J,$pending:Q,$invalid:I,$correct:w,$ready:q,$anyDirty:f,$name:v,$silentErrors:ue,$errors:fe,$fields:d,$edited:T,$anyEdited:F}));}),we}),A.push(k);});}let se=computed({get:()=>i?Object.fromEntries(Object.entries(i?.(d.value)??{}).map(([B,M])=>M.length?[B,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$correct"].map(k=>[k,Dt(M,k)])),...Object.fromEntries(["$errors","$silentErrors"].map(k=>[k,Ct(M,k)]))}]:[])):{},set(){}}),oe={};return ee(),{$dirty:p,$anyDirty:f,$invalid:I,$correct:w,$error:J,$pending:Q,$errors:fe,$silentErrors:ue,$ready:q,$name:v,$shortcuts:oe,$groups:se,$silentValue:u,$edited:T,$anyEdited:F,$localPending:Z}});}function S(){P?.(),l?.(),$?.(),O?.(),A=[],D={},d.value&&Object.entries(d.value).forEach(([u,p])=>{p.$unwatch();});}function N(){Object.entries(d.value).forEach(([u,p])=>{p.$clearExternalErrors();});}function W(u,p){if(l?.(),S(),!p)if(u?.toInitialState)t.value=G({...g.value??{}});else if(u?.toState){let f;typeof u?.toState=="function"?f=u?.toState():f=u?.toState,g.value=G(f),t.value=G(f);}else g.value=G(t.value);Object.values(d.value).forEach(f=>{f.$reset(u,true);}),u?.clearExternalErrors&&N(),b(),p||x();}function K(u=true,p=false){Object.values(d.value).forEach(f=>{f.$touch(u,p);});}function H(u){return u.filter(([p,f])=>_(f)?!(f&&typeof f=="object"&&"_null"in f)&&!te(f):Array.isArray(f)?f.length:true)}function le(u=true){let p=Object.entries(d.value).map(([f,I])=>[f,I.$extractDirtyFields(u)]);return u&&(p=H(p)),Object.fromEntries(p)}async function C(){try{if(h.schemaMode)return h.onValidate?(K(!1),D.$localPending.value=!0,h.onValidate()):{valid:!1,data:t.value};{let u=t.value;return {valid:(await Promise.allSettled(Object.values(d.value).map(I=>I.$validate()))).every(I=>I.status==="fulfilled"?I.value.valid===!0:!1),data:u}}}catch{return {valid:false,data:t.value}}finally{D.$localPending.value=false;}}let{$shortcuts:z,$localPending:ge,...ce}=D;return reactive({...ce,...z,$fields:d,$value:t,$reset:W,$touch:K,$validate:C,$unwatch:S,$watch:y,$clearExternalErrors:N,$extractDirtyFields:le})}function xe({rulesDef:e,...t}){if(Mt(e,t.state,t.schemaMode))return Gt({rulesDef:e,...t});if(Ge(t.state,e)){if(Ne(t.state))return Le({rulesDef:e,...t});{let r=effectScope().run(()=>{let s=toRef(t.state.value?t.state:ref({}));return watch(()=>t.state.value,i=>{s.value=i;},{deep:true}),watch(s,i=>{t.state.value=i;},{deep:true}),{fakeState:s}}),{state:a,...o}=t;return Le({rulesDef:e,...o,state:r.fakeState})}}else if(Ue(e))return Ee({rulesDef:e,...t})}function Oe({initialState:e,options:t,scopeRules:n,state:r,customRules:a,shortcuts:o,schemaErrors:s,schemaMode:i=false,onValidate:g}){let R=tt(),h=ref();return Ge(r,n)?h.value=Le({rootRules:n,rulesDef:n,state:r,customMessages:a?.(),storage:R,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:o,fieldName:"root",path:"",schemaErrors:s,rootSchemaErrors:s,schemaMode:i,onValidate:g}):Ue(n)&&(h.value=Ee({rulesDef:n,state:r,customMessages:a?.(),storage:R,options:t,externalErrors:t.externalErrors,initialState:e,shortcuts:o,fieldName:"root",path:"",schemaMode:i,schemaErrors:s,onValidate:g})),getCurrentScope()&&onScopeDispose(()=>{h.value?.$unwatch();}),reactive({regle:h})}function He(e,t,n){let r={autoDirty:t?.autoDirty,lazy:t?.lazy,rewardEarly:t?.rewardEarly,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange};function a(o,s,i){let g=isRef(s)?s:computed(typeof s=="function"?s:()=>s),R={...r,...i},h=isRef(o)?o:ref(o),V=ref(_(h.value)?{...G(h.value)}:G(h.value));return {r$:Oe({scopeRules:g,state:h,options:R,initialState:V,customRules:e,shortcuts:n}).regle}}return a}var ze=He();function Je(){function e(t,n){return n}return e}var ft=Je();function Lt({rules:e,modifiers:t,shortcuts:n}){let r=He(e,t,n);r.__config={rules:e,modifiers:t,shortcuts:n};let a=Je();return {useRegle:r,inferRules:a}}function Ht(e,{rules:t,modifiers:n,shortcuts:r}){let a=e.__config??{},o=()=>({...a.rules?.(),...t?.()}),s=a.modifiers&&n?Ye(a.modifiers,n):n,i=a.shortcuts&&r?Ye(a.shortcuts,r):r,g=He(o,s,i);g.__config={rules:o,modifiers:s,shortcuts:i};let R=Je();return {useRegle:g,inferRules:R}}function Ae(e,t){let n=t??false,r=computed({get:()=>n?Object.values(e).map(c=>c.$value):Object.fromEntries(Object.entries(e).map(([c,y])=>[c,y.$value])),set:c=>{n||typeof c=="object"&&Object.entries(c).forEach(([y,S])=>e[y].$value=S);}}),a=computed({get:()=>Object.fromEntries(Object.entries(e).map(([c,y])=>[c,y.$silentValue])),set:c=>{typeof c=="object"&&Object.entries(c).forEach(([y,S])=>e[y].$silentValue=S);}}),o=computed(()=>{let c=Object.entries(e);return !!c.length&&c.every(([y,S])=>S?.$dirty)}),s=computed(()=>Object.entries(e).some(([c,y])=>y?.$anyDirty)),i=computed(()=>Object.entries(e).some(([c,y])=>y?.$invalid)),g=computed(()=>{let c=Object.entries(e);return !!c.length&&c.every(([y,S])=>S?.$correct||S.$anyDirty&&!S.$invalid)}),R=computed(()=>Object.entries(e).some(([c,y])=>y?.$error)),h=computed(()=>{let c=Object.entries(e);return !!c.length&&c.every(([y,S])=>S?.$ready)}),V=computed(()=>Object.entries(e).some(([c,y])=>y?.$pending)),D=computed(()=>n?Object.entries(e).map(([c,y])=>y.$errors):Object.fromEntries(Object.entries(e).map(([c,y])=>[c,y.$errors]))),A=computed(()=>n?Object.entries(e).map(([c,y])=>y.$silentErrors):Object.fromEntries(Object.entries(e).map(([c,y])=>[c,y.$silentErrors]))),P=computed(()=>{let c=Object.entries(e);return !!c.length&&c.every(([y,S])=>S?.$edited)}),O=computed(()=>Object.entries(e).some(([c,y])=>y?.$anyEdited)),l=computed(()=>n?Object.values(e):e);function $(c){Object.values(e).forEach(y=>{y.$reset(c);});}function E(){Object.values(e).forEach(c=>{c.$touch();});}function x(c=true){return Object.values(e).map(y=>y.$extractDirtyFields(c))}function d(){Object.values(e).forEach(c=>{c.$clearExternalErrors();});}async function b(){try{let c=r.value;return {valid:(await Promise.allSettled(Object.values(e).map(N=>N.$validate()))).every(N=>N.status==="fulfilled"?N.value.valid===!0:!1),data:c}}catch{return {valid:false,data:r.value}}}return reactive({...!n&&{$silentValue:a},$errors:D,$silentErrors:A,$instances:l,$value:r,$dirty:o,$anyDirty:s,$invalid:i,$correct:g,$error:R,$pending:V,$ready:h,$edited:P,$anyEdited:O,$reset:$,$touch:E,$validate:b,$extractDirtyFields:x,$clearExternalErrors:d})}function Jt(e){function t(n){let r=computed(()=>toValue(n));s();let a=ref(i(e.value)),o=reactive({r$:a});function s(){r.value&&!e.value[r.value]&&(e.value[r.value]={});}watch(r,s),watch(e,g=>{a.value=i(g);},{deep:true});function i(g){if(r.value){let R=g[r.value]??{};return Ae(R,true)}else return Ae(g["~~global"]??{},true)}return {r$:o.r$}}return {useCollectScope:t}}function Yt(e,t){let n=t??ze;return {useScopedRegle:(a,o,s)=>{let{namespace:i,...g}=s??{},R=computed(()=>toValue(i)),h=ref(`${Object.keys(e.value).length+1}-${he()}`),V=computed(()=>`instance-${h.value}`),{r$:D}=n(a,o,g);P(),wt(A),watch(R,(O,l)=>{A(l),P();}),getCurrentInstance()&&onMounted(()=>{let O=getCurrentInstance();typeof window<"u"&&O?.proxy?.$el?.parentElement&&document.documentElement&&!document.documentElement.contains(O?.proxy?.$el?.parentElement)&&A();});function A(O){let l=O??R.value;l?e.value[l]&&delete e.value[l][V.value]:e.value["~~global"][V.value]&&delete e.value["~~global"][V.value];}function P(){R.value?(e.value[R.value]||(e.value[R.value]={}),e.value[R.value][V.value]=D):(e.value["~~global"]||(e.value["~~global"]={}),e.value["~~global"][V.value]=D);}return {r$:D,dispose:A,register:P}}}}function Ke(e){let n=(e?.customStore?()=>(e.customStore&&(e.customStore?.value["~~global"]?e.customStore?.value&&(e.customStore.value={"~~global":{}}):e.customStore.value["~~global"]={}),e.customStore):Pt(()=>ref({"~~global":{}})))(),{useScopedRegle:r}=Yt(n,e?.customUseRegle),{useCollectScope:a}=Jt(n);return {useScopedRegle:r,useCollectScope:a}}var {useCollectScope:Rt,useScopedRegle:dt}=Ke();function Zt(e,t,n){let r=computed(()=>toValue(e)[t]);return computed(()=>{let o=n.find(s=>{if(s[t]&&"literal"in s[t]){let i=s[t].literal;if(me(i))return unref(i._params?.[0])===r.value}});if(o)return o;{let s=n.find(i=>_(i[t])&&!Object.keys(i[t]).some(g=>g==="literal"));return s||{}}})}function pt(e,t,n){return _(e[t])&&"$value"in e[t]&&e[t]?.$value===n}function er(e,t,n){let r=isRef(e)?toRef(e.value,"$fields"):toRef(e,"$fields"),a=ref();return watch(r,()=>{pt(r.value,t,n)?a.value=r.value:a.value=void 0;},{}),a}
2
+ export{Xe as InternalRuleType,et as createRule,Ke as createScopedUseRegle,Zt as createVariant,Lt as defineRegleConfig,Ht as extendRegleConfig,lt as flatErrors,ft as inferRules,Ae as mergeRegles,pt as narrowVariant,re as unwrapRuleParameters,Rt as useCollectScope,ze as useRegle,Oe as useRootStorage,dt as useScopedRegle,er as variantToRef};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@regle/core",
3
- "version": "1.1.0-beta.4",
3
+ "version": "1.1.0-beta.5",
4
4
  "description": "Headless form validation library for Vue 3",
5
5
  "peerDependencies": {
6
6
  "pinia": ">=2.2.5",