@regle/core 0.5.12 → 0.5.14

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.
@@ -77,8 +77,6 @@ function isDate(value) {
77
77
  let possibleDate = null;
78
78
  if (value instanceof Date) {
79
79
  possibleDate = value;
80
- } else if (typeof value === "number" && !isNaN(value)) {
81
- possibleDate = new Date(value);
82
80
  } else if (typeof value === "string") {
83
81
  const date = new Date(value);
84
82
  if (date.toString() === "Invalid Date") {
@@ -92,6 +90,22 @@ function isDate(value) {
92
90
  }
93
91
  }
94
92
 
93
+ // ../shared/utils/toDate.ts
94
+ function toDate(argument) {
95
+ const argStr = Object.prototype.toString.call(argument);
96
+ if (argument == null) {
97
+ return /* @__PURE__ */ new Date(NaN);
98
+ } else if (argument instanceof Date || typeof argument === "object" && argStr === "[object Date]") {
99
+ return new Date(argument.getTime());
100
+ } else if (typeof argument === "number" || argStr === "[object Number]") {
101
+ return new Date(argument);
102
+ } else if (typeof argument === "string" || argStr === "[object String]") {
103
+ return new Date(argument);
104
+ } else {
105
+ return /* @__PURE__ */ new Date(NaN);
106
+ }
107
+ }
108
+
95
109
  // src/types/rules/rule.internal.types.ts
96
110
  var InternalRuleType = /* @__PURE__ */ ((InternalRuleType2) => {
97
111
  InternalRuleType2["Inline"] = "__inline";
@@ -436,7 +450,7 @@ function isNestedRulesDef(state, rules) {
436
450
  return isRefObject(state) || isObject(rules.value) && !isEmpty(rules.value) && !Object.entries(rules.value).some(([key, rule]) => isRuleDef(rule) || typeof rule === "function");
437
451
  }
438
452
  function isCollectionRulesDef(rules, state) {
439
- return !!rules.value && "$each" in rules.value || Array.isArray(state.value);
453
+ return !!rules.value && isObject(rules.value) && "$each" in rules.value || Array.isArray(state.value);
440
454
  }
441
455
  function isValidatorRulesDef(rules) {
442
456
  return !!rules.value && isObject(rules.value);
@@ -868,7 +882,13 @@ function createReactiveFieldStatus({
868
882
  const $edited = vue.computed(() => {
869
883
  if ($dirty.value) {
870
884
  if (isDate(initialState.value) && isDate(state.value)) {
871
- return initialState.value.getDate() !== state.value.getDate();
885
+ return toDate(initialState.value).getDate() !== toDate(state.value).getDate();
886
+ }
887
+ if (initialState.value == null) {
888
+ return !!state.value;
889
+ }
890
+ if (Array.isArray(state.value) && Array.isArray(initialState.value)) {
891
+ return state.value.length !== initialState.value.length;
872
892
  }
873
893
  return initialState.value !== state.value;
874
894
  }
@@ -912,7 +932,7 @@ function createReactiveFieldStatus({
912
932
  } else if (isEmpty($rules.value)) {
913
933
  return false;
914
934
  } else if (!$rewardEarly2.value || $rewardEarly2.value && triggerPunishment.value) {
915
- return Object.entries($rules.value).some(([key, ruleResult]) => {
935
+ return Object.entries($rules.value).some(([_, ruleResult]) => {
916
936
  return !ruleResult.$valid;
917
937
  });
918
938
  }
@@ -1058,6 +1078,7 @@ function createReactiveFieldStatus({
1058
1078
  scopeState.$dirty.value = false;
1059
1079
  scopeState.triggerPunishment.value = false;
1060
1080
  storage.setDirtyEntry(path, false);
1081
+ initialState.value = isObject(state.value) ? cloneDeep(state.value) : Array.isArray(state.value) ? [...state.value] : state.value;
1061
1082
  Object.entries($rules.value).forEach(([_, rule]) => {
1062
1083
  rule.$reset();
1063
1084
  });
@@ -1195,7 +1216,7 @@ function createCollectionElement({
1195
1216
  storage,
1196
1217
  options,
1197
1218
  externalErrors: vue.toRef(externalErrors?.value ?? [], index),
1198
- initialState: vue.computed(() => initialState.value?.[index]),
1219
+ initialState,
1199
1220
  shortcuts,
1200
1221
  fieldName
1201
1222
  });
@@ -1278,6 +1299,7 @@ function createReactiveCollectionStatus({
1278
1299
  if (scope2) {
1279
1300
  collectionScopes.push(scope2);
1280
1301
  }
1302
+ const initialStateRef = vue.toRef(initialState.value ?? [], index);
1281
1303
  const element = createCollectionElement({
1282
1304
  $id: $id.value,
1283
1305
  path,
@@ -1288,7 +1310,7 @@ function createReactiveCollectionStatus({
1288
1310
  options,
1289
1311
  storage,
1290
1312
  externalErrors: vue.toRef(externalErrors?.value ?? {}, `$each`),
1291
- initialState: vue.computed(() => initialState.value?.[index]),
1313
+ initialState: initialStateRef,
1292
1314
  shortcuts,
1293
1315
  fieldName
1294
1316
  });
@@ -1342,7 +1364,7 @@ function createReactiveCollectionStatus({
1342
1364
  options,
1343
1365
  storage,
1344
1366
  externalErrors: vue.toRef(externalErrors?.value ?? {}, `$each`),
1345
- initialState: vue.computed(() => initialState.value?.[index]),
1367
+ initialState: vue.toRef(initialState.value ?? [], index),
1346
1368
  shortcuts,
1347
1369
  fieldName
1348
1370
  });
@@ -1419,7 +1441,7 @@ function createReactiveCollectionStatus({
1419
1441
  });
1420
1442
  });
1421
1443
  const $edited = vue.computed(() => {
1422
- return $fieldStatus.value.$edited && !!$eachStatus.value.length && $eachStatus.value.every((statusOrField) => {
1444
+ return !!$eachStatus.value.length && $eachStatus.value.every((statusOrField) => {
1423
1445
  return statusOrField.$edited;
1424
1446
  });
1425
1447
  });
@@ -1625,7 +1647,7 @@ function createReactiveNestedStatus({
1625
1647
  const stateRef = vue.toRef(state.value, statePropKey);
1626
1648
  const statePropRulesRef = vue.toRef(() => statePropRules);
1627
1649
  const $externalErrors = vue.toRef(externalErrors?.value ?? {}, statePropKey);
1628
- const initialStateRef = vue.computed(() => initialState?.value?.[statePropKey]);
1650
+ const initialStateRef = vue.toRef(initialState?.value ?? {}, statePropKey);
1629
1651
  return [
1630
1652
  statePropKey,
1631
1653
  createReactiveChildrenStatus({
@@ -1645,7 +1667,7 @@ function createReactiveNestedStatus({
1645
1667
  const externalRulesStatus = Object.fromEntries(
1646
1668
  Object.entries(vue.unref(externalErrors) ?? {}).filter(([key, errors]) => !(key in rulesDef.value) && !!errors).map(([key]) => {
1647
1669
  const stateRef = vue.toRef(state.value, key);
1648
- const initialStateRef = vue.computed(() => initialState?.value?.[key]);
1670
+ const initialStateRef = vue.toRef(initialState?.value ?? {}, key);
1649
1671
  return [
1650
1672
  key,
1651
1673
  createReactiveChildrenStatus({
@@ -1663,7 +1685,7 @@ function createReactiveNestedStatus({
1663
1685
  const statesWithNoRules = Object.fromEntries(
1664
1686
  Object.entries(state.value).filter(([key]) => !(key in rulesDef.value) && !(key in (externalRulesStatus.value ?? {}))).map(([key]) => {
1665
1687
  const stateRef = vue.toRef(state.value, key);
1666
- const initialStateRef = vue.computed(() => initialState?.value?.[key]);
1688
+ const initialStateRef = vue.toRef(initialState?.value ?? {}, key);
1667
1689
  return [
1668
1690
  key,
1669
1691
  createReactiveChildrenStatus({
@@ -1694,7 +1716,7 @@ function createReactiveNestedStatus({
1694
1716
  Object.values($fields.value).forEach((statusOrField) => {
1695
1717
  statusOrField.$reset();
1696
1718
  });
1697
- commonArgs.onReset?.();
1719
+ initialState.value = { ...cloneDeep(state.value) };
1698
1720
  define$WatchExternalErrors();
1699
1721
  }
1700
1722
  function $touch(runCommit = true, withConditions = false) {
@@ -2049,8 +2071,7 @@ function useRootStorage({
2049
2071
  scopeRules,
2050
2072
  state,
2051
2073
  customRules,
2052
- shortcuts,
2053
- onReset
2074
+ shortcuts
2054
2075
  }) {
2055
2076
  const storage = useStorage();
2056
2077
  const regle = vue.ref();
@@ -2066,8 +2087,7 @@ function useRootStorage({
2066
2087
  initialState,
2067
2088
  shortcuts,
2068
2089
  fieldName: "root",
2069
- path: "",
2070
- onReset
2090
+ path: ""
2071
2091
  });
2072
2092
  if (vue.getCurrentScope()) {
2073
2093
  vue.onScopeDispose(() => {
@@ -2093,17 +2113,13 @@ function createUseRegleComposable(customRules, options, shortcuts) {
2093
2113
  };
2094
2114
  const processedState = vue.isRef(state) ? state : vue.ref(state);
2095
2115
  const initialState = vue.ref({ ...cloneDeep(processedState.value) });
2096
- function onReset() {
2097
- initialState.value = { ...cloneDeep(processedState.value) };
2098
- }
2099
2116
  const regle = useRootStorage({
2100
2117
  scopeRules,
2101
2118
  state: processedState,
2102
2119
  options: resolvedOptions,
2103
2120
  initialState,
2104
2121
  customRules,
2105
- shortcuts,
2106
- onReset
2122
+ shortcuts
2107
2123
  });
2108
2124
  return {
2109
2125
  r$: regle.regle
@@ -1,4 +1,4 @@
1
- import { MaybeRef, Ref, UnwrapRef, UnwrapNestedRefs, MaybeRefOrGetter, ComputedRef } from 'vue';
1
+ import { MaybeRef, Ref, UnwrapRef, UnwrapNestedRefs, Raw, MaybeRefOrGetter, ComputedRef } from 'vue';
2
2
 
3
3
  type Prettify<T> = T extends infer R ? {
4
4
  [K in keyof R]: R[K];
@@ -530,7 +530,7 @@ interface Regle<TState extends Record<string, any> = EmptyObject, TRules extends
530
530
  *
531
531
  * To see the list of properties: {@link https://www.reglejs.dev/core-concepts/validation-properties}
532
532
  */
533
- r$: RegleRoot<TState, TRules, TValidationGroups, TShortcuts>;
533
+ r$: Raw<RegleRoot<TState, TRules, TValidationGroups, TShortcuts>>;
534
534
  }
535
535
  type isDeepExact<T, U> = {
536
536
  [K in keyof T]-?: CheckDeepExact<NonNullable<T[K]>, K extends keyof U ? NonNullable<U[K]> : never>;
@@ -590,14 +590,13 @@ interface inferRulesFn<TCustomRules extends Partial<AllRulesDeclarations>> {
590
590
  */
591
591
  declare const inferRules: inferRulesFn<Partial<AllRulesDeclarations>>;
592
592
 
593
- declare function useRootStorage({ initialState, options, scopeRules, state, customRules, shortcuts, onReset, }: {
593
+ declare function useRootStorage({ initialState, options, scopeRules, state, customRules, shortcuts, }: {
594
594
  scopeRules: ComputedRef<$InternalReglePartialRuleTree>;
595
595
  state: Ref<Record<string, any>>;
596
596
  options: ResolvedRegleBehaviourOptions;
597
597
  initialState: Ref<Record<string, any>>;
598
598
  customRules?: () => CustomRulesDeclarationTree;
599
599
  shortcuts: RegleShortcutDefinition | undefined;
600
- onReset?: () => void;
601
600
  }): {
602
601
  regle: $InternalRegleStatus | undefined;
603
602
  };
@@ -1,4 +1,4 @@
1
- import { MaybeRef, Ref, UnwrapRef, UnwrapNestedRefs, MaybeRefOrGetter, ComputedRef } from 'vue';
1
+ import { MaybeRef, Ref, UnwrapRef, UnwrapNestedRefs, Raw, MaybeRefOrGetter, ComputedRef } from 'vue';
2
2
 
3
3
  type Prettify<T> = T extends infer R ? {
4
4
  [K in keyof R]: R[K];
@@ -530,7 +530,7 @@ interface Regle<TState extends Record<string, any> = EmptyObject, TRules extends
530
530
  *
531
531
  * To see the list of properties: {@link https://www.reglejs.dev/core-concepts/validation-properties}
532
532
  */
533
- r$: RegleRoot<TState, TRules, TValidationGroups, TShortcuts>;
533
+ r$: Raw<RegleRoot<TState, TRules, TValidationGroups, TShortcuts>>;
534
534
  }
535
535
  type isDeepExact<T, U> = {
536
536
  [K in keyof T]-?: CheckDeepExact<NonNullable<T[K]>, K extends keyof U ? NonNullable<U[K]> : never>;
@@ -590,14 +590,13 @@ interface inferRulesFn<TCustomRules extends Partial<AllRulesDeclarations>> {
590
590
  */
591
591
  declare const inferRules: inferRulesFn<Partial<AllRulesDeclarations>>;
592
592
 
593
- declare function useRootStorage({ initialState, options, scopeRules, state, customRules, shortcuts, onReset, }: {
593
+ declare function useRootStorage({ initialState, options, scopeRules, state, customRules, shortcuts, }: {
594
594
  scopeRules: ComputedRef<$InternalReglePartialRuleTree>;
595
595
  state: Ref<Record<string, any>>;
596
596
  options: ResolvedRegleBehaviourOptions;
597
597
  initialState: Ref<Record<string, any>>;
598
598
  customRules?: () => CustomRulesDeclarationTree;
599
599
  shortcuts: RegleShortcutDefinition | undefined;
600
- onReset?: () => void;
601
600
  }): {
602
601
  regle: $InternalRegleStatus | undefined;
603
602
  };
@@ -1,2 +1,2 @@
1
- 'use strict';var vue=require('vue');function B(e){return e==null?!0:e instanceof Date?isNaN(e.getTime()):Array.isArray(e)?!1:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}var lt=Symbol("regle-rule");function wt(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 J(e){let t=e,r={}.toString.call(e).slice(8,-1);if(r=="Set"&&(t=new Set([...e].map(n=>J(n)))),r=="Map"&&(t=new Map([...e].map(n=>[J(n[0]),J(n[1])]))),r=="Date"&&(t=new Date(e.getTime())),r=="RegExp"&&(t=RegExp(e.source,wt(e))),r=="Array"||r=="Object"){t=Array.isArray(e)?[]:{};for(let n in e)t[n]=J(e[n]);}return t}function re(e){return e instanceof Date||e instanceof File?!1:typeof e=="object"&&e!==null&&!Array.isArray(e)}function Me(e){if(B(e))return !1;try{let t=null;if(e instanceof Date)t=e;else if(typeof e=="number"&&!isNaN(e))t=new Date(e);else if(typeof e=="string"){let r=new Date(e);if(r.toString()==="Invalid Date")return !1;t=r;}return !!t}catch{return !1}}var _e=(r=>(r.Inline="__inline",r.Async="__async",r))(_e||{});function ot(e,t){return e.some(r=>r[t])}function ut(e,t){return e.reduce((r,n)=>{let l=n[t]||[];return r.concat(l)},[])}function Y(e){try{return e.map(t=>vue.toValue(t))}catch{return []}}function it(e){return e.map(t=>t instanceof Function?vue.computed(t):vue.isRef(t)?t:vue.toRef(()=>t))}function st(e){let n=e.toString().replace(/\/\/.*$/gm,"").replace(/\/\*[\s\S]*?\*\//g,"").match(/^(?:async\s*)?(?:function\b.*?\(|\((.*?)\)|(\w+))\s*=>|\((.*?)\)\s*=>|function.*?\((.*?)\)|\((.*?)\)/);return n?(n[0]||n[1]||n[2]||n[3]||n[4]||"").split(",").map(p=>p.trim()).filter(p=>p.length>0).length:0}function Ve(e,...t){let{validator:r,type:n}=e,l=n==="__async"||r.constructor.name==="AsyncFunction";return {...{validator(d,...m){return e.validator(d,...Y(m.length?m:t))},message(d){return typeof e.message=="function"?e.message({...d,$params:Y(d?.$params?.length?d.$params:t)}):e.message},active(d){return typeof e.active=="function"?e.active({...d,$params:Y(d?.$params?.length?d.$params:t)}):e.active??!0},tooltip(d){return typeof e.tooltip=="function"?e.tooltip({...d,$params:Y(d?.$params?.length?d.$params:t)}):e.tooltip??[]},exec(d){let m=e.validator(d,...Y(t)),$;return m instanceof Promise?m.then(h=>($=h,typeof $=="object"&&"$valid"in $?$.$valid:typeof $=="boolean"?$:!1)):($=m,typeof $=="object"&&"$valid"in $?$.$valid:typeof $=="boolean"?$:!1)}},_validator:e.validator,_message:e.message,_active:e.active,_tooltip:e.tooltip,_type:e.type,_message_patched:!1,_tooltip_patched:!1,_async:l,_params:it(t),_brand:lt}}function Ge(e){if(typeof e.validator=="function"){let r=Ve(e,...[]),n=e.async??e.validator.constructor.name==="AsyncFunction";if(st(e.validator)>1){let l=function(...f){return Ve(e,...f)};return l.validator=r.validator,l.message=r.message,l.active=r.active,l.tooltip=r.tooltip,l.type=r.type,l.exec=r.exec,l._validator=r.validator,l._message=r.message,l._active=r.active,l._tooltip=r.tooltip,l._type=e.type,l._message_pacthed=!1,l._tooltip_pacthed=!1,l._async=n,l}else return r}throw new Error("Validator must be a function")}function Ne(){let e=vue.shallowRef(new Map),t=vue.shallowRef(new Map),r=vue.shallowRef(new Map),n=vue.shallowRef(new Map),l=vue.shallowRef(new Map),f=vue.shallowRef(new Map);function p(o){let s=t.value.get(o);if(s)return s;{let i=vue.ref({});return t.value.set(o,i),i}}function d(o){let s=r.value.get(o);if(s)return s;{let i=vue.ref([]);return r.value.set(o,i),i}}function m(o,s,i){f.value.set(`${o}-${s}`,i);}function $(o,s){return f.value.get(`${o}-${s}`)}function h(o,s){o&&s!=null&&f.value.delete(`${o}-${s}`);}function _(o,s){n.value.set(o,s);}function A(o){return n.value.get(o)??!1}function a(o,s){e.value.set(o,s);}function D(o,s){let i=e.value.get(o);return i?C(s,i)?{valid:!0}:{valid:!1}:void 0}function C(o,s){let i=Object.keys(s),W=Object.keys(o);return W.length!==i.length||!W.every(k=>i.includes(k))?!1:W.every(k=>{let w=o[k],b=s[k];return !b||!w||typeof w=="function"||typeof b=="function"||typeof w=="number"||typeof w=="boolean"?!1:w._params?w._params?.every((z,y)=>{if(typeof b=="number"||typeof b=="boolean")return !0;{let I=Y(b._params),U=Y(w._params);return I?.[y]===U?.[y]}}):!0})}function N(o){let s=l.value.get(o);if(s)return s;{let i=vue.ref(!1),W=vue.ref(!0),H=vue.ref({}),k=vue.ref(!1);return l.value.set(o,{$pending:i,$valid:W,$metadata:H,$validating:k}),{$pending:i,$valid:W,$metadata:H,$validating:k}}}return vue.getCurrentScope()&&vue.onScopeDispose(()=>{e.value.clear(),t.value.clear(),r.value.clear(),n.value.clear(),l.value.clear(),f.value.clear();}),{addRuleDeclEntry:a,setDirtyEntry:_,checkRuleDeclEntry:D,getDirtyState:A,trySetRuleStatusRef:N,getFieldsEntry:p,getCollectionsEntry:d,getArrayStatus:$,addArrayStatus:m,deleteArrayStatus:h,arrayStatusStorage:f}}function Te(e){return e.value instanceof Date||e.value instanceof File?!1:re(e.value)}function We(e,t,r){let n=vue.effectScope(),l;return e instanceof Function?l=n.run(()=>e(t,r??0)):l=e,{scope:n,unwrapped:l}}function De(e,t,r){let n,l=(...f)=>new Promise(p=>{clearTimeout(n),n=setTimeout(()=>{n=void 0,Promise.resolve(e.apply(this,[...f])).then(p);},t);});return l.cancel=()=>{clearTimeout(n),n=void 0;},l}function Gt(e,t){let r=String(e).split("."),n=String(t).split(".");for(let l=0;l<Math.min(r.length,n.length);l++){let f=Number(r[l]),p=Number(n[l]);if(f>p)return 1;if(p>f)return -1;if(!isNaN(f)&&isNaN(p))return 1;if(isNaN(f)&&!isNaN(p))return -1}return 0}var xe=Gt(vue.version,"3.5.0")!==-1;function Nt(){return Math.floor(Math.random()*Date.now()).toString()}function Ce(){return typeof window>"u"?Nt():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function ct(e,t){return Te(e)||re(t.value)&&!B(t.value)&&!Object.entries(t.value).some(([r,n])=>$e(n)||typeof n=="function")}function ft(e,t){return !!e.value&&"$each"in e.value||Array.isArray(t.value)}function Rt(e){return !!e.value&&re(e.value)}function $e(e){return re(e)&&"_validator"in e}function ge(e){return typeof e.value!="function"}function pt(e){return re(e)&&"$fields"in e}function dt(e){return !!e&&"$rules"in e}function ke({field:e,silent:t=!1}){return Object.entries(e.$rules??{}).map(([r,n])=>t||!n.$valid&&e.$dirty&&!n.$validating?n.$message:null).filter(r=>!!r).reduce((r,n)=>typeof n=="string"?r?.concat([n]):r?.concat(n),[]).concat(e.$dirty?e.$externalErrors??[]:[])}function yt({field:e}){return Object.entries(e.$rules??{}).map(([t,r])=>r.$tooltip).filter(t=>!!t).reduce((t,r)=>typeof r=="string"?t?.concat([r]):t?.concat(r),[])}function mt({fieldProperties:e,customMessages:t,rule:r,ruleKey:n,state:l,path:f,storage:p,$debounce:d,modifiers:m}){let $=vue.effectScope(),h={},_,A=vue.ref(!1),{$pending:a,$valid:D,$metadata:C,$validating:N}=p.trySetRuleStatusRef(`${f}.${n}`);function o(){$=vue.effectScope(),h=$.run(()=>{let b=vue.computed(()=>({$value:l.value,$error:e.$error.value,$dirty:e.$dirty.value,$pending:e.$pending.value,$valid:e.$valid.value,$invalid:e.$invalid.value,$rule:{$valid:D.value,$invalid:!D.value,$pending:a.value},$params:x.value,...C.value})),z=vue.computed(()=>ge(r)?typeof r.value.active=="function"?r.value.active(b.value):!!r.value.active:!0);function y(u){let c="",g=t?t[n]?.[u]:void 0;if(g&&(typeof g=="function"?c=g(b.value):c=g),ge(r)){let R=`_${u}_patched`;g&&!r.value[R]||(typeof r.value[u]=="function"?c=r.value[u](b.value):c=r.value[u]??"");}return c}let I=vue.computed(()=>{let u=y("message");return B(u)&&(u="This field is not valid"),u}),U=vue.computed(()=>y("tooltip")),ee=vue.computed(()=>ge(r)&&r.value.type?r.value.type:n),ne=vue.computed(()=>ge(r)?r.value.validator:r.value),x=vue.computed(()=>typeof r.value=="function"?[]:Y(r.value._params??[])),P=vue.computed(()=>`${f}.${ee.value}`);return {$active:z,$message:I,$type:ee,$validator:ne,$params:x,$path:P,$tooltip:U}}),_=vue.watch(h?.$params,()=>{(m.$autoDirty.value||m.$rewardEarly.value&&e.$error.value)&&H();});}o();function s(){D.value=!0,e.$dirty.value&&(a.value=!0);}async function i(){let b=!1;try{let z=h.$validator.value,y=z(l.value,...h.$params.value),I=l.value;s();let U;if(y instanceof Promise?U=await y:U=y,l.value!==I)return !0;if(typeof U=="boolean")b=U;else {let{$valid:ee,...ne}=U;b=ee,C.value=ne;}}catch{b=!1;}finally{a.value=!1;}return b}let W=De(i,d??200);async function H(){try{N.value=!0;let b=!1;if($e(r.value)&&r.value._async)b=await W();else {let z=h.$validator.value,y=z(l.value,...h.$params.value);if(y instanceof Promise)console.warn('You used a async validator function on a non-async rule, please use "async await" or the "withAsync" helper');else if(y!=null)if(typeof y=="boolean")b=y;else {let{$valid:I,...U}=y;b=I,C.value=U;}}return D.value=b,b}catch{return !1}finally{N.value=!1;}}function k(){D.value=!0,C.value={},a.value=!1,N.value=!1,o();}function w(){_(),$.stop(),$=vue.effectScope();}return vue.reactive({...h,$pending:a,$valid:D,$metadata:C,$haveAsync:A,$validating:N,$validate:H,$unwatch:w,$watch:o,$reset:k})}function Ie({state:e,rulesDef:t,customMessages:r,path:n,fieldName:l,storage:f,options:p,externalErrors:d,onUnwatch:m,$isArray:$,initialState:h,shortcuts:_}){let A=vue.effectScope(),a,D=[],C,N,o,s,i=()=>{};function W(){let v=t.value,F=f.checkRuleDeclEntry(n,v);I.value=Object.fromEntries(Object.entries(v).filter(([V])=>V.startsWith("$"))),w(),y.value=Object.fromEntries(Object.entries(t.value).filter(([V])=>!V.startsWith("$")).map(([V,X])=>{if(X){let te=vue.toRef(()=>X);return [V,mt({fieldProperties:{$dirty:a.$dirty,$error:a.$error,$invalid:a.$invalid,$pending:a.$pending,$valid:a.$valid},modifiers:{$autoDirty:a.$autoDirty,$rewardEarly:a.$rewardEarly},customMessages:r,rule:te,ruleKey:V,state:e,path:n,storage:f,$debounce:I.value.$debounce})]}return []}).filter(V=>!!V.length)),a.processShortcuts(),H(),F?.valid!=null&&(a.$dirty.value=f.getDirtyState(n),a.$dirty.value&&i()),f.addRuleDeclEntry(n,v);}function H(){i=a.$debounce.value?De(z,a.$debounce.value??a.$haveAnyAsyncRule?100:0):z;}function k(){y.value&&Object.entries(y.value).forEach(([v,F])=>{F.$unwatch();}),o(),a.$dirty.value&&f.setDirtyEntry(n,a.$dirty.value),C?.(),N?.(),A.stop(),A=vue.effectScope(),D.forEach(v=>v.stop()),D=[],m?.(),s?.();}function w(){y.value&&Object.entries(y.value).forEach(([v,F])=>{F.$watch();}),a=A.run(()=>{let v=vue.ref(!1),F=vue.ref(!1),V=vue.computed(()=>v.value),X=vue.computed(()=>I.value.$debounce),te=vue.computed(()=>I.value.$lazy!=null?I.value.$lazy:vue.unref(p.lazy)!=null?vue.unref(p.lazy):!1),S=vue.computed(()=>I.value.$rewardEarly!=null?I.value.$rewardEarly:vue.unref(p.rewardEarly)!=null?vue.unref(p.rewardEarly):!1),O=vue.computed(()=>I.value.$clearExternalErrorsOnChange!=null?I.value.$clearExternalErrorsOnChange:vue.unref(p.clearExternalErrorsOnChange)!=null?vue.unref(p.clearExternalErrorsOnChange):!0),E=vue.computed(()=>I.value.$autoDirty!=null?I.value.$autoDirty:vue.unref(p.autoDirty)!=null?vue.unref(p.autoDirty):!S.value),G=vue.computed(()=>Object.entries(y.value).some(([Z,ae])=>ae.$validating)),me=vue.computed({get:()=>e.value,set(Z){C(),e.value=Z,b();}}),Ae=vue.computed(()=>ce.value&&!ve.value&&v.value),Ye=vue.computed(()=>Ae.value?ke({field:{$dirty:v.value,$externalErrors:d?.value,$rules:y.value}}):[]),Fe=vue.computed(()=>v.value?Me(h.value)&&Me(e.value)?h.value.getDate()!==e.value.getDate():h.value!==e.value:!1),Qe=vue.computed(()=>Fe.value),Xe=vue.computed(()=>yt({field:{$rules:y.value}})),Ze=vue.computed(()=>ke({field:{$dirty:v.value,$externalErrors:d?.value,$rules:y.value},silent:!0})),Ke=vue.computed(()=>E.value?V.value&&!(ce.value||ve.value):!(ce.value||ve.value)),ve=vue.computed(()=>F.value||!S.value?Object.entries(y.value).some(([Z,ae])=>ae.$pending):!1),ce=vue.computed(()=>d?.value?.length?!0:B(y.value)?!1:!S.value||S.value&&F.value?Object.entries(y.value).some(([Z,ae])=>!ae.$valid):!1),et=vue.computed(()=>l),je=vue.computed(()=>!!B(y.value)),tt=vue.computed(()=>d?.value?.length||je.value?!1:v.value&&!B(e.value)&&!G.value?Object.values(y.value).every(Z=>Z.$valid&&Z.$active):!1),Ct=vue.computed(()=>Object.entries(y.value).some(([Z,ae])=>ae.$haveAsync));function It(){_?.fields&&Object.entries(_.fields).forEach(([Z,ae])=>{let nt=vue.effectScope();rt[Z]=nt.run(()=>{let at=vue.ref();return vue.watchEffect(()=>{at.value=ae(vue.reactive({$dirty:v,$externalErrors:d?.value??[],$value:e,$silentValue:me,$rules:y,$error:Ae,$pending:ve,$invalid:ce,$valid:tt,$errors:Ye,$ready:Ke,$silentErrors:Ze,$anyDirty:V,$tooltips:Xe,$name:et,$inactive:je,$edited:Fe,$anyEdited:Qe}));}),at}),D.push(nt);});}let rt={};return vue.watch(ce,Z=>{Z||(F.value=!1);}),{$error:Ae,$pending:ve,$invalid:ce,$valid:tt,$debounce:X,$lazy:te,$errors:Ye,$ready:Ke,$silentErrors:Ze,$rewardEarly:S,$autoDirty:E,$clearExternalErrorsOnChange:O,$anyDirty:V,$edited:Fe,$anyEdited:Qe,$name:et,$haveAnyAsyncRule:Ct,$shortcuts:rt,$validating:G,$tooltips:Xe,$dirty:v,triggerPunishment:F,processShortcuts:It,$silentValue:me,$inactive:je}}),b(),o=vue.watch(a.$dirty,()=>{f.setDirtyEntry(n,a.$dirty.value);}),N=vue.watch(a.$valid,v=>{a.$rewardEarly.value&&v&&(a.triggerPunishment.value=!1);}),s=vue.watch(a.$haveAnyAsyncRule,H);}function b(){C=vue.watch(e,()=>{a.$autoDirty.value&&(a.$dirty.value||(a.$dirty.value=!0)),t.value instanceof Function&&W(),(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&i(),a.$rewardEarly.value!==!0&&a.$clearExternalErrorsOnChange.value&&u();},{deep:$?!0:xe?1:!0});}function z(){Object.values(y.value).forEach(v=>{v.$validate();});}let y=vue.ref({}),I=vue.ref({});W();function U(){u(),a.$dirty.value=!1,a.triggerPunishment.value=!1,f.setDirtyEntry(n,!1),Object.entries(y.value).forEach(([v,F])=>{F.$reset();}),!a.$lazy.value&&a.$autoDirty.value&&Object.values(y.value).forEach(v=>v.$validate());}function ee(v=!0,F=!1){a.$dirty.value||(a.$dirty.value=!0),F&&v?(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&i():v&&i();}async function ne(){try{let v=e.value;if(a.triggerPunishment.value=!0,!a.$dirty.value)a.$dirty.value=!0;else if(a.$autoDirty.value&&a.$dirty.value&&!a.$pending.value)return {result:!a.$error.value,data:v};return B(y.value)?{result:!0,data:v}:{result:(await Promise.allSettled(Object.entries(y.value).map(([X,te])=>te.$validate()))).every(X=>X.status==="fulfilled"?X.value===!0:!1),data:v}}catch{return {result:!1,data:e.value}}}function x(){k(),e.value=J(h),U();}function P(v=!0){return a.$dirty.value?e.value:v?{_null:!0}:null}function u(){d?.value?.length&&(d.value=[]);}!a.$lazy.value&&!a.$dirty.value&&a.$autoDirty.value&&i();let{$shortcuts:c,$validating:g,$autoDirty:R,$rewardEarly:T,$clearExternalErrorsOnChange:q,$haveAnyAsyncRule:K,$debounce:Q,$lazy:le,...ie}=a;return vue.reactive({...ie,$externalErrors:d,$value:e,$rules:y,...c,$reset:U,$touch:ee,$validate:ne,$unwatch:k,$watch:w,$resetAll:x,$extractDirtyFields:P,$clearExternalErrors:u})}function Le({$id:e,path:t,index:r,options:n,storage:l,stateValue:f,customMessages:p,rules:d,externalErrors:m,initialState:$,shortcuts:h,fieldName:_}){let A=d.$key?d.$key:Ce(),a=`${t}.${String(A)}`;typeof f.value=="object"&&f.value!=null&&(f.value.$id?a=`${t}.${f.value.$id}`:Object.defineProperties(f.value,{$id:{value:A,enumerable:!1,configurable:!1,writable:!1}}));let D=be({state:f,rulesDef:vue.toRef(()=>d),customMessages:p,path:a,storage:l,options:n,externalErrors:vue.toRef(m?.value??[],r),initialState:vue.computed(()=>$.value?.[r]),shortcuts:h,fieldName:_});if(D){let C=f.value?.$id;D.$id=C??String(A),l.addArrayStatus(e,D.$id,D);}return D}function St({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:f,externalErrors:p,initialState:d,shortcuts:m,fieldName:$}){let h=vue.effectScope(),_,A=vue.effectScope(),a,D=[];if(!Array.isArray(e.value)&&!t.value.$each)return;let C=vue.ref(),N=vue.ref(e.value),o,s=vue.ref({}),i=l.getCollectionsEntry(n);a=A.run(()=>({isPrimitiveArray:vue.computed(()=>Array.isArray(e.value)&&e.value.length?e.value.some(c=>typeof c!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(c=>$e(c)):!1)})),W(),w();function W(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?(C.value=Ce(),Object.defineProperties(e.value,{$id:{value:C.value,enumerable:!1,configurable:!1,writable:!1}})):e.value?.$id&&(C.value=e.value.$id)),!a.isPrimitiveArray.value&&(N.value=s.value.$value,Array.isArray(e.value)?i.value=e.value.map((u,c)=>{let{scope:g,unwrapped:R}=We(t.value.$each,vue.toRef(()=>u),c);g&&D.push(g);let T=Le({$id:C.value,path:n,customMessages:r,rules:R??{},stateValue:vue.toRef(()=>u),index:c,options:f,storage:l,externalErrors:vue.toRef(p?.value??{},"$each"),initialState:vue.computed(()=>d.value?.[c]),shortcuts:m,fieldName:$});return T||null}).filter(u=>!!u):i.value=[],s.value=Ie({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:f,externalErrors:vue.toRef(p?.value??{},"$self"),$isArray:!0,initialState:d,shortcuts:m,fieldName:$}));}function H(){if(Array.isArray(e.value)){let u=J(i.value);i.value=e.value.map((c,g)=>{let R=vue.toRef(()=>c);if(c.$id&&i.value.find(T=>T.$id===c.$id)){let T=l.getArrayStatus(C.value,c.$id);return T?(T.$value=R,T):null}else {let{scope:T,unwrapped:q}=We(t.value.$each,R,g);if(T&&D.push(T),q){let K=Le({$id:C.value,path:n,customMessages:r,rules:q,stateValue:R,index:g,options:f,storage:l,externalErrors:vue.toRef(p?.value??{},"$each"),initialState:vue.computed(()=>d.value?.[g]),shortcuts:m,fieldName:$});return K||null}}}).filter(c=>!!c),u.filter(c=>!e.value.find(g=>c.$id===g.$id)).forEach((c,g)=>{l.deleteArrayStatus(C.value,g.toString());});}else i.value=[];}function k(){o=vue.watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?W():H();},{deep:xe?1:!0,flush:"pre"});}function w(){k(),h=vue.effectScope(),_=h.run(()=>{let u=vue.computed({get:()=>e.value,set(S){o(),e.value=S,k();}}),c=vue.computed(()=>s.value.$dirty&&!!i.value.length&&i.value.every(S=>S.$dirty)),g=vue.computed(()=>s.value.$anyDirty||i.value.some(S=>S.$anyDirty)),R=vue.computed(()=>s.value.$invalid||i.value.some(S=>S.$invalid)),T=vue.computed(()=>(B(s.value.$rules)?!0:s.value.$valid)&&i.value.every(S=>S.$valid)),q=vue.computed(()=>s.value.$error||i.value.some(S=>S.$error)),K=vue.computed(()=>!(R.value||Q.value)),Q=vue.computed(()=>s.value.$pending||i.value.some(S=>S.$pending)),le=vue.computed(()=>s.value.$edited&&!!i.value.length&&i.value.every(S=>S.$edited)),ie=vue.computed(()=>s.value.$anyEdited||i.value.some(S=>S.$anyEdited)),v=vue.computed(()=>({$self:s.value.$errors,$each:i.value.map(S=>S.$errors)})),F=vue.computed(()=>({$self:s.value.$silentErrors,$each:i.value.map(S=>S.$silentErrors)})),V=vue.computed(()=>$);function X(){m?.collections&&Object.entries(m?.collections).forEach(([S,O])=>{let E=vue.effectScope();te[S]=E.run(()=>{let G=vue.ref();return vue.watchEffect(()=>{G.value=O(vue.reactive({$dirty:c,$error:q,$silentValue:u,$pending:Q,$invalid:R,$valid:T,$errors:v,$ready:K,$silentErrors:F,$anyDirty:g,$name:V,$each:i,$field:s,$value:e,$edited:le,$anyEdited:ie}));}),G}),D.push(E);});}let te={};return X(),{$dirty:c,$anyDirty:g,$invalid:R,$valid:T,$error:q,$pending:Q,$errors:v,$silentErrors:F,$ready:K,$name:V,$shortcuts:te,$silentValue:u,$edited:le,$anyEdited:ie}}),a.isPrimitiveArray.value&&(console.warn(`${n} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`),o());}function b(){o&&o(),s.value&&s.value.$unwatch(),i.value&&i.value.forEach(u=>{"$dirty"in u&&u.$unwatch();}),h.stop(),h=vue.effectScope(),A.stop(),A=vue.effectScope(!0),D.forEach(u=>u.stop()),D=[];}function z(u=!0,c=!1){s.value.$touch(u,c),i.value.forEach(g=>{g.$touch(u,c);});}function y(){s.value.$reset(),i.value.forEach(u=>{u.$reset();});}async function I(){let u=e.value;try{return {result:(await Promise.allSettled([s.value.$validate(),...i.value.map(R=>R.$validate())])).every(R=>R.status==="fulfilled"?R.value.result===!0:!1),data:u}}catch{return {result:!1,data:u}}}function U(){s.value.$clearExternalErrors(),i.value.forEach(u=>{u.$clearExternalErrors();});}function ee(u=!0){let c=i.value.map(g=>{if(pt(g))return g.$extractDirtyFields(u)});return u&&c.every(g=>B(g))&&(c=[]),c}function ne(){b(),e.value=J(d.value),y();}let{$shortcuts:x,...P}=_;return vue.reactive({$field:s,...P,...x,$each:i,$value:e,$validate:I,$unwatch:b,$watch:w,$touch:z,$reset:y,$resetAll:ne,$extractDirtyFields:ee,$clearExternalErrors:U})}function Oe({rulesDef:e,state:t,path:r="",rootRules:n,externalErrors:l,validationGroups:f,initialState:p,fieldName:d,...m}){let $=vue.effectScope(),h,_=[],A=null,a=null,D=null;async function N(x=!0){let P=Object.entries(e.value),u=Object.fromEntries(P.filter(([R,T])=>!!T).map(([R,T])=>{if(T){let q=vue.toRef(t.value,R),K=vue.toRef(()=>T),Q=vue.toRef(l?.value??{},R),le=vue.computed(()=>p?.value?.[R]);return [R,be({state:q,rulesDef:K,path:r?`${r}.${R}`:R,externalErrors:Q,initialState:le,fieldName:R,...m})]}return []})),c=Object.fromEntries(Object.entries(vue.unref(l)??{}).filter(([R,T])=>!(R in e.value)&&!!T).map(([R])=>{let T=vue.toRef(t.value,R),q=vue.computed(()=>p?.value?.[R]);return [R,be({state:T,rulesDef:vue.computed(()=>({})),path:r?`${r}.${R}`:R,externalErrors:vue.toRef(l?.value??{},R),initialState:q,fieldName:R,...m})]})),g=Object.fromEntries(Object.entries(t.value).filter(([R])=>!(R in e.value)&&!(R in(c.value??{}))).map(([R])=>{let T=vue.toRef(t.value,R),q=vue.computed(()=>p?.value?.[R]);return [R,be({state:T,rulesDef:vue.computed(()=>({})),path:r?`${r}.${R}`:R,externalErrors:vue.toRef(l?.value??{},R),initialState:q,fieldName:R,...m})]}));o.value={...u,...c,...g},x&&k();}let o=m.storage.getFieldsEntry(r);N();function s(){a?.(),Object.values(o.value).forEach(x=>{x.$reset();}),m.onReset?.(),W();}function i(x=!0,P=!1){Object.values(o.value).forEach(u=>{u.$touch(x,P);});}function W(){l?.value&&(a=vue.watch(l,()=>{w(),N();},{deep:!0}));}function H(){D=vue.watch(t,()=>{w(),N(),i(!0,!0);},{flush:"sync"});}function k(){n&&(A?.(),A=vue.watch(n,()=>{w(),N();},{deep:!0,flush:"post"}),W()),H(),$=vue.effectScope(),h=$.run(()=>{let x=vue.computed({get:()=>t.value,set(O){w(),t.value=O,N();}}),P=vue.computed(()=>!!Object.entries(o.value).length&&Object.entries(o.value).every(([O,E])=>E?.$dirty)),u=vue.computed(()=>Object.entries(o.value).some(([O,E])=>E?.$anyDirty)),c=vue.computed(()=>Object.entries(o.value).some(([O,E])=>E?.$invalid)),g=vue.computed(()=>{let O=Object.entries(o.value).filter(([E,G])=>dt(G)?!G.$inactive:!0);return O.length?O.every(([E,G])=>G?.$valid):!1}),R=vue.computed(()=>u.value&&!Q.value&&c.value),T=vue.computed(()=>vue.unref(m.options.rewardEarly)!=null?vue.unref(m.options.rewardEarly):!1),q=vue.computed(()=>vue.unref(m.options.autoDirty)!=null?vue.unref(m.options.autoDirty):!T.value),K=vue.computed(()=>q.value?u.value&&!(c.value||Q.value):!(c.value||Q.value)),Q=vue.computed(()=>Object.entries(o.value).some(([O,E])=>E?.$pending)),le=vue.computed(()=>Object.fromEntries(Object.entries(o.value).map(([O,E])=>[O,E?.$errors]))),ie=vue.computed(()=>Object.fromEntries(Object.entries(o.value).map(([O,E])=>[O,E?.$silentErrors]))),v=vue.computed(()=>!!Object.entries(o.value).length&&Object.entries(o.value).every(([O,E])=>E?.$edited)),F=vue.computed(()=>Object.entries(o.value).some(([O,E])=>E?.$anyEdited)),V=vue.computed(()=>d);function X(){m.shortcuts?.nested&&Object.entries(m.shortcuts.nested).forEach(([O,E])=>{let G=vue.effectScope();S[O]=G.run(()=>{let me=vue.ref();return vue.watchEffect(()=>{me.value=E(vue.reactive({$dirty:P,$value:t,$silentValue:x,$error:R,$pending:Q,$invalid:c,$valid:g,$ready:K,$anyDirty:u,$name:V,$silentErrors:ie,$errors:le,$fields:o,$edited:v,$anyEdited:F}));}),me}),_.push(G);});}let te=vue.computed({get:()=>f?Object.fromEntries(Object.entries(f?.(o.value)??{}).map(([O,E])=>E.length?[O,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$valid"].map(G=>[G,ot(E,G)])),...Object.fromEntries(["$errors","$silentErrors"].map(G=>[G,ut(E,G)]))}]:[])):{},set(){}}),S={};return X(),{$dirty:P,$anyDirty:u,$invalid:c,$valid:g,$error:R,$pending:Q,$errors:le,$silentErrors:ie,$ready:K,$name:V,$shortcuts:S,$groups:te,$silentValue:x,$edited:v,$anyEdited:F}});}function w(){A?.(),a?.(),D?.(),_.forEach(x=>x.stop()),_=[],$.stop(),o.value&&Object.entries(o.value).forEach(([x,P])=>{P.$unwatch();});}function b(){Object.entries(o.value).forEach(([x,P])=>{P.$clearExternalErrors();});}async function z(){w(),t.value=J({...p.value??{}}),s(),N();}function y(x){return x.filter(([P,u])=>re(u)?!(u&&typeof u=="object"&&"_null"in u)&&!B(u):Array.isArray(u)?u.length:!0)}function I(x=!0){let P=Object.entries(o.value).map(([u,c])=>[u,c.$extractDirtyFields(x)]);return x&&(P=y(P)),Object.fromEntries(P)}async function U(){try{let x=t.value;return {result:(await Promise.allSettled(Object.values(o.value).map(c=>c.$validate()))).every(c=>c.status==="fulfilled"?c.value.result===!0:!1),data:x}}catch{return {result:!1,data:t.value}}}let{$shortcuts:ee,...ne}=h;return vue.reactive({...ne,...ee,$fields:o,$value:t,$resetAll:z,$reset:s,$touch:i,$validate:U,$unwatch:w,$watch:k,$clearExternalErrors:b,$extractDirtyFields:I})}function be({rulesDef:e,externalErrors:t,...r}){if(ft(e,r.state))return St({rulesDef:e,externalErrors:t,...r});if(ct(r.state,e)){if(Te(r.state))return Oe({rulesDef:e,externalErrors:t,...r});{let n=vue.ref({}),l=vue.watch(n,d=>{l(),r.state.value=d;},{deep:!0}),{state:f,...p}=r;return Oe({rulesDef:e,externalErrors:t,...p,state:n})}}else if(Rt(e))return Ie({rulesDef:e,externalErrors:t,...r})}function ye({initialState:e,options:t,scopeRules:r,state:n,customRules:l,shortcuts:f,onReset:p}){let d=Ne(),m=vue.ref();return m.value=Oe({rootRules:r,rulesDef:r,state:n,customMessages:l?.(),storage:d,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:f,fieldName:"root",path:"",onReset:p}),vue.getCurrentScope()&&vue.onScopeDispose(()=>{m.value?.$unwatch();}),vue.reactive({regle:m})}function ze(e,t,r){let n={autoDirty:t?.autoDirty,lazy:t?.lazy,rewardEarly:t?.rewardEarly,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange};function l(f,p,d){let m=vue.isRef(p)?p:vue.computed(typeof p=="function"?p:()=>p),$={...n,...d},h=vue.isRef(f)?f:vue.ref(f),_=vue.ref({...J(h.value)});function A(){_.value={...J(h.value)};}return {r$:ye({scopeRules:m,state:h,options:$,initialState:_,customRules:e,shortcuts:r,onReset:A}).regle}}return l}var Dt=ze();function qe(){function e(t,r){return r}return e}var Je=qe();function xt({rules:e,modifiers:t,shortcuts:r}){let n=ze(e,t,r),l=qe();return {useRegle:n,inferRules:l}}
2
- exports.InternalRuleType=_e;exports.createRule=Ge;exports.defineRegleConfig=xt;exports.inferRules=Je;exports.unwrapRuleParameters=Y;exports.useRegle=Dt;exports.useRootStorage=ye;
1
+ 'use strict';var vue=require('vue');function L(e){return e==null?!0:e instanceof Date?isNaN(e.getTime()):Array.isArray(e)?!1:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}var ot=Symbol("regle-rule");function Pt(e){if(typeof e.source.flags=="string")return e.source.flags;{let t=[];return e.global&&t.push("g"),e.ignoreCase&&t.push("i"),e.multiline&&t.push("m"),e.sticky&&t.push("y"),e.unicode&&t.push("u"),t.join("")}}function H(e){let t=e,r={}.toString.call(e).slice(8,-1);if(r=="Set"&&(t=new Set([...e].map(n=>H(n)))),r=="Map"&&(t=new Map([...e].map(n=>[H(n[0]),H(n[1])]))),r=="Date"&&(t=new Date(e.getTime())),r=="RegExp"&&(t=RegExp(e.source,Pt(e))),r=="Array"||r=="Object"){t=Array.isArray(e)?[]:{};for(let n in e)t[n]=H(e[n]);}return t}function Q(e){return e instanceof Date||e instanceof File?!1:typeof e=="object"&&e!==null&&!Array.isArray(e)}function Me(e){if(L(e))return !1;try{let t=null;if(e instanceof Date)t=e;else if(typeof e=="string"){let r=new Date(e);if(r.toString()==="Invalid Date")return !1;t=r;}return !!t}catch{return !1}}function _e(e){let t=Object.prototype.toString.call(e);return e==null?new Date(NaN):e instanceof Date||typeof e=="object"&&t==="[object Date]"?new Date(e.getTime()):typeof e=="number"||t==="[object Number]"?new Date(e):typeof e=="string"||t==="[object String]"?new Date(e):new Date(NaN)}var Ve=(r=>(r.Inline="__inline",r.Async="__async",r))(Ve||{});function ut(e,t){return e.some(r=>r[t])}function it(e,t){return e.reduce((r,n)=>{let l=n[t]||[];return r.concat(l)},[])}function J(e){try{return e.map(t=>vue.toValue(t))}catch{return []}}function st(e){return e.map(t=>t instanceof Function?vue.computed(t):vue.isRef(t)?t:vue.toRef(()=>t))}function ct(e){let n=e.toString().replace(/\/\/.*$/gm,"").replace(/\/\*[\s\S]*?\*\//g,"").match(/^(?:async\s*)?(?:function\b.*?\(|\((.*?)\)|(\w+))\s*=>|\((.*?)\)\s*=>|function.*?\((.*?)\)|\((.*?)\)/);return n?(n[0]||n[1]||n[2]||n[3]||n[4]||"").split(",").map(p=>p.trim()).filter(p=>p.length>0).length:0}function Ne(e,...t){let{validator:r,type:n}=e,l=n==="__async"||r.constructor.name==="AsyncFunction";return {...{validator(d,...m){return e.validator(d,...J(m.length?m:t))},message(d){return typeof e.message=="function"?e.message({...d,$params:J(d?.$params?.length?d.$params:t)}):e.message},active(d){return typeof e.active=="function"?e.active({...d,$params:J(d?.$params?.length?d.$params:t)}):e.active??!0},tooltip(d){return typeof e.tooltip=="function"?e.tooltip({...d,$params:J(d?.$params?.length?d.$params:t)}):e.tooltip??[]},exec(d){let m=e.validator(d,...J(t)),$;return m instanceof Promise?m.then(g=>($=g,typeof $=="object"&&"$valid"in $?$.$valid:typeof $=="boolean"?$:!1)):($=m,typeof $=="object"&&"$valid"in $?$.$valid:typeof $=="boolean"?$:!1)}},_validator:e.validator,_message:e.message,_active:e.active,_tooltip:e.tooltip,_type:e.type,_message_patched:!1,_tooltip_patched:!1,_async:l,_params:st(t),_brand:ot}}function Ge(e){if(typeof e.validator=="function"){let r=Ne(e,...[]),n=e.async??e.validator.constructor.name==="AsyncFunction";if(ct(e.validator)>1){let l=function(...f){return Ne(e,...f)};return l.validator=r.validator,l.message=r.message,l.active=r.active,l.tooltip=r.tooltip,l.type=r.type,l.exec=r.exec,l._validator=r.validator,l._message=r.message,l._active=r.active,l._tooltip=r.tooltip,l._type=e.type,l._message_pacthed=!1,l._tooltip_pacthed=!1,l._async=n,l}else return r}throw new Error("Validator must be a function")}function We(){let e=vue.shallowRef(new Map),t=vue.shallowRef(new Map),r=vue.shallowRef(new Map),n=vue.shallowRef(new Map),l=vue.shallowRef(new Map),f=vue.shallowRef(new Map);function p(o){let s=t.value.get(o);if(s)return s;{let i=vue.ref({});return t.value.set(o,i),i}}function d(o){let s=r.value.get(o);if(s)return s;{let i=vue.ref([]);return r.value.set(o,i),i}}function m(o,s,i){f.value.set(`${o}-${s}`,i);}function $(o,s){return f.value.get(`${o}-${s}`)}function g(o,s){o&&s!=null&&f.value.delete(`${o}-${s}`);}function V(o,s){n.value.set(o,s);}function F(o){return n.value.get(o)??!1}function a(o,s){e.value.set(o,s);}function T(o,s){let i=e.value.get(o);return i?C(s,i)?{valid:!0}:{valid:!1}:void 0}function C(o,s){let i=Object.keys(s),G=Object.keys(o);return G.length!==i.length||!G.every(W=>i.includes(W))?!1:G.every(W=>{let w=o[W],b=s[W];return !b||!w||typeof w=="function"||typeof b=="function"||typeof w=="number"||typeof w=="boolean"?!1:w._params?w._params?.every((q,y)=>{if(typeof b=="number"||typeof b=="boolean")return !0;{let I=J(b._params),k=J(w._params);return I?.[y]===k?.[y]}}):!0})}function N(o){let s=l.value.get(o);if(s)return s;{let i=vue.ref(!1),G=vue.ref(!0),z=vue.ref({}),W=vue.ref(!1);return l.value.set(o,{$pending:i,$valid:G,$metadata:z,$validating:W}),{$pending:i,$valid:G,$metadata:z,$validating:W}}}return vue.getCurrentScope()&&vue.onScopeDispose(()=>{e.value.clear(),t.value.clear(),r.value.clear(),n.value.clear(),l.value.clear(),f.value.clear();}),{addRuleDeclEntry:a,setDirtyEntry:V,checkRuleDeclEntry:T,getDirtyState:F,trySetRuleStatusRef:N,getFieldsEntry:p,getCollectionsEntry:d,getArrayStatus:$,addArrayStatus:m,deleteArrayStatus:g,arrayStatusStorage:f}}function Te(e){return e.value instanceof Date||e.value instanceof File?!1:Q(e.value)}function ke(e,t,r){let n=vue.effectScope(),l;return e instanceof Function?l=n.run(()=>e(t,r??0)):l=e,{scope:n,unwrapped:l}}function De(e,t,r){let n,l=(...f)=>new Promise(p=>{clearTimeout(n),n=setTimeout(()=>{n=void 0,Promise.resolve(e.apply(this,[...f])).then(p);},t);});return l.cancel=()=>{clearTimeout(n),n=void 0;},l}function Gt(e,t){let r=String(e).split("."),n=String(t).split(".");for(let l=0;l<Math.min(r.length,n.length);l++){let f=Number(r[l]),p=Number(n[l]);if(f>p)return 1;if(p>f)return -1;if(!isNaN(f)&&isNaN(p))return 1;if(isNaN(f)&&!isNaN(p))return -1}return 0}var xe=Gt(vue.version,"3.5.0")!==-1;function Wt(){return Math.floor(Math.random()*Date.now()).toString()}function Ce(){return typeof window>"u"?Wt():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function ft(e,t){return Te(e)||Q(t.value)&&!L(t.value)&&!Object.entries(t.value).some(([r,n])=>$e(n)||typeof n=="function")}function Rt(e,t){return !!e.value&&Q(e.value)&&"$each"in e.value||Array.isArray(t.value)}function pt(e){return !!e.value&&Q(e.value)}function $e(e){return Q(e)&&"_validator"in e}function ge(e){return typeof e.value!="function"}function dt(e){return Q(e)&&"$fields"in e}function yt(e){return !!e&&"$rules"in e}function Ue({field:e,silent:t=!1}){return Object.entries(e.$rules??{}).map(([r,n])=>t||!n.$valid&&e.$dirty&&!n.$validating?n.$message:null).filter(r=>!!r).reduce((r,n)=>typeof n=="string"?r?.concat([n]):r?.concat(n),[]).concat(e.$dirty?e.$externalErrors??[]:[])}function vt({field:e}){return Object.entries(e.$rules??{}).map(([t,r])=>r.$tooltip).filter(t=>!!t).reduce((t,r)=>typeof r=="string"?t?.concat([r]):t?.concat(r),[])}function mt({fieldProperties:e,customMessages:t,rule:r,ruleKey:n,state:l,path:f,storage:p,$debounce:d,modifiers:m}){let $=vue.effectScope(),g={},V,F=vue.ref(!1),{$pending:a,$valid:T,$metadata:C,$validating:N}=p.trySetRuleStatusRef(`${f}.${n}`);function o(){$=vue.effectScope(),g=$.run(()=>{let b=vue.computed(()=>({$value:l.value,$error:e.$error.value,$dirty:e.$dirty.value,$pending:e.$pending.value,$valid:e.$valid.value,$invalid:e.$invalid.value,$rule:{$valid:T.value,$invalid:!T.value,$pending:a.value},$params:D.value,...C.value})),q=vue.computed(()=>ge(r)?typeof r.value.active=="function"?r.value.active(b.value):!!r.value.active:!0);function y(u){let c="",S=t?t[n]?.[u]:void 0;if(S&&(typeof S=="function"?c=S(b.value):c=S),ge(r)){let R=`_${u}_patched`;S&&!r.value[R]||(typeof r.value[u]=="function"?c=r.value[u](b.value):c=r.value[u]??"");}return c}let I=vue.computed(()=>{let u=y("message");return L(u)&&(u="This field is not valid"),u}),k=vue.computed(()=>y("tooltip")),te=vue.computed(()=>ge(r)&&r.value.type?r.value.type:n),ae=vue.computed(()=>ge(r)?r.value.validator:r.value),D=vue.computed(()=>typeof r.value=="function"?[]:J(r.value._params??[])),P=vue.computed(()=>`${f}.${te.value}`);return {$active:q,$message:I,$type:te,$validator:ae,$params:D,$path:P,$tooltip:k}}),V=vue.watch(g?.$params,()=>{(m.$autoDirty.value||m.$rewardEarly.value&&e.$error.value)&&z();});}o();function s(){T.value=!0,e.$dirty.value&&(a.value=!0);}async function i(){let b=!1;try{let q=g.$validator.value,y=q(l.value,...g.$params.value),I=l.value;s();let k;if(y instanceof Promise?k=await y:k=y,l.value!==I)return !0;if(typeof k=="boolean")b=k;else {let{$valid:te,...ae}=k;b=te,C.value=ae;}}catch{b=!1;}finally{a.value=!1;}return b}let G=De(i,d??200);async function z(){try{N.value=!0;let b=!1;if($e(r.value)&&r.value._async)b=await G();else {let q=g.$validator.value,y=q(l.value,...g.$params.value);if(y instanceof Promise)console.warn('You used a async validator function on a non-async rule, please use "async await" or the "withAsync" helper');else if(y!=null)if(typeof y=="boolean")b=y;else {let{$valid:I,...k}=y;b=I,C.value=k;}}return T.value=b,b}catch{return !1}finally{N.value=!1;}}function W(){T.value=!0,C.value={},a.value=!1,N.value=!1,o();}function w(){V(),$.stop(),$=vue.effectScope();}return vue.reactive({...g,$pending:a,$valid:T,$metadata:C,$haveAsync:F,$validating:N,$validate:z,$unwatch:w,$watch:o,$reset:W})}function Ie({state:e,rulesDef:t,customMessages:r,path:n,fieldName:l,storage:f,options:p,externalErrors:d,onUnwatch:m,$isArray:$,initialState:g,shortcuts:V}){let F=vue.effectScope(),a,T=[],C,N,o,s,i=()=>{};function G(){let v=t.value,A=f.checkRuleDeclEntry(n,v);I.value=Object.fromEntries(Object.entries(v).filter(([M])=>M.startsWith("$"))),w(),y.value=Object.fromEntries(Object.entries(t.value).filter(([M])=>!M.startsWith("$")).map(([M,Z])=>{if(Z){let re=vue.toRef(()=>Z);return [M,mt({fieldProperties:{$dirty:a.$dirty,$error:a.$error,$invalid:a.$invalid,$pending:a.$pending,$valid:a.$valid},modifiers:{$autoDirty:a.$autoDirty,$rewardEarly:a.$rewardEarly},customMessages:r,rule:re,ruleKey:M,state:e,path:n,storage:f,$debounce:I.value.$debounce})]}return []}).filter(M=>!!M.length)),a.processShortcuts(),z(),A?.valid!=null&&(a.$dirty.value=f.getDirtyState(n),a.$dirty.value&&i()),f.addRuleDeclEntry(n,v);}function z(){i=a.$debounce.value?De(q,a.$debounce.value??a.$haveAnyAsyncRule?100:0):q;}function W(){y.value&&Object.entries(y.value).forEach(([v,A])=>{A.$unwatch();}),o(),a.$dirty.value&&f.setDirtyEntry(n,a.$dirty.value),C?.(),N?.(),F.stop(),F=vue.effectScope(),T.forEach(v=>v.stop()),T=[],m?.(),s?.();}function w(){y.value&&Object.entries(y.value).forEach(([v,A])=>{A.$watch();}),a=F.run(()=>{let v=vue.ref(!1),A=vue.ref(!1),M=vue.computed(()=>v.value),Z=vue.computed(()=>I.value.$debounce),re=vue.computed(()=>I.value.$lazy!=null?I.value.$lazy:vue.unref(p.lazy)!=null?vue.unref(p.lazy):!1),h=vue.computed(()=>I.value.$rewardEarly!=null?I.value.$rewardEarly:vue.unref(p.rewardEarly)!=null?vue.unref(p.rewardEarly):!1),O=vue.computed(()=>I.value.$clearExternalErrorsOnChange!=null?I.value.$clearExternalErrorsOnChange:vue.unref(p.clearExternalErrorsOnChange)!=null?vue.unref(p.clearExternalErrorsOnChange):!0),E=vue.computed(()=>I.value.$autoDirty!=null?I.value.$autoDirty:vue.unref(p.autoDirty)!=null?vue.unref(p.autoDirty):!h.value),_=vue.computed(()=>Object.entries(y.value).some(([K,le])=>le.$validating)),ve=vue.computed({get:()=>e.value,set(K){C(),e.value=K,b();}}),Ae=vue.computed(()=>fe.value&&!me.value&&v.value),Qe=vue.computed(()=>Ae.value?Ue({field:{$dirty:v.value,$externalErrors:d?.value,$rules:y.value}}):[]),je=vue.computed(()=>v.value?Me(g.value)&&Me(e.value)?_e(g.value).getDate()!==_e(e.value).getDate():g.value==null?!!e.value:Array.isArray(e.value)&&Array.isArray(g.value)?e.value.length!==g.value.length:g.value!==e.value:!1),Xe=vue.computed(()=>je.value),Ze=vue.computed(()=>vt({field:{$rules:y.value}})),Ke=vue.computed(()=>Ue({field:{$dirty:v.value,$externalErrors:d?.value,$rules:y.value},silent:!0})),et=vue.computed(()=>E.value?M.value&&!(fe.value||me.value):!(fe.value||me.value)),me=vue.computed(()=>A.value||!h.value?Object.entries(y.value).some(([K,le])=>le.$pending):!1),fe=vue.computed(()=>d?.value?.length?!0:L(y.value)?!1:!h.value||h.value&&A.value?Object.entries(y.value).some(([K,le])=>!le.$valid):!1),tt=vue.computed(()=>l),Fe=vue.computed(()=>!!L(y.value)),rt=vue.computed(()=>d?.value?.length||Fe.value?!1:v.value&&!L(e.value)&&!_.value?Object.values(y.value).every(K=>K.$valid&&K.$active):!1),It=vue.computed(()=>Object.entries(y.value).some(([K,le])=>le.$haveAsync));function wt(){V?.fields&&Object.entries(V.fields).forEach(([K,le])=>{let at=vue.effectScope();nt[K]=at.run(()=>{let lt=vue.ref();return vue.watchEffect(()=>{lt.value=le(vue.reactive({$dirty:v,$externalErrors:d?.value??[],$value:e,$silentValue:ve,$rules:y,$error:Ae,$pending:me,$invalid:fe,$valid:rt,$errors:Qe,$ready:et,$silentErrors:Ke,$anyDirty:M,$tooltips:Ze,$name:tt,$inactive:Fe,$edited:je,$anyEdited:Xe}));}),lt}),T.push(at);});}let nt={};return vue.watch(fe,K=>{K||(A.value=!1);}),{$error:Ae,$pending:me,$invalid:fe,$valid:rt,$debounce:Z,$lazy:re,$errors:Qe,$ready:et,$silentErrors:Ke,$rewardEarly:h,$autoDirty:E,$clearExternalErrorsOnChange:O,$anyDirty:M,$edited:je,$anyEdited:Xe,$name:tt,$haveAnyAsyncRule:It,$shortcuts:nt,$validating:_,$tooltips:Ze,$dirty:v,triggerPunishment:A,processShortcuts:wt,$silentValue:ve,$inactive:Fe}}),b(),o=vue.watch(a.$dirty,()=>{f.setDirtyEntry(n,a.$dirty.value);}),N=vue.watch(a.$valid,v=>{a.$rewardEarly.value&&v&&(a.triggerPunishment.value=!1);}),s=vue.watch(a.$haveAnyAsyncRule,z);}function b(){C=vue.watch(e,()=>{a.$autoDirty.value&&(a.$dirty.value||(a.$dirty.value=!0)),t.value instanceof Function&&G(),(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&i(),a.$rewardEarly.value!==!0&&a.$clearExternalErrorsOnChange.value&&u();},{deep:$?!0:xe?1:!0});}function q(){Object.values(y.value).forEach(v=>{v.$validate();});}let y=vue.ref({}),I=vue.ref({});G();function k(){u(),a.$dirty.value=!1,a.triggerPunishment.value=!1,f.setDirtyEntry(n,!1),g.value=Q(e.value)?H(e.value):Array.isArray(e.value)?[...e.value]:e.value,Object.entries(y.value).forEach(([v,A])=>{A.$reset();}),!a.$lazy.value&&a.$autoDirty.value&&Object.values(y.value).forEach(v=>v.$validate());}function te(v=!0,A=!1){a.$dirty.value||(a.$dirty.value=!0),A&&v?(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&i():v&&i();}async function ae(){try{let v=e.value;if(a.triggerPunishment.value=!0,!a.$dirty.value)a.$dirty.value=!0;else if(a.$autoDirty.value&&a.$dirty.value&&!a.$pending.value)return {result:!a.$error.value,data:v};return L(y.value)?{result:!0,data:v}:{result:(await Promise.allSettled(Object.entries(y.value).map(([Z,re])=>re.$validate()))).every(Z=>Z.status==="fulfilled"?Z.value===!0:!1),data:v}}catch{return {result:!1,data:e.value}}}function D(){W(),e.value=H(g),k();}function P(v=!0){return a.$dirty.value?e.value:v?{_null:!0}:null}function u(){d?.value?.length&&(d.value=[]);}!a.$lazy.value&&!a.$dirty.value&&a.$autoDirty.value&&i();let{$shortcuts:c,$validating:S,$autoDirty:R,$rewardEarly:x,$clearExternalErrorsOnChange:B,$haveAnyAsyncRule:ee,$debounce:X,$lazy:oe,...ce}=a;return vue.reactive({...ce,$externalErrors:d,$value:e,$rules:y,...c,$reset:k,$touch:te,$validate:ae,$unwatch:W,$watch:w,$resetAll:D,$extractDirtyFields:P,$clearExternalErrors:u})}function He({$id:e,path:t,index:r,options:n,storage:l,stateValue:f,customMessages:p,rules:d,externalErrors:m,initialState:$,shortcuts:g,fieldName:V}){let F=d.$key?d.$key:Ce(),a=`${t}.${String(F)}`;typeof f.value=="object"&&f.value!=null&&(f.value.$id?a=`${t}.${f.value.$id}`:Object.defineProperties(f.value,{$id:{value:F,enumerable:!1,configurable:!1,writable:!1}}));let T=be({state:f,rulesDef:vue.toRef(()=>d),customMessages:p,path:a,storage:l,options:n,externalErrors:vue.toRef(m?.value??[],r),initialState:$,shortcuts:g,fieldName:V});if(T){let C=f.value?.$id;T.$id=C??String(F),l.addArrayStatus(e,T.$id,T);}return T}function ht({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:f,externalErrors:p,initialState:d,shortcuts:m,fieldName:$}){let g=vue.effectScope(),V,F=vue.effectScope(),a,T=[];if(!Array.isArray(e.value)&&!t.value.$each)return;let C=vue.ref(),N=vue.ref(e.value),o,s=vue.ref({}),i=l.getCollectionsEntry(n);a=F.run(()=>({isPrimitiveArray:vue.computed(()=>Array.isArray(e.value)&&e.value.length?e.value.some(c=>typeof c!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(c=>$e(c)):!1)})),G(),w();function G(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?(C.value=Ce(),Object.defineProperties(e.value,{$id:{value:C.value,enumerable:!1,configurable:!1,writable:!1}})):e.value?.$id&&(C.value=e.value.$id)),!a.isPrimitiveArray.value&&(N.value=s.value.$value,Array.isArray(e.value)?i.value=e.value.map((u,c)=>{let{scope:S,unwrapped:R}=ke(t.value.$each,vue.toRef(()=>u),c);S&&T.push(S);let x=vue.toRef(d.value??[],c),B=He({$id:C.value,path:n,customMessages:r,rules:R??{},stateValue:vue.toRef(()=>u),index:c,options:f,storage:l,externalErrors:vue.toRef(p?.value??{},"$each"),initialState:x,shortcuts:m,fieldName:$});return B||null}).filter(u=>!!u):i.value=[],s.value=Ie({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:f,externalErrors:vue.toRef(p?.value??{},"$self"),$isArray:!0,initialState:d,shortcuts:m,fieldName:$}));}function z(){if(Array.isArray(e.value)){let u=H(i.value);i.value=e.value.map((c,S)=>{let R=vue.toRef(()=>c);if(c.$id&&i.value.find(x=>x.$id===c.$id)){let x=l.getArrayStatus(C.value,c.$id);return x?(x.$value=R,x):null}else {let{scope:x,unwrapped:B}=ke(t.value.$each,R,S);if(x&&T.push(x),B){let ee=He({$id:C.value,path:n,customMessages:r,rules:B,stateValue:R,index:S,options:f,storage:l,externalErrors:vue.toRef(p?.value??{},"$each"),initialState:vue.toRef(d.value??[],S),shortcuts:m,fieldName:$});return ee||null}}}).filter(c=>!!c),u.filter(c=>!e.value.find(S=>c.$id===S.$id)).forEach((c,S)=>{l.deleteArrayStatus(C.value,S.toString());});}else i.value=[];}function W(){o=vue.watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?G():z();},{deep:xe?1:!0,flush:"pre"});}function w(){W(),g=vue.effectScope(),V=g.run(()=>{let u=vue.computed({get:()=>e.value,set(h){o(),e.value=h,W();}}),c=vue.computed(()=>s.value.$dirty&&!!i.value.length&&i.value.every(h=>h.$dirty)),S=vue.computed(()=>s.value.$anyDirty||i.value.some(h=>h.$anyDirty)),R=vue.computed(()=>s.value.$invalid||i.value.some(h=>h.$invalid)),x=vue.computed(()=>(L(s.value.$rules)?!0:s.value.$valid)&&i.value.every(h=>h.$valid)),B=vue.computed(()=>s.value.$error||i.value.some(h=>h.$error)),ee=vue.computed(()=>!(R.value||X.value)),X=vue.computed(()=>s.value.$pending||i.value.some(h=>h.$pending)),oe=vue.computed(()=>!!i.value.length&&i.value.every(h=>h.$edited)),ce=vue.computed(()=>s.value.$anyEdited||i.value.some(h=>h.$anyEdited)),v=vue.computed(()=>({$self:s.value.$errors,$each:i.value.map(h=>h.$errors)})),A=vue.computed(()=>({$self:s.value.$silentErrors,$each:i.value.map(h=>h.$silentErrors)})),M=vue.computed(()=>$);function Z(){m?.collections&&Object.entries(m?.collections).forEach(([h,O])=>{let E=vue.effectScope();re[h]=E.run(()=>{let _=vue.ref();return vue.watchEffect(()=>{_.value=O(vue.reactive({$dirty:c,$error:B,$silentValue:u,$pending:X,$invalid:R,$valid:x,$errors:v,$ready:ee,$silentErrors:A,$anyDirty:S,$name:M,$each:i,$field:s,$value:e,$edited:oe,$anyEdited:ce}));}),_}),T.push(E);});}let re={};return Z(),{$dirty:c,$anyDirty:S,$invalid:R,$valid:x,$error:B,$pending:X,$errors:v,$silentErrors:A,$ready:ee,$name:M,$shortcuts:re,$silentValue:u,$edited:oe,$anyEdited:ce}}),a.isPrimitiveArray.value&&(console.warn(`${n} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`),o());}function b(){o&&o(),s.value&&s.value.$unwatch(),i.value&&i.value.forEach(u=>{"$dirty"in u&&u.$unwatch();}),g.stop(),g=vue.effectScope(),F.stop(),F=vue.effectScope(!0),T.forEach(u=>u.stop()),T=[];}function q(u=!0,c=!1){s.value.$touch(u,c),i.value.forEach(S=>{S.$touch(u,c);});}function y(){s.value.$reset(),i.value.forEach(u=>{u.$reset();});}async function I(){let u=e.value;try{return {result:(await Promise.allSettled([s.value.$validate(),...i.value.map(R=>R.$validate())])).every(R=>R.status==="fulfilled"?R.value.result===!0:!1),data:u}}catch{return {result:!1,data:u}}}function k(){s.value.$clearExternalErrors(),i.value.forEach(u=>{u.$clearExternalErrors();});}function te(u=!0){let c=i.value.map(S=>{if(dt(S))return S.$extractDirtyFields(u)});return u&&c.every(S=>L(S))&&(c=[]),c}function ae(){b(),e.value=H(d.value),y();}let{$shortcuts:D,...P}=V;return vue.reactive({$field:s,...P,...D,$each:i,$value:e,$validate:I,$unwatch:b,$watch:w,$touch:q,$reset:y,$resetAll:ae,$extractDirtyFields:te,$clearExternalErrors:k})}function Oe({rulesDef:e,state:t,path:r="",rootRules:n,externalErrors:l,validationGroups:f,initialState:p,fieldName:d,...m}){let $=vue.effectScope(),g,V=[],F=null,a=null,T=null;async function N(D=!0){let P=Object.entries(e.value),u=Object.fromEntries(P.filter(([R,x])=>!!x).map(([R,x])=>{if(x){let B=vue.toRef(t.value,R),ee=vue.toRef(()=>x),X=vue.toRef(l?.value??{},R),oe=vue.toRef(p?.value??{},R);return [R,be({state:B,rulesDef:ee,path:r?`${r}.${R}`:R,externalErrors:X,initialState:oe,fieldName:R,...m})]}return []})),c=Object.fromEntries(Object.entries(vue.unref(l)??{}).filter(([R,x])=>!(R in e.value)&&!!x).map(([R])=>{let x=vue.toRef(t.value,R),B=vue.toRef(p?.value??{},R);return [R,be({state:x,rulesDef:vue.computed(()=>({})),path:r?`${r}.${R}`:R,externalErrors:vue.toRef(l?.value??{},R),initialState:B,fieldName:R,...m})]})),S=Object.fromEntries(Object.entries(t.value).filter(([R])=>!(R in e.value)&&!(R in(c.value??{}))).map(([R])=>{let x=vue.toRef(t.value,R),B=vue.toRef(p?.value??{},R);return [R,be({state:x,rulesDef:vue.computed(()=>({})),path:r?`${r}.${R}`:R,externalErrors:vue.toRef(l?.value??{},R),initialState:B,fieldName:R,...m})]}));o.value={...u,...c,...S},D&&W();}let o=m.storage.getFieldsEntry(r);N();function s(){a?.(),Object.values(o.value).forEach(D=>{D.$reset();}),p.value={...H(t.value)},G();}function i(D=!0,P=!1){Object.values(o.value).forEach(u=>{u.$touch(D,P);});}function G(){l?.value&&(a=vue.watch(l,()=>{w(),N();},{deep:!0}));}function z(){T=vue.watch(t,()=>{w(),N(),i(!0,!0);},{flush:"sync"});}function W(){n&&(F?.(),F=vue.watch(n,()=>{w(),N();},{deep:!0,flush:"post"}),G()),z(),$=vue.effectScope(),g=$.run(()=>{let D=vue.computed({get:()=>t.value,set(O){w(),t.value=O,N();}}),P=vue.computed(()=>!!Object.entries(o.value).length&&Object.entries(o.value).every(([O,E])=>E?.$dirty)),u=vue.computed(()=>Object.entries(o.value).some(([O,E])=>E?.$anyDirty)),c=vue.computed(()=>Object.entries(o.value).some(([O,E])=>E?.$invalid)),S=vue.computed(()=>{let O=Object.entries(o.value).filter(([E,_])=>yt(_)?!_.$inactive:!0);return O.length?O.every(([E,_])=>_?.$valid):!1}),R=vue.computed(()=>u.value&&!X.value&&c.value),x=vue.computed(()=>vue.unref(m.options.rewardEarly)!=null?vue.unref(m.options.rewardEarly):!1),B=vue.computed(()=>vue.unref(m.options.autoDirty)!=null?vue.unref(m.options.autoDirty):!x.value),ee=vue.computed(()=>B.value?u.value&&!(c.value||X.value):!(c.value||X.value)),X=vue.computed(()=>Object.entries(o.value).some(([O,E])=>E?.$pending)),oe=vue.computed(()=>Object.fromEntries(Object.entries(o.value).map(([O,E])=>[O,E?.$errors]))),ce=vue.computed(()=>Object.fromEntries(Object.entries(o.value).map(([O,E])=>[O,E?.$silentErrors]))),v=vue.computed(()=>!!Object.entries(o.value).length&&Object.entries(o.value).every(([O,E])=>E?.$edited)),A=vue.computed(()=>Object.entries(o.value).some(([O,E])=>E?.$anyEdited)),M=vue.computed(()=>d);function Z(){m.shortcuts?.nested&&Object.entries(m.shortcuts.nested).forEach(([O,E])=>{let _=vue.effectScope();h[O]=_.run(()=>{let ve=vue.ref();return vue.watchEffect(()=>{ve.value=E(vue.reactive({$dirty:P,$value:t,$silentValue:D,$error:R,$pending:X,$invalid:c,$valid:S,$ready:ee,$anyDirty:u,$name:M,$silentErrors:ce,$errors:oe,$fields:o,$edited:v,$anyEdited:A}));}),ve}),V.push(_);});}let re=vue.computed({get:()=>f?Object.fromEntries(Object.entries(f?.(o.value)??{}).map(([O,E])=>E.length?[O,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$valid"].map(_=>[_,ut(E,_)])),...Object.fromEntries(["$errors","$silentErrors"].map(_=>[_,it(E,_)]))}]:[])):{},set(){}}),h={};return Z(),{$dirty:P,$anyDirty:u,$invalid:c,$valid:S,$error:R,$pending:X,$errors:oe,$silentErrors:ce,$ready:ee,$name:M,$shortcuts:h,$groups:re,$silentValue:D,$edited:v,$anyEdited:A}});}function w(){F?.(),a?.(),T?.(),V.forEach(D=>D.stop()),V=[],$.stop(),o.value&&Object.entries(o.value).forEach(([D,P])=>{P.$unwatch();});}function b(){Object.entries(o.value).forEach(([D,P])=>{P.$clearExternalErrors();});}async function q(){w(),t.value=H({...p.value??{}}),s(),N();}function y(D){return D.filter(([P,u])=>Q(u)?!(u&&typeof u=="object"&&"_null"in u)&&!L(u):Array.isArray(u)?u.length:!0)}function I(D=!0){let P=Object.entries(o.value).map(([u,c])=>[u,c.$extractDirtyFields(D)]);return D&&(P=y(P)),Object.fromEntries(P)}async function k(){try{let D=t.value;return {result:(await Promise.allSettled(Object.values(o.value).map(c=>c.$validate()))).every(c=>c.status==="fulfilled"?c.value.result===!0:!1),data:D}}catch{return {result:!1,data:t.value}}}let{$shortcuts:te,...ae}=g;return vue.reactive({...ae,...te,$fields:o,$value:t,$resetAll:q,$reset:s,$touch:i,$validate:k,$unwatch:w,$watch:W,$clearExternalErrors:b,$extractDirtyFields:I})}function be({rulesDef:e,externalErrors:t,...r}){if(Rt(e,r.state))return ht({rulesDef:e,externalErrors:t,...r});if(ft(r.state,e)){if(Te(r.state))return Oe({rulesDef:e,externalErrors:t,...r});{let n=vue.ref({}),l=vue.watch(n,d=>{l(),r.state.value=d;},{deep:!0}),{state:f,...p}=r;return Oe({rulesDef:e,externalErrors:t,...p,state:n})}}else if(pt(e))return Ie({rulesDef:e,externalErrors:t,...r})}function ye({initialState:e,options:t,scopeRules:r,state:n,customRules:l,shortcuts:f}){let p=We(),d=vue.ref();return d.value=Oe({rootRules:r,rulesDef:r,state:n,customMessages:l?.(),storage:p,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:f,fieldName:"root",path:""}),vue.getCurrentScope()&&vue.onScopeDispose(()=>{d.value?.$unwatch();}),vue.reactive({regle:d})}function qe(e,t,r){let n={autoDirty:t?.autoDirty,lazy:t?.lazy,rewardEarly:t?.rewardEarly,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange};function l(f,p,d){let m=vue.isRef(p)?p:vue.computed(typeof p=="function"?p:()=>p),$={...n,...d},g=vue.isRef(f)?f:vue.ref(f),V=vue.ref({...H(g.value)});return {r$:ye({scopeRules:m,state:g,options:$,initialState:V,customRules:e,shortcuts:r}).regle}}return l}var xt=qe();function Je(){function e(t,r){return r}return e}var Ye=Je();function Ct({rules:e,modifiers:t,shortcuts:r}){let n=qe(e,t,r),l=Je();return {useRegle:n,inferRules:l}}
2
+ exports.InternalRuleType=Ve;exports.createRule=Ge;exports.defineRegleConfig=Ct;exports.inferRules=Ye;exports.unwrapRuleParameters=J;exports.useRegle=xt;exports.useRootStorage=ye;
@@ -1,2 +1,2 @@
1
- import {toValue,version,ref,getCurrentScope,onScopeDispose,reactive,shallowRef,effectScope,computed,isRef,toRef,unref,watch,watchEffect}from'vue';function B(e){return e==null?!0:e instanceof Date?isNaN(e.getTime()):Array.isArray(e)?!1:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}var lt=Symbol("regle-rule");function wt(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 J(e){let t=e,r={}.toString.call(e).slice(8,-1);if(r=="Set"&&(t=new Set([...e].map(n=>J(n)))),r=="Map"&&(t=new Map([...e].map(n=>[J(n[0]),J(n[1])]))),r=="Date"&&(t=new Date(e.getTime())),r=="RegExp"&&(t=RegExp(e.source,wt(e))),r=="Array"||r=="Object"){t=Array.isArray(e)?[]:{};for(let n in e)t[n]=J(e[n]);}return t}function re(e){return e instanceof Date||e instanceof File?!1:typeof e=="object"&&e!==null&&!Array.isArray(e)}function Me(e){if(B(e))return !1;try{let t=null;if(e instanceof Date)t=e;else if(typeof e=="number"&&!isNaN(e))t=new Date(e);else if(typeof e=="string"){let r=new Date(e);if(r.toString()==="Invalid Date")return !1;t=r;}return !!t}catch{return !1}}var _e=(r=>(r.Inline="__inline",r.Async="__async",r))(_e||{});function ot(e,t){return e.some(r=>r[t])}function ut(e,t){return e.reduce((r,n)=>{let l=n[t]||[];return r.concat(l)},[])}function Y(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 st(e){let n=e.toString().replace(/\/\/.*$/gm,"").replace(/\/\*[\s\S]*?\*\//g,"").match(/^(?:async\s*)?(?:function\b.*?\(|\((.*?)\)|(\w+))\s*=>|\((.*?)\)\s*=>|function.*?\((.*?)\)|\((.*?)\)/);return n?(n[0]||n[1]||n[2]||n[3]||n[4]||"").split(",").map(p=>p.trim()).filter(p=>p.length>0).length:0}function Ve(e,...t){let{validator:r,type:n}=e,l=n==="__async"||r.constructor.name==="AsyncFunction";return {...{validator(d,...m){return e.validator(d,...Y(m.length?m:t))},message(d){return typeof e.message=="function"?e.message({...d,$params:Y(d?.$params?.length?d.$params:t)}):e.message},active(d){return typeof e.active=="function"?e.active({...d,$params:Y(d?.$params?.length?d.$params:t)}):e.active??!0},tooltip(d){return typeof e.tooltip=="function"?e.tooltip({...d,$params:Y(d?.$params?.length?d.$params:t)}):e.tooltip??[]},exec(d){let m=e.validator(d,...Y(t)),$;return m instanceof Promise?m.then(h=>($=h,typeof $=="object"&&"$valid"in $?$.$valid:typeof $=="boolean"?$:!1)):($=m,typeof $=="object"&&"$valid"in $?$.$valid:typeof $=="boolean"?$:!1)}},_validator:e.validator,_message:e.message,_active:e.active,_tooltip:e.tooltip,_type:e.type,_message_patched:!1,_tooltip_patched:!1,_async:l,_params:it(t),_brand:lt}}function Ge(e){if(typeof e.validator=="function"){let r=Ve(e,...[]),n=e.async??e.validator.constructor.name==="AsyncFunction";if(st(e.validator)>1){let l=function(...f){return Ve(e,...f)};return l.validator=r.validator,l.message=r.message,l.active=r.active,l.tooltip=r.tooltip,l.type=r.type,l.exec=r.exec,l._validator=r.validator,l._message=r.message,l._active=r.active,l._tooltip=r.tooltip,l._type=e.type,l._message_pacthed=!1,l._tooltip_pacthed=!1,l._async=n,l}else return r}throw new Error("Validator must be a function")}function Ne(){let e=shallowRef(new Map),t=shallowRef(new Map),r=shallowRef(new Map),n=shallowRef(new Map),l=shallowRef(new Map),f=shallowRef(new Map);function p(o){let s=t.value.get(o);if(s)return s;{let i=ref({});return t.value.set(o,i),i}}function d(o){let s=r.value.get(o);if(s)return s;{let i=ref([]);return r.value.set(o,i),i}}function m(o,s,i){f.value.set(`${o}-${s}`,i);}function $(o,s){return f.value.get(`${o}-${s}`)}function h(o,s){o&&s!=null&&f.value.delete(`${o}-${s}`);}function _(o,s){n.value.set(o,s);}function A(o){return n.value.get(o)??!1}function a(o,s){e.value.set(o,s);}function D(o,s){let i=e.value.get(o);return i?C(s,i)?{valid:!0}:{valid:!1}:void 0}function C(o,s){let i=Object.keys(s),W=Object.keys(o);return W.length!==i.length||!W.every(k=>i.includes(k))?!1:W.every(k=>{let w=o[k],b=s[k];return !b||!w||typeof w=="function"||typeof b=="function"||typeof w=="number"||typeof w=="boolean"?!1:w._params?w._params?.every((z,y)=>{if(typeof b=="number"||typeof b=="boolean")return !0;{let I=Y(b._params),U=Y(w._params);return I?.[y]===U?.[y]}}):!0})}function N(o){let s=l.value.get(o);if(s)return s;{let i=ref(!1),W=ref(!0),H=ref({}),k=ref(!1);return l.value.set(o,{$pending:i,$valid:W,$metadata:H,$validating:k}),{$pending:i,$valid:W,$metadata:H,$validating:k}}}return getCurrentScope()&&onScopeDispose(()=>{e.value.clear(),t.value.clear(),r.value.clear(),n.value.clear(),l.value.clear(),f.value.clear();}),{addRuleDeclEntry:a,setDirtyEntry:_,checkRuleDeclEntry:D,getDirtyState:A,trySetRuleStatusRef:N,getFieldsEntry:p,getCollectionsEntry:d,getArrayStatus:$,addArrayStatus:m,deleteArrayStatus:h,arrayStatusStorage:f}}function Te(e){return e.value instanceof Date||e.value instanceof File?!1:re(e.value)}function We(e,t,r){let n=effectScope(),l;return e instanceof Function?l=n.run(()=>e(t,r??0)):l=e,{scope:n,unwrapped:l}}function De(e,t,r){let n,l=(...f)=>new Promise(p=>{clearTimeout(n),n=setTimeout(()=>{n=void 0,Promise.resolve(e.apply(this,[...f])).then(p);},t);});return l.cancel=()=>{clearTimeout(n),n=void 0;},l}function Gt(e,t){let r=String(e).split("."),n=String(t).split(".");for(let l=0;l<Math.min(r.length,n.length);l++){let f=Number(r[l]),p=Number(n[l]);if(f>p)return 1;if(p>f)return -1;if(!isNaN(f)&&isNaN(p))return 1;if(isNaN(f)&&!isNaN(p))return -1}return 0}var xe=Gt(version,"3.5.0")!==-1;function Nt(){return Math.floor(Math.random()*Date.now()).toString()}function Ce(){return typeof window>"u"?Nt():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function ct(e,t){return Te(e)||re(t.value)&&!B(t.value)&&!Object.entries(t.value).some(([r,n])=>$e(n)||typeof n=="function")}function ft(e,t){return !!e.value&&"$each"in e.value||Array.isArray(t.value)}function Rt(e){return !!e.value&&re(e.value)}function $e(e){return re(e)&&"_validator"in e}function ge(e){return typeof e.value!="function"}function pt(e){return re(e)&&"$fields"in e}function dt(e){return !!e&&"$rules"in e}function ke({field:e,silent:t=!1}){return Object.entries(e.$rules??{}).map(([r,n])=>t||!n.$valid&&e.$dirty&&!n.$validating?n.$message:null).filter(r=>!!r).reduce((r,n)=>typeof n=="string"?r?.concat([n]):r?.concat(n),[]).concat(e.$dirty?e.$externalErrors??[]:[])}function yt({field:e}){return Object.entries(e.$rules??{}).map(([t,r])=>r.$tooltip).filter(t=>!!t).reduce((t,r)=>typeof r=="string"?t?.concat([r]):t?.concat(r),[])}function mt({fieldProperties:e,customMessages:t,rule:r,ruleKey:n,state:l,path:f,storage:p,$debounce:d,modifiers:m}){let $=effectScope(),h={},_,A=ref(!1),{$pending:a,$valid:D,$metadata:C,$validating:N}=p.trySetRuleStatusRef(`${f}.${n}`);function o(){$=effectScope(),h=$.run(()=>{let b=computed(()=>({$value:l.value,$error:e.$error.value,$dirty:e.$dirty.value,$pending:e.$pending.value,$valid:e.$valid.value,$invalid:e.$invalid.value,$rule:{$valid:D.value,$invalid:!D.value,$pending:a.value},$params:x.value,...C.value})),z=computed(()=>ge(r)?typeof r.value.active=="function"?r.value.active(b.value):!!r.value.active:!0);function y(u){let c="",g=t?t[n]?.[u]:void 0;if(g&&(typeof g=="function"?c=g(b.value):c=g),ge(r)){let R=`_${u}_patched`;g&&!r.value[R]||(typeof r.value[u]=="function"?c=r.value[u](b.value):c=r.value[u]??"");}return c}let I=computed(()=>{let u=y("message");return B(u)&&(u="This field is not valid"),u}),U=computed(()=>y("tooltip")),ee=computed(()=>ge(r)&&r.value.type?r.value.type:n),ne=computed(()=>ge(r)?r.value.validator:r.value),x=computed(()=>typeof r.value=="function"?[]:Y(r.value._params??[])),P=computed(()=>`${f}.${ee.value}`);return {$active:z,$message:I,$type:ee,$validator:ne,$params:x,$path:P,$tooltip:U}}),_=watch(h?.$params,()=>{(m.$autoDirty.value||m.$rewardEarly.value&&e.$error.value)&&H();});}o();function s(){D.value=!0,e.$dirty.value&&(a.value=!0);}async function i(){let b=!1;try{let z=h.$validator.value,y=z(l.value,...h.$params.value),I=l.value;s();let U;if(y instanceof Promise?U=await y:U=y,l.value!==I)return !0;if(typeof U=="boolean")b=U;else {let{$valid:ee,...ne}=U;b=ee,C.value=ne;}}catch{b=!1;}finally{a.value=!1;}return b}let W=De(i,d??200);async function H(){try{N.value=!0;let b=!1;if($e(r.value)&&r.value._async)b=await W();else {let z=h.$validator.value,y=z(l.value,...h.$params.value);if(y instanceof Promise)console.warn('You used a async validator function on a non-async rule, please use "async await" or the "withAsync" helper');else if(y!=null)if(typeof y=="boolean")b=y;else {let{$valid:I,...U}=y;b=I,C.value=U;}}return D.value=b,b}catch{return !1}finally{N.value=!1;}}function k(){D.value=!0,C.value={},a.value=!1,N.value=!1,o();}function w(){_(),$.stop(),$=effectScope();}return reactive({...h,$pending:a,$valid:D,$metadata:C,$haveAsync:A,$validating:N,$validate:H,$unwatch:w,$watch:o,$reset:k})}function Ie({state:e,rulesDef:t,customMessages:r,path:n,fieldName:l,storage:f,options:p,externalErrors:d,onUnwatch:m,$isArray:$,initialState:h,shortcuts:_}){let A=effectScope(),a,D=[],C,N,o,s,i=()=>{};function W(){let v=t.value,F=f.checkRuleDeclEntry(n,v);I.value=Object.fromEntries(Object.entries(v).filter(([V])=>V.startsWith("$"))),w(),y.value=Object.fromEntries(Object.entries(t.value).filter(([V])=>!V.startsWith("$")).map(([V,X])=>{if(X){let te=toRef(()=>X);return [V,mt({fieldProperties:{$dirty:a.$dirty,$error:a.$error,$invalid:a.$invalid,$pending:a.$pending,$valid:a.$valid},modifiers:{$autoDirty:a.$autoDirty,$rewardEarly:a.$rewardEarly},customMessages:r,rule:te,ruleKey:V,state:e,path:n,storage:f,$debounce:I.value.$debounce})]}return []}).filter(V=>!!V.length)),a.processShortcuts(),H(),F?.valid!=null&&(a.$dirty.value=f.getDirtyState(n),a.$dirty.value&&i()),f.addRuleDeclEntry(n,v);}function H(){i=a.$debounce.value?De(z,a.$debounce.value??a.$haveAnyAsyncRule?100:0):z;}function k(){y.value&&Object.entries(y.value).forEach(([v,F])=>{F.$unwatch();}),o(),a.$dirty.value&&f.setDirtyEntry(n,a.$dirty.value),C?.(),N?.(),A.stop(),A=effectScope(),D.forEach(v=>v.stop()),D=[],m?.(),s?.();}function w(){y.value&&Object.entries(y.value).forEach(([v,F])=>{F.$watch();}),a=A.run(()=>{let v=ref(!1),F=ref(!1),V=computed(()=>v.value),X=computed(()=>I.value.$debounce),te=computed(()=>I.value.$lazy!=null?I.value.$lazy:unref(p.lazy)!=null?unref(p.lazy):!1),S=computed(()=>I.value.$rewardEarly!=null?I.value.$rewardEarly:unref(p.rewardEarly)!=null?unref(p.rewardEarly):!1),O=computed(()=>I.value.$clearExternalErrorsOnChange!=null?I.value.$clearExternalErrorsOnChange:unref(p.clearExternalErrorsOnChange)!=null?unref(p.clearExternalErrorsOnChange):!0),E=computed(()=>I.value.$autoDirty!=null?I.value.$autoDirty:unref(p.autoDirty)!=null?unref(p.autoDirty):!S.value),G=computed(()=>Object.entries(y.value).some(([Z,ae])=>ae.$validating)),me=computed({get:()=>e.value,set(Z){C(),e.value=Z,b();}}),Ae=computed(()=>ce.value&&!ve.value&&v.value),Ye=computed(()=>Ae.value?ke({field:{$dirty:v.value,$externalErrors:d?.value,$rules:y.value}}):[]),Fe=computed(()=>v.value?Me(h.value)&&Me(e.value)?h.value.getDate()!==e.value.getDate():h.value!==e.value:!1),Qe=computed(()=>Fe.value),Xe=computed(()=>yt({field:{$rules:y.value}})),Ze=computed(()=>ke({field:{$dirty:v.value,$externalErrors:d?.value,$rules:y.value},silent:!0})),Ke=computed(()=>E.value?V.value&&!(ce.value||ve.value):!(ce.value||ve.value)),ve=computed(()=>F.value||!S.value?Object.entries(y.value).some(([Z,ae])=>ae.$pending):!1),ce=computed(()=>d?.value?.length?!0:B(y.value)?!1:!S.value||S.value&&F.value?Object.entries(y.value).some(([Z,ae])=>!ae.$valid):!1),et=computed(()=>l),je=computed(()=>!!B(y.value)),tt=computed(()=>d?.value?.length||je.value?!1:v.value&&!B(e.value)&&!G.value?Object.values(y.value).every(Z=>Z.$valid&&Z.$active):!1),Ct=computed(()=>Object.entries(y.value).some(([Z,ae])=>ae.$haveAsync));function It(){_?.fields&&Object.entries(_.fields).forEach(([Z,ae])=>{let nt=effectScope();rt[Z]=nt.run(()=>{let at=ref();return watchEffect(()=>{at.value=ae(reactive({$dirty:v,$externalErrors:d?.value??[],$value:e,$silentValue:me,$rules:y,$error:Ae,$pending:ve,$invalid:ce,$valid:tt,$errors:Ye,$ready:Ke,$silentErrors:Ze,$anyDirty:V,$tooltips:Xe,$name:et,$inactive:je,$edited:Fe,$anyEdited:Qe}));}),at}),D.push(nt);});}let rt={};return watch(ce,Z=>{Z||(F.value=!1);}),{$error:Ae,$pending:ve,$invalid:ce,$valid:tt,$debounce:X,$lazy:te,$errors:Ye,$ready:Ke,$silentErrors:Ze,$rewardEarly:S,$autoDirty:E,$clearExternalErrorsOnChange:O,$anyDirty:V,$edited:Fe,$anyEdited:Qe,$name:et,$haveAnyAsyncRule:Ct,$shortcuts:rt,$validating:G,$tooltips:Xe,$dirty:v,triggerPunishment:F,processShortcuts:It,$silentValue:me,$inactive:je}}),b(),o=watch(a.$dirty,()=>{f.setDirtyEntry(n,a.$dirty.value);}),N=watch(a.$valid,v=>{a.$rewardEarly.value&&v&&(a.triggerPunishment.value=!1);}),s=watch(a.$haveAnyAsyncRule,H);}function b(){C=watch(e,()=>{a.$autoDirty.value&&(a.$dirty.value||(a.$dirty.value=!0)),t.value instanceof Function&&W(),(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&i(),a.$rewardEarly.value!==!0&&a.$clearExternalErrorsOnChange.value&&u();},{deep:$?!0:xe?1:!0});}function z(){Object.values(y.value).forEach(v=>{v.$validate();});}let y=ref({}),I=ref({});W();function U(){u(),a.$dirty.value=!1,a.triggerPunishment.value=!1,f.setDirtyEntry(n,!1),Object.entries(y.value).forEach(([v,F])=>{F.$reset();}),!a.$lazy.value&&a.$autoDirty.value&&Object.values(y.value).forEach(v=>v.$validate());}function ee(v=!0,F=!1){a.$dirty.value||(a.$dirty.value=!0),F&&v?(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&i():v&&i();}async function ne(){try{let v=e.value;if(a.triggerPunishment.value=!0,!a.$dirty.value)a.$dirty.value=!0;else if(a.$autoDirty.value&&a.$dirty.value&&!a.$pending.value)return {result:!a.$error.value,data:v};return B(y.value)?{result:!0,data:v}:{result:(await Promise.allSettled(Object.entries(y.value).map(([X,te])=>te.$validate()))).every(X=>X.status==="fulfilled"?X.value===!0:!1),data:v}}catch{return {result:!1,data:e.value}}}function x(){k(),e.value=J(h),U();}function P(v=!0){return a.$dirty.value?e.value:v?{_null:!0}:null}function u(){d?.value?.length&&(d.value=[]);}!a.$lazy.value&&!a.$dirty.value&&a.$autoDirty.value&&i();let{$shortcuts:c,$validating:g,$autoDirty:R,$rewardEarly:T,$clearExternalErrorsOnChange:q,$haveAnyAsyncRule:K,$debounce:Q,$lazy:le,...ie}=a;return reactive({...ie,$externalErrors:d,$value:e,$rules:y,...c,$reset:U,$touch:ee,$validate:ne,$unwatch:k,$watch:w,$resetAll:x,$extractDirtyFields:P,$clearExternalErrors:u})}function Le({$id:e,path:t,index:r,options:n,storage:l,stateValue:f,customMessages:p,rules:d,externalErrors:m,initialState:$,shortcuts:h,fieldName:_}){let A=d.$key?d.$key:Ce(),a=`${t}.${String(A)}`;typeof f.value=="object"&&f.value!=null&&(f.value.$id?a=`${t}.${f.value.$id}`:Object.defineProperties(f.value,{$id:{value:A,enumerable:!1,configurable:!1,writable:!1}}));let D=be({state:f,rulesDef:toRef(()=>d),customMessages:p,path:a,storage:l,options:n,externalErrors:toRef(m?.value??[],r),initialState:computed(()=>$.value?.[r]),shortcuts:h,fieldName:_});if(D){let C=f.value?.$id;D.$id=C??String(A),l.addArrayStatus(e,D.$id,D);}return D}function St({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:f,externalErrors:p,initialState:d,shortcuts:m,fieldName:$}){let h=effectScope(),_,A=effectScope(),a,D=[];if(!Array.isArray(e.value)&&!t.value.$each)return;let C=ref(),N=ref(e.value),o,s=ref({}),i=l.getCollectionsEntry(n);a=A.run(()=>({isPrimitiveArray:computed(()=>Array.isArray(e.value)&&e.value.length?e.value.some(c=>typeof c!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(c=>$e(c)):!1)})),W(),w();function W(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?(C.value=Ce(),Object.defineProperties(e.value,{$id:{value:C.value,enumerable:!1,configurable:!1,writable:!1}})):e.value?.$id&&(C.value=e.value.$id)),!a.isPrimitiveArray.value&&(N.value=s.value.$value,Array.isArray(e.value)?i.value=e.value.map((u,c)=>{let{scope:g,unwrapped:R}=We(t.value.$each,toRef(()=>u),c);g&&D.push(g);let T=Le({$id:C.value,path:n,customMessages:r,rules:R??{},stateValue:toRef(()=>u),index:c,options:f,storage:l,externalErrors:toRef(p?.value??{},"$each"),initialState:computed(()=>d.value?.[c]),shortcuts:m,fieldName:$});return T||null}).filter(u=>!!u):i.value=[],s.value=Ie({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:f,externalErrors:toRef(p?.value??{},"$self"),$isArray:!0,initialState:d,shortcuts:m,fieldName:$}));}function H(){if(Array.isArray(e.value)){let u=J(i.value);i.value=e.value.map((c,g)=>{let R=toRef(()=>c);if(c.$id&&i.value.find(T=>T.$id===c.$id)){let T=l.getArrayStatus(C.value,c.$id);return T?(T.$value=R,T):null}else {let{scope:T,unwrapped:q}=We(t.value.$each,R,g);if(T&&D.push(T),q){let K=Le({$id:C.value,path:n,customMessages:r,rules:q,stateValue:R,index:g,options:f,storage:l,externalErrors:toRef(p?.value??{},"$each"),initialState:computed(()=>d.value?.[g]),shortcuts:m,fieldName:$});return K||null}}}).filter(c=>!!c),u.filter(c=>!e.value.find(g=>c.$id===g.$id)).forEach((c,g)=>{l.deleteArrayStatus(C.value,g.toString());});}else i.value=[];}function k(){o=watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?W():H();},{deep:xe?1:!0,flush:"pre"});}function w(){k(),h=effectScope(),_=h.run(()=>{let u=computed({get:()=>e.value,set(S){o(),e.value=S,k();}}),c=computed(()=>s.value.$dirty&&!!i.value.length&&i.value.every(S=>S.$dirty)),g=computed(()=>s.value.$anyDirty||i.value.some(S=>S.$anyDirty)),R=computed(()=>s.value.$invalid||i.value.some(S=>S.$invalid)),T=computed(()=>(B(s.value.$rules)?!0:s.value.$valid)&&i.value.every(S=>S.$valid)),q=computed(()=>s.value.$error||i.value.some(S=>S.$error)),K=computed(()=>!(R.value||Q.value)),Q=computed(()=>s.value.$pending||i.value.some(S=>S.$pending)),le=computed(()=>s.value.$edited&&!!i.value.length&&i.value.every(S=>S.$edited)),ie=computed(()=>s.value.$anyEdited||i.value.some(S=>S.$anyEdited)),v=computed(()=>({$self:s.value.$errors,$each:i.value.map(S=>S.$errors)})),F=computed(()=>({$self:s.value.$silentErrors,$each:i.value.map(S=>S.$silentErrors)})),V=computed(()=>$);function X(){m?.collections&&Object.entries(m?.collections).forEach(([S,O])=>{let E=effectScope();te[S]=E.run(()=>{let G=ref();return watchEffect(()=>{G.value=O(reactive({$dirty:c,$error:q,$silentValue:u,$pending:Q,$invalid:R,$valid:T,$errors:v,$ready:K,$silentErrors:F,$anyDirty:g,$name:V,$each:i,$field:s,$value:e,$edited:le,$anyEdited:ie}));}),G}),D.push(E);});}let te={};return X(),{$dirty:c,$anyDirty:g,$invalid:R,$valid:T,$error:q,$pending:Q,$errors:v,$silentErrors:F,$ready:K,$name:V,$shortcuts:te,$silentValue:u,$edited:le,$anyEdited:ie}}),a.isPrimitiveArray.value&&(console.warn(`${n} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`),o());}function b(){o&&o(),s.value&&s.value.$unwatch(),i.value&&i.value.forEach(u=>{"$dirty"in u&&u.$unwatch();}),h.stop(),h=effectScope(),A.stop(),A=effectScope(!0),D.forEach(u=>u.stop()),D=[];}function z(u=!0,c=!1){s.value.$touch(u,c),i.value.forEach(g=>{g.$touch(u,c);});}function y(){s.value.$reset(),i.value.forEach(u=>{u.$reset();});}async function I(){let u=e.value;try{return {result:(await Promise.allSettled([s.value.$validate(),...i.value.map(R=>R.$validate())])).every(R=>R.status==="fulfilled"?R.value.result===!0:!1),data:u}}catch{return {result:!1,data:u}}}function U(){s.value.$clearExternalErrors(),i.value.forEach(u=>{u.$clearExternalErrors();});}function ee(u=!0){let c=i.value.map(g=>{if(pt(g))return g.$extractDirtyFields(u)});return u&&c.every(g=>B(g))&&(c=[]),c}function ne(){b(),e.value=J(d.value),y();}let{$shortcuts:x,...P}=_;return reactive({$field:s,...P,...x,$each:i,$value:e,$validate:I,$unwatch:b,$watch:w,$touch:z,$reset:y,$resetAll:ne,$extractDirtyFields:ee,$clearExternalErrors:U})}function Oe({rulesDef:e,state:t,path:r="",rootRules:n,externalErrors:l,validationGroups:f,initialState:p,fieldName:d,...m}){let $=effectScope(),h,_=[],A=null,a=null,D=null;async function N(x=!0){let P=Object.entries(e.value),u=Object.fromEntries(P.filter(([R,T])=>!!T).map(([R,T])=>{if(T){let q=toRef(t.value,R),K=toRef(()=>T),Q=toRef(l?.value??{},R),le=computed(()=>p?.value?.[R]);return [R,be({state:q,rulesDef:K,path:r?`${r}.${R}`:R,externalErrors:Q,initialState:le,fieldName:R,...m})]}return []})),c=Object.fromEntries(Object.entries(unref(l)??{}).filter(([R,T])=>!(R in e.value)&&!!T).map(([R])=>{let T=toRef(t.value,R),q=computed(()=>p?.value?.[R]);return [R,be({state:T,rulesDef:computed(()=>({})),path:r?`${r}.${R}`:R,externalErrors:toRef(l?.value??{},R),initialState:q,fieldName:R,...m})]})),g=Object.fromEntries(Object.entries(t.value).filter(([R])=>!(R in e.value)&&!(R in(c.value??{}))).map(([R])=>{let T=toRef(t.value,R),q=computed(()=>p?.value?.[R]);return [R,be({state:T,rulesDef:computed(()=>({})),path:r?`${r}.${R}`:R,externalErrors:toRef(l?.value??{},R),initialState:q,fieldName:R,...m})]}));o.value={...u,...c,...g},x&&k();}let o=m.storage.getFieldsEntry(r);N();function s(){a?.(),Object.values(o.value).forEach(x=>{x.$reset();}),m.onReset?.(),W();}function i(x=!0,P=!1){Object.values(o.value).forEach(u=>{u.$touch(x,P);});}function W(){l?.value&&(a=watch(l,()=>{w(),N();},{deep:!0}));}function H(){D=watch(t,()=>{w(),N(),i(!0,!0);},{flush:"sync"});}function k(){n&&(A?.(),A=watch(n,()=>{w(),N();},{deep:!0,flush:"post"}),W()),H(),$=effectScope(),h=$.run(()=>{let x=computed({get:()=>t.value,set(O){w(),t.value=O,N();}}),P=computed(()=>!!Object.entries(o.value).length&&Object.entries(o.value).every(([O,E])=>E?.$dirty)),u=computed(()=>Object.entries(o.value).some(([O,E])=>E?.$anyDirty)),c=computed(()=>Object.entries(o.value).some(([O,E])=>E?.$invalid)),g=computed(()=>{let O=Object.entries(o.value).filter(([E,G])=>dt(G)?!G.$inactive:!0);return O.length?O.every(([E,G])=>G?.$valid):!1}),R=computed(()=>u.value&&!Q.value&&c.value),T=computed(()=>unref(m.options.rewardEarly)!=null?unref(m.options.rewardEarly):!1),q=computed(()=>unref(m.options.autoDirty)!=null?unref(m.options.autoDirty):!T.value),K=computed(()=>q.value?u.value&&!(c.value||Q.value):!(c.value||Q.value)),Q=computed(()=>Object.entries(o.value).some(([O,E])=>E?.$pending)),le=computed(()=>Object.fromEntries(Object.entries(o.value).map(([O,E])=>[O,E?.$errors]))),ie=computed(()=>Object.fromEntries(Object.entries(o.value).map(([O,E])=>[O,E?.$silentErrors]))),v=computed(()=>!!Object.entries(o.value).length&&Object.entries(o.value).every(([O,E])=>E?.$edited)),F=computed(()=>Object.entries(o.value).some(([O,E])=>E?.$anyEdited)),V=computed(()=>d);function X(){m.shortcuts?.nested&&Object.entries(m.shortcuts.nested).forEach(([O,E])=>{let G=effectScope();S[O]=G.run(()=>{let me=ref();return watchEffect(()=>{me.value=E(reactive({$dirty:P,$value:t,$silentValue:x,$error:R,$pending:Q,$invalid:c,$valid:g,$ready:K,$anyDirty:u,$name:V,$silentErrors:ie,$errors:le,$fields:o,$edited:v,$anyEdited:F}));}),me}),_.push(G);});}let te=computed({get:()=>f?Object.fromEntries(Object.entries(f?.(o.value)??{}).map(([O,E])=>E.length?[O,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$valid"].map(G=>[G,ot(E,G)])),...Object.fromEntries(["$errors","$silentErrors"].map(G=>[G,ut(E,G)]))}]:[])):{},set(){}}),S={};return X(),{$dirty:P,$anyDirty:u,$invalid:c,$valid:g,$error:R,$pending:Q,$errors:le,$silentErrors:ie,$ready:K,$name:V,$shortcuts:S,$groups:te,$silentValue:x,$edited:v,$anyEdited:F}});}function w(){A?.(),a?.(),D?.(),_.forEach(x=>x.stop()),_=[],$.stop(),o.value&&Object.entries(o.value).forEach(([x,P])=>{P.$unwatch();});}function b(){Object.entries(o.value).forEach(([x,P])=>{P.$clearExternalErrors();});}async function z(){w(),t.value=J({...p.value??{}}),s(),N();}function y(x){return x.filter(([P,u])=>re(u)?!(u&&typeof u=="object"&&"_null"in u)&&!B(u):Array.isArray(u)?u.length:!0)}function I(x=!0){let P=Object.entries(o.value).map(([u,c])=>[u,c.$extractDirtyFields(x)]);return x&&(P=y(P)),Object.fromEntries(P)}async function U(){try{let x=t.value;return {result:(await Promise.allSettled(Object.values(o.value).map(c=>c.$validate()))).every(c=>c.status==="fulfilled"?c.value.result===!0:!1),data:x}}catch{return {result:!1,data:t.value}}}let{$shortcuts:ee,...ne}=h;return reactive({...ne,...ee,$fields:o,$value:t,$resetAll:z,$reset:s,$touch:i,$validate:U,$unwatch:w,$watch:k,$clearExternalErrors:b,$extractDirtyFields:I})}function be({rulesDef:e,externalErrors:t,...r}){if(ft(e,r.state))return St({rulesDef:e,externalErrors:t,...r});if(ct(r.state,e)){if(Te(r.state))return Oe({rulesDef:e,externalErrors:t,...r});{let n=ref({}),l=watch(n,d=>{l(),r.state.value=d;},{deep:!0}),{state:f,...p}=r;return Oe({rulesDef:e,externalErrors:t,...p,state:n})}}else if(Rt(e))return Ie({rulesDef:e,externalErrors:t,...r})}function ye({initialState:e,options:t,scopeRules:r,state:n,customRules:l,shortcuts:f,onReset:p}){let d=Ne(),m=ref();return m.value=Oe({rootRules:r,rulesDef:r,state:n,customMessages:l?.(),storage:d,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:f,fieldName:"root",path:"",onReset:p}),getCurrentScope()&&onScopeDispose(()=>{m.value?.$unwatch();}),reactive({regle:m})}function ze(e,t,r){let n={autoDirty:t?.autoDirty,lazy:t?.lazy,rewardEarly:t?.rewardEarly,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange};function l(f,p,d){let m=isRef(p)?p:computed(typeof p=="function"?p:()=>p),$={...n,...d},h=isRef(f)?f:ref(f),_=ref({...J(h.value)});function A(){_.value={...J(h.value)};}return {r$:ye({scopeRules:m,state:h,options:$,initialState:_,customRules:e,shortcuts:r,onReset:A}).regle}}return l}var Dt=ze();function qe(){function e(t,r){return r}return e}var Je=qe();function xt({rules:e,modifiers:t,shortcuts:r}){let n=ze(e,t,r),l=qe();return {useRegle:n,inferRules:l}}
2
- export{_e as InternalRuleType,Ge as createRule,xt as defineRegleConfig,Je as inferRules,Y as unwrapRuleParameters,Dt as useRegle,ye as useRootStorage};
1
+ import {toValue,version,ref,getCurrentScope,onScopeDispose,reactive,shallowRef,effectScope,computed,isRef,toRef,unref,watch,watchEffect}from'vue';function L(e){return e==null?!0:e instanceof Date?isNaN(e.getTime()):Array.isArray(e)?!1:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}var ot=Symbol("regle-rule");function Pt(e){if(typeof e.source.flags=="string")return e.source.flags;{let t=[];return e.global&&t.push("g"),e.ignoreCase&&t.push("i"),e.multiline&&t.push("m"),e.sticky&&t.push("y"),e.unicode&&t.push("u"),t.join("")}}function H(e){let t=e,r={}.toString.call(e).slice(8,-1);if(r=="Set"&&(t=new Set([...e].map(n=>H(n)))),r=="Map"&&(t=new Map([...e].map(n=>[H(n[0]),H(n[1])]))),r=="Date"&&(t=new Date(e.getTime())),r=="RegExp"&&(t=RegExp(e.source,Pt(e))),r=="Array"||r=="Object"){t=Array.isArray(e)?[]:{};for(let n in e)t[n]=H(e[n]);}return t}function Q(e){return e instanceof Date||e instanceof File?!1:typeof e=="object"&&e!==null&&!Array.isArray(e)}function Me(e){if(L(e))return !1;try{let t=null;if(e instanceof Date)t=e;else if(typeof e=="string"){let r=new Date(e);if(r.toString()==="Invalid Date")return !1;t=r;}return !!t}catch{return !1}}function _e(e){let t=Object.prototype.toString.call(e);return e==null?new Date(NaN):e instanceof Date||typeof e=="object"&&t==="[object Date]"?new Date(e.getTime()):typeof e=="number"||t==="[object Number]"?new Date(e):typeof e=="string"||t==="[object String]"?new Date(e):new Date(NaN)}var Ve=(r=>(r.Inline="__inline",r.Async="__async",r))(Ve||{});function ut(e,t){return e.some(r=>r[t])}function it(e,t){return e.reduce((r,n)=>{let l=n[t]||[];return r.concat(l)},[])}function J(e){try{return e.map(t=>toValue(t))}catch{return []}}function st(e){return e.map(t=>t instanceof Function?computed(t):isRef(t)?t:toRef(()=>t))}function ct(e){let n=e.toString().replace(/\/\/.*$/gm,"").replace(/\/\*[\s\S]*?\*\//g,"").match(/^(?:async\s*)?(?:function\b.*?\(|\((.*?)\)|(\w+))\s*=>|\((.*?)\)\s*=>|function.*?\((.*?)\)|\((.*?)\)/);return n?(n[0]||n[1]||n[2]||n[3]||n[4]||"").split(",").map(p=>p.trim()).filter(p=>p.length>0).length:0}function Ne(e,...t){let{validator:r,type:n}=e,l=n==="__async"||r.constructor.name==="AsyncFunction";return {...{validator(d,...m){return e.validator(d,...J(m.length?m:t))},message(d){return typeof e.message=="function"?e.message({...d,$params:J(d?.$params?.length?d.$params:t)}):e.message},active(d){return typeof e.active=="function"?e.active({...d,$params:J(d?.$params?.length?d.$params:t)}):e.active??!0},tooltip(d){return typeof e.tooltip=="function"?e.tooltip({...d,$params:J(d?.$params?.length?d.$params:t)}):e.tooltip??[]},exec(d){let m=e.validator(d,...J(t)),$;return m instanceof Promise?m.then(g=>($=g,typeof $=="object"&&"$valid"in $?$.$valid:typeof $=="boolean"?$:!1)):($=m,typeof $=="object"&&"$valid"in $?$.$valid:typeof $=="boolean"?$:!1)}},_validator:e.validator,_message:e.message,_active:e.active,_tooltip:e.tooltip,_type:e.type,_message_patched:!1,_tooltip_patched:!1,_async:l,_params:st(t),_brand:ot}}function Ge(e){if(typeof e.validator=="function"){let r=Ne(e,...[]),n=e.async??e.validator.constructor.name==="AsyncFunction";if(ct(e.validator)>1){let l=function(...f){return Ne(e,...f)};return l.validator=r.validator,l.message=r.message,l.active=r.active,l.tooltip=r.tooltip,l.type=r.type,l.exec=r.exec,l._validator=r.validator,l._message=r.message,l._active=r.active,l._tooltip=r.tooltip,l._type=e.type,l._message_pacthed=!1,l._tooltip_pacthed=!1,l._async=n,l}else return r}throw new Error("Validator must be a function")}function We(){let e=shallowRef(new Map),t=shallowRef(new Map),r=shallowRef(new Map),n=shallowRef(new Map),l=shallowRef(new Map),f=shallowRef(new Map);function p(o){let s=t.value.get(o);if(s)return s;{let i=ref({});return t.value.set(o,i),i}}function d(o){let s=r.value.get(o);if(s)return s;{let i=ref([]);return r.value.set(o,i),i}}function m(o,s,i){f.value.set(`${o}-${s}`,i);}function $(o,s){return f.value.get(`${o}-${s}`)}function g(o,s){o&&s!=null&&f.value.delete(`${o}-${s}`);}function V(o,s){n.value.set(o,s);}function F(o){return n.value.get(o)??!1}function a(o,s){e.value.set(o,s);}function T(o,s){let i=e.value.get(o);return i?C(s,i)?{valid:!0}:{valid:!1}:void 0}function C(o,s){let i=Object.keys(s),G=Object.keys(o);return G.length!==i.length||!G.every(W=>i.includes(W))?!1:G.every(W=>{let w=o[W],b=s[W];return !b||!w||typeof w=="function"||typeof b=="function"||typeof w=="number"||typeof w=="boolean"?!1:w._params?w._params?.every((q,y)=>{if(typeof b=="number"||typeof b=="boolean")return !0;{let I=J(b._params),k=J(w._params);return I?.[y]===k?.[y]}}):!0})}function N(o){let s=l.value.get(o);if(s)return s;{let i=ref(!1),G=ref(!0),z=ref({}),W=ref(!1);return l.value.set(o,{$pending:i,$valid:G,$metadata:z,$validating:W}),{$pending:i,$valid:G,$metadata:z,$validating:W}}}return getCurrentScope()&&onScopeDispose(()=>{e.value.clear(),t.value.clear(),r.value.clear(),n.value.clear(),l.value.clear(),f.value.clear();}),{addRuleDeclEntry:a,setDirtyEntry:V,checkRuleDeclEntry:T,getDirtyState:F,trySetRuleStatusRef:N,getFieldsEntry:p,getCollectionsEntry:d,getArrayStatus:$,addArrayStatus:m,deleteArrayStatus:g,arrayStatusStorage:f}}function Te(e){return e.value instanceof Date||e.value instanceof File?!1:Q(e.value)}function ke(e,t,r){let n=effectScope(),l;return e instanceof Function?l=n.run(()=>e(t,r??0)):l=e,{scope:n,unwrapped:l}}function De(e,t,r){let n,l=(...f)=>new Promise(p=>{clearTimeout(n),n=setTimeout(()=>{n=void 0,Promise.resolve(e.apply(this,[...f])).then(p);},t);});return l.cancel=()=>{clearTimeout(n),n=void 0;},l}function Gt(e,t){let r=String(e).split("."),n=String(t).split(".");for(let l=0;l<Math.min(r.length,n.length);l++){let f=Number(r[l]),p=Number(n[l]);if(f>p)return 1;if(p>f)return -1;if(!isNaN(f)&&isNaN(p))return 1;if(isNaN(f)&&!isNaN(p))return -1}return 0}var xe=Gt(version,"3.5.0")!==-1;function Wt(){return Math.floor(Math.random()*Date.now()).toString()}function Ce(){return typeof window>"u"?Wt():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function ft(e,t){return Te(e)||Q(t.value)&&!L(t.value)&&!Object.entries(t.value).some(([r,n])=>$e(n)||typeof n=="function")}function Rt(e,t){return !!e.value&&Q(e.value)&&"$each"in e.value||Array.isArray(t.value)}function pt(e){return !!e.value&&Q(e.value)}function $e(e){return Q(e)&&"_validator"in e}function ge(e){return typeof e.value!="function"}function dt(e){return Q(e)&&"$fields"in e}function yt(e){return !!e&&"$rules"in e}function Ue({field:e,silent:t=!1}){return Object.entries(e.$rules??{}).map(([r,n])=>t||!n.$valid&&e.$dirty&&!n.$validating?n.$message:null).filter(r=>!!r).reduce((r,n)=>typeof n=="string"?r?.concat([n]):r?.concat(n),[]).concat(e.$dirty?e.$externalErrors??[]:[])}function vt({field:e}){return Object.entries(e.$rules??{}).map(([t,r])=>r.$tooltip).filter(t=>!!t).reduce((t,r)=>typeof r=="string"?t?.concat([r]):t?.concat(r),[])}function mt({fieldProperties:e,customMessages:t,rule:r,ruleKey:n,state:l,path:f,storage:p,$debounce:d,modifiers:m}){let $=effectScope(),g={},V,F=ref(!1),{$pending:a,$valid:T,$metadata:C,$validating:N}=p.trySetRuleStatusRef(`${f}.${n}`);function o(){$=effectScope(),g=$.run(()=>{let b=computed(()=>({$value:l.value,$error:e.$error.value,$dirty:e.$dirty.value,$pending:e.$pending.value,$valid:e.$valid.value,$invalid:e.$invalid.value,$rule:{$valid:T.value,$invalid:!T.value,$pending:a.value},$params:D.value,...C.value})),q=computed(()=>ge(r)?typeof r.value.active=="function"?r.value.active(b.value):!!r.value.active:!0);function y(u){let c="",S=t?t[n]?.[u]:void 0;if(S&&(typeof S=="function"?c=S(b.value):c=S),ge(r)){let R=`_${u}_patched`;S&&!r.value[R]||(typeof r.value[u]=="function"?c=r.value[u](b.value):c=r.value[u]??"");}return c}let I=computed(()=>{let u=y("message");return L(u)&&(u="This field is not valid"),u}),k=computed(()=>y("tooltip")),te=computed(()=>ge(r)&&r.value.type?r.value.type:n),ae=computed(()=>ge(r)?r.value.validator:r.value),D=computed(()=>typeof r.value=="function"?[]:J(r.value._params??[])),P=computed(()=>`${f}.${te.value}`);return {$active:q,$message:I,$type:te,$validator:ae,$params:D,$path:P,$tooltip:k}}),V=watch(g?.$params,()=>{(m.$autoDirty.value||m.$rewardEarly.value&&e.$error.value)&&z();});}o();function s(){T.value=!0,e.$dirty.value&&(a.value=!0);}async function i(){let b=!1;try{let q=g.$validator.value,y=q(l.value,...g.$params.value),I=l.value;s();let k;if(y instanceof Promise?k=await y:k=y,l.value!==I)return !0;if(typeof k=="boolean")b=k;else {let{$valid:te,...ae}=k;b=te,C.value=ae;}}catch{b=!1;}finally{a.value=!1;}return b}let G=De(i,d??200);async function z(){try{N.value=!0;let b=!1;if($e(r.value)&&r.value._async)b=await G();else {let q=g.$validator.value,y=q(l.value,...g.$params.value);if(y instanceof Promise)console.warn('You used a async validator function on a non-async rule, please use "async await" or the "withAsync" helper');else if(y!=null)if(typeof y=="boolean")b=y;else {let{$valid:I,...k}=y;b=I,C.value=k;}}return T.value=b,b}catch{return !1}finally{N.value=!1;}}function W(){T.value=!0,C.value={},a.value=!1,N.value=!1,o();}function w(){V(),$.stop(),$=effectScope();}return reactive({...g,$pending:a,$valid:T,$metadata:C,$haveAsync:F,$validating:N,$validate:z,$unwatch:w,$watch:o,$reset:W})}function Ie({state:e,rulesDef:t,customMessages:r,path:n,fieldName:l,storage:f,options:p,externalErrors:d,onUnwatch:m,$isArray:$,initialState:g,shortcuts:V}){let F=effectScope(),a,T=[],C,N,o,s,i=()=>{};function G(){let v=t.value,A=f.checkRuleDeclEntry(n,v);I.value=Object.fromEntries(Object.entries(v).filter(([M])=>M.startsWith("$"))),w(),y.value=Object.fromEntries(Object.entries(t.value).filter(([M])=>!M.startsWith("$")).map(([M,Z])=>{if(Z){let re=toRef(()=>Z);return [M,mt({fieldProperties:{$dirty:a.$dirty,$error:a.$error,$invalid:a.$invalid,$pending:a.$pending,$valid:a.$valid},modifiers:{$autoDirty:a.$autoDirty,$rewardEarly:a.$rewardEarly},customMessages:r,rule:re,ruleKey:M,state:e,path:n,storage:f,$debounce:I.value.$debounce})]}return []}).filter(M=>!!M.length)),a.processShortcuts(),z(),A?.valid!=null&&(a.$dirty.value=f.getDirtyState(n),a.$dirty.value&&i()),f.addRuleDeclEntry(n,v);}function z(){i=a.$debounce.value?De(q,a.$debounce.value??a.$haveAnyAsyncRule?100:0):q;}function W(){y.value&&Object.entries(y.value).forEach(([v,A])=>{A.$unwatch();}),o(),a.$dirty.value&&f.setDirtyEntry(n,a.$dirty.value),C?.(),N?.(),F.stop(),F=effectScope(),T.forEach(v=>v.stop()),T=[],m?.(),s?.();}function w(){y.value&&Object.entries(y.value).forEach(([v,A])=>{A.$watch();}),a=F.run(()=>{let v=ref(!1),A=ref(!1),M=computed(()=>v.value),Z=computed(()=>I.value.$debounce),re=computed(()=>I.value.$lazy!=null?I.value.$lazy:unref(p.lazy)!=null?unref(p.lazy):!1),h=computed(()=>I.value.$rewardEarly!=null?I.value.$rewardEarly:unref(p.rewardEarly)!=null?unref(p.rewardEarly):!1),O=computed(()=>I.value.$clearExternalErrorsOnChange!=null?I.value.$clearExternalErrorsOnChange:unref(p.clearExternalErrorsOnChange)!=null?unref(p.clearExternalErrorsOnChange):!0),E=computed(()=>I.value.$autoDirty!=null?I.value.$autoDirty:unref(p.autoDirty)!=null?unref(p.autoDirty):!h.value),_=computed(()=>Object.entries(y.value).some(([K,le])=>le.$validating)),ve=computed({get:()=>e.value,set(K){C(),e.value=K,b();}}),Ae=computed(()=>fe.value&&!me.value&&v.value),Qe=computed(()=>Ae.value?Ue({field:{$dirty:v.value,$externalErrors:d?.value,$rules:y.value}}):[]),je=computed(()=>v.value?Me(g.value)&&Me(e.value)?_e(g.value).getDate()!==_e(e.value).getDate():g.value==null?!!e.value:Array.isArray(e.value)&&Array.isArray(g.value)?e.value.length!==g.value.length:g.value!==e.value:!1),Xe=computed(()=>je.value),Ze=computed(()=>vt({field:{$rules:y.value}})),Ke=computed(()=>Ue({field:{$dirty:v.value,$externalErrors:d?.value,$rules:y.value},silent:!0})),et=computed(()=>E.value?M.value&&!(fe.value||me.value):!(fe.value||me.value)),me=computed(()=>A.value||!h.value?Object.entries(y.value).some(([K,le])=>le.$pending):!1),fe=computed(()=>d?.value?.length?!0:L(y.value)?!1:!h.value||h.value&&A.value?Object.entries(y.value).some(([K,le])=>!le.$valid):!1),tt=computed(()=>l),Fe=computed(()=>!!L(y.value)),rt=computed(()=>d?.value?.length||Fe.value?!1:v.value&&!L(e.value)&&!_.value?Object.values(y.value).every(K=>K.$valid&&K.$active):!1),It=computed(()=>Object.entries(y.value).some(([K,le])=>le.$haveAsync));function wt(){V?.fields&&Object.entries(V.fields).forEach(([K,le])=>{let at=effectScope();nt[K]=at.run(()=>{let lt=ref();return watchEffect(()=>{lt.value=le(reactive({$dirty:v,$externalErrors:d?.value??[],$value:e,$silentValue:ve,$rules:y,$error:Ae,$pending:me,$invalid:fe,$valid:rt,$errors:Qe,$ready:et,$silentErrors:Ke,$anyDirty:M,$tooltips:Ze,$name:tt,$inactive:Fe,$edited:je,$anyEdited:Xe}));}),lt}),T.push(at);});}let nt={};return watch(fe,K=>{K||(A.value=!1);}),{$error:Ae,$pending:me,$invalid:fe,$valid:rt,$debounce:Z,$lazy:re,$errors:Qe,$ready:et,$silentErrors:Ke,$rewardEarly:h,$autoDirty:E,$clearExternalErrorsOnChange:O,$anyDirty:M,$edited:je,$anyEdited:Xe,$name:tt,$haveAnyAsyncRule:It,$shortcuts:nt,$validating:_,$tooltips:Ze,$dirty:v,triggerPunishment:A,processShortcuts:wt,$silentValue:ve,$inactive:Fe}}),b(),o=watch(a.$dirty,()=>{f.setDirtyEntry(n,a.$dirty.value);}),N=watch(a.$valid,v=>{a.$rewardEarly.value&&v&&(a.triggerPunishment.value=!1);}),s=watch(a.$haveAnyAsyncRule,z);}function b(){C=watch(e,()=>{a.$autoDirty.value&&(a.$dirty.value||(a.$dirty.value=!0)),t.value instanceof Function&&G(),(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&i(),a.$rewardEarly.value!==!0&&a.$clearExternalErrorsOnChange.value&&u();},{deep:$?!0:xe?1:!0});}function q(){Object.values(y.value).forEach(v=>{v.$validate();});}let y=ref({}),I=ref({});G();function k(){u(),a.$dirty.value=!1,a.triggerPunishment.value=!1,f.setDirtyEntry(n,!1),g.value=Q(e.value)?H(e.value):Array.isArray(e.value)?[...e.value]:e.value,Object.entries(y.value).forEach(([v,A])=>{A.$reset();}),!a.$lazy.value&&a.$autoDirty.value&&Object.values(y.value).forEach(v=>v.$validate());}function te(v=!0,A=!1){a.$dirty.value||(a.$dirty.value=!0),A&&v?(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&i():v&&i();}async function ae(){try{let v=e.value;if(a.triggerPunishment.value=!0,!a.$dirty.value)a.$dirty.value=!0;else if(a.$autoDirty.value&&a.$dirty.value&&!a.$pending.value)return {result:!a.$error.value,data:v};return L(y.value)?{result:!0,data:v}:{result:(await Promise.allSettled(Object.entries(y.value).map(([Z,re])=>re.$validate()))).every(Z=>Z.status==="fulfilled"?Z.value===!0:!1),data:v}}catch{return {result:!1,data:e.value}}}function D(){W(),e.value=H(g),k();}function P(v=!0){return a.$dirty.value?e.value:v?{_null:!0}:null}function u(){d?.value?.length&&(d.value=[]);}!a.$lazy.value&&!a.$dirty.value&&a.$autoDirty.value&&i();let{$shortcuts:c,$validating:S,$autoDirty:R,$rewardEarly:x,$clearExternalErrorsOnChange:B,$haveAnyAsyncRule:ee,$debounce:X,$lazy:oe,...ce}=a;return reactive({...ce,$externalErrors:d,$value:e,$rules:y,...c,$reset:k,$touch:te,$validate:ae,$unwatch:W,$watch:w,$resetAll:D,$extractDirtyFields:P,$clearExternalErrors:u})}function He({$id:e,path:t,index:r,options:n,storage:l,stateValue:f,customMessages:p,rules:d,externalErrors:m,initialState:$,shortcuts:g,fieldName:V}){let F=d.$key?d.$key:Ce(),a=`${t}.${String(F)}`;typeof f.value=="object"&&f.value!=null&&(f.value.$id?a=`${t}.${f.value.$id}`:Object.defineProperties(f.value,{$id:{value:F,enumerable:!1,configurable:!1,writable:!1}}));let T=be({state:f,rulesDef:toRef(()=>d),customMessages:p,path:a,storage:l,options:n,externalErrors:toRef(m?.value??[],r),initialState:$,shortcuts:g,fieldName:V});if(T){let C=f.value?.$id;T.$id=C??String(F),l.addArrayStatus(e,T.$id,T);}return T}function ht({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:f,externalErrors:p,initialState:d,shortcuts:m,fieldName:$}){let g=effectScope(),V,F=effectScope(),a,T=[];if(!Array.isArray(e.value)&&!t.value.$each)return;let C=ref(),N=ref(e.value),o,s=ref({}),i=l.getCollectionsEntry(n);a=F.run(()=>({isPrimitiveArray:computed(()=>Array.isArray(e.value)&&e.value.length?e.value.some(c=>typeof c!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(c=>$e(c)):!1)})),G(),w();function G(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?(C.value=Ce(),Object.defineProperties(e.value,{$id:{value:C.value,enumerable:!1,configurable:!1,writable:!1}})):e.value?.$id&&(C.value=e.value.$id)),!a.isPrimitiveArray.value&&(N.value=s.value.$value,Array.isArray(e.value)?i.value=e.value.map((u,c)=>{let{scope:S,unwrapped:R}=ke(t.value.$each,toRef(()=>u),c);S&&T.push(S);let x=toRef(d.value??[],c),B=He({$id:C.value,path:n,customMessages:r,rules:R??{},stateValue:toRef(()=>u),index:c,options:f,storage:l,externalErrors:toRef(p?.value??{},"$each"),initialState:x,shortcuts:m,fieldName:$});return B||null}).filter(u=>!!u):i.value=[],s.value=Ie({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:f,externalErrors:toRef(p?.value??{},"$self"),$isArray:!0,initialState:d,shortcuts:m,fieldName:$}));}function z(){if(Array.isArray(e.value)){let u=H(i.value);i.value=e.value.map((c,S)=>{let R=toRef(()=>c);if(c.$id&&i.value.find(x=>x.$id===c.$id)){let x=l.getArrayStatus(C.value,c.$id);return x?(x.$value=R,x):null}else {let{scope:x,unwrapped:B}=ke(t.value.$each,R,S);if(x&&T.push(x),B){let ee=He({$id:C.value,path:n,customMessages:r,rules:B,stateValue:R,index:S,options:f,storage:l,externalErrors:toRef(p?.value??{},"$each"),initialState:toRef(d.value??[],S),shortcuts:m,fieldName:$});return ee||null}}}).filter(c=>!!c),u.filter(c=>!e.value.find(S=>c.$id===S.$id)).forEach((c,S)=>{l.deleteArrayStatus(C.value,S.toString());});}else i.value=[];}function W(){o=watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?G():z();},{deep:xe?1:!0,flush:"pre"});}function w(){W(),g=effectScope(),V=g.run(()=>{let u=computed({get:()=>e.value,set(h){o(),e.value=h,W();}}),c=computed(()=>s.value.$dirty&&!!i.value.length&&i.value.every(h=>h.$dirty)),S=computed(()=>s.value.$anyDirty||i.value.some(h=>h.$anyDirty)),R=computed(()=>s.value.$invalid||i.value.some(h=>h.$invalid)),x=computed(()=>(L(s.value.$rules)?!0:s.value.$valid)&&i.value.every(h=>h.$valid)),B=computed(()=>s.value.$error||i.value.some(h=>h.$error)),ee=computed(()=>!(R.value||X.value)),X=computed(()=>s.value.$pending||i.value.some(h=>h.$pending)),oe=computed(()=>!!i.value.length&&i.value.every(h=>h.$edited)),ce=computed(()=>s.value.$anyEdited||i.value.some(h=>h.$anyEdited)),v=computed(()=>({$self:s.value.$errors,$each:i.value.map(h=>h.$errors)})),A=computed(()=>({$self:s.value.$silentErrors,$each:i.value.map(h=>h.$silentErrors)})),M=computed(()=>$);function Z(){m?.collections&&Object.entries(m?.collections).forEach(([h,O])=>{let E=effectScope();re[h]=E.run(()=>{let _=ref();return watchEffect(()=>{_.value=O(reactive({$dirty:c,$error:B,$silentValue:u,$pending:X,$invalid:R,$valid:x,$errors:v,$ready:ee,$silentErrors:A,$anyDirty:S,$name:M,$each:i,$field:s,$value:e,$edited:oe,$anyEdited:ce}));}),_}),T.push(E);});}let re={};return Z(),{$dirty:c,$anyDirty:S,$invalid:R,$valid:x,$error:B,$pending:X,$errors:v,$silentErrors:A,$ready:ee,$name:M,$shortcuts:re,$silentValue:u,$edited:oe,$anyEdited:ce}}),a.isPrimitiveArray.value&&(console.warn(`${n} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`),o());}function b(){o&&o(),s.value&&s.value.$unwatch(),i.value&&i.value.forEach(u=>{"$dirty"in u&&u.$unwatch();}),g.stop(),g=effectScope(),F.stop(),F=effectScope(!0),T.forEach(u=>u.stop()),T=[];}function q(u=!0,c=!1){s.value.$touch(u,c),i.value.forEach(S=>{S.$touch(u,c);});}function y(){s.value.$reset(),i.value.forEach(u=>{u.$reset();});}async function I(){let u=e.value;try{return {result:(await Promise.allSettled([s.value.$validate(),...i.value.map(R=>R.$validate())])).every(R=>R.status==="fulfilled"?R.value.result===!0:!1),data:u}}catch{return {result:!1,data:u}}}function k(){s.value.$clearExternalErrors(),i.value.forEach(u=>{u.$clearExternalErrors();});}function te(u=!0){let c=i.value.map(S=>{if(dt(S))return S.$extractDirtyFields(u)});return u&&c.every(S=>L(S))&&(c=[]),c}function ae(){b(),e.value=H(d.value),y();}let{$shortcuts:D,...P}=V;return reactive({$field:s,...P,...D,$each:i,$value:e,$validate:I,$unwatch:b,$watch:w,$touch:q,$reset:y,$resetAll:ae,$extractDirtyFields:te,$clearExternalErrors:k})}function Oe({rulesDef:e,state:t,path:r="",rootRules:n,externalErrors:l,validationGroups:f,initialState:p,fieldName:d,...m}){let $=effectScope(),g,V=[],F=null,a=null,T=null;async function N(D=!0){let P=Object.entries(e.value),u=Object.fromEntries(P.filter(([R,x])=>!!x).map(([R,x])=>{if(x){let B=toRef(t.value,R),ee=toRef(()=>x),X=toRef(l?.value??{},R),oe=toRef(p?.value??{},R);return [R,be({state:B,rulesDef:ee,path:r?`${r}.${R}`:R,externalErrors:X,initialState:oe,fieldName:R,...m})]}return []})),c=Object.fromEntries(Object.entries(unref(l)??{}).filter(([R,x])=>!(R in e.value)&&!!x).map(([R])=>{let x=toRef(t.value,R),B=toRef(p?.value??{},R);return [R,be({state:x,rulesDef:computed(()=>({})),path:r?`${r}.${R}`:R,externalErrors:toRef(l?.value??{},R),initialState:B,fieldName:R,...m})]})),S=Object.fromEntries(Object.entries(t.value).filter(([R])=>!(R in e.value)&&!(R in(c.value??{}))).map(([R])=>{let x=toRef(t.value,R),B=toRef(p?.value??{},R);return [R,be({state:x,rulesDef:computed(()=>({})),path:r?`${r}.${R}`:R,externalErrors:toRef(l?.value??{},R),initialState:B,fieldName:R,...m})]}));o.value={...u,...c,...S},D&&W();}let o=m.storage.getFieldsEntry(r);N();function s(){a?.(),Object.values(o.value).forEach(D=>{D.$reset();}),p.value={...H(t.value)},G();}function i(D=!0,P=!1){Object.values(o.value).forEach(u=>{u.$touch(D,P);});}function G(){l?.value&&(a=watch(l,()=>{w(),N();},{deep:!0}));}function z(){T=watch(t,()=>{w(),N(),i(!0,!0);},{flush:"sync"});}function W(){n&&(F?.(),F=watch(n,()=>{w(),N();},{deep:!0,flush:"post"}),G()),z(),$=effectScope(),g=$.run(()=>{let D=computed({get:()=>t.value,set(O){w(),t.value=O,N();}}),P=computed(()=>!!Object.entries(o.value).length&&Object.entries(o.value).every(([O,E])=>E?.$dirty)),u=computed(()=>Object.entries(o.value).some(([O,E])=>E?.$anyDirty)),c=computed(()=>Object.entries(o.value).some(([O,E])=>E?.$invalid)),S=computed(()=>{let O=Object.entries(o.value).filter(([E,_])=>yt(_)?!_.$inactive:!0);return O.length?O.every(([E,_])=>_?.$valid):!1}),R=computed(()=>u.value&&!X.value&&c.value),x=computed(()=>unref(m.options.rewardEarly)!=null?unref(m.options.rewardEarly):!1),B=computed(()=>unref(m.options.autoDirty)!=null?unref(m.options.autoDirty):!x.value),ee=computed(()=>B.value?u.value&&!(c.value||X.value):!(c.value||X.value)),X=computed(()=>Object.entries(o.value).some(([O,E])=>E?.$pending)),oe=computed(()=>Object.fromEntries(Object.entries(o.value).map(([O,E])=>[O,E?.$errors]))),ce=computed(()=>Object.fromEntries(Object.entries(o.value).map(([O,E])=>[O,E?.$silentErrors]))),v=computed(()=>!!Object.entries(o.value).length&&Object.entries(o.value).every(([O,E])=>E?.$edited)),A=computed(()=>Object.entries(o.value).some(([O,E])=>E?.$anyEdited)),M=computed(()=>d);function Z(){m.shortcuts?.nested&&Object.entries(m.shortcuts.nested).forEach(([O,E])=>{let _=effectScope();h[O]=_.run(()=>{let ve=ref();return watchEffect(()=>{ve.value=E(reactive({$dirty:P,$value:t,$silentValue:D,$error:R,$pending:X,$invalid:c,$valid:S,$ready:ee,$anyDirty:u,$name:M,$silentErrors:ce,$errors:oe,$fields:o,$edited:v,$anyEdited:A}));}),ve}),V.push(_);});}let re=computed({get:()=>f?Object.fromEntries(Object.entries(f?.(o.value)??{}).map(([O,E])=>E.length?[O,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$valid"].map(_=>[_,ut(E,_)])),...Object.fromEntries(["$errors","$silentErrors"].map(_=>[_,it(E,_)]))}]:[])):{},set(){}}),h={};return Z(),{$dirty:P,$anyDirty:u,$invalid:c,$valid:S,$error:R,$pending:X,$errors:oe,$silentErrors:ce,$ready:ee,$name:M,$shortcuts:h,$groups:re,$silentValue:D,$edited:v,$anyEdited:A}});}function w(){F?.(),a?.(),T?.(),V.forEach(D=>D.stop()),V=[],$.stop(),o.value&&Object.entries(o.value).forEach(([D,P])=>{P.$unwatch();});}function b(){Object.entries(o.value).forEach(([D,P])=>{P.$clearExternalErrors();});}async function q(){w(),t.value=H({...p.value??{}}),s(),N();}function y(D){return D.filter(([P,u])=>Q(u)?!(u&&typeof u=="object"&&"_null"in u)&&!L(u):Array.isArray(u)?u.length:!0)}function I(D=!0){let P=Object.entries(o.value).map(([u,c])=>[u,c.$extractDirtyFields(D)]);return D&&(P=y(P)),Object.fromEntries(P)}async function k(){try{let D=t.value;return {result:(await Promise.allSettled(Object.values(o.value).map(c=>c.$validate()))).every(c=>c.status==="fulfilled"?c.value.result===!0:!1),data:D}}catch{return {result:!1,data:t.value}}}let{$shortcuts:te,...ae}=g;return reactive({...ae,...te,$fields:o,$value:t,$resetAll:q,$reset:s,$touch:i,$validate:k,$unwatch:w,$watch:W,$clearExternalErrors:b,$extractDirtyFields:I})}function be({rulesDef:e,externalErrors:t,...r}){if(Rt(e,r.state))return ht({rulesDef:e,externalErrors:t,...r});if(ft(r.state,e)){if(Te(r.state))return Oe({rulesDef:e,externalErrors:t,...r});{let n=ref({}),l=watch(n,d=>{l(),r.state.value=d;},{deep:!0}),{state:f,...p}=r;return Oe({rulesDef:e,externalErrors:t,...p,state:n})}}else if(pt(e))return Ie({rulesDef:e,externalErrors:t,...r})}function ye({initialState:e,options:t,scopeRules:r,state:n,customRules:l,shortcuts:f}){let p=We(),d=ref();return d.value=Oe({rootRules:r,rulesDef:r,state:n,customMessages:l?.(),storage:p,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:f,fieldName:"root",path:""}),getCurrentScope()&&onScopeDispose(()=>{d.value?.$unwatch();}),reactive({regle:d})}function qe(e,t,r){let n={autoDirty:t?.autoDirty,lazy:t?.lazy,rewardEarly:t?.rewardEarly,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange};function l(f,p,d){let m=isRef(p)?p:computed(typeof p=="function"?p:()=>p),$={...n,...d},g=isRef(f)?f:ref(f),V=ref({...H(g.value)});return {r$:ye({scopeRules:m,state:g,options:$,initialState:V,customRules:e,shortcuts:r}).regle}}return l}var xt=qe();function Je(){function e(t,r){return r}return e}var Ye=Je();function Ct({rules:e,modifiers:t,shortcuts:r}){let n=qe(e,t,r),l=Je();return {useRegle:n,inferRules:l}}
2
+ export{Ve as InternalRuleType,Ge as createRule,Ct as defineRegleConfig,Ye as inferRules,J as unwrapRuleParameters,xt as useRegle,ye as useRootStorage};
@@ -75,8 +75,6 @@ function isDate(value) {
75
75
  let possibleDate = null;
76
76
  if (value instanceof Date) {
77
77
  possibleDate = value;
78
- } else if (typeof value === "number" && !isNaN(value)) {
79
- possibleDate = new Date(value);
80
78
  } else if (typeof value === "string") {
81
79
  const date = new Date(value);
82
80
  if (date.toString() === "Invalid Date") {
@@ -90,6 +88,22 @@ function isDate(value) {
90
88
  }
91
89
  }
92
90
 
91
+ // ../shared/utils/toDate.ts
92
+ function toDate(argument) {
93
+ const argStr = Object.prototype.toString.call(argument);
94
+ if (argument == null) {
95
+ return /* @__PURE__ */ new Date(NaN);
96
+ } else if (argument instanceof Date || typeof argument === "object" && argStr === "[object Date]") {
97
+ return new Date(argument.getTime());
98
+ } else if (typeof argument === "number" || argStr === "[object Number]") {
99
+ return new Date(argument);
100
+ } else if (typeof argument === "string" || argStr === "[object String]") {
101
+ return new Date(argument);
102
+ } else {
103
+ return /* @__PURE__ */ new Date(NaN);
104
+ }
105
+ }
106
+
93
107
  // src/types/rules/rule.internal.types.ts
94
108
  var InternalRuleType = /* @__PURE__ */ ((InternalRuleType2) => {
95
109
  InternalRuleType2["Inline"] = "__inline";
@@ -434,7 +448,7 @@ function isNestedRulesDef(state, rules) {
434
448
  return isRefObject(state) || isObject(rules.value) && !isEmpty(rules.value) && !Object.entries(rules.value).some(([key, rule]) => isRuleDef(rule) || typeof rule === "function");
435
449
  }
436
450
  function isCollectionRulesDef(rules, state) {
437
- return !!rules.value && "$each" in rules.value || Array.isArray(state.value);
451
+ return !!rules.value && isObject(rules.value) && "$each" in rules.value || Array.isArray(state.value);
438
452
  }
439
453
  function isValidatorRulesDef(rules) {
440
454
  return !!rules.value && isObject(rules.value);
@@ -866,7 +880,13 @@ function createReactiveFieldStatus({
866
880
  const $edited = computed(() => {
867
881
  if ($dirty.value) {
868
882
  if (isDate(initialState.value) && isDate(state.value)) {
869
- return initialState.value.getDate() !== state.value.getDate();
883
+ return toDate(initialState.value).getDate() !== toDate(state.value).getDate();
884
+ }
885
+ if (initialState.value == null) {
886
+ return !!state.value;
887
+ }
888
+ if (Array.isArray(state.value) && Array.isArray(initialState.value)) {
889
+ return state.value.length !== initialState.value.length;
870
890
  }
871
891
  return initialState.value !== state.value;
872
892
  }
@@ -910,7 +930,7 @@ function createReactiveFieldStatus({
910
930
  } else if (isEmpty($rules.value)) {
911
931
  return false;
912
932
  } else if (!$rewardEarly2.value || $rewardEarly2.value && triggerPunishment.value) {
913
- return Object.entries($rules.value).some(([key, ruleResult]) => {
933
+ return Object.entries($rules.value).some(([_, ruleResult]) => {
914
934
  return !ruleResult.$valid;
915
935
  });
916
936
  }
@@ -1056,6 +1076,7 @@ function createReactiveFieldStatus({
1056
1076
  scopeState.$dirty.value = false;
1057
1077
  scopeState.triggerPunishment.value = false;
1058
1078
  storage.setDirtyEntry(path, false);
1079
+ initialState.value = isObject(state.value) ? cloneDeep(state.value) : Array.isArray(state.value) ? [...state.value] : state.value;
1059
1080
  Object.entries($rules.value).forEach(([_, rule]) => {
1060
1081
  rule.$reset();
1061
1082
  });
@@ -1193,7 +1214,7 @@ function createCollectionElement({
1193
1214
  storage,
1194
1215
  options,
1195
1216
  externalErrors: toRef(externalErrors?.value ?? [], index),
1196
- initialState: computed(() => initialState.value?.[index]),
1217
+ initialState,
1197
1218
  shortcuts,
1198
1219
  fieldName
1199
1220
  });
@@ -1276,6 +1297,7 @@ function createReactiveCollectionStatus({
1276
1297
  if (scope2) {
1277
1298
  collectionScopes.push(scope2);
1278
1299
  }
1300
+ const initialStateRef = toRef(initialState.value ?? [], index);
1279
1301
  const element = createCollectionElement({
1280
1302
  $id: $id.value,
1281
1303
  path,
@@ -1286,7 +1308,7 @@ function createReactiveCollectionStatus({
1286
1308
  options,
1287
1309
  storage,
1288
1310
  externalErrors: toRef(externalErrors?.value ?? {}, `$each`),
1289
- initialState: computed(() => initialState.value?.[index]),
1311
+ initialState: initialStateRef,
1290
1312
  shortcuts,
1291
1313
  fieldName
1292
1314
  });
@@ -1340,7 +1362,7 @@ function createReactiveCollectionStatus({
1340
1362
  options,
1341
1363
  storage,
1342
1364
  externalErrors: toRef(externalErrors?.value ?? {}, `$each`),
1343
- initialState: computed(() => initialState.value?.[index]),
1365
+ initialState: toRef(initialState.value ?? [], index),
1344
1366
  shortcuts,
1345
1367
  fieldName
1346
1368
  });
@@ -1417,7 +1439,7 @@ function createReactiveCollectionStatus({
1417
1439
  });
1418
1440
  });
1419
1441
  const $edited = computed(() => {
1420
- return $fieldStatus.value.$edited && !!$eachStatus.value.length && $eachStatus.value.every((statusOrField) => {
1442
+ return !!$eachStatus.value.length && $eachStatus.value.every((statusOrField) => {
1421
1443
  return statusOrField.$edited;
1422
1444
  });
1423
1445
  });
@@ -1623,7 +1645,7 @@ function createReactiveNestedStatus({
1623
1645
  const stateRef = toRef(state.value, statePropKey);
1624
1646
  const statePropRulesRef = toRef(() => statePropRules);
1625
1647
  const $externalErrors = toRef(externalErrors?.value ?? {}, statePropKey);
1626
- const initialStateRef = computed(() => initialState?.value?.[statePropKey]);
1648
+ const initialStateRef = toRef(initialState?.value ?? {}, statePropKey);
1627
1649
  return [
1628
1650
  statePropKey,
1629
1651
  createReactiveChildrenStatus({
@@ -1643,7 +1665,7 @@ function createReactiveNestedStatus({
1643
1665
  const externalRulesStatus = Object.fromEntries(
1644
1666
  Object.entries(unref(externalErrors) ?? {}).filter(([key, errors]) => !(key in rulesDef.value) && !!errors).map(([key]) => {
1645
1667
  const stateRef = toRef(state.value, key);
1646
- const initialStateRef = computed(() => initialState?.value?.[key]);
1668
+ const initialStateRef = toRef(initialState?.value ?? {}, key);
1647
1669
  return [
1648
1670
  key,
1649
1671
  createReactiveChildrenStatus({
@@ -1661,7 +1683,7 @@ function createReactiveNestedStatus({
1661
1683
  const statesWithNoRules = Object.fromEntries(
1662
1684
  Object.entries(state.value).filter(([key]) => !(key in rulesDef.value) && !(key in (externalRulesStatus.value ?? {}))).map(([key]) => {
1663
1685
  const stateRef = toRef(state.value, key);
1664
- const initialStateRef = computed(() => initialState?.value?.[key]);
1686
+ const initialStateRef = toRef(initialState?.value ?? {}, key);
1665
1687
  return [
1666
1688
  key,
1667
1689
  createReactiveChildrenStatus({
@@ -1692,7 +1714,7 @@ function createReactiveNestedStatus({
1692
1714
  Object.values($fields.value).forEach((statusOrField) => {
1693
1715
  statusOrField.$reset();
1694
1716
  });
1695
- commonArgs.onReset?.();
1717
+ initialState.value = { ...cloneDeep(state.value) };
1696
1718
  define$WatchExternalErrors();
1697
1719
  }
1698
1720
  function $touch(runCommit = true, withConditions = false) {
@@ -2047,8 +2069,7 @@ function useRootStorage({
2047
2069
  scopeRules,
2048
2070
  state,
2049
2071
  customRules,
2050
- shortcuts,
2051
- onReset
2072
+ shortcuts
2052
2073
  }) {
2053
2074
  const storage = useStorage();
2054
2075
  const regle = ref();
@@ -2064,8 +2085,7 @@ function useRootStorage({
2064
2085
  initialState,
2065
2086
  shortcuts,
2066
2087
  fieldName: "root",
2067
- path: "",
2068
- onReset
2088
+ path: ""
2069
2089
  });
2070
2090
  if (getCurrentScope()) {
2071
2091
  onScopeDispose(() => {
@@ -2091,17 +2111,13 @@ function createUseRegleComposable(customRules, options, shortcuts) {
2091
2111
  };
2092
2112
  const processedState = isRef(state) ? state : ref(state);
2093
2113
  const initialState = ref({ ...cloneDeep(processedState.value) });
2094
- function onReset() {
2095
- initialState.value = { ...cloneDeep(processedState.value) };
2096
- }
2097
2114
  const regle = useRootStorage({
2098
2115
  scopeRules,
2099
2116
  state: processedState,
2100
2117
  options: resolvedOptions,
2101
2118
  initialState,
2102
2119
  customRules,
2103
- shortcuts,
2104
- onReset
2120
+ shortcuts
2105
2121
  });
2106
2122
  return {
2107
2123
  r$: regle.regle
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@regle/core",
3
- "version": "0.5.12",
3
+ "version": "0.5.14",
4
4
  "description": "Type safe form validation library for Vue 3",
5
5
  "peerDependencies": {
6
6
  "vue": "^3.3.0"