@regle/core 0.8.0 → 0.8.1

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.
@@ -9,14 +9,14 @@ function isEmpty(value, considerEmptyArrayInvalid = true) {
9
9
  }
10
10
  if (value instanceof Date) {
11
11
  return isNaN(value.getTime());
12
- }
13
- if (Array.isArray(value)) {
12
+ } else if (value instanceof File) {
13
+ return value.size > 0;
14
+ } else if (Array.isArray(value)) {
14
15
  if (considerEmptyArrayInvalid) {
15
16
  return value.length === 0;
16
17
  }
17
18
  return false;
18
- }
19
- if (typeof value === "object" && value != null) {
19
+ } else if (typeof value === "object" && value != null) {
20
20
  return Object.keys(value).length === 0;
21
21
  }
22
22
  return !String(value).length;
@@ -518,13 +518,13 @@ function createReactiveRuleStatus({
518
518
  const $fieldError = vue.ref(false);
519
519
  const $fieldInvalid = vue.ref(true);
520
520
  const $fieldPending = vue.ref(false);
521
- const $fieldValid = vue.ref(false);
521
+ const $fieldCorrect = vue.ref(false);
522
522
  const $defaultMetadata = vue.computed(() => ({
523
523
  $value: state.value,
524
524
  $error: $fieldError.value,
525
525
  $dirty: $fieldDirty.value,
526
526
  $pending: $fieldPending.value,
527
- $valid: $fieldValid.value,
527
+ $correct: $fieldCorrect.value,
528
528
  $invalid: $fieldInvalid.value,
529
529
  $rule: {
530
530
  $valid: $valid.value,
@@ -606,7 +606,7 @@ function createReactiveRuleStatus({
606
606
  $params,
607
607
  $path,
608
608
  $tooltip,
609
- $fieldValid,
609
+ $fieldCorrect,
610
610
  $fieldError,
611
611
  $fieldDirty,
612
612
  $fieldPending,
@@ -951,7 +951,7 @@ function createReactiveFieldStatus({
951
951
  }
952
952
  return false;
953
953
  });
954
- const $valid = vue.computed(() => {
954
+ const $correct = vue.computed(() => {
955
955
  if (externalErrors?.value?.length) {
956
956
  return false;
957
957
  } else if ($inactive.value) {
@@ -960,9 +960,12 @@ function createReactiveFieldStatus({
960
960
  if (schemaMode) {
961
961
  return !schemaErrors?.value?.length;
962
962
  } else {
963
- return Object.values($rules.value).every((ruleResult) => {
964
- return ruleResult.$valid && ruleResult.$active;
965
- });
963
+ const atLeastOneActiveRule = Object.values($rules.value).some((ruleResult) => ruleResult.$active);
964
+ if (atLeastOneActiveRule) {
965
+ return Object.values($rules.value).filter((ruleResult) => ruleResult.$active).every((ruleResult) => ruleResult.$valid);
966
+ } else {
967
+ return false;
968
+ }
966
969
  }
967
970
  }
968
971
  return false;
@@ -989,7 +992,7 @@ function createReactiveFieldStatus({
989
992
  $error,
990
993
  $pending,
991
994
  $invalid,
992
- $valid,
995
+ $correct,
993
996
  $errors,
994
997
  $ready,
995
998
  $silentErrors,
@@ -1018,7 +1021,7 @@ function createReactiveFieldStatus({
1018
1021
  $error,
1019
1022
  $pending,
1020
1023
  $invalid,
1021
- $valid,
1024
+ $correct,
1022
1025
  $debounce: $debounce2,
1023
1026
  $lazy: $lazy2,
1024
1027
  $errors,
@@ -1050,18 +1053,18 @@ function createReactiveFieldStatus({
1050
1053
  });
1051
1054
  });
1052
1055
  $unwatchRuleFieldValues = vue.watch(
1053
- [scopeState.$error, scopeState.$valid, scopeState.$invalid, scopeState.$pending],
1056
+ [scopeState.$error, scopeState.$correct, scopeState.$invalid, scopeState.$pending],
1054
1057
  () => {
1055
1058
  Object.values($rules.value).forEach((rule) => {
1056
1059
  rule.$fieldError = scopeState.$error.value;
1057
1060
  rule.$fieldInvalid = scopeState.$invalid.value;
1058
1061
  rule.$fieldPending = scopeState.$pending.value;
1059
- rule.$fieldValid = scopeState.$valid.value;
1062
+ rule.$fieldCorrect = scopeState.$correct.value;
1060
1063
  });
1061
1064
  }
1062
1065
  );
1063
- $unwatchValid = vue.watch(scopeState.$valid, (valid) => {
1064
- if (scopeState.$rewardEarly.value && valid) {
1066
+ $unwatchValid = vue.watch(scopeState.$invalid, (invalid) => {
1067
+ if (scopeState.$rewardEarly.value && !invalid) {
1065
1068
  scopeState.triggerPunishment.value = false;
1066
1069
  }
1067
1070
  });
@@ -1462,9 +1465,9 @@ function createReactiveCollectionStatus({
1462
1465
  return statusOrField.$invalid;
1463
1466
  });
1464
1467
  });
1465
- const $valid = vue.computed(() => {
1466
- return (isEmpty($selfStatus.value.$rules) ? true : $selfStatus.value.$valid) && (!$eachStatus.value.length || $eachStatus.value.every((statusOrField) => {
1467
- return statusOrField.$valid;
1468
+ const $correct = vue.computed(() => {
1469
+ return (isEmpty($selfStatus.value.$rules) ? true : $selfStatus.value.$correct) && (!$eachStatus.value.length || $eachStatus.value.every((statusOrField) => {
1470
+ return statusOrField.$correct || statusOrField.$anyDirty && !statusOrField.$invalid;
1468
1471
  }));
1469
1472
  });
1470
1473
  const $error = vue.computed(() => {
@@ -1517,7 +1520,7 @@ function createReactiveCollectionStatus({
1517
1520
  $silentValue,
1518
1521
  $pending,
1519
1522
  $invalid,
1520
- $valid,
1523
+ $correct,
1521
1524
  $errors,
1522
1525
  $ready,
1523
1526
  $silentErrors,
@@ -1543,7 +1546,7 @@ function createReactiveCollectionStatus({
1543
1546
  $dirty,
1544
1547
  $anyDirty,
1545
1548
  $invalid,
1546
- $valid,
1549
+ $correct,
1547
1550
  $error,
1548
1551
  $pending,
1549
1552
  $errors,
@@ -1857,7 +1860,7 @@ function createReactiveNestedStatus({
1857
1860
  return statusOrField?.$invalid;
1858
1861
  });
1859
1862
  });
1860
- const $valid = vue.computed(() => {
1863
+ const $correct = vue.computed(() => {
1861
1864
  const fields = Object.entries($fields.value).filter(([_, statusOrField]) => {
1862
1865
  if (isFieldStatus(statusOrField)) {
1863
1866
  return !statusOrField.$inactive;
@@ -1866,7 +1869,7 @@ function createReactiveNestedStatus({
1866
1869
  });
1867
1870
  if (fields.length) {
1868
1871
  return fields.every(([_, statusOrField]) => {
1869
- return statusOrField?.$valid;
1872
+ return statusOrField?.$correct || statusOrField.$anyDirty && !statusOrField.$invalid;
1870
1873
  });
1871
1874
  }
1872
1875
  return false;
@@ -1938,7 +1941,7 @@ function createReactiveNestedStatus({
1938
1941
  $error,
1939
1942
  $pending,
1940
1943
  $invalid,
1941
- $valid,
1944
+ $correct,
1942
1945
  $ready,
1943
1946
  $anyDirty,
1944
1947
  $name,
@@ -1966,7 +1969,7 @@ function createReactiveNestedStatus({
1966
1969
  key,
1967
1970
  {
1968
1971
  ...Object.fromEntries(
1969
- ["$invalid", "$error", "$pending", "$dirty", "$valid"].map((property) => [
1972
+ ["$invalid", "$error", "$pending", "$dirty", "$correct"].map((property) => [
1970
1973
  property,
1971
1974
  mergeBooleanGroupProperties(entries, property)
1972
1975
  ])
@@ -1995,7 +1998,7 @@ function createReactiveNestedStatus({
1995
1998
  $dirty,
1996
1999
  $anyDirty,
1997
2000
  $invalid,
1998
- $valid,
2001
+ $correct,
1999
2002
  $error,
2000
2003
  $pending,
2001
2004
  $errors,
@@ -2298,10 +2301,10 @@ function mergeRegles(regles, _scoped) {
2298
2301
  return regle?.$invalid;
2299
2302
  });
2300
2303
  });
2301
- const $valid = vue.computed(() => {
2304
+ const $correct = vue.computed(() => {
2302
2305
  const entries = Object.entries(regles);
2303
2306
  return !!entries.length && entries.every(([_, regle]) => {
2304
- return regle?.$valid;
2307
+ return regle?.$correct || regle.$anyDirty && !regle.$invalid;
2305
2308
  });
2306
2309
  });
2307
2310
  const $error = vue.computed(() => {
@@ -2418,7 +2421,7 @@ function mergeRegles(regles, _scoped) {
2418
2421
  $dirty,
2419
2422
  $anyDirty,
2420
2423
  $invalid,
2421
- $valid,
2424
+ $correct,
2422
2425
  $error,
2423
2426
  $pending,
2424
2427
  $ready,
@@ -505,7 +505,7 @@ interface RegleValidationGroupOutput {
505
505
  $error: boolean;
506
506
  $pending: boolean;
507
507
  $dirty: boolean;
508
- $valid: boolean;
508
+ $correct: boolean;
509
509
  $errors: string[];
510
510
  $silentErrors: string[];
511
511
  }
@@ -1144,9 +1144,9 @@ type UnwrapRuleWithParams<T extends RegleRuleRaw<any> | undefined> = T extends R
1144
1144
  * Define a rule Metadata definition
1145
1145
  */
1146
1146
  type RegleRuleMetadataDefinition = RegleRuleMetadataExtended | boolean;
1147
- type DefaultMetadataPropertiesCommon = Pick<ExcludeByType<RegleCommonStatus, Function>, '$invalid' | '$dirty' | '$pending' | '$valid' | '$error'>;
1147
+ type DefaultMetadataPropertiesCommon = Pick<ExcludeByType<RegleCommonStatus, Function>, '$invalid' | '$dirty' | '$pending' | '$correct' | '$error'>;
1148
1148
  type DefaultMetadataProperties = DefaultMetadataPropertiesCommon & {
1149
- $rule: Omit<DefaultMetadataPropertiesCommon, '$dirty' | '$error'>;
1149
+ $rule: Pick<$InternalRegleRuleStatus, '$valid' | '$pending'>;
1150
1150
  };
1151
1151
  /**
1152
1152
  * Will be used to consumme metadata on related helpers and rule status
@@ -1423,7 +1423,7 @@ interface SuperCompatibleRegleStatus extends SuperCompatibleRegleCommonStatus {
1423
1423
  $extractDirtyFields: (filterNullishValues?: boolean) => Record<string, any>;
1424
1424
  $validate?: () => Promise<SuperCompatibleRegleResult>;
1425
1425
  }
1426
- type SuperCompatibleRegleRuleStatus = Omit<$InternalRegleRuleStatus, '$haveAsync' | '$validating' | '$fieldDirty' | '$fieldInvalid' | '$fieldPending' | '$fieldValid' | '$fieldError' | '$unwatch' | '$watch'>;
1426
+ type SuperCompatibleRegleRuleStatus = Omit<$InternalRegleRuleStatus, '$haveAsync' | '$validating' | '$fieldDirty' | '$fieldInvalid' | '$fieldPending' | '$fieldCorrect' | '$fieldError' | '$unwatch' | '$watch'>;
1427
1427
  type SuperCompatibleRegleCommonStatus = Omit<RegleCommonStatus, '$pending'> & {
1428
1428
  $pending?: boolean;
1429
1429
  };
@@ -1543,8 +1543,16 @@ interface $InternalRegleFieldStatus extends RegleCommonStatus {
1543
1543
  * @public
1544
1544
  */
1545
1545
  interface RegleCommonStatus<TValue = any> {
1546
- readonly $valid: boolean;
1547
1546
  readonly $invalid: boolean;
1547
+ /**
1548
+ * This is not the opposite of `$invalid`. Correct is meant to display UI validation report.
1549
+ *
1550
+ * This will be `true` only if:
1551
+ * - The field have at least one active rule
1552
+ * - Is dirty and not empty
1553
+ * - Passes validation
1554
+ */
1555
+ readonly $correct: boolean;
1548
1556
  readonly $dirty: boolean;
1549
1557
  readonly $anyDirty: boolean;
1550
1558
  readonly $edited: boolean;
@@ -1631,7 +1639,7 @@ interface $InternalRegleRuleStatus {
1631
1639
  $fieldDirty: boolean;
1632
1640
  $fieldInvalid: boolean;
1633
1641
  $fieldPending: boolean;
1634
- $fieldValid: boolean;
1642
+ $fieldCorrect: boolean;
1635
1643
  $fieldError: boolean;
1636
1644
  $validator(value: any, ...args: any[]): RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition>;
1637
1645
  $validate(): Promise<boolean>;
@@ -505,7 +505,7 @@ interface RegleValidationGroupOutput {
505
505
  $error: boolean;
506
506
  $pending: boolean;
507
507
  $dirty: boolean;
508
- $valid: boolean;
508
+ $correct: boolean;
509
509
  $errors: string[];
510
510
  $silentErrors: string[];
511
511
  }
@@ -1144,9 +1144,9 @@ type UnwrapRuleWithParams<T extends RegleRuleRaw<any> | undefined> = T extends R
1144
1144
  * Define a rule Metadata definition
1145
1145
  */
1146
1146
  type RegleRuleMetadataDefinition = RegleRuleMetadataExtended | boolean;
1147
- type DefaultMetadataPropertiesCommon = Pick<ExcludeByType<RegleCommonStatus, Function>, '$invalid' | '$dirty' | '$pending' | '$valid' | '$error'>;
1147
+ type DefaultMetadataPropertiesCommon = Pick<ExcludeByType<RegleCommonStatus, Function>, '$invalid' | '$dirty' | '$pending' | '$correct' | '$error'>;
1148
1148
  type DefaultMetadataProperties = DefaultMetadataPropertiesCommon & {
1149
- $rule: Omit<DefaultMetadataPropertiesCommon, '$dirty' | '$error'>;
1149
+ $rule: Pick<$InternalRegleRuleStatus, '$valid' | '$pending'>;
1150
1150
  };
1151
1151
  /**
1152
1152
  * Will be used to consumme metadata on related helpers and rule status
@@ -1423,7 +1423,7 @@ interface SuperCompatibleRegleStatus extends SuperCompatibleRegleCommonStatus {
1423
1423
  $extractDirtyFields: (filterNullishValues?: boolean) => Record<string, any>;
1424
1424
  $validate?: () => Promise<SuperCompatibleRegleResult>;
1425
1425
  }
1426
- type SuperCompatibleRegleRuleStatus = Omit<$InternalRegleRuleStatus, '$haveAsync' | '$validating' | '$fieldDirty' | '$fieldInvalid' | '$fieldPending' | '$fieldValid' | '$fieldError' | '$unwatch' | '$watch'>;
1426
+ type SuperCompatibleRegleRuleStatus = Omit<$InternalRegleRuleStatus, '$haveAsync' | '$validating' | '$fieldDirty' | '$fieldInvalid' | '$fieldPending' | '$fieldCorrect' | '$fieldError' | '$unwatch' | '$watch'>;
1427
1427
  type SuperCompatibleRegleCommonStatus = Omit<RegleCommonStatus, '$pending'> & {
1428
1428
  $pending?: boolean;
1429
1429
  };
@@ -1543,8 +1543,16 @@ interface $InternalRegleFieldStatus extends RegleCommonStatus {
1543
1543
  * @public
1544
1544
  */
1545
1545
  interface RegleCommonStatus<TValue = any> {
1546
- readonly $valid: boolean;
1547
1546
  readonly $invalid: boolean;
1547
+ /**
1548
+ * This is not the opposite of `$invalid`. Correct is meant to display UI validation report.
1549
+ *
1550
+ * This will be `true` only if:
1551
+ * - The field have at least one active rule
1552
+ * - Is dirty and not empty
1553
+ * - Passes validation
1554
+ */
1555
+ readonly $correct: boolean;
1548
1556
  readonly $dirty: boolean;
1549
1557
  readonly $anyDirty: boolean;
1550
1558
  readonly $edited: boolean;
@@ -1631,7 +1639,7 @@ interface $InternalRegleRuleStatus {
1631
1639
  $fieldDirty: boolean;
1632
1640
  $fieldInvalid: boolean;
1633
1641
  $fieldPending: boolean;
1634
- $fieldValid: boolean;
1642
+ $fieldCorrect: boolean;
1635
1643
  $fieldError: boolean;
1636
1644
  $validator(value: any, ...args: any[]): RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition>;
1637
1645
  $validate(): Promise<boolean>;
@@ -1,2 +1,2 @@
1
- 'use strict';var vue=require('vue');function Z(e,t=true){return e==null?true:e instanceof Date?isNaN(e.getTime()):Array.isArray(e)?t?e.length===0:false:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}var mt=Symbol("regle-rule");function Lt(e){if(typeof e.source.flags=="string")return e.source.flags;{let t=[];return e.global&&t.push("g"),e.ignoreCase&&t.push("i"),e.multiline&&t.push("m"),e.sticky&&t.push("y"),e.unicode&&t.push("u"),t.join("")}}function Y(e){let t=e,r={}.toString.call(e).slice(8,-1);if(r=="Set"&&(t=new Set([...e].map(n=>Y(n)))),r=="Map"&&(t=new Map([...e].map(n=>[Y(n[0]),Y(n[1])]))),r=="Date"&&(t=new Date(e.getTime())),r=="RegExp"&&(t=RegExp(e.source,Lt(e))),r=="Array"||r=="Object"){t=Array.isArray(e)?[]:{};for(let n in e)t[n]=Y(e[n]);}return t}function ne(e){return e&&(e instanceof Date||e.constructor.name=="File"||e.constructor.name=="FileList")?false:typeof e=="object"&&e!==null&&!Array.isArray(e)}function Be(e){let t=Object.prototype.toString.call(e);return e==null?new Date(NaN):e instanceof Date||typeof e=="object"&&t==="[object Date]"?new Date(e.getTime()):typeof e=="number"||t==="[object Number]"?new Date(e):typeof e=="string"||t==="[object String]"?new Date(e):new Date(NaN)}function je(e,t,r){let n,l=(...u)=>new Promise(R=>{clearTimeout(n),n=setTimeout(()=>{n=undefined,Promise.resolve(e.apply(this,[...u])).then(R);},t);});return l.cancel=()=>{clearTimeout(n),n=undefined;},l}var Le=(r=>(r.Inline="__inline",r.Async="__async",r))(Le||{});function gt(e,t){return e.some(r=>r[t])}function yt(e,t){return e.reduce((r,n)=>{let l=n[t]||[];return r.concat(l)},[])}function ee(e){try{return e.map(t=>vue.toValue(t))}catch{return []}}function vt(e){return e.map(t=>t instanceof Function?vue.computed(t):vue.isRef(t)?t:vue.toRef(()=>t))}function $t(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(R=>R.trim()).filter(R=>R.length>0).length:0}function He(e,...t){let{validator:r,type:n}=e,l=n==="__async"||r.constructor.name==="AsyncFunction";return {...{validator(c,...$){return e.validator(c,...ee($.length?$:t))},message(c){return typeof e.message=="function"?e.message({...c,$params:ee(c?.$params?.length?c.$params:t)}):e.message},active(c){return typeof e.active=="function"?e.active({...c,$params:ee(c?.$params?.length?c.$params:t)}):e.active??true},tooltip(c){return typeof e.tooltip=="function"?e.tooltip({...c,$params:ee(c?.$params?.length?c.$params:t)}):e.tooltip??[]},exec(c){let $=e.validator(c,...ee(t)),m;return $ instanceof Promise?$.then(h=>(m=h,typeof m=="object"&&"$valid"in m?m.$valid:typeof m=="boolean"?m:false)):(m=$,typeof m=="object"&&"$valid"in m?m.$valid:typeof m=="boolean"?m:false)}},_validator:e.validator,_message:e.message,_active:e.active,_tooltip:e.tooltip,_type:e.type,_message_patched:false,_tooltip_patched:false,_async:l,_params:vt(t),_brand:mt}}function ze(e){if(typeof e.validator=="function"){let r=He(e,...[]),n=e.async??e.validator.constructor.name==="AsyncFunction";if($t(e.validator)>1){let l=function(...u){return He(e,...u)};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=false,l._tooltip_pacthed=false,l._async=n,l}else return r}throw new Error("Validator must be a function")}function qe(){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),u=vue.shallowRef(new Map);function R(v){let b=t.value.get(v);if(b)return b;{let E=vue.ref({});return t.value.set(v,E),E}}function c(v){let b=r.value.get(v);if(b)return b;{let E=vue.ref([]);return r.value.set(v,E),E}}function $(v,b,E){u.value.set(`${v}-${b}`,E);}function m(v,b){return u.value.get(`${v}-${b}`)}function h(v,b){v&&b!=null&&u.value.delete(`${v}-${b}`);}function F(v,b){n.value.set(v,b);}function x(v){return n.value.get(v)??false}function P(v,b){e.value.set(v,b);}function O(v,b){let E=e.value.get(v);return E?a(b,E)?{valid:true}:{valid:false}:undefined}function a(v,b){let E=Object.keys(b),i=Object.keys(v);return i.length!==E.length||!i.every(V=>E.includes(V))?false:i.every(V=>{let o=v[V],s=b[V];return !s||!o||typeof o=="function"||typeof s=="function"||typeof o=="number"||typeof o=="boolean"?false:o._params?o._params?.every((C,_)=>{if(typeof s=="number"||typeof s=="boolean")return true;{let k=ee(s._params),J=ee(o._params);return k?.[_]===J?.[_]}}):true})}function w(v){let b=l.value.get(v);if(b)return b;{let E=vue.ref(false),i=vue.ref(true),S=vue.ref({}),V=vue.ref(false);return l.value.set(v,{$pending:E,$valid:i,$metadata:S,$validating:V}),{$pending:E,$valid:i,$metadata:S,$validating:V}}}return vue.getCurrentScope()&&vue.onScopeDispose(()=>{e.value.clear(),t.value.clear(),r.value.clear(),n.value.clear(),l.value.clear(),u.value.clear();}),{addRuleDeclEntry:P,setDirtyEntry:F,checkRuleDeclEntry:O,getDirtyState:x,trySetRuleStatusRef:w,getFieldsEntry:R,getCollectionsEntry:c,getArrayStatus:m,addArrayStatus:$,deleteArrayStatus:h,arrayStatusStorage:u}}function Ve(e){return ne(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 Zt(e,t){let r=String(e).split("."),n=String(t).split(".");for(let l=0;l<Math.min(r.length,n.length);l++){let u=Number(r[l]),R=Number(n[l]);if(u>R)return 1;if(R>u)return -1;if(!isNaN(u)&&isNaN(R))return 1;if(isNaN(u)&&!isNaN(R))return -1}return 0}var _e=Zt(vue.version,"3.5.0")!==-1;function er(){return Math.floor(Math.random()*Date.now()).toString()}function he(){return typeof window>"u"?er():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function St(e){return vue.getCurrentScope()?(vue.onScopeDispose(e),true):false}function ht(e){let t=false,r,n=vue.effectScope(true);return (...l)=>(t||(r=n.run(()=>e(...l)),t=true),r)}function bt(e,t){return Ve(e)||ne(t.value)&&!Z(t.value)&&!Object.entries(t.value).some(([r,n])=>we(n)||typeof n=="function")}function Et(e,t){return !!e.value&&ne(e.value)&&"$each"in e.value||Array.isArray(t.value)}function Tt(e){return !!e.value&&ne(e.value)}function we(e){return ne(e)&&"_validator"in e}function Pe(e){return typeof e.value!="function"}function xt(e){return ne(e)&&"$fields"in e}function Dt(e){return !!e&&"$rules"in e}function Je({field:e,silent:t=false}){return Object.entries(e.$rules??{}).map(([r,n])=>t&&!n.$valid||!n.$valid&&e.$error&&!n.$validating?n.$message:null).filter(r=>!!r).reduce((r,n)=>typeof n=="string"?r?.concat([n]):r?.concat(n),[]).concat(e.$error?e.$externalErrors??[]:[]).concat(e.$error?e.$schemaErrors??[]:[])}function Ct({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 It({customMessages:e,rule:t,ruleKey:r,state:n,path:l,storage:u,$debounce:R,modifiers:c}){let $=vue.effectScope(),m={},h,F=vue.ref(false),{$pending:x,$valid:P,$metadata:O,$validating:a}=u.trySetRuleStatusRef(`${l}.${r}`);function w(){$=vue.effectScope(),m=$.run(()=>{let o=vue.ref(false),s=vue.ref(false),C=vue.ref(true),_=vue.ref(false),k=vue.ref(false),J=vue.computed(()=>({$value:n.value,$error:s.value,$dirty:o.value,$pending:_.value,$valid:k.value,$invalid:C.value,$rule:{$valid:P.value,$invalid:!P.value,$pending:x.value},$params:d.value,...O.value})),I=vue.computed(()=>Pe(t)?typeof t.value.active=="function"?t.value.active(J.value):!!t.value.active:true);function L(p){let T="",A=e?e[r]?.[p]:undefined;if(A&&(typeof A=="function"?T=A(J.value):T=A),Pe(t)){let Q=`_${p}_patched`;A&&!t.value[Q]||(typeof t.value[p]=="function"?T=t.value[p](J.value):T=t.value[p]??"");}return T}let ie=vue.computed(()=>{let p=L("message");return Z(p)&&(p="This field is not valid"),p}),de=vue.computed(()=>L("tooltip")),pe=vue.computed(()=>Pe(t)&&t.value.type?t.value.type:r),me=vue.computed(()=>Pe(t)?t.value.validator:t.value),d=vue.computed(()=>typeof t.value=="function"?[]:ee(t.value._params??[])),f=vue.computed(()=>`${l}.${pe.value}`);return {$active:I,$message:ie,$type:pe,$validator:me,$params:d,$path:f,$tooltip:de,$fieldValid:k,$fieldError:s,$fieldDirty:o,$fieldPending:_,$fieldInvalid:C}}),h=vue.watch(m?.$params,()=>{(c.$autoDirty.value||c.$rewardEarly.value&&m.$fieldError.value)&&i();});}w();function v(){P.value=true,m.$fieldDirty.value&&(x.value=true);}async function b(){let o=false;try{let s=m.$validator.value;if(typeof s!="function")return console.error(`${l}: Incorrect rule format, it needs to be either a function or created with "createRule".`),!1;let C=s(n.value,...m.$params.value),_=n.value;v();let k;if(C instanceof Promise?k=await C:k=C,n.value!==_)return !0;if(typeof k=="boolean")o=k;else {let{$valid:J,...I}=k;o=J,O.value=I;}}catch{o=false;}finally{x.value=false;}return o}let E=je(b,R??200);async function i(){try{a.value=!0;let o=!1;if(we(t.value)&&t.value._async)o=await E();else {let s=m.$validator.value,C=s(n.value,...m.$params.value);if(C 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(C!=null)if(typeof C=="boolean")o=C;else {let{$valid:_,...k}=C;o=_,O.value=k;}}return P.value=o,o}catch{return false}finally{a.value=false;}}function S(){P.value=true,O.value={},x.value=false,a.value=false,w();}function V(){h(),$.stop(),$=vue.effectScope();}return vue.reactive({...m,$pending:x,$valid:P,$metadata:O,$haveAsync:F,$validating:a,$validate:i,$unwatch:V,$watch:w,$reset:S})}function Ne({state:e,rulesDef:t,customMessages:r,path:n,fieldName:l,storage:u,options:R,externalErrors:c,schemaErrors:$,schemaMode:m,onUnwatch:h,$isArray:F,initialState:x,shortcuts:P}){let O=vue.effectScope(),a,w=[],v,b,E,i,S,V=()=>{};function o(){let y=t.value,G=u.checkRuleDeclEntry(n,y);L.value=Object.fromEntries(Object.entries(y).filter(([B])=>B.startsWith("$"))),_(),I.value=Object.fromEntries(Object.entries(t.value).filter(([B])=>!B.startsWith("$")).map(([B,D])=>{if(D){let se=vue.toRef(()=>D);return [B,It({modifiers:{$autoDirty:a.$autoDirty,$rewardEarly:a.$rewardEarly},customMessages:r,rule:se,ruleKey:B,state:e,path:n,storage:u,$debounce:L.value.$debounce})]}return []}).filter(B=>!!B.length)),a.processShortcuts(),s(),G?.valid!=null&&(a.$dirty.value=u.getDirtyState(n),(a.$dirty.value&&a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&V()),u.addRuleDeclEntry(n,y);}function s(){V=a.$debounce.value?je(J,a.$debounce.value??a.$haveAnyAsyncRule?100:0):J;}function C(){I.value&&Object.entries(I.value).forEach(([y,G])=>{G.$unwatch();}),E(),S?.(),a.$dirty.value&&u.setDirtyEntry(n,a.$dirty.value),v?.(),b?.(),O.stop(),O=vue.effectScope(),w.forEach(y=>y.stop()),w=[],h?.(),i?.();}function _(){I.value&&Object.entries(I.value).forEach(([y,G])=>{G.$watch();}),a=O.run(()=>{let y=vue.ref(false),G=vue.ref(false),B=vue.computed(()=>y.value),D=vue.computed(()=>L.value.$debounce),se=vue.computed(()=>L.value.$lazy!=null?L.value.$lazy:vue.unref(R.lazy)!=null?vue.unref(R.lazy):false),le=vue.computed(()=>L.value.$rewardEarly!=null?L.value.$rewardEarly:vue.unref(R.rewardEarly)!=null?vue.unref(R.rewardEarly):false),ge=vue.computed(()=>L.value.$clearExternalErrorsOnChange!=null?L.value.$clearExternalErrorsOnChange:vue.unref(R.clearExternalErrorsOnChange)!=null?vue.unref(R.clearExternalErrorsOnChange):true),U=vue.computed(()=>L.value.$autoDirty!=null?L.value.$autoDirty:vue.unref(R.autoDirty)!=null?vue.unref(R.autoDirty):!le.value),M=vue.computed(()=>Object.entries(I.value).some(([ae,ue])=>ue.$validating)),K=vue.computed({get:()=>e.value,set(ae){v(),e.value=ae,k();}}),ye=vue.computed(()=>ve.value&&!Oe.value&&y.value),lt=vue.computed(()=>Je({field:{$rules:I.value,$error:ye.value,$externalErrors:c?.value,$schemaErrors:$?.value}})),ot=vue.computed(()=>Je({field:{$rules:I.value,$error:ye.value,$externalErrors:c?.value,$schemaErrors:$?.value},silent:true})),We=vue.computed(()=>y.value?x.value instanceof Date&&e.value instanceof Date?Be(x.value).getDate()!==Be(e.value).getDate():x.value==null?!!e.value:Array.isArray(e.value)&&Array.isArray(x.value)?e.value.length!==x.value.length:x.value!==e.value:false),st=vue.computed(()=>We.value),ut=vue.computed(()=>Ct({field:{$rules:I.value}})),it=vue.computed(()=>U.value?B.value&&!(ve.value||Oe.value):!(ve.value||Oe.value)),Oe=vue.computed(()=>G.value||!le.value?Object.entries(I.value).some(([ae,ue])=>ue.$pending):false),ve=vue.computed(()=>c?.value?.length||$?.value?.length?true:Fe.value?false:!le.value||le.value&&G.value?Object.entries(I.value).some(([ae,ue])=>!ue.$valid):false),ct=vue.computed(()=>l),Fe=vue.computed(()=>!!(Z(I.value)&&!m)),ft=vue.computed(()=>c?.value?.length||Fe.value?false:y.value&&!Z(e.value)&&!M.value?m?!$?.value?.length:Object.values(I.value).every(ae=>ae.$valid&&ae.$active):false),Wt=vue.computed(()=>Object.entries(I.value).some(([ae,ue])=>ue.$haveAsync));function Bt(){P?.fields&&Object.entries(P.fields).forEach(([ae,ue])=>{let dt=vue.effectScope();Rt[ae]=dt.run(()=>{let pt=vue.ref();return vue.watchEffect(()=>{pt.value=ue(vue.reactive({$dirty:y,$externalErrors:c?.value??[],$value:e,$silentValue:K,$rules:I,$error:ye,$pending:Oe,$invalid:ve,$valid:ft,$errors:lt,$ready:it,$silentErrors:ot,$anyDirty:B,$tooltips:ut,$name:ct,$inactive:Fe,$edited:We,$anyEdited:st}));}),pt}),w.push(dt);});}let Rt={};return vue.watch(ve,ae=>{ae||(G.value=false);}),{$error:ye,$pending:Oe,$invalid:ve,$valid:ft,$debounce:D,$lazy:se,$errors:lt,$ready:it,$silentErrors:ot,$rewardEarly:le,$autoDirty:U,$clearExternalErrorsOnChange:ge,$anyDirty:B,$edited:We,$anyEdited:st,$name:ct,$haveAnyAsyncRule:Wt,$shortcuts:Rt,$validating:M,$tooltips:ut,$dirty:y,triggerPunishment:G,processShortcuts:Bt,$silentValue:K,$inactive:Fe}}),k(),E=vue.watch(a.$dirty,y=>{u.setDirtyEntry(n,y),Object.values(I.value).forEach(G=>{G.$fieldDirty=y;});}),S=vue.watch([a.$error,a.$valid,a.$invalid,a.$pending],()=>{Object.values(I.value).forEach(y=>{y.$fieldError=a.$error.value,y.$fieldInvalid=a.$invalid.value,y.$fieldPending=a.$pending.value,y.$fieldValid=a.$valid.value;});}),b=vue.watch(a.$valid,y=>{a.$rewardEarly.value&&y&&(a.triggerPunishment.value=false);}),i=vue.watch(a.$haveAnyAsyncRule,s);}function k(){v=vue.watch(e,()=>{a.$autoDirty.value&&(a.$dirty.value||(a.$dirty.value=true)),t.value instanceof Function&&o(),(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&V(),a.$rewardEarly.value!==true&&a.$clearExternalErrorsOnChange.value&&f();},{deep:F?true:_e?1:true,flush:"post"});}function J(){Object.values(I.value).forEach(y=>{y.$validate();});}let I=vue.ref({}),L=vue.ref({});o();function ie(){f(),a.$dirty.value=false,a.triggerPunishment.value=false,u.setDirtyEntry(n,false),x.value=ne(e.value)?Y(e.value):Array.isArray(e.value)?[...e.value]:e.value,Object.entries(I.value).forEach(([y,G])=>{G.$reset();}),!a.$lazy.value&&a.$autoDirty.value&&Object.values(I.value).forEach(y=>y.$validate());}function de(y=true,G=false){a.$dirty.value||(a.$dirty.value=true),G&&y?(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&V():y&&V();}async function pe(){try{let y=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:y};return m?{result:!$?.value?.length,data:y}:Z(I.value)?{result:!0,data:y}:{result:(await Promise.allSettled(Object.entries(I.value).map(([D,se])=>se.$validate()))).every(D=>D.status==="fulfilled"?D.value===!0:!1),data:y}}catch{return {result:false,data:e.value}}}function me(){C(),e.value=Y(x),ie();}function d(y=true){return a.$dirty.value?e.value:y?{_null:true}:null}function f(){c?.value?.length&&(c.value=[]);}!a.$lazy.value&&!a.$dirty.value&&a.$autoDirty.value&&V();let{$shortcuts:p,$validating:T,$autoDirty:A,$rewardEarly:Q,$clearExternalErrorsOnChange:g,$haveAnyAsyncRule:j,$debounce:H,$lazy:X,triggerPunishment:z,...oe}=a;return vue.reactive({...oe,$externalErrors:c,$value:e,$rules:I,...p,$reset:ie,$touch:de,$validate:pe,$unwatch:C,$watch:_,$resetAll:me,$extractDirtyFields:d,$clearExternalErrors:f})}function Xe({$id:e,path:t,index:r,options:n,storage:l,stateValue:u,customMessages:R,rules:c,externalErrors:$,schemaErrors:m,initialState:h,shortcuts:F,fieldName:x,schemaMode:P}){let O=c.$key?c.$key:he(),a=`${t}.${String(O)}`;typeof u.value=="object"&&u.value!=null&&(u.value.$id?a=`${t}.${u.value.$id}`:Object.defineProperties(u.value,{$id:{value:O,enumerable:false,configurable:false,writable:false}}));let w=vue.toRef($?.value??[],r),v=vue.computed(()=>m?.value?.[r]),b=Te({state:u,rulesDef:vue.toRef(()=>c),customMessages:R,path:a,storage:l,options:n,externalErrors:w,schemaErrors:v,initialState:h,shortcuts:F,fieldName:x,schemaMode:P});if(b){let E=u.value?.$id;b.$id=E??String(O),l.addArrayStatus(e,b.$id,b);}return b}function At({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:u,externalErrors:R,schemaErrors:c,schemaMode:$,initialState:m,shortcuts:h,fieldName:F}){let x=vue.effectScope(),P,O=vue.effectScope(),a,w=[];if(!Array.isArray(e.value)&&!t.value.$each)return;let v=vue.ref(),b=vue.ref(e.value),E,i=vue.ref({}),S=l.getCollectionsEntry(n);a=O.run(()=>({isPrimitiveArray:vue.computed(()=>Array.isArray(e.value)&&e.value.length?e.value.every(f=>typeof f!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(f=>we(f)||typeof f=="function"):false)})),V(),C();function V(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?(v.value=he(),Object.defineProperties(e.value,{$id:{value:v.value,enumerable:false,configurable:false,writable:false}})):e.value?.$id&&(v.value=e.value.$id)),b.value=i.value.$value,Array.isArray(e.value)&&!a.isPrimitiveArray.value?S.value=e.value.filter(d=>typeof d=="object").map((d,f)=>{let{scope:p,unwrapped:T}=Ke(t.value.$each,vue.toRef(()=>d),f);p&&w.push(p);let A=vue.toRef(m.value??[],f),Q=vue.toRef(R?.value??{},"$each"),g=vue.computed(()=>c?.value?.$each),j=Xe({$id:v.value,path:n,customMessages:r,rules:T??{},stateValue:vue.toRef(()=>d),index:f,options:u,storage:l,externalErrors:Q,schemaErrors:g,initialState:A,shortcuts:h,fieldName:F,schemaMode:$});return j||null}).filter(d=>!!d):S.value=[],i.value=Ne({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:u,externalErrors:vue.toRef(R?.value??{},"$self"),schemaErrors:vue.computed(()=>c?.value?.$self),$isArray:true,initialState:m,shortcuts:h,fieldName:F,schemaMode:$});}function o(){if(Array.isArray(e.value)&&!a.isPrimitiveArray.value){let d=Y(S.value);S.value=e.value.filter(f=>typeof f=="object").map((f,p)=>{let T=vue.toRef(()=>f);if(f.$id&&S.value.find(A=>A.$id===f.$id)){let A=l.getArrayStatus(v.value,f.$id);return A?(A.$value=T,A):null}else {let{scope:A,unwrapped:Q}=Ke(t.value.$each,T,p);A&&w.push(A);let g=vue.toRef(R?.value??{},"$each"),j=vue.computed(()=>c?.value?.$each??[]),H=Xe({$id:v.value,path:n,customMessages:r,rules:Q??{},stateValue:T,index:p,options:u,storage:l,externalErrors:g,schemaErrors:j,initialState:vue.toRef(m.value??[],p),shortcuts:h,fieldName:F,schemaMode:$});return H||null}}).filter(f=>!!f),d.filter(f=>!e.value?.find(p=>f.$id===p.$id)).forEach((f,p)=>{l.deleteArrayStatus(v.value,p.toString());});}else S.value=[];}function s(){E=vue.watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?V():o();},{deep:_e?1:true,flush:"pre"});}function C(){s(),x=vue.effectScope(),P=x.run(()=>{let d=vue.computed({get:()=>e.value,set(D){E(),e.value=D,s();}}),f=vue.computed(()=>i.value.$dirty&&(!S.value.length||S.value.every(D=>D.$dirty))),p=vue.computed(()=>i.value.$anyDirty||S.value.some(D=>D.$anyDirty)),T=vue.computed(()=>i.value.$invalid||S.value.some(D=>D.$invalid)),A=vue.computed(()=>(Z(i.value.$rules)?true:i.value.$valid)&&(!S.value.length||S.value.every(D=>D.$valid))),Q=vue.computed(()=>i.value.$error||S.value.some(D=>D.$error)),g=vue.computed(()=>!(T.value||j.value)),j=vue.computed(()=>i.value.$pending||S.value.some(D=>D.$pending)),H=vue.computed(()=>!!S.value.length&&S.value.every(D=>D.$edited)),X=vue.computed(()=>i.value.$anyEdited||S.value.some(D=>D.$anyEdited)),z=vue.computed(()=>({$self:i.value.$errors,$each:S.value.map(D=>D.$errors)})),oe=vue.computed(()=>({$self:i.value.$silentErrors,$each:S.value.map(D=>D.$silentErrors)})),y=vue.computed(()=>F);function G(){h?.collections&&Object.entries(h?.collections).forEach(([D,se])=>{let le=vue.effectScope();B[D]=le.run(()=>{let ge=vue.ref();return vue.watchEffect(()=>{ge.value=se(vue.reactive({$dirty:f,$error:Q,$silentValue:d,$pending:j,$invalid:T,$valid:A,$errors:z,$ready:g,$silentErrors:oe,$anyDirty:p,$name:y,$each:S,$self:i,$value:e,$edited:H,$anyEdited:X}));}),ge}),w.push(le);});}let B={};return G(),{$dirty:f,$anyDirty:p,$invalid:T,$valid:A,$error:Q,$pending:j,$errors:z,$silentErrors:oe,$ready:g,$name:y,$shortcuts:B,$silentValue:d,$edited:H,$anyEdited:X}}),a.isPrimitiveArray.value&&t.value.$each&&console.warn(`${n} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`);}function _(){E&&E(),i.value&&i.value.$unwatch(),S.value&&S.value.forEach(d=>{"$dirty"in d&&d.$unwatch();}),x.stop(),x=vue.effectScope(),O.stop(),O=vue.effectScope(true),w.forEach(d=>d.stop()),w=[];}function k(d=true,f=false){i.value.$touch(d,f),S.value.forEach(p=>{p.$touch(d,f);});}function J(){i.value.$reset(),S.value.forEach(d=>{d.$reset();});}async function I(){let d=e.value;try{return {result:(await Promise.allSettled([i.value.$validate(),...S.value.map(T=>T.$validate())])).every(T=>T.status==="fulfilled"?T.value.result===!0:!1),data:d}}catch{return {result:false,data:d}}}function L(){i.value.$clearExternalErrors(),S.value.forEach(d=>{d.$clearExternalErrors();});}function ie(d=true){let f=S.value.map(p=>{if(xt(p))return p.$extractDirtyFields(d)});return d&&f.every(p=>Z(p))&&(f=[]),f}function de(){_(),e.value=Y(m.value),J();}let{$shortcuts:pe,...me}=P;return vue.reactive({$self:i,...me,...pe,$each:S,$value:e,$validate:I,$unwatch:_,$watch:C,$touch:k,$reset:J,$resetAll:de,$extractDirtyFields:ie,$clearExternalErrors:L})}function ke({rulesDef:e,state:t,path:r="",rootRules:n,externalErrors:l,schemaErrors:u,rootSchemaErrors:R,validationGroups:c,initialState:$,fieldName:m,...h}){let F=vue.effectScope(),x,P=[],O=null,a=null,w=null,v=null;async function E(d=true){let f=Object.entries(e.value),p=Object.fromEntries(f.filter(([g,j])=>!!j).map(([g,j])=>{if(j){let H=vue.toRef(t.value??{},g),X=vue.toRef(()=>j),z=vue.toRef(l?.value??{},g),oe=vue.computed(()=>u?.value?.[g]),y=vue.toRef($?.value??{},g);return [g,Te({state:H,rulesDef:X,path:r?`${r}.${g}`:g,externalErrors:z,schemaErrors:oe,initialState:y,fieldName:g,...h})]}return []})),T=Object.fromEntries(Object.entries(vue.unref(l)??{}).filter(([g,j])=>!(g in e.value)&&!!j).map(([g])=>{let j=vue.toRef(t.value??{},g),H=vue.toRef(l?.value??{},g),X=vue.computed(()=>u?.value?.[g]),z=vue.toRef($?.value??{},g);return [g,Te({state:j,rulesDef:vue.computed(()=>({})),path:r?`${r}.${g}`:g,externalErrors:H,schemaErrors:X,initialState:z,fieldName:g,...h})]})),A=Object.fromEntries(Object.entries(vue.unref(u)??{}).map(([g])=>{let j=vue.toRef(t.value??{},g),H=vue.toRef(l?.value??{},g),X=vue.computed(()=>u?.value?.[g]),z=vue.toRef($?.value??{},g);return [g,Te({state:j,rulesDef:vue.computed(()=>({})),path:r?`${r}.${g}`:g,externalErrors:H,schemaErrors:X,initialState:z,fieldName:g,...h})]})),Q=Object.fromEntries(Object.entries(t.value??{}).filter(([g])=>!(g in e.value)&&!(g in(T??{}))&&!(g in(A??{}))).map(([g])=>{let j=vue.toRef(t.value??{},g),H=vue.toRef(l?.value??{},g),X=vue.computed(()=>u?.value?.[g]),z=vue.toRef($?.value??{},g);return [g,Te({state:j,rulesDef:vue.computed(()=>({})),path:r?`${r}.${g}`:g,externalErrors:H,schemaErrors:X,initialState:z,fieldName:g,...h})]}));i.value={...p,...T,...A,...Q},d&&o();}let i=h.storage.getFieldsEntry(r);E();function S(){l&&(w=vue.watch(l,()=>{s(),E();},{deep:true}));}function V(){v=vue.watch(t,()=>{s(),E(),k(true,true);},{flush:"sync"});}function o(){n&&(O?.(),O=vue.watch(n,()=>{s(),E();},{deep:true,flush:"post"}),S()),R&&(a?.(),a=vue.watch(R,()=>{s(),E();},{deep:true,flush:"post"})),V(),x=F.run(()=>{let d=vue.computed({get:()=>t.value,set(U){s(),t.value=U,E();}}),f=vue.computed(()=>!!Object.entries(i.value).length&&Object.entries(i.value).every(([U,M])=>M?.$dirty)),p=vue.computed(()=>Object.entries(i.value).some(([U,M])=>M?.$anyDirty)),T=vue.computed(()=>Object.entries(i.value).some(([U,M])=>M?.$invalid)),A=vue.computed(()=>{let U=Object.entries(i.value).filter(([M,K])=>Dt(K)?!K.$inactive:true);return U.length?U.every(([M,K])=>K?.$valid):false}),Q=vue.computed(()=>p.value&&!z.value&&T.value),g=vue.computed(()=>vue.unref(h.options.rewardEarly)!=null?vue.unref(h.options.rewardEarly):false),j=vue.computed(()=>vue.unref(h.options.autoDirty)!=null?vue.unref(h.options.autoDirty):!g.value),H=vue.computed(()=>j.value?p.value&&!(T.value||z.value):!(T.value||z.value)),X=vue.ref(false),z=vue.computed(()=>X.value||Object.entries(i.value).some(([U,M])=>M?.$pending)),oe=vue.computed(()=>Object.fromEntries(Object.entries(i.value).map(([U,M])=>[U,M?.$errors]))),y=vue.computed(()=>Object.fromEntries(Object.entries(i.value).map(([U,M])=>[U,M?.$silentErrors]))),G=vue.computed(()=>!!Object.entries(i.value).length&&Object.entries(i.value).every(([U,M])=>M?.$edited)),B=vue.computed(()=>Object.entries(i.value).some(([U,M])=>M?.$anyEdited)),D=vue.computed(()=>m);function se(){h.shortcuts?.nested&&Object.entries(h.shortcuts.nested).forEach(([U,M])=>{let K=vue.effectScope();ge[U]=K.run(()=>{let ye=vue.ref();return vue.watchEffect(()=>{ye.value=M(vue.reactive({$dirty:f,$value:t,$silentValue:d,$error:Q,$pending:z,$invalid:T,$valid:A,$ready:H,$anyDirty:p,$name:D,$silentErrors:y,$errors:oe,$fields:i,$edited:G,$anyEdited:B}));}),ye}),P.push(K);});}let le=vue.computed({get:()=>c?Object.fromEntries(Object.entries(c?.(i.value)??{}).map(([U,M])=>M.length?[U,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$valid"].map(K=>[K,gt(M,K)])),...Object.fromEntries(["$errors","$silentErrors"].map(K=>[K,yt(M,K)]))}]:[])):{},set(){}}),ge={};return se(),{$dirty:f,$anyDirty:p,$invalid:T,$valid:A,$error:Q,$pending:z,$errors:oe,$silentErrors:y,$ready:H,$name:D,$shortcuts:ge,$groups:le,$silentValue:d,$edited:G,$anyEdited:B,$localPending:X}});}function s(){O?.(),w?.(),v?.(),a?.(),P=[],x={},i.value&&Object.entries(i.value).forEach(([d,f])=>{f.$unwatch();});}function C(){Object.entries(i.value).forEach(([d,f])=>{f.$clearExternalErrors();});}function _(){w?.(),Object.values(i.value).forEach(d=>{d.$reset();}),$.value={...Y(t.value)},S();}function k(d=true,f=false){Object.values(i.value).forEach(p=>{p.$touch(d,f);});}async function J(){s(),t.value=Y({...$.value??{}}),_(),E();}function I(d){return d.filter(([f,p])=>ne(p)?!(p&&typeof p=="object"&&"_null"in p)&&!Z(p):Array.isArray(p)?p.length:true)}function L(d=true){let f=Object.entries(i.value).map(([p,T])=>[p,T.$extractDirtyFields(d)]);return d&&(f=I(f)),Object.fromEntries(f)}async function ie(){try{if(h.schemaMode)return h.onValidate?(k(!1),x.$localPending.value=!0,h.onValidate()):{result:!1,data:t.value};{let d=t.value;return {result:(await Promise.allSettled(Object.values(i.value).map(T=>T.$validate()))).every(T=>T.status==="fulfilled"?T.value.result===!0:!1),data:d}}}catch{return {result:false,data:t.value}}finally{x.$localPending.value=false;}}let{$shortcuts:de,$localPending:pe,...me}=x;return vue.reactive({...me,...de,$fields:i,$value:t,$resetAll:J,$reset:_,$touch:k,$validate:ie,$unwatch:s,$watch:o,$clearExternalErrors:C,$extractDirtyFields:L})}function Te({rulesDef:e,...t}){if(Et(e,t.state))return At({rulesDef:e,...t});if(bt(t.state,e)){if(Ve(t.state))return ke({rulesDef:e,...t});{let n=vue.effectScope().run(()=>{let R=vue.toRef(t.state.value?t.state:vue.ref({}));return vue.watch(()=>t.state.value,c=>{R.value=c;},{deep:true}),vue.watch(R,c=>{t.state.value=c;},{deep:true}),{fakeState:R}}),{state:l,...u}=t;return ke({rulesDef:e,...u,state:n.fakeState})}}else if(Tt(e))return Ne({rulesDef:e,...t})}function Ie({initialState:e,options:t,scopeRules:r,state:n,customRules:l,shortcuts:u,schemaErrors:R,schemaMode:c=false,onValidate:$}){let m=qe(),h=vue.ref();return h.value=ke({rootRules:r,rulesDef:r,state:n,customMessages:l?.(),storage:m,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:u,fieldName:"root",path:"",schemaErrors:R,rootSchemaErrors:R,schemaMode:c,onValidate:$}),vue.getCurrentScope()&&vue.onScopeDispose(()=>{h.value?.$unwatch();}),vue.reactive({regle:h})}function tt(e,t,r){let n={autoDirty:t?.autoDirty,lazy:t?.lazy,rewardEarly:t?.rewardEarly,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange};function l(u,R,c){let $=vue.isRef(R)?R:vue.computed(typeof R=="function"?R:()=>R),m={...n,...c},h=vue.isRef(u)?u:vue.ref(u),F=vue.ref({...Y(h.value)});return {r$:Ie({scopeRules:$,state:h,options:m,initialState:F,customRules:e,shortcuts:r}).regle}}return l}var Ue=tt();function rt(){function e(t,r){return r}return e}var nt=rt();function Vt({rules:e,modifiers:t,shortcuts:r}){let n=tt(e,t,r),l=rt();return {useRegle:n,inferRules:l}}function Me(e,t){let r=t??false,n=vue.computed({get:()=>r?Object.values(e).map(o=>o.$value):Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$value])),set:o=>{r||typeof o=="object"&&Object.entries(o).forEach(([s,C])=>e[s].$value=C);}}),l=vue.computed({get:()=>Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$silentValue])),set:o=>{typeof o=="object"&&Object.entries(o).forEach(([s,C])=>e[s].$silentValue=C);}}),u=vue.computed(()=>{let o=Object.entries(e);return !!o.length&&o.every(([s,C])=>C?.$dirty)}),R=vue.computed(()=>Object.entries(e).some(([o,s])=>s?.$anyDirty)),c=vue.computed(()=>Object.entries(e).some(([o,s])=>s?.$invalid)),$=vue.computed(()=>{let o=Object.entries(e);return !!o.length&&o.every(([s,C])=>C?.$valid)}),m=vue.computed(()=>Object.entries(e).some(([o,s])=>s?.$error)),h=vue.computed(()=>{let o=Object.entries(e);return !!o.length&&o.every(([s,C])=>C?.$ready)}),F=vue.computed(()=>Object.entries(e).some(([o,s])=>s?.$pending)),x=vue.computed(()=>r?Object.entries(e).map(([o,s])=>s.$errors):Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$errors]))),P=vue.computed(()=>r?Object.entries(e).map(([o,s])=>s.$silentErrors):Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$silentErrors]))),O=vue.computed(()=>{let o=Object.entries(e);return !!o.length&&o.every(([s,C])=>C?.$edited)}),a=vue.computed(()=>Object.entries(e).some(([o,s])=>s?.$anyEdited)),w=vue.computed(()=>r?Object.values(e):e);function v(){Object.values(e).forEach(o=>{o.$reset();});}function b(){Object.values(e).forEach(o=>{o.$touch();});}function E(){Object.values(e).forEach(o=>{o.$resetAll();});}function i(o=true){return Object.values(e).map(s=>s.$extractDirtyFields(o))}function S(){Object.values(e).forEach(o=>{o.$clearExternalErrors();});}async function V(){try{let o=n.value;return {result:(await Promise.allSettled(Object.values(e).map(_=>_.$validate()))).every(_=>_.status==="fulfilled"?_.value.result===!0:!1),data:o}}catch{return {result:false,data:n.value}}}return vue.reactive({...!r&&{$silentValue:l},$errors:x,$silentErrors:P,$instances:w,$value:n,$dirty:u,$anyDirty:R,$invalid:c,$valid:$,$error:m,$pending:F,$ready:h,$edited:O,$anyEdited:a,$resetAll:E,$reset:v,$touch:b,$validate:V,$extractDirtyFields:i,$clearExternalErrors:S})}function Nt(e){function t(r){let n=vue.computed(()=>vue.toValue(r));R();let l=vue.ref(c(e.value)),u=vue.reactive({r$:l});function R(){n.value&&!e.value[n.value]&&(e.value[n.value]={});}vue.watch(n,R),vue.watch(e,$=>{l.value=c($);},{deep:true});function c($){if(n.value){let m=$[n.value]??{};return Me(m,true)}else return Me($["~~global"]??{},true)}return {r$:u.r$}}return {useCollectScope:t}}function Ut(e,t){let r=t??Ue;return {useScopedRegle:(l,u,R)=>{let{namespace:c,...$}=R??{},m=vue.computed(()=>vue.toValue(c)),h=vue.ref(`${Object.keys(e.value).length+1}-${he()}`),F=vue.computed(()=>`instance-${h.value}`),{r$:x}=r(l,u,$);O(),St(P),vue.watch(m,(a,w)=>{P(w),O();}),vue.getCurrentInstance()&&vue.onMounted(()=>{let a=vue.getCurrentInstance();typeof window<"u"&&a?.proxy?.$el?.parentElement&&document.documentElement&&!document.documentElement.contains(a?.proxy?.$el?.parentElement)&&P();});function P(a){let w=a??m.value;w?e.value[w]&&delete e.value[w][F.value]:e.value["~~global"][F.value]&&delete e.value["~~global"][F.value];}function O(){m.value?(e.value[m.value]||(e.value[m.value]={}),e.value[m.value][F.value]=x):(e.value["~~global"]||(e.value["~~global"]={}),e.value["~~global"][F.value]=x);}return {r$:x,dispose:P,register:O}}}}function at(e){let r=(e?.customStore?()=>(e.customStore&&(e.customStore?.value["~~global"]?e.customStore?.value&&(e.customStore.value={"~~global":{}}):e.customStore.value["~~global"]={}),e.customStore):ht(()=>vue.ref({"~~global":{}})))(),{useScopedRegle:n}=Ut(r,e?.customUseRegle),{useCollectScope:l}=Nt(r);return {useScopedRegle:n,useCollectScope:l}}
2
- exports.InternalRuleType=Le;exports.createRule=ze;exports.createScopedUseRegle=at;exports.defineRegleConfig=Vt;exports.inferRules=nt;exports.mergeRegles=Me;exports.unwrapRuleParameters=ee;exports.useRegle=Ue;exports.useRootStorage=Ie;
1
+ 'use strict';var vue=require('vue');function ee(e,t=true){return e==null?true:e instanceof Date?isNaN(e.getTime()):e instanceof File?e.size>0:Array.isArray(e)?t?e.length===0:false:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}var mt=Symbol("regle-rule");function Bt(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 Q(e){let t=e,r={}.toString.call(e).slice(8,-1);if(r=="Set"&&(t=new Set([...e].map(n=>Q(n)))),r=="Map"&&(t=new Map([...e].map(n=>[Q(n[0]),Q(n[1])]))),r=="Date"&&(t=new Date(e.getTime())),r=="RegExp"&&(t=RegExp(e.source,Bt(e))),r=="Array"||r=="Object"){t=Array.isArray(e)?[]:{};for(let n in e)t[n]=Q(e[n]);}return t}function ae(e){return e&&(e instanceof Date||e.constructor.name=="File"||e.constructor.name=="FileList")?false:typeof e=="object"&&e!==null&&!Array.isArray(e)}function Le(e){let t=Object.prototype.toString.call(e);return e==null?new Date(NaN):e instanceof Date||typeof e=="object"&&t==="[object Date]"?new Date(e.getTime()):typeof e=="number"||t==="[object Number]"?new Date(e):typeof e=="string"||t==="[object String]"?new Date(e):new Date(NaN)}function je(e,t,r){let n,l=(...u)=>new Promise(R=>{clearTimeout(n),n=setTimeout(()=>{n=undefined,Promise.resolve(e.apply(this,[...u])).then(R);},t);});return l.cancel=()=>{clearTimeout(n),n=undefined;},l}var Be=(r=>(r.Inline="__inline",r.Async="__async",r))(Be||{});function yt(e,t){return e.some(r=>r[t])}function gt(e,t){return e.reduce((r,n)=>{let l=n[t]||[];return r.concat(l)},[])}function te(e){try{return e.map(t=>vue.toValue(t))}catch{return []}}function $t(e){return e.map(t=>t instanceof Function?vue.computed(t):vue.isRef(t)?t:vue.toRef(()=>t))}function vt(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(R=>R.trim()).filter(R=>R.length>0).length:0}function He(e,...t){let{validator:r,type:n}=e,l=n==="__async"||r.constructor.name==="AsyncFunction";return {...{validator(c,...v){return e.validator(c,...te(v.length?v:t))},message(c){return typeof e.message=="function"?e.message({...c,$params:te(c?.$params?.length?c.$params:t)}):e.message},active(c){return typeof e.active=="function"?e.active({...c,$params:te(c?.$params?.length?c.$params:t)}):e.active??true},tooltip(c){return typeof e.tooltip=="function"?e.tooltip({...c,$params:te(c?.$params?.length?c.$params:t)}):e.tooltip??[]},exec(c){let v=e.validator(c,...te(t)),m;return v instanceof Promise?v.then(h=>(m=h,typeof m=="object"&&"$valid"in m?m.$valid:typeof m=="boolean"?m:false)):(m=v,typeof m=="object"&&"$valid"in m?m.$valid:typeof m=="boolean"?m:false)}},_validator:e.validator,_message:e.message,_active:e.active,_tooltip:e.tooltip,_type:e.type,_message_patched:false,_tooltip_patched:false,_async:l,_params:$t(t),_brand:mt}}function ze(e){if(typeof e.validator=="function"){let r=He(e,...[]),n=e.async??e.validator.constructor.name==="AsyncFunction";if(vt(e.validator)>1){let l=function(...u){return He(e,...u)};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=false,l._tooltip_pacthed=false,l._async=n,l}else return r}throw new Error("Validator must be a function")}function qe(){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),u=vue.shallowRef(new Map);function R($){let b=t.value.get($);if(b)return b;{let E=vue.ref({});return t.value.set($,E),E}}function c($){let b=r.value.get($);if(b)return b;{let E=vue.ref([]);return r.value.set($,E),E}}function v($,b,E){u.value.set(`${$}-${b}`,E);}function m($,b){return u.value.get(`${$}-${b}`)}function h($,b){$&&b!=null&&u.value.delete(`${$}-${b}`);}function F($,b){n.value.set($,b);}function D($){return n.value.get($)??false}function P($,b){e.value.set($,b);}function O($,b){let E=e.value.get($);return E?a(b,E)?{valid:true}:{valid:false}:undefined}function a($,b){let E=Object.keys(b),i=Object.keys($);return i.length!==E.length||!i.every(V=>E.includes(V))?false:i.every(V=>{let o=$[V],s=b[V];return !s||!o||typeof o=="function"||typeof s=="function"||typeof o=="number"||typeof o=="boolean"?false:o._params?o._params?.every((C,_)=>{if(typeof s=="number"||typeof s=="boolean")return true;{let k=te(s._params),J=te(o._params);return k?.[_]===J?.[_]}}):true})}function w($){let b=l.value.get($);if(b)return b;{let E=vue.ref(false),i=vue.ref(true),S=vue.ref({}),V=vue.ref(false);return l.value.set($,{$pending:E,$valid:i,$metadata:S,$validating:V}),{$pending:E,$valid:i,$metadata:S,$validating:V}}}return vue.getCurrentScope()&&vue.onScopeDispose(()=>{e.value.clear(),t.value.clear(),r.value.clear(),n.value.clear(),l.value.clear(),u.value.clear();}),{addRuleDeclEntry:P,setDirtyEntry:F,checkRuleDeclEntry:O,getDirtyState:D,trySetRuleStatusRef:w,getFieldsEntry:R,getCollectionsEntry:c,getArrayStatus:m,addArrayStatus:v,deleteArrayStatus:h,arrayStatusStorage:u}}function Ve(e){return ae(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 Zt(e,t){let r=String(e).split("."),n=String(t).split(".");for(let l=0;l<Math.min(r.length,n.length);l++){let u=Number(r[l]),R=Number(n[l]);if(u>R)return 1;if(R>u)return -1;if(!isNaN(u)&&isNaN(R))return 1;if(isNaN(u)&&!isNaN(R))return -1}return 0}var _e=Zt(vue.version,"3.5.0")!==-1;function er(){return Math.floor(Math.random()*Date.now()).toString()}function he(){return typeof window>"u"?er():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function St(e){return vue.getCurrentScope()?(vue.onScopeDispose(e),true):false}function ht(e){let t=false,r,n=vue.effectScope(true);return (...l)=>(t||(r=n.run(()=>e(...l)),t=true),r)}function bt(e,t){return Ve(e)||ae(t.value)&&!ee(t.value)&&!Object.entries(t.value).some(([r,n])=>we(n)||typeof n=="function")}function Et(e,t){return !!e.value&&ae(e.value)&&"$each"in e.value||Array.isArray(t.value)}function Tt(e){return !!e.value&&ae(e.value)}function we(e){return ae(e)&&"_validator"in e}function Pe(e){return typeof e.value!="function"}function xt(e){return ae(e)&&"$fields"in e}function Dt(e){return !!e&&"$rules"in e}function Je({field:e,silent:t=false}){return Object.entries(e.$rules??{}).map(([r,n])=>t&&!n.$valid||!n.$valid&&e.$error&&!n.$validating?n.$message:null).filter(r=>!!r).reduce((r,n)=>typeof n=="string"?r?.concat([n]):r?.concat(n),[]).concat(e.$error?e.$externalErrors??[]:[]).concat(e.$error?e.$schemaErrors??[]:[])}function Ct({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 It({customMessages:e,rule:t,ruleKey:r,state:n,path:l,storage:u,$debounce:R,modifiers:c}){let v=vue.effectScope(),m={},h,F=vue.ref(false),{$pending:D,$valid:P,$metadata:O,$validating:a}=u.trySetRuleStatusRef(`${l}.${r}`);function w(){v=vue.effectScope(),m=v.run(()=>{let o=vue.ref(false),s=vue.ref(false),C=vue.ref(true),_=vue.ref(false),k=vue.ref(false),J=vue.computed(()=>({$value:n.value,$error:s.value,$dirty:o.value,$pending:_.value,$correct:k.value,$invalid:C.value,$rule:{$valid:P.value,$invalid:!P.value,$pending:D.value},$params:d.value,...O.value})),I=vue.computed(()=>Pe(t)?typeof t.value.active=="function"?t.value.active(J.value):!!t.value.active:true);function B(p){let T="",A=e?e[r]?.[p]:undefined;if(A&&(typeof A=="function"?T=A(J.value):T=A),Pe(t)){let X=`_${p}_patched`;A&&!t.value[X]||(typeof t.value[p]=="function"?T=t.value[p](J.value):T=t.value[p]??"");}return T}let ie=vue.computed(()=>{let p=B("message");return ee(p)&&(p="This field is not valid"),p}),de=vue.computed(()=>B("tooltip")),pe=vue.computed(()=>Pe(t)&&t.value.type?t.value.type:r),me=vue.computed(()=>Pe(t)?t.value.validator:t.value),d=vue.computed(()=>typeof t.value=="function"?[]:te(t.value._params??[])),f=vue.computed(()=>`${l}.${pe.value}`);return {$active:I,$message:ie,$type:pe,$validator:me,$params:d,$path:f,$tooltip:de,$fieldCorrect:k,$fieldError:s,$fieldDirty:o,$fieldPending:_,$fieldInvalid:C}}),h=vue.watch(m?.$params,()=>{(c.$autoDirty.value||c.$rewardEarly.value&&m.$fieldError.value)&&i();});}w();function $(){P.value=true,m.$fieldDirty.value&&(D.value=true);}async function b(){let o=false;try{let s=m.$validator.value;if(typeof s!="function")return console.error(`${l}: Incorrect rule format, it needs to be either a function or created with "createRule".`),!1;let C=s(n.value,...m.$params.value),_=n.value;$();let k;if(C instanceof Promise?k=await C:k=C,n.value!==_)return !0;if(typeof k=="boolean")o=k;else {let{$valid:J,...I}=k;o=J,O.value=I;}}catch{o=false;}finally{D.value=false;}return o}let E=je(b,R??200);async function i(){try{a.value=!0;let o=!1;if(we(t.value)&&t.value._async)o=await E();else {let s=m.$validator.value,C=s(n.value,...m.$params.value);if(C 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(C!=null)if(typeof C=="boolean")o=C;else {let{$valid:_,...k}=C;o=_,O.value=k;}}return P.value=o,o}catch{return false}finally{a.value=false;}}function S(){P.value=true,O.value={},D.value=false,a.value=false,w();}function V(){h(),v.stop(),v=vue.effectScope();}return vue.reactive({...m,$pending:D,$valid:P,$metadata:O,$haveAsync:F,$validating:a,$validate:i,$unwatch:V,$watch:w,$reset:S})}function Ne({state:e,rulesDef:t,customMessages:r,path:n,fieldName:l,storage:u,options:R,externalErrors:c,schemaErrors:v,schemaMode:m,onUnwatch:h,$isArray:F,initialState:D,shortcuts:P}){let O=vue.effectScope(),a,w=[],$,b,E,i,S,V=()=>{};function o(){let g=t.value,G=u.checkRuleDeclEntry(n,g);B.value=Object.fromEntries(Object.entries(g).filter(([L])=>L.startsWith("$"))),_(),I.value=Object.fromEntries(Object.entries(t.value).filter(([L])=>!L.startsWith("$")).map(([L,x])=>{if(x){let ue=vue.toRef(()=>x);return [L,It({modifiers:{$autoDirty:a.$autoDirty,$rewardEarly:a.$rewardEarly},customMessages:r,rule:ue,ruleKey:L,state:e,path:n,storage:u,$debounce:B.value.$debounce})]}return []}).filter(L=>!!L.length)),a.processShortcuts(),s(),G?.valid!=null&&(a.$dirty.value=u.getDirtyState(n),(a.$dirty.value&&a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&V()),u.addRuleDeclEntry(n,g);}function s(){V=a.$debounce.value?je(J,a.$debounce.value??a.$haveAnyAsyncRule?100:0):J;}function C(){I.value&&Object.entries(I.value).forEach(([g,G])=>{G.$unwatch();}),E(),S?.(),a.$dirty.value&&u.setDirtyEntry(n,a.$dirty.value),$?.(),b?.(),O.stop(),O=vue.effectScope(),w.forEach(g=>g.stop()),w=[],h?.(),i?.();}function _(){I.value&&Object.entries(I.value).forEach(([g,G])=>{G.$watch();}),a=O.run(()=>{let g=vue.ref(false),G=vue.ref(false),L=vue.computed(()=>g.value),x=vue.computed(()=>B.value.$debounce),ue=vue.computed(()=>B.value.$lazy!=null?B.value.$lazy:vue.unref(R.lazy)!=null?vue.unref(R.lazy):false),le=vue.computed(()=>B.value.$rewardEarly!=null?B.value.$rewardEarly:vue.unref(R.rewardEarly)!=null?vue.unref(R.rewardEarly):false),ye=vue.computed(()=>B.value.$clearExternalErrorsOnChange!=null?B.value.$clearExternalErrorsOnChange:vue.unref(R.clearExternalErrorsOnChange)!=null?vue.unref(R.clearExternalErrorsOnChange):true),U=vue.computed(()=>B.value.$autoDirty!=null?B.value.$autoDirty:vue.unref(R.autoDirty)!=null?vue.unref(R.autoDirty):!le.value),M=vue.computed(()=>Object.entries(I.value).some(([oe,Y])=>Y.$validating)),H=vue.computed({get:()=>e.value,set(oe){$(),e.value=oe,k();}}),ge=vue.computed(()=>$e.value&&!Oe.value&&g.value),lt=vue.computed(()=>Je({field:{$rules:I.value,$error:ge.value,$externalErrors:c?.value,$schemaErrors:v?.value}})),ot=vue.computed(()=>Je({field:{$rules:I.value,$error:ge.value,$externalErrors:c?.value,$schemaErrors:v?.value},silent:true})),We=vue.computed(()=>g.value?D.value instanceof Date&&e.value instanceof Date?Le(D.value).getDate()!==Le(e.value).getDate():D.value==null?!!e.value:Array.isArray(e.value)&&Array.isArray(D.value)?e.value.length!==D.value.length:D.value!==e.value:false),st=vue.computed(()=>We.value),ut=vue.computed(()=>Ct({field:{$rules:I.value}})),it=vue.computed(()=>U.value?L.value&&!($e.value||Oe.value):!($e.value||Oe.value)),Oe=vue.computed(()=>G.value||!le.value?Object.entries(I.value).some(([oe,Y])=>Y.$pending):false),$e=vue.computed(()=>c?.value?.length||v?.value?.length?true:Fe.value?false:!le.value||le.value&&G.value?Object.entries(I.value).some(([oe,Y])=>!Y.$valid):false),ct=vue.computed(()=>l),Fe=vue.computed(()=>!!(ee(I.value)&&!m)),ft=vue.computed(()=>c?.value?.length||Fe.value?false:g.value&&!ee(e.value)&&!M.value?m?!v?.value?.length:Object.values(I.value).some(Y=>Y.$active)?Object.values(I.value).filter(Y=>Y.$active).every(Y=>Y.$valid):false:false),Wt=vue.computed(()=>Object.entries(I.value).some(([oe,Y])=>Y.$haveAsync));function Lt(){P?.fields&&Object.entries(P.fields).forEach(([oe,Y])=>{let dt=vue.effectScope();Rt[oe]=dt.run(()=>{let pt=vue.ref();return vue.watchEffect(()=>{pt.value=Y(vue.reactive({$dirty:g,$externalErrors:c?.value??[],$value:e,$silentValue:H,$rules:I,$error:ge,$pending:Oe,$invalid:$e,$correct:ft,$errors:lt,$ready:it,$silentErrors:ot,$anyDirty:L,$tooltips:ut,$name:ct,$inactive:Fe,$edited:We,$anyEdited:st}));}),pt}),w.push(dt);});}let Rt={};return vue.watch($e,oe=>{oe||(G.value=false);}),{$error:ge,$pending:Oe,$invalid:$e,$correct:ft,$debounce:x,$lazy:ue,$errors:lt,$ready:it,$silentErrors:ot,$rewardEarly:le,$autoDirty:U,$clearExternalErrorsOnChange:ye,$anyDirty:L,$edited:We,$anyEdited:st,$name:ct,$haveAnyAsyncRule:Wt,$shortcuts:Rt,$validating:M,$tooltips:ut,$dirty:g,triggerPunishment:G,processShortcuts:Lt,$silentValue:H,$inactive:Fe}}),k(),E=vue.watch(a.$dirty,g=>{u.setDirtyEntry(n,g),Object.values(I.value).forEach(G=>{G.$fieldDirty=g;});}),S=vue.watch([a.$error,a.$correct,a.$invalid,a.$pending],()=>{Object.values(I.value).forEach(g=>{g.$fieldError=a.$error.value,g.$fieldInvalid=a.$invalid.value,g.$fieldPending=a.$pending.value,g.$fieldCorrect=a.$correct.value;});}),b=vue.watch(a.$invalid,g=>{a.$rewardEarly.value&&!g&&(a.triggerPunishment.value=false);}),i=vue.watch(a.$haveAnyAsyncRule,s);}function k(){$=vue.watch(e,()=>{a.$autoDirty.value&&(a.$dirty.value||(a.$dirty.value=true)),t.value instanceof Function&&o(),(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&V(),a.$rewardEarly.value!==true&&a.$clearExternalErrorsOnChange.value&&f();},{deep:F?true:_e?1:true,flush:"post"});}function J(){Object.values(I.value).forEach(g=>{g.$validate();});}let I=vue.ref({}),B=vue.ref({});o();function ie(){f(),a.$dirty.value=false,a.triggerPunishment.value=false,u.setDirtyEntry(n,false),D.value=ae(e.value)?Q(e.value):Array.isArray(e.value)?[...e.value]:e.value,Object.entries(I.value).forEach(([g,G])=>{G.$reset();}),!a.$lazy.value&&a.$autoDirty.value&&Object.values(I.value).forEach(g=>g.$validate());}function de(g=true,G=false){a.$dirty.value||(a.$dirty.value=true),G&&g?(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&V():g&&V();}async function pe(){try{let g=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:g};return m?{result:!v?.value?.length,data:g}:ee(I.value)?{result:!0,data:g}:{result:(await Promise.allSettled(Object.entries(I.value).map(([x,ue])=>ue.$validate()))).every(x=>x.status==="fulfilled"?x.value===!0:!1),data:g}}catch{return {result:false,data:e.value}}}function me(){C(),e.value=Q(D),ie();}function d(g=true){return a.$dirty.value?e.value:g?{_null:true}:null}function f(){c?.value?.length&&(c.value=[]);}!a.$lazy.value&&!a.$dirty.value&&a.$autoDirty.value&&V();let{$shortcuts:p,$validating:T,$autoDirty:A,$rewardEarly:X,$clearExternalErrorsOnChange:y,$haveAnyAsyncRule:j,$debounce:z,$lazy:Z,triggerPunishment:q,...se}=a;return vue.reactive({...se,$externalErrors:c,$value:e,$rules:I,...p,$reset:ie,$touch:de,$validate:pe,$unwatch:C,$watch:_,$resetAll:me,$extractDirtyFields:d,$clearExternalErrors:f})}function Xe({$id:e,path:t,index:r,options:n,storage:l,stateValue:u,customMessages:R,rules:c,externalErrors:v,schemaErrors:m,initialState:h,shortcuts:F,fieldName:D,schemaMode:P}){let O=c.$key?c.$key:he(),a=`${t}.${String(O)}`;typeof u.value=="object"&&u.value!=null&&(u.value.$id?a=`${t}.${u.value.$id}`:Object.defineProperties(u.value,{$id:{value:O,enumerable:false,configurable:false,writable:false}}));let w=vue.toRef(v?.value??[],r),$=vue.computed(()=>m?.value?.[r]),b=Te({state:u,rulesDef:vue.toRef(()=>c),customMessages:R,path:a,storage:l,options:n,externalErrors:w,schemaErrors:$,initialState:h,shortcuts:F,fieldName:D,schemaMode:P});if(b){let E=u.value?.$id;b.$id=E??String(O),l.addArrayStatus(e,b.$id,b);}return b}function At({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:u,externalErrors:R,schemaErrors:c,schemaMode:v,initialState:m,shortcuts:h,fieldName:F}){let D=vue.effectScope(),P,O=vue.effectScope(),a,w=[];if(!Array.isArray(e.value)&&!t.value.$each)return;let $=vue.ref(),b=vue.ref(e.value),E,i=vue.ref({}),S=l.getCollectionsEntry(n);a=O.run(()=>({isPrimitiveArray:vue.computed(()=>Array.isArray(e.value)&&e.value.length?e.value.every(f=>typeof f!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(f=>we(f)||typeof f=="function"):false)})),V(),C();function V(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?($.value=he(),Object.defineProperties(e.value,{$id:{value:$.value,enumerable:false,configurable:false,writable:false}})):e.value?.$id&&($.value=e.value.$id)),b.value=i.value.$value,Array.isArray(e.value)&&!a.isPrimitiveArray.value?S.value=e.value.filter(d=>typeof d=="object").map((d,f)=>{let{scope:p,unwrapped:T}=Ke(t.value.$each,vue.toRef(()=>d),f);p&&w.push(p);let A=vue.toRef(m.value??[],f),X=vue.toRef(R?.value??{},"$each"),y=vue.computed(()=>c?.value?.$each),j=Xe({$id:$.value,path:n,customMessages:r,rules:T??{},stateValue:vue.toRef(()=>d),index:f,options:u,storage:l,externalErrors:X,schemaErrors:y,initialState:A,shortcuts:h,fieldName:F,schemaMode:v});return j||null}).filter(d=>!!d):S.value=[],i.value=Ne({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:u,externalErrors:vue.toRef(R?.value??{},"$self"),schemaErrors:vue.computed(()=>c?.value?.$self),$isArray:true,initialState:m,shortcuts:h,fieldName:F,schemaMode:v});}function o(){if(Array.isArray(e.value)&&!a.isPrimitiveArray.value){let d=Q(S.value);S.value=e.value.filter(f=>typeof f=="object").map((f,p)=>{let T=vue.toRef(()=>f);if(f.$id&&S.value.find(A=>A.$id===f.$id)){let A=l.getArrayStatus($.value,f.$id);return A?(A.$value=T,A):null}else {let{scope:A,unwrapped:X}=Ke(t.value.$each,T,p);A&&w.push(A);let y=vue.toRef(R?.value??{},"$each"),j=vue.computed(()=>c?.value?.$each??[]),z=Xe({$id:$.value,path:n,customMessages:r,rules:X??{},stateValue:T,index:p,options:u,storage:l,externalErrors:y,schemaErrors:j,initialState:vue.toRef(m.value??[],p),shortcuts:h,fieldName:F,schemaMode:v});return z||null}}).filter(f=>!!f),d.filter(f=>!e.value?.find(p=>f.$id===p.$id)).forEach((f,p)=>{l.deleteArrayStatus($.value,p.toString());});}else S.value=[];}function s(){E=vue.watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?V():o();},{deep:_e?1:true,flush:"pre"});}function C(){s(),D=vue.effectScope(),P=D.run(()=>{let d=vue.computed({get:()=>e.value,set(x){E(),e.value=x,s();}}),f=vue.computed(()=>i.value.$dirty&&(!S.value.length||S.value.every(x=>x.$dirty))),p=vue.computed(()=>i.value.$anyDirty||S.value.some(x=>x.$anyDirty)),T=vue.computed(()=>i.value.$invalid||S.value.some(x=>x.$invalid)),A=vue.computed(()=>(ee(i.value.$rules)?true:i.value.$correct)&&(!S.value.length||S.value.every(x=>x.$correct||x.$anyDirty&&!x.$invalid))),X=vue.computed(()=>i.value.$error||S.value.some(x=>x.$error)),y=vue.computed(()=>!(T.value||j.value)),j=vue.computed(()=>i.value.$pending||S.value.some(x=>x.$pending)),z=vue.computed(()=>!!S.value.length&&S.value.every(x=>x.$edited)),Z=vue.computed(()=>i.value.$anyEdited||S.value.some(x=>x.$anyEdited)),q=vue.computed(()=>({$self:i.value.$errors,$each:S.value.map(x=>x.$errors)})),se=vue.computed(()=>({$self:i.value.$silentErrors,$each:S.value.map(x=>x.$silentErrors)})),g=vue.computed(()=>F);function G(){h?.collections&&Object.entries(h?.collections).forEach(([x,ue])=>{let le=vue.effectScope();L[x]=le.run(()=>{let ye=vue.ref();return vue.watchEffect(()=>{ye.value=ue(vue.reactive({$dirty:f,$error:X,$silentValue:d,$pending:j,$invalid:T,$correct:A,$errors:q,$ready:y,$silentErrors:se,$anyDirty:p,$name:g,$each:S,$self:i,$value:e,$edited:z,$anyEdited:Z}));}),ye}),w.push(le);});}let L={};return G(),{$dirty:f,$anyDirty:p,$invalid:T,$correct:A,$error:X,$pending:j,$errors:q,$silentErrors:se,$ready:y,$name:g,$shortcuts:L,$silentValue:d,$edited:z,$anyEdited:Z}}),a.isPrimitiveArray.value&&t.value.$each&&console.warn(`${n} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`);}function _(){E&&E(),i.value&&i.value.$unwatch(),S.value&&S.value.forEach(d=>{"$dirty"in d&&d.$unwatch();}),D.stop(),D=vue.effectScope(),O.stop(),O=vue.effectScope(true),w.forEach(d=>d.stop()),w=[];}function k(d=true,f=false){i.value.$touch(d,f),S.value.forEach(p=>{p.$touch(d,f);});}function J(){i.value.$reset(),S.value.forEach(d=>{d.$reset();});}async function I(){let d=e.value;try{return {result:(await Promise.allSettled([i.value.$validate(),...S.value.map(T=>T.$validate())])).every(T=>T.status==="fulfilled"?T.value.result===!0:!1),data:d}}catch{return {result:false,data:d}}}function B(){i.value.$clearExternalErrors(),S.value.forEach(d=>{d.$clearExternalErrors();});}function ie(d=true){let f=S.value.map(p=>{if(xt(p))return p.$extractDirtyFields(d)});return d&&f.every(p=>ee(p))&&(f=[]),f}function de(){_(),e.value=Q(m.value),J();}let{$shortcuts:pe,...me}=P;return vue.reactive({$self:i,...me,...pe,$each:S,$value:e,$validate:I,$unwatch:_,$watch:C,$touch:k,$reset:J,$resetAll:de,$extractDirtyFields:ie,$clearExternalErrors:B})}function ke({rulesDef:e,state:t,path:r="",rootRules:n,externalErrors:l,schemaErrors:u,rootSchemaErrors:R,validationGroups:c,initialState:v,fieldName:m,...h}){let F=vue.effectScope(),D,P=[],O=null,a=null,w=null,$=null;async function E(d=true){let f=Object.entries(e.value),p=Object.fromEntries(f.filter(([y,j])=>!!j).map(([y,j])=>{if(j){let z=vue.toRef(t.value??{},y),Z=vue.toRef(()=>j),q=vue.toRef(l?.value??{},y),se=vue.computed(()=>u?.value?.[y]),g=vue.toRef(v?.value??{},y);return [y,Te({state:z,rulesDef:Z,path:r?`${r}.${y}`:y,externalErrors:q,schemaErrors:se,initialState:g,fieldName:y,...h})]}return []})),T=Object.fromEntries(Object.entries(vue.unref(l)??{}).filter(([y,j])=>!(y in e.value)&&!!j).map(([y])=>{let j=vue.toRef(t.value??{},y),z=vue.toRef(l?.value??{},y),Z=vue.computed(()=>u?.value?.[y]),q=vue.toRef(v?.value??{},y);return [y,Te({state:j,rulesDef:vue.computed(()=>({})),path:r?`${r}.${y}`:y,externalErrors:z,schemaErrors:Z,initialState:q,fieldName:y,...h})]})),A=Object.fromEntries(Object.entries(vue.unref(u)??{}).map(([y])=>{let j=vue.toRef(t.value??{},y),z=vue.toRef(l?.value??{},y),Z=vue.computed(()=>u?.value?.[y]),q=vue.toRef(v?.value??{},y);return [y,Te({state:j,rulesDef:vue.computed(()=>({})),path:r?`${r}.${y}`:y,externalErrors:z,schemaErrors:Z,initialState:q,fieldName:y,...h})]})),X=Object.fromEntries(Object.entries(t.value??{}).filter(([y])=>!(y in e.value)&&!(y in(T??{}))&&!(y in(A??{}))).map(([y])=>{let j=vue.toRef(t.value??{},y),z=vue.toRef(l?.value??{},y),Z=vue.computed(()=>u?.value?.[y]),q=vue.toRef(v?.value??{},y);return [y,Te({state:j,rulesDef:vue.computed(()=>({})),path:r?`${r}.${y}`:y,externalErrors:z,schemaErrors:Z,initialState:q,fieldName:y,...h})]}));i.value={...p,...T,...A,...X},d&&o();}let i=h.storage.getFieldsEntry(r);E();function S(){l&&(w=vue.watch(l,()=>{s(),E();},{deep:true}));}function V(){$=vue.watch(t,()=>{s(),E(),k(true,true);},{flush:"sync"});}function o(){n&&(O?.(),O=vue.watch(n,()=>{s(),E();},{deep:true,flush:"post"}),S()),R&&(a?.(),a=vue.watch(R,()=>{s(),E();},{deep:true,flush:"post"})),V(),D=F.run(()=>{let d=vue.computed({get:()=>t.value,set(U){s(),t.value=U,E();}}),f=vue.computed(()=>!!Object.entries(i.value).length&&Object.entries(i.value).every(([U,M])=>M?.$dirty)),p=vue.computed(()=>Object.entries(i.value).some(([U,M])=>M?.$anyDirty)),T=vue.computed(()=>Object.entries(i.value).some(([U,M])=>M?.$invalid)),A=vue.computed(()=>{let U=Object.entries(i.value).filter(([M,H])=>Dt(H)?!H.$inactive:true);return U.length?U.every(([M,H])=>H?.$correct||H.$anyDirty&&!H.$invalid):false}),X=vue.computed(()=>p.value&&!q.value&&T.value),y=vue.computed(()=>vue.unref(h.options.rewardEarly)!=null?vue.unref(h.options.rewardEarly):false),j=vue.computed(()=>vue.unref(h.options.autoDirty)!=null?vue.unref(h.options.autoDirty):!y.value),z=vue.computed(()=>j.value?p.value&&!(T.value||q.value):!(T.value||q.value)),Z=vue.ref(false),q=vue.computed(()=>Z.value||Object.entries(i.value).some(([U,M])=>M?.$pending)),se=vue.computed(()=>Object.fromEntries(Object.entries(i.value).map(([U,M])=>[U,M?.$errors]))),g=vue.computed(()=>Object.fromEntries(Object.entries(i.value).map(([U,M])=>[U,M?.$silentErrors]))),G=vue.computed(()=>!!Object.entries(i.value).length&&Object.entries(i.value).every(([U,M])=>M?.$edited)),L=vue.computed(()=>Object.entries(i.value).some(([U,M])=>M?.$anyEdited)),x=vue.computed(()=>m);function ue(){h.shortcuts?.nested&&Object.entries(h.shortcuts.nested).forEach(([U,M])=>{let H=vue.effectScope();ye[U]=H.run(()=>{let ge=vue.ref();return vue.watchEffect(()=>{ge.value=M(vue.reactive({$dirty:f,$value:t,$silentValue:d,$error:X,$pending:q,$invalid:T,$correct:A,$ready:z,$anyDirty:p,$name:x,$silentErrors:g,$errors:se,$fields:i,$edited:G,$anyEdited:L}));}),ge}),P.push(H);});}let le=vue.computed({get:()=>c?Object.fromEntries(Object.entries(c?.(i.value)??{}).map(([U,M])=>M.length?[U,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$correct"].map(H=>[H,yt(M,H)])),...Object.fromEntries(["$errors","$silentErrors"].map(H=>[H,gt(M,H)]))}]:[])):{},set(){}}),ye={};return ue(),{$dirty:f,$anyDirty:p,$invalid:T,$correct:A,$error:X,$pending:q,$errors:se,$silentErrors:g,$ready:z,$name:x,$shortcuts:ye,$groups:le,$silentValue:d,$edited:G,$anyEdited:L,$localPending:Z}});}function s(){O?.(),w?.(),$?.(),a?.(),P=[],D={},i.value&&Object.entries(i.value).forEach(([d,f])=>{f.$unwatch();});}function C(){Object.entries(i.value).forEach(([d,f])=>{f.$clearExternalErrors();});}function _(){w?.(),Object.values(i.value).forEach(d=>{d.$reset();}),v.value={...Q(t.value)},S();}function k(d=true,f=false){Object.values(i.value).forEach(p=>{p.$touch(d,f);});}async function J(){s(),t.value=Q({...v.value??{}}),_(),E();}function I(d){return d.filter(([f,p])=>ae(p)?!(p&&typeof p=="object"&&"_null"in p)&&!ee(p):Array.isArray(p)?p.length:true)}function B(d=true){let f=Object.entries(i.value).map(([p,T])=>[p,T.$extractDirtyFields(d)]);return d&&(f=I(f)),Object.fromEntries(f)}async function ie(){try{if(h.schemaMode)return h.onValidate?(k(!1),D.$localPending.value=!0,h.onValidate()):{result:!1,data:t.value};{let d=t.value;return {result:(await Promise.allSettled(Object.values(i.value).map(T=>T.$validate()))).every(T=>T.status==="fulfilled"?T.value.result===!0:!1),data:d}}}catch{return {result:false,data:t.value}}finally{D.$localPending.value=false;}}let{$shortcuts:de,$localPending:pe,...me}=D;return vue.reactive({...me,...de,$fields:i,$value:t,$resetAll:J,$reset:_,$touch:k,$validate:ie,$unwatch:s,$watch:o,$clearExternalErrors:C,$extractDirtyFields:B})}function Te({rulesDef:e,...t}){if(Et(e,t.state))return At({rulesDef:e,...t});if(bt(t.state,e)){if(Ve(t.state))return ke({rulesDef:e,...t});{let n=vue.effectScope().run(()=>{let R=vue.toRef(t.state.value?t.state:vue.ref({}));return vue.watch(()=>t.state.value,c=>{R.value=c;},{deep:true}),vue.watch(R,c=>{t.state.value=c;},{deep:true}),{fakeState:R}}),{state:l,...u}=t;return ke({rulesDef:e,...u,state:n.fakeState})}}else if(Tt(e))return Ne({rulesDef:e,...t})}function Ie({initialState:e,options:t,scopeRules:r,state:n,customRules:l,shortcuts:u,schemaErrors:R,schemaMode:c=false,onValidate:v}){let m=qe(),h=vue.ref();return h.value=ke({rootRules:r,rulesDef:r,state:n,customMessages:l?.(),storage:m,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:u,fieldName:"root",path:"",schemaErrors:R,rootSchemaErrors:R,schemaMode:c,onValidate:v}),vue.getCurrentScope()&&vue.onScopeDispose(()=>{h.value?.$unwatch();}),vue.reactive({regle:h})}function tt(e,t,r){let n={autoDirty:t?.autoDirty,lazy:t?.lazy,rewardEarly:t?.rewardEarly,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange};function l(u,R,c){let v=vue.isRef(R)?R:vue.computed(typeof R=="function"?R:()=>R),m={...n,...c},h=vue.isRef(u)?u:vue.ref(u),F=vue.ref({...Q(h.value)});return {r$:Ie({scopeRules:v,state:h,options:m,initialState:F,customRules:e,shortcuts:r}).regle}}return l}var Ue=tt();function rt(){function e(t,r){return r}return e}var nt=rt();function Vt({rules:e,modifiers:t,shortcuts:r}){let n=tt(e,t,r),l=rt();return {useRegle:n,inferRules:l}}function Me(e,t){let r=t??false,n=vue.computed({get:()=>r?Object.values(e).map(o=>o.$value):Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$value])),set:o=>{r||typeof o=="object"&&Object.entries(o).forEach(([s,C])=>e[s].$value=C);}}),l=vue.computed({get:()=>Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$silentValue])),set:o=>{typeof o=="object"&&Object.entries(o).forEach(([s,C])=>e[s].$silentValue=C);}}),u=vue.computed(()=>{let o=Object.entries(e);return !!o.length&&o.every(([s,C])=>C?.$dirty)}),R=vue.computed(()=>Object.entries(e).some(([o,s])=>s?.$anyDirty)),c=vue.computed(()=>Object.entries(e).some(([o,s])=>s?.$invalid)),v=vue.computed(()=>{let o=Object.entries(e);return !!o.length&&o.every(([s,C])=>C?.$correct||C.$anyDirty&&!C.$invalid)}),m=vue.computed(()=>Object.entries(e).some(([o,s])=>s?.$error)),h=vue.computed(()=>{let o=Object.entries(e);return !!o.length&&o.every(([s,C])=>C?.$ready)}),F=vue.computed(()=>Object.entries(e).some(([o,s])=>s?.$pending)),D=vue.computed(()=>r?Object.entries(e).map(([o,s])=>s.$errors):Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$errors]))),P=vue.computed(()=>r?Object.entries(e).map(([o,s])=>s.$silentErrors):Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$silentErrors]))),O=vue.computed(()=>{let o=Object.entries(e);return !!o.length&&o.every(([s,C])=>C?.$edited)}),a=vue.computed(()=>Object.entries(e).some(([o,s])=>s?.$anyEdited)),w=vue.computed(()=>r?Object.values(e):e);function $(){Object.values(e).forEach(o=>{o.$reset();});}function b(){Object.values(e).forEach(o=>{o.$touch();});}function E(){Object.values(e).forEach(o=>{o.$resetAll();});}function i(o=true){return Object.values(e).map(s=>s.$extractDirtyFields(o))}function S(){Object.values(e).forEach(o=>{o.$clearExternalErrors();});}async function V(){try{let o=n.value;return {result:(await Promise.allSettled(Object.values(e).map(_=>_.$validate()))).every(_=>_.status==="fulfilled"?_.value.result===!0:!1),data:o}}catch{return {result:false,data:n.value}}}return vue.reactive({...!r&&{$silentValue:l},$errors:D,$silentErrors:P,$instances:w,$value:n,$dirty:u,$anyDirty:R,$invalid:c,$correct:v,$error:m,$pending:F,$ready:h,$edited:O,$anyEdited:a,$resetAll:E,$reset:$,$touch:b,$validate:V,$extractDirtyFields:i,$clearExternalErrors:S})}function Nt(e){function t(r){let n=vue.computed(()=>vue.toValue(r));R();let l=vue.ref(c(e.value)),u=vue.reactive({r$:l});function R(){n.value&&!e.value[n.value]&&(e.value[n.value]={});}vue.watch(n,R),vue.watch(e,v=>{l.value=c(v);},{deep:true});function c(v){if(n.value){let m=v[n.value]??{};return Me(m,true)}else return Me(v["~~global"]??{},true)}return {r$:u.r$}}return {useCollectScope:t}}function Ut(e,t){let r=t??Ue;return {useScopedRegle:(l,u,R)=>{let{namespace:c,...v}=R??{},m=vue.computed(()=>vue.toValue(c)),h=vue.ref(`${Object.keys(e.value).length+1}-${he()}`),F=vue.computed(()=>`instance-${h.value}`),{r$:D}=r(l,u,v);O(),St(P),vue.watch(m,(a,w)=>{P(w),O();}),vue.getCurrentInstance()&&vue.onMounted(()=>{let a=vue.getCurrentInstance();typeof window<"u"&&a?.proxy?.$el?.parentElement&&document.documentElement&&!document.documentElement.contains(a?.proxy?.$el?.parentElement)&&P();});function P(a){let w=a??m.value;w?e.value[w]&&delete e.value[w][F.value]:e.value["~~global"][F.value]&&delete e.value["~~global"][F.value];}function O(){m.value?(e.value[m.value]||(e.value[m.value]={}),e.value[m.value][F.value]=D):(e.value["~~global"]||(e.value["~~global"]={}),e.value["~~global"][F.value]=D);}return {r$:D,dispose:P,register:O}}}}function at(e){let r=(e?.customStore?()=>(e.customStore&&(e.customStore?.value["~~global"]?e.customStore?.value&&(e.customStore.value={"~~global":{}}):e.customStore.value["~~global"]={}),e.customStore):ht(()=>vue.ref({"~~global":{}})))(),{useScopedRegle:n}=Ut(r,e?.customUseRegle),{useCollectScope:l}=Nt(r);return {useScopedRegle:n,useCollectScope:l}}
2
+ exports.InternalRuleType=Be;exports.createRule=ze;exports.createScopedUseRegle=at;exports.defineRegleConfig=Vt;exports.inferRules=nt;exports.mergeRegles=Me;exports.unwrapRuleParameters=te;exports.useRegle=Ue;exports.useRootStorage=Ie;
@@ -1,2 +1,2 @@
1
- import {toValue,version,ref,getCurrentScope,onScopeDispose,reactive,computed,shallowRef,effectScope,watch,getCurrentInstance,onMounted,isRef,toRef,unref,watchEffect}from'vue';function Z(e,t=true){return e==null?true:e instanceof Date?isNaN(e.getTime()):Array.isArray(e)?t?e.length===0:false:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}var mt=Symbol("regle-rule");function Lt(e){if(typeof e.source.flags=="string")return e.source.flags;{let t=[];return e.global&&t.push("g"),e.ignoreCase&&t.push("i"),e.multiline&&t.push("m"),e.sticky&&t.push("y"),e.unicode&&t.push("u"),t.join("")}}function Y(e){let t=e,r={}.toString.call(e).slice(8,-1);if(r=="Set"&&(t=new Set([...e].map(n=>Y(n)))),r=="Map"&&(t=new Map([...e].map(n=>[Y(n[0]),Y(n[1])]))),r=="Date"&&(t=new Date(e.getTime())),r=="RegExp"&&(t=RegExp(e.source,Lt(e))),r=="Array"||r=="Object"){t=Array.isArray(e)?[]:{};for(let n in e)t[n]=Y(e[n]);}return t}function ne(e){return e&&(e instanceof Date||e.constructor.name=="File"||e.constructor.name=="FileList")?false:typeof e=="object"&&e!==null&&!Array.isArray(e)}function Be(e){let t=Object.prototype.toString.call(e);return e==null?new Date(NaN):e instanceof Date||typeof e=="object"&&t==="[object Date]"?new Date(e.getTime()):typeof e=="number"||t==="[object Number]"?new Date(e):typeof e=="string"||t==="[object String]"?new Date(e):new Date(NaN)}function je(e,t,r){let n,l=(...u)=>new Promise(R=>{clearTimeout(n),n=setTimeout(()=>{n=undefined,Promise.resolve(e.apply(this,[...u])).then(R);},t);});return l.cancel=()=>{clearTimeout(n),n=undefined;},l}var Le=(r=>(r.Inline="__inline",r.Async="__async",r))(Le||{});function gt(e,t){return e.some(r=>r[t])}function yt(e,t){return e.reduce((r,n)=>{let l=n[t]||[];return r.concat(l)},[])}function ee(e){try{return e.map(t=>toValue(t))}catch{return []}}function vt(e){return e.map(t=>t instanceof Function?computed(t):isRef(t)?t:toRef(()=>t))}function $t(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(R=>R.trim()).filter(R=>R.length>0).length:0}function He(e,...t){let{validator:r,type:n}=e,l=n==="__async"||r.constructor.name==="AsyncFunction";return {...{validator(c,...$){return e.validator(c,...ee($.length?$:t))},message(c){return typeof e.message=="function"?e.message({...c,$params:ee(c?.$params?.length?c.$params:t)}):e.message},active(c){return typeof e.active=="function"?e.active({...c,$params:ee(c?.$params?.length?c.$params:t)}):e.active??true},tooltip(c){return typeof e.tooltip=="function"?e.tooltip({...c,$params:ee(c?.$params?.length?c.$params:t)}):e.tooltip??[]},exec(c){let $=e.validator(c,...ee(t)),m;return $ instanceof Promise?$.then(h=>(m=h,typeof m=="object"&&"$valid"in m?m.$valid:typeof m=="boolean"?m:false)):(m=$,typeof m=="object"&&"$valid"in m?m.$valid:typeof m=="boolean"?m:false)}},_validator:e.validator,_message:e.message,_active:e.active,_tooltip:e.tooltip,_type:e.type,_message_patched:false,_tooltip_patched:false,_async:l,_params:vt(t),_brand:mt}}function ze(e){if(typeof e.validator=="function"){let r=He(e,...[]),n=e.async??e.validator.constructor.name==="AsyncFunction";if($t(e.validator)>1){let l=function(...u){return He(e,...u)};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=false,l._tooltip_pacthed=false,l._async=n,l}else return r}throw new Error("Validator must be a function")}function qe(){let e=shallowRef(new Map),t=shallowRef(new Map),r=shallowRef(new Map),n=shallowRef(new Map),l=shallowRef(new Map),u=shallowRef(new Map);function R(v){let b=t.value.get(v);if(b)return b;{let E=ref({});return t.value.set(v,E),E}}function c(v){let b=r.value.get(v);if(b)return b;{let E=ref([]);return r.value.set(v,E),E}}function $(v,b,E){u.value.set(`${v}-${b}`,E);}function m(v,b){return u.value.get(`${v}-${b}`)}function h(v,b){v&&b!=null&&u.value.delete(`${v}-${b}`);}function F(v,b){n.value.set(v,b);}function x(v){return n.value.get(v)??false}function P(v,b){e.value.set(v,b);}function O(v,b){let E=e.value.get(v);return E?a(b,E)?{valid:true}:{valid:false}:undefined}function a(v,b){let E=Object.keys(b),i=Object.keys(v);return i.length!==E.length||!i.every(V=>E.includes(V))?false:i.every(V=>{let o=v[V],s=b[V];return !s||!o||typeof o=="function"||typeof s=="function"||typeof o=="number"||typeof o=="boolean"?false:o._params?o._params?.every((C,_)=>{if(typeof s=="number"||typeof s=="boolean")return true;{let k=ee(s._params),J=ee(o._params);return k?.[_]===J?.[_]}}):true})}function w(v){let b=l.value.get(v);if(b)return b;{let E=ref(false),i=ref(true),S=ref({}),V=ref(false);return l.value.set(v,{$pending:E,$valid:i,$metadata:S,$validating:V}),{$pending:E,$valid:i,$metadata:S,$validating:V}}}return getCurrentScope()&&onScopeDispose(()=>{e.value.clear(),t.value.clear(),r.value.clear(),n.value.clear(),l.value.clear(),u.value.clear();}),{addRuleDeclEntry:P,setDirtyEntry:F,checkRuleDeclEntry:O,getDirtyState:x,trySetRuleStatusRef:w,getFieldsEntry:R,getCollectionsEntry:c,getArrayStatus:m,addArrayStatus:$,deleteArrayStatus:h,arrayStatusStorage:u}}function Ve(e){return ne(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 Zt(e,t){let r=String(e).split("."),n=String(t).split(".");for(let l=0;l<Math.min(r.length,n.length);l++){let u=Number(r[l]),R=Number(n[l]);if(u>R)return 1;if(R>u)return -1;if(!isNaN(u)&&isNaN(R))return 1;if(isNaN(u)&&!isNaN(R))return -1}return 0}var _e=Zt(version,"3.5.0")!==-1;function er(){return Math.floor(Math.random()*Date.now()).toString()}function he(){return typeof window>"u"?er():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function St(e){return getCurrentScope()?(onScopeDispose(e),true):false}function ht(e){let t=false,r,n=effectScope(true);return (...l)=>(t||(r=n.run(()=>e(...l)),t=true),r)}function bt(e,t){return Ve(e)||ne(t.value)&&!Z(t.value)&&!Object.entries(t.value).some(([r,n])=>we(n)||typeof n=="function")}function Et(e,t){return !!e.value&&ne(e.value)&&"$each"in e.value||Array.isArray(t.value)}function Tt(e){return !!e.value&&ne(e.value)}function we(e){return ne(e)&&"_validator"in e}function Pe(e){return typeof e.value!="function"}function xt(e){return ne(e)&&"$fields"in e}function Dt(e){return !!e&&"$rules"in e}function Je({field:e,silent:t=false}){return Object.entries(e.$rules??{}).map(([r,n])=>t&&!n.$valid||!n.$valid&&e.$error&&!n.$validating?n.$message:null).filter(r=>!!r).reduce((r,n)=>typeof n=="string"?r?.concat([n]):r?.concat(n),[]).concat(e.$error?e.$externalErrors??[]:[]).concat(e.$error?e.$schemaErrors??[]:[])}function Ct({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 It({customMessages:e,rule:t,ruleKey:r,state:n,path:l,storage:u,$debounce:R,modifiers:c}){let $=effectScope(),m={},h,F=ref(false),{$pending:x,$valid:P,$metadata:O,$validating:a}=u.trySetRuleStatusRef(`${l}.${r}`);function w(){$=effectScope(),m=$.run(()=>{let o=ref(false),s=ref(false),C=ref(true),_=ref(false),k=ref(false),J=computed(()=>({$value:n.value,$error:s.value,$dirty:o.value,$pending:_.value,$valid:k.value,$invalid:C.value,$rule:{$valid:P.value,$invalid:!P.value,$pending:x.value},$params:d.value,...O.value})),I=computed(()=>Pe(t)?typeof t.value.active=="function"?t.value.active(J.value):!!t.value.active:true);function L(p){let T="",A=e?e[r]?.[p]:undefined;if(A&&(typeof A=="function"?T=A(J.value):T=A),Pe(t)){let Q=`_${p}_patched`;A&&!t.value[Q]||(typeof t.value[p]=="function"?T=t.value[p](J.value):T=t.value[p]??"");}return T}let ie=computed(()=>{let p=L("message");return Z(p)&&(p="This field is not valid"),p}),de=computed(()=>L("tooltip")),pe=computed(()=>Pe(t)&&t.value.type?t.value.type:r),me=computed(()=>Pe(t)?t.value.validator:t.value),d=computed(()=>typeof t.value=="function"?[]:ee(t.value._params??[])),f=computed(()=>`${l}.${pe.value}`);return {$active:I,$message:ie,$type:pe,$validator:me,$params:d,$path:f,$tooltip:de,$fieldValid:k,$fieldError:s,$fieldDirty:o,$fieldPending:_,$fieldInvalid:C}}),h=watch(m?.$params,()=>{(c.$autoDirty.value||c.$rewardEarly.value&&m.$fieldError.value)&&i();});}w();function v(){P.value=true,m.$fieldDirty.value&&(x.value=true);}async function b(){let o=false;try{let s=m.$validator.value;if(typeof s!="function")return console.error(`${l}: Incorrect rule format, it needs to be either a function or created with "createRule".`),!1;let C=s(n.value,...m.$params.value),_=n.value;v();let k;if(C instanceof Promise?k=await C:k=C,n.value!==_)return !0;if(typeof k=="boolean")o=k;else {let{$valid:J,...I}=k;o=J,O.value=I;}}catch{o=false;}finally{x.value=false;}return o}let E=je(b,R??200);async function i(){try{a.value=!0;let o=!1;if(we(t.value)&&t.value._async)o=await E();else {let s=m.$validator.value,C=s(n.value,...m.$params.value);if(C 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(C!=null)if(typeof C=="boolean")o=C;else {let{$valid:_,...k}=C;o=_,O.value=k;}}return P.value=o,o}catch{return false}finally{a.value=false;}}function S(){P.value=true,O.value={},x.value=false,a.value=false,w();}function V(){h(),$.stop(),$=effectScope();}return reactive({...m,$pending:x,$valid:P,$metadata:O,$haveAsync:F,$validating:a,$validate:i,$unwatch:V,$watch:w,$reset:S})}function Ne({state:e,rulesDef:t,customMessages:r,path:n,fieldName:l,storage:u,options:R,externalErrors:c,schemaErrors:$,schemaMode:m,onUnwatch:h,$isArray:F,initialState:x,shortcuts:P}){let O=effectScope(),a,w=[],v,b,E,i,S,V=()=>{};function o(){let y=t.value,G=u.checkRuleDeclEntry(n,y);L.value=Object.fromEntries(Object.entries(y).filter(([B])=>B.startsWith("$"))),_(),I.value=Object.fromEntries(Object.entries(t.value).filter(([B])=>!B.startsWith("$")).map(([B,D])=>{if(D){let se=toRef(()=>D);return [B,It({modifiers:{$autoDirty:a.$autoDirty,$rewardEarly:a.$rewardEarly},customMessages:r,rule:se,ruleKey:B,state:e,path:n,storage:u,$debounce:L.value.$debounce})]}return []}).filter(B=>!!B.length)),a.processShortcuts(),s(),G?.valid!=null&&(a.$dirty.value=u.getDirtyState(n),(a.$dirty.value&&a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&V()),u.addRuleDeclEntry(n,y);}function s(){V=a.$debounce.value?je(J,a.$debounce.value??a.$haveAnyAsyncRule?100:0):J;}function C(){I.value&&Object.entries(I.value).forEach(([y,G])=>{G.$unwatch();}),E(),S?.(),a.$dirty.value&&u.setDirtyEntry(n,a.$dirty.value),v?.(),b?.(),O.stop(),O=effectScope(),w.forEach(y=>y.stop()),w=[],h?.(),i?.();}function _(){I.value&&Object.entries(I.value).forEach(([y,G])=>{G.$watch();}),a=O.run(()=>{let y=ref(false),G=ref(false),B=computed(()=>y.value),D=computed(()=>L.value.$debounce),se=computed(()=>L.value.$lazy!=null?L.value.$lazy:unref(R.lazy)!=null?unref(R.lazy):false),le=computed(()=>L.value.$rewardEarly!=null?L.value.$rewardEarly:unref(R.rewardEarly)!=null?unref(R.rewardEarly):false),ge=computed(()=>L.value.$clearExternalErrorsOnChange!=null?L.value.$clearExternalErrorsOnChange:unref(R.clearExternalErrorsOnChange)!=null?unref(R.clearExternalErrorsOnChange):true),U=computed(()=>L.value.$autoDirty!=null?L.value.$autoDirty:unref(R.autoDirty)!=null?unref(R.autoDirty):!le.value),M=computed(()=>Object.entries(I.value).some(([ae,ue])=>ue.$validating)),K=computed({get:()=>e.value,set(ae){v(),e.value=ae,k();}}),ye=computed(()=>ve.value&&!Oe.value&&y.value),lt=computed(()=>Je({field:{$rules:I.value,$error:ye.value,$externalErrors:c?.value,$schemaErrors:$?.value}})),ot=computed(()=>Je({field:{$rules:I.value,$error:ye.value,$externalErrors:c?.value,$schemaErrors:$?.value},silent:true})),We=computed(()=>y.value?x.value instanceof Date&&e.value instanceof Date?Be(x.value).getDate()!==Be(e.value).getDate():x.value==null?!!e.value:Array.isArray(e.value)&&Array.isArray(x.value)?e.value.length!==x.value.length:x.value!==e.value:false),st=computed(()=>We.value),ut=computed(()=>Ct({field:{$rules:I.value}})),it=computed(()=>U.value?B.value&&!(ve.value||Oe.value):!(ve.value||Oe.value)),Oe=computed(()=>G.value||!le.value?Object.entries(I.value).some(([ae,ue])=>ue.$pending):false),ve=computed(()=>c?.value?.length||$?.value?.length?true:Fe.value?false:!le.value||le.value&&G.value?Object.entries(I.value).some(([ae,ue])=>!ue.$valid):false),ct=computed(()=>l),Fe=computed(()=>!!(Z(I.value)&&!m)),ft=computed(()=>c?.value?.length||Fe.value?false:y.value&&!Z(e.value)&&!M.value?m?!$?.value?.length:Object.values(I.value).every(ae=>ae.$valid&&ae.$active):false),Wt=computed(()=>Object.entries(I.value).some(([ae,ue])=>ue.$haveAsync));function Bt(){P?.fields&&Object.entries(P.fields).forEach(([ae,ue])=>{let dt=effectScope();Rt[ae]=dt.run(()=>{let pt=ref();return watchEffect(()=>{pt.value=ue(reactive({$dirty:y,$externalErrors:c?.value??[],$value:e,$silentValue:K,$rules:I,$error:ye,$pending:Oe,$invalid:ve,$valid:ft,$errors:lt,$ready:it,$silentErrors:ot,$anyDirty:B,$tooltips:ut,$name:ct,$inactive:Fe,$edited:We,$anyEdited:st}));}),pt}),w.push(dt);});}let Rt={};return watch(ve,ae=>{ae||(G.value=false);}),{$error:ye,$pending:Oe,$invalid:ve,$valid:ft,$debounce:D,$lazy:se,$errors:lt,$ready:it,$silentErrors:ot,$rewardEarly:le,$autoDirty:U,$clearExternalErrorsOnChange:ge,$anyDirty:B,$edited:We,$anyEdited:st,$name:ct,$haveAnyAsyncRule:Wt,$shortcuts:Rt,$validating:M,$tooltips:ut,$dirty:y,triggerPunishment:G,processShortcuts:Bt,$silentValue:K,$inactive:Fe}}),k(),E=watch(a.$dirty,y=>{u.setDirtyEntry(n,y),Object.values(I.value).forEach(G=>{G.$fieldDirty=y;});}),S=watch([a.$error,a.$valid,a.$invalid,a.$pending],()=>{Object.values(I.value).forEach(y=>{y.$fieldError=a.$error.value,y.$fieldInvalid=a.$invalid.value,y.$fieldPending=a.$pending.value,y.$fieldValid=a.$valid.value;});}),b=watch(a.$valid,y=>{a.$rewardEarly.value&&y&&(a.triggerPunishment.value=false);}),i=watch(a.$haveAnyAsyncRule,s);}function k(){v=watch(e,()=>{a.$autoDirty.value&&(a.$dirty.value||(a.$dirty.value=true)),t.value instanceof Function&&o(),(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&V(),a.$rewardEarly.value!==true&&a.$clearExternalErrorsOnChange.value&&f();},{deep:F?true:_e?1:true,flush:"post"});}function J(){Object.values(I.value).forEach(y=>{y.$validate();});}let I=ref({}),L=ref({});o();function ie(){f(),a.$dirty.value=false,a.triggerPunishment.value=false,u.setDirtyEntry(n,false),x.value=ne(e.value)?Y(e.value):Array.isArray(e.value)?[...e.value]:e.value,Object.entries(I.value).forEach(([y,G])=>{G.$reset();}),!a.$lazy.value&&a.$autoDirty.value&&Object.values(I.value).forEach(y=>y.$validate());}function de(y=true,G=false){a.$dirty.value||(a.$dirty.value=true),G&&y?(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&V():y&&V();}async function pe(){try{let y=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:y};return m?{result:!$?.value?.length,data:y}:Z(I.value)?{result:!0,data:y}:{result:(await Promise.allSettled(Object.entries(I.value).map(([D,se])=>se.$validate()))).every(D=>D.status==="fulfilled"?D.value===!0:!1),data:y}}catch{return {result:false,data:e.value}}}function me(){C(),e.value=Y(x),ie();}function d(y=true){return a.$dirty.value?e.value:y?{_null:true}:null}function f(){c?.value?.length&&(c.value=[]);}!a.$lazy.value&&!a.$dirty.value&&a.$autoDirty.value&&V();let{$shortcuts:p,$validating:T,$autoDirty:A,$rewardEarly:Q,$clearExternalErrorsOnChange:g,$haveAnyAsyncRule:j,$debounce:H,$lazy:X,triggerPunishment:z,...oe}=a;return reactive({...oe,$externalErrors:c,$value:e,$rules:I,...p,$reset:ie,$touch:de,$validate:pe,$unwatch:C,$watch:_,$resetAll:me,$extractDirtyFields:d,$clearExternalErrors:f})}function Xe({$id:e,path:t,index:r,options:n,storage:l,stateValue:u,customMessages:R,rules:c,externalErrors:$,schemaErrors:m,initialState:h,shortcuts:F,fieldName:x,schemaMode:P}){let O=c.$key?c.$key:he(),a=`${t}.${String(O)}`;typeof u.value=="object"&&u.value!=null&&(u.value.$id?a=`${t}.${u.value.$id}`:Object.defineProperties(u.value,{$id:{value:O,enumerable:false,configurable:false,writable:false}}));let w=toRef($?.value??[],r),v=computed(()=>m?.value?.[r]),b=Te({state:u,rulesDef:toRef(()=>c),customMessages:R,path:a,storage:l,options:n,externalErrors:w,schemaErrors:v,initialState:h,shortcuts:F,fieldName:x,schemaMode:P});if(b){let E=u.value?.$id;b.$id=E??String(O),l.addArrayStatus(e,b.$id,b);}return b}function At({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:u,externalErrors:R,schemaErrors:c,schemaMode:$,initialState:m,shortcuts:h,fieldName:F}){let x=effectScope(),P,O=effectScope(),a,w=[];if(!Array.isArray(e.value)&&!t.value.$each)return;let v=ref(),b=ref(e.value),E,i=ref({}),S=l.getCollectionsEntry(n);a=O.run(()=>({isPrimitiveArray:computed(()=>Array.isArray(e.value)&&e.value.length?e.value.every(f=>typeof f!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(f=>we(f)||typeof f=="function"):false)})),V(),C();function V(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?(v.value=he(),Object.defineProperties(e.value,{$id:{value:v.value,enumerable:false,configurable:false,writable:false}})):e.value?.$id&&(v.value=e.value.$id)),b.value=i.value.$value,Array.isArray(e.value)&&!a.isPrimitiveArray.value?S.value=e.value.filter(d=>typeof d=="object").map((d,f)=>{let{scope:p,unwrapped:T}=Ke(t.value.$each,toRef(()=>d),f);p&&w.push(p);let A=toRef(m.value??[],f),Q=toRef(R?.value??{},"$each"),g=computed(()=>c?.value?.$each),j=Xe({$id:v.value,path:n,customMessages:r,rules:T??{},stateValue:toRef(()=>d),index:f,options:u,storage:l,externalErrors:Q,schemaErrors:g,initialState:A,shortcuts:h,fieldName:F,schemaMode:$});return j||null}).filter(d=>!!d):S.value=[],i.value=Ne({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:u,externalErrors:toRef(R?.value??{},"$self"),schemaErrors:computed(()=>c?.value?.$self),$isArray:true,initialState:m,shortcuts:h,fieldName:F,schemaMode:$});}function o(){if(Array.isArray(e.value)&&!a.isPrimitiveArray.value){let d=Y(S.value);S.value=e.value.filter(f=>typeof f=="object").map((f,p)=>{let T=toRef(()=>f);if(f.$id&&S.value.find(A=>A.$id===f.$id)){let A=l.getArrayStatus(v.value,f.$id);return A?(A.$value=T,A):null}else {let{scope:A,unwrapped:Q}=Ke(t.value.$each,T,p);A&&w.push(A);let g=toRef(R?.value??{},"$each"),j=computed(()=>c?.value?.$each??[]),H=Xe({$id:v.value,path:n,customMessages:r,rules:Q??{},stateValue:T,index:p,options:u,storage:l,externalErrors:g,schemaErrors:j,initialState:toRef(m.value??[],p),shortcuts:h,fieldName:F,schemaMode:$});return H||null}}).filter(f=>!!f),d.filter(f=>!e.value?.find(p=>f.$id===p.$id)).forEach((f,p)=>{l.deleteArrayStatus(v.value,p.toString());});}else S.value=[];}function s(){E=watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?V():o();},{deep:_e?1:true,flush:"pre"});}function C(){s(),x=effectScope(),P=x.run(()=>{let d=computed({get:()=>e.value,set(D){E(),e.value=D,s();}}),f=computed(()=>i.value.$dirty&&(!S.value.length||S.value.every(D=>D.$dirty))),p=computed(()=>i.value.$anyDirty||S.value.some(D=>D.$anyDirty)),T=computed(()=>i.value.$invalid||S.value.some(D=>D.$invalid)),A=computed(()=>(Z(i.value.$rules)?true:i.value.$valid)&&(!S.value.length||S.value.every(D=>D.$valid))),Q=computed(()=>i.value.$error||S.value.some(D=>D.$error)),g=computed(()=>!(T.value||j.value)),j=computed(()=>i.value.$pending||S.value.some(D=>D.$pending)),H=computed(()=>!!S.value.length&&S.value.every(D=>D.$edited)),X=computed(()=>i.value.$anyEdited||S.value.some(D=>D.$anyEdited)),z=computed(()=>({$self:i.value.$errors,$each:S.value.map(D=>D.$errors)})),oe=computed(()=>({$self:i.value.$silentErrors,$each:S.value.map(D=>D.$silentErrors)})),y=computed(()=>F);function G(){h?.collections&&Object.entries(h?.collections).forEach(([D,se])=>{let le=effectScope();B[D]=le.run(()=>{let ge=ref();return watchEffect(()=>{ge.value=se(reactive({$dirty:f,$error:Q,$silentValue:d,$pending:j,$invalid:T,$valid:A,$errors:z,$ready:g,$silentErrors:oe,$anyDirty:p,$name:y,$each:S,$self:i,$value:e,$edited:H,$anyEdited:X}));}),ge}),w.push(le);});}let B={};return G(),{$dirty:f,$anyDirty:p,$invalid:T,$valid:A,$error:Q,$pending:j,$errors:z,$silentErrors:oe,$ready:g,$name:y,$shortcuts:B,$silentValue:d,$edited:H,$anyEdited:X}}),a.isPrimitiveArray.value&&t.value.$each&&console.warn(`${n} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`);}function _(){E&&E(),i.value&&i.value.$unwatch(),S.value&&S.value.forEach(d=>{"$dirty"in d&&d.$unwatch();}),x.stop(),x=effectScope(),O.stop(),O=effectScope(true),w.forEach(d=>d.stop()),w=[];}function k(d=true,f=false){i.value.$touch(d,f),S.value.forEach(p=>{p.$touch(d,f);});}function J(){i.value.$reset(),S.value.forEach(d=>{d.$reset();});}async function I(){let d=e.value;try{return {result:(await Promise.allSettled([i.value.$validate(),...S.value.map(T=>T.$validate())])).every(T=>T.status==="fulfilled"?T.value.result===!0:!1),data:d}}catch{return {result:false,data:d}}}function L(){i.value.$clearExternalErrors(),S.value.forEach(d=>{d.$clearExternalErrors();});}function ie(d=true){let f=S.value.map(p=>{if(xt(p))return p.$extractDirtyFields(d)});return d&&f.every(p=>Z(p))&&(f=[]),f}function de(){_(),e.value=Y(m.value),J();}let{$shortcuts:pe,...me}=P;return reactive({$self:i,...me,...pe,$each:S,$value:e,$validate:I,$unwatch:_,$watch:C,$touch:k,$reset:J,$resetAll:de,$extractDirtyFields:ie,$clearExternalErrors:L})}function ke({rulesDef:e,state:t,path:r="",rootRules:n,externalErrors:l,schemaErrors:u,rootSchemaErrors:R,validationGroups:c,initialState:$,fieldName:m,...h}){let F=effectScope(),x,P=[],O=null,a=null,w=null,v=null;async function E(d=true){let f=Object.entries(e.value),p=Object.fromEntries(f.filter(([g,j])=>!!j).map(([g,j])=>{if(j){let H=toRef(t.value??{},g),X=toRef(()=>j),z=toRef(l?.value??{},g),oe=computed(()=>u?.value?.[g]),y=toRef($?.value??{},g);return [g,Te({state:H,rulesDef:X,path:r?`${r}.${g}`:g,externalErrors:z,schemaErrors:oe,initialState:y,fieldName:g,...h})]}return []})),T=Object.fromEntries(Object.entries(unref(l)??{}).filter(([g,j])=>!(g in e.value)&&!!j).map(([g])=>{let j=toRef(t.value??{},g),H=toRef(l?.value??{},g),X=computed(()=>u?.value?.[g]),z=toRef($?.value??{},g);return [g,Te({state:j,rulesDef:computed(()=>({})),path:r?`${r}.${g}`:g,externalErrors:H,schemaErrors:X,initialState:z,fieldName:g,...h})]})),A=Object.fromEntries(Object.entries(unref(u)??{}).map(([g])=>{let j=toRef(t.value??{},g),H=toRef(l?.value??{},g),X=computed(()=>u?.value?.[g]),z=toRef($?.value??{},g);return [g,Te({state:j,rulesDef:computed(()=>({})),path:r?`${r}.${g}`:g,externalErrors:H,schemaErrors:X,initialState:z,fieldName:g,...h})]})),Q=Object.fromEntries(Object.entries(t.value??{}).filter(([g])=>!(g in e.value)&&!(g in(T??{}))&&!(g in(A??{}))).map(([g])=>{let j=toRef(t.value??{},g),H=toRef(l?.value??{},g),X=computed(()=>u?.value?.[g]),z=toRef($?.value??{},g);return [g,Te({state:j,rulesDef:computed(()=>({})),path:r?`${r}.${g}`:g,externalErrors:H,schemaErrors:X,initialState:z,fieldName:g,...h})]}));i.value={...p,...T,...A,...Q},d&&o();}let i=h.storage.getFieldsEntry(r);E();function S(){l&&(w=watch(l,()=>{s(),E();},{deep:true}));}function V(){v=watch(t,()=>{s(),E(),k(true,true);},{flush:"sync"});}function o(){n&&(O?.(),O=watch(n,()=>{s(),E();},{deep:true,flush:"post"}),S()),R&&(a?.(),a=watch(R,()=>{s(),E();},{deep:true,flush:"post"})),V(),x=F.run(()=>{let d=computed({get:()=>t.value,set(U){s(),t.value=U,E();}}),f=computed(()=>!!Object.entries(i.value).length&&Object.entries(i.value).every(([U,M])=>M?.$dirty)),p=computed(()=>Object.entries(i.value).some(([U,M])=>M?.$anyDirty)),T=computed(()=>Object.entries(i.value).some(([U,M])=>M?.$invalid)),A=computed(()=>{let U=Object.entries(i.value).filter(([M,K])=>Dt(K)?!K.$inactive:true);return U.length?U.every(([M,K])=>K?.$valid):false}),Q=computed(()=>p.value&&!z.value&&T.value),g=computed(()=>unref(h.options.rewardEarly)!=null?unref(h.options.rewardEarly):false),j=computed(()=>unref(h.options.autoDirty)!=null?unref(h.options.autoDirty):!g.value),H=computed(()=>j.value?p.value&&!(T.value||z.value):!(T.value||z.value)),X=ref(false),z=computed(()=>X.value||Object.entries(i.value).some(([U,M])=>M?.$pending)),oe=computed(()=>Object.fromEntries(Object.entries(i.value).map(([U,M])=>[U,M?.$errors]))),y=computed(()=>Object.fromEntries(Object.entries(i.value).map(([U,M])=>[U,M?.$silentErrors]))),G=computed(()=>!!Object.entries(i.value).length&&Object.entries(i.value).every(([U,M])=>M?.$edited)),B=computed(()=>Object.entries(i.value).some(([U,M])=>M?.$anyEdited)),D=computed(()=>m);function se(){h.shortcuts?.nested&&Object.entries(h.shortcuts.nested).forEach(([U,M])=>{let K=effectScope();ge[U]=K.run(()=>{let ye=ref();return watchEffect(()=>{ye.value=M(reactive({$dirty:f,$value:t,$silentValue:d,$error:Q,$pending:z,$invalid:T,$valid:A,$ready:H,$anyDirty:p,$name:D,$silentErrors:y,$errors:oe,$fields:i,$edited:G,$anyEdited:B}));}),ye}),P.push(K);});}let le=computed({get:()=>c?Object.fromEntries(Object.entries(c?.(i.value)??{}).map(([U,M])=>M.length?[U,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$valid"].map(K=>[K,gt(M,K)])),...Object.fromEntries(["$errors","$silentErrors"].map(K=>[K,yt(M,K)]))}]:[])):{},set(){}}),ge={};return se(),{$dirty:f,$anyDirty:p,$invalid:T,$valid:A,$error:Q,$pending:z,$errors:oe,$silentErrors:y,$ready:H,$name:D,$shortcuts:ge,$groups:le,$silentValue:d,$edited:G,$anyEdited:B,$localPending:X}});}function s(){O?.(),w?.(),v?.(),a?.(),P=[],x={},i.value&&Object.entries(i.value).forEach(([d,f])=>{f.$unwatch();});}function C(){Object.entries(i.value).forEach(([d,f])=>{f.$clearExternalErrors();});}function _(){w?.(),Object.values(i.value).forEach(d=>{d.$reset();}),$.value={...Y(t.value)},S();}function k(d=true,f=false){Object.values(i.value).forEach(p=>{p.$touch(d,f);});}async function J(){s(),t.value=Y({...$.value??{}}),_(),E();}function I(d){return d.filter(([f,p])=>ne(p)?!(p&&typeof p=="object"&&"_null"in p)&&!Z(p):Array.isArray(p)?p.length:true)}function L(d=true){let f=Object.entries(i.value).map(([p,T])=>[p,T.$extractDirtyFields(d)]);return d&&(f=I(f)),Object.fromEntries(f)}async function ie(){try{if(h.schemaMode)return h.onValidate?(k(!1),x.$localPending.value=!0,h.onValidate()):{result:!1,data:t.value};{let d=t.value;return {result:(await Promise.allSettled(Object.values(i.value).map(T=>T.$validate()))).every(T=>T.status==="fulfilled"?T.value.result===!0:!1),data:d}}}catch{return {result:false,data:t.value}}finally{x.$localPending.value=false;}}let{$shortcuts:de,$localPending:pe,...me}=x;return reactive({...me,...de,$fields:i,$value:t,$resetAll:J,$reset:_,$touch:k,$validate:ie,$unwatch:s,$watch:o,$clearExternalErrors:C,$extractDirtyFields:L})}function Te({rulesDef:e,...t}){if(Et(e,t.state))return At({rulesDef:e,...t});if(bt(t.state,e)){if(Ve(t.state))return ke({rulesDef:e,...t});{let n=effectScope().run(()=>{let R=toRef(t.state.value?t.state:ref({}));return watch(()=>t.state.value,c=>{R.value=c;},{deep:true}),watch(R,c=>{t.state.value=c;},{deep:true}),{fakeState:R}}),{state:l,...u}=t;return ke({rulesDef:e,...u,state:n.fakeState})}}else if(Tt(e))return Ne({rulesDef:e,...t})}function Ie({initialState:e,options:t,scopeRules:r,state:n,customRules:l,shortcuts:u,schemaErrors:R,schemaMode:c=false,onValidate:$}){let m=qe(),h=ref();return h.value=ke({rootRules:r,rulesDef:r,state:n,customMessages:l?.(),storage:m,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:u,fieldName:"root",path:"",schemaErrors:R,rootSchemaErrors:R,schemaMode:c,onValidate:$}),getCurrentScope()&&onScopeDispose(()=>{h.value?.$unwatch();}),reactive({regle:h})}function tt(e,t,r){let n={autoDirty:t?.autoDirty,lazy:t?.lazy,rewardEarly:t?.rewardEarly,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange};function l(u,R,c){let $=isRef(R)?R:computed(typeof R=="function"?R:()=>R),m={...n,...c},h=isRef(u)?u:ref(u),F=ref({...Y(h.value)});return {r$:Ie({scopeRules:$,state:h,options:m,initialState:F,customRules:e,shortcuts:r}).regle}}return l}var Ue=tt();function rt(){function e(t,r){return r}return e}var nt=rt();function Vt({rules:e,modifiers:t,shortcuts:r}){let n=tt(e,t,r),l=rt();return {useRegle:n,inferRules:l}}function Me(e,t){let r=t??false,n=computed({get:()=>r?Object.values(e).map(o=>o.$value):Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$value])),set:o=>{r||typeof o=="object"&&Object.entries(o).forEach(([s,C])=>e[s].$value=C);}}),l=computed({get:()=>Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$silentValue])),set:o=>{typeof o=="object"&&Object.entries(o).forEach(([s,C])=>e[s].$silentValue=C);}}),u=computed(()=>{let o=Object.entries(e);return !!o.length&&o.every(([s,C])=>C?.$dirty)}),R=computed(()=>Object.entries(e).some(([o,s])=>s?.$anyDirty)),c=computed(()=>Object.entries(e).some(([o,s])=>s?.$invalid)),$=computed(()=>{let o=Object.entries(e);return !!o.length&&o.every(([s,C])=>C?.$valid)}),m=computed(()=>Object.entries(e).some(([o,s])=>s?.$error)),h=computed(()=>{let o=Object.entries(e);return !!o.length&&o.every(([s,C])=>C?.$ready)}),F=computed(()=>Object.entries(e).some(([o,s])=>s?.$pending)),x=computed(()=>r?Object.entries(e).map(([o,s])=>s.$errors):Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$errors]))),P=computed(()=>r?Object.entries(e).map(([o,s])=>s.$silentErrors):Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$silentErrors]))),O=computed(()=>{let o=Object.entries(e);return !!o.length&&o.every(([s,C])=>C?.$edited)}),a=computed(()=>Object.entries(e).some(([o,s])=>s?.$anyEdited)),w=computed(()=>r?Object.values(e):e);function v(){Object.values(e).forEach(o=>{o.$reset();});}function b(){Object.values(e).forEach(o=>{o.$touch();});}function E(){Object.values(e).forEach(o=>{o.$resetAll();});}function i(o=true){return Object.values(e).map(s=>s.$extractDirtyFields(o))}function S(){Object.values(e).forEach(o=>{o.$clearExternalErrors();});}async function V(){try{let o=n.value;return {result:(await Promise.allSettled(Object.values(e).map(_=>_.$validate()))).every(_=>_.status==="fulfilled"?_.value.result===!0:!1),data:o}}catch{return {result:false,data:n.value}}}return reactive({...!r&&{$silentValue:l},$errors:x,$silentErrors:P,$instances:w,$value:n,$dirty:u,$anyDirty:R,$invalid:c,$valid:$,$error:m,$pending:F,$ready:h,$edited:O,$anyEdited:a,$resetAll:E,$reset:v,$touch:b,$validate:V,$extractDirtyFields:i,$clearExternalErrors:S})}function Nt(e){function t(r){let n=computed(()=>toValue(r));R();let l=ref(c(e.value)),u=reactive({r$:l});function R(){n.value&&!e.value[n.value]&&(e.value[n.value]={});}watch(n,R),watch(e,$=>{l.value=c($);},{deep:true});function c($){if(n.value){let m=$[n.value]??{};return Me(m,true)}else return Me($["~~global"]??{},true)}return {r$:u.r$}}return {useCollectScope:t}}function Ut(e,t){let r=t??Ue;return {useScopedRegle:(l,u,R)=>{let{namespace:c,...$}=R??{},m=computed(()=>toValue(c)),h=ref(`${Object.keys(e.value).length+1}-${he()}`),F=computed(()=>`instance-${h.value}`),{r$:x}=r(l,u,$);O(),St(P),watch(m,(a,w)=>{P(w),O();}),getCurrentInstance()&&onMounted(()=>{let a=getCurrentInstance();typeof window<"u"&&a?.proxy?.$el?.parentElement&&document.documentElement&&!document.documentElement.contains(a?.proxy?.$el?.parentElement)&&P();});function P(a){let w=a??m.value;w?e.value[w]&&delete e.value[w][F.value]:e.value["~~global"][F.value]&&delete e.value["~~global"][F.value];}function O(){m.value?(e.value[m.value]||(e.value[m.value]={}),e.value[m.value][F.value]=x):(e.value["~~global"]||(e.value["~~global"]={}),e.value["~~global"][F.value]=x);}return {r$:x,dispose:P,register:O}}}}function at(e){let r=(e?.customStore?()=>(e.customStore&&(e.customStore?.value["~~global"]?e.customStore?.value&&(e.customStore.value={"~~global":{}}):e.customStore.value["~~global"]={}),e.customStore):ht(()=>ref({"~~global":{}})))(),{useScopedRegle:n}=Ut(r,e?.customUseRegle),{useCollectScope:l}=Nt(r);return {useScopedRegle:n,useCollectScope:l}}
2
- export{Le as InternalRuleType,ze as createRule,at as createScopedUseRegle,Vt as defineRegleConfig,nt as inferRules,Me as mergeRegles,ee as unwrapRuleParameters,Ue as useRegle,Ie as useRootStorage};
1
+ import {toValue,version,ref,getCurrentScope,onScopeDispose,reactive,computed,shallowRef,effectScope,watch,getCurrentInstance,onMounted,isRef,toRef,unref,watchEffect}from'vue';function ee(e,t=true){return e==null?true:e instanceof Date?isNaN(e.getTime()):e instanceof File?e.size>0:Array.isArray(e)?t?e.length===0:false:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}var mt=Symbol("regle-rule");function Bt(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 Q(e){let t=e,r={}.toString.call(e).slice(8,-1);if(r=="Set"&&(t=new Set([...e].map(n=>Q(n)))),r=="Map"&&(t=new Map([...e].map(n=>[Q(n[0]),Q(n[1])]))),r=="Date"&&(t=new Date(e.getTime())),r=="RegExp"&&(t=RegExp(e.source,Bt(e))),r=="Array"||r=="Object"){t=Array.isArray(e)?[]:{};for(let n in e)t[n]=Q(e[n]);}return t}function ae(e){return e&&(e instanceof Date||e.constructor.name=="File"||e.constructor.name=="FileList")?false:typeof e=="object"&&e!==null&&!Array.isArray(e)}function Le(e){let t=Object.prototype.toString.call(e);return e==null?new Date(NaN):e instanceof Date||typeof e=="object"&&t==="[object Date]"?new Date(e.getTime()):typeof e=="number"||t==="[object Number]"?new Date(e):typeof e=="string"||t==="[object String]"?new Date(e):new Date(NaN)}function je(e,t,r){let n,l=(...u)=>new Promise(R=>{clearTimeout(n),n=setTimeout(()=>{n=undefined,Promise.resolve(e.apply(this,[...u])).then(R);},t);});return l.cancel=()=>{clearTimeout(n),n=undefined;},l}var Be=(r=>(r.Inline="__inline",r.Async="__async",r))(Be||{});function yt(e,t){return e.some(r=>r[t])}function gt(e,t){return e.reduce((r,n)=>{let l=n[t]||[];return r.concat(l)},[])}function te(e){try{return e.map(t=>toValue(t))}catch{return []}}function $t(e){return e.map(t=>t instanceof Function?computed(t):isRef(t)?t:toRef(()=>t))}function vt(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(R=>R.trim()).filter(R=>R.length>0).length:0}function He(e,...t){let{validator:r,type:n}=e,l=n==="__async"||r.constructor.name==="AsyncFunction";return {...{validator(c,...v){return e.validator(c,...te(v.length?v:t))},message(c){return typeof e.message=="function"?e.message({...c,$params:te(c?.$params?.length?c.$params:t)}):e.message},active(c){return typeof e.active=="function"?e.active({...c,$params:te(c?.$params?.length?c.$params:t)}):e.active??true},tooltip(c){return typeof e.tooltip=="function"?e.tooltip({...c,$params:te(c?.$params?.length?c.$params:t)}):e.tooltip??[]},exec(c){let v=e.validator(c,...te(t)),m;return v instanceof Promise?v.then(h=>(m=h,typeof m=="object"&&"$valid"in m?m.$valid:typeof m=="boolean"?m:false)):(m=v,typeof m=="object"&&"$valid"in m?m.$valid:typeof m=="boolean"?m:false)}},_validator:e.validator,_message:e.message,_active:e.active,_tooltip:e.tooltip,_type:e.type,_message_patched:false,_tooltip_patched:false,_async:l,_params:$t(t),_brand:mt}}function ze(e){if(typeof e.validator=="function"){let r=He(e,...[]),n=e.async??e.validator.constructor.name==="AsyncFunction";if(vt(e.validator)>1){let l=function(...u){return He(e,...u)};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=false,l._tooltip_pacthed=false,l._async=n,l}else return r}throw new Error("Validator must be a function")}function qe(){let e=shallowRef(new Map),t=shallowRef(new Map),r=shallowRef(new Map),n=shallowRef(new Map),l=shallowRef(new Map),u=shallowRef(new Map);function R($){let b=t.value.get($);if(b)return b;{let E=ref({});return t.value.set($,E),E}}function c($){let b=r.value.get($);if(b)return b;{let E=ref([]);return r.value.set($,E),E}}function v($,b,E){u.value.set(`${$}-${b}`,E);}function m($,b){return u.value.get(`${$}-${b}`)}function h($,b){$&&b!=null&&u.value.delete(`${$}-${b}`);}function F($,b){n.value.set($,b);}function D($){return n.value.get($)??false}function P($,b){e.value.set($,b);}function O($,b){let E=e.value.get($);return E?a(b,E)?{valid:true}:{valid:false}:undefined}function a($,b){let E=Object.keys(b),i=Object.keys($);return i.length!==E.length||!i.every(V=>E.includes(V))?false:i.every(V=>{let o=$[V],s=b[V];return !s||!o||typeof o=="function"||typeof s=="function"||typeof o=="number"||typeof o=="boolean"?false:o._params?o._params?.every((C,_)=>{if(typeof s=="number"||typeof s=="boolean")return true;{let k=te(s._params),J=te(o._params);return k?.[_]===J?.[_]}}):true})}function w($){let b=l.value.get($);if(b)return b;{let E=ref(false),i=ref(true),S=ref({}),V=ref(false);return l.value.set($,{$pending:E,$valid:i,$metadata:S,$validating:V}),{$pending:E,$valid:i,$metadata:S,$validating:V}}}return getCurrentScope()&&onScopeDispose(()=>{e.value.clear(),t.value.clear(),r.value.clear(),n.value.clear(),l.value.clear(),u.value.clear();}),{addRuleDeclEntry:P,setDirtyEntry:F,checkRuleDeclEntry:O,getDirtyState:D,trySetRuleStatusRef:w,getFieldsEntry:R,getCollectionsEntry:c,getArrayStatus:m,addArrayStatus:v,deleteArrayStatus:h,arrayStatusStorage:u}}function Ve(e){return ae(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 Zt(e,t){let r=String(e).split("."),n=String(t).split(".");for(let l=0;l<Math.min(r.length,n.length);l++){let u=Number(r[l]),R=Number(n[l]);if(u>R)return 1;if(R>u)return -1;if(!isNaN(u)&&isNaN(R))return 1;if(isNaN(u)&&!isNaN(R))return -1}return 0}var _e=Zt(version,"3.5.0")!==-1;function er(){return Math.floor(Math.random()*Date.now()).toString()}function he(){return typeof window>"u"?er():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function St(e){return getCurrentScope()?(onScopeDispose(e),true):false}function ht(e){let t=false,r,n=effectScope(true);return (...l)=>(t||(r=n.run(()=>e(...l)),t=true),r)}function bt(e,t){return Ve(e)||ae(t.value)&&!ee(t.value)&&!Object.entries(t.value).some(([r,n])=>we(n)||typeof n=="function")}function Et(e,t){return !!e.value&&ae(e.value)&&"$each"in e.value||Array.isArray(t.value)}function Tt(e){return !!e.value&&ae(e.value)}function we(e){return ae(e)&&"_validator"in e}function Pe(e){return typeof e.value!="function"}function xt(e){return ae(e)&&"$fields"in e}function Dt(e){return !!e&&"$rules"in e}function Je({field:e,silent:t=false}){return Object.entries(e.$rules??{}).map(([r,n])=>t&&!n.$valid||!n.$valid&&e.$error&&!n.$validating?n.$message:null).filter(r=>!!r).reduce((r,n)=>typeof n=="string"?r?.concat([n]):r?.concat(n),[]).concat(e.$error?e.$externalErrors??[]:[]).concat(e.$error?e.$schemaErrors??[]:[])}function Ct({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 It({customMessages:e,rule:t,ruleKey:r,state:n,path:l,storage:u,$debounce:R,modifiers:c}){let v=effectScope(),m={},h,F=ref(false),{$pending:D,$valid:P,$metadata:O,$validating:a}=u.trySetRuleStatusRef(`${l}.${r}`);function w(){v=effectScope(),m=v.run(()=>{let o=ref(false),s=ref(false),C=ref(true),_=ref(false),k=ref(false),J=computed(()=>({$value:n.value,$error:s.value,$dirty:o.value,$pending:_.value,$correct:k.value,$invalid:C.value,$rule:{$valid:P.value,$invalid:!P.value,$pending:D.value},$params:d.value,...O.value})),I=computed(()=>Pe(t)?typeof t.value.active=="function"?t.value.active(J.value):!!t.value.active:true);function B(p){let T="",A=e?e[r]?.[p]:undefined;if(A&&(typeof A=="function"?T=A(J.value):T=A),Pe(t)){let X=`_${p}_patched`;A&&!t.value[X]||(typeof t.value[p]=="function"?T=t.value[p](J.value):T=t.value[p]??"");}return T}let ie=computed(()=>{let p=B("message");return ee(p)&&(p="This field is not valid"),p}),de=computed(()=>B("tooltip")),pe=computed(()=>Pe(t)&&t.value.type?t.value.type:r),me=computed(()=>Pe(t)?t.value.validator:t.value),d=computed(()=>typeof t.value=="function"?[]:te(t.value._params??[])),f=computed(()=>`${l}.${pe.value}`);return {$active:I,$message:ie,$type:pe,$validator:me,$params:d,$path:f,$tooltip:de,$fieldCorrect:k,$fieldError:s,$fieldDirty:o,$fieldPending:_,$fieldInvalid:C}}),h=watch(m?.$params,()=>{(c.$autoDirty.value||c.$rewardEarly.value&&m.$fieldError.value)&&i();});}w();function $(){P.value=true,m.$fieldDirty.value&&(D.value=true);}async function b(){let o=false;try{let s=m.$validator.value;if(typeof s!="function")return console.error(`${l}: Incorrect rule format, it needs to be either a function or created with "createRule".`),!1;let C=s(n.value,...m.$params.value),_=n.value;$();let k;if(C instanceof Promise?k=await C:k=C,n.value!==_)return !0;if(typeof k=="boolean")o=k;else {let{$valid:J,...I}=k;o=J,O.value=I;}}catch{o=false;}finally{D.value=false;}return o}let E=je(b,R??200);async function i(){try{a.value=!0;let o=!1;if(we(t.value)&&t.value._async)o=await E();else {let s=m.$validator.value,C=s(n.value,...m.$params.value);if(C 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(C!=null)if(typeof C=="boolean")o=C;else {let{$valid:_,...k}=C;o=_,O.value=k;}}return P.value=o,o}catch{return false}finally{a.value=false;}}function S(){P.value=true,O.value={},D.value=false,a.value=false,w();}function V(){h(),v.stop(),v=effectScope();}return reactive({...m,$pending:D,$valid:P,$metadata:O,$haveAsync:F,$validating:a,$validate:i,$unwatch:V,$watch:w,$reset:S})}function Ne({state:e,rulesDef:t,customMessages:r,path:n,fieldName:l,storage:u,options:R,externalErrors:c,schemaErrors:v,schemaMode:m,onUnwatch:h,$isArray:F,initialState:D,shortcuts:P}){let O=effectScope(),a,w=[],$,b,E,i,S,V=()=>{};function o(){let g=t.value,G=u.checkRuleDeclEntry(n,g);B.value=Object.fromEntries(Object.entries(g).filter(([L])=>L.startsWith("$"))),_(),I.value=Object.fromEntries(Object.entries(t.value).filter(([L])=>!L.startsWith("$")).map(([L,x])=>{if(x){let ue=toRef(()=>x);return [L,It({modifiers:{$autoDirty:a.$autoDirty,$rewardEarly:a.$rewardEarly},customMessages:r,rule:ue,ruleKey:L,state:e,path:n,storage:u,$debounce:B.value.$debounce})]}return []}).filter(L=>!!L.length)),a.processShortcuts(),s(),G?.valid!=null&&(a.$dirty.value=u.getDirtyState(n),(a.$dirty.value&&a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&V()),u.addRuleDeclEntry(n,g);}function s(){V=a.$debounce.value?je(J,a.$debounce.value??a.$haveAnyAsyncRule?100:0):J;}function C(){I.value&&Object.entries(I.value).forEach(([g,G])=>{G.$unwatch();}),E(),S?.(),a.$dirty.value&&u.setDirtyEntry(n,a.$dirty.value),$?.(),b?.(),O.stop(),O=effectScope(),w.forEach(g=>g.stop()),w=[],h?.(),i?.();}function _(){I.value&&Object.entries(I.value).forEach(([g,G])=>{G.$watch();}),a=O.run(()=>{let g=ref(false),G=ref(false),L=computed(()=>g.value),x=computed(()=>B.value.$debounce),ue=computed(()=>B.value.$lazy!=null?B.value.$lazy:unref(R.lazy)!=null?unref(R.lazy):false),le=computed(()=>B.value.$rewardEarly!=null?B.value.$rewardEarly:unref(R.rewardEarly)!=null?unref(R.rewardEarly):false),ye=computed(()=>B.value.$clearExternalErrorsOnChange!=null?B.value.$clearExternalErrorsOnChange:unref(R.clearExternalErrorsOnChange)!=null?unref(R.clearExternalErrorsOnChange):true),U=computed(()=>B.value.$autoDirty!=null?B.value.$autoDirty:unref(R.autoDirty)!=null?unref(R.autoDirty):!le.value),M=computed(()=>Object.entries(I.value).some(([oe,Y])=>Y.$validating)),H=computed({get:()=>e.value,set(oe){$(),e.value=oe,k();}}),ge=computed(()=>$e.value&&!Oe.value&&g.value),lt=computed(()=>Je({field:{$rules:I.value,$error:ge.value,$externalErrors:c?.value,$schemaErrors:v?.value}})),ot=computed(()=>Je({field:{$rules:I.value,$error:ge.value,$externalErrors:c?.value,$schemaErrors:v?.value},silent:true})),We=computed(()=>g.value?D.value instanceof Date&&e.value instanceof Date?Le(D.value).getDate()!==Le(e.value).getDate():D.value==null?!!e.value:Array.isArray(e.value)&&Array.isArray(D.value)?e.value.length!==D.value.length:D.value!==e.value:false),st=computed(()=>We.value),ut=computed(()=>Ct({field:{$rules:I.value}})),it=computed(()=>U.value?L.value&&!($e.value||Oe.value):!($e.value||Oe.value)),Oe=computed(()=>G.value||!le.value?Object.entries(I.value).some(([oe,Y])=>Y.$pending):false),$e=computed(()=>c?.value?.length||v?.value?.length?true:Fe.value?false:!le.value||le.value&&G.value?Object.entries(I.value).some(([oe,Y])=>!Y.$valid):false),ct=computed(()=>l),Fe=computed(()=>!!(ee(I.value)&&!m)),ft=computed(()=>c?.value?.length||Fe.value?false:g.value&&!ee(e.value)&&!M.value?m?!v?.value?.length:Object.values(I.value).some(Y=>Y.$active)?Object.values(I.value).filter(Y=>Y.$active).every(Y=>Y.$valid):false:false),Wt=computed(()=>Object.entries(I.value).some(([oe,Y])=>Y.$haveAsync));function Lt(){P?.fields&&Object.entries(P.fields).forEach(([oe,Y])=>{let dt=effectScope();Rt[oe]=dt.run(()=>{let pt=ref();return watchEffect(()=>{pt.value=Y(reactive({$dirty:g,$externalErrors:c?.value??[],$value:e,$silentValue:H,$rules:I,$error:ge,$pending:Oe,$invalid:$e,$correct:ft,$errors:lt,$ready:it,$silentErrors:ot,$anyDirty:L,$tooltips:ut,$name:ct,$inactive:Fe,$edited:We,$anyEdited:st}));}),pt}),w.push(dt);});}let Rt={};return watch($e,oe=>{oe||(G.value=false);}),{$error:ge,$pending:Oe,$invalid:$e,$correct:ft,$debounce:x,$lazy:ue,$errors:lt,$ready:it,$silentErrors:ot,$rewardEarly:le,$autoDirty:U,$clearExternalErrorsOnChange:ye,$anyDirty:L,$edited:We,$anyEdited:st,$name:ct,$haveAnyAsyncRule:Wt,$shortcuts:Rt,$validating:M,$tooltips:ut,$dirty:g,triggerPunishment:G,processShortcuts:Lt,$silentValue:H,$inactive:Fe}}),k(),E=watch(a.$dirty,g=>{u.setDirtyEntry(n,g),Object.values(I.value).forEach(G=>{G.$fieldDirty=g;});}),S=watch([a.$error,a.$correct,a.$invalid,a.$pending],()=>{Object.values(I.value).forEach(g=>{g.$fieldError=a.$error.value,g.$fieldInvalid=a.$invalid.value,g.$fieldPending=a.$pending.value,g.$fieldCorrect=a.$correct.value;});}),b=watch(a.$invalid,g=>{a.$rewardEarly.value&&!g&&(a.triggerPunishment.value=false);}),i=watch(a.$haveAnyAsyncRule,s);}function k(){$=watch(e,()=>{a.$autoDirty.value&&(a.$dirty.value||(a.$dirty.value=true)),t.value instanceof Function&&o(),(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&V(),a.$rewardEarly.value!==true&&a.$clearExternalErrorsOnChange.value&&f();},{deep:F?true:_e?1:true,flush:"post"});}function J(){Object.values(I.value).forEach(g=>{g.$validate();});}let I=ref({}),B=ref({});o();function ie(){f(),a.$dirty.value=false,a.triggerPunishment.value=false,u.setDirtyEntry(n,false),D.value=ae(e.value)?Q(e.value):Array.isArray(e.value)?[...e.value]:e.value,Object.entries(I.value).forEach(([g,G])=>{G.$reset();}),!a.$lazy.value&&a.$autoDirty.value&&Object.values(I.value).forEach(g=>g.$validate());}function de(g=true,G=false){a.$dirty.value||(a.$dirty.value=true),G&&g?(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&V():g&&V();}async function pe(){try{let g=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:g};return m?{result:!v?.value?.length,data:g}:ee(I.value)?{result:!0,data:g}:{result:(await Promise.allSettled(Object.entries(I.value).map(([x,ue])=>ue.$validate()))).every(x=>x.status==="fulfilled"?x.value===!0:!1),data:g}}catch{return {result:false,data:e.value}}}function me(){C(),e.value=Q(D),ie();}function d(g=true){return a.$dirty.value?e.value:g?{_null:true}:null}function f(){c?.value?.length&&(c.value=[]);}!a.$lazy.value&&!a.$dirty.value&&a.$autoDirty.value&&V();let{$shortcuts:p,$validating:T,$autoDirty:A,$rewardEarly:X,$clearExternalErrorsOnChange:y,$haveAnyAsyncRule:j,$debounce:z,$lazy:Z,triggerPunishment:q,...se}=a;return reactive({...se,$externalErrors:c,$value:e,$rules:I,...p,$reset:ie,$touch:de,$validate:pe,$unwatch:C,$watch:_,$resetAll:me,$extractDirtyFields:d,$clearExternalErrors:f})}function Xe({$id:e,path:t,index:r,options:n,storage:l,stateValue:u,customMessages:R,rules:c,externalErrors:v,schemaErrors:m,initialState:h,shortcuts:F,fieldName:D,schemaMode:P}){let O=c.$key?c.$key:he(),a=`${t}.${String(O)}`;typeof u.value=="object"&&u.value!=null&&(u.value.$id?a=`${t}.${u.value.$id}`:Object.defineProperties(u.value,{$id:{value:O,enumerable:false,configurable:false,writable:false}}));let w=toRef(v?.value??[],r),$=computed(()=>m?.value?.[r]),b=Te({state:u,rulesDef:toRef(()=>c),customMessages:R,path:a,storage:l,options:n,externalErrors:w,schemaErrors:$,initialState:h,shortcuts:F,fieldName:D,schemaMode:P});if(b){let E=u.value?.$id;b.$id=E??String(O),l.addArrayStatus(e,b.$id,b);}return b}function At({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:u,externalErrors:R,schemaErrors:c,schemaMode:v,initialState:m,shortcuts:h,fieldName:F}){let D=effectScope(),P,O=effectScope(),a,w=[];if(!Array.isArray(e.value)&&!t.value.$each)return;let $=ref(),b=ref(e.value),E,i=ref({}),S=l.getCollectionsEntry(n);a=O.run(()=>({isPrimitiveArray:computed(()=>Array.isArray(e.value)&&e.value.length?e.value.every(f=>typeof f!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(f=>we(f)||typeof f=="function"):false)})),V(),C();function V(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?($.value=he(),Object.defineProperties(e.value,{$id:{value:$.value,enumerable:false,configurable:false,writable:false}})):e.value?.$id&&($.value=e.value.$id)),b.value=i.value.$value,Array.isArray(e.value)&&!a.isPrimitiveArray.value?S.value=e.value.filter(d=>typeof d=="object").map((d,f)=>{let{scope:p,unwrapped:T}=Ke(t.value.$each,toRef(()=>d),f);p&&w.push(p);let A=toRef(m.value??[],f),X=toRef(R?.value??{},"$each"),y=computed(()=>c?.value?.$each),j=Xe({$id:$.value,path:n,customMessages:r,rules:T??{},stateValue:toRef(()=>d),index:f,options:u,storage:l,externalErrors:X,schemaErrors:y,initialState:A,shortcuts:h,fieldName:F,schemaMode:v});return j||null}).filter(d=>!!d):S.value=[],i.value=Ne({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:u,externalErrors:toRef(R?.value??{},"$self"),schemaErrors:computed(()=>c?.value?.$self),$isArray:true,initialState:m,shortcuts:h,fieldName:F,schemaMode:v});}function o(){if(Array.isArray(e.value)&&!a.isPrimitiveArray.value){let d=Q(S.value);S.value=e.value.filter(f=>typeof f=="object").map((f,p)=>{let T=toRef(()=>f);if(f.$id&&S.value.find(A=>A.$id===f.$id)){let A=l.getArrayStatus($.value,f.$id);return A?(A.$value=T,A):null}else {let{scope:A,unwrapped:X}=Ke(t.value.$each,T,p);A&&w.push(A);let y=toRef(R?.value??{},"$each"),j=computed(()=>c?.value?.$each??[]),z=Xe({$id:$.value,path:n,customMessages:r,rules:X??{},stateValue:T,index:p,options:u,storage:l,externalErrors:y,schemaErrors:j,initialState:toRef(m.value??[],p),shortcuts:h,fieldName:F,schemaMode:v});return z||null}}).filter(f=>!!f),d.filter(f=>!e.value?.find(p=>f.$id===p.$id)).forEach((f,p)=>{l.deleteArrayStatus($.value,p.toString());});}else S.value=[];}function s(){E=watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?V():o();},{deep:_e?1:true,flush:"pre"});}function C(){s(),D=effectScope(),P=D.run(()=>{let d=computed({get:()=>e.value,set(x){E(),e.value=x,s();}}),f=computed(()=>i.value.$dirty&&(!S.value.length||S.value.every(x=>x.$dirty))),p=computed(()=>i.value.$anyDirty||S.value.some(x=>x.$anyDirty)),T=computed(()=>i.value.$invalid||S.value.some(x=>x.$invalid)),A=computed(()=>(ee(i.value.$rules)?true:i.value.$correct)&&(!S.value.length||S.value.every(x=>x.$correct||x.$anyDirty&&!x.$invalid))),X=computed(()=>i.value.$error||S.value.some(x=>x.$error)),y=computed(()=>!(T.value||j.value)),j=computed(()=>i.value.$pending||S.value.some(x=>x.$pending)),z=computed(()=>!!S.value.length&&S.value.every(x=>x.$edited)),Z=computed(()=>i.value.$anyEdited||S.value.some(x=>x.$anyEdited)),q=computed(()=>({$self:i.value.$errors,$each:S.value.map(x=>x.$errors)})),se=computed(()=>({$self:i.value.$silentErrors,$each:S.value.map(x=>x.$silentErrors)})),g=computed(()=>F);function G(){h?.collections&&Object.entries(h?.collections).forEach(([x,ue])=>{let le=effectScope();L[x]=le.run(()=>{let ye=ref();return watchEffect(()=>{ye.value=ue(reactive({$dirty:f,$error:X,$silentValue:d,$pending:j,$invalid:T,$correct:A,$errors:q,$ready:y,$silentErrors:se,$anyDirty:p,$name:g,$each:S,$self:i,$value:e,$edited:z,$anyEdited:Z}));}),ye}),w.push(le);});}let L={};return G(),{$dirty:f,$anyDirty:p,$invalid:T,$correct:A,$error:X,$pending:j,$errors:q,$silentErrors:se,$ready:y,$name:g,$shortcuts:L,$silentValue:d,$edited:z,$anyEdited:Z}}),a.isPrimitiveArray.value&&t.value.$each&&console.warn(`${n} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`);}function _(){E&&E(),i.value&&i.value.$unwatch(),S.value&&S.value.forEach(d=>{"$dirty"in d&&d.$unwatch();}),D.stop(),D=effectScope(),O.stop(),O=effectScope(true),w.forEach(d=>d.stop()),w=[];}function k(d=true,f=false){i.value.$touch(d,f),S.value.forEach(p=>{p.$touch(d,f);});}function J(){i.value.$reset(),S.value.forEach(d=>{d.$reset();});}async function I(){let d=e.value;try{return {result:(await Promise.allSettled([i.value.$validate(),...S.value.map(T=>T.$validate())])).every(T=>T.status==="fulfilled"?T.value.result===!0:!1),data:d}}catch{return {result:false,data:d}}}function B(){i.value.$clearExternalErrors(),S.value.forEach(d=>{d.$clearExternalErrors();});}function ie(d=true){let f=S.value.map(p=>{if(xt(p))return p.$extractDirtyFields(d)});return d&&f.every(p=>ee(p))&&(f=[]),f}function de(){_(),e.value=Q(m.value),J();}let{$shortcuts:pe,...me}=P;return reactive({$self:i,...me,...pe,$each:S,$value:e,$validate:I,$unwatch:_,$watch:C,$touch:k,$reset:J,$resetAll:de,$extractDirtyFields:ie,$clearExternalErrors:B})}function ke({rulesDef:e,state:t,path:r="",rootRules:n,externalErrors:l,schemaErrors:u,rootSchemaErrors:R,validationGroups:c,initialState:v,fieldName:m,...h}){let F=effectScope(),D,P=[],O=null,a=null,w=null,$=null;async function E(d=true){let f=Object.entries(e.value),p=Object.fromEntries(f.filter(([y,j])=>!!j).map(([y,j])=>{if(j){let z=toRef(t.value??{},y),Z=toRef(()=>j),q=toRef(l?.value??{},y),se=computed(()=>u?.value?.[y]),g=toRef(v?.value??{},y);return [y,Te({state:z,rulesDef:Z,path:r?`${r}.${y}`:y,externalErrors:q,schemaErrors:se,initialState:g,fieldName:y,...h})]}return []})),T=Object.fromEntries(Object.entries(unref(l)??{}).filter(([y,j])=>!(y in e.value)&&!!j).map(([y])=>{let j=toRef(t.value??{},y),z=toRef(l?.value??{},y),Z=computed(()=>u?.value?.[y]),q=toRef(v?.value??{},y);return [y,Te({state:j,rulesDef:computed(()=>({})),path:r?`${r}.${y}`:y,externalErrors:z,schemaErrors:Z,initialState:q,fieldName:y,...h})]})),A=Object.fromEntries(Object.entries(unref(u)??{}).map(([y])=>{let j=toRef(t.value??{},y),z=toRef(l?.value??{},y),Z=computed(()=>u?.value?.[y]),q=toRef(v?.value??{},y);return [y,Te({state:j,rulesDef:computed(()=>({})),path:r?`${r}.${y}`:y,externalErrors:z,schemaErrors:Z,initialState:q,fieldName:y,...h})]})),X=Object.fromEntries(Object.entries(t.value??{}).filter(([y])=>!(y in e.value)&&!(y in(T??{}))&&!(y in(A??{}))).map(([y])=>{let j=toRef(t.value??{},y),z=toRef(l?.value??{},y),Z=computed(()=>u?.value?.[y]),q=toRef(v?.value??{},y);return [y,Te({state:j,rulesDef:computed(()=>({})),path:r?`${r}.${y}`:y,externalErrors:z,schemaErrors:Z,initialState:q,fieldName:y,...h})]}));i.value={...p,...T,...A,...X},d&&o();}let i=h.storage.getFieldsEntry(r);E();function S(){l&&(w=watch(l,()=>{s(),E();},{deep:true}));}function V(){$=watch(t,()=>{s(),E(),k(true,true);},{flush:"sync"});}function o(){n&&(O?.(),O=watch(n,()=>{s(),E();},{deep:true,flush:"post"}),S()),R&&(a?.(),a=watch(R,()=>{s(),E();},{deep:true,flush:"post"})),V(),D=F.run(()=>{let d=computed({get:()=>t.value,set(U){s(),t.value=U,E();}}),f=computed(()=>!!Object.entries(i.value).length&&Object.entries(i.value).every(([U,M])=>M?.$dirty)),p=computed(()=>Object.entries(i.value).some(([U,M])=>M?.$anyDirty)),T=computed(()=>Object.entries(i.value).some(([U,M])=>M?.$invalid)),A=computed(()=>{let U=Object.entries(i.value).filter(([M,H])=>Dt(H)?!H.$inactive:true);return U.length?U.every(([M,H])=>H?.$correct||H.$anyDirty&&!H.$invalid):false}),X=computed(()=>p.value&&!q.value&&T.value),y=computed(()=>unref(h.options.rewardEarly)!=null?unref(h.options.rewardEarly):false),j=computed(()=>unref(h.options.autoDirty)!=null?unref(h.options.autoDirty):!y.value),z=computed(()=>j.value?p.value&&!(T.value||q.value):!(T.value||q.value)),Z=ref(false),q=computed(()=>Z.value||Object.entries(i.value).some(([U,M])=>M?.$pending)),se=computed(()=>Object.fromEntries(Object.entries(i.value).map(([U,M])=>[U,M?.$errors]))),g=computed(()=>Object.fromEntries(Object.entries(i.value).map(([U,M])=>[U,M?.$silentErrors]))),G=computed(()=>!!Object.entries(i.value).length&&Object.entries(i.value).every(([U,M])=>M?.$edited)),L=computed(()=>Object.entries(i.value).some(([U,M])=>M?.$anyEdited)),x=computed(()=>m);function ue(){h.shortcuts?.nested&&Object.entries(h.shortcuts.nested).forEach(([U,M])=>{let H=effectScope();ye[U]=H.run(()=>{let ge=ref();return watchEffect(()=>{ge.value=M(reactive({$dirty:f,$value:t,$silentValue:d,$error:X,$pending:q,$invalid:T,$correct:A,$ready:z,$anyDirty:p,$name:x,$silentErrors:g,$errors:se,$fields:i,$edited:G,$anyEdited:L}));}),ge}),P.push(H);});}let le=computed({get:()=>c?Object.fromEntries(Object.entries(c?.(i.value)??{}).map(([U,M])=>M.length?[U,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$correct"].map(H=>[H,yt(M,H)])),...Object.fromEntries(["$errors","$silentErrors"].map(H=>[H,gt(M,H)]))}]:[])):{},set(){}}),ye={};return ue(),{$dirty:f,$anyDirty:p,$invalid:T,$correct:A,$error:X,$pending:q,$errors:se,$silentErrors:g,$ready:z,$name:x,$shortcuts:ye,$groups:le,$silentValue:d,$edited:G,$anyEdited:L,$localPending:Z}});}function s(){O?.(),w?.(),$?.(),a?.(),P=[],D={},i.value&&Object.entries(i.value).forEach(([d,f])=>{f.$unwatch();});}function C(){Object.entries(i.value).forEach(([d,f])=>{f.$clearExternalErrors();});}function _(){w?.(),Object.values(i.value).forEach(d=>{d.$reset();}),v.value={...Q(t.value)},S();}function k(d=true,f=false){Object.values(i.value).forEach(p=>{p.$touch(d,f);});}async function J(){s(),t.value=Q({...v.value??{}}),_(),E();}function I(d){return d.filter(([f,p])=>ae(p)?!(p&&typeof p=="object"&&"_null"in p)&&!ee(p):Array.isArray(p)?p.length:true)}function B(d=true){let f=Object.entries(i.value).map(([p,T])=>[p,T.$extractDirtyFields(d)]);return d&&(f=I(f)),Object.fromEntries(f)}async function ie(){try{if(h.schemaMode)return h.onValidate?(k(!1),D.$localPending.value=!0,h.onValidate()):{result:!1,data:t.value};{let d=t.value;return {result:(await Promise.allSettled(Object.values(i.value).map(T=>T.$validate()))).every(T=>T.status==="fulfilled"?T.value.result===!0:!1),data:d}}}catch{return {result:false,data:t.value}}finally{D.$localPending.value=false;}}let{$shortcuts:de,$localPending:pe,...me}=D;return reactive({...me,...de,$fields:i,$value:t,$resetAll:J,$reset:_,$touch:k,$validate:ie,$unwatch:s,$watch:o,$clearExternalErrors:C,$extractDirtyFields:B})}function Te({rulesDef:e,...t}){if(Et(e,t.state))return At({rulesDef:e,...t});if(bt(t.state,e)){if(Ve(t.state))return ke({rulesDef:e,...t});{let n=effectScope().run(()=>{let R=toRef(t.state.value?t.state:ref({}));return watch(()=>t.state.value,c=>{R.value=c;},{deep:true}),watch(R,c=>{t.state.value=c;},{deep:true}),{fakeState:R}}),{state:l,...u}=t;return ke({rulesDef:e,...u,state:n.fakeState})}}else if(Tt(e))return Ne({rulesDef:e,...t})}function Ie({initialState:e,options:t,scopeRules:r,state:n,customRules:l,shortcuts:u,schemaErrors:R,schemaMode:c=false,onValidate:v}){let m=qe(),h=ref();return h.value=ke({rootRules:r,rulesDef:r,state:n,customMessages:l?.(),storage:m,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:u,fieldName:"root",path:"",schemaErrors:R,rootSchemaErrors:R,schemaMode:c,onValidate:v}),getCurrentScope()&&onScopeDispose(()=>{h.value?.$unwatch();}),reactive({regle:h})}function tt(e,t,r){let n={autoDirty:t?.autoDirty,lazy:t?.lazy,rewardEarly:t?.rewardEarly,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange};function l(u,R,c){let v=isRef(R)?R:computed(typeof R=="function"?R:()=>R),m={...n,...c},h=isRef(u)?u:ref(u),F=ref({...Q(h.value)});return {r$:Ie({scopeRules:v,state:h,options:m,initialState:F,customRules:e,shortcuts:r}).regle}}return l}var Ue=tt();function rt(){function e(t,r){return r}return e}var nt=rt();function Vt({rules:e,modifiers:t,shortcuts:r}){let n=tt(e,t,r),l=rt();return {useRegle:n,inferRules:l}}function Me(e,t){let r=t??false,n=computed({get:()=>r?Object.values(e).map(o=>o.$value):Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$value])),set:o=>{r||typeof o=="object"&&Object.entries(o).forEach(([s,C])=>e[s].$value=C);}}),l=computed({get:()=>Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$silentValue])),set:o=>{typeof o=="object"&&Object.entries(o).forEach(([s,C])=>e[s].$silentValue=C);}}),u=computed(()=>{let o=Object.entries(e);return !!o.length&&o.every(([s,C])=>C?.$dirty)}),R=computed(()=>Object.entries(e).some(([o,s])=>s?.$anyDirty)),c=computed(()=>Object.entries(e).some(([o,s])=>s?.$invalid)),v=computed(()=>{let o=Object.entries(e);return !!o.length&&o.every(([s,C])=>C?.$correct||C.$anyDirty&&!C.$invalid)}),m=computed(()=>Object.entries(e).some(([o,s])=>s?.$error)),h=computed(()=>{let o=Object.entries(e);return !!o.length&&o.every(([s,C])=>C?.$ready)}),F=computed(()=>Object.entries(e).some(([o,s])=>s?.$pending)),D=computed(()=>r?Object.entries(e).map(([o,s])=>s.$errors):Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$errors]))),P=computed(()=>r?Object.entries(e).map(([o,s])=>s.$silentErrors):Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$silentErrors]))),O=computed(()=>{let o=Object.entries(e);return !!o.length&&o.every(([s,C])=>C?.$edited)}),a=computed(()=>Object.entries(e).some(([o,s])=>s?.$anyEdited)),w=computed(()=>r?Object.values(e):e);function $(){Object.values(e).forEach(o=>{o.$reset();});}function b(){Object.values(e).forEach(o=>{o.$touch();});}function E(){Object.values(e).forEach(o=>{o.$resetAll();});}function i(o=true){return Object.values(e).map(s=>s.$extractDirtyFields(o))}function S(){Object.values(e).forEach(o=>{o.$clearExternalErrors();});}async function V(){try{let o=n.value;return {result:(await Promise.allSettled(Object.values(e).map(_=>_.$validate()))).every(_=>_.status==="fulfilled"?_.value.result===!0:!1),data:o}}catch{return {result:false,data:n.value}}}return reactive({...!r&&{$silentValue:l},$errors:D,$silentErrors:P,$instances:w,$value:n,$dirty:u,$anyDirty:R,$invalid:c,$correct:v,$error:m,$pending:F,$ready:h,$edited:O,$anyEdited:a,$resetAll:E,$reset:$,$touch:b,$validate:V,$extractDirtyFields:i,$clearExternalErrors:S})}function Nt(e){function t(r){let n=computed(()=>toValue(r));R();let l=ref(c(e.value)),u=reactive({r$:l});function R(){n.value&&!e.value[n.value]&&(e.value[n.value]={});}watch(n,R),watch(e,v=>{l.value=c(v);},{deep:true});function c(v){if(n.value){let m=v[n.value]??{};return Me(m,true)}else return Me(v["~~global"]??{},true)}return {r$:u.r$}}return {useCollectScope:t}}function Ut(e,t){let r=t??Ue;return {useScopedRegle:(l,u,R)=>{let{namespace:c,...v}=R??{},m=computed(()=>toValue(c)),h=ref(`${Object.keys(e.value).length+1}-${he()}`),F=computed(()=>`instance-${h.value}`),{r$:D}=r(l,u,v);O(),St(P),watch(m,(a,w)=>{P(w),O();}),getCurrentInstance()&&onMounted(()=>{let a=getCurrentInstance();typeof window<"u"&&a?.proxy?.$el?.parentElement&&document.documentElement&&!document.documentElement.contains(a?.proxy?.$el?.parentElement)&&P();});function P(a){let w=a??m.value;w?e.value[w]&&delete e.value[w][F.value]:e.value["~~global"][F.value]&&delete e.value["~~global"][F.value];}function O(){m.value?(e.value[m.value]||(e.value[m.value]={}),e.value[m.value][F.value]=D):(e.value["~~global"]||(e.value["~~global"]={}),e.value["~~global"][F.value]=D);}return {r$:D,dispose:P,register:O}}}}function at(e){let r=(e?.customStore?()=>(e.customStore&&(e.customStore?.value["~~global"]?e.customStore?.value&&(e.customStore.value={"~~global":{}}):e.customStore.value["~~global"]={}),e.customStore):ht(()=>ref({"~~global":{}})))(),{useScopedRegle:n}=Ut(r,e?.customUseRegle),{useCollectScope:l}=Nt(r);return {useScopedRegle:n,useCollectScope:l}}
2
+ export{Be as InternalRuleType,ze as createRule,at as createScopedUseRegle,Vt as defineRegleConfig,nt as inferRules,Me as mergeRegles,te as unwrapRuleParameters,Ue as useRegle,Ie as useRootStorage};
@@ -7,14 +7,14 @@ function isEmpty(value, considerEmptyArrayInvalid = true) {
7
7
  }
8
8
  if (value instanceof Date) {
9
9
  return isNaN(value.getTime());
10
- }
11
- if (Array.isArray(value)) {
10
+ } else if (value instanceof File) {
11
+ return value.size > 0;
12
+ } else if (Array.isArray(value)) {
12
13
  if (considerEmptyArrayInvalid) {
13
14
  return value.length === 0;
14
15
  }
15
16
  return false;
16
- }
17
- if (typeof value === "object" && value != null) {
17
+ } else if (typeof value === "object" && value != null) {
18
18
  return Object.keys(value).length === 0;
19
19
  }
20
20
  return !String(value).length;
@@ -516,13 +516,13 @@ function createReactiveRuleStatus({
516
516
  const $fieldError = ref(false);
517
517
  const $fieldInvalid = ref(true);
518
518
  const $fieldPending = ref(false);
519
- const $fieldValid = ref(false);
519
+ const $fieldCorrect = ref(false);
520
520
  const $defaultMetadata = computed(() => ({
521
521
  $value: state.value,
522
522
  $error: $fieldError.value,
523
523
  $dirty: $fieldDirty.value,
524
524
  $pending: $fieldPending.value,
525
- $valid: $fieldValid.value,
525
+ $correct: $fieldCorrect.value,
526
526
  $invalid: $fieldInvalid.value,
527
527
  $rule: {
528
528
  $valid: $valid.value,
@@ -604,7 +604,7 @@ function createReactiveRuleStatus({
604
604
  $params,
605
605
  $path,
606
606
  $tooltip,
607
- $fieldValid,
607
+ $fieldCorrect,
608
608
  $fieldError,
609
609
  $fieldDirty,
610
610
  $fieldPending,
@@ -949,7 +949,7 @@ function createReactiveFieldStatus({
949
949
  }
950
950
  return false;
951
951
  });
952
- const $valid = computed(() => {
952
+ const $correct = computed(() => {
953
953
  if (externalErrors?.value?.length) {
954
954
  return false;
955
955
  } else if ($inactive.value) {
@@ -958,9 +958,12 @@ function createReactiveFieldStatus({
958
958
  if (schemaMode) {
959
959
  return !schemaErrors?.value?.length;
960
960
  } else {
961
- return Object.values($rules.value).every((ruleResult) => {
962
- return ruleResult.$valid && ruleResult.$active;
963
- });
961
+ const atLeastOneActiveRule = Object.values($rules.value).some((ruleResult) => ruleResult.$active);
962
+ if (atLeastOneActiveRule) {
963
+ return Object.values($rules.value).filter((ruleResult) => ruleResult.$active).every((ruleResult) => ruleResult.$valid);
964
+ } else {
965
+ return false;
966
+ }
964
967
  }
965
968
  }
966
969
  return false;
@@ -987,7 +990,7 @@ function createReactiveFieldStatus({
987
990
  $error,
988
991
  $pending,
989
992
  $invalid,
990
- $valid,
993
+ $correct,
991
994
  $errors,
992
995
  $ready,
993
996
  $silentErrors,
@@ -1016,7 +1019,7 @@ function createReactiveFieldStatus({
1016
1019
  $error,
1017
1020
  $pending,
1018
1021
  $invalid,
1019
- $valid,
1022
+ $correct,
1020
1023
  $debounce: $debounce2,
1021
1024
  $lazy: $lazy2,
1022
1025
  $errors,
@@ -1048,18 +1051,18 @@ function createReactiveFieldStatus({
1048
1051
  });
1049
1052
  });
1050
1053
  $unwatchRuleFieldValues = watch(
1051
- [scopeState.$error, scopeState.$valid, scopeState.$invalid, scopeState.$pending],
1054
+ [scopeState.$error, scopeState.$correct, scopeState.$invalid, scopeState.$pending],
1052
1055
  () => {
1053
1056
  Object.values($rules.value).forEach((rule) => {
1054
1057
  rule.$fieldError = scopeState.$error.value;
1055
1058
  rule.$fieldInvalid = scopeState.$invalid.value;
1056
1059
  rule.$fieldPending = scopeState.$pending.value;
1057
- rule.$fieldValid = scopeState.$valid.value;
1060
+ rule.$fieldCorrect = scopeState.$correct.value;
1058
1061
  });
1059
1062
  }
1060
1063
  );
1061
- $unwatchValid = watch(scopeState.$valid, (valid) => {
1062
- if (scopeState.$rewardEarly.value && valid) {
1064
+ $unwatchValid = watch(scopeState.$invalid, (invalid) => {
1065
+ if (scopeState.$rewardEarly.value && !invalid) {
1063
1066
  scopeState.triggerPunishment.value = false;
1064
1067
  }
1065
1068
  });
@@ -1460,9 +1463,9 @@ function createReactiveCollectionStatus({
1460
1463
  return statusOrField.$invalid;
1461
1464
  });
1462
1465
  });
1463
- const $valid = computed(() => {
1464
- return (isEmpty($selfStatus.value.$rules) ? true : $selfStatus.value.$valid) && (!$eachStatus.value.length || $eachStatus.value.every((statusOrField) => {
1465
- return statusOrField.$valid;
1466
+ const $correct = computed(() => {
1467
+ return (isEmpty($selfStatus.value.$rules) ? true : $selfStatus.value.$correct) && (!$eachStatus.value.length || $eachStatus.value.every((statusOrField) => {
1468
+ return statusOrField.$correct || statusOrField.$anyDirty && !statusOrField.$invalid;
1466
1469
  }));
1467
1470
  });
1468
1471
  const $error = computed(() => {
@@ -1515,7 +1518,7 @@ function createReactiveCollectionStatus({
1515
1518
  $silentValue,
1516
1519
  $pending,
1517
1520
  $invalid,
1518
- $valid,
1521
+ $correct,
1519
1522
  $errors,
1520
1523
  $ready,
1521
1524
  $silentErrors,
@@ -1541,7 +1544,7 @@ function createReactiveCollectionStatus({
1541
1544
  $dirty,
1542
1545
  $anyDirty,
1543
1546
  $invalid,
1544
- $valid,
1547
+ $correct,
1545
1548
  $error,
1546
1549
  $pending,
1547
1550
  $errors,
@@ -1855,7 +1858,7 @@ function createReactiveNestedStatus({
1855
1858
  return statusOrField?.$invalid;
1856
1859
  });
1857
1860
  });
1858
- const $valid = computed(() => {
1861
+ const $correct = computed(() => {
1859
1862
  const fields = Object.entries($fields.value).filter(([_, statusOrField]) => {
1860
1863
  if (isFieldStatus(statusOrField)) {
1861
1864
  return !statusOrField.$inactive;
@@ -1864,7 +1867,7 @@ function createReactiveNestedStatus({
1864
1867
  });
1865
1868
  if (fields.length) {
1866
1869
  return fields.every(([_, statusOrField]) => {
1867
- return statusOrField?.$valid;
1870
+ return statusOrField?.$correct || statusOrField.$anyDirty && !statusOrField.$invalid;
1868
1871
  });
1869
1872
  }
1870
1873
  return false;
@@ -1936,7 +1939,7 @@ function createReactiveNestedStatus({
1936
1939
  $error,
1937
1940
  $pending,
1938
1941
  $invalid,
1939
- $valid,
1942
+ $correct,
1940
1943
  $ready,
1941
1944
  $anyDirty,
1942
1945
  $name,
@@ -1964,7 +1967,7 @@ function createReactiveNestedStatus({
1964
1967
  key,
1965
1968
  {
1966
1969
  ...Object.fromEntries(
1967
- ["$invalid", "$error", "$pending", "$dirty", "$valid"].map((property) => [
1970
+ ["$invalid", "$error", "$pending", "$dirty", "$correct"].map((property) => [
1968
1971
  property,
1969
1972
  mergeBooleanGroupProperties(entries, property)
1970
1973
  ])
@@ -1993,7 +1996,7 @@ function createReactiveNestedStatus({
1993
1996
  $dirty,
1994
1997
  $anyDirty,
1995
1998
  $invalid,
1996
- $valid,
1999
+ $correct,
1997
2000
  $error,
1998
2001
  $pending,
1999
2002
  $errors,
@@ -2296,10 +2299,10 @@ function mergeRegles(regles, _scoped) {
2296
2299
  return regle?.$invalid;
2297
2300
  });
2298
2301
  });
2299
- const $valid = computed(() => {
2302
+ const $correct = computed(() => {
2300
2303
  const entries = Object.entries(regles);
2301
2304
  return !!entries.length && entries.every(([_, regle]) => {
2302
- return regle?.$valid;
2305
+ return regle?.$correct || regle.$anyDirty && !regle.$invalid;
2303
2306
  });
2304
2307
  });
2305
2308
  const $error = computed(() => {
@@ -2416,7 +2419,7 @@ function mergeRegles(regles, _scoped) {
2416
2419
  $dirty,
2417
2420
  $anyDirty,
2418
2421
  $invalid,
2419
- $valid,
2422
+ $correct,
2420
2423
  $error,
2421
2424
  $pending,
2422
2425
  $ready,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@regle/core",
3
- "version": "0.8.0",
3
+ "version": "0.8.1",
4
4
  "description": "Type safe form validation library for Vue 3",
5
5
  "peerDependencies": {
6
6
  "pinia": ">=2.2.5",