@regle/core 0.7.6 → 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;
@@ -87,6 +87,25 @@ function toDate(argument) {
87
87
  }
88
88
  }
89
89
 
90
+ // ../shared/utils/debounce.ts
91
+ function debounce(func, wait, immediate) {
92
+ let timeout;
93
+ const debouncedFn = (...args) => new Promise((resolve) => {
94
+ clearTimeout(timeout);
95
+ timeout = setTimeout(() => {
96
+ timeout = undefined;
97
+ {
98
+ Promise.resolve(func.apply(this, [...args])).then(resolve);
99
+ }
100
+ }, wait);
101
+ });
102
+ debouncedFn.cancel = () => {
103
+ clearTimeout(timeout);
104
+ timeout = undefined;
105
+ };
106
+ return debouncedFn;
107
+ }
108
+
90
109
  // src/types/rules/rule.internal.types.ts
91
110
  var InternalRuleType = /* @__PURE__ */ ((InternalRuleType2) => {
92
111
  InternalRuleType2["Inline"] = "__inline";
@@ -376,25 +395,6 @@ function unwrapGetter(getter, value, index) {
376
395
  }
377
396
  return { scope, unwrapped };
378
397
  }
379
-
380
- // src/utils/debounce.ts
381
- function debounce(func, wait, immediate) {
382
- let timeout;
383
- const debouncedFn = (...args) => new Promise((resolve) => {
384
- clearTimeout(timeout);
385
- timeout = setTimeout(() => {
386
- timeout = undefined;
387
- {
388
- Promise.resolve(func.apply(this, [...args])).then(resolve);
389
- }
390
- }, wait);
391
- });
392
- debouncedFn.cancel = () => {
393
- clearTimeout(timeout);
394
- timeout = undefined;
395
- };
396
- return debouncedFn;
397
- }
398
398
  function versionCompare(current, other) {
399
399
  const cp = String(current).split(".");
400
400
  const op = String(other).split(".");
@@ -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,
@@ -630,6 +630,10 @@ function createReactiveRuleStatus({
630
630
  let ruleResult = false;
631
631
  try {
632
632
  const validator = scopeState.$validator.value;
633
+ if (typeof validator !== "function") {
634
+ console.error(`${path}: Incorrect rule format, it needs to be either a function or created with "createRule".`);
635
+ return false;
636
+ }
633
637
  const resultOrPromise = validator(state.value, ...scopeState.$params.value);
634
638
  let cachedValue = state.value;
635
639
  updatePendingState();
@@ -947,7 +951,7 @@ function createReactiveFieldStatus({
947
951
  }
948
952
  return false;
949
953
  });
950
- const $valid = vue.computed(() => {
954
+ const $correct = vue.computed(() => {
951
955
  if (externalErrors?.value?.length) {
952
956
  return false;
953
957
  } else if ($inactive.value) {
@@ -956,9 +960,12 @@ function createReactiveFieldStatus({
956
960
  if (schemaMode) {
957
961
  return !schemaErrors?.value?.length;
958
962
  } else {
959
- return Object.values($rules.value).every((ruleResult) => {
960
- return ruleResult.$valid && ruleResult.$active;
961
- });
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
+ }
962
969
  }
963
970
  }
964
971
  return false;
@@ -985,7 +992,7 @@ function createReactiveFieldStatus({
985
992
  $error,
986
993
  $pending,
987
994
  $invalid,
988
- $valid,
995
+ $correct,
989
996
  $errors,
990
997
  $ready,
991
998
  $silentErrors,
@@ -1014,7 +1021,7 @@ function createReactiveFieldStatus({
1014
1021
  $error,
1015
1022
  $pending,
1016
1023
  $invalid,
1017
- $valid,
1024
+ $correct,
1018
1025
  $debounce: $debounce2,
1019
1026
  $lazy: $lazy2,
1020
1027
  $errors,
@@ -1046,18 +1053,18 @@ function createReactiveFieldStatus({
1046
1053
  });
1047
1054
  });
1048
1055
  $unwatchRuleFieldValues = vue.watch(
1049
- [scopeState.$error, scopeState.$valid, scopeState.$invalid, scopeState.$pending],
1056
+ [scopeState.$error, scopeState.$correct, scopeState.$invalid, scopeState.$pending],
1050
1057
  () => {
1051
1058
  Object.values($rules.value).forEach((rule) => {
1052
1059
  rule.$fieldError = scopeState.$error.value;
1053
1060
  rule.$fieldInvalid = scopeState.$invalid.value;
1054
1061
  rule.$fieldPending = scopeState.$pending.value;
1055
- rule.$fieldValid = scopeState.$valid.value;
1062
+ rule.$fieldCorrect = scopeState.$correct.value;
1056
1063
  });
1057
1064
  }
1058
1065
  );
1059
- $unwatchValid = vue.watch(scopeState.$valid, (valid) => {
1060
- if (scopeState.$rewardEarly.value && valid) {
1066
+ $unwatchValid = vue.watch(scopeState.$invalid, (invalid) => {
1067
+ if (scopeState.$rewardEarly.value && !invalid) {
1061
1068
  scopeState.triggerPunishment.value = false;
1062
1069
  }
1063
1070
  });
@@ -1458,9 +1465,9 @@ function createReactiveCollectionStatus({
1458
1465
  return statusOrField.$invalid;
1459
1466
  });
1460
1467
  });
1461
- const $valid = vue.computed(() => {
1462
- return (isEmpty($selfStatus.value.$rules) ? true : $selfStatus.value.$valid) && (!$eachStatus.value.length || $eachStatus.value.every((statusOrField) => {
1463
- 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;
1464
1471
  }));
1465
1472
  });
1466
1473
  const $error = vue.computed(() => {
@@ -1513,7 +1520,7 @@ function createReactiveCollectionStatus({
1513
1520
  $silentValue,
1514
1521
  $pending,
1515
1522
  $invalid,
1516
- $valid,
1523
+ $correct,
1517
1524
  $errors,
1518
1525
  $ready,
1519
1526
  $silentErrors,
@@ -1539,7 +1546,7 @@ function createReactiveCollectionStatus({
1539
1546
  $dirty,
1540
1547
  $anyDirty,
1541
1548
  $invalid,
1542
- $valid,
1549
+ $correct,
1543
1550
  $error,
1544
1551
  $pending,
1545
1552
  $errors,
@@ -1853,7 +1860,7 @@ function createReactiveNestedStatus({
1853
1860
  return statusOrField?.$invalid;
1854
1861
  });
1855
1862
  });
1856
- const $valid = vue.computed(() => {
1863
+ const $correct = vue.computed(() => {
1857
1864
  const fields = Object.entries($fields.value).filter(([_, statusOrField]) => {
1858
1865
  if (isFieldStatus(statusOrField)) {
1859
1866
  return !statusOrField.$inactive;
@@ -1862,7 +1869,7 @@ function createReactiveNestedStatus({
1862
1869
  });
1863
1870
  if (fields.length) {
1864
1871
  return fields.every(([_, statusOrField]) => {
1865
- return statusOrField?.$valid;
1872
+ return statusOrField?.$correct || statusOrField.$anyDirty && !statusOrField.$invalid;
1866
1873
  });
1867
1874
  }
1868
1875
  return false;
@@ -1934,7 +1941,7 @@ function createReactiveNestedStatus({
1934
1941
  $error,
1935
1942
  $pending,
1936
1943
  $invalid,
1937
- $valid,
1944
+ $correct,
1938
1945
  $ready,
1939
1946
  $anyDirty,
1940
1947
  $name,
@@ -1962,7 +1969,7 @@ function createReactiveNestedStatus({
1962
1969
  key,
1963
1970
  {
1964
1971
  ...Object.fromEntries(
1965
- ["$invalid", "$error", "$pending", "$dirty", "$valid"].map((property) => [
1972
+ ["$invalid", "$error", "$pending", "$dirty", "$correct"].map((property) => [
1966
1973
  property,
1967
1974
  mergeBooleanGroupProperties(entries, property)
1968
1975
  ])
@@ -1991,7 +1998,7 @@ function createReactiveNestedStatus({
1991
1998
  $dirty,
1992
1999
  $anyDirty,
1993
2000
  $invalid,
1994
- $valid,
2001
+ $correct,
1995
2002
  $error,
1996
2003
  $pending,
1997
2004
  $errors,
@@ -2294,10 +2301,10 @@ function mergeRegles(regles, _scoped) {
2294
2301
  return regle?.$invalid;
2295
2302
  });
2296
2303
  });
2297
- const $valid = vue.computed(() => {
2304
+ const $correct = vue.computed(() => {
2298
2305
  const entries = Object.entries(regles);
2299
2306
  return !!entries.length && entries.every(([_, regle]) => {
2300
- return regle?.$valid;
2307
+ return regle?.$correct || regle.$anyDirty && !regle.$invalid;
2301
2308
  });
2302
2309
  });
2303
2310
  const $error = vue.computed(() => {
@@ -2414,7 +2421,7 @@ function mergeRegles(regles, _scoped) {
2414
2421
  $dirty,
2415
2422
  $anyDirty,
2416
2423
  $invalid,
2417
- $valid,
2424
+ $correct,
2418
2425
  $error,
2419
2426
  $pending,
2420
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)}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 o=n[t]||[];return r.concat(o)},[])}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,o=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:o,_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 o=function(...s){return He(e,...s)};return o.validator=r.validator,o.message=r.message,o.active=r.active,o.tooltip=r.tooltip,o.type=r.type,o.exec=r.exec,o._validator=r.validator,o._message=r.message,o._active=r.active,o._tooltip=r.tooltip,o._type=e.type,o._message_pacthed=false,o._tooltip_pacthed=false,o._async=n,o}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),o=vue.shallowRef(new Map),s=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){s.value.set(`${v}-${b}`,E);}function m(v,b){return s.value.get(`${v}-${b}`)}function h(v,b){v&&b!=null&&s.value.delete(`${v}-${b}`);}function M(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 l=v[V],u=b[V];return !u||!l||typeof l=="function"||typeof u=="function"||typeof l=="number"||typeof l=="boolean"?false:l._params?l._params?.every((C,_)=>{if(typeof u=="number"||typeof u=="boolean")return true;{let k=ee(u._params),J=ee(l._params);return k?.[_]===J?.[_]}}):true})}function w(v){let b=o.value.get(v);if(b)return b;{let E=vue.ref(false),i=vue.ref(true),S=vue.ref({}),V=vue.ref(false);return o.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(),o.value.clear(),s.value.clear();}),{addRuleDeclEntry:P,setDirtyEntry:M,checkRuleDeclEntry:O,getDirtyState:x,trySetRuleStatusRef:w,getFieldsEntry:R,getCollectionsEntry:c,getArrayStatus:m,addArrayStatus:$,deleteArrayStatus:h,arrayStatusStorage:s}}function Fe(e){return ne(e.value)}function Ke(e,t,r){let n=vue.effectScope(),o;return e instanceof Function?o=n.run(()=>e(t,r??0)):o=e,{scope:n,unwrapped:o}}function Ve(e,t,r){let n,o=(...s)=>new Promise(R=>{clearTimeout(n),n=setTimeout(()=>{n=undefined,Promise.resolve(e.apply(this,[...s])).then(R);},t);});return o.cancel=()=>{clearTimeout(n),n=undefined;},o}function Zt(e,t){let r=String(e).split("."),n=String(t).split(".");for(let o=0;o<Math.min(r.length,n.length);o++){let s=Number(r[o]),R=Number(n[o]);if(s>R)return 1;if(R>s)return -1;if(!isNaN(s)&&isNaN(R))return 1;if(isNaN(s)&&!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 (...o)=>(t||(r=n.run(()=>e(...o)),t=true),r)}function bt(e,t){return Fe(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:o,storage:s,$debounce:R,modifiers:c}){let $=vue.effectScope(),m={},h,M=vue.ref(false),{$pending:x,$valid:P,$metadata:O,$validating:a}=s.trySetRuleStatusRef(`${o}.${r}`);function w(){$=vue.effectScope(),m=$.run(()=>{let l=vue.ref(false),u=vue.ref(false),C=vue.ref(true),_=vue.ref(false),k=vue.ref(false),J=vue.computed(()=>({$value:n.value,$error:u.value,$dirty:l.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(()=>`${o}.${pe.value}`);return {$active:I,$message:ie,$type:pe,$validator:me,$params:d,$path:f,$tooltip:de,$fieldValid:k,$fieldError:u,$fieldDirty:l,$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 l=false;try{let u=m.$validator.value,C=u(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")l=k;else {let{$valid:J,...I}=k;l=J,O.value=I;}}catch{l=false;}finally{x.value=false;}return l}let E=Ve(b,R??200);async function i(){try{a.value=!0;let l=!1;if(we(t.value)&&t.value._async)l=await E();else {let u=m.$validator.value,C=u(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")l=C;else {let{$valid:_,...k}=C;l=_,O.value=k;}}return P.value=l,l}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:M,$validating:a,$validate:i,$unwatch:V,$watch:w,$reset:S})}function Ne({state:e,rulesDef:t,customMessages:r,path:n,fieldName:o,storage:s,options:R,externalErrors:c,schemaErrors:$,schemaMode:m,onUnwatch:h,$isArray:M,initialState:x,shortcuts:P}){let O=vue.effectScope(),a,w=[],v,b,E,i,S,V=()=>{};function l(){let y=t.value,G=s.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:s,$debounce:L.value.$debounce})]}return []}).filter(B=>!!B.length)),a.processShortcuts(),u(),G?.valid!=null&&(a.$dirty.value=s.getDirtyState(n),(a.$dirty.value&&a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&V()),s.addRuleDeclEntry(n,y);}function u(){V=a.$debounce.value?Ve(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&&s.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),j=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:Me.value?false:!le.value||le.value&&G.value?Object.entries(I.value).some(([ae,ue])=>!ue.$valid):false),ct=vue.computed(()=>o),Me=vue.computed(()=>!!(Z(I.value)&&!m)),ft=vue.computed(()=>c?.value?.length||Me.value?false:y.value&&!Z(e.value)&&!j.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:Me,$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:j,$tooltips:ut,$dirty:y,triggerPunishment:G,processShortcuts:Bt,$silentValue:K,$inactive:Me}}),k(),E=vue.watch(a.$dirty,y=>{s.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,u);}function k(){v=vue.watch(e,()=>{a.$autoDirty.value&&(a.$dirty.value||(a.$dirty.value=true)),t.value instanceof Function&&l(),(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&V(),a.$rewardEarly.value!==true&&a.$clearExternalErrorsOnChange.value&&f();},{deep:M?true:_e?1:true,flush:"post"});}function J(){Object.values(I.value).forEach(y=>{y.$validate();});}let I=vue.ref({}),L=vue.ref({});l();function ie(){f(),a.$dirty.value=false,a.triggerPunishment.value=false,s.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:F,$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:o,stateValue:s,customMessages:R,rules:c,externalErrors:$,schemaErrors:m,initialState:h,shortcuts:M,fieldName:x,schemaMode:P}){let O=c.$key?c.$key:he(),a=`${t}.${String(O)}`;typeof s.value=="object"&&s.value!=null&&(s.value.$id?a=`${t}.${s.value.$id}`:Object.defineProperties(s.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:s,rulesDef:vue.toRef(()=>c),customMessages:R,path:a,storage:o,options:n,externalErrors:w,schemaErrors:v,initialState:h,shortcuts:M,fieldName:x,schemaMode:P});if(b){let E=s.value?.$id;b.$id=E??String(O),o.addArrayStatus(e,b.$id,b);}return b}function At({state:e,rulesDef:t,customMessages:r,path:n,storage:o,options:s,externalErrors:R,schemaErrors:c,schemaMode:$,initialState:m,shortcuts:h,fieldName:M}){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=o.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),F=Xe({$id:v.value,path:n,customMessages:r,rules:T??{},stateValue:vue.toRef(()=>d),index:f,options:s,storage:o,externalErrors:Q,schemaErrors:g,initialState:A,shortcuts:h,fieldName:M,schemaMode:$});return F||null}).filter(d=>!!d):S.value=[],i.value=Ne({state:e,rulesDef:t,customMessages:r,path:n,storage:o,options:s,externalErrors:vue.toRef(R?.value??{},"$self"),schemaErrors:vue.computed(()=>c?.value?.$self),$isArray:true,initialState:m,shortcuts:h,fieldName:M,schemaMode:$});}function l(){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=o.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"),F=vue.computed(()=>c?.value?.$each??[]),H=Xe({$id:v.value,path:n,customMessages:r,rules:Q??{},stateValue:T,index:p,options:s,storage:o,externalErrors:g,schemaErrors:F,initialState:vue.toRef(m.value??[],p),shortcuts:h,fieldName:M,schemaMode:$});return H||null}}).filter(f=>!!f),d.filter(f=>!e.value?.find(p=>f.$id===p.$id)).forEach((f,p)=>{o.deleteArrayStatus(v.value,p.toString());});}else S.value=[];}function u(){E=vue.watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?V():l();},{deep:_e?1:true,flush:"pre"});}function C(){u(),x=vue.effectScope(),P=x.run(()=>{let d=vue.computed({get:()=>e.value,set(D){E(),e.value=D,u();}}),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||F.value)),F=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(()=>M);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:F,$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:F,$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:o,schemaErrors:s,rootSchemaErrors:R,validationGroups:c,initialState:$,fieldName:m,...h}){let M=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,F])=>!!F).map(([g,F])=>{if(F){let H=vue.toRef(t.value??{},g),X=vue.toRef(()=>F),z=vue.toRef(o?.value??{},g),oe=vue.computed(()=>s?.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(o)??{}).filter(([g,F])=>!(g in e.value)&&!!F).map(([g])=>{let F=vue.toRef(t.value??{},g),H=vue.toRef(o?.value??{},g),X=vue.computed(()=>s?.value?.[g]),z=vue.toRef($?.value??{},g);return [g,Te({state:F,rulesDef:vue.computed(()=>({})),path:r?`${r}.${g}`:g,externalErrors:H,schemaErrors:X,initialState:z,fieldName:g,...h})]})),A=Object.fromEntries(Object.entries(vue.unref(s)??{}).map(([g])=>{let F=vue.toRef(t.value??{},g),H=vue.toRef(o?.value??{},g),X=vue.computed(()=>s?.value?.[g]),z=vue.toRef($?.value??{},g);return [g,Te({state:F,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 F=vue.toRef(t.value??{},g),H=vue.toRef(o?.value??{},g),X=vue.computed(()=>s?.value?.[g]),z=vue.toRef($?.value??{},g);return [g,Te({state:F,rulesDef:vue.computed(()=>({})),path:r?`${r}.${g}`:g,externalErrors:H,schemaErrors:X,initialState:z,fieldName:g,...h})]}));i.value={...p,...T,...A,...Q},d&&l();}let i=h.storage.getFieldsEntry(r);E();function S(){o&&(w=vue.watch(o,()=>{u(),E();},{deep:true}));}function V(){v=vue.watch(t,()=>{u(),E(),k(true,true);},{flush:"sync"});}function l(){n&&(O?.(),O=vue.watch(n,()=>{u(),E();},{deep:true,flush:"post"}),S()),R&&(a?.(),a=vue.watch(R,()=>{u(),E();},{deep:true,flush:"post"})),V(),x=M.run(()=>{let d=vue.computed({get:()=>t.value,set(U){u(),t.value=U,E();}}),f=vue.computed(()=>!!Object.entries(i.value).length&&Object.entries(i.value).every(([U,j])=>j?.$dirty)),p=vue.computed(()=>Object.entries(i.value).some(([U,j])=>j?.$anyDirty)),T=vue.computed(()=>Object.entries(i.value).some(([U,j])=>j?.$invalid)),A=vue.computed(()=>{let U=Object.entries(i.value).filter(([j,K])=>Dt(K)?!K.$inactive:true);return U.length?U.every(([j,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),F=vue.computed(()=>vue.unref(h.options.autoDirty)!=null?vue.unref(h.options.autoDirty):!g.value),H=vue.computed(()=>F.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,j])=>j?.$pending)),oe=vue.computed(()=>Object.fromEntries(Object.entries(i.value).map(([U,j])=>[U,j?.$errors]))),y=vue.computed(()=>Object.fromEntries(Object.entries(i.value).map(([U,j])=>[U,j?.$silentErrors]))),G=vue.computed(()=>!!Object.entries(i.value).length&&Object.entries(i.value).every(([U,j])=>j?.$edited)),B=vue.computed(()=>Object.entries(i.value).some(([U,j])=>j?.$anyEdited)),D=vue.computed(()=>m);function se(){h.shortcuts?.nested&&Object.entries(h.shortcuts.nested).forEach(([U,j])=>{let K=vue.effectScope();ge[U]=K.run(()=>{let ye=vue.ref();return vue.watchEffect(()=>{ye.value=j(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,j])=>j.length?[U,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$valid"].map(K=>[K,gt(j,K)])),...Object.fromEntries(["$errors","$silentErrors"].map(K=>[K,yt(j,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 u(){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(){u(),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:u,$watch:l,$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(Fe(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:o,...s}=t;return ke({rulesDef:e,...s,state:n.fakeState})}}else if(Tt(e))return Ne({rulesDef:e,...t})}function Ie({initialState:e,options:t,scopeRules:r,state:n,customRules:o,shortcuts:s,schemaErrors:R,schemaMode:c=false,onValidate:$}){let m=qe(),h=vue.ref();return h.value=ke({rootRules:r,rulesDef:r,state:n,customMessages:o?.(),storage:m,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:s,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 o(s,R,c){let $=vue.isRef(R)?R:vue.computed(typeof R=="function"?R:()=>R),m={...n,...c},h=vue.isRef(s)?s:vue.ref(s),M=vue.ref({...Y(h.value)});return {r$:Ie({scopeRules:$,state:h,options:m,initialState:M,customRules:e,shortcuts:r}).regle}}return o}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),o=rt();return {useRegle:n,inferRules:o}}function je(e,t){let r=t??false,n=vue.computed({get:()=>r?Object.values(e).map(l=>l.$value):Object.fromEntries(Object.entries(e).map(([l,u])=>[l,u.$value])),set:l=>{r||typeof l=="object"&&Object.entries(l).forEach(([u,C])=>e[u].$value=C);}}),o=vue.computed({get:()=>Object.fromEntries(Object.entries(e).map(([l,u])=>[l,u.$silentValue])),set:l=>{typeof l=="object"&&Object.entries(l).forEach(([u,C])=>e[u].$silentValue=C);}}),s=vue.computed(()=>{let l=Object.entries(e);return !!l.length&&l.every(([u,C])=>C?.$dirty)}),R=vue.computed(()=>Object.entries(e).some(([l,u])=>u?.$anyDirty)),c=vue.computed(()=>Object.entries(e).some(([l,u])=>u?.$invalid)),$=vue.computed(()=>{let l=Object.entries(e);return !!l.length&&l.every(([u,C])=>C?.$valid)}),m=vue.computed(()=>Object.entries(e).some(([l,u])=>u?.$error)),h=vue.computed(()=>{let l=Object.entries(e);return !!l.length&&l.every(([u,C])=>C?.$ready)}),M=vue.computed(()=>Object.entries(e).some(([l,u])=>u?.$pending)),x=vue.computed(()=>r?Object.entries(e).map(([l,u])=>u.$errors):Object.fromEntries(Object.entries(e).map(([l,u])=>[l,u.$errors]))),P=vue.computed(()=>r?Object.entries(e).map(([l,u])=>u.$silentErrors):Object.fromEntries(Object.entries(e).map(([l,u])=>[l,u.$silentErrors]))),O=vue.computed(()=>{let l=Object.entries(e);return !!l.length&&l.every(([u,C])=>C?.$edited)}),a=vue.computed(()=>Object.entries(e).some(([l,u])=>u?.$anyEdited)),w=vue.computed(()=>r?Object.values(e):e);function v(){Object.values(e).forEach(l=>{l.$reset();});}function b(){Object.values(e).forEach(l=>{l.$touch();});}function E(){Object.values(e).forEach(l=>{l.$resetAll();});}function i(l=true){return Object.values(e).map(u=>u.$extractDirtyFields(l))}function S(){Object.values(e).forEach(l=>{l.$clearExternalErrors();});}async function V(){try{let l=n.value;return {result:(await Promise.allSettled(Object.values(e).map(_=>_.$validate()))).every(_=>_.status==="fulfilled"?_.value.result===!0:!1),data:l}}catch{return {result:false,data:n.value}}}return vue.reactive({...!r&&{$silentValue:o},$errors:x,$silentErrors:P,$instances:w,$value:n,$dirty:s,$anyDirty:R,$invalid:c,$valid:$,$error:m,$pending:M,$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 o=vue.ref(c(e.value)),s=vue.reactive({r$:o});function R(){n.value&&!e.value[n.value]&&(e.value[n.value]={});}vue.watch(n,R),vue.watch(e,$=>{o.value=c($);},{deep:true});function c($){if(n.value){let m=$[n.value]??{};return je(m,true)}else return je($["~~global"]??{},true)}return {r$:s.r$}}return {useCollectScope:t}}function Ut(e,t){let r=t??Ue;return {useScopedRegle:(o,s,R)=>{let{namespace:c,...$}=R??{},m=vue.computed(()=>vue.toValue(c)),h=vue.ref(`${Object.keys(e.value).length+1}-${he()}`),M=vue.computed(()=>`instance-${h.value}`),{r$:x}=r(o,s,$);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][M.value]:e.value["~~global"][M.value]&&delete e.value["~~global"][M.value];}function O(){m.value?(e.value[m.value]||(e.value[m.value]={}),e.value[m.value][M.value]=x):(e.value["~~global"]||(e.value["~~global"]={}),e.value["~~global"][M.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:o}=Nt(r);return {useScopedRegle:n,useCollectScope:o}}
2
- exports.InternalRuleType=Le;exports.createRule=ze;exports.createScopedUseRegle=at;exports.defineRegleConfig=Vt;exports.inferRules=nt;exports.mergeRegles=je;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)}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 o=n[t]||[];return r.concat(o)},[])}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,o=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:o,_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 o=function(...s){return He(e,...s)};return o.validator=r.validator,o.message=r.message,o.active=r.active,o.tooltip=r.tooltip,o.type=r.type,o.exec=r.exec,o._validator=r.validator,o._message=r.message,o._active=r.active,o._tooltip=r.tooltip,o._type=e.type,o._message_pacthed=false,o._tooltip_pacthed=false,o._async=n,o}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),o=shallowRef(new Map),s=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){s.value.set(`${v}-${b}`,E);}function m(v,b){return s.value.get(`${v}-${b}`)}function h(v,b){v&&b!=null&&s.value.delete(`${v}-${b}`);}function M(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 l=v[V],u=b[V];return !u||!l||typeof l=="function"||typeof u=="function"||typeof l=="number"||typeof l=="boolean"?false:l._params?l._params?.every((C,_)=>{if(typeof u=="number"||typeof u=="boolean")return true;{let k=ee(u._params),J=ee(l._params);return k?.[_]===J?.[_]}}):true})}function w(v){let b=o.value.get(v);if(b)return b;{let E=ref(false),i=ref(true),S=ref({}),V=ref(false);return o.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(),o.value.clear(),s.value.clear();}),{addRuleDeclEntry:P,setDirtyEntry:M,checkRuleDeclEntry:O,getDirtyState:x,trySetRuleStatusRef:w,getFieldsEntry:R,getCollectionsEntry:c,getArrayStatus:m,addArrayStatus:$,deleteArrayStatus:h,arrayStatusStorage:s}}function Fe(e){return ne(e.value)}function Ke(e,t,r){let n=effectScope(),o;return e instanceof Function?o=n.run(()=>e(t,r??0)):o=e,{scope:n,unwrapped:o}}function Ve(e,t,r){let n,o=(...s)=>new Promise(R=>{clearTimeout(n),n=setTimeout(()=>{n=undefined,Promise.resolve(e.apply(this,[...s])).then(R);},t);});return o.cancel=()=>{clearTimeout(n),n=undefined;},o}function Zt(e,t){let r=String(e).split("."),n=String(t).split(".");for(let o=0;o<Math.min(r.length,n.length);o++){let s=Number(r[o]),R=Number(n[o]);if(s>R)return 1;if(R>s)return -1;if(!isNaN(s)&&isNaN(R))return 1;if(isNaN(s)&&!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 (...o)=>(t||(r=n.run(()=>e(...o)),t=true),r)}function bt(e,t){return Fe(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:o,storage:s,$debounce:R,modifiers:c}){let $=effectScope(),m={},h,M=ref(false),{$pending:x,$valid:P,$metadata:O,$validating:a}=s.trySetRuleStatusRef(`${o}.${r}`);function w(){$=effectScope(),m=$.run(()=>{let l=ref(false),u=ref(false),C=ref(true),_=ref(false),k=ref(false),J=computed(()=>({$value:n.value,$error:u.value,$dirty:l.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(()=>`${o}.${pe.value}`);return {$active:I,$message:ie,$type:pe,$validator:me,$params:d,$path:f,$tooltip:de,$fieldValid:k,$fieldError:u,$fieldDirty:l,$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 l=false;try{let u=m.$validator.value,C=u(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")l=k;else {let{$valid:J,...I}=k;l=J,O.value=I;}}catch{l=false;}finally{x.value=false;}return l}let E=Ve(b,R??200);async function i(){try{a.value=!0;let l=!1;if(we(t.value)&&t.value._async)l=await E();else {let u=m.$validator.value,C=u(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")l=C;else {let{$valid:_,...k}=C;l=_,O.value=k;}}return P.value=l,l}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:M,$validating:a,$validate:i,$unwatch:V,$watch:w,$reset:S})}function Ne({state:e,rulesDef:t,customMessages:r,path:n,fieldName:o,storage:s,options:R,externalErrors:c,schemaErrors:$,schemaMode:m,onUnwatch:h,$isArray:M,initialState:x,shortcuts:P}){let O=effectScope(),a,w=[],v,b,E,i,S,V=()=>{};function l(){let y=t.value,G=s.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:s,$debounce:L.value.$debounce})]}return []}).filter(B=>!!B.length)),a.processShortcuts(),u(),G?.valid!=null&&(a.$dirty.value=s.getDirtyState(n),(a.$dirty.value&&a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&V()),s.addRuleDeclEntry(n,y);}function u(){V=a.$debounce.value?Ve(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&&s.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),j=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:Me.value?false:!le.value||le.value&&G.value?Object.entries(I.value).some(([ae,ue])=>!ue.$valid):false),ct=computed(()=>o),Me=computed(()=>!!(Z(I.value)&&!m)),ft=computed(()=>c?.value?.length||Me.value?false:y.value&&!Z(e.value)&&!j.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:Me,$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:j,$tooltips:ut,$dirty:y,triggerPunishment:G,processShortcuts:Bt,$silentValue:K,$inactive:Me}}),k(),E=watch(a.$dirty,y=>{s.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,u);}function k(){v=watch(e,()=>{a.$autoDirty.value&&(a.$dirty.value||(a.$dirty.value=true)),t.value instanceof Function&&l(),(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&V(),a.$rewardEarly.value!==true&&a.$clearExternalErrorsOnChange.value&&f();},{deep:M?true:_e?1:true,flush:"post"});}function J(){Object.values(I.value).forEach(y=>{y.$validate();});}let I=ref({}),L=ref({});l();function ie(){f(),a.$dirty.value=false,a.triggerPunishment.value=false,s.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:F,$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:o,stateValue:s,customMessages:R,rules:c,externalErrors:$,schemaErrors:m,initialState:h,shortcuts:M,fieldName:x,schemaMode:P}){let O=c.$key?c.$key:he(),a=`${t}.${String(O)}`;typeof s.value=="object"&&s.value!=null&&(s.value.$id?a=`${t}.${s.value.$id}`:Object.defineProperties(s.value,{$id:{value:O,enumerable:false,configurable:false,writable:false}}));let w=toRef($?.value??[],r),v=computed(()=>m?.value?.[r]),b=Te({state:s,rulesDef:toRef(()=>c),customMessages:R,path:a,storage:o,options:n,externalErrors:w,schemaErrors:v,initialState:h,shortcuts:M,fieldName:x,schemaMode:P});if(b){let E=s.value?.$id;b.$id=E??String(O),o.addArrayStatus(e,b.$id,b);}return b}function At({state:e,rulesDef:t,customMessages:r,path:n,storage:o,options:s,externalErrors:R,schemaErrors:c,schemaMode:$,initialState:m,shortcuts:h,fieldName:M}){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=o.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),F=Xe({$id:v.value,path:n,customMessages:r,rules:T??{},stateValue:toRef(()=>d),index:f,options:s,storage:o,externalErrors:Q,schemaErrors:g,initialState:A,shortcuts:h,fieldName:M,schemaMode:$});return F||null}).filter(d=>!!d):S.value=[],i.value=Ne({state:e,rulesDef:t,customMessages:r,path:n,storage:o,options:s,externalErrors:toRef(R?.value??{},"$self"),schemaErrors:computed(()=>c?.value?.$self),$isArray:true,initialState:m,shortcuts:h,fieldName:M,schemaMode:$});}function l(){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=o.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"),F=computed(()=>c?.value?.$each??[]),H=Xe({$id:v.value,path:n,customMessages:r,rules:Q??{},stateValue:T,index:p,options:s,storage:o,externalErrors:g,schemaErrors:F,initialState:toRef(m.value??[],p),shortcuts:h,fieldName:M,schemaMode:$});return H||null}}).filter(f=>!!f),d.filter(f=>!e.value?.find(p=>f.$id===p.$id)).forEach((f,p)=>{o.deleteArrayStatus(v.value,p.toString());});}else S.value=[];}function u(){E=watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?V():l();},{deep:_e?1:true,flush:"pre"});}function C(){u(),x=effectScope(),P=x.run(()=>{let d=computed({get:()=>e.value,set(D){E(),e.value=D,u();}}),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||F.value)),F=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(()=>M);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:F,$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:F,$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:o,schemaErrors:s,rootSchemaErrors:R,validationGroups:c,initialState:$,fieldName:m,...h}){let M=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,F])=>!!F).map(([g,F])=>{if(F){let H=toRef(t.value??{},g),X=toRef(()=>F),z=toRef(o?.value??{},g),oe=computed(()=>s?.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(o)??{}).filter(([g,F])=>!(g in e.value)&&!!F).map(([g])=>{let F=toRef(t.value??{},g),H=toRef(o?.value??{},g),X=computed(()=>s?.value?.[g]),z=toRef($?.value??{},g);return [g,Te({state:F,rulesDef:computed(()=>({})),path:r?`${r}.${g}`:g,externalErrors:H,schemaErrors:X,initialState:z,fieldName:g,...h})]})),A=Object.fromEntries(Object.entries(unref(s)??{}).map(([g])=>{let F=toRef(t.value??{},g),H=toRef(o?.value??{},g),X=computed(()=>s?.value?.[g]),z=toRef($?.value??{},g);return [g,Te({state:F,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 F=toRef(t.value??{},g),H=toRef(o?.value??{},g),X=computed(()=>s?.value?.[g]),z=toRef($?.value??{},g);return [g,Te({state:F,rulesDef:computed(()=>({})),path:r?`${r}.${g}`:g,externalErrors:H,schemaErrors:X,initialState:z,fieldName:g,...h})]}));i.value={...p,...T,...A,...Q},d&&l();}let i=h.storage.getFieldsEntry(r);E();function S(){o&&(w=watch(o,()=>{u(),E();},{deep:true}));}function V(){v=watch(t,()=>{u(),E(),k(true,true);},{flush:"sync"});}function l(){n&&(O?.(),O=watch(n,()=>{u(),E();},{deep:true,flush:"post"}),S()),R&&(a?.(),a=watch(R,()=>{u(),E();},{deep:true,flush:"post"})),V(),x=M.run(()=>{let d=computed({get:()=>t.value,set(U){u(),t.value=U,E();}}),f=computed(()=>!!Object.entries(i.value).length&&Object.entries(i.value).every(([U,j])=>j?.$dirty)),p=computed(()=>Object.entries(i.value).some(([U,j])=>j?.$anyDirty)),T=computed(()=>Object.entries(i.value).some(([U,j])=>j?.$invalid)),A=computed(()=>{let U=Object.entries(i.value).filter(([j,K])=>Dt(K)?!K.$inactive:true);return U.length?U.every(([j,K])=>K?.$valid):false}),Q=computed(()=>p.value&&!z.value&&T.value),g=computed(()=>unref(h.options.rewardEarly)!=null?unref(h.options.rewardEarly):false),F=computed(()=>unref(h.options.autoDirty)!=null?unref(h.options.autoDirty):!g.value),H=computed(()=>F.value?p.value&&!(T.value||z.value):!(T.value||z.value)),X=ref(false),z=computed(()=>X.value||Object.entries(i.value).some(([U,j])=>j?.$pending)),oe=computed(()=>Object.fromEntries(Object.entries(i.value).map(([U,j])=>[U,j?.$errors]))),y=computed(()=>Object.fromEntries(Object.entries(i.value).map(([U,j])=>[U,j?.$silentErrors]))),G=computed(()=>!!Object.entries(i.value).length&&Object.entries(i.value).every(([U,j])=>j?.$edited)),B=computed(()=>Object.entries(i.value).some(([U,j])=>j?.$anyEdited)),D=computed(()=>m);function se(){h.shortcuts?.nested&&Object.entries(h.shortcuts.nested).forEach(([U,j])=>{let K=effectScope();ge[U]=K.run(()=>{let ye=ref();return watchEffect(()=>{ye.value=j(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,j])=>j.length?[U,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$valid"].map(K=>[K,gt(j,K)])),...Object.fromEntries(["$errors","$silentErrors"].map(K=>[K,yt(j,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 u(){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(){u(),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:u,$watch:l,$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(Fe(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:o,...s}=t;return ke({rulesDef:e,...s,state:n.fakeState})}}else if(Tt(e))return Ne({rulesDef:e,...t})}function Ie({initialState:e,options:t,scopeRules:r,state:n,customRules:o,shortcuts:s,schemaErrors:R,schemaMode:c=false,onValidate:$}){let m=qe(),h=ref();return h.value=ke({rootRules:r,rulesDef:r,state:n,customMessages:o?.(),storage:m,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:s,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 o(s,R,c){let $=isRef(R)?R:computed(typeof R=="function"?R:()=>R),m={...n,...c},h=isRef(s)?s:ref(s),M=ref({...Y(h.value)});return {r$:Ie({scopeRules:$,state:h,options:m,initialState:M,customRules:e,shortcuts:r}).regle}}return o}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),o=rt();return {useRegle:n,inferRules:o}}function je(e,t){let r=t??false,n=computed({get:()=>r?Object.values(e).map(l=>l.$value):Object.fromEntries(Object.entries(e).map(([l,u])=>[l,u.$value])),set:l=>{r||typeof l=="object"&&Object.entries(l).forEach(([u,C])=>e[u].$value=C);}}),o=computed({get:()=>Object.fromEntries(Object.entries(e).map(([l,u])=>[l,u.$silentValue])),set:l=>{typeof l=="object"&&Object.entries(l).forEach(([u,C])=>e[u].$silentValue=C);}}),s=computed(()=>{let l=Object.entries(e);return !!l.length&&l.every(([u,C])=>C?.$dirty)}),R=computed(()=>Object.entries(e).some(([l,u])=>u?.$anyDirty)),c=computed(()=>Object.entries(e).some(([l,u])=>u?.$invalid)),$=computed(()=>{let l=Object.entries(e);return !!l.length&&l.every(([u,C])=>C?.$valid)}),m=computed(()=>Object.entries(e).some(([l,u])=>u?.$error)),h=computed(()=>{let l=Object.entries(e);return !!l.length&&l.every(([u,C])=>C?.$ready)}),M=computed(()=>Object.entries(e).some(([l,u])=>u?.$pending)),x=computed(()=>r?Object.entries(e).map(([l,u])=>u.$errors):Object.fromEntries(Object.entries(e).map(([l,u])=>[l,u.$errors]))),P=computed(()=>r?Object.entries(e).map(([l,u])=>u.$silentErrors):Object.fromEntries(Object.entries(e).map(([l,u])=>[l,u.$silentErrors]))),O=computed(()=>{let l=Object.entries(e);return !!l.length&&l.every(([u,C])=>C?.$edited)}),a=computed(()=>Object.entries(e).some(([l,u])=>u?.$anyEdited)),w=computed(()=>r?Object.values(e):e);function v(){Object.values(e).forEach(l=>{l.$reset();});}function b(){Object.values(e).forEach(l=>{l.$touch();});}function E(){Object.values(e).forEach(l=>{l.$resetAll();});}function i(l=true){return Object.values(e).map(u=>u.$extractDirtyFields(l))}function S(){Object.values(e).forEach(l=>{l.$clearExternalErrors();});}async function V(){try{let l=n.value;return {result:(await Promise.allSettled(Object.values(e).map(_=>_.$validate()))).every(_=>_.status==="fulfilled"?_.value.result===!0:!1),data:l}}catch{return {result:false,data:n.value}}}return reactive({...!r&&{$silentValue:o},$errors:x,$silentErrors:P,$instances:w,$value:n,$dirty:s,$anyDirty:R,$invalid:c,$valid:$,$error:m,$pending:M,$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 o=ref(c(e.value)),s=reactive({r$:o});function R(){n.value&&!e.value[n.value]&&(e.value[n.value]={});}watch(n,R),watch(e,$=>{o.value=c($);},{deep:true});function c($){if(n.value){let m=$[n.value]??{};return je(m,true)}else return je($["~~global"]??{},true)}return {r$:s.r$}}return {useCollectScope:t}}function Ut(e,t){let r=t??Ue;return {useScopedRegle:(o,s,R)=>{let{namespace:c,...$}=R??{},m=computed(()=>toValue(c)),h=ref(`${Object.keys(e.value).length+1}-${he()}`),M=computed(()=>`instance-${h.value}`),{r$:x}=r(o,s,$);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][M.value]:e.value["~~global"][M.value]&&delete e.value["~~global"][M.value];}function O(){m.value?(e.value[m.value]||(e.value[m.value]={}),e.value[m.value][M.value]=x):(e.value["~~global"]||(e.value["~~global"]={}),e.value["~~global"][M.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:o}=Nt(r);return {useScopedRegle:n,useCollectScope:o}}
2
- export{Le as InternalRuleType,ze as createRule,at as createScopedUseRegle,Vt as defineRegleConfig,nt as inferRules,je 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;
@@ -85,6 +85,25 @@ function toDate(argument) {
85
85
  }
86
86
  }
87
87
 
88
+ // ../shared/utils/debounce.ts
89
+ function debounce(func, wait, immediate) {
90
+ let timeout;
91
+ const debouncedFn = (...args) => new Promise((resolve) => {
92
+ clearTimeout(timeout);
93
+ timeout = setTimeout(() => {
94
+ timeout = undefined;
95
+ {
96
+ Promise.resolve(func.apply(this, [...args])).then(resolve);
97
+ }
98
+ }, wait);
99
+ });
100
+ debouncedFn.cancel = () => {
101
+ clearTimeout(timeout);
102
+ timeout = undefined;
103
+ };
104
+ return debouncedFn;
105
+ }
106
+
88
107
  // src/types/rules/rule.internal.types.ts
89
108
  var InternalRuleType = /* @__PURE__ */ ((InternalRuleType2) => {
90
109
  InternalRuleType2["Inline"] = "__inline";
@@ -374,25 +393,6 @@ function unwrapGetter(getter, value, index) {
374
393
  }
375
394
  return { scope, unwrapped };
376
395
  }
377
-
378
- // src/utils/debounce.ts
379
- function debounce(func, wait, immediate) {
380
- let timeout;
381
- const debouncedFn = (...args) => new Promise((resolve) => {
382
- clearTimeout(timeout);
383
- timeout = setTimeout(() => {
384
- timeout = undefined;
385
- {
386
- Promise.resolve(func.apply(this, [...args])).then(resolve);
387
- }
388
- }, wait);
389
- });
390
- debouncedFn.cancel = () => {
391
- clearTimeout(timeout);
392
- timeout = undefined;
393
- };
394
- return debouncedFn;
395
- }
396
396
  function versionCompare(current, other) {
397
397
  const cp = String(current).split(".");
398
398
  const op = String(other).split(".");
@@ -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,
@@ -628,6 +628,10 @@ function createReactiveRuleStatus({
628
628
  let ruleResult = false;
629
629
  try {
630
630
  const validator = scopeState.$validator.value;
631
+ if (typeof validator !== "function") {
632
+ console.error(`${path}: Incorrect rule format, it needs to be either a function or created with "createRule".`);
633
+ return false;
634
+ }
631
635
  const resultOrPromise = validator(state.value, ...scopeState.$params.value);
632
636
  let cachedValue = state.value;
633
637
  updatePendingState();
@@ -945,7 +949,7 @@ function createReactiveFieldStatus({
945
949
  }
946
950
  return false;
947
951
  });
948
- const $valid = computed(() => {
952
+ const $correct = computed(() => {
949
953
  if (externalErrors?.value?.length) {
950
954
  return false;
951
955
  } else if ($inactive.value) {
@@ -954,9 +958,12 @@ function createReactiveFieldStatus({
954
958
  if (schemaMode) {
955
959
  return !schemaErrors?.value?.length;
956
960
  } else {
957
- return Object.values($rules.value).every((ruleResult) => {
958
- return ruleResult.$valid && ruleResult.$active;
959
- });
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
+ }
960
967
  }
961
968
  }
962
969
  return false;
@@ -983,7 +990,7 @@ function createReactiveFieldStatus({
983
990
  $error,
984
991
  $pending,
985
992
  $invalid,
986
- $valid,
993
+ $correct,
987
994
  $errors,
988
995
  $ready,
989
996
  $silentErrors,
@@ -1012,7 +1019,7 @@ function createReactiveFieldStatus({
1012
1019
  $error,
1013
1020
  $pending,
1014
1021
  $invalid,
1015
- $valid,
1022
+ $correct,
1016
1023
  $debounce: $debounce2,
1017
1024
  $lazy: $lazy2,
1018
1025
  $errors,
@@ -1044,18 +1051,18 @@ function createReactiveFieldStatus({
1044
1051
  });
1045
1052
  });
1046
1053
  $unwatchRuleFieldValues = watch(
1047
- [scopeState.$error, scopeState.$valid, scopeState.$invalid, scopeState.$pending],
1054
+ [scopeState.$error, scopeState.$correct, scopeState.$invalid, scopeState.$pending],
1048
1055
  () => {
1049
1056
  Object.values($rules.value).forEach((rule) => {
1050
1057
  rule.$fieldError = scopeState.$error.value;
1051
1058
  rule.$fieldInvalid = scopeState.$invalid.value;
1052
1059
  rule.$fieldPending = scopeState.$pending.value;
1053
- rule.$fieldValid = scopeState.$valid.value;
1060
+ rule.$fieldCorrect = scopeState.$correct.value;
1054
1061
  });
1055
1062
  }
1056
1063
  );
1057
- $unwatchValid = watch(scopeState.$valid, (valid) => {
1058
- if (scopeState.$rewardEarly.value && valid) {
1064
+ $unwatchValid = watch(scopeState.$invalid, (invalid) => {
1065
+ if (scopeState.$rewardEarly.value && !invalid) {
1059
1066
  scopeState.triggerPunishment.value = false;
1060
1067
  }
1061
1068
  });
@@ -1456,9 +1463,9 @@ function createReactiveCollectionStatus({
1456
1463
  return statusOrField.$invalid;
1457
1464
  });
1458
1465
  });
1459
- const $valid = computed(() => {
1460
- return (isEmpty($selfStatus.value.$rules) ? true : $selfStatus.value.$valid) && (!$eachStatus.value.length || $eachStatus.value.every((statusOrField) => {
1461
- 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;
1462
1469
  }));
1463
1470
  });
1464
1471
  const $error = computed(() => {
@@ -1511,7 +1518,7 @@ function createReactiveCollectionStatus({
1511
1518
  $silentValue,
1512
1519
  $pending,
1513
1520
  $invalid,
1514
- $valid,
1521
+ $correct,
1515
1522
  $errors,
1516
1523
  $ready,
1517
1524
  $silentErrors,
@@ -1537,7 +1544,7 @@ function createReactiveCollectionStatus({
1537
1544
  $dirty,
1538
1545
  $anyDirty,
1539
1546
  $invalid,
1540
- $valid,
1547
+ $correct,
1541
1548
  $error,
1542
1549
  $pending,
1543
1550
  $errors,
@@ -1851,7 +1858,7 @@ function createReactiveNestedStatus({
1851
1858
  return statusOrField?.$invalid;
1852
1859
  });
1853
1860
  });
1854
- const $valid = computed(() => {
1861
+ const $correct = computed(() => {
1855
1862
  const fields = Object.entries($fields.value).filter(([_, statusOrField]) => {
1856
1863
  if (isFieldStatus(statusOrField)) {
1857
1864
  return !statusOrField.$inactive;
@@ -1860,7 +1867,7 @@ function createReactiveNestedStatus({
1860
1867
  });
1861
1868
  if (fields.length) {
1862
1869
  return fields.every(([_, statusOrField]) => {
1863
- return statusOrField?.$valid;
1870
+ return statusOrField?.$correct || statusOrField.$anyDirty && !statusOrField.$invalid;
1864
1871
  });
1865
1872
  }
1866
1873
  return false;
@@ -1932,7 +1939,7 @@ function createReactiveNestedStatus({
1932
1939
  $error,
1933
1940
  $pending,
1934
1941
  $invalid,
1935
- $valid,
1942
+ $correct,
1936
1943
  $ready,
1937
1944
  $anyDirty,
1938
1945
  $name,
@@ -1960,7 +1967,7 @@ function createReactiveNestedStatus({
1960
1967
  key,
1961
1968
  {
1962
1969
  ...Object.fromEntries(
1963
- ["$invalid", "$error", "$pending", "$dirty", "$valid"].map((property) => [
1970
+ ["$invalid", "$error", "$pending", "$dirty", "$correct"].map((property) => [
1964
1971
  property,
1965
1972
  mergeBooleanGroupProperties(entries, property)
1966
1973
  ])
@@ -1989,7 +1996,7 @@ function createReactiveNestedStatus({
1989
1996
  $dirty,
1990
1997
  $anyDirty,
1991
1998
  $invalid,
1992
- $valid,
1999
+ $correct,
1993
2000
  $error,
1994
2001
  $pending,
1995
2002
  $errors,
@@ -2292,10 +2299,10 @@ function mergeRegles(regles, _scoped) {
2292
2299
  return regle?.$invalid;
2293
2300
  });
2294
2301
  });
2295
- const $valid = computed(() => {
2302
+ const $correct = computed(() => {
2296
2303
  const entries = Object.entries(regles);
2297
2304
  return !!entries.length && entries.every(([_, regle]) => {
2298
- return regle?.$valid;
2305
+ return regle?.$correct || regle.$anyDirty && !regle.$invalid;
2299
2306
  });
2300
2307
  });
2301
2308
  const $error = computed(() => {
@@ -2412,7 +2419,7 @@ function mergeRegles(regles, _scoped) {
2412
2419
  $dirty,
2413
2420
  $anyDirty,
2414
2421
  $invalid,
2415
- $valid,
2422
+ $correct,
2416
2423
  $error,
2417
2424
  $pending,
2418
2425
  $ready,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@regle/core",
3
- "version": "0.7.6",
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",