@regle/core 0.8.3 → 0.9.0

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.
@@ -1100,20 +1100,42 @@ function createReactiveFieldStatus({
1100
1100
  const $rules = vue.ref({});
1101
1101
  const $localOptions = vue.ref({});
1102
1102
  createReactiveRulesResult();
1103
- function $reset() {
1103
+ function $reset(options2, fromParent) {
1104
1104
  $clearExternalErrors();
1105
1105
  scopeState.$dirty.value = false;
1106
1106
  scopeState.triggerPunishment.value = false;
1107
1107
  storage.setDirtyEntry(path, false);
1108
- initialState.value = isObject(state.value) ? cloneDeep(state.value) : Array.isArray(state.value) ? [...state.value] : state.value;
1109
- Object.entries($rules.value).forEach(([_, rule]) => {
1110
- rule.$reset();
1111
- });
1108
+ if (!fromParent) {
1109
+ if (options2?.toInitialState) {
1110
+ $unwatch();
1111
+ state.value = cloneDeep(initialState);
1112
+ } else if (options2?.toState) {
1113
+ $unwatch();
1114
+ let newInitialState;
1115
+ if (typeof options2?.toState === "function") {
1116
+ newInitialState = options2?.toState();
1117
+ } else {
1118
+ newInitialState = options2?.toState;
1119
+ }
1120
+ initialState.value = cloneDeep(newInitialState);
1121
+ state.value = cloneDeep(newInitialState);
1122
+ } else {
1123
+ initialState.value = isObject(state.value) ? cloneDeep(state.value) : Array.isArray(state.value) ? [...state.value] : state.value;
1124
+ }
1125
+ }
1126
+ if (!fromParent) {
1127
+ Object.entries($rules.value).forEach(([_, rule]) => {
1128
+ rule.$reset();
1129
+ });
1130
+ }
1112
1131
  if (!scopeState.$lazy.value && scopeState.$autoDirty.value) {
1113
1132
  Object.values($rules.value).forEach((rule) => {
1114
1133
  return rule.$validate();
1115
1134
  });
1116
1135
  }
1136
+ if (!fromParent) {
1137
+ createReactiveRulesResult();
1138
+ }
1117
1139
  }
1118
1140
  function $touch(runCommit = true, withConditions = false) {
1119
1141
  if (!scopeState.$dirty.value) {
@@ -1158,11 +1180,6 @@ function createReactiveFieldStatus({
1158
1180
  return { result: false, data: state.value };
1159
1181
  }
1160
1182
  }
1161
- function $resetAll() {
1162
- $unwatch();
1163
- state.value = cloneDeep(initialState);
1164
- $reset();
1165
- }
1166
1183
  function $extractDirtyFields(filterNullishValues = true) {
1167
1184
  if (scopeState.$dirty.value) {
1168
1185
  return state.value;
@@ -1203,7 +1220,6 @@ function createReactiveFieldStatus({
1203
1220
  $validate,
1204
1221
  $unwatch,
1205
1222
  $watch,
1206
- $resetAll,
1207
1223
  $extractDirtyFields,
1208
1224
  $clearExternalErrors
1209
1225
  });
@@ -1592,11 +1608,31 @@ function createReactiveCollectionStatus({
1592
1608
  $each.$touch(runCommit, withConditions);
1593
1609
  });
1594
1610
  }
1595
- function $reset() {
1611
+ function $reset(options2, fromParent) {
1612
+ $unwatch();
1613
+ if (!fromParent) {
1614
+ if (options2?.toInitialState) {
1615
+ state.value = cloneDeep(initialState.value);
1616
+ } else if (options2?.toState) {
1617
+ let newInitialState;
1618
+ if (typeof options2?.toState === "function") {
1619
+ newInitialState = options2?.toState();
1620
+ } else {
1621
+ newInitialState = options2?.toState;
1622
+ }
1623
+ initialState.value = cloneDeep(newInitialState);
1624
+ state.value = cloneDeep(newInitialState);
1625
+ } else {
1626
+ initialState.value = cloneDeep(state.value);
1627
+ }
1628
+ }
1596
1629
  $selfStatus.value.$reset();
1597
1630
  $eachStatus.value.forEach(($each) => {
1598
- $each.$reset();
1631
+ $each.$reset(options2, true);
1599
1632
  });
1633
+ if (!fromParent) {
1634
+ createStatus();
1635
+ }
1600
1636
  }
1601
1637
  async function $validate() {
1602
1638
  const data = state.value;
@@ -1640,11 +1676,6 @@ function createReactiveCollectionStatus({
1640
1676
  }
1641
1677
  return dirtyFields;
1642
1678
  }
1643
- function $resetAll() {
1644
- $unwatch();
1645
- state.value = cloneDeep(initialState.value);
1646
- $reset();
1647
- }
1648
1679
  const { $shortcuts, ...restScopeState } = scopeState;
1649
1680
  return vue.reactive({
1650
1681
  $self: $selfStatus,
@@ -1657,7 +1688,6 @@ function createReactiveCollectionStatus({
1657
1688
  $watch,
1658
1689
  $touch,
1659
1690
  $reset,
1660
- $resetAll,
1661
1691
  $extractDirtyFields,
1662
1692
  $clearExternalErrors
1663
1693
  });
@@ -2032,25 +2062,38 @@ function createReactiveNestedStatus({
2032
2062
  field.$clearExternalErrors();
2033
2063
  });
2034
2064
  }
2035
- function $reset() {
2065
+ function $reset(options, fromParent) {
2036
2066
  $unwatchExternalErrors?.();
2067
+ $unwatch();
2068
+ if (!fromParent) {
2069
+ if (options?.toInitialState) {
2070
+ state.value = cloneDeep({ ...initialState.value ?? {} });
2071
+ } else if (options?.toState) {
2072
+ let newInitialState;
2073
+ if (typeof options?.toState === "function") {
2074
+ newInitialState = options?.toState();
2075
+ } else {
2076
+ newInitialState = options?.toState;
2077
+ }
2078
+ initialState.value = cloneDeep(newInitialState);
2079
+ state.value = cloneDeep(newInitialState);
2080
+ } else {
2081
+ initialState.value = cloneDeep(state.value);
2082
+ }
2083
+ }
2037
2084
  Object.values($fields.value).forEach((statusOrField) => {
2038
- statusOrField.$reset();
2085
+ statusOrField.$reset(options, true);
2039
2086
  });
2040
- initialState.value = { ...cloneDeep(state.value) };
2041
2087
  define$WatchExternalErrors();
2088
+ if (!fromParent) {
2089
+ createReactiveFieldsStatus();
2090
+ }
2042
2091
  }
2043
2092
  function $touch(runCommit = true, withConditions = false) {
2044
2093
  Object.values($fields.value).forEach((statusOrField) => {
2045
2094
  statusOrField.$touch(runCommit, withConditions);
2046
2095
  });
2047
2096
  }
2048
- async function $resetAll() {
2049
- $unwatch();
2050
- state.value = cloneDeep({ ...initialState.value ?? {} });
2051
- $reset();
2052
- createReactiveFieldsStatus();
2053
- }
2054
2097
  function filterNullishFields(fields) {
2055
2098
  return fields.filter(([key, value]) => {
2056
2099
  if (isObject(value)) {
@@ -2109,7 +2152,6 @@ function createReactiveNestedStatus({
2109
2152
  ...$shortcuts,
2110
2153
  $fields,
2111
2154
  $value: state,
2112
- $resetAll,
2113
2155
  $reset,
2114
2156
  $touch,
2115
2157
  $validate,
@@ -2367,9 +2409,9 @@ function mergeRegles(regles, _scoped) {
2367
2409
  return regles;
2368
2410
  }
2369
2411
  });
2370
- function $reset() {
2412
+ function $reset(options) {
2371
2413
  Object.values(regles).forEach((regle) => {
2372
- regle.$reset();
2414
+ regle.$reset(options);
2373
2415
  });
2374
2416
  }
2375
2417
  function $touch() {
@@ -2377,11 +2419,6 @@ function mergeRegles(regles, _scoped) {
2377
2419
  regle.$touch();
2378
2420
  });
2379
2421
  }
2380
- function $resetAll() {
2381
- Object.values(regles).forEach((regle) => {
2382
- regle.$resetAll();
2383
- });
2384
- }
2385
2422
  function $extractDirtyFields(filterNullishValues = true) {
2386
2423
  return Object.values(regles).map((regle) => regle.$extractDirtyFields(filterNullishValues));
2387
2424
  }
@@ -2427,7 +2464,6 @@ function mergeRegles(regles, _scoped) {
2427
2464
  $ready,
2428
2465
  $edited,
2429
2466
  $anyEdited,
2430
- $resetAll,
2431
2467
  $reset,
2432
2468
  $touch,
2433
2469
  $validate,
@@ -180,6 +180,11 @@ endIfEqual('abc', '123');
180
180
  */
181
181
  type IsNever$1<T> = [T] extends [never] ? true : false;
182
182
 
183
+ /**
184
+ Disallows any of the given keys.
185
+ */
186
+ type RequireNone<KeysType extends PropertyKey> = Partial<Record<KeysType, never>>;
187
+
183
188
  /**
184
189
  Matches any primitive, `void`, `Date`, or `RegExp` value.
185
190
  */
@@ -202,6 +207,76 @@ type HasMultipleCallSignatures<T extends (...arguments_: any[]) => unknown> =
202
207
  : true
203
208
  : false;
204
209
 
210
+ /**
211
+ Create a type that requires exactly one of the given keys and disallows more. The remaining keys are kept as is.
212
+
213
+ Use-cases:
214
+ - Creating interfaces for components that only need one of the keys to display properly.
215
+ - Declaring generic keys in a single place for a single use-case that gets narrowed down via `RequireExactlyOne`.
216
+
217
+ The caveat with `RequireExactlyOne` is that TypeScript doesn't always know at compile time every key that will exist at runtime. Therefore `RequireExactlyOne` can't do anything to prevent extra keys it doesn't know about.
218
+
219
+ @example
220
+ ```
221
+ import type {RequireExactlyOne} from 'type-fest';
222
+
223
+ type Responder = {
224
+ text: () => string;
225
+ json: () => string;
226
+ secure: boolean;
227
+ };
228
+
229
+ const responder: RequireExactlyOne<Responder, 'text' | 'json'> = {
230
+ // Adding a `text` key here would cause a compile error.
231
+
232
+ json: () => '{"message": "ok"}',
233
+ secure: true
234
+ };
235
+ ```
236
+
237
+ @category Object
238
+ */
239
+ type RequireExactlyOne<ObjectType, KeysType extends keyof ObjectType = keyof ObjectType> =
240
+ {[Key in KeysType]: (
241
+ Required<Pick<ObjectType, Key>> &
242
+ Partial<Record<Exclude<KeysType, Key>, never>>
243
+ )}[KeysType] & Omit<ObjectType, KeysType>;
244
+
245
+ /**
246
+ Create a type that requires exactly one of the given keys and disallows more, or none of the given keys. The remaining keys are kept as is.
247
+
248
+ @example
249
+ ```
250
+ import type {RequireOneOrNone} from 'type-fest';
251
+
252
+ type Responder = RequireOneOrNone<{
253
+ text: () => string;
254
+ json: () => string;
255
+ secure: boolean;
256
+ }, 'text' | 'json'>;
257
+
258
+ const responder1: Responder = {
259
+ secure: true
260
+ };
261
+
262
+ const responder2: Responder = {
263
+ text: () => '{"message": "hi"}',
264
+ secure: true
265
+ };
266
+
267
+ const responder3: Responder = {
268
+ json: () => '{"message": "ok"}',
269
+ secure: true
270
+ };
271
+ ```
272
+
273
+ @category Object
274
+ */
275
+ type RequireOneOrNone<ObjectType, KeysType extends keyof ObjectType = keyof ObjectType> = (
276
+ | RequireExactlyOne<ObjectType, KeysType>
277
+ | RequireNone<KeysType>
278
+ ) & Omit<ObjectType, KeysType>; // Ignore unspecified keys.
279
+
205
280
  /**
206
281
  @see {@link PartialDeep}
207
282
  */
@@ -569,6 +644,17 @@ type IsPropertyOutputRequired<TState, TRule extends RegleFormPropertyType<any, a
569
644
  ] extends [TState] ? unknown : NonNullable<TState> extends Array<any> ? TRule extends RegleCollectionRuleDecl<any, any> ? ArrayHaveAtLeastOneRequiredField<NonNullable<TState>, TRule> extends false ? false : true : false : TRule extends ReglePartialRuleTree<any, any> ? ExtendOnlyRealRecord<TState> extends true ? ObjectHaveAtLeastOneRequiredField<NonNullable<TState> extends Record<string, any> ? NonNullable<TState> : {}, TRule> extends false ? false : true : TRule extends RegleRuleDecl<any, any> ? FieldHaveRequiredRule<TRule> extends false ? false : true : false : false;
570
645
  type SafeFieldProperty<TState, TRule extends RegleFormPropertyType<any, any> | undefined = never> = TRule extends RegleRuleDecl<any, any> ? unknown extends TRule['required'] ? Maybe<TState> : TRule['required'] extends undefined ? never : TRule['required'] extends RegleRuleDefinition<any, infer Params, any, any, any> ? Params extends never[] ? Maybe<TState> : Maybe<TState> : Maybe<TState> : Maybe<TState>;
571
646
 
647
+ type ResetOptions<TState extends unknown> = RequireOneOrNone<{
648
+ /**
649
+ * Reset validation status and reset form state to its initial state
650
+ */
651
+ toInitialState?: boolean;
652
+ /**
653
+ * Reset validation status and reset form state to the given state
654
+ */
655
+ toState?: TState | (() => TState);
656
+ }, 'toInitialState' | 'toState'>;
657
+
572
658
  type useRegleFn<TCustomRules extends Partial<AllRulesDeclarations>, TShortcuts extends RegleShortcutDefinition<any> = never, TAdditionalReturnProperties extends Record<string, any> = {}, TAdditionalOptions extends Record<string, any> = {}> = <TState extends Record<string, any>, TRules extends ReglePartialRuleTree<Unwrap<TState>, Partial<AllRulesDeclarations> & TCustomRules> & TValid, TValidationGroups extends Record<string, RegleValidationGroupEntry[]>, TValid = isDeepExact<NoInferLegacy<TRules>, ReglePartialRuleTree<Unwrap<TState>, Partial<AllRulesDeclarations> & TCustomRules>> extends true ? {} : MismatchInfo<NoInferLegacy<TRules>, ReglePartialRuleTree<Unwrap<TState>, Partial<AllRulesDeclarations> & TCustomRules>>>(state: MaybeRef<TState> | DeepReactiveState<TState>, rulesFactory: MaybeRefOrGetter<TRules>, options?: Partial<DeepMaybeRef<RegleBehaviourOptions>> & LocalRegleBehaviourOptions<Unwrap<TState>, TRules, TValidationGroups> & TAdditionalOptions) => Regle<Unwrap<TState>, TRules, TValidationGroups, TShortcuts, TAdditionalReturnProperties>;
573
659
  /**
574
660
  * useRegle serves as the foundation for validation logic.
@@ -1458,7 +1544,8 @@ type RegleStatus<TState extends Record<string, any> | undefined = Record<string,
1458
1544
  } & {
1459
1545
  readonly [TKey in keyof TState as TRules[TKey] extends NonNullable<TRules[TKey]> ? NonNullable<TRules[TKey]> extends RegleRuleDecl ? TKey : never : never]-?: InferRegleStatusType<NonNullable<TRules[TKey]>, NonNullable<TState>, TKey, TShortcuts>;
1460
1546
  };
1461
- /** Collection of all the error messages, collected for all children properties and nested forms.
1547
+ /**
1548
+ * Collection of all the error messages, collected for all children properties and nested forms.
1462
1549
  *
1463
1550
  * Only contains errors from properties where $dirty equals true. */
1464
1551
  readonly $errors: RegleErrorTree<TState>;
@@ -1475,7 +1562,7 @@ type RegleStatus<TState extends Record<string, any> | undefined = Record<string,
1475
1562
  * @internal
1476
1563
  * @reference {@link RegleStatus}
1477
1564
  */
1478
- interface $InternalRegleStatus extends RegleCommonStatus {
1565
+ interface $InternalRegleStatus extends $InternalRegleCommonStatus {
1479
1566
  $fields: {
1480
1567
  [x: string]: $InternalRegleStatusType;
1481
1568
  };
@@ -1528,7 +1615,7 @@ type RegleFieldStatus<TState extends any = any, TRules extends RegleFormProperty
1528
1615
  * @internal
1529
1616
  * @reference {@link RegleFieldStatus}
1530
1617
  */
1531
- interface $InternalRegleFieldStatus extends RegleCommonStatus {
1618
+ interface $InternalRegleFieldStatus extends $InternalRegleCommonStatus {
1532
1619
  $value: any;
1533
1620
  $silentValue: any;
1534
1621
  readonly $rules: Record<string, $InternalRegleRuleStatus>;
@@ -1572,21 +1659,21 @@ interface RegleCommonStatus<TValue = any> {
1572
1659
  /** $value variant that will not "touch" the field and update the value silently, running only the rules, so you can easily swap values without impacting user interaction. */
1573
1660
  $silentValue: JoinDiscriminatedUnions<UnwrapNestedRefs<TValue>>;
1574
1661
  /** Marks the field and all nested properties as $dirty. */
1575
- $touch(runCommit?: boolean, withConditions?: boolean): void;
1662
+ $touch(): void;
1576
1663
  /**
1577
- * - Restore the validation state to a pristine state while keeping the current state.
1578
- * - Resets the `$dirty` state on all nested properties of a form.
1579
- * - Rerun rules if `$lazy` is false
1664
+ * Reset the validation status to a pristine state while keeping the current form state.
1665
+ * Resets the `$dirty` state on all nested properties of a form.
1666
+ * Rerun rules if `$lazy` is false
1580
1667
  */
1581
- $reset(): void;
1582
- /** Will reset both your validation state and your form state to their initial values. */
1583
- $resetAll: () => void;
1668
+ $reset(options?: ResetOptions<TValue>): void;
1584
1669
  /** Clears the $externalResults state back to an empty object. */
1585
1670
  $clearExternalErrors(): void;
1586
- /** @interal */
1671
+ }
1672
+ interface $InternalRegleCommonStatus extends Omit<RegleCommonStatus, '$touch' | '$reset'> {
1673
+ $touch(runCommit?: boolean, withConditions?: boolean): void;
1587
1674
  $unwatch(): void;
1588
- /** @interal */
1589
1675
  $watch(): void;
1676
+ $reset(options?: ResetOptions<any>, fromParent?: boolean): void;
1590
1677
  }
1591
1678
  /**
1592
1679
  * @public
@@ -1643,9 +1730,9 @@ interface $InternalRegleRuleStatus {
1643
1730
  $fieldError: boolean;
1644
1731
  $validator(value: any, ...args: any[]): RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition>;
1645
1732
  $validate(): Promise<boolean>;
1733
+ $reset(): void;
1646
1734
  $unwatch(): void;
1647
1735
  $watch(): void;
1648
- $reset(): void;
1649
1736
  }
1650
1737
  /**
1651
1738
  * @public
@@ -1684,9 +1771,6 @@ interface $InternalRegleCollectionStatus extends Omit<$InternalRegleStatus, '$fi
1684
1771
  readonly $externalErrors?: string[];
1685
1772
  $extractDirtyFields: (filterNullishValues?: boolean) => any[];
1686
1773
  $validate: () => Promise<$InternalRegleResult>;
1687
- /** Track each array state */
1688
- $unwatch(): void;
1689
- $watch(): void;
1690
1774
  }
1691
1775
 
1692
1776
  /**
@@ -180,6 +180,11 @@ endIfEqual('abc', '123');
180
180
  */
181
181
  type IsNever$1<T> = [T] extends [never] ? true : false;
182
182
 
183
+ /**
184
+ Disallows any of the given keys.
185
+ */
186
+ type RequireNone<KeysType extends PropertyKey> = Partial<Record<KeysType, never>>;
187
+
183
188
  /**
184
189
  Matches any primitive, `void`, `Date`, or `RegExp` value.
185
190
  */
@@ -202,6 +207,76 @@ type HasMultipleCallSignatures<T extends (...arguments_: any[]) => unknown> =
202
207
  : true
203
208
  : false;
204
209
 
210
+ /**
211
+ Create a type that requires exactly one of the given keys and disallows more. The remaining keys are kept as is.
212
+
213
+ Use-cases:
214
+ - Creating interfaces for components that only need one of the keys to display properly.
215
+ - Declaring generic keys in a single place for a single use-case that gets narrowed down via `RequireExactlyOne`.
216
+
217
+ The caveat with `RequireExactlyOne` is that TypeScript doesn't always know at compile time every key that will exist at runtime. Therefore `RequireExactlyOne` can't do anything to prevent extra keys it doesn't know about.
218
+
219
+ @example
220
+ ```
221
+ import type {RequireExactlyOne} from 'type-fest';
222
+
223
+ type Responder = {
224
+ text: () => string;
225
+ json: () => string;
226
+ secure: boolean;
227
+ };
228
+
229
+ const responder: RequireExactlyOne<Responder, 'text' | 'json'> = {
230
+ // Adding a `text` key here would cause a compile error.
231
+
232
+ json: () => '{"message": "ok"}',
233
+ secure: true
234
+ };
235
+ ```
236
+
237
+ @category Object
238
+ */
239
+ type RequireExactlyOne<ObjectType, KeysType extends keyof ObjectType = keyof ObjectType> =
240
+ {[Key in KeysType]: (
241
+ Required<Pick<ObjectType, Key>> &
242
+ Partial<Record<Exclude<KeysType, Key>, never>>
243
+ )}[KeysType] & Omit<ObjectType, KeysType>;
244
+
245
+ /**
246
+ Create a type that requires exactly one of the given keys and disallows more, or none of the given keys. The remaining keys are kept as is.
247
+
248
+ @example
249
+ ```
250
+ import type {RequireOneOrNone} from 'type-fest';
251
+
252
+ type Responder = RequireOneOrNone<{
253
+ text: () => string;
254
+ json: () => string;
255
+ secure: boolean;
256
+ }, 'text' | 'json'>;
257
+
258
+ const responder1: Responder = {
259
+ secure: true
260
+ };
261
+
262
+ const responder2: Responder = {
263
+ text: () => '{"message": "hi"}',
264
+ secure: true
265
+ };
266
+
267
+ const responder3: Responder = {
268
+ json: () => '{"message": "ok"}',
269
+ secure: true
270
+ };
271
+ ```
272
+
273
+ @category Object
274
+ */
275
+ type RequireOneOrNone<ObjectType, KeysType extends keyof ObjectType = keyof ObjectType> = (
276
+ | RequireExactlyOne<ObjectType, KeysType>
277
+ | RequireNone<KeysType>
278
+ ) & Omit<ObjectType, KeysType>; // Ignore unspecified keys.
279
+
205
280
  /**
206
281
  @see {@link PartialDeep}
207
282
  */
@@ -569,6 +644,17 @@ type IsPropertyOutputRequired<TState, TRule extends RegleFormPropertyType<any, a
569
644
  ] extends [TState] ? unknown : NonNullable<TState> extends Array<any> ? TRule extends RegleCollectionRuleDecl<any, any> ? ArrayHaveAtLeastOneRequiredField<NonNullable<TState>, TRule> extends false ? false : true : false : TRule extends ReglePartialRuleTree<any, any> ? ExtendOnlyRealRecord<TState> extends true ? ObjectHaveAtLeastOneRequiredField<NonNullable<TState> extends Record<string, any> ? NonNullable<TState> : {}, TRule> extends false ? false : true : TRule extends RegleRuleDecl<any, any> ? FieldHaveRequiredRule<TRule> extends false ? false : true : false : false;
570
645
  type SafeFieldProperty<TState, TRule extends RegleFormPropertyType<any, any> | undefined = never> = TRule extends RegleRuleDecl<any, any> ? unknown extends TRule['required'] ? Maybe<TState> : TRule['required'] extends undefined ? never : TRule['required'] extends RegleRuleDefinition<any, infer Params, any, any, any> ? Params extends never[] ? Maybe<TState> : Maybe<TState> : Maybe<TState> : Maybe<TState>;
571
646
 
647
+ type ResetOptions<TState extends unknown> = RequireOneOrNone<{
648
+ /**
649
+ * Reset validation status and reset form state to its initial state
650
+ */
651
+ toInitialState?: boolean;
652
+ /**
653
+ * Reset validation status and reset form state to the given state
654
+ */
655
+ toState?: TState | (() => TState);
656
+ }, 'toInitialState' | 'toState'>;
657
+
572
658
  type useRegleFn<TCustomRules extends Partial<AllRulesDeclarations>, TShortcuts extends RegleShortcutDefinition<any> = never, TAdditionalReturnProperties extends Record<string, any> = {}, TAdditionalOptions extends Record<string, any> = {}> = <TState extends Record<string, any>, TRules extends ReglePartialRuleTree<Unwrap<TState>, Partial<AllRulesDeclarations> & TCustomRules> & TValid, TValidationGroups extends Record<string, RegleValidationGroupEntry[]>, TValid = isDeepExact<NoInferLegacy<TRules>, ReglePartialRuleTree<Unwrap<TState>, Partial<AllRulesDeclarations> & TCustomRules>> extends true ? {} : MismatchInfo<NoInferLegacy<TRules>, ReglePartialRuleTree<Unwrap<TState>, Partial<AllRulesDeclarations> & TCustomRules>>>(state: MaybeRef<TState> | DeepReactiveState<TState>, rulesFactory: MaybeRefOrGetter<TRules>, options?: Partial<DeepMaybeRef<RegleBehaviourOptions>> & LocalRegleBehaviourOptions<Unwrap<TState>, TRules, TValidationGroups> & TAdditionalOptions) => Regle<Unwrap<TState>, TRules, TValidationGroups, TShortcuts, TAdditionalReturnProperties>;
573
659
  /**
574
660
  * useRegle serves as the foundation for validation logic.
@@ -1458,7 +1544,8 @@ type RegleStatus<TState extends Record<string, any> | undefined = Record<string,
1458
1544
  } & {
1459
1545
  readonly [TKey in keyof TState as TRules[TKey] extends NonNullable<TRules[TKey]> ? NonNullable<TRules[TKey]> extends RegleRuleDecl ? TKey : never : never]-?: InferRegleStatusType<NonNullable<TRules[TKey]>, NonNullable<TState>, TKey, TShortcuts>;
1460
1546
  };
1461
- /** Collection of all the error messages, collected for all children properties and nested forms.
1547
+ /**
1548
+ * Collection of all the error messages, collected for all children properties and nested forms.
1462
1549
  *
1463
1550
  * Only contains errors from properties where $dirty equals true. */
1464
1551
  readonly $errors: RegleErrorTree<TState>;
@@ -1475,7 +1562,7 @@ type RegleStatus<TState extends Record<string, any> | undefined = Record<string,
1475
1562
  * @internal
1476
1563
  * @reference {@link RegleStatus}
1477
1564
  */
1478
- interface $InternalRegleStatus extends RegleCommonStatus {
1565
+ interface $InternalRegleStatus extends $InternalRegleCommonStatus {
1479
1566
  $fields: {
1480
1567
  [x: string]: $InternalRegleStatusType;
1481
1568
  };
@@ -1528,7 +1615,7 @@ type RegleFieldStatus<TState extends any = any, TRules extends RegleFormProperty
1528
1615
  * @internal
1529
1616
  * @reference {@link RegleFieldStatus}
1530
1617
  */
1531
- interface $InternalRegleFieldStatus extends RegleCommonStatus {
1618
+ interface $InternalRegleFieldStatus extends $InternalRegleCommonStatus {
1532
1619
  $value: any;
1533
1620
  $silentValue: any;
1534
1621
  readonly $rules: Record<string, $InternalRegleRuleStatus>;
@@ -1572,21 +1659,21 @@ interface RegleCommonStatus<TValue = any> {
1572
1659
  /** $value variant that will not "touch" the field and update the value silently, running only the rules, so you can easily swap values without impacting user interaction. */
1573
1660
  $silentValue: JoinDiscriminatedUnions<UnwrapNestedRefs<TValue>>;
1574
1661
  /** Marks the field and all nested properties as $dirty. */
1575
- $touch(runCommit?: boolean, withConditions?: boolean): void;
1662
+ $touch(): void;
1576
1663
  /**
1577
- * - Restore the validation state to a pristine state while keeping the current state.
1578
- * - Resets the `$dirty` state on all nested properties of a form.
1579
- * - Rerun rules if `$lazy` is false
1664
+ * Reset the validation status to a pristine state while keeping the current form state.
1665
+ * Resets the `$dirty` state on all nested properties of a form.
1666
+ * Rerun rules if `$lazy` is false
1580
1667
  */
1581
- $reset(): void;
1582
- /** Will reset both your validation state and your form state to their initial values. */
1583
- $resetAll: () => void;
1668
+ $reset(options?: ResetOptions<TValue>): void;
1584
1669
  /** Clears the $externalResults state back to an empty object. */
1585
1670
  $clearExternalErrors(): void;
1586
- /** @interal */
1671
+ }
1672
+ interface $InternalRegleCommonStatus extends Omit<RegleCommonStatus, '$touch' | '$reset'> {
1673
+ $touch(runCommit?: boolean, withConditions?: boolean): void;
1587
1674
  $unwatch(): void;
1588
- /** @interal */
1589
1675
  $watch(): void;
1676
+ $reset(options?: ResetOptions<any>, fromParent?: boolean): void;
1590
1677
  }
1591
1678
  /**
1592
1679
  * @public
@@ -1643,9 +1730,9 @@ interface $InternalRegleRuleStatus {
1643
1730
  $fieldError: boolean;
1644
1731
  $validator(value: any, ...args: any[]): RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition>;
1645
1732
  $validate(): Promise<boolean>;
1733
+ $reset(): void;
1646
1734
  $unwatch(): void;
1647
1735
  $watch(): void;
1648
- $reset(): void;
1649
1736
  }
1650
1737
  /**
1651
1738
  * @public
@@ -1684,9 +1771,6 @@ interface $InternalRegleCollectionStatus extends Omit<$InternalRegleStatus, '$fi
1684
1771
  readonly $externalErrors?: string[];
1685
1772
  $extractDirtyFields: (filterNullishValues?: boolean) => any[];
1686
1773
  $validate: () => Promise<$InternalRegleResult>;
1687
- /** Track each array state */
1688
- $unwatch(): void;
1689
- $watch(): void;
1690
1774
  }
1691
1775
 
1692
1776
  /**
@@ -1,2 +1,2 @@
1
- 'use strict';var vue=require('vue');function ee(e,t=true){return e==null?true:e instanceof Date?isNaN(e.getTime()):e.constructor.name=="File"||e.constructor.name=="FileList"?e.size<=0:Array.isArray(e)?t?e.length===0:false:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}var 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
+ 'use strict';var vue=require('vue');function ee(e,t=true){return e==null?true:e instanceof Date?isNaN(e.getTime()):e.constructor.name=="File"||e.constructor.name=="FileList"?e.size<=0:Array.isArray(e)?t?e.length===0:false:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}var pt=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 G(e){let t=e,r={}.toString.call(e).slice(8,-1);if(r=="Set"&&(t=new Set([...e].map(n=>G(n)))),r=="Map"&&(t=new Map([...e].map(n=>[G(n[0]),G(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]=G(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 We(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 Fe(e,t,r){let n,l=(...c)=>new Promise(p=>{clearTimeout(n),n=setTimeout(()=>{n=undefined,Promise.resolve(e.apply(this,[...c])).then(p);},t);});return l.cancel=()=>{clearTimeout(n),n=undefined;},l}var Le=(r=>(r.Inline="__inline",r.Async="__async",r))(Le||{});function mt(e,t){return e.some(r=>r[t])}function yt(e,t){return e.reduce((r,n)=>{let l=n[t]||[];return r.concat(l)},[])}function te(e){try{return e.map(t=>vue.toValue(t))}catch{return []}}function gt(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(p=>p.trim()).filter(p=>p.length>0).length:0}function Be(e,...t){let{validator:r,type:n}=e,l=n==="__async"||r.constructor.name==="AsyncFunction";return {...{validator(d,...$){return e.validator(d,...te($.length?$:t))},message(d){return typeof e.message=="function"?e.message({...d,$params:te(d?.$params?.length?d.$params:t)}):e.message},active(d){return typeof e.active=="function"?e.active({...d,$params:te(d?.$params?.length?d.$params:t)}):e.active??true},tooltip(d){return typeof e.tooltip=="function"?e.tooltip({...d,$params:te(d?.$params?.length?d.$params:t)}):e.tooltip??[]},exec(d){let $=e.validator(d,...te(t)),m;return $ instanceof Promise?$.then(b=>(m=b,typeof m=="object"&&"$valid"in m?m.$valid:typeof m=="boolean"?m:false)):(m=$,typeof m=="object"&&"$valid"in m?m.$valid:typeof m=="boolean"?m:false)}},_validator:e.validator,_message:e.message,_active:e.active,_tooltip:e.tooltip,_type:e.type,_message_patched:false,_tooltip_patched:false,_async:l,_params:gt(t),_brand:pt}}function He(e){if(typeof e.validator=="function"){let r=Be(e,...[]),n=e.async??e.validator.constructor.name==="AsyncFunction";if(vt(e.validator)>1){let l=function(...c){return Be(e,...c)};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 ze(){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),c=vue.shallowRef(new Map);function p(v){let E=t.value.get(v);if(E)return E;{let D=vue.ref({});return t.value.set(v,D),D}}function d(v){let E=r.value.get(v);if(E)return E;{let D=vue.ref([]);return r.value.set(v,D),D}}function $(v,E,D){c.value.set(`${v}-${E}`,D);}function m(v,E){return c.value.get(`${v}-${E}`)}function b(v,E){v&&E!=null&&c.value.delete(`${v}-${E}`);}function V(v,E){n.value.set(v,E);}function C(v){return n.value.get(v)??false}function M(v,E){e.value.set(v,E);}function w(v,E){let D=e.value.get(v);return D?a(E,D)?{valid:true}:{valid:false}:undefined}function a(v,E){let D=Object.keys(E),f=Object.keys(v);return f.length!==D.length||!f.every(o=>D.includes(o))?false:f.every(o=>{let s=v[o],h=E[o];return !h||!s||typeof s=="function"||typeof h=="function"||typeof s=="number"||typeof s=="boolean"?false:s._params?s._params?.every((P,q)=>{if(typeof h=="number"||typeof h=="boolean")return true;{let U=te(h._params),X=te(s._params);return U?.[q]===X?.[q]}}):true})}function O(v){let E=l.value.get(v);if(E)return E;{let D=vue.ref(false),f=vue.ref(true),S=vue.ref({}),o=vue.ref(false);return l.value.set(v,{$pending:D,$valid:f,$metadata:S,$validating:o}),{$pending:D,$valid:f,$metadata:S,$validating:o}}}return vue.getCurrentScope()&&vue.onScopeDispose(()=>{e.value.clear(),t.value.clear(),r.value.clear(),n.value.clear(),l.value.clear(),c.value.clear();}),{addRuleDeclEntry:M,setDirtyEntry:V,checkRuleDeclEntry:w,getDirtyState:C,trySetRuleStatusRef:O,getFieldsEntry:p,getCollectionsEntry:d,getArrayStatus:m,addArrayStatus:$,deleteArrayStatus:b,arrayStatusStorage:c}}function je(e){return ae(e.value)}function qe(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 Xt(e,t){let r=String(e).split("."),n=String(t).split(".");for(let l=0;l<Math.min(r.length,n.length);l++){let c=Number(r[l]),p=Number(n[l]);if(c>p)return 1;if(p>c)return -1;if(!isNaN(c)&&isNaN(p))return 1;if(isNaN(c)&&!isNaN(p))return -1}return 0}var Ve=Xt(vue.version,"3.5.0")!==-1;function Zt(){return Math.floor(Math.random()*Date.now()).toString()}function Se(){return typeof window>"u"?Zt():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function $t(e){return vue.getCurrentScope()?(vue.onScopeDispose(e),true):false}function St(e){let t=false,r,n=vue.effectScope(true);return (...l)=>(t||(r=n.run(()=>e(...l)),t=true),r)}function ht(e,t){return je(e)||ae(t.value)&&!ee(t.value)&&!Object.entries(t.value).some(([r,n])=>we(n)||typeof n=="function")}function bt(e,t){return !!e.value&&ae(e.value)&&"$each"in e.value||Array.isArray(t.value)}function Et(e){return !!e.value&&ae(e.value)}function we(e){return ae(e)&&"_validator"in e}function Oe(e){return typeof e.value!="function"}function Tt(e){return ae(e)&&"$fields"in e}function xt(e){return !!e&&"$rules"in e}function Ke({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 Dt({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 Ct({customMessages:e,rule:t,ruleKey:r,state:n,path:l,storage:c,$debounce:p,modifiers:d}){let $=vue.effectScope(),m={},b,V=vue.ref(false),{$pending:C,$valid:M,$metadata:w,$validating:a}=c.trySetRuleStatusRef(`${l}.${r}`);function O(){$=vue.effectScope(),m=$.run(()=>{let s=vue.ref(false),h=vue.ref(false),P=vue.ref(true),q=vue.ref(false),U=vue.ref(false),X=vue.computed(()=>({$value:n.value,$error:h.value,$dirty:s.value,$pending:q.value,$correct:U.value,$invalid:P.value,$rule:{$valid:M.value,$invalid:!M.value,$pending:C.value},$params:i.value,...w.value})),I=vue.computed(()=>Oe(t)?typeof t.value.active=="function"?t.value.active(X.value):!!t.value.active:true);function B(T){let F="",H=e?e[r]?.[T]:undefined;if(H&&(typeof H=="function"?F=H(X.value):F=H),Oe(t)){let y=`_${T}_patched`;H&&!t.value[y]||(typeof t.value[T]=="function"?F=t.value[T](X.value):F=t.value[T]??"");}return F}let de=vue.computed(()=>{let T=B("message");return ee(T)&&(T="This field is not valid"),T}),ye=vue.computed(()=>B("tooltip")),ie=vue.computed(()=>Oe(t)&&t.value.type?t.value.type:r),u=vue.computed(()=>Oe(t)?t.value.validator:t.value),i=vue.computed(()=>typeof t.value=="function"?[]:te(t.value._params??[])),R=vue.computed(()=>`${l}.${ie.value}`);return {$active:I,$message:de,$type:ie,$validator:u,$params:i,$path:R,$tooltip:ye,$fieldCorrect:U,$fieldError:h,$fieldDirty:s,$fieldPending:q,$fieldInvalid:P}}),b=vue.watch(m?.$params,()=>{(d.$autoDirty.value||d.$rewardEarly.value&&m.$fieldError.value)&&f();});}O();function v(){M.value=true,m.$fieldDirty.value&&(C.value=true);}async function E(){let s=false;try{let h=m.$validator.value;if(typeof h!="function")return console.error(`${l}: Incorrect rule format, it needs to be either a function or created with "createRule".`),!1;let P=h(n.value,...m.$params.value),q=n.value;v();let U;if(P instanceof Promise?U=await P:U=P,n.value!==q)return !0;if(typeof U=="boolean")s=U;else {let{$valid:X,...I}=U;s=X,w.value=I;}}catch{s=false;}finally{C.value=false;}return s}let D=Fe(E,p??200);async function f(){try{a.value=!0;let s=!1;if(we(t.value)&&t.value._async)s=await D();else {let h=m.$validator.value,P=h(n.value,...m.$params.value);if(P 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(P!=null)if(typeof P=="boolean")s=P;else {let{$valid:q,...U}=P;s=q,w.value=U;}}return M.value=s,s}catch{return false}finally{a.value=false;}}function S(){M.value=true,w.value={},C.value=false,a.value=false,O();}function o(){b(),$.stop(),$=vue.effectScope();}return vue.reactive({...m,$pending:C,$valid:M,$metadata:w,$haveAsync:V,$validating:a,$validate:f,$unwatch:o,$watch:O,$reset:S})}function _e({state:e,rulesDef:t,customMessages:r,path:n,fieldName:l,storage:c,options:p,externalErrors:d,schemaErrors:$,schemaMode:m,onUnwatch:b,$isArray:V,initialState:C,shortcuts:M}){let w=vue.effectScope(),a,O=[],v,E,D,f,S,o=()=>{};function s(){let g=t.value,k=c.checkRuleDeclEntry(n,g);B.value=Object.fromEntries(Object.entries(g).filter(([A])=>A.startsWith("$"))),q(),I.value=Object.fromEntries(Object.entries(t.value).filter(([A])=>!A.startsWith("$")).map(([A,x])=>{if(x){let ue=vue.toRef(()=>x);return [A,Ct({modifiers:{$autoDirty:a.$autoDirty,$rewardEarly:a.$rewardEarly},customMessages:r,rule:ue,ruleKey:A,state:e,path:n,storage:c,$debounce:B.value.$debounce})]}return []}).filter(A=>!!A.length)),a.processShortcuts(),h(),k?.valid!=null&&(a.$dirty.value=c.getDirtyState(n),(a.$dirty.value&&a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&o()),c.addRuleDeclEntry(n,g);}function h(){o=a.$debounce.value?Fe(X,a.$debounce.value??a.$haveAnyAsyncRule?100:0):X;}function P(){I.value&&Object.entries(I.value).forEach(([g,k])=>{k.$unwatch();}),D(),S?.(),a.$dirty.value&&c.setDirtyEntry(n,a.$dirty.value),v?.(),E?.(),w.stop(),w=vue.effectScope(),O.forEach(g=>g.stop()),O=[],b?.(),f?.();}function q(){I.value&&Object.entries(I.value).forEach(([g,k])=>{k.$watch();}),a=w.run(()=>{let g=vue.ref(false),k=vue.ref(false),A=vue.computed(()=>g.value),x=vue.computed(()=>B.value.$debounce),ue=vue.computed(()=>B.value.$lazy!=null?B.value.$lazy:vue.unref(p.lazy)!=null?vue.unref(p.lazy):false),le=vue.computed(()=>B.value.$rewardEarly!=null?B.value.$rewardEarly:vue.unref(p.rewardEarly)!=null?vue.unref(p.rewardEarly):false),pe=vue.computed(()=>B.value.$clearExternalErrorsOnChange!=null?B.value.$clearExternalErrorsOnChange:vue.unref(p.clearExternalErrorsOnChange)!=null?vue.unref(p.clearExternalErrorsOnChange):true),W=vue.computed(()=>B.value.$autoDirty!=null?B.value.$autoDirty:vue.unref(p.autoDirty)!=null?vue.unref(p.autoDirty):!le.value),j=vue.computed(()=>Object.entries(I.value).some(([oe,Q])=>Q.$validating)),z=vue.computed({get:()=>e.value,set(oe){v(),e.value=oe,U();}}),me=vue.computed(()=>ge.value&&!Ie.value&&g.value),at=vue.computed(()=>Ke({field:{$rules:I.value,$error:me.value,$externalErrors:d?.value,$schemaErrors:$?.value}})),lt=vue.computed(()=>Ke({field:{$rules:I.value,$error:me.value,$externalErrors:d?.value,$schemaErrors:$?.value},silent:true})),Ue=vue.computed(()=>g.value?C.value instanceof Date&&e.value instanceof Date?We(C.value).getDate()!==We(e.value).getDate():C.value==null?!!e.value:Array.isArray(e.value)&&Array.isArray(C.value)?e.value.length!==C.value.length:C.value!==e.value:false),ot=vue.computed(()=>Ue.value),st=vue.computed(()=>Dt({field:{$rules:I.value}})),ut=vue.computed(()=>W.value?A.value&&!(ge.value||Ie.value):!(ge.value||Ie.value)),Ie=vue.computed(()=>k.value||!le.value?Object.entries(I.value).some(([oe,Q])=>Q.$pending):false),ge=vue.computed(()=>d?.value?.length||$?.value?.length?true:Me.value?false:!le.value||le.value&&k.value?Object.entries(I.value).some(([oe,Q])=>!Q.$valid):false),it=vue.computed(()=>l),Me=vue.computed(()=>!!(ee(I.value)&&!m)),ct=vue.computed(()=>d?.value?.length||Me.value?false:g.value&&!ee(e.value)&&!j.value?m?!$?.value?.length:Object.values(I.value).some(Q=>Q.$active)?Object.values(I.value).filter(Q=>Q.$active).every(Q=>Q.$valid):false:false),Ut=vue.computed(()=>Object.entries(I.value).some(([oe,Q])=>Q.$haveAsync));function Wt(){M?.fields&&Object.entries(M.fields).forEach(([oe,Q])=>{let Rt=vue.effectScope();ft[oe]=Rt.run(()=>{let dt=vue.ref();return vue.watchEffect(()=>{dt.value=Q(vue.reactive({$dirty:g,$externalErrors:d?.value??[],$value:e,$silentValue:z,$rules:I,$error:me,$pending:Ie,$invalid:ge,$correct:ct,$errors:at,$ready:ut,$silentErrors:lt,$anyDirty:A,$tooltips:st,$name:it,$inactive:Me,$edited:Ue,$anyEdited:ot}));}),dt}),O.push(Rt);});}let ft={};return vue.watch(ge,oe=>{oe||(k.value=false);}),{$error:me,$pending:Ie,$invalid:ge,$correct:ct,$debounce:x,$lazy:ue,$errors:at,$ready:ut,$silentErrors:lt,$rewardEarly:le,$autoDirty:W,$clearExternalErrorsOnChange:pe,$anyDirty:A,$edited:Ue,$anyEdited:ot,$name:it,$haveAnyAsyncRule:Ut,$shortcuts:ft,$validating:j,$tooltips:st,$dirty:g,triggerPunishment:k,processShortcuts:Wt,$silentValue:z,$inactive:Me}}),U(),D=vue.watch(a.$dirty,g=>{c.setDirtyEntry(n,g),Object.values(I.value).forEach(k=>{k.$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;});}),E=vue.watch(a.$invalid,g=>{a.$rewardEarly.value&&!g&&(a.triggerPunishment.value=false);}),f=vue.watch(a.$haveAnyAsyncRule,h);}function U(){v=vue.watch(e,()=>{a.$autoDirty.value&&(a.$dirty.value||(a.$dirty.value=true)),t.value instanceof Function&&s(),(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&o(),a.$rewardEarly.value!==true&&a.$clearExternalErrorsOnChange.value&&i();},{deep:V?true:Ve?1:true,flush:"post"});}function X(){Object.values(I.value).forEach(g=>{g.$validate();});}let I=vue.ref({}),B=vue.ref({});s();function de(g,k){if(i(),a.$dirty.value=false,a.triggerPunishment.value=false,c.setDirtyEntry(n,false),!k)if(g?.toInitialState)P(),e.value=G(C);else if(g?.toState){P();let A;typeof g?.toState=="function"?A=g?.toState():A=g?.toState,C.value=G(A),e.value=G(A);}else C.value=ae(e.value)?G(e.value):Array.isArray(e.value)?[...e.value]:e.value;k||Object.entries(I.value).forEach(([A,x])=>{x.$reset();}),!a.$lazy.value&&a.$autoDirty.value&&Object.values(I.value).forEach(A=>A.$validate()),k||s();}function ye(g=true,k=false){a.$dirty.value||(a.$dirty.value=true),k&&g?(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&o():g&&o();}async function ie(){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:!$?.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 u(g=true){return a.$dirty.value?e.value:g?{_null:true}:null}function i(){d?.value?.length&&(d.value=[]);}!a.$lazy.value&&!a.$dirty.value&&a.$autoDirty.value&&o();let{$shortcuts:R,$validating:T,$autoDirty:F,$rewardEarly:H,$clearExternalErrorsOnChange:y,$haveAnyAsyncRule:_,$debounce:K,$lazy:Z,triggerPunishment:J,...se}=a;return vue.reactive({...se,$externalErrors:d,$value:e,$rules:I,...R,$reset:de,$touch:ye,$validate:ie,$unwatch:P,$watch:q,$extractDirtyFields:u,$clearExternalErrors:i})}function Qe({$id:e,path:t,index:r,options:n,storage:l,stateValue:c,customMessages:p,rules:d,externalErrors:$,schemaErrors:m,initialState:b,shortcuts:V,fieldName:C,schemaMode:M}){let w=d.$key?d.$key:Se(),a=`${t}.${String(w)}`;typeof c.value=="object"&&c.value!=null&&(c.value.$id?a=`${t}.${c.value.$id}`:Object.defineProperties(c.value,{$id:{value:w,enumerable:false,configurable:false,writable:false}}));let O=vue.toRef($?.value??[],r),v=vue.computed(()=>m?.value?.[r]),E=Ee({state:c,rulesDef:vue.toRef(()=>d),customMessages:p,path:a,storage:l,options:n,externalErrors:O,schemaErrors:v,initialState:b,shortcuts:V,fieldName:C,schemaMode:M});if(E){let D=c.value?.$id;E.$id=D??String(w),l.addArrayStatus(e,E.$id,E);}return E}function Pt({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:c,externalErrors:p,schemaErrors:d,schemaMode:$,initialState:m,shortcuts:b,fieldName:V}){let C=vue.effectScope(),M,w=vue.effectScope(),a,O=[];if(!Array.isArray(e.value)&&!t.value.$each)return;let v=vue.ref(),E=vue.ref(e.value),D,f=vue.ref({}),S=l.getCollectionsEntry(n);a=w.run(()=>({isPrimitiveArray:vue.computed(()=>Array.isArray(e.value)&&e.value.length?e.value.every(i=>typeof i!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(i=>we(i)||typeof i=="function"):false)})),o(),P();function o(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?(v.value=Se(),Object.defineProperties(e.value,{$id:{value:v.value,enumerable:false,configurable:false,writable:false}})):e.value?.$id&&(v.value=e.value.$id)),E.value=f.value.$value,Array.isArray(e.value)&&!a.isPrimitiveArray.value?S.value=e.value.filter(u=>typeof u=="object").map((u,i)=>{let{scope:R,unwrapped:T}=qe(t.value.$each,vue.toRef(()=>u),i);R&&O.push(R);let F=vue.toRef(m.value??[],i),H=vue.toRef(p?.value??{},"$each"),y=vue.computed(()=>d?.value?.$each),_=Qe({$id:v.value,path:n,customMessages:r,rules:T??{},stateValue:vue.toRef(()=>u),index:i,options:c,storage:l,externalErrors:H,schemaErrors:y,initialState:F,shortcuts:b,fieldName:V,schemaMode:$});return _||null}).filter(u=>!!u):S.value=[],f.value=_e({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:c,externalErrors:vue.toRef(p?.value??{},"$self"),schemaErrors:vue.computed(()=>d?.value?.$self),$isArray:true,initialState:m,shortcuts:b,fieldName:V,schemaMode:$});}function s(){if(Array.isArray(e.value)&&!a.isPrimitiveArray.value){let u=G(S.value);S.value=e.value.filter(i=>typeof i=="object").map((i,R)=>{let T=vue.toRef(()=>i);if(i.$id&&S.value.find(F=>F.$id===i.$id)){let F=l.getArrayStatus(v.value,i.$id);return F?(F.$value=T,F):null}else {let{scope:F,unwrapped:H}=qe(t.value.$each,T,R);F&&O.push(F);let y=vue.toRef(p?.value??{},"$each"),_=vue.computed(()=>d?.value?.$each??[]),K=Qe({$id:v.value,path:n,customMessages:r,rules:H??{},stateValue:T,index:R,options:c,storage:l,externalErrors:y,schemaErrors:_,initialState:vue.toRef(m.value??[],R),shortcuts:b,fieldName:V,schemaMode:$});return K||null}}).filter(i=>!!i),u.filter(i=>!e.value?.find(R=>i.$id===R.$id)).forEach((i,R)=>{l.deleteArrayStatus(v.value,R.toString());});}else S.value=[];}function h(){D=vue.watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?o():s();},{deep:Ve?1:true,flush:"pre"});}function P(){h(),C=vue.effectScope(),M=C.run(()=>{let u=vue.computed({get:()=>e.value,set(x){D(),e.value=x,h();}}),i=vue.computed(()=>f.value.$dirty&&(!S.value.length||S.value.every(x=>x.$dirty))),R=vue.computed(()=>f.value.$anyDirty||S.value.some(x=>x.$anyDirty)),T=vue.computed(()=>f.value.$invalid||S.value.some(x=>x.$invalid)),F=vue.computed(()=>(ee(f.value.$rules)?true:f.value.$correct)&&(!S.value.length||S.value.every(x=>x.$correct||x.$anyDirty&&!x.$invalid))),H=vue.computed(()=>f.value.$error||S.value.some(x=>x.$error)),y=vue.computed(()=>!(T.value||_.value)),_=vue.computed(()=>f.value.$pending||S.value.some(x=>x.$pending)),K=vue.computed(()=>!!S.value.length&&S.value.every(x=>x.$edited)),Z=vue.computed(()=>f.value.$anyEdited||S.value.some(x=>x.$anyEdited)),J=vue.computed(()=>({$self:f.value.$errors,$each:S.value.map(x=>x.$errors)})),se=vue.computed(()=>({$self:f.value.$silentErrors,$each:S.value.map(x=>x.$silentErrors)})),g=vue.computed(()=>V);function k(){b?.collections&&Object.entries(b?.collections).forEach(([x,ue])=>{let le=vue.effectScope();A[x]=le.run(()=>{let pe=vue.ref();return vue.watchEffect(()=>{pe.value=ue(vue.reactive({$dirty:i,$error:H,$silentValue:u,$pending:_,$invalid:T,$correct:F,$errors:J,$ready:y,$silentErrors:se,$anyDirty:R,$name:g,$each:S,$self:f,$value:e,$edited:K,$anyEdited:Z}));}),pe}),O.push(le);});}let A={};return k(),{$dirty:i,$anyDirty:R,$invalid:T,$correct:F,$error:H,$pending:_,$errors:J,$silentErrors:se,$ready:y,$name:g,$shortcuts:A,$silentValue:u,$edited:K,$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 q(){D&&D(),f.value&&f.value.$unwatch(),S.value&&S.value.forEach(u=>{"$dirty"in u&&u.$unwatch();}),C.stop(),C=vue.effectScope(),w.stop(),w=vue.effectScope(true),O.forEach(u=>u.stop()),O=[];}function U(u=true,i=false){f.value.$touch(u,i),S.value.forEach(R=>{R.$touch(u,i);});}function X(u,i){if(q(),!i)if(u?.toInitialState)e.value=G(m.value);else if(u?.toState){let R;typeof u?.toState=="function"?R=u?.toState():R=u?.toState,m.value=G(R),e.value=G(R);}else m.value=G(e.value);f.value.$reset(),S.value.forEach(R=>{R.$reset(u,true);}),i||o();}async function I(){let u=e.value;try{return {result:(await Promise.allSettled([f.value.$validate(),...S.value.map(T=>T.$validate())])).every(T=>T.status==="fulfilled"?T.value.result===!0:!1),data:u}}catch{return {result:false,data:u}}}function B(){f.value.$clearExternalErrors(),S.value.forEach(u=>{u.$clearExternalErrors();});}function de(u=true){let i=S.value.map(R=>{if(Tt(R))return R.$extractDirtyFields(u)});return u&&i.every(R=>ee(R))&&(i=[]),i}let{$shortcuts:ye,...ie}=M;return vue.reactive({$self:f,...ie,...ye,$each:S,$value:e,$validate:I,$unwatch:q,$watch:P,$touch:U,$reset:X,$extractDirtyFields:de,$clearExternalErrors:B})}function Ne({rulesDef:e,state:t,path:r="",rootRules:n,externalErrors:l,schemaErrors:c,rootSchemaErrors:p,validationGroups:d,initialState:$,fieldName:m,...b}){let V=vue.effectScope(),C,M=[],w=null,a=null,O=null,v=null;async function D(u=true){let i=Object.entries(e.value),R=Object.fromEntries(i.filter(([y,_])=>!!_).map(([y,_])=>{if(_){let K=vue.toRef(t.value??{},y),Z=vue.toRef(()=>_),J=vue.toRef(l?.value??{},y),se=vue.computed(()=>c?.value?.[y]),g=vue.toRef($?.value??{},y);return [y,Ee({state:K,rulesDef:Z,path:r?`${r}.${y}`:y,externalErrors:J,schemaErrors:se,initialState:g,fieldName:y,...b})]}return []})),T=Object.fromEntries(Object.entries(vue.unref(l)??{}).filter(([y,_])=>!(y in e.value)&&!!_).map(([y])=>{let _=vue.toRef(t.value??{},y),K=vue.toRef(l?.value??{},y),Z=vue.computed(()=>c?.value?.[y]),J=vue.toRef($?.value??{},y);return [y,Ee({state:_,rulesDef:vue.computed(()=>({})),path:r?`${r}.${y}`:y,externalErrors:K,schemaErrors:Z,initialState:J,fieldName:y,...b})]})),F=Object.fromEntries(Object.entries(vue.unref(c)??{}).map(([y])=>{let _=vue.toRef(t.value??{},y),K=vue.toRef(l?.value??{},y),Z=vue.computed(()=>c?.value?.[y]),J=vue.toRef($?.value??{},y);return [y,Ee({state:_,rulesDef:vue.computed(()=>({})),path:r?`${r}.${y}`:y,externalErrors:K,schemaErrors:Z,initialState:J,fieldName:y,...b})]})),H=Object.fromEntries(Object.entries(t.value??{}).filter(([y])=>!(y in e.value)&&!(y in(T??{}))&&!(y in(F??{}))).map(([y])=>{let _=vue.toRef(t.value??{},y),K=vue.toRef(l?.value??{},y),Z=vue.computed(()=>c?.value?.[y]),J=vue.toRef($?.value??{},y);return [y,Ee({state:_,rulesDef:vue.computed(()=>({})),path:r?`${r}.${y}`:y,externalErrors:K,schemaErrors:Z,initialState:J,fieldName:y,...b})]}));f.value={...R,...T,...F,...H},u&&s();}let f=b.storage.getFieldsEntry(r);D();function S(){l&&(O=vue.watch(l,()=>{h(),D();},{deep:true}));}function o(){v=vue.watch(t,()=>{h(),D(),U(true,true);},{flush:"sync"});}function s(){n&&(w?.(),w=vue.watch(n,()=>{h(),D();},{deep:true,flush:"post"}),S()),p&&(a?.(),a=vue.watch(p,()=>{h(),D();},{deep:true,flush:"post"})),o(),C=V.run(()=>{let u=vue.computed({get:()=>t.value,set(W){h(),t.value=W,D();}}),i=vue.computed(()=>!!Object.entries(f.value).length&&Object.entries(f.value).every(([W,j])=>j?.$dirty)),R=vue.computed(()=>Object.entries(f.value).some(([W,j])=>j?.$anyDirty)),T=vue.computed(()=>Object.entries(f.value).some(([W,j])=>j?.$invalid)),F=vue.computed(()=>{let W=Object.entries(f.value).filter(([j,z])=>xt(z)?!z.$inactive:true);return W.length?W.every(([j,z])=>z?.$correct||z.$anyDirty&&!z.$invalid):false}),H=vue.computed(()=>R.value&&!J.value&&T.value),y=vue.computed(()=>vue.unref(b.options.rewardEarly)!=null?vue.unref(b.options.rewardEarly):false),_=vue.computed(()=>vue.unref(b.options.autoDirty)!=null?vue.unref(b.options.autoDirty):!y.value),K=vue.computed(()=>_.value?R.value&&!(T.value||J.value):!(T.value||J.value)),Z=vue.ref(false),J=vue.computed(()=>Z.value||Object.entries(f.value).some(([W,j])=>j?.$pending)),se=vue.computed(()=>Object.fromEntries(Object.entries(f.value).map(([W,j])=>[W,j?.$errors]))),g=vue.computed(()=>Object.fromEntries(Object.entries(f.value).map(([W,j])=>[W,j?.$silentErrors]))),k=vue.computed(()=>!!Object.entries(f.value).length&&Object.entries(f.value).every(([W,j])=>j?.$edited)),A=vue.computed(()=>Object.entries(f.value).some(([W,j])=>j?.$anyEdited)),x=vue.computed(()=>m);function ue(){b.shortcuts?.nested&&Object.entries(b.shortcuts.nested).forEach(([W,j])=>{let z=vue.effectScope();pe[W]=z.run(()=>{let me=vue.ref();return vue.watchEffect(()=>{me.value=j(vue.reactive({$dirty:i,$value:t,$silentValue:u,$error:H,$pending:J,$invalid:T,$correct:F,$ready:K,$anyDirty:R,$name:x,$silentErrors:g,$errors:se,$fields:f,$edited:k,$anyEdited:A}));}),me}),M.push(z);});}let le=vue.computed({get:()=>d?Object.fromEntries(Object.entries(d?.(f.value)??{}).map(([W,j])=>j.length?[W,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$correct"].map(z=>[z,mt(j,z)])),...Object.fromEntries(["$errors","$silentErrors"].map(z=>[z,yt(j,z)]))}]:[])):{},set(){}}),pe={};return ue(),{$dirty:i,$anyDirty:R,$invalid:T,$correct:F,$error:H,$pending:J,$errors:se,$silentErrors:g,$ready:K,$name:x,$shortcuts:pe,$groups:le,$silentValue:u,$edited:k,$anyEdited:A,$localPending:Z}});}function h(){w?.(),O?.(),v?.(),a?.(),M=[],C={},f.value&&Object.entries(f.value).forEach(([u,i])=>{i.$unwatch();});}function P(){Object.entries(f.value).forEach(([u,i])=>{i.$clearExternalErrors();});}function q(u,i){if(O?.(),h(),!i)if(u?.toInitialState)t.value=G({...$.value??{}});else if(u?.toState){let R;typeof u?.toState=="function"?R=u?.toState():R=u?.toState,$.value=G(R),t.value=G(R);}else $.value=G(t.value);Object.values(f.value).forEach(R=>{R.$reset(u,true);}),S(),i||D();}function U(u=true,i=false){Object.values(f.value).forEach(R=>{R.$touch(u,i);});}function X(u){return u.filter(([i,R])=>ae(R)?!(R&&typeof R=="object"&&"_null"in R)&&!ee(R):Array.isArray(R)?R.length:true)}function I(u=true){let i=Object.entries(f.value).map(([R,T])=>[R,T.$extractDirtyFields(u)]);return u&&(i=X(i)),Object.fromEntries(i)}async function B(){try{if(b.schemaMode)return b.onValidate?(U(!1),C.$localPending.value=!0,b.onValidate()):{result:!1,data:t.value};{let u=t.value;return {result:(await Promise.allSettled(Object.values(f.value).map(T=>T.$validate()))).every(T=>T.status==="fulfilled"?T.value.result===!0:!1),data:u}}}catch{return {result:false,data:t.value}}finally{C.$localPending.value=false;}}let{$shortcuts:de,$localPending:ye,...ie}=C;return vue.reactive({...ie,...de,$fields:f,$value:t,$reset:q,$touch:U,$validate:B,$unwatch:h,$watch:s,$clearExternalErrors:P,$extractDirtyFields:I})}function Ee({rulesDef:e,...t}){if(bt(e,t.state))return Pt({rulesDef:e,...t});if(ht(t.state,e)){if(je(t.state))return Ne({rulesDef:e,...t});{let n=vue.effectScope().run(()=>{let p=vue.toRef(t.state.value?t.state:vue.ref({}));return vue.watch(()=>t.state.value,d=>{p.value=d;},{deep:true}),vue.watch(p,d=>{t.state.value=d;},{deep:true}),{fakeState:p}}),{state:l,...c}=t;return Ne({rulesDef:e,...c,state:n.fakeState})}}else if(Et(e))return _e({rulesDef:e,...t})}function Ce({initialState:e,options:t,scopeRules:r,state:n,customRules:l,shortcuts:c,schemaErrors:p,schemaMode:d=false,onValidate:$}){let m=ze(),b=vue.ref();return b.value=Ne({rootRules:r,rulesDef:r,state:n,customMessages:l?.(),storage:m,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:c,fieldName:"root",path:"",schemaErrors:p,rootSchemaErrors:p,schemaMode:d,onValidate:$}),vue.getCurrentScope()&&vue.onScopeDispose(()=>{b.value?.$unwatch();}),vue.reactive({regle:b})}function et(e,t,r){let n={autoDirty:t?.autoDirty,lazy:t?.lazy,rewardEarly:t?.rewardEarly,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange};function l(c,p,d){let $=vue.isRef(p)?p:vue.computed(typeof p=="function"?p:()=>p),m={...n,...d},b=vue.isRef(c)?c:vue.ref(c),V=vue.ref({...G(b.value)});return {r$:Ce({scopeRules:$,state:b,options:m,initialState:V,customRules:e,shortcuts:r}).regle}}return l}var Ge=et();function tt(){function e(t,r){return r}return e}var rt=tt();function jt({rules:e,modifiers:t,shortcuts:r}){let n=et(e,t,r),l=tt();return {useRegle:n,inferRules:l}}function Ae(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,h])=>e[s].$value=h);}}),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,h])=>e[s].$silentValue=h);}}),c=vue.computed(()=>{let o=Object.entries(e);return !!o.length&&o.every(([s,h])=>h?.$dirty)}),p=vue.computed(()=>Object.entries(e).some(([o,s])=>s?.$anyDirty)),d=vue.computed(()=>Object.entries(e).some(([o,s])=>s?.$invalid)),$=vue.computed(()=>{let o=Object.entries(e);return !!o.length&&o.every(([s,h])=>h?.$correct||h.$anyDirty&&!h.$invalid)}),m=vue.computed(()=>Object.entries(e).some(([o,s])=>s?.$error)),b=vue.computed(()=>{let o=Object.entries(e);return !!o.length&&o.every(([s,h])=>h?.$ready)}),V=vue.computed(()=>Object.entries(e).some(([o,s])=>s?.$pending)),C=vue.computed(()=>r?Object.entries(e).map(([o,s])=>s.$errors):Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$errors]))),M=vue.computed(()=>r?Object.entries(e).map(([o,s])=>s.$silentErrors):Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$silentErrors]))),w=vue.computed(()=>{let o=Object.entries(e);return !!o.length&&o.every(([s,h])=>h?.$edited)}),a=vue.computed(()=>Object.entries(e).some(([o,s])=>s?.$anyEdited)),O=vue.computed(()=>r?Object.values(e):e);function v(o){Object.values(e).forEach(s=>{s.$reset(o);});}function E(){Object.values(e).forEach(o=>{o.$touch();});}function D(o=true){return Object.values(e).map(s=>s.$extractDirtyFields(o))}function f(){Object.values(e).forEach(o=>{o.$clearExternalErrors();});}async function S(){try{let o=n.value;return {result:(await Promise.allSettled(Object.values(e).map(P=>P.$validate()))).every(P=>P.status==="fulfilled"?P.value.result===!0:!1),data:o}}catch{return {result:false,data:n.value}}}return vue.reactive({...!r&&{$silentValue:l},$errors:C,$silentErrors:M,$instances:O,$value:n,$dirty:c,$anyDirty:p,$invalid:d,$correct:$,$error:m,$pending:V,$ready:b,$edited:w,$anyEdited:a,$reset:v,$touch:E,$validate:S,$extractDirtyFields:D,$clearExternalErrors:f})}function _t(e){function t(r){let n=vue.computed(()=>vue.toValue(r));p();let l=vue.ref(d(e.value)),c=vue.reactive({r$:l});function p(){n.value&&!e.value[n.value]&&(e.value[n.value]={});}vue.watch(n,p),vue.watch(e,$=>{l.value=d($);},{deep:true});function d($){if(n.value){let m=$[n.value]??{};return Ae(m,true)}else return Ae($["~~global"]??{},true)}return {r$:c.r$}}return {useCollectScope:t}}function Gt(e,t){let r=t??Ge;return {useScopedRegle:(l,c,p)=>{let{namespace:d,...$}=p??{},m=vue.computed(()=>vue.toValue(d)),b=vue.ref(`${Object.keys(e.value).length+1}-${Se()}`),V=vue.computed(()=>`instance-${b.value}`),{r$:C}=r(l,c,$);w(),$t(M),vue.watch(m,(a,O)=>{M(O),w();}),vue.getCurrentInstance()&&vue.onMounted(()=>{let a=vue.getCurrentInstance();typeof window<"u"&&a?.proxy?.$el?.parentElement&&document.documentElement&&!document.documentElement.contains(a?.proxy?.$el?.parentElement)&&M();});function M(a){let O=a??m.value;O?e.value[O]&&delete e.value[O][V.value]:e.value["~~global"][V.value]&&delete e.value["~~global"][V.value];}function w(){m.value?(e.value[m.value]||(e.value[m.value]={}),e.value[m.value][V.value]=C):(e.value["~~global"]||(e.value["~~global"]={}),e.value["~~global"][V.value]=C);}return {r$:C,dispose:M,register:w}}}}function nt(e){let r=(e?.customStore?()=>(e.customStore&&(e.customStore?.value["~~global"]?e.customStore?.value&&(e.customStore.value={"~~global":{}}):e.customStore.value["~~global"]={}),e.customStore):St(()=>vue.ref({"~~global":{}})))(),{useScopedRegle:n}=Gt(r,e?.customUseRegle),{useCollectScope:l}=_t(r);return {useScopedRegle:n,useCollectScope:l}}
2
+ exports.InternalRuleType=Le;exports.createRule=He;exports.createScopedUseRegle=nt;exports.defineRegleConfig=jt;exports.inferRules=rt;exports.mergeRegles=Ae;exports.unwrapRuleParameters=te;exports.useRegle=Ge;exports.useRootStorage=Ce;
@@ -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 ee(e,t=true){return e==null?true:e instanceof Date?isNaN(e.getTime()):e.constructor.name=="File"||e.constructor.name=="FileList"?e.size<=0:Array.isArray(e)?t?e.length===0:false:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}var 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};
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.constructor.name=="File"||e.constructor.name=="FileList"?e.size<=0:Array.isArray(e)?t?e.length===0:false:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}var pt=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 G(e){let t=e,r={}.toString.call(e).slice(8,-1);if(r=="Set"&&(t=new Set([...e].map(n=>G(n)))),r=="Map"&&(t=new Map([...e].map(n=>[G(n[0]),G(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]=G(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 We(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 Fe(e,t,r){let n,l=(...c)=>new Promise(p=>{clearTimeout(n),n=setTimeout(()=>{n=undefined,Promise.resolve(e.apply(this,[...c])).then(p);},t);});return l.cancel=()=>{clearTimeout(n),n=undefined;},l}var Le=(r=>(r.Inline="__inline",r.Async="__async",r))(Le||{});function mt(e,t){return e.some(r=>r[t])}function yt(e,t){return e.reduce((r,n)=>{let l=n[t]||[];return r.concat(l)},[])}function te(e){try{return e.map(t=>toValue(t))}catch{return []}}function gt(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(p=>p.trim()).filter(p=>p.length>0).length:0}function Be(e,...t){let{validator:r,type:n}=e,l=n==="__async"||r.constructor.name==="AsyncFunction";return {...{validator(d,...$){return e.validator(d,...te($.length?$:t))},message(d){return typeof e.message=="function"?e.message({...d,$params:te(d?.$params?.length?d.$params:t)}):e.message},active(d){return typeof e.active=="function"?e.active({...d,$params:te(d?.$params?.length?d.$params:t)}):e.active??true},tooltip(d){return typeof e.tooltip=="function"?e.tooltip({...d,$params:te(d?.$params?.length?d.$params:t)}):e.tooltip??[]},exec(d){let $=e.validator(d,...te(t)),m;return $ instanceof Promise?$.then(b=>(m=b,typeof m=="object"&&"$valid"in m?m.$valid:typeof m=="boolean"?m:false)):(m=$,typeof m=="object"&&"$valid"in m?m.$valid:typeof m=="boolean"?m:false)}},_validator:e.validator,_message:e.message,_active:e.active,_tooltip:e.tooltip,_type:e.type,_message_patched:false,_tooltip_patched:false,_async:l,_params:gt(t),_brand:pt}}function He(e){if(typeof e.validator=="function"){let r=Be(e,...[]),n=e.async??e.validator.constructor.name==="AsyncFunction";if(vt(e.validator)>1){let l=function(...c){return Be(e,...c)};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 ze(){let e=shallowRef(new Map),t=shallowRef(new Map),r=shallowRef(new Map),n=shallowRef(new Map),l=shallowRef(new Map),c=shallowRef(new Map);function p(v){let E=t.value.get(v);if(E)return E;{let D=ref({});return t.value.set(v,D),D}}function d(v){let E=r.value.get(v);if(E)return E;{let D=ref([]);return r.value.set(v,D),D}}function $(v,E,D){c.value.set(`${v}-${E}`,D);}function m(v,E){return c.value.get(`${v}-${E}`)}function b(v,E){v&&E!=null&&c.value.delete(`${v}-${E}`);}function V(v,E){n.value.set(v,E);}function C(v){return n.value.get(v)??false}function M(v,E){e.value.set(v,E);}function w(v,E){let D=e.value.get(v);return D?a(E,D)?{valid:true}:{valid:false}:undefined}function a(v,E){let D=Object.keys(E),f=Object.keys(v);return f.length!==D.length||!f.every(o=>D.includes(o))?false:f.every(o=>{let s=v[o],h=E[o];return !h||!s||typeof s=="function"||typeof h=="function"||typeof s=="number"||typeof s=="boolean"?false:s._params?s._params?.every((P,q)=>{if(typeof h=="number"||typeof h=="boolean")return true;{let U=te(h._params),X=te(s._params);return U?.[q]===X?.[q]}}):true})}function O(v){let E=l.value.get(v);if(E)return E;{let D=ref(false),f=ref(true),S=ref({}),o=ref(false);return l.value.set(v,{$pending:D,$valid:f,$metadata:S,$validating:o}),{$pending:D,$valid:f,$metadata:S,$validating:o}}}return getCurrentScope()&&onScopeDispose(()=>{e.value.clear(),t.value.clear(),r.value.clear(),n.value.clear(),l.value.clear(),c.value.clear();}),{addRuleDeclEntry:M,setDirtyEntry:V,checkRuleDeclEntry:w,getDirtyState:C,trySetRuleStatusRef:O,getFieldsEntry:p,getCollectionsEntry:d,getArrayStatus:m,addArrayStatus:$,deleteArrayStatus:b,arrayStatusStorage:c}}function je(e){return ae(e.value)}function qe(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 Xt(e,t){let r=String(e).split("."),n=String(t).split(".");for(let l=0;l<Math.min(r.length,n.length);l++){let c=Number(r[l]),p=Number(n[l]);if(c>p)return 1;if(p>c)return -1;if(!isNaN(c)&&isNaN(p))return 1;if(isNaN(c)&&!isNaN(p))return -1}return 0}var Ve=Xt(version,"3.5.0")!==-1;function Zt(){return Math.floor(Math.random()*Date.now()).toString()}function Se(){return typeof window>"u"?Zt():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function $t(e){return getCurrentScope()?(onScopeDispose(e),true):false}function St(e){let t=false,r,n=effectScope(true);return (...l)=>(t||(r=n.run(()=>e(...l)),t=true),r)}function ht(e,t){return je(e)||ae(t.value)&&!ee(t.value)&&!Object.entries(t.value).some(([r,n])=>we(n)||typeof n=="function")}function bt(e,t){return !!e.value&&ae(e.value)&&"$each"in e.value||Array.isArray(t.value)}function Et(e){return !!e.value&&ae(e.value)}function we(e){return ae(e)&&"_validator"in e}function Oe(e){return typeof e.value!="function"}function Tt(e){return ae(e)&&"$fields"in e}function xt(e){return !!e&&"$rules"in e}function Ke({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 Dt({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 Ct({customMessages:e,rule:t,ruleKey:r,state:n,path:l,storage:c,$debounce:p,modifiers:d}){let $=effectScope(),m={},b,V=ref(false),{$pending:C,$valid:M,$metadata:w,$validating:a}=c.trySetRuleStatusRef(`${l}.${r}`);function O(){$=effectScope(),m=$.run(()=>{let s=ref(false),h=ref(false),P=ref(true),q=ref(false),U=ref(false),X=computed(()=>({$value:n.value,$error:h.value,$dirty:s.value,$pending:q.value,$correct:U.value,$invalid:P.value,$rule:{$valid:M.value,$invalid:!M.value,$pending:C.value},$params:i.value,...w.value})),I=computed(()=>Oe(t)?typeof t.value.active=="function"?t.value.active(X.value):!!t.value.active:true);function B(T){let F="",H=e?e[r]?.[T]:undefined;if(H&&(typeof H=="function"?F=H(X.value):F=H),Oe(t)){let y=`_${T}_patched`;H&&!t.value[y]||(typeof t.value[T]=="function"?F=t.value[T](X.value):F=t.value[T]??"");}return F}let de=computed(()=>{let T=B("message");return ee(T)&&(T="This field is not valid"),T}),ye=computed(()=>B("tooltip")),ie=computed(()=>Oe(t)&&t.value.type?t.value.type:r),u=computed(()=>Oe(t)?t.value.validator:t.value),i=computed(()=>typeof t.value=="function"?[]:te(t.value._params??[])),R=computed(()=>`${l}.${ie.value}`);return {$active:I,$message:de,$type:ie,$validator:u,$params:i,$path:R,$tooltip:ye,$fieldCorrect:U,$fieldError:h,$fieldDirty:s,$fieldPending:q,$fieldInvalid:P}}),b=watch(m?.$params,()=>{(d.$autoDirty.value||d.$rewardEarly.value&&m.$fieldError.value)&&f();});}O();function v(){M.value=true,m.$fieldDirty.value&&(C.value=true);}async function E(){let s=false;try{let h=m.$validator.value;if(typeof h!="function")return console.error(`${l}: Incorrect rule format, it needs to be either a function or created with "createRule".`),!1;let P=h(n.value,...m.$params.value),q=n.value;v();let U;if(P instanceof Promise?U=await P:U=P,n.value!==q)return !0;if(typeof U=="boolean")s=U;else {let{$valid:X,...I}=U;s=X,w.value=I;}}catch{s=false;}finally{C.value=false;}return s}let D=Fe(E,p??200);async function f(){try{a.value=!0;let s=!1;if(we(t.value)&&t.value._async)s=await D();else {let h=m.$validator.value,P=h(n.value,...m.$params.value);if(P 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(P!=null)if(typeof P=="boolean")s=P;else {let{$valid:q,...U}=P;s=q,w.value=U;}}return M.value=s,s}catch{return false}finally{a.value=false;}}function S(){M.value=true,w.value={},C.value=false,a.value=false,O();}function o(){b(),$.stop(),$=effectScope();}return reactive({...m,$pending:C,$valid:M,$metadata:w,$haveAsync:V,$validating:a,$validate:f,$unwatch:o,$watch:O,$reset:S})}function _e({state:e,rulesDef:t,customMessages:r,path:n,fieldName:l,storage:c,options:p,externalErrors:d,schemaErrors:$,schemaMode:m,onUnwatch:b,$isArray:V,initialState:C,shortcuts:M}){let w=effectScope(),a,O=[],v,E,D,f,S,o=()=>{};function s(){let g=t.value,k=c.checkRuleDeclEntry(n,g);B.value=Object.fromEntries(Object.entries(g).filter(([A])=>A.startsWith("$"))),q(),I.value=Object.fromEntries(Object.entries(t.value).filter(([A])=>!A.startsWith("$")).map(([A,x])=>{if(x){let ue=toRef(()=>x);return [A,Ct({modifiers:{$autoDirty:a.$autoDirty,$rewardEarly:a.$rewardEarly},customMessages:r,rule:ue,ruleKey:A,state:e,path:n,storage:c,$debounce:B.value.$debounce})]}return []}).filter(A=>!!A.length)),a.processShortcuts(),h(),k?.valid!=null&&(a.$dirty.value=c.getDirtyState(n),(a.$dirty.value&&a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&o()),c.addRuleDeclEntry(n,g);}function h(){o=a.$debounce.value?Fe(X,a.$debounce.value??a.$haveAnyAsyncRule?100:0):X;}function P(){I.value&&Object.entries(I.value).forEach(([g,k])=>{k.$unwatch();}),D(),S?.(),a.$dirty.value&&c.setDirtyEntry(n,a.$dirty.value),v?.(),E?.(),w.stop(),w=effectScope(),O.forEach(g=>g.stop()),O=[],b?.(),f?.();}function q(){I.value&&Object.entries(I.value).forEach(([g,k])=>{k.$watch();}),a=w.run(()=>{let g=ref(false),k=ref(false),A=computed(()=>g.value),x=computed(()=>B.value.$debounce),ue=computed(()=>B.value.$lazy!=null?B.value.$lazy:unref(p.lazy)!=null?unref(p.lazy):false),le=computed(()=>B.value.$rewardEarly!=null?B.value.$rewardEarly:unref(p.rewardEarly)!=null?unref(p.rewardEarly):false),pe=computed(()=>B.value.$clearExternalErrorsOnChange!=null?B.value.$clearExternalErrorsOnChange:unref(p.clearExternalErrorsOnChange)!=null?unref(p.clearExternalErrorsOnChange):true),W=computed(()=>B.value.$autoDirty!=null?B.value.$autoDirty:unref(p.autoDirty)!=null?unref(p.autoDirty):!le.value),j=computed(()=>Object.entries(I.value).some(([oe,Q])=>Q.$validating)),z=computed({get:()=>e.value,set(oe){v(),e.value=oe,U();}}),me=computed(()=>ge.value&&!Ie.value&&g.value),at=computed(()=>Ke({field:{$rules:I.value,$error:me.value,$externalErrors:d?.value,$schemaErrors:$?.value}})),lt=computed(()=>Ke({field:{$rules:I.value,$error:me.value,$externalErrors:d?.value,$schemaErrors:$?.value},silent:true})),Ue=computed(()=>g.value?C.value instanceof Date&&e.value instanceof Date?We(C.value).getDate()!==We(e.value).getDate():C.value==null?!!e.value:Array.isArray(e.value)&&Array.isArray(C.value)?e.value.length!==C.value.length:C.value!==e.value:false),ot=computed(()=>Ue.value),st=computed(()=>Dt({field:{$rules:I.value}})),ut=computed(()=>W.value?A.value&&!(ge.value||Ie.value):!(ge.value||Ie.value)),Ie=computed(()=>k.value||!le.value?Object.entries(I.value).some(([oe,Q])=>Q.$pending):false),ge=computed(()=>d?.value?.length||$?.value?.length?true:Me.value?false:!le.value||le.value&&k.value?Object.entries(I.value).some(([oe,Q])=>!Q.$valid):false),it=computed(()=>l),Me=computed(()=>!!(ee(I.value)&&!m)),ct=computed(()=>d?.value?.length||Me.value?false:g.value&&!ee(e.value)&&!j.value?m?!$?.value?.length:Object.values(I.value).some(Q=>Q.$active)?Object.values(I.value).filter(Q=>Q.$active).every(Q=>Q.$valid):false:false),Ut=computed(()=>Object.entries(I.value).some(([oe,Q])=>Q.$haveAsync));function Wt(){M?.fields&&Object.entries(M.fields).forEach(([oe,Q])=>{let Rt=effectScope();ft[oe]=Rt.run(()=>{let dt=ref();return watchEffect(()=>{dt.value=Q(reactive({$dirty:g,$externalErrors:d?.value??[],$value:e,$silentValue:z,$rules:I,$error:me,$pending:Ie,$invalid:ge,$correct:ct,$errors:at,$ready:ut,$silentErrors:lt,$anyDirty:A,$tooltips:st,$name:it,$inactive:Me,$edited:Ue,$anyEdited:ot}));}),dt}),O.push(Rt);});}let ft={};return watch(ge,oe=>{oe||(k.value=false);}),{$error:me,$pending:Ie,$invalid:ge,$correct:ct,$debounce:x,$lazy:ue,$errors:at,$ready:ut,$silentErrors:lt,$rewardEarly:le,$autoDirty:W,$clearExternalErrorsOnChange:pe,$anyDirty:A,$edited:Ue,$anyEdited:ot,$name:it,$haveAnyAsyncRule:Ut,$shortcuts:ft,$validating:j,$tooltips:st,$dirty:g,triggerPunishment:k,processShortcuts:Wt,$silentValue:z,$inactive:Me}}),U(),D=watch(a.$dirty,g=>{c.setDirtyEntry(n,g),Object.values(I.value).forEach(k=>{k.$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;});}),E=watch(a.$invalid,g=>{a.$rewardEarly.value&&!g&&(a.triggerPunishment.value=false);}),f=watch(a.$haveAnyAsyncRule,h);}function U(){v=watch(e,()=>{a.$autoDirty.value&&(a.$dirty.value||(a.$dirty.value=true)),t.value instanceof Function&&s(),(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&o(),a.$rewardEarly.value!==true&&a.$clearExternalErrorsOnChange.value&&i();},{deep:V?true:Ve?1:true,flush:"post"});}function X(){Object.values(I.value).forEach(g=>{g.$validate();});}let I=ref({}),B=ref({});s();function de(g,k){if(i(),a.$dirty.value=false,a.triggerPunishment.value=false,c.setDirtyEntry(n,false),!k)if(g?.toInitialState)P(),e.value=G(C);else if(g?.toState){P();let A;typeof g?.toState=="function"?A=g?.toState():A=g?.toState,C.value=G(A),e.value=G(A);}else C.value=ae(e.value)?G(e.value):Array.isArray(e.value)?[...e.value]:e.value;k||Object.entries(I.value).forEach(([A,x])=>{x.$reset();}),!a.$lazy.value&&a.$autoDirty.value&&Object.values(I.value).forEach(A=>A.$validate()),k||s();}function ye(g=true,k=false){a.$dirty.value||(a.$dirty.value=true),k&&g?(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&o():g&&o();}async function ie(){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:!$?.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 u(g=true){return a.$dirty.value?e.value:g?{_null:true}:null}function i(){d?.value?.length&&(d.value=[]);}!a.$lazy.value&&!a.$dirty.value&&a.$autoDirty.value&&o();let{$shortcuts:R,$validating:T,$autoDirty:F,$rewardEarly:H,$clearExternalErrorsOnChange:y,$haveAnyAsyncRule:_,$debounce:K,$lazy:Z,triggerPunishment:J,...se}=a;return reactive({...se,$externalErrors:d,$value:e,$rules:I,...R,$reset:de,$touch:ye,$validate:ie,$unwatch:P,$watch:q,$extractDirtyFields:u,$clearExternalErrors:i})}function Qe({$id:e,path:t,index:r,options:n,storage:l,stateValue:c,customMessages:p,rules:d,externalErrors:$,schemaErrors:m,initialState:b,shortcuts:V,fieldName:C,schemaMode:M}){let w=d.$key?d.$key:Se(),a=`${t}.${String(w)}`;typeof c.value=="object"&&c.value!=null&&(c.value.$id?a=`${t}.${c.value.$id}`:Object.defineProperties(c.value,{$id:{value:w,enumerable:false,configurable:false,writable:false}}));let O=toRef($?.value??[],r),v=computed(()=>m?.value?.[r]),E=Ee({state:c,rulesDef:toRef(()=>d),customMessages:p,path:a,storage:l,options:n,externalErrors:O,schemaErrors:v,initialState:b,shortcuts:V,fieldName:C,schemaMode:M});if(E){let D=c.value?.$id;E.$id=D??String(w),l.addArrayStatus(e,E.$id,E);}return E}function Pt({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:c,externalErrors:p,schemaErrors:d,schemaMode:$,initialState:m,shortcuts:b,fieldName:V}){let C=effectScope(),M,w=effectScope(),a,O=[];if(!Array.isArray(e.value)&&!t.value.$each)return;let v=ref(),E=ref(e.value),D,f=ref({}),S=l.getCollectionsEntry(n);a=w.run(()=>({isPrimitiveArray:computed(()=>Array.isArray(e.value)&&e.value.length?e.value.every(i=>typeof i!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(i=>we(i)||typeof i=="function"):false)})),o(),P();function o(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?(v.value=Se(),Object.defineProperties(e.value,{$id:{value:v.value,enumerable:false,configurable:false,writable:false}})):e.value?.$id&&(v.value=e.value.$id)),E.value=f.value.$value,Array.isArray(e.value)&&!a.isPrimitiveArray.value?S.value=e.value.filter(u=>typeof u=="object").map((u,i)=>{let{scope:R,unwrapped:T}=qe(t.value.$each,toRef(()=>u),i);R&&O.push(R);let F=toRef(m.value??[],i),H=toRef(p?.value??{},"$each"),y=computed(()=>d?.value?.$each),_=Qe({$id:v.value,path:n,customMessages:r,rules:T??{},stateValue:toRef(()=>u),index:i,options:c,storage:l,externalErrors:H,schemaErrors:y,initialState:F,shortcuts:b,fieldName:V,schemaMode:$});return _||null}).filter(u=>!!u):S.value=[],f.value=_e({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:c,externalErrors:toRef(p?.value??{},"$self"),schemaErrors:computed(()=>d?.value?.$self),$isArray:true,initialState:m,shortcuts:b,fieldName:V,schemaMode:$});}function s(){if(Array.isArray(e.value)&&!a.isPrimitiveArray.value){let u=G(S.value);S.value=e.value.filter(i=>typeof i=="object").map((i,R)=>{let T=toRef(()=>i);if(i.$id&&S.value.find(F=>F.$id===i.$id)){let F=l.getArrayStatus(v.value,i.$id);return F?(F.$value=T,F):null}else {let{scope:F,unwrapped:H}=qe(t.value.$each,T,R);F&&O.push(F);let y=toRef(p?.value??{},"$each"),_=computed(()=>d?.value?.$each??[]),K=Qe({$id:v.value,path:n,customMessages:r,rules:H??{},stateValue:T,index:R,options:c,storage:l,externalErrors:y,schemaErrors:_,initialState:toRef(m.value??[],R),shortcuts:b,fieldName:V,schemaMode:$});return K||null}}).filter(i=>!!i),u.filter(i=>!e.value?.find(R=>i.$id===R.$id)).forEach((i,R)=>{l.deleteArrayStatus(v.value,R.toString());});}else S.value=[];}function h(){D=watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?o():s();},{deep:Ve?1:true,flush:"pre"});}function P(){h(),C=effectScope(),M=C.run(()=>{let u=computed({get:()=>e.value,set(x){D(),e.value=x,h();}}),i=computed(()=>f.value.$dirty&&(!S.value.length||S.value.every(x=>x.$dirty))),R=computed(()=>f.value.$anyDirty||S.value.some(x=>x.$anyDirty)),T=computed(()=>f.value.$invalid||S.value.some(x=>x.$invalid)),F=computed(()=>(ee(f.value.$rules)?true:f.value.$correct)&&(!S.value.length||S.value.every(x=>x.$correct||x.$anyDirty&&!x.$invalid))),H=computed(()=>f.value.$error||S.value.some(x=>x.$error)),y=computed(()=>!(T.value||_.value)),_=computed(()=>f.value.$pending||S.value.some(x=>x.$pending)),K=computed(()=>!!S.value.length&&S.value.every(x=>x.$edited)),Z=computed(()=>f.value.$anyEdited||S.value.some(x=>x.$anyEdited)),J=computed(()=>({$self:f.value.$errors,$each:S.value.map(x=>x.$errors)})),se=computed(()=>({$self:f.value.$silentErrors,$each:S.value.map(x=>x.$silentErrors)})),g=computed(()=>V);function k(){b?.collections&&Object.entries(b?.collections).forEach(([x,ue])=>{let le=effectScope();A[x]=le.run(()=>{let pe=ref();return watchEffect(()=>{pe.value=ue(reactive({$dirty:i,$error:H,$silentValue:u,$pending:_,$invalid:T,$correct:F,$errors:J,$ready:y,$silentErrors:se,$anyDirty:R,$name:g,$each:S,$self:f,$value:e,$edited:K,$anyEdited:Z}));}),pe}),O.push(le);});}let A={};return k(),{$dirty:i,$anyDirty:R,$invalid:T,$correct:F,$error:H,$pending:_,$errors:J,$silentErrors:se,$ready:y,$name:g,$shortcuts:A,$silentValue:u,$edited:K,$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 q(){D&&D(),f.value&&f.value.$unwatch(),S.value&&S.value.forEach(u=>{"$dirty"in u&&u.$unwatch();}),C.stop(),C=effectScope(),w.stop(),w=effectScope(true),O.forEach(u=>u.stop()),O=[];}function U(u=true,i=false){f.value.$touch(u,i),S.value.forEach(R=>{R.$touch(u,i);});}function X(u,i){if(q(),!i)if(u?.toInitialState)e.value=G(m.value);else if(u?.toState){let R;typeof u?.toState=="function"?R=u?.toState():R=u?.toState,m.value=G(R),e.value=G(R);}else m.value=G(e.value);f.value.$reset(),S.value.forEach(R=>{R.$reset(u,true);}),i||o();}async function I(){let u=e.value;try{return {result:(await Promise.allSettled([f.value.$validate(),...S.value.map(T=>T.$validate())])).every(T=>T.status==="fulfilled"?T.value.result===!0:!1),data:u}}catch{return {result:false,data:u}}}function B(){f.value.$clearExternalErrors(),S.value.forEach(u=>{u.$clearExternalErrors();});}function de(u=true){let i=S.value.map(R=>{if(Tt(R))return R.$extractDirtyFields(u)});return u&&i.every(R=>ee(R))&&(i=[]),i}let{$shortcuts:ye,...ie}=M;return reactive({$self:f,...ie,...ye,$each:S,$value:e,$validate:I,$unwatch:q,$watch:P,$touch:U,$reset:X,$extractDirtyFields:de,$clearExternalErrors:B})}function Ne({rulesDef:e,state:t,path:r="",rootRules:n,externalErrors:l,schemaErrors:c,rootSchemaErrors:p,validationGroups:d,initialState:$,fieldName:m,...b}){let V=effectScope(),C,M=[],w=null,a=null,O=null,v=null;async function D(u=true){let i=Object.entries(e.value),R=Object.fromEntries(i.filter(([y,_])=>!!_).map(([y,_])=>{if(_){let K=toRef(t.value??{},y),Z=toRef(()=>_),J=toRef(l?.value??{},y),se=computed(()=>c?.value?.[y]),g=toRef($?.value??{},y);return [y,Ee({state:K,rulesDef:Z,path:r?`${r}.${y}`:y,externalErrors:J,schemaErrors:se,initialState:g,fieldName:y,...b})]}return []})),T=Object.fromEntries(Object.entries(unref(l)??{}).filter(([y,_])=>!(y in e.value)&&!!_).map(([y])=>{let _=toRef(t.value??{},y),K=toRef(l?.value??{},y),Z=computed(()=>c?.value?.[y]),J=toRef($?.value??{},y);return [y,Ee({state:_,rulesDef:computed(()=>({})),path:r?`${r}.${y}`:y,externalErrors:K,schemaErrors:Z,initialState:J,fieldName:y,...b})]})),F=Object.fromEntries(Object.entries(unref(c)??{}).map(([y])=>{let _=toRef(t.value??{},y),K=toRef(l?.value??{},y),Z=computed(()=>c?.value?.[y]),J=toRef($?.value??{},y);return [y,Ee({state:_,rulesDef:computed(()=>({})),path:r?`${r}.${y}`:y,externalErrors:K,schemaErrors:Z,initialState:J,fieldName:y,...b})]})),H=Object.fromEntries(Object.entries(t.value??{}).filter(([y])=>!(y in e.value)&&!(y in(T??{}))&&!(y in(F??{}))).map(([y])=>{let _=toRef(t.value??{},y),K=toRef(l?.value??{},y),Z=computed(()=>c?.value?.[y]),J=toRef($?.value??{},y);return [y,Ee({state:_,rulesDef:computed(()=>({})),path:r?`${r}.${y}`:y,externalErrors:K,schemaErrors:Z,initialState:J,fieldName:y,...b})]}));f.value={...R,...T,...F,...H},u&&s();}let f=b.storage.getFieldsEntry(r);D();function S(){l&&(O=watch(l,()=>{h(),D();},{deep:true}));}function o(){v=watch(t,()=>{h(),D(),U(true,true);},{flush:"sync"});}function s(){n&&(w?.(),w=watch(n,()=>{h(),D();},{deep:true,flush:"post"}),S()),p&&(a?.(),a=watch(p,()=>{h(),D();},{deep:true,flush:"post"})),o(),C=V.run(()=>{let u=computed({get:()=>t.value,set(W){h(),t.value=W,D();}}),i=computed(()=>!!Object.entries(f.value).length&&Object.entries(f.value).every(([W,j])=>j?.$dirty)),R=computed(()=>Object.entries(f.value).some(([W,j])=>j?.$anyDirty)),T=computed(()=>Object.entries(f.value).some(([W,j])=>j?.$invalid)),F=computed(()=>{let W=Object.entries(f.value).filter(([j,z])=>xt(z)?!z.$inactive:true);return W.length?W.every(([j,z])=>z?.$correct||z.$anyDirty&&!z.$invalid):false}),H=computed(()=>R.value&&!J.value&&T.value),y=computed(()=>unref(b.options.rewardEarly)!=null?unref(b.options.rewardEarly):false),_=computed(()=>unref(b.options.autoDirty)!=null?unref(b.options.autoDirty):!y.value),K=computed(()=>_.value?R.value&&!(T.value||J.value):!(T.value||J.value)),Z=ref(false),J=computed(()=>Z.value||Object.entries(f.value).some(([W,j])=>j?.$pending)),se=computed(()=>Object.fromEntries(Object.entries(f.value).map(([W,j])=>[W,j?.$errors]))),g=computed(()=>Object.fromEntries(Object.entries(f.value).map(([W,j])=>[W,j?.$silentErrors]))),k=computed(()=>!!Object.entries(f.value).length&&Object.entries(f.value).every(([W,j])=>j?.$edited)),A=computed(()=>Object.entries(f.value).some(([W,j])=>j?.$anyEdited)),x=computed(()=>m);function ue(){b.shortcuts?.nested&&Object.entries(b.shortcuts.nested).forEach(([W,j])=>{let z=effectScope();pe[W]=z.run(()=>{let me=ref();return watchEffect(()=>{me.value=j(reactive({$dirty:i,$value:t,$silentValue:u,$error:H,$pending:J,$invalid:T,$correct:F,$ready:K,$anyDirty:R,$name:x,$silentErrors:g,$errors:se,$fields:f,$edited:k,$anyEdited:A}));}),me}),M.push(z);});}let le=computed({get:()=>d?Object.fromEntries(Object.entries(d?.(f.value)??{}).map(([W,j])=>j.length?[W,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$correct"].map(z=>[z,mt(j,z)])),...Object.fromEntries(["$errors","$silentErrors"].map(z=>[z,yt(j,z)]))}]:[])):{},set(){}}),pe={};return ue(),{$dirty:i,$anyDirty:R,$invalid:T,$correct:F,$error:H,$pending:J,$errors:se,$silentErrors:g,$ready:K,$name:x,$shortcuts:pe,$groups:le,$silentValue:u,$edited:k,$anyEdited:A,$localPending:Z}});}function h(){w?.(),O?.(),v?.(),a?.(),M=[],C={},f.value&&Object.entries(f.value).forEach(([u,i])=>{i.$unwatch();});}function P(){Object.entries(f.value).forEach(([u,i])=>{i.$clearExternalErrors();});}function q(u,i){if(O?.(),h(),!i)if(u?.toInitialState)t.value=G({...$.value??{}});else if(u?.toState){let R;typeof u?.toState=="function"?R=u?.toState():R=u?.toState,$.value=G(R),t.value=G(R);}else $.value=G(t.value);Object.values(f.value).forEach(R=>{R.$reset(u,true);}),S(),i||D();}function U(u=true,i=false){Object.values(f.value).forEach(R=>{R.$touch(u,i);});}function X(u){return u.filter(([i,R])=>ae(R)?!(R&&typeof R=="object"&&"_null"in R)&&!ee(R):Array.isArray(R)?R.length:true)}function I(u=true){let i=Object.entries(f.value).map(([R,T])=>[R,T.$extractDirtyFields(u)]);return u&&(i=X(i)),Object.fromEntries(i)}async function B(){try{if(b.schemaMode)return b.onValidate?(U(!1),C.$localPending.value=!0,b.onValidate()):{result:!1,data:t.value};{let u=t.value;return {result:(await Promise.allSettled(Object.values(f.value).map(T=>T.$validate()))).every(T=>T.status==="fulfilled"?T.value.result===!0:!1),data:u}}}catch{return {result:false,data:t.value}}finally{C.$localPending.value=false;}}let{$shortcuts:de,$localPending:ye,...ie}=C;return reactive({...ie,...de,$fields:f,$value:t,$reset:q,$touch:U,$validate:B,$unwatch:h,$watch:s,$clearExternalErrors:P,$extractDirtyFields:I})}function Ee({rulesDef:e,...t}){if(bt(e,t.state))return Pt({rulesDef:e,...t});if(ht(t.state,e)){if(je(t.state))return Ne({rulesDef:e,...t});{let n=effectScope().run(()=>{let p=toRef(t.state.value?t.state:ref({}));return watch(()=>t.state.value,d=>{p.value=d;},{deep:true}),watch(p,d=>{t.state.value=d;},{deep:true}),{fakeState:p}}),{state:l,...c}=t;return Ne({rulesDef:e,...c,state:n.fakeState})}}else if(Et(e))return _e({rulesDef:e,...t})}function Ce({initialState:e,options:t,scopeRules:r,state:n,customRules:l,shortcuts:c,schemaErrors:p,schemaMode:d=false,onValidate:$}){let m=ze(),b=ref();return b.value=Ne({rootRules:r,rulesDef:r,state:n,customMessages:l?.(),storage:m,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:c,fieldName:"root",path:"",schemaErrors:p,rootSchemaErrors:p,schemaMode:d,onValidate:$}),getCurrentScope()&&onScopeDispose(()=>{b.value?.$unwatch();}),reactive({regle:b})}function et(e,t,r){let n={autoDirty:t?.autoDirty,lazy:t?.lazy,rewardEarly:t?.rewardEarly,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange};function l(c,p,d){let $=isRef(p)?p:computed(typeof p=="function"?p:()=>p),m={...n,...d},b=isRef(c)?c:ref(c),V=ref({...G(b.value)});return {r$:Ce({scopeRules:$,state:b,options:m,initialState:V,customRules:e,shortcuts:r}).regle}}return l}var Ge=et();function tt(){function e(t,r){return r}return e}var rt=tt();function jt({rules:e,modifiers:t,shortcuts:r}){let n=et(e,t,r),l=tt();return {useRegle:n,inferRules:l}}function Ae(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,h])=>e[s].$value=h);}}),l=computed({get:()=>Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$silentValue])),set:o=>{typeof o=="object"&&Object.entries(o).forEach(([s,h])=>e[s].$silentValue=h);}}),c=computed(()=>{let o=Object.entries(e);return !!o.length&&o.every(([s,h])=>h?.$dirty)}),p=computed(()=>Object.entries(e).some(([o,s])=>s?.$anyDirty)),d=computed(()=>Object.entries(e).some(([o,s])=>s?.$invalid)),$=computed(()=>{let o=Object.entries(e);return !!o.length&&o.every(([s,h])=>h?.$correct||h.$anyDirty&&!h.$invalid)}),m=computed(()=>Object.entries(e).some(([o,s])=>s?.$error)),b=computed(()=>{let o=Object.entries(e);return !!o.length&&o.every(([s,h])=>h?.$ready)}),V=computed(()=>Object.entries(e).some(([o,s])=>s?.$pending)),C=computed(()=>r?Object.entries(e).map(([o,s])=>s.$errors):Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$errors]))),M=computed(()=>r?Object.entries(e).map(([o,s])=>s.$silentErrors):Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$silentErrors]))),w=computed(()=>{let o=Object.entries(e);return !!o.length&&o.every(([s,h])=>h?.$edited)}),a=computed(()=>Object.entries(e).some(([o,s])=>s?.$anyEdited)),O=computed(()=>r?Object.values(e):e);function v(o){Object.values(e).forEach(s=>{s.$reset(o);});}function E(){Object.values(e).forEach(o=>{o.$touch();});}function D(o=true){return Object.values(e).map(s=>s.$extractDirtyFields(o))}function f(){Object.values(e).forEach(o=>{o.$clearExternalErrors();});}async function S(){try{let o=n.value;return {result:(await Promise.allSettled(Object.values(e).map(P=>P.$validate()))).every(P=>P.status==="fulfilled"?P.value.result===!0:!1),data:o}}catch{return {result:false,data:n.value}}}return reactive({...!r&&{$silentValue:l},$errors:C,$silentErrors:M,$instances:O,$value:n,$dirty:c,$anyDirty:p,$invalid:d,$correct:$,$error:m,$pending:V,$ready:b,$edited:w,$anyEdited:a,$reset:v,$touch:E,$validate:S,$extractDirtyFields:D,$clearExternalErrors:f})}function _t(e){function t(r){let n=computed(()=>toValue(r));p();let l=ref(d(e.value)),c=reactive({r$:l});function p(){n.value&&!e.value[n.value]&&(e.value[n.value]={});}watch(n,p),watch(e,$=>{l.value=d($);},{deep:true});function d($){if(n.value){let m=$[n.value]??{};return Ae(m,true)}else return Ae($["~~global"]??{},true)}return {r$:c.r$}}return {useCollectScope:t}}function Gt(e,t){let r=t??Ge;return {useScopedRegle:(l,c,p)=>{let{namespace:d,...$}=p??{},m=computed(()=>toValue(d)),b=ref(`${Object.keys(e.value).length+1}-${Se()}`),V=computed(()=>`instance-${b.value}`),{r$:C}=r(l,c,$);w(),$t(M),watch(m,(a,O)=>{M(O),w();}),getCurrentInstance()&&onMounted(()=>{let a=getCurrentInstance();typeof window<"u"&&a?.proxy?.$el?.parentElement&&document.documentElement&&!document.documentElement.contains(a?.proxy?.$el?.parentElement)&&M();});function M(a){let O=a??m.value;O?e.value[O]&&delete e.value[O][V.value]:e.value["~~global"][V.value]&&delete e.value["~~global"][V.value];}function w(){m.value?(e.value[m.value]||(e.value[m.value]={}),e.value[m.value][V.value]=C):(e.value["~~global"]||(e.value["~~global"]={}),e.value["~~global"][V.value]=C);}return {r$:C,dispose:M,register:w}}}}function nt(e){let r=(e?.customStore?()=>(e.customStore&&(e.customStore?.value["~~global"]?e.customStore?.value&&(e.customStore.value={"~~global":{}}):e.customStore.value["~~global"]={}),e.customStore):St(()=>ref({"~~global":{}})))(),{useScopedRegle:n}=Gt(r,e?.customUseRegle),{useCollectScope:l}=_t(r);return {useScopedRegle:n,useCollectScope:l}}
2
+ export{Le as InternalRuleType,He as createRule,nt as createScopedUseRegle,jt as defineRegleConfig,rt as inferRules,Ae as mergeRegles,te as unwrapRuleParameters,Ge as useRegle,Ce as useRootStorage};
@@ -1098,20 +1098,42 @@ function createReactiveFieldStatus({
1098
1098
  const $rules = ref({});
1099
1099
  const $localOptions = ref({});
1100
1100
  createReactiveRulesResult();
1101
- function $reset() {
1101
+ function $reset(options2, fromParent) {
1102
1102
  $clearExternalErrors();
1103
1103
  scopeState.$dirty.value = false;
1104
1104
  scopeState.triggerPunishment.value = false;
1105
1105
  storage.setDirtyEntry(path, false);
1106
- initialState.value = isObject(state.value) ? cloneDeep(state.value) : Array.isArray(state.value) ? [...state.value] : state.value;
1107
- Object.entries($rules.value).forEach(([_, rule]) => {
1108
- rule.$reset();
1109
- });
1106
+ if (!fromParent) {
1107
+ if (options2?.toInitialState) {
1108
+ $unwatch();
1109
+ state.value = cloneDeep(initialState);
1110
+ } else if (options2?.toState) {
1111
+ $unwatch();
1112
+ let newInitialState;
1113
+ if (typeof options2?.toState === "function") {
1114
+ newInitialState = options2?.toState();
1115
+ } else {
1116
+ newInitialState = options2?.toState;
1117
+ }
1118
+ initialState.value = cloneDeep(newInitialState);
1119
+ state.value = cloneDeep(newInitialState);
1120
+ } else {
1121
+ initialState.value = isObject(state.value) ? cloneDeep(state.value) : Array.isArray(state.value) ? [...state.value] : state.value;
1122
+ }
1123
+ }
1124
+ if (!fromParent) {
1125
+ Object.entries($rules.value).forEach(([_, rule]) => {
1126
+ rule.$reset();
1127
+ });
1128
+ }
1110
1129
  if (!scopeState.$lazy.value && scopeState.$autoDirty.value) {
1111
1130
  Object.values($rules.value).forEach((rule) => {
1112
1131
  return rule.$validate();
1113
1132
  });
1114
1133
  }
1134
+ if (!fromParent) {
1135
+ createReactiveRulesResult();
1136
+ }
1115
1137
  }
1116
1138
  function $touch(runCommit = true, withConditions = false) {
1117
1139
  if (!scopeState.$dirty.value) {
@@ -1156,11 +1178,6 @@ function createReactiveFieldStatus({
1156
1178
  return { result: false, data: state.value };
1157
1179
  }
1158
1180
  }
1159
- function $resetAll() {
1160
- $unwatch();
1161
- state.value = cloneDeep(initialState);
1162
- $reset();
1163
- }
1164
1181
  function $extractDirtyFields(filterNullishValues = true) {
1165
1182
  if (scopeState.$dirty.value) {
1166
1183
  return state.value;
@@ -1201,7 +1218,6 @@ function createReactiveFieldStatus({
1201
1218
  $validate,
1202
1219
  $unwatch,
1203
1220
  $watch,
1204
- $resetAll,
1205
1221
  $extractDirtyFields,
1206
1222
  $clearExternalErrors
1207
1223
  });
@@ -1590,11 +1606,31 @@ function createReactiveCollectionStatus({
1590
1606
  $each.$touch(runCommit, withConditions);
1591
1607
  });
1592
1608
  }
1593
- function $reset() {
1609
+ function $reset(options2, fromParent) {
1610
+ $unwatch();
1611
+ if (!fromParent) {
1612
+ if (options2?.toInitialState) {
1613
+ state.value = cloneDeep(initialState.value);
1614
+ } else if (options2?.toState) {
1615
+ let newInitialState;
1616
+ if (typeof options2?.toState === "function") {
1617
+ newInitialState = options2?.toState();
1618
+ } else {
1619
+ newInitialState = options2?.toState;
1620
+ }
1621
+ initialState.value = cloneDeep(newInitialState);
1622
+ state.value = cloneDeep(newInitialState);
1623
+ } else {
1624
+ initialState.value = cloneDeep(state.value);
1625
+ }
1626
+ }
1594
1627
  $selfStatus.value.$reset();
1595
1628
  $eachStatus.value.forEach(($each) => {
1596
- $each.$reset();
1629
+ $each.$reset(options2, true);
1597
1630
  });
1631
+ if (!fromParent) {
1632
+ createStatus();
1633
+ }
1598
1634
  }
1599
1635
  async function $validate() {
1600
1636
  const data = state.value;
@@ -1638,11 +1674,6 @@ function createReactiveCollectionStatus({
1638
1674
  }
1639
1675
  return dirtyFields;
1640
1676
  }
1641
- function $resetAll() {
1642
- $unwatch();
1643
- state.value = cloneDeep(initialState.value);
1644
- $reset();
1645
- }
1646
1677
  const { $shortcuts, ...restScopeState } = scopeState;
1647
1678
  return reactive({
1648
1679
  $self: $selfStatus,
@@ -1655,7 +1686,6 @@ function createReactiveCollectionStatus({
1655
1686
  $watch,
1656
1687
  $touch,
1657
1688
  $reset,
1658
- $resetAll,
1659
1689
  $extractDirtyFields,
1660
1690
  $clearExternalErrors
1661
1691
  });
@@ -2030,25 +2060,38 @@ function createReactiveNestedStatus({
2030
2060
  field.$clearExternalErrors();
2031
2061
  });
2032
2062
  }
2033
- function $reset() {
2063
+ function $reset(options, fromParent) {
2034
2064
  $unwatchExternalErrors?.();
2065
+ $unwatch();
2066
+ if (!fromParent) {
2067
+ if (options?.toInitialState) {
2068
+ state.value = cloneDeep({ ...initialState.value ?? {} });
2069
+ } else if (options?.toState) {
2070
+ let newInitialState;
2071
+ if (typeof options?.toState === "function") {
2072
+ newInitialState = options?.toState();
2073
+ } else {
2074
+ newInitialState = options?.toState;
2075
+ }
2076
+ initialState.value = cloneDeep(newInitialState);
2077
+ state.value = cloneDeep(newInitialState);
2078
+ } else {
2079
+ initialState.value = cloneDeep(state.value);
2080
+ }
2081
+ }
2035
2082
  Object.values($fields.value).forEach((statusOrField) => {
2036
- statusOrField.$reset();
2083
+ statusOrField.$reset(options, true);
2037
2084
  });
2038
- initialState.value = { ...cloneDeep(state.value) };
2039
2085
  define$WatchExternalErrors();
2086
+ if (!fromParent) {
2087
+ createReactiveFieldsStatus();
2088
+ }
2040
2089
  }
2041
2090
  function $touch(runCommit = true, withConditions = false) {
2042
2091
  Object.values($fields.value).forEach((statusOrField) => {
2043
2092
  statusOrField.$touch(runCommit, withConditions);
2044
2093
  });
2045
2094
  }
2046
- async function $resetAll() {
2047
- $unwatch();
2048
- state.value = cloneDeep({ ...initialState.value ?? {} });
2049
- $reset();
2050
- createReactiveFieldsStatus();
2051
- }
2052
2095
  function filterNullishFields(fields) {
2053
2096
  return fields.filter(([key, value]) => {
2054
2097
  if (isObject(value)) {
@@ -2107,7 +2150,6 @@ function createReactiveNestedStatus({
2107
2150
  ...$shortcuts,
2108
2151
  $fields,
2109
2152
  $value: state,
2110
- $resetAll,
2111
2153
  $reset,
2112
2154
  $touch,
2113
2155
  $validate,
@@ -2365,9 +2407,9 @@ function mergeRegles(regles, _scoped) {
2365
2407
  return regles;
2366
2408
  }
2367
2409
  });
2368
- function $reset() {
2410
+ function $reset(options) {
2369
2411
  Object.values(regles).forEach((regle) => {
2370
- regle.$reset();
2412
+ regle.$reset(options);
2371
2413
  });
2372
2414
  }
2373
2415
  function $touch() {
@@ -2375,11 +2417,6 @@ function mergeRegles(regles, _scoped) {
2375
2417
  regle.$touch();
2376
2418
  });
2377
2419
  }
2378
- function $resetAll() {
2379
- Object.values(regles).forEach((regle) => {
2380
- regle.$resetAll();
2381
- });
2382
- }
2383
2420
  function $extractDirtyFields(filterNullishValues = true) {
2384
2421
  return Object.values(regles).map((regle) => regle.$extractDirtyFields(filterNullishValues));
2385
2422
  }
@@ -2425,7 +2462,6 @@ function mergeRegles(regles, _scoped) {
2425
2462
  $ready,
2426
2463
  $edited,
2427
2464
  $anyEdited,
2428
- $resetAll,
2429
2465
  $reset,
2430
2466
  $touch,
2431
2467
  $validate,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@regle/core",
3
- "version": "0.8.3",
3
+ "version": "0.9.0",
4
4
  "description": "Type safe form validation library for Vue 3",
5
5
  "peerDependencies": {
6
6
  "pinia": ">=2.2.5",