@regle/core 0.9.1 → 0.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -615,7 +615,7 @@ function createReactiveRuleStatus({
615
615
  });
616
616
  $unwatchState = vue.watch(scopeState?.$params, () => {
617
617
  if (modifiers.$autoDirty.value || modifiers.$rewardEarly.value && scopeState.$fieldError.value) {
618
- $validate();
618
+ $parse();
619
619
  }
620
620
  });
621
621
  }
@@ -661,7 +661,7 @@ function createReactiveRuleStatus({
661
661
  return ruleResult;
662
662
  }
663
663
  const $computeAsyncDebounce = debounce(computeAsyncResult, $debounce ?? 200);
664
- async function $validate() {
664
+ async function $parse() {
665
665
  try {
666
666
  $validating.value = true;
667
667
  let ruleResult = false;
@@ -713,7 +713,7 @@ function createReactiveRuleStatus({
713
713
  $metadata,
714
714
  $haveAsync,
715
715
  $validating,
716
- $validate,
716
+ $parse,
717
717
  $unwatch,
718
718
  $watch,
719
719
  $reset
@@ -735,7 +735,8 @@ function createReactiveFieldStatus({
735
735
  onUnwatch,
736
736
  $isArray,
737
737
  initialState,
738
- shortcuts
738
+ shortcuts,
739
+ onValidate
739
740
  }) {
740
741
  let scope = vue.effectScope();
741
742
  let scopeState;
@@ -1094,7 +1095,7 @@ function createReactiveFieldStatus({
1094
1095
  }
1095
1096
  function $commitHandler() {
1096
1097
  Object.values($rules.value).forEach((rule) => {
1097
- rule.$validate();
1098
+ rule.$parse();
1098
1099
  });
1099
1100
  }
1100
1101
  const $rules = vue.ref({});
@@ -1130,7 +1131,7 @@ function createReactiveFieldStatus({
1130
1131
  }
1131
1132
  if (!scopeState.$lazy.value && scopeState.$autoDirty.value) {
1132
1133
  Object.values($rules.value).forEach((rule) => {
1133
- return rule.$validate();
1134
+ return rule.$parse();
1134
1135
  });
1135
1136
  }
1136
1137
  if (!fromParent) {
@@ -1151,21 +1152,29 @@ function createReactiveFieldStatus({
1151
1152
  }
1152
1153
  async function $validate() {
1153
1154
  try {
1155
+ if (schemaMode) {
1156
+ if (onValidate) {
1157
+ $touch(false);
1158
+ return onValidate();
1159
+ } else {
1160
+ return { valid: false, data: state.value };
1161
+ }
1162
+ }
1154
1163
  const data = state.value;
1155
1164
  scopeState.triggerPunishment.value = true;
1156
1165
  if (!scopeState.$dirty.value) {
1157
1166
  scopeState.$dirty.value = true;
1158
1167
  } else if (scopeState.$autoDirty.value && scopeState.$dirty.value && !scopeState.$pending.value) {
1159
- return { result: !scopeState.$error.value, data };
1168
+ return { valid: !scopeState.$error.value, data };
1160
1169
  }
1161
1170
  if (schemaMode) {
1162
- return { result: !schemaErrors?.value?.length, data };
1171
+ return { valid: !schemaErrors?.value?.length, data };
1163
1172
  } else if (isEmpty($rules.value)) {
1164
- return { result: true, data };
1173
+ return { valid: true, data };
1165
1174
  }
1166
1175
  const results = await Promise.allSettled(
1167
1176
  Object.entries($rules.value).map(([key, rule]) => {
1168
- return rule.$validate();
1177
+ return rule.$parse();
1169
1178
  })
1170
1179
  );
1171
1180
  const validationResults = results.every((value) => {
@@ -1175,9 +1184,9 @@ function createReactiveFieldStatus({
1175
1184
  return false;
1176
1185
  }
1177
1186
  });
1178
- return { result: validationResults, data };
1187
+ return { valid: validationResults, data };
1179
1188
  } catch (e) {
1180
- return { result: false, data: state.value };
1189
+ return { valid: false, data: state.value };
1181
1190
  }
1182
1191
  }
1183
1192
  function $extractDirtyFields(filterNullishValues = true) {
@@ -1639,20 +1648,20 @@ function createReactiveCollectionStatus({
1639
1648
  try {
1640
1649
  const results = await Promise.allSettled([
1641
1650
  $selfStatus.value.$validate(),
1642
- ...$eachStatus.value.map((rule) => {
1643
- return rule.$validate();
1651
+ ...$eachStatus.value.map((status) => {
1652
+ return status.$validate();
1644
1653
  })
1645
1654
  ]);
1646
1655
  const validationResults = results.every((value) => {
1647
1656
  if (value.status === "fulfilled") {
1648
- return value.value.result === true;
1657
+ return value.value.valid === true;
1649
1658
  } else {
1650
1659
  return false;
1651
1660
  }
1652
1661
  });
1653
- return { result: validationResults, data };
1662
+ return { valid: validationResults, data };
1654
1663
  } catch (e) {
1655
- return { result: false, data };
1664
+ return { valid: false, data };
1656
1665
  }
1657
1666
  }
1658
1667
  function $clearExternalErrors() {
@@ -1886,7 +1895,7 @@ function createReactiveNestedStatus({
1886
1895
  });
1887
1896
  });
1888
1897
  const $invalid = vue.computed(() => {
1889
- return Object.entries($fields.value).some(([_, statusOrField]) => {
1898
+ return !!Object.entries($fields.value).length && Object.entries($fields.value).some(([_, statusOrField]) => {
1890
1899
  return statusOrField?.$invalid;
1891
1900
  });
1892
1901
  });
@@ -1904,7 +1913,11 @@ function createReactiveNestedStatus({
1904
1913
  }
1905
1914
  return false;
1906
1915
  });
1907
- const $error = vue.computed(() => $anyDirty.value && !$pending.value && $invalid.value);
1916
+ const $error = vue.computed(() => {
1917
+ return !!Object.entries($fields.value).length && Object.entries($fields.value).some(([_, statusOrField]) => {
1918
+ return statusOrField?.$error;
1919
+ });
1920
+ });
1908
1921
  const $rewardEarly = vue.computed(() => {
1909
1922
  if (vue.unref(commonArgs.options.rewardEarly) != null) {
1910
1923
  return vue.unref(commonArgs.options.rewardEarly);
@@ -2122,7 +2135,7 @@ function createReactiveNestedStatus({
2122
2135
  scopeState.$localPending.value = true;
2123
2136
  return commonArgs.onValidate();
2124
2137
  } else {
2125
- return { result: false, data: state.value };
2138
+ return { valid: false, data: state.value };
2126
2139
  }
2127
2140
  } else {
2128
2141
  const data = state.value;
@@ -2133,15 +2146,15 @@ function createReactiveNestedStatus({
2133
2146
  );
2134
2147
  const validationResults = results.every((value) => {
2135
2148
  if (value.status === "fulfilled") {
2136
- return value.value.result === true;
2149
+ return value.value.valid === true;
2137
2150
  } else {
2138
2151
  return false;
2139
2152
  }
2140
2153
  });
2141
- return { result: validationResults, data };
2154
+ return { valid: validationResults, data };
2142
2155
  }
2143
2156
  } catch (e) {
2144
- return { result: false, data: state.value };
2157
+ return { valid: false, data: state.value };
2145
2158
  } finally {
2146
2159
  scopeState.$localPending.value = false;
2147
2160
  }
@@ -2226,24 +2239,42 @@ function useRootStorage({
2226
2239
  }) {
2227
2240
  const storage = useStorage();
2228
2241
  const regle = vue.ref();
2229
- regle.value = createReactiveNestedStatus({
2230
- rootRules: scopeRules,
2231
- rulesDef: scopeRules,
2232
- state,
2233
- customMessages: customRules?.(),
2234
- storage,
2235
- options,
2236
- externalErrors: options.externalErrors,
2237
- validationGroups: options.validationGroups,
2238
- initialState,
2239
- shortcuts,
2240
- fieldName: "root",
2241
- path: "",
2242
- schemaErrors,
2243
- rootSchemaErrors: schemaErrors,
2244
- schemaMode,
2245
- onValidate
2246
- });
2242
+ if (isNestedRulesDef(state, scopeRules)) {
2243
+ regle.value = createReactiveNestedStatus({
2244
+ rootRules: scopeRules,
2245
+ rulesDef: scopeRules,
2246
+ state,
2247
+ customMessages: customRules?.(),
2248
+ storage,
2249
+ options,
2250
+ externalErrors: options.externalErrors,
2251
+ validationGroups: options.validationGroups,
2252
+ initialState,
2253
+ shortcuts,
2254
+ fieldName: "root",
2255
+ path: "",
2256
+ schemaErrors,
2257
+ rootSchemaErrors: schemaErrors,
2258
+ schemaMode,
2259
+ onValidate
2260
+ });
2261
+ } else if (isValidatorRulesDef(scopeRules)) {
2262
+ regle.value = createReactiveFieldStatus({
2263
+ rulesDef: scopeRules,
2264
+ state,
2265
+ customMessages: customRules?.(),
2266
+ storage,
2267
+ options,
2268
+ externalErrors: options.externalErrors,
2269
+ initialState,
2270
+ shortcuts,
2271
+ fieldName: "root",
2272
+ path: "",
2273
+ schemaMode,
2274
+ schemaErrors,
2275
+ onValidate
2276
+ });
2277
+ }
2247
2278
  if (vue.getCurrentScope()) {
2248
2279
  vue.onScopeDispose(() => {
2249
2280
  regle.value?.$unwatch();
@@ -2267,7 +2298,9 @@ function createUseRegleComposable(customRules, options, shortcuts) {
2267
2298
  ...options2
2268
2299
  };
2269
2300
  const processedState = vue.isRef(state) ? state : vue.ref(state);
2270
- const initialState = vue.ref({ ...cloneDeep(processedState.value) });
2301
+ const initialState = vue.ref(
2302
+ isObject(processedState.value) ? { ...cloneDeep(processedState.value) } : cloneDeep(processedState.value)
2303
+ );
2271
2304
  const regle = useRootStorage({
2272
2305
  scopeRules,
2273
2306
  state: processedState,
@@ -2437,14 +2470,14 @@ function mergeRegles(regles, _scoped) {
2437
2470
  );
2438
2471
  const validationResults = results.every((value) => {
2439
2472
  if (value.status === "fulfilled") {
2440
- return value.value.result === true;
2473
+ return value.value.valid === true;
2441
2474
  } else {
2442
2475
  return false;
2443
2476
  }
2444
2477
  });
2445
- return { result: validationResults, data };
2478
+ return { valid: validationResults, data };
2446
2479
  } catch (e) {
2447
- return { result: false, data: $value.value };
2480
+ return { valid: false, data: $value.value };
2448
2481
  }
2449
2482
  }
2450
2483
  return vue.reactive({
@@ -620,6 +620,14 @@ type Regle<TState extends Record<string, any> = EmptyObject, TRules extends Regl
620
620
  */
621
621
  r$: Raw<RegleRoot<TState, TRules, TValidationGroups, TShortcuts>>;
622
622
  } & TAdditionalReturnProperties;
623
+ type RegleSingleField<TState extends Maybe<PrimitiveTypes> = any, TRules extends RegleRuleDecl<NonNullable<TState>> = EmptyObject, TShortcuts extends RegleShortcutDefinition = {}, TAdditionalReturnProperties extends Record<string, any> = {}> = {
624
+ /**
625
+ * r$ is a reactive object containing the values, errors, dirty state and all the necessary validations properties you'll need to display informations.
626
+ *
627
+ * To see the list of properties: {@link https://reglejs.dev/core-concepts/validation-properties}
628
+ */
629
+ r$: Raw<RegleFieldStatus<TState, TRules, TShortcuts>>;
630
+ } & TAdditionalReturnProperties;
623
631
  type isDeepExact<T, U> = {
624
632
  [K in keyof T]-?: CheckDeepExact<NonNullable<T[K]>, K extends keyof U ? NonNullable<U[K]> : never>;
625
633
  }[keyof T] extends true ? true : false;
@@ -655,7 +663,16 @@ type ResetOptions<TState extends unknown> = RequireOneOrNone<{
655
663
  toState?: TState | (() => TState);
656
664
  }, 'toInitialState' | 'toState'>;
657
665
 
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>;
666
+ interface useRegleFn<TCustomRules extends Partial<AllRulesDeclarations>, TShortcuts extends RegleShortcutDefinition<any> = never, TAdditionalReturnProperties extends Record<string, any> = {}, TAdditionalOptions extends Record<string, any> = {}> {
667
+ /**
668
+ * Primitive parameter
669
+ * */
670
+ <TState extends Maybe<PrimitiveTypes>, TRules extends RegleRuleDecl<NonNullable<TState>, TCustomRules>>(state: MaybeRef<TState>, rulesFactory: MaybeRefOrGetter<TRules>, options?: Partial<DeepMaybeRef<RegleBehaviourOptions>> & TAdditionalOptions): RegleSingleField<TState, TRules, TShortcuts, TAdditionalReturnProperties>;
671
+ /**
672
+ * Object parameter
673
+ * */
674
+ <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>;
675
+ }
659
676
  /**
660
677
  * useRegle serves as the foundation for validation logic.
661
678
  *
@@ -692,16 +709,16 @@ declare const inferRules: inferRulesFn<Partial<AllRulesDeclarations>>;
692
709
 
693
710
  declare function useRootStorage({ initialState, options, scopeRules, state, customRules, shortcuts, schemaErrors, schemaMode, onValidate, }: {
694
711
  scopeRules: Ref<$InternalReglePartialRuleTree>;
695
- state: Ref<Record<string, any>>;
712
+ state: Ref<Record<string, any> | PrimitiveTypes>;
696
713
  options: ResolvedRegleBehaviourOptions;
697
- initialState: Ref<Record<string, any>>;
714
+ initialState: Ref<Record<string, any> | PrimitiveTypes>;
698
715
  customRules?: () => CustomRulesDeclarationTree;
699
716
  shortcuts: RegleShortcutDefinition | undefined;
700
- schemaErrors?: Ref<Partial<$InternalRegleErrorTree> | undefined>;
717
+ schemaErrors?: Ref<any | undefined>;
701
718
  schemaMode?: boolean;
702
719
  onValidate?: () => Promise<$InternalRegleResult>;
703
720
  }): {
704
- regle: $InternalRegleStatus | undefined;
721
+ regle: $InternalRegleStatusType | undefined;
705
722
  };
706
723
 
707
724
  type InferRegleRoot<T extends (...args: any[]) => Regle<any, any, any, any>> = T extends (...args: any[]) => infer U ? U extends Regle<any, any, any, any> ? Prettify<U['r$']> : never : never;
@@ -1466,14 +1483,14 @@ type PartialFormState<TState extends Record<string, any>> = [unknown] extends [T
1466
1483
  [K in keyof TState as ExtendOnlyRealRecord<TState[K]> extends true ? K : TState[K] extends Array<any> ? K : never]: NonNullable<TState[K]> extends Array<infer U extends Record<string, any>> ? PartialFormState<U>[] : PartialFormState<TState[K]>;
1467
1484
  }>;
1468
1485
  type RegleResult<Data extends Record<string, any> | any[] | unknown, TRules extends ReglePartialRuleTree<any>> = {
1469
- result: false;
1486
+ valid: false;
1470
1487
  data: NonNullable<Data> extends Date | File ? Maybe<Data> : NonNullable<Data> extends Array<infer U extends Record<string, any>> ? PartialFormState<U>[] : NonNullable<Data> extends Record<string, any> ? PartialFormState<NonNullable<Data>> : Maybe<Data>;
1471
1488
  } | {
1472
- result: true;
1489
+ valid: true;
1473
1490
  data: Data extends Array<infer U extends Record<string, any>> ? DeepSafeFormState<U, TRules>[] : Data extends Date | File ? SafeFieldProperty<Data, TRules> : Data extends Record<string, any> ? DeepSafeFormState<Data, TRules> : SafeFieldProperty<Data, TRules>;
1474
1491
  };
1475
1492
  type $InternalRegleResult = {
1476
- result: boolean;
1493
+ valid: boolean;
1477
1494
  data: any;
1478
1495
  };
1479
1496
 
@@ -1696,7 +1713,7 @@ type RegleRuleStatus<TValue = any, TParams extends any[] = any[], TMetadata exte
1696
1713
  /** Contains the metadata returned by the validator function. */
1697
1714
  readonly $metadata: TMetadata;
1698
1715
  /** Run the rule validator and compute its properties like $message and $active */
1699
- $validate(): Promise<boolean>;
1716
+ $parse(): Promise<boolean>;
1700
1717
  /** Reset the $valid, $metadata and $pending states */
1701
1718
  $reset(): void;
1702
1719
  /** Returns the original rule validator function. */
@@ -1729,7 +1746,7 @@ interface $InternalRegleRuleStatus {
1729
1746
  $fieldCorrect: boolean;
1730
1747
  $fieldError: boolean;
1731
1748
  $validator(value: any, ...args: any[]): RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition>;
1732
- $validate(): Promise<boolean>;
1749
+ $parse(): Promise<boolean>;
1733
1750
  $reset(): void;
1734
1751
  $unwatch(): void;
1735
1752
  $watch(): void;
@@ -1873,17 +1890,17 @@ type MergedScopedRegles<TValue extends Record<string, unknown>[] = Record<string
1873
1890
  readonly $silentErrors: RegleValidationErrors<Record<string, unknown>>[];
1874
1891
  };
1875
1892
  type MergedReglesResult<TRegles extends Record<string, SuperCompatibleRegleRoot>> = {
1876
- result: false;
1893
+ valid: false;
1877
1894
  data: {
1878
1895
  [K in keyof TRegles]: Extract<PromiseReturn<ReturnType<TRegles[K]['$validate']>>, {
1879
- result: false;
1896
+ valid: false;
1880
1897
  }>['data'];
1881
1898
  };
1882
1899
  } | {
1883
- result: true;
1900
+ valid: true;
1884
1901
  data: {
1885
1902
  [K in keyof TRegles]: Extract<PromiseReturn<ReturnType<TRegles[K]['$validate']>>, {
1886
- result: true;
1903
+ valid: true;
1887
1904
  }>['data'];
1888
1905
  };
1889
1906
  };
@@ -1904,4 +1921,4 @@ declare function createScopedUseRegle<TCustomRegle extends useRegleFn<any, any>
1904
1921
  };
1905
1922
  };
1906
1923
 
1907
- export { type $InternalRegleStatus, type AllRulesDeclarations, type DeepMaybeRef, type DeepReactiveState, type FormRuleDeclaration, type InferRegleRoot, type InferRegleRule, type InferRegleRules, type InferRegleShortcuts, type InferRegleStatusType, type InlineRuleDeclaration, InternalRuleType, type JoinDiscriminatedUnions, type LocalRegleBehaviourOptions, type Maybe, type MergedRegles, type MismatchInfo, type NoInferLegacy, type PrimitiveTypes, type Regle, type RegleBehaviourOptions, type RegleCollectionErrors, type RegleCollectionRuleDecl, type RegleCollectionRuleDefinition, type RegleCollectionStatus, type RegleCommonStatus, type RegleComputedRules, type RegleEnforceCustomRequiredRules, type RegleEnforceRequiredRules, type RegleErrorTree, type RegleExternalCollectionErrors, type RegleExternalErrorTree, type RegleFieldStatus, type RegleFormPropertyType, type RegleInternalRuleDefs, type ReglePartialRuleTree, type RegleResult, type RegleRoot, type RegleRuleCore, type RegleRuleDecl, type RegleRuleDefinition, type RegleRuleDefinitionProcessor, type RegleRuleDefinitionWithMetadataProcessor, type RegleRuleInit, type RegleRuleMetadataConsumer, type RegleRuleMetadataDefinition, type RegleRuleMetadataExtended, type RegleRuleRaw, type RegleRuleStatus, type RegleRuleTypeReturn, type RegleRuleWithParamsDefinition, type RegleShortcutDefinition, type RegleStatus, type RegleUniversalParams, type RegleValidationErrors, type RegleValidationGroupEntry, type RegleValidationGroupOutput, type RegleRuleTree as RegleValidationTree, type ResolvedRegleBehaviourOptions, type ScopedInstancesRecord, type ScopedInstancesRecordLike, type SuperCompatibleRegleCollectionErrors, type SuperCompatibleRegleCollectionStatus, type SuperCompatibleRegleFieldStatus, type SuperCompatibleRegleResult, type SuperCompatibleRegleRoot, type SuperCompatibleRegleRuleStatus, type SuperCompatibleRegleStatus, type Unwrap, type UnwrapRegleUniversalParams, type UnwrapRuleWithParams, createRule, createScopedUseRegle, defineRegleConfig, inferRules, mergeRegles, unwrapRuleParameters, useRegle, useRootStorage };
1924
+ export { type $InternalRegleStatus, type AllRulesDeclarations, type DeepMaybeRef, type DeepReactiveState, type FormRuleDeclaration, type InferRegleRoot, type InferRegleRule, type InferRegleRules, type InferRegleShortcuts, type InferRegleStatusType, type InlineRuleDeclaration, InternalRuleType, type JoinDiscriminatedUnions, type LocalRegleBehaviourOptions, type Maybe, type MergedRegles, type MismatchInfo, type NoInferLegacy, type PrimitiveTypes, type Regle, type RegleBehaviourOptions, type RegleCollectionErrors, type RegleCollectionRuleDecl, type RegleCollectionRuleDefinition, type RegleCollectionStatus, type RegleCommonStatus, type RegleComputedRules, type RegleEnforceCustomRequiredRules, type RegleEnforceRequiredRules, type RegleErrorTree, type RegleExternalCollectionErrors, type RegleExternalErrorTree, type RegleFieldStatus, type RegleFormPropertyType, type RegleInternalRuleDefs, type ReglePartialRuleTree, type RegleResult, type RegleRoot, type RegleRuleCore, type RegleRuleDecl, type RegleRuleDefinition, type RegleRuleDefinitionProcessor, type RegleRuleDefinitionWithMetadataProcessor, type RegleRuleInit, type RegleRuleMetadataConsumer, type RegleRuleMetadataDefinition, type RegleRuleMetadataExtended, type RegleRuleRaw, type RegleRuleStatus, type RegleRuleTypeReturn, type RegleRuleWithParamsDefinition, type RegleShortcutDefinition, type RegleSingleField, type RegleStatus, type RegleUniversalParams, type RegleValidationErrors, type RegleValidationGroupEntry, type RegleValidationGroupOutput, type RegleRuleTree as RegleValidationTree, type ResolvedRegleBehaviourOptions, type ScopedInstancesRecord, type ScopedInstancesRecordLike, type SuperCompatibleRegleCollectionErrors, type SuperCompatibleRegleCollectionStatus, type SuperCompatibleRegleFieldStatus, type SuperCompatibleRegleResult, type SuperCompatibleRegleRoot, type SuperCompatibleRegleRuleStatus, type SuperCompatibleRegleStatus, type Unwrap, type UnwrapRegleUniversalParams, type UnwrapRuleWithParams, createRule, createScopedUseRegle, defineRegleConfig, inferRules, mergeRegles, unwrapRuleParameters, useRegle, useRootStorage };
@@ -620,6 +620,14 @@ type Regle<TState extends Record<string, any> = EmptyObject, TRules extends Regl
620
620
  */
621
621
  r$: Raw<RegleRoot<TState, TRules, TValidationGroups, TShortcuts>>;
622
622
  } & TAdditionalReturnProperties;
623
+ type RegleSingleField<TState extends Maybe<PrimitiveTypes> = any, TRules extends RegleRuleDecl<NonNullable<TState>> = EmptyObject, TShortcuts extends RegleShortcutDefinition = {}, TAdditionalReturnProperties extends Record<string, any> = {}> = {
624
+ /**
625
+ * r$ is a reactive object containing the values, errors, dirty state and all the necessary validations properties you'll need to display informations.
626
+ *
627
+ * To see the list of properties: {@link https://reglejs.dev/core-concepts/validation-properties}
628
+ */
629
+ r$: Raw<RegleFieldStatus<TState, TRules, TShortcuts>>;
630
+ } & TAdditionalReturnProperties;
623
631
  type isDeepExact<T, U> = {
624
632
  [K in keyof T]-?: CheckDeepExact<NonNullable<T[K]>, K extends keyof U ? NonNullable<U[K]> : never>;
625
633
  }[keyof T] extends true ? true : false;
@@ -655,7 +663,16 @@ type ResetOptions<TState extends unknown> = RequireOneOrNone<{
655
663
  toState?: TState | (() => TState);
656
664
  }, 'toInitialState' | 'toState'>;
657
665
 
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>;
666
+ interface useRegleFn<TCustomRules extends Partial<AllRulesDeclarations>, TShortcuts extends RegleShortcutDefinition<any> = never, TAdditionalReturnProperties extends Record<string, any> = {}, TAdditionalOptions extends Record<string, any> = {}> {
667
+ /**
668
+ * Primitive parameter
669
+ * */
670
+ <TState extends Maybe<PrimitiveTypes>, TRules extends RegleRuleDecl<NonNullable<TState>, TCustomRules>>(state: MaybeRef<TState>, rulesFactory: MaybeRefOrGetter<TRules>, options?: Partial<DeepMaybeRef<RegleBehaviourOptions>> & TAdditionalOptions): RegleSingleField<TState, TRules, TShortcuts, TAdditionalReturnProperties>;
671
+ /**
672
+ * Object parameter
673
+ * */
674
+ <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>;
675
+ }
659
676
  /**
660
677
  * useRegle serves as the foundation for validation logic.
661
678
  *
@@ -692,16 +709,16 @@ declare const inferRules: inferRulesFn<Partial<AllRulesDeclarations>>;
692
709
 
693
710
  declare function useRootStorage({ initialState, options, scopeRules, state, customRules, shortcuts, schemaErrors, schemaMode, onValidate, }: {
694
711
  scopeRules: Ref<$InternalReglePartialRuleTree>;
695
- state: Ref<Record<string, any>>;
712
+ state: Ref<Record<string, any> | PrimitiveTypes>;
696
713
  options: ResolvedRegleBehaviourOptions;
697
- initialState: Ref<Record<string, any>>;
714
+ initialState: Ref<Record<string, any> | PrimitiveTypes>;
698
715
  customRules?: () => CustomRulesDeclarationTree;
699
716
  shortcuts: RegleShortcutDefinition | undefined;
700
- schemaErrors?: Ref<Partial<$InternalRegleErrorTree> | undefined>;
717
+ schemaErrors?: Ref<any | undefined>;
701
718
  schemaMode?: boolean;
702
719
  onValidate?: () => Promise<$InternalRegleResult>;
703
720
  }): {
704
- regle: $InternalRegleStatus | undefined;
721
+ regle: $InternalRegleStatusType | undefined;
705
722
  };
706
723
 
707
724
  type InferRegleRoot<T extends (...args: any[]) => Regle<any, any, any, any>> = T extends (...args: any[]) => infer U ? U extends Regle<any, any, any, any> ? Prettify<U['r$']> : never : never;
@@ -1466,14 +1483,14 @@ type PartialFormState<TState extends Record<string, any>> = [unknown] extends [T
1466
1483
  [K in keyof TState as ExtendOnlyRealRecord<TState[K]> extends true ? K : TState[K] extends Array<any> ? K : never]: NonNullable<TState[K]> extends Array<infer U extends Record<string, any>> ? PartialFormState<U>[] : PartialFormState<TState[K]>;
1467
1484
  }>;
1468
1485
  type RegleResult<Data extends Record<string, any> | any[] | unknown, TRules extends ReglePartialRuleTree<any>> = {
1469
- result: false;
1486
+ valid: false;
1470
1487
  data: NonNullable<Data> extends Date | File ? Maybe<Data> : NonNullable<Data> extends Array<infer U extends Record<string, any>> ? PartialFormState<U>[] : NonNullable<Data> extends Record<string, any> ? PartialFormState<NonNullable<Data>> : Maybe<Data>;
1471
1488
  } | {
1472
- result: true;
1489
+ valid: true;
1473
1490
  data: Data extends Array<infer U extends Record<string, any>> ? DeepSafeFormState<U, TRules>[] : Data extends Date | File ? SafeFieldProperty<Data, TRules> : Data extends Record<string, any> ? DeepSafeFormState<Data, TRules> : SafeFieldProperty<Data, TRules>;
1474
1491
  };
1475
1492
  type $InternalRegleResult = {
1476
- result: boolean;
1493
+ valid: boolean;
1477
1494
  data: any;
1478
1495
  };
1479
1496
 
@@ -1696,7 +1713,7 @@ type RegleRuleStatus<TValue = any, TParams extends any[] = any[], TMetadata exte
1696
1713
  /** Contains the metadata returned by the validator function. */
1697
1714
  readonly $metadata: TMetadata;
1698
1715
  /** Run the rule validator and compute its properties like $message and $active */
1699
- $validate(): Promise<boolean>;
1716
+ $parse(): Promise<boolean>;
1700
1717
  /** Reset the $valid, $metadata and $pending states */
1701
1718
  $reset(): void;
1702
1719
  /** Returns the original rule validator function. */
@@ -1729,7 +1746,7 @@ interface $InternalRegleRuleStatus {
1729
1746
  $fieldCorrect: boolean;
1730
1747
  $fieldError: boolean;
1731
1748
  $validator(value: any, ...args: any[]): RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition>;
1732
- $validate(): Promise<boolean>;
1749
+ $parse(): Promise<boolean>;
1733
1750
  $reset(): void;
1734
1751
  $unwatch(): void;
1735
1752
  $watch(): void;
@@ -1873,17 +1890,17 @@ type MergedScopedRegles<TValue extends Record<string, unknown>[] = Record<string
1873
1890
  readonly $silentErrors: RegleValidationErrors<Record<string, unknown>>[];
1874
1891
  };
1875
1892
  type MergedReglesResult<TRegles extends Record<string, SuperCompatibleRegleRoot>> = {
1876
- result: false;
1893
+ valid: false;
1877
1894
  data: {
1878
1895
  [K in keyof TRegles]: Extract<PromiseReturn<ReturnType<TRegles[K]['$validate']>>, {
1879
- result: false;
1896
+ valid: false;
1880
1897
  }>['data'];
1881
1898
  };
1882
1899
  } | {
1883
- result: true;
1900
+ valid: true;
1884
1901
  data: {
1885
1902
  [K in keyof TRegles]: Extract<PromiseReturn<ReturnType<TRegles[K]['$validate']>>, {
1886
- result: true;
1903
+ valid: true;
1887
1904
  }>['data'];
1888
1905
  };
1889
1906
  };
@@ -1904,4 +1921,4 @@ declare function createScopedUseRegle<TCustomRegle extends useRegleFn<any, any>
1904
1921
  };
1905
1922
  };
1906
1923
 
1907
- export { type $InternalRegleStatus, type AllRulesDeclarations, type DeepMaybeRef, type DeepReactiveState, type FormRuleDeclaration, type InferRegleRoot, type InferRegleRule, type InferRegleRules, type InferRegleShortcuts, type InferRegleStatusType, type InlineRuleDeclaration, InternalRuleType, type JoinDiscriminatedUnions, type LocalRegleBehaviourOptions, type Maybe, type MergedRegles, type MismatchInfo, type NoInferLegacy, type PrimitiveTypes, type Regle, type RegleBehaviourOptions, type RegleCollectionErrors, type RegleCollectionRuleDecl, type RegleCollectionRuleDefinition, type RegleCollectionStatus, type RegleCommonStatus, type RegleComputedRules, type RegleEnforceCustomRequiredRules, type RegleEnforceRequiredRules, type RegleErrorTree, type RegleExternalCollectionErrors, type RegleExternalErrorTree, type RegleFieldStatus, type RegleFormPropertyType, type RegleInternalRuleDefs, type ReglePartialRuleTree, type RegleResult, type RegleRoot, type RegleRuleCore, type RegleRuleDecl, type RegleRuleDefinition, type RegleRuleDefinitionProcessor, type RegleRuleDefinitionWithMetadataProcessor, type RegleRuleInit, type RegleRuleMetadataConsumer, type RegleRuleMetadataDefinition, type RegleRuleMetadataExtended, type RegleRuleRaw, type RegleRuleStatus, type RegleRuleTypeReturn, type RegleRuleWithParamsDefinition, type RegleShortcutDefinition, type RegleStatus, type RegleUniversalParams, type RegleValidationErrors, type RegleValidationGroupEntry, type RegleValidationGroupOutput, type RegleRuleTree as RegleValidationTree, type ResolvedRegleBehaviourOptions, type ScopedInstancesRecord, type ScopedInstancesRecordLike, type SuperCompatibleRegleCollectionErrors, type SuperCompatibleRegleCollectionStatus, type SuperCompatibleRegleFieldStatus, type SuperCompatibleRegleResult, type SuperCompatibleRegleRoot, type SuperCompatibleRegleRuleStatus, type SuperCompatibleRegleStatus, type Unwrap, type UnwrapRegleUniversalParams, type UnwrapRuleWithParams, createRule, createScopedUseRegle, defineRegleConfig, inferRules, mergeRegles, unwrapRuleParameters, useRegle, useRootStorage };
1924
+ export { type $InternalRegleStatus, type AllRulesDeclarations, type DeepMaybeRef, type DeepReactiveState, type FormRuleDeclaration, type InferRegleRoot, type InferRegleRule, type InferRegleRules, type InferRegleShortcuts, type InferRegleStatusType, type InlineRuleDeclaration, InternalRuleType, type JoinDiscriminatedUnions, type LocalRegleBehaviourOptions, type Maybe, type MergedRegles, type MismatchInfo, type NoInferLegacy, type PrimitiveTypes, type Regle, type RegleBehaviourOptions, type RegleCollectionErrors, type RegleCollectionRuleDecl, type RegleCollectionRuleDefinition, type RegleCollectionStatus, type RegleCommonStatus, type RegleComputedRules, type RegleEnforceCustomRequiredRules, type RegleEnforceRequiredRules, type RegleErrorTree, type RegleExternalCollectionErrors, type RegleExternalErrorTree, type RegleFieldStatus, type RegleFormPropertyType, type RegleInternalRuleDefs, type ReglePartialRuleTree, type RegleResult, type RegleRoot, type RegleRuleCore, type RegleRuleDecl, type RegleRuleDefinition, type RegleRuleDefinitionProcessor, type RegleRuleDefinitionWithMetadataProcessor, type RegleRuleInit, type RegleRuleMetadataConsumer, type RegleRuleMetadataDefinition, type RegleRuleMetadataExtended, type RegleRuleRaw, type RegleRuleStatus, type RegleRuleTypeReturn, type RegleRuleWithParamsDefinition, type RegleShortcutDefinition, type RegleSingleField, type RegleStatus, type RegleUniversalParams, type RegleValidationErrors, type RegleValidationGroupEntry, type RegleValidationGroupOutput, type RegleRuleTree as RegleValidationTree, type ResolvedRegleBehaviourOptions, type ScopedInstancesRecord, type ScopedInstancesRecordLike, type SuperCompatibleRegleCollectionErrors, type SuperCompatibleRegleCollectionStatus, type SuperCompatibleRegleFieldStatus, type SuperCompatibleRegleResult, type SuperCompatibleRegleRoot, type SuperCompatibleRegleRuleStatus, type SuperCompatibleRegleStatus, type Unwrap, type UnwrapRegleUniversalParams, type UnwrapRuleWithParams, createRule, createScopedUseRegle, defineRegleConfig, inferRules, mergeRegles, unwrapRuleParameters, useRegle, useRootStorage };
@@ -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 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
+ 'use strict';var vue=require('vue');function te(e,t=true){return e==null?true:e instanceof Date?isNaN(e.getTime()):e.constructor.name=="File"||e.constructor.name=="FileList"?e.size<=0:Array.isArray(e)?t?e.length===0:false:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}var gt=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 N(e){let t=e,r={}.toString.call(e).slice(8,-1);if(r=="Set"&&(t=new Set([...e].map(n=>N(n)))),r=="Map"&&(t=new Map([...e].map(n=>[N(n[0]),N(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]=N(e[n]);}return t}function Q(e){return e&&(e instanceof Date||e.constructor.name=="File"||e.constructor.name=="FileList")?false:typeof e=="object"&&e!==null&&!Array.isArray(e)}function He(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 Ve(e,t,r){let n,l=(...c)=>new Promise(m=>{clearTimeout(n),n=setTimeout(()=>{n=undefined,Promise.resolve(e.apply(this,[...c])).then(m);},t);});return l.cancel=()=>{clearTimeout(n),n=undefined;},l}var ze=(r=>(r.Inline="__inline",r.Async="__async",r))(ze||{});function vt(e,t){return e.some(r=>r[t])}function $t(e,t){return e.reduce((r,n)=>{let l=n[t]||[];return r.concat(l)},[])}function re(e){try{return e.map(t=>vue.toValue(t))}catch{return []}}function St(e){return e.map(t=>t instanceof Function?vue.computed(t):vue.isRef(t)?t:vue.toRef(()=>t))}function ht(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(m=>m.trim()).filter(m=>m.length>0).length:0}function qe(e,...t){let{validator:r,type:n}=e,l=n==="__async"||r.constructor.name==="AsyncFunction";return {...{validator(d,...$){return e.validator(d,...re($.length?$:t))},message(d){return typeof e.message=="function"?e.message({...d,$params:re(d?.$params?.length?d.$params:t)}):e.message},active(d){return typeof e.active=="function"?e.active({...d,$params:re(d?.$params?.length?d.$params:t)}):e.active??true},tooltip(d){return typeof e.tooltip=="function"?e.tooltip({...d,$params:re(d?.$params?.length?d.$params:t)}):e.tooltip??[]},exec(d){let $=e.validator(d,...re(t)),p;return $ instanceof Promise?$.then(h=>(p=h,typeof p=="object"&&"$valid"in p?p.$valid:typeof p=="boolean"?p:false)):(p=$,typeof p=="object"&&"$valid"in p?p.$valid:typeof p=="boolean"?p: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:St(t),_brand:gt}}function Ke(e){if(typeof e.validator=="function"){let r=qe(e,...[]),n=e.async??e.validator.constructor.name==="AsyncFunction";if(ht(e.validator)>1){let l=function(...c){return qe(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 Je(){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 m(S){let E=t.value.get(S);if(E)return E;{let D=vue.ref({});return t.value.set(S,D),D}}function d(S){let E=r.value.get(S);if(E)return E;{let D=vue.ref([]);return r.value.set(S,D),D}}function $(S,E,D){c.value.set(`${S}-${E}`,D);}function p(S,E){return c.value.get(`${S}-${E}`)}function h(S,E){S&&E!=null&&c.value.delete(`${S}-${E}`);}function V(S,E){n.value.set(S,E);}function C(S){return n.value.get(S)??false}function A(S,E){e.value.set(S,E);}function w(S,E){let D=e.value.get(S);return D?O(E,D)?{valid:true}:{valid:false}:undefined}function O(S,E){let D=Object.keys(E),u=Object.keys(S);return u.length!==D.length||!u.every(s=>D.includes(s))?false:u.every(s=>{let o=S[s],b=E[s];return !b||!o||typeof o=="function"||typeof b=="function"||typeof o=="number"||typeof o=="boolean"?false:o._params?o._params?.every((M,L)=>{if(typeof b=="number"||typeof b=="boolean")return true;{let G=re(b._params),X=re(o._params);return G?.[L]===X?.[L]}}):true})}function a(S){let E=l.value.get(S);if(E)return E;{let D=vue.ref(false),u=vue.ref(true),T=vue.ref({}),s=vue.ref(false);return l.value.set(S,{$pending:D,$valid:u,$metadata:T,$validating:s}),{$pending:D,$valid:u,$metadata:T,$validating:s}}}return vue.getCurrentScope()&&vue.onScopeDispose(()=>{e.value.clear(),t.value.clear(),r.value.clear(),n.value.clear(),l.value.clear(),c.value.clear();}),{addRuleDeclEntry:A,setDirtyEntry:V,checkRuleDeclEntry:w,getDirtyState:C,trySetRuleStatusRef:a,getFieldsEntry:m,getCollectionsEntry:d,getArrayStatus:p,addArrayStatus:$,deleteArrayStatus:h,arrayStatusStorage:c}}function _e(e){return Q(e.value)}function Ye(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 c=Number(r[l]),m=Number(n[l]);if(c>m)return 1;if(m>c)return -1;if(!isNaN(c)&&isNaN(m))return 1;if(isNaN(c)&&!isNaN(m))return -1}return 0}var Ne=Zt(vue.version,"3.5.0")!==-1;function er(){return Math.floor(Math.random()*Date.now()).toString()}function $e(){return typeof window>"u"?er():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function bt(e){return vue.getCurrentScope()?(vue.onScopeDispose(e),true):false}function Tt(e){let t=false,r,n=vue.effectScope(true);return (...l)=>(t||(r=n.run(()=>e(...l)),t=true),r)}function ke(e,t){return _e(e)||Q(t.value)&&!te(t.value)&&!Object.entries(t.value).some(([r,n])=>we(n)||typeof n=="function")}function Et(e,t){return !!e.value&&Q(e.value)&&"$each"in e.value||Array.isArray(t.value)}function Ge(e){return !!e.value&&Q(e.value)}function we(e){return Q(e)&&"_validator"in e}function Pe(e){return typeof e.value!="function"}function xt(e){return Q(e)&&"$fields"in e}function Dt(e){return !!e&&"$rules"in e}function Qe({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:c,$debounce:m,modifiers:d}){let $=vue.effectScope(),p={},h,V=vue.ref(false),{$pending:C,$valid:A,$metadata:w,$validating:O}=c.trySetRuleStatusRef(`${l}.${r}`);function a(){$=vue.effectScope(),p=$.run(()=>{let o=vue.ref(false),b=vue.ref(false),M=vue.ref(true),L=vue.ref(false),G=vue.ref(false),X=vue.computed(()=>({$value:n.value,$error:b.value,$dirty:o.value,$pending:L.value,$correct:G.value,$invalid:M.value,$rule:{$valid:A.value,$invalid:!A.value,$pending:C.value},$params:f.value,...w.value})),oe=vue.computed(()=>Pe(t)?typeof t.value.active=="function"?t.value.active(X.value):!!t.value.active:true);function I(x){let F="",B=e?e[r]?.[x]:undefined;if(B&&(typeof B=="function"?F=B(X.value):F=B),Pe(t)){let y=`_${x}_patched`;B&&!t.value[y]||(typeof t.value[x]=="function"?F=t.value[x](X.value):F=t.value[x]??"");}return F}let z=vue.computed(()=>{let x=I("message");return te(x)&&(x="This field is not valid"),x}),me=vue.computed(()=>I("tooltip")),ue=vue.computed(()=>Pe(t)&&t.value.type?t.value.type:r),i=vue.computed(()=>Pe(t)?t.value.validator:t.value),f=vue.computed(()=>typeof t.value=="function"?[]:re(t.value._params??[])),R=vue.computed(()=>`${l}.${ue.value}`);return {$active:oe,$message:z,$type:ue,$validator:i,$params:f,$path:R,$tooltip:me,$fieldCorrect:G,$fieldError:b,$fieldDirty:o,$fieldPending:L,$fieldInvalid:M}}),h=vue.watch(p?.$params,()=>{(d.$autoDirty.value||d.$rewardEarly.value&&p.$fieldError.value)&&u();});}a();function S(){A.value=true,p.$fieldDirty.value&&(C.value=true);}async function E(){let o=false;try{let b=p.$validator.value;if(typeof b!="function")return console.error(`${l}: Incorrect rule format, it needs to be either a function or created with "createRule".`),!1;let M=b(n.value,...p.$params.value),L=n.value;S();let G;if(M instanceof Promise?G=await M:G=M,n.value!==L)return !0;if(typeof G=="boolean")o=G;else {let{$valid:X,...oe}=G;o=X,w.value=oe;}}catch{o=false;}finally{C.value=false;}return o}let D=Ve(E,m??200);async function u(){try{O.value=!0;let o=!1;if(we(t.value)&&t.value._async)o=await D();else {let b=p.$validator.value,M=b(n.value,...p.$params.value);if(M 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(M!=null)if(typeof M=="boolean")o=M;else {let{$valid:L,...G}=M;o=L,w.value=G;}}return A.value=o,o}catch{return false}finally{O.value=false;}}function T(){A.value=true,w.value={},C.value=false,O.value=false,a();}function s(){h(),$.stop(),$=vue.effectScope();}return vue.reactive({...p,$pending:C,$valid:A,$metadata:w,$haveAsync:V,$validating:O,$parse:u,$unwatch:s,$watch:a,$reset:T})}function be({state:e,rulesDef:t,customMessages:r,path:n,fieldName:l,storage:c,options:m,externalErrors:d,schemaErrors:$,schemaMode:p,onUnwatch:h,$isArray:V,initialState:C,shortcuts:A,onValidate:w}){let O=vue.effectScope(),a,S=[],E,D,u,T,s,o=()=>{};function b(){let v=t.value,j=c.checkRuleDeclEntry(n,v);z.value=Object.fromEntries(Object.entries(v).filter(([g])=>g.startsWith("$"))),G(),I.value=Object.fromEntries(Object.entries(t.value).filter(([g])=>!g.startsWith("$")).map(([g,ee])=>{if(ee){let se=vue.toRef(()=>ee);return [g,It({modifiers:{$autoDirty:a.$autoDirty,$rewardEarly:a.$rewardEarly},customMessages:r,rule:se,ruleKey:g,state:e,path:n,storage:c,$debounce:z.value.$debounce})]}return []}).filter(g=>!!g.length)),a.processShortcuts(),M(),j?.valid!=null&&(a.$dirty.value=c.getDirtyState(n),(a.$dirty.value&&a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&o()),c.addRuleDeclEntry(n,v);}function M(){o=a.$debounce.value?Ve(oe,a.$debounce.value??a.$haveAnyAsyncRule?100:0):oe;}function L(){I.value&&Object.entries(I.value).forEach(([v,j])=>{j.$unwatch();}),u(),s?.(),a.$dirty.value&&c.setDirtyEntry(n,a.$dirty.value),E?.(),D?.(),O.stop(),O=vue.effectScope(),S.forEach(v=>v.stop()),S=[],h?.(),T?.();}function G(){I.value&&Object.entries(I.value).forEach(([v,j])=>{j.$watch();}),a=O.run(()=>{let v=vue.ref(false),j=vue.ref(false),g=vue.computed(()=>v.value),ee=vue.computed(()=>z.value.$debounce),se=vue.computed(()=>z.value.$lazy!=null?z.value.$lazy:vue.unref(m.lazy)!=null?vue.unref(m.lazy):false),le=vue.computed(()=>z.value.$rewardEarly!=null?z.value.$rewardEarly:vue.unref(m.rewardEarly)!=null?vue.unref(m.rewardEarly):false),U=vue.computed(()=>z.value.$clearExternalErrorsOnChange!=null?z.value.$clearExternalErrorsOnChange:vue.unref(m.clearExternalErrorsOnChange)!=null?vue.unref(m.clearExternalErrorsOnChange):true),P=vue.computed(()=>z.value.$autoDirty!=null?z.value.$autoDirty:vue.unref(m.autoDirty)!=null?vue.unref(m.autoDirty):!le.value),H=vue.computed(()=>Object.entries(I.value).some(([ie,Y])=>Y.$validating)),Ie=vue.computed({get:()=>e.value,set(ie){E(),e.value=ie,X();}}),Fe=vue.computed(()=>ye.value&&!Oe.value&&v.value),st=vue.computed(()=>Qe({field:{$rules:I.value,$error:Fe.value,$externalErrors:d?.value,$schemaErrors:$?.value}})),it=vue.computed(()=>Qe({field:{$rules:I.value,$error:Fe.value,$externalErrors:d?.value,$schemaErrors:$?.value},silent:true})),Be=vue.computed(()=>v.value?C.value instanceof Date&&e.value instanceof Date?He(C.value).getDate()!==He(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),ut=vue.computed(()=>Be.value),ct=vue.computed(()=>Ct({field:{$rules:I.value}})),ft=vue.computed(()=>P.value?g.value&&!(ye.value||Oe.value):!(ye.value||Oe.value)),Oe=vue.computed(()=>j.value||!le.value?Object.entries(I.value).some(([ie,Y])=>Y.$pending):false),ye=vue.computed(()=>d?.value?.length||$?.value?.length?true:je.value?false:!le.value||le.value&&j.value?Object.entries(I.value).some(([ie,Y])=>!Y.$valid):false),Rt=vue.computed(()=>l),je=vue.computed(()=>!!(te(I.value)&&!p)),dt=vue.computed(()=>d?.value?.length||je.value?false:v.value&&!te(e.value)&&!H.value?p?!$?.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(([ie,Y])=>Y.$haveAsync));function Lt(){A?.fields&&Object.entries(A.fields).forEach(([ie,Y])=>{let mt=vue.effectScope();pt[ie]=mt.run(()=>{let yt=vue.ref();return vue.watchEffect(()=>{yt.value=Y(vue.reactive({$dirty:v,$externalErrors:d?.value??[],$value:e,$silentValue:Ie,$rules:I,$error:Fe,$pending:Oe,$invalid:ye,$correct:dt,$errors:st,$ready:ft,$silentErrors:it,$anyDirty:g,$tooltips:ct,$name:Rt,$inactive:je,$edited:Be,$anyEdited:ut}));}),yt}),S.push(mt);});}let pt={};return vue.watch(ye,ie=>{ie||(j.value=false);}),{$error:Fe,$pending:Oe,$invalid:ye,$correct:dt,$debounce:ee,$lazy:se,$errors:st,$ready:ft,$silentErrors:it,$rewardEarly:le,$autoDirty:P,$clearExternalErrorsOnChange:U,$anyDirty:g,$edited:Be,$anyEdited:ut,$name:Rt,$haveAnyAsyncRule:Wt,$shortcuts:pt,$validating:H,$tooltips:ct,$dirty:v,triggerPunishment:j,processShortcuts:Lt,$silentValue:Ie,$inactive:je}}),X(),u=vue.watch(a.$dirty,v=>{c.setDirtyEntry(n,v),Object.values(I.value).forEach(j=>{j.$fieldDirty=v;});}),s=vue.watch([a.$error,a.$correct,a.$invalid,a.$pending],()=>{Object.values(I.value).forEach(v=>{v.$fieldError=a.$error.value,v.$fieldInvalid=a.$invalid.value,v.$fieldPending=a.$pending.value,v.$fieldCorrect=a.$correct.value;});}),D=vue.watch(a.$invalid,v=>{a.$rewardEarly.value&&!v&&(a.triggerPunishment.value=false);}),T=vue.watch(a.$haveAnyAsyncRule,M);}function X(){E=vue.watch(e,()=>{a.$autoDirty.value&&(a.$dirty.value||(a.$dirty.value=true)),t.value instanceof Function&&b(),(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&o(),a.$rewardEarly.value!==true&&a.$clearExternalErrorsOnChange.value&&R();},{deep:V?true:Ne?1:true,flush:"post"});}function oe(){Object.values(I.value).forEach(v=>{v.$parse();});}let I=vue.ref({}),z=vue.ref({});b();function me(v,j){if(R(),a.$dirty.value=false,a.triggerPunishment.value=false,c.setDirtyEntry(n,false),!j)if(v?.toInitialState)L(),e.value=N(C);else if(v?.toState){L();let g;typeof v?.toState=="function"?g=v?.toState():g=v?.toState,C.value=N(g),e.value=N(g);}else C.value=Q(e.value)?N(e.value):Array.isArray(e.value)?[...e.value]:e.value;j||Object.entries(I.value).forEach(([g,ee])=>{ee.$reset();}),!a.$lazy.value&&a.$autoDirty.value&&Object.values(I.value).forEach(g=>g.$parse()),j||b();}function ue(v=true,j=false){a.$dirty.value||(a.$dirty.value=true),j&&v?(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&o():v&&o();}async function i(){try{if(p)return w?(ue(!1),w()):{valid:!1,data:e.value};let v=e.value;if(a.triggerPunishment.value=!0,!a.$dirty.value)a.$dirty.value=!0;else if(a.$autoDirty.value&&a.$dirty.value&&!a.$pending.value)return {valid:!a.$error.value,data:v};return p?{valid:!$?.value?.length,data:v}:te(I.value)?{valid:!0,data:v}:{valid:(await Promise.allSettled(Object.entries(I.value).map(([ee,se])=>se.$parse()))).every(ee=>ee.status==="fulfilled"?ee.value===!0:!1),data:v}}catch{return {valid:false,data:e.value}}}function f(v=true){return a.$dirty.value?e.value:v?{_null:true}:null}function R(){d?.value?.length&&(d.value=[]);}!a.$lazy.value&&!a.$dirty.value&&a.$autoDirty.value&&o();let{$shortcuts:x,$validating:F,$autoDirty:B,$rewardEarly:y,$clearExternalErrorsOnChange:_,$haveAnyAsyncRule:q,$debounce:Z,$lazy:J,triggerPunishment:fe,...ce}=a;return vue.reactive({...ce,$externalErrors:d,$value:e,$rules:I,...x,$reset:me,$touch:ue,$validate:i,$unwatch:L,$watch:G,$extractDirtyFields:f,$clearExternalErrors:R})}function et({$id:e,path:t,index:r,options:n,storage:l,stateValue:c,customMessages:m,rules:d,externalErrors:$,schemaErrors:p,initialState:h,shortcuts:V,fieldName:C,schemaMode:A}){let w=d.$key?d.$key:$e(),O=`${t}.${String(w)}`;typeof c.value=="object"&&c.value!=null&&(c.value.$id?O=`${t}.${c.value.$id}`:Object.defineProperties(c.value,{$id:{value:w,enumerable:false,configurable:false,writable:false}}));let a=vue.toRef($?.value??[],r),S=vue.computed(()=>p?.value?.[r]),E=Te({state:c,rulesDef:vue.toRef(()=>d),customMessages:m,path:O,storage:l,options:n,externalErrors:a,schemaErrors:S,initialState:h,shortcuts:V,fieldName:C,schemaMode:A});if(E){let D=c.value?.$id;E.$id=D??String(w),l.addArrayStatus(e,E.$id,E);}return E}function At({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:c,externalErrors:m,schemaErrors:d,schemaMode:$,initialState:p,shortcuts:h,fieldName:V}){let C=vue.effectScope(),A,w=vue.effectScope(),O,a=[];if(!Array.isArray(e.value)&&!t.value.$each)return;let S=vue.ref(),E=vue.ref(e.value),D,u=vue.ref({}),T=l.getCollectionsEntry(n);O=w.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)})),s(),M();function s(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?(S.value=$e(),Object.defineProperties(e.value,{$id:{value:S.value,enumerable:false,configurable:false,writable:false}})):e.value?.$id&&(S.value=e.value.$id)),E.value=u.value.$value,Array.isArray(e.value)&&!O.isPrimitiveArray.value?T.value=e.value.filter(i=>typeof i=="object").map((i,f)=>{let{scope:R,unwrapped:x}=Ye(t.value.$each,vue.toRef(()=>i),f);R&&a.push(R);let F=vue.toRef(p.value??[],f),B=vue.toRef(m?.value??{},"$each"),y=vue.computed(()=>d?.value?.$each),_=et({$id:S.value,path:n,customMessages:r,rules:x??{},stateValue:vue.toRef(()=>i),index:f,options:c,storage:l,externalErrors:B,schemaErrors:y,initialState:F,shortcuts:h,fieldName:V,schemaMode:$});return _||null}).filter(i=>!!i):T.value=[],u.value=be({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:c,externalErrors:vue.toRef(m?.value??{},"$self"),schemaErrors:vue.computed(()=>d?.value?.$self),$isArray:!0,initialState:p,shortcuts:h,fieldName:V,schemaMode:$});}function o(){if(Array.isArray(e.value)&&!O.isPrimitiveArray.value){let i=N(T.value);T.value=e.value.filter(f=>typeof f=="object").map((f,R)=>{let x=vue.toRef(()=>f);if(f.$id&&T.value.find(F=>F.$id===f.$id)){let F=l.getArrayStatus(S.value,f.$id);return F?(F.$value=x,F):null}else {let{scope:F,unwrapped:B}=Ye(t.value.$each,x,R);F&&a.push(F);let y=vue.toRef(m?.value??{},"$each"),_=vue.computed(()=>d?.value?.$each??[]),q=et({$id:S.value,path:n,customMessages:r,rules:B??{},stateValue:x,index:R,options:c,storage:l,externalErrors:y,schemaErrors:_,initialState:vue.toRef(p.value??[],R),shortcuts:h,fieldName:V,schemaMode:$});return q||null}}).filter(f=>!!f),i.filter(f=>!e.value?.find(R=>f.$id===R.$id)).forEach((f,R)=>{l.deleteArrayStatus(S.value,R.toString());});}else T.value=[];}function b(){D=vue.watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?s():o();},{deep:Ne?1:true,flush:"pre"});}function M(){b(),C=vue.effectScope(),A=C.run(()=>{let i=vue.computed({get:()=>e.value,set(g){D(),e.value=g,b();}}),f=vue.computed(()=>u.value.$dirty&&(!T.value.length||T.value.every(g=>g.$dirty))),R=vue.computed(()=>u.value.$anyDirty||T.value.some(g=>g.$anyDirty)),x=vue.computed(()=>u.value.$invalid||T.value.some(g=>g.$invalid)),F=vue.computed(()=>(te(u.value.$rules)?true:u.value.$correct)&&(!T.value.length||T.value.every(g=>g.$correct||g.$anyDirty&&!g.$invalid))),B=vue.computed(()=>u.value.$error||T.value.some(g=>g.$error)),y=vue.computed(()=>!(x.value||_.value)),_=vue.computed(()=>u.value.$pending||T.value.some(g=>g.$pending)),q=vue.computed(()=>!!T.value.length&&T.value.every(g=>g.$edited)),Z=vue.computed(()=>u.value.$anyEdited||T.value.some(g=>g.$anyEdited)),J=vue.computed(()=>({$self:u.value.$errors,$each:T.value.map(g=>g.$errors)})),fe=vue.computed(()=>({$self:u.value.$silentErrors,$each:T.value.map(g=>g.$silentErrors)})),ce=vue.computed(()=>V);function v(){h?.collections&&Object.entries(h?.collections).forEach(([g,ee])=>{let se=vue.effectScope();j[g]=se.run(()=>{let le=vue.ref();return vue.watchEffect(()=>{le.value=ee(vue.reactive({$dirty:f,$error:B,$silentValue:i,$pending:_,$invalid:x,$correct:F,$errors:J,$ready:y,$silentErrors:fe,$anyDirty:R,$name:ce,$each:T,$self:u,$value:e,$edited:q,$anyEdited:Z}));}),le}),a.push(se);});}let j={};return v(),{$dirty:f,$anyDirty:R,$invalid:x,$correct:F,$error:B,$pending:_,$errors:J,$silentErrors:fe,$ready:y,$name:ce,$shortcuts:j,$silentValue:i,$edited:q,$anyEdited:Z}}),O.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 L(){D&&D(),u.value&&u.value.$unwatch(),T.value&&T.value.forEach(i=>{"$dirty"in i&&i.$unwatch();}),C.stop(),C=vue.effectScope(),w.stop(),w=vue.effectScope(true),a.forEach(i=>i.stop()),a=[];}function G(i=true,f=false){u.value.$touch(i,f),T.value.forEach(R=>{R.$touch(i,f);});}function X(i,f){if(L(),!f)if(i?.toInitialState)e.value=N(p.value);else if(i?.toState){let R;typeof i?.toState=="function"?R=i?.toState():R=i?.toState,p.value=N(R),e.value=N(R);}else p.value=N(e.value);u.value.$reset(),T.value.forEach(R=>{R.$reset(i,true);}),f||s();}async function oe(){let i=e.value;try{return {valid:(await Promise.allSettled([u.value.$validate(),...T.value.map(x=>x.$validate())])).every(x=>x.status==="fulfilled"?x.value.valid===!0:!1),data:i}}catch{return {valid:false,data:i}}}function I(){u.value.$clearExternalErrors(),T.value.forEach(i=>{i.$clearExternalErrors();});}function z(i=true){let f=T.value.map(R=>{if(xt(R))return R.$extractDirtyFields(i)});return i&&f.every(R=>te(R))&&(f=[]),f}let{$shortcuts:me,...ue}=A;return vue.reactive({$self:u,...ue,...me,$each:T,$value:e,$validate:oe,$unwatch:L,$watch:M,$touch:G,$reset:X,$extractDirtyFields:z,$clearExternalErrors:I})}function We({rulesDef:e,state:t,path:r="",rootRules:n,externalErrors:l,schemaErrors:c,rootSchemaErrors:m,validationGroups:d,initialState:$,fieldName:p,...h}){let V=vue.effectScope(),C,A=[],w=null,O=null,a=null,S=null;async function D(i=true){let f=Object.entries(e.value),R=Object.fromEntries(f.filter(([y,_])=>!!_).map(([y,_])=>{if(_){let q=vue.toRef(t.value??{},y),Z=vue.toRef(()=>_),J=vue.toRef(l?.value??{},y),fe=vue.computed(()=>c?.value?.[y]),ce=vue.toRef($?.value??{},y);return [y,Te({state:q,rulesDef:Z,path:r?`${r}.${y}`:y,externalErrors:J,schemaErrors:fe,initialState:ce,fieldName:y,...h})]}return []})),x=Object.fromEntries(Object.entries(vue.unref(l)??{}).filter(([y,_])=>!(y in e.value)&&!!_).map(([y])=>{let _=vue.toRef(t.value??{},y),q=vue.toRef(l?.value??{},y),Z=vue.computed(()=>c?.value?.[y]),J=vue.toRef($?.value??{},y);return [y,Te({state:_,rulesDef:vue.computed(()=>({})),path:r?`${r}.${y}`:y,externalErrors:q,schemaErrors:Z,initialState:J,fieldName:y,...h})]})),F=Object.fromEntries(Object.entries(vue.unref(c)??{}).map(([y])=>{let _=vue.toRef(t.value??{},y),q=vue.toRef(l?.value??{},y),Z=vue.computed(()=>c?.value?.[y]),J=vue.toRef($?.value??{},y);return [y,Te({state:_,rulesDef:vue.computed(()=>({})),path:r?`${r}.${y}`:y,externalErrors:q,schemaErrors:Z,initialState:J,fieldName:y,...h})]})),B=Object.fromEntries(Object.entries(t.value??{}).filter(([y])=>!(y in e.value)&&!(y in(x??{}))&&!(y in(F??{}))).map(([y])=>{let _=vue.toRef(t.value??{},y),q=vue.toRef(l?.value??{},y),Z=vue.computed(()=>c?.value?.[y]),J=vue.toRef($?.value??{},y);return [y,Te({state:_,rulesDef:vue.computed(()=>({})),path:r?`${r}.${y}`:y,externalErrors:q,schemaErrors:Z,initialState:J,fieldName:y,...h})]}));u.value={...R,...x,...F,...B},i&&o();}let u=h.storage.getFieldsEntry(r);D();function T(){l&&(a=vue.watch(l,()=>{b(),D();},{deep:true}));}function s(){S=vue.watch(t,()=>{b(),D(),G(true,true);},{flush:"sync"});}function o(){n&&(w?.(),w=vue.watch(n,()=>{b(),D();},{deep:true,flush:"post"}),T()),m&&(O?.(),O=vue.watch(m,()=>{b(),D();},{deep:true,flush:"post"})),s(),C=V.run(()=>{let i=vue.computed({get:()=>t.value,set(U){b(),t.value=U,D();}}),f=vue.computed(()=>!!Object.entries(u.value).length&&Object.entries(u.value).every(([U,P])=>P?.$dirty)),R=vue.computed(()=>Object.entries(u.value).some(([U,P])=>P?.$anyDirty)),x=vue.computed(()=>!!Object.entries(u.value).length&&Object.entries(u.value).some(([U,P])=>P?.$invalid)),F=vue.computed(()=>{let U=Object.entries(u.value).filter(([P,H])=>Dt(H)?!H.$inactive:true);return U.length?U.every(([P,H])=>H?.$correct||H.$anyDirty&&!H.$invalid):false}),B=vue.computed(()=>!!Object.entries(u.value).length&&Object.entries(u.value).some(([U,P])=>P?.$error)),y=vue.computed(()=>vue.unref(h.options.rewardEarly)!=null?vue.unref(h.options.rewardEarly):false),_=vue.computed(()=>vue.unref(h.options.autoDirty)!=null?vue.unref(h.options.autoDirty):!y.value),q=vue.computed(()=>_.value?R.value&&!(x.value||J.value):!(x.value||J.value)),Z=vue.ref(false),J=vue.computed(()=>Z.value||Object.entries(u.value).some(([U,P])=>P?.$pending)),fe=vue.computed(()=>Object.fromEntries(Object.entries(u.value).map(([U,P])=>[U,P?.$errors]))),ce=vue.computed(()=>Object.fromEntries(Object.entries(u.value).map(([U,P])=>[U,P?.$silentErrors]))),v=vue.computed(()=>!!Object.entries(u.value).length&&Object.entries(u.value).every(([U,P])=>P?.$edited)),j=vue.computed(()=>Object.entries(u.value).some(([U,P])=>P?.$anyEdited)),g=vue.computed(()=>p);function ee(){h.shortcuts?.nested&&Object.entries(h.shortcuts.nested).forEach(([U,P])=>{let H=vue.effectScope();le[U]=H.run(()=>{let Ie=vue.ref();return vue.watchEffect(()=>{Ie.value=P(vue.reactive({$dirty:f,$value:t,$silentValue:i,$error:B,$pending:J,$invalid:x,$correct:F,$ready:q,$anyDirty:R,$name:g,$silentErrors:ce,$errors:fe,$fields:u,$edited:v,$anyEdited:j}));}),Ie}),A.push(H);});}let se=vue.computed({get:()=>d?Object.fromEntries(Object.entries(d?.(u.value)??{}).map(([U,P])=>P.length?[U,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$correct"].map(H=>[H,vt(P,H)])),...Object.fromEntries(["$errors","$silentErrors"].map(H=>[H,$t(P,H)]))}]:[])):{},set(){}}),le={};return ee(),{$dirty:f,$anyDirty:R,$invalid:x,$correct:F,$error:B,$pending:J,$errors:fe,$silentErrors:ce,$ready:q,$name:g,$shortcuts:le,$groups:se,$silentValue:i,$edited:v,$anyEdited:j,$localPending:Z}});}function b(){w?.(),a?.(),S?.(),O?.(),A=[],C={},u.value&&Object.entries(u.value).forEach(([i,f])=>{f.$unwatch();});}function M(){Object.entries(u.value).forEach(([i,f])=>{f.$clearExternalErrors();});}function L(i,f){if(a?.(),b(),!f)if(i?.toInitialState)t.value=N({...$.value??{}});else if(i?.toState){let R;typeof i?.toState=="function"?R=i?.toState():R=i?.toState,$.value=N(R),t.value=N(R);}else $.value=N(t.value);Object.values(u.value).forEach(R=>{R.$reset(i,true);}),T(),f||D();}function G(i=true,f=false){Object.values(u.value).forEach(R=>{R.$touch(i,f);});}function X(i){return i.filter(([f,R])=>Q(R)?!(R&&typeof R=="object"&&"_null"in R)&&!te(R):Array.isArray(R)?R.length:true)}function oe(i=true){let f=Object.entries(u.value).map(([R,x])=>[R,x.$extractDirtyFields(i)]);return i&&(f=X(f)),Object.fromEntries(f)}async function I(){try{if(h.schemaMode)return h.onValidate?(G(!1),C.$localPending.value=!0,h.onValidate()):{valid:!1,data:t.value};{let i=t.value;return {valid:(await Promise.allSettled(Object.values(u.value).map(x=>x.$validate()))).every(x=>x.status==="fulfilled"?x.value.valid===!0:!1),data:i}}}catch{return {valid:false,data:t.value}}finally{C.$localPending.value=false;}}let{$shortcuts:z,$localPending:me,...ue}=C;return vue.reactive({...ue,...z,$fields:u,$value:t,$reset:L,$touch:G,$validate:I,$unwatch:b,$watch:o,$clearExternalErrors:M,$extractDirtyFields:oe})}function Te({rulesDef:e,...t}){if(Et(e,t.state))return At({rulesDef:e,...t});if(ke(t.state,e)){if(_e(t.state))return We({rulesDef:e,...t});{let n=vue.effectScope().run(()=>{let m=vue.toRef(t.state.value?t.state:vue.ref({}));return vue.watch(()=>t.state.value,d=>{m.value=d;},{deep:true}),vue.watch(m,d=>{t.state.value=d;},{deep:true}),{fakeState:m}}),{state:l,...c}=t;return We({rulesDef:e,...c,state:n.fakeState})}}else if(Ge(e))return be({rulesDef:e,...t})}function Ce({initialState:e,options:t,scopeRules:r,state:n,customRules:l,shortcuts:c,schemaErrors:m,schemaMode:d=false,onValidate:$}){let p=Je(),h=vue.ref();return ke(n,r)?h.value=We({rootRules:r,rulesDef:r,state:n,customMessages:l?.(),storage:p,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:c,fieldName:"root",path:"",schemaErrors:m,rootSchemaErrors:m,schemaMode:d,onValidate:$}):Ge(r)&&(h.value=be({rulesDef:r,state:n,customMessages:l?.(),storage:p,options:t,externalErrors:t.externalErrors,initialState:e,shortcuts:c,fieldName:"root",path:"",schemaMode:d,schemaErrors:m,onValidate:$})),vue.getCurrentScope()&&vue.onScopeDispose(()=>{h.value?.$unwatch();}),vue.reactive({regle:h})}function nt(e,t,r){let n={autoDirty:t?.autoDirty,lazy:t?.lazy,rewardEarly:t?.rewardEarly,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange};function l(c,m,d){let $=vue.isRef(m)?m:vue.computed(typeof m=="function"?m:()=>m),p={...n,...d},h=vue.isRef(c)?c:vue.ref(c),V=vue.ref(Q(h.value)?{...N(h.value)}:N(h.value));return {r$:Ce({scopeRules:$,state:h,options:p,initialState:V,customRules:e,shortcuts:r}).regle}}return l}var Le=nt();function at(){function e(t,r){return r}return e}var lt=at();function Vt({rules:e,modifiers:t,shortcuts:r}){let n=nt(e,t,r),l=at();return {useRegle:n,inferRules:l}}function Me(e,t){let r=t??false,n=vue.computed({get:()=>r?Object.values(e).map(s=>s.$value):Object.fromEntries(Object.entries(e).map(([s,o])=>[s,o.$value])),set:s=>{r||typeof s=="object"&&Object.entries(s).forEach(([o,b])=>e[o].$value=b);}}),l=vue.computed({get:()=>Object.fromEntries(Object.entries(e).map(([s,o])=>[s,o.$silentValue])),set:s=>{typeof s=="object"&&Object.entries(s).forEach(([o,b])=>e[o].$silentValue=b);}}),c=vue.computed(()=>{let s=Object.entries(e);return !!s.length&&s.every(([o,b])=>b?.$dirty)}),m=vue.computed(()=>Object.entries(e).some(([s,o])=>o?.$anyDirty)),d=vue.computed(()=>Object.entries(e).some(([s,o])=>o?.$invalid)),$=vue.computed(()=>{let s=Object.entries(e);return !!s.length&&s.every(([o,b])=>b?.$correct||b.$anyDirty&&!b.$invalid)}),p=vue.computed(()=>Object.entries(e).some(([s,o])=>o?.$error)),h=vue.computed(()=>{let s=Object.entries(e);return !!s.length&&s.every(([o,b])=>b?.$ready)}),V=vue.computed(()=>Object.entries(e).some(([s,o])=>o?.$pending)),C=vue.computed(()=>r?Object.entries(e).map(([s,o])=>o.$errors):Object.fromEntries(Object.entries(e).map(([s,o])=>[s,o.$errors]))),A=vue.computed(()=>r?Object.entries(e).map(([s,o])=>o.$silentErrors):Object.fromEntries(Object.entries(e).map(([s,o])=>[s,o.$silentErrors]))),w=vue.computed(()=>{let s=Object.entries(e);return !!s.length&&s.every(([o,b])=>b?.$edited)}),O=vue.computed(()=>Object.entries(e).some(([s,o])=>o?.$anyEdited)),a=vue.computed(()=>r?Object.values(e):e);function S(s){Object.values(e).forEach(o=>{o.$reset(s);});}function E(){Object.values(e).forEach(s=>{s.$touch();});}function D(s=true){return Object.values(e).map(o=>o.$extractDirtyFields(s))}function u(){Object.values(e).forEach(s=>{s.$clearExternalErrors();});}async function T(){try{let s=n.value;return {valid:(await Promise.allSettled(Object.values(e).map(M=>M.$validate()))).every(M=>M.status==="fulfilled"?M.value.valid===!0:!1),data:s}}catch{return {valid:false,data:n.value}}}return vue.reactive({...!r&&{$silentValue:l},$errors:C,$silentErrors:A,$instances:a,$value:n,$dirty:c,$anyDirty:m,$invalid:d,$correct:$,$error:p,$pending:V,$ready:h,$edited:w,$anyEdited:O,$reset:S,$touch:E,$validate:T,$extractDirtyFields:D,$clearExternalErrors:u})}function Nt(e){function t(r){let n=vue.computed(()=>vue.toValue(r));m();let l=vue.ref(d(e.value)),c=vue.reactive({r$:l});function m(){n.value&&!e.value[n.value]&&(e.value[n.value]={});}vue.watch(n,m),vue.watch(e,$=>{l.value=d($);},{deep:true});function d($){if(n.value){let p=$[n.value]??{};return Me(p,true)}else return Me($["~~global"]??{},true)}return {r$:c.r$}}return {useCollectScope:t}}function Ut(e,t){let r=t??Le;return {useScopedRegle:(l,c,m)=>{let{namespace:d,...$}=m??{},p=vue.computed(()=>vue.toValue(d)),h=vue.ref(`${Object.keys(e.value).length+1}-${$e()}`),V=vue.computed(()=>`instance-${h.value}`),{r$:C}=r(l,c,$);w(),bt(A),vue.watch(p,(O,a)=>{A(a),w();}),vue.getCurrentInstance()&&vue.onMounted(()=>{let O=vue.getCurrentInstance();typeof window<"u"&&O?.proxy?.$el?.parentElement&&document.documentElement&&!document.documentElement.contains(O?.proxy?.$el?.parentElement)&&A();});function A(O){let a=O??p.value;a?e.value[a]&&delete e.value[a][V.value]:e.value["~~global"][V.value]&&delete e.value["~~global"][V.value];}function w(){p.value?(e.value[p.value]||(e.value[p.value]={}),e.value[p.value][V.value]=C):(e.value["~~global"]||(e.value["~~global"]={}),e.value["~~global"][V.value]=C);}return {r$:C,dispose:A,register:w}}}}function ot(e){let r=(e?.customStore?()=>(e.customStore&&(e.customStore?.value["~~global"]?e.customStore?.value&&(e.customStore.value={"~~global":{}}):e.customStore.value["~~global"]={}),e.customStore):Tt(()=>vue.ref({"~~global":{}})))(),{useScopedRegle:n}=Ut(r,e?.customUseRegle),{useCollectScope:l}=Nt(r);return {useScopedRegle:n,useCollectScope:l}}
2
+ exports.InternalRuleType=ze;exports.createRule=Ke;exports.createScopedUseRegle=ot;exports.defineRegleConfig=Vt;exports.inferRules=lt;exports.mergeRegles=Me;exports.unwrapRuleParameters=re;exports.useRegle=Le;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 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};
1
+ import {toValue,version,ref,getCurrentScope,onScopeDispose,reactive,computed,shallowRef,effectScope,watch,getCurrentInstance,onMounted,isRef,toRef,unref,watchEffect}from'vue';function te(e,t=true){return e==null?true:e instanceof Date?isNaN(e.getTime()):e.constructor.name=="File"||e.constructor.name=="FileList"?e.size<=0:Array.isArray(e)?t?e.length===0:false:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}var gt=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 N(e){let t=e,r={}.toString.call(e).slice(8,-1);if(r=="Set"&&(t=new Set([...e].map(n=>N(n)))),r=="Map"&&(t=new Map([...e].map(n=>[N(n[0]),N(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]=N(e[n]);}return t}function Q(e){return e&&(e instanceof Date||e.constructor.name=="File"||e.constructor.name=="FileList")?false:typeof e=="object"&&e!==null&&!Array.isArray(e)}function He(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 Ve(e,t,r){let n,l=(...c)=>new Promise(m=>{clearTimeout(n),n=setTimeout(()=>{n=undefined,Promise.resolve(e.apply(this,[...c])).then(m);},t);});return l.cancel=()=>{clearTimeout(n),n=undefined;},l}var ze=(r=>(r.Inline="__inline",r.Async="__async",r))(ze||{});function vt(e,t){return e.some(r=>r[t])}function $t(e,t){return e.reduce((r,n)=>{let l=n[t]||[];return r.concat(l)},[])}function re(e){try{return e.map(t=>toValue(t))}catch{return []}}function St(e){return e.map(t=>t instanceof Function?computed(t):isRef(t)?t:toRef(()=>t))}function ht(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(m=>m.trim()).filter(m=>m.length>0).length:0}function qe(e,...t){let{validator:r,type:n}=e,l=n==="__async"||r.constructor.name==="AsyncFunction";return {...{validator(d,...$){return e.validator(d,...re($.length?$:t))},message(d){return typeof e.message=="function"?e.message({...d,$params:re(d?.$params?.length?d.$params:t)}):e.message},active(d){return typeof e.active=="function"?e.active({...d,$params:re(d?.$params?.length?d.$params:t)}):e.active??true},tooltip(d){return typeof e.tooltip=="function"?e.tooltip({...d,$params:re(d?.$params?.length?d.$params:t)}):e.tooltip??[]},exec(d){let $=e.validator(d,...re(t)),p;return $ instanceof Promise?$.then(h=>(p=h,typeof p=="object"&&"$valid"in p?p.$valid:typeof p=="boolean"?p:false)):(p=$,typeof p=="object"&&"$valid"in p?p.$valid:typeof p=="boolean"?p: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:St(t),_brand:gt}}function Ke(e){if(typeof e.validator=="function"){let r=qe(e,...[]),n=e.async??e.validator.constructor.name==="AsyncFunction";if(ht(e.validator)>1){let l=function(...c){return qe(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 Je(){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 m(S){let E=t.value.get(S);if(E)return E;{let D=ref({});return t.value.set(S,D),D}}function d(S){let E=r.value.get(S);if(E)return E;{let D=ref([]);return r.value.set(S,D),D}}function $(S,E,D){c.value.set(`${S}-${E}`,D);}function p(S,E){return c.value.get(`${S}-${E}`)}function h(S,E){S&&E!=null&&c.value.delete(`${S}-${E}`);}function V(S,E){n.value.set(S,E);}function C(S){return n.value.get(S)??false}function A(S,E){e.value.set(S,E);}function w(S,E){let D=e.value.get(S);return D?O(E,D)?{valid:true}:{valid:false}:undefined}function O(S,E){let D=Object.keys(E),u=Object.keys(S);return u.length!==D.length||!u.every(s=>D.includes(s))?false:u.every(s=>{let o=S[s],b=E[s];return !b||!o||typeof o=="function"||typeof b=="function"||typeof o=="number"||typeof o=="boolean"?false:o._params?o._params?.every((M,L)=>{if(typeof b=="number"||typeof b=="boolean")return true;{let G=re(b._params),X=re(o._params);return G?.[L]===X?.[L]}}):true})}function a(S){let E=l.value.get(S);if(E)return E;{let D=ref(false),u=ref(true),T=ref({}),s=ref(false);return l.value.set(S,{$pending:D,$valid:u,$metadata:T,$validating:s}),{$pending:D,$valid:u,$metadata:T,$validating:s}}}return getCurrentScope()&&onScopeDispose(()=>{e.value.clear(),t.value.clear(),r.value.clear(),n.value.clear(),l.value.clear(),c.value.clear();}),{addRuleDeclEntry:A,setDirtyEntry:V,checkRuleDeclEntry:w,getDirtyState:C,trySetRuleStatusRef:a,getFieldsEntry:m,getCollectionsEntry:d,getArrayStatus:p,addArrayStatus:$,deleteArrayStatus:h,arrayStatusStorage:c}}function _e(e){return Q(e.value)}function Ye(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 c=Number(r[l]),m=Number(n[l]);if(c>m)return 1;if(m>c)return -1;if(!isNaN(c)&&isNaN(m))return 1;if(isNaN(c)&&!isNaN(m))return -1}return 0}var Ne=Zt(version,"3.5.0")!==-1;function er(){return Math.floor(Math.random()*Date.now()).toString()}function $e(){return typeof window>"u"?er():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function bt(e){return getCurrentScope()?(onScopeDispose(e),true):false}function Tt(e){let t=false,r,n=effectScope(true);return (...l)=>(t||(r=n.run(()=>e(...l)),t=true),r)}function ke(e,t){return _e(e)||Q(t.value)&&!te(t.value)&&!Object.entries(t.value).some(([r,n])=>we(n)||typeof n=="function")}function Et(e,t){return !!e.value&&Q(e.value)&&"$each"in e.value||Array.isArray(t.value)}function Ge(e){return !!e.value&&Q(e.value)}function we(e){return Q(e)&&"_validator"in e}function Pe(e){return typeof e.value!="function"}function xt(e){return Q(e)&&"$fields"in e}function Dt(e){return !!e&&"$rules"in e}function Qe({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:c,$debounce:m,modifiers:d}){let $=effectScope(),p={},h,V=ref(false),{$pending:C,$valid:A,$metadata:w,$validating:O}=c.trySetRuleStatusRef(`${l}.${r}`);function a(){$=effectScope(),p=$.run(()=>{let o=ref(false),b=ref(false),M=ref(true),L=ref(false),G=ref(false),X=computed(()=>({$value:n.value,$error:b.value,$dirty:o.value,$pending:L.value,$correct:G.value,$invalid:M.value,$rule:{$valid:A.value,$invalid:!A.value,$pending:C.value},$params:f.value,...w.value})),oe=computed(()=>Pe(t)?typeof t.value.active=="function"?t.value.active(X.value):!!t.value.active:true);function I(x){let F="",B=e?e[r]?.[x]:undefined;if(B&&(typeof B=="function"?F=B(X.value):F=B),Pe(t)){let y=`_${x}_patched`;B&&!t.value[y]||(typeof t.value[x]=="function"?F=t.value[x](X.value):F=t.value[x]??"");}return F}let z=computed(()=>{let x=I("message");return te(x)&&(x="This field is not valid"),x}),me=computed(()=>I("tooltip")),ue=computed(()=>Pe(t)&&t.value.type?t.value.type:r),i=computed(()=>Pe(t)?t.value.validator:t.value),f=computed(()=>typeof t.value=="function"?[]:re(t.value._params??[])),R=computed(()=>`${l}.${ue.value}`);return {$active:oe,$message:z,$type:ue,$validator:i,$params:f,$path:R,$tooltip:me,$fieldCorrect:G,$fieldError:b,$fieldDirty:o,$fieldPending:L,$fieldInvalid:M}}),h=watch(p?.$params,()=>{(d.$autoDirty.value||d.$rewardEarly.value&&p.$fieldError.value)&&u();});}a();function S(){A.value=true,p.$fieldDirty.value&&(C.value=true);}async function E(){let o=false;try{let b=p.$validator.value;if(typeof b!="function")return console.error(`${l}: Incorrect rule format, it needs to be either a function or created with "createRule".`),!1;let M=b(n.value,...p.$params.value),L=n.value;S();let G;if(M instanceof Promise?G=await M:G=M,n.value!==L)return !0;if(typeof G=="boolean")o=G;else {let{$valid:X,...oe}=G;o=X,w.value=oe;}}catch{o=false;}finally{C.value=false;}return o}let D=Ve(E,m??200);async function u(){try{O.value=!0;let o=!1;if(we(t.value)&&t.value._async)o=await D();else {let b=p.$validator.value,M=b(n.value,...p.$params.value);if(M 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(M!=null)if(typeof M=="boolean")o=M;else {let{$valid:L,...G}=M;o=L,w.value=G;}}return A.value=o,o}catch{return false}finally{O.value=false;}}function T(){A.value=true,w.value={},C.value=false,O.value=false,a();}function s(){h(),$.stop(),$=effectScope();}return reactive({...p,$pending:C,$valid:A,$metadata:w,$haveAsync:V,$validating:O,$parse:u,$unwatch:s,$watch:a,$reset:T})}function be({state:e,rulesDef:t,customMessages:r,path:n,fieldName:l,storage:c,options:m,externalErrors:d,schemaErrors:$,schemaMode:p,onUnwatch:h,$isArray:V,initialState:C,shortcuts:A,onValidate:w}){let O=effectScope(),a,S=[],E,D,u,T,s,o=()=>{};function b(){let v=t.value,j=c.checkRuleDeclEntry(n,v);z.value=Object.fromEntries(Object.entries(v).filter(([g])=>g.startsWith("$"))),G(),I.value=Object.fromEntries(Object.entries(t.value).filter(([g])=>!g.startsWith("$")).map(([g,ee])=>{if(ee){let se=toRef(()=>ee);return [g,It({modifiers:{$autoDirty:a.$autoDirty,$rewardEarly:a.$rewardEarly},customMessages:r,rule:se,ruleKey:g,state:e,path:n,storage:c,$debounce:z.value.$debounce})]}return []}).filter(g=>!!g.length)),a.processShortcuts(),M(),j?.valid!=null&&(a.$dirty.value=c.getDirtyState(n),(a.$dirty.value&&a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&o()),c.addRuleDeclEntry(n,v);}function M(){o=a.$debounce.value?Ve(oe,a.$debounce.value??a.$haveAnyAsyncRule?100:0):oe;}function L(){I.value&&Object.entries(I.value).forEach(([v,j])=>{j.$unwatch();}),u(),s?.(),a.$dirty.value&&c.setDirtyEntry(n,a.$dirty.value),E?.(),D?.(),O.stop(),O=effectScope(),S.forEach(v=>v.stop()),S=[],h?.(),T?.();}function G(){I.value&&Object.entries(I.value).forEach(([v,j])=>{j.$watch();}),a=O.run(()=>{let v=ref(false),j=ref(false),g=computed(()=>v.value),ee=computed(()=>z.value.$debounce),se=computed(()=>z.value.$lazy!=null?z.value.$lazy:unref(m.lazy)!=null?unref(m.lazy):false),le=computed(()=>z.value.$rewardEarly!=null?z.value.$rewardEarly:unref(m.rewardEarly)!=null?unref(m.rewardEarly):false),U=computed(()=>z.value.$clearExternalErrorsOnChange!=null?z.value.$clearExternalErrorsOnChange:unref(m.clearExternalErrorsOnChange)!=null?unref(m.clearExternalErrorsOnChange):true),P=computed(()=>z.value.$autoDirty!=null?z.value.$autoDirty:unref(m.autoDirty)!=null?unref(m.autoDirty):!le.value),H=computed(()=>Object.entries(I.value).some(([ie,Y])=>Y.$validating)),Ie=computed({get:()=>e.value,set(ie){E(),e.value=ie,X();}}),Fe=computed(()=>ye.value&&!Oe.value&&v.value),st=computed(()=>Qe({field:{$rules:I.value,$error:Fe.value,$externalErrors:d?.value,$schemaErrors:$?.value}})),it=computed(()=>Qe({field:{$rules:I.value,$error:Fe.value,$externalErrors:d?.value,$schemaErrors:$?.value},silent:true})),Be=computed(()=>v.value?C.value instanceof Date&&e.value instanceof Date?He(C.value).getDate()!==He(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),ut=computed(()=>Be.value),ct=computed(()=>Ct({field:{$rules:I.value}})),ft=computed(()=>P.value?g.value&&!(ye.value||Oe.value):!(ye.value||Oe.value)),Oe=computed(()=>j.value||!le.value?Object.entries(I.value).some(([ie,Y])=>Y.$pending):false),ye=computed(()=>d?.value?.length||$?.value?.length?true:je.value?false:!le.value||le.value&&j.value?Object.entries(I.value).some(([ie,Y])=>!Y.$valid):false),Rt=computed(()=>l),je=computed(()=>!!(te(I.value)&&!p)),dt=computed(()=>d?.value?.length||je.value?false:v.value&&!te(e.value)&&!H.value?p?!$?.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(([ie,Y])=>Y.$haveAsync));function Lt(){A?.fields&&Object.entries(A.fields).forEach(([ie,Y])=>{let mt=effectScope();pt[ie]=mt.run(()=>{let yt=ref();return watchEffect(()=>{yt.value=Y(reactive({$dirty:v,$externalErrors:d?.value??[],$value:e,$silentValue:Ie,$rules:I,$error:Fe,$pending:Oe,$invalid:ye,$correct:dt,$errors:st,$ready:ft,$silentErrors:it,$anyDirty:g,$tooltips:ct,$name:Rt,$inactive:je,$edited:Be,$anyEdited:ut}));}),yt}),S.push(mt);});}let pt={};return watch(ye,ie=>{ie||(j.value=false);}),{$error:Fe,$pending:Oe,$invalid:ye,$correct:dt,$debounce:ee,$lazy:se,$errors:st,$ready:ft,$silentErrors:it,$rewardEarly:le,$autoDirty:P,$clearExternalErrorsOnChange:U,$anyDirty:g,$edited:Be,$anyEdited:ut,$name:Rt,$haveAnyAsyncRule:Wt,$shortcuts:pt,$validating:H,$tooltips:ct,$dirty:v,triggerPunishment:j,processShortcuts:Lt,$silentValue:Ie,$inactive:je}}),X(),u=watch(a.$dirty,v=>{c.setDirtyEntry(n,v),Object.values(I.value).forEach(j=>{j.$fieldDirty=v;});}),s=watch([a.$error,a.$correct,a.$invalid,a.$pending],()=>{Object.values(I.value).forEach(v=>{v.$fieldError=a.$error.value,v.$fieldInvalid=a.$invalid.value,v.$fieldPending=a.$pending.value,v.$fieldCorrect=a.$correct.value;});}),D=watch(a.$invalid,v=>{a.$rewardEarly.value&&!v&&(a.triggerPunishment.value=false);}),T=watch(a.$haveAnyAsyncRule,M);}function X(){E=watch(e,()=>{a.$autoDirty.value&&(a.$dirty.value||(a.$dirty.value=true)),t.value instanceof Function&&b(),(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&o(),a.$rewardEarly.value!==true&&a.$clearExternalErrorsOnChange.value&&R();},{deep:V?true:Ne?1:true,flush:"post"});}function oe(){Object.values(I.value).forEach(v=>{v.$parse();});}let I=ref({}),z=ref({});b();function me(v,j){if(R(),a.$dirty.value=false,a.triggerPunishment.value=false,c.setDirtyEntry(n,false),!j)if(v?.toInitialState)L(),e.value=N(C);else if(v?.toState){L();let g;typeof v?.toState=="function"?g=v?.toState():g=v?.toState,C.value=N(g),e.value=N(g);}else C.value=Q(e.value)?N(e.value):Array.isArray(e.value)?[...e.value]:e.value;j||Object.entries(I.value).forEach(([g,ee])=>{ee.$reset();}),!a.$lazy.value&&a.$autoDirty.value&&Object.values(I.value).forEach(g=>g.$parse()),j||b();}function ue(v=true,j=false){a.$dirty.value||(a.$dirty.value=true),j&&v?(a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&o():v&&o();}async function i(){try{if(p)return w?(ue(!1),w()):{valid:!1,data:e.value};let v=e.value;if(a.triggerPunishment.value=!0,!a.$dirty.value)a.$dirty.value=!0;else if(a.$autoDirty.value&&a.$dirty.value&&!a.$pending.value)return {valid:!a.$error.value,data:v};return p?{valid:!$?.value?.length,data:v}:te(I.value)?{valid:!0,data:v}:{valid:(await Promise.allSettled(Object.entries(I.value).map(([ee,se])=>se.$parse()))).every(ee=>ee.status==="fulfilled"?ee.value===!0:!1),data:v}}catch{return {valid:false,data:e.value}}}function f(v=true){return a.$dirty.value?e.value:v?{_null:true}:null}function R(){d?.value?.length&&(d.value=[]);}!a.$lazy.value&&!a.$dirty.value&&a.$autoDirty.value&&o();let{$shortcuts:x,$validating:F,$autoDirty:B,$rewardEarly:y,$clearExternalErrorsOnChange:_,$haveAnyAsyncRule:q,$debounce:Z,$lazy:J,triggerPunishment:fe,...ce}=a;return reactive({...ce,$externalErrors:d,$value:e,$rules:I,...x,$reset:me,$touch:ue,$validate:i,$unwatch:L,$watch:G,$extractDirtyFields:f,$clearExternalErrors:R})}function et({$id:e,path:t,index:r,options:n,storage:l,stateValue:c,customMessages:m,rules:d,externalErrors:$,schemaErrors:p,initialState:h,shortcuts:V,fieldName:C,schemaMode:A}){let w=d.$key?d.$key:$e(),O=`${t}.${String(w)}`;typeof c.value=="object"&&c.value!=null&&(c.value.$id?O=`${t}.${c.value.$id}`:Object.defineProperties(c.value,{$id:{value:w,enumerable:false,configurable:false,writable:false}}));let a=toRef($?.value??[],r),S=computed(()=>p?.value?.[r]),E=Te({state:c,rulesDef:toRef(()=>d),customMessages:m,path:O,storage:l,options:n,externalErrors:a,schemaErrors:S,initialState:h,shortcuts:V,fieldName:C,schemaMode:A});if(E){let D=c.value?.$id;E.$id=D??String(w),l.addArrayStatus(e,E.$id,E);}return E}function At({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:c,externalErrors:m,schemaErrors:d,schemaMode:$,initialState:p,shortcuts:h,fieldName:V}){let C=effectScope(),A,w=effectScope(),O,a=[];if(!Array.isArray(e.value)&&!t.value.$each)return;let S=ref(),E=ref(e.value),D,u=ref({}),T=l.getCollectionsEntry(n);O=w.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)})),s(),M();function s(){typeof e.value=="object"&&(e.value!=null&&!e.value?.$id&&e.value!==null?(S.value=$e(),Object.defineProperties(e.value,{$id:{value:S.value,enumerable:false,configurable:false,writable:false}})):e.value?.$id&&(S.value=e.value.$id)),E.value=u.value.$value,Array.isArray(e.value)&&!O.isPrimitiveArray.value?T.value=e.value.filter(i=>typeof i=="object").map((i,f)=>{let{scope:R,unwrapped:x}=Ye(t.value.$each,toRef(()=>i),f);R&&a.push(R);let F=toRef(p.value??[],f),B=toRef(m?.value??{},"$each"),y=computed(()=>d?.value?.$each),_=et({$id:S.value,path:n,customMessages:r,rules:x??{},stateValue:toRef(()=>i),index:f,options:c,storage:l,externalErrors:B,schemaErrors:y,initialState:F,shortcuts:h,fieldName:V,schemaMode:$});return _||null}).filter(i=>!!i):T.value=[],u.value=be({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:c,externalErrors:toRef(m?.value??{},"$self"),schemaErrors:computed(()=>d?.value?.$self),$isArray:!0,initialState:p,shortcuts:h,fieldName:V,schemaMode:$});}function o(){if(Array.isArray(e.value)&&!O.isPrimitiveArray.value){let i=N(T.value);T.value=e.value.filter(f=>typeof f=="object").map((f,R)=>{let x=toRef(()=>f);if(f.$id&&T.value.find(F=>F.$id===f.$id)){let F=l.getArrayStatus(S.value,f.$id);return F?(F.$value=x,F):null}else {let{scope:F,unwrapped:B}=Ye(t.value.$each,x,R);F&&a.push(F);let y=toRef(m?.value??{},"$each"),_=computed(()=>d?.value?.$each??[]),q=et({$id:S.value,path:n,customMessages:r,rules:B??{},stateValue:x,index:R,options:c,storage:l,externalErrors:y,schemaErrors:_,initialState:toRef(p.value??[],R),shortcuts:h,fieldName:V,schemaMode:$});return q||null}}).filter(f=>!!f),i.filter(f=>!e.value?.find(R=>f.$id===R.$id)).forEach((f,R)=>{l.deleteArrayStatus(S.value,R.toString());});}else T.value=[];}function b(){D=watch(e,()=>{e.value!=null&&!Object.hasOwn(e.value,"$id")?s():o();},{deep:Ne?1:true,flush:"pre"});}function M(){b(),C=effectScope(),A=C.run(()=>{let i=computed({get:()=>e.value,set(g){D(),e.value=g,b();}}),f=computed(()=>u.value.$dirty&&(!T.value.length||T.value.every(g=>g.$dirty))),R=computed(()=>u.value.$anyDirty||T.value.some(g=>g.$anyDirty)),x=computed(()=>u.value.$invalid||T.value.some(g=>g.$invalid)),F=computed(()=>(te(u.value.$rules)?true:u.value.$correct)&&(!T.value.length||T.value.every(g=>g.$correct||g.$anyDirty&&!g.$invalid))),B=computed(()=>u.value.$error||T.value.some(g=>g.$error)),y=computed(()=>!(x.value||_.value)),_=computed(()=>u.value.$pending||T.value.some(g=>g.$pending)),q=computed(()=>!!T.value.length&&T.value.every(g=>g.$edited)),Z=computed(()=>u.value.$anyEdited||T.value.some(g=>g.$anyEdited)),J=computed(()=>({$self:u.value.$errors,$each:T.value.map(g=>g.$errors)})),fe=computed(()=>({$self:u.value.$silentErrors,$each:T.value.map(g=>g.$silentErrors)})),ce=computed(()=>V);function v(){h?.collections&&Object.entries(h?.collections).forEach(([g,ee])=>{let se=effectScope();j[g]=se.run(()=>{let le=ref();return watchEffect(()=>{le.value=ee(reactive({$dirty:f,$error:B,$silentValue:i,$pending:_,$invalid:x,$correct:F,$errors:J,$ready:y,$silentErrors:fe,$anyDirty:R,$name:ce,$each:T,$self:u,$value:e,$edited:q,$anyEdited:Z}));}),le}),a.push(se);});}let j={};return v(),{$dirty:f,$anyDirty:R,$invalid:x,$correct:F,$error:B,$pending:_,$errors:J,$silentErrors:fe,$ready:y,$name:ce,$shortcuts:j,$silentValue:i,$edited:q,$anyEdited:Z}}),O.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 L(){D&&D(),u.value&&u.value.$unwatch(),T.value&&T.value.forEach(i=>{"$dirty"in i&&i.$unwatch();}),C.stop(),C=effectScope(),w.stop(),w=effectScope(true),a.forEach(i=>i.stop()),a=[];}function G(i=true,f=false){u.value.$touch(i,f),T.value.forEach(R=>{R.$touch(i,f);});}function X(i,f){if(L(),!f)if(i?.toInitialState)e.value=N(p.value);else if(i?.toState){let R;typeof i?.toState=="function"?R=i?.toState():R=i?.toState,p.value=N(R),e.value=N(R);}else p.value=N(e.value);u.value.$reset(),T.value.forEach(R=>{R.$reset(i,true);}),f||s();}async function oe(){let i=e.value;try{return {valid:(await Promise.allSettled([u.value.$validate(),...T.value.map(x=>x.$validate())])).every(x=>x.status==="fulfilled"?x.value.valid===!0:!1),data:i}}catch{return {valid:false,data:i}}}function I(){u.value.$clearExternalErrors(),T.value.forEach(i=>{i.$clearExternalErrors();});}function z(i=true){let f=T.value.map(R=>{if(xt(R))return R.$extractDirtyFields(i)});return i&&f.every(R=>te(R))&&(f=[]),f}let{$shortcuts:me,...ue}=A;return reactive({$self:u,...ue,...me,$each:T,$value:e,$validate:oe,$unwatch:L,$watch:M,$touch:G,$reset:X,$extractDirtyFields:z,$clearExternalErrors:I})}function We({rulesDef:e,state:t,path:r="",rootRules:n,externalErrors:l,schemaErrors:c,rootSchemaErrors:m,validationGroups:d,initialState:$,fieldName:p,...h}){let V=effectScope(),C,A=[],w=null,O=null,a=null,S=null;async function D(i=true){let f=Object.entries(e.value),R=Object.fromEntries(f.filter(([y,_])=>!!_).map(([y,_])=>{if(_){let q=toRef(t.value??{},y),Z=toRef(()=>_),J=toRef(l?.value??{},y),fe=computed(()=>c?.value?.[y]),ce=toRef($?.value??{},y);return [y,Te({state:q,rulesDef:Z,path:r?`${r}.${y}`:y,externalErrors:J,schemaErrors:fe,initialState:ce,fieldName:y,...h})]}return []})),x=Object.fromEntries(Object.entries(unref(l)??{}).filter(([y,_])=>!(y in e.value)&&!!_).map(([y])=>{let _=toRef(t.value??{},y),q=toRef(l?.value??{},y),Z=computed(()=>c?.value?.[y]),J=toRef($?.value??{},y);return [y,Te({state:_,rulesDef:computed(()=>({})),path:r?`${r}.${y}`:y,externalErrors:q,schemaErrors:Z,initialState:J,fieldName:y,...h})]})),F=Object.fromEntries(Object.entries(unref(c)??{}).map(([y])=>{let _=toRef(t.value??{},y),q=toRef(l?.value??{},y),Z=computed(()=>c?.value?.[y]),J=toRef($?.value??{},y);return [y,Te({state:_,rulesDef:computed(()=>({})),path:r?`${r}.${y}`:y,externalErrors:q,schemaErrors:Z,initialState:J,fieldName:y,...h})]})),B=Object.fromEntries(Object.entries(t.value??{}).filter(([y])=>!(y in e.value)&&!(y in(x??{}))&&!(y in(F??{}))).map(([y])=>{let _=toRef(t.value??{},y),q=toRef(l?.value??{},y),Z=computed(()=>c?.value?.[y]),J=toRef($?.value??{},y);return [y,Te({state:_,rulesDef:computed(()=>({})),path:r?`${r}.${y}`:y,externalErrors:q,schemaErrors:Z,initialState:J,fieldName:y,...h})]}));u.value={...R,...x,...F,...B},i&&o();}let u=h.storage.getFieldsEntry(r);D();function T(){l&&(a=watch(l,()=>{b(),D();},{deep:true}));}function s(){S=watch(t,()=>{b(),D(),G(true,true);},{flush:"sync"});}function o(){n&&(w?.(),w=watch(n,()=>{b(),D();},{deep:true,flush:"post"}),T()),m&&(O?.(),O=watch(m,()=>{b(),D();},{deep:true,flush:"post"})),s(),C=V.run(()=>{let i=computed({get:()=>t.value,set(U){b(),t.value=U,D();}}),f=computed(()=>!!Object.entries(u.value).length&&Object.entries(u.value).every(([U,P])=>P?.$dirty)),R=computed(()=>Object.entries(u.value).some(([U,P])=>P?.$anyDirty)),x=computed(()=>!!Object.entries(u.value).length&&Object.entries(u.value).some(([U,P])=>P?.$invalid)),F=computed(()=>{let U=Object.entries(u.value).filter(([P,H])=>Dt(H)?!H.$inactive:true);return U.length?U.every(([P,H])=>H?.$correct||H.$anyDirty&&!H.$invalid):false}),B=computed(()=>!!Object.entries(u.value).length&&Object.entries(u.value).some(([U,P])=>P?.$error)),y=computed(()=>unref(h.options.rewardEarly)!=null?unref(h.options.rewardEarly):false),_=computed(()=>unref(h.options.autoDirty)!=null?unref(h.options.autoDirty):!y.value),q=computed(()=>_.value?R.value&&!(x.value||J.value):!(x.value||J.value)),Z=ref(false),J=computed(()=>Z.value||Object.entries(u.value).some(([U,P])=>P?.$pending)),fe=computed(()=>Object.fromEntries(Object.entries(u.value).map(([U,P])=>[U,P?.$errors]))),ce=computed(()=>Object.fromEntries(Object.entries(u.value).map(([U,P])=>[U,P?.$silentErrors]))),v=computed(()=>!!Object.entries(u.value).length&&Object.entries(u.value).every(([U,P])=>P?.$edited)),j=computed(()=>Object.entries(u.value).some(([U,P])=>P?.$anyEdited)),g=computed(()=>p);function ee(){h.shortcuts?.nested&&Object.entries(h.shortcuts.nested).forEach(([U,P])=>{let H=effectScope();le[U]=H.run(()=>{let Ie=ref();return watchEffect(()=>{Ie.value=P(reactive({$dirty:f,$value:t,$silentValue:i,$error:B,$pending:J,$invalid:x,$correct:F,$ready:q,$anyDirty:R,$name:g,$silentErrors:ce,$errors:fe,$fields:u,$edited:v,$anyEdited:j}));}),Ie}),A.push(H);});}let se=computed({get:()=>d?Object.fromEntries(Object.entries(d?.(u.value)??{}).map(([U,P])=>P.length?[U,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$correct"].map(H=>[H,vt(P,H)])),...Object.fromEntries(["$errors","$silentErrors"].map(H=>[H,$t(P,H)]))}]:[])):{},set(){}}),le={};return ee(),{$dirty:f,$anyDirty:R,$invalid:x,$correct:F,$error:B,$pending:J,$errors:fe,$silentErrors:ce,$ready:q,$name:g,$shortcuts:le,$groups:se,$silentValue:i,$edited:v,$anyEdited:j,$localPending:Z}});}function b(){w?.(),a?.(),S?.(),O?.(),A=[],C={},u.value&&Object.entries(u.value).forEach(([i,f])=>{f.$unwatch();});}function M(){Object.entries(u.value).forEach(([i,f])=>{f.$clearExternalErrors();});}function L(i,f){if(a?.(),b(),!f)if(i?.toInitialState)t.value=N({...$.value??{}});else if(i?.toState){let R;typeof i?.toState=="function"?R=i?.toState():R=i?.toState,$.value=N(R),t.value=N(R);}else $.value=N(t.value);Object.values(u.value).forEach(R=>{R.$reset(i,true);}),T(),f||D();}function G(i=true,f=false){Object.values(u.value).forEach(R=>{R.$touch(i,f);});}function X(i){return i.filter(([f,R])=>Q(R)?!(R&&typeof R=="object"&&"_null"in R)&&!te(R):Array.isArray(R)?R.length:true)}function oe(i=true){let f=Object.entries(u.value).map(([R,x])=>[R,x.$extractDirtyFields(i)]);return i&&(f=X(f)),Object.fromEntries(f)}async function I(){try{if(h.schemaMode)return h.onValidate?(G(!1),C.$localPending.value=!0,h.onValidate()):{valid:!1,data:t.value};{let i=t.value;return {valid:(await Promise.allSettled(Object.values(u.value).map(x=>x.$validate()))).every(x=>x.status==="fulfilled"?x.value.valid===!0:!1),data:i}}}catch{return {valid:false,data:t.value}}finally{C.$localPending.value=false;}}let{$shortcuts:z,$localPending:me,...ue}=C;return reactive({...ue,...z,$fields:u,$value:t,$reset:L,$touch:G,$validate:I,$unwatch:b,$watch:o,$clearExternalErrors:M,$extractDirtyFields:oe})}function Te({rulesDef:e,...t}){if(Et(e,t.state))return At({rulesDef:e,...t});if(ke(t.state,e)){if(_e(t.state))return We({rulesDef:e,...t});{let n=effectScope().run(()=>{let m=toRef(t.state.value?t.state:ref({}));return watch(()=>t.state.value,d=>{m.value=d;},{deep:true}),watch(m,d=>{t.state.value=d;},{deep:true}),{fakeState:m}}),{state:l,...c}=t;return We({rulesDef:e,...c,state:n.fakeState})}}else if(Ge(e))return be({rulesDef:e,...t})}function Ce({initialState:e,options:t,scopeRules:r,state:n,customRules:l,shortcuts:c,schemaErrors:m,schemaMode:d=false,onValidate:$}){let p=Je(),h=ref();return ke(n,r)?h.value=We({rootRules:r,rulesDef:r,state:n,customMessages:l?.(),storage:p,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:c,fieldName:"root",path:"",schemaErrors:m,rootSchemaErrors:m,schemaMode:d,onValidate:$}):Ge(r)&&(h.value=be({rulesDef:r,state:n,customMessages:l?.(),storage:p,options:t,externalErrors:t.externalErrors,initialState:e,shortcuts:c,fieldName:"root",path:"",schemaMode:d,schemaErrors:m,onValidate:$})),getCurrentScope()&&onScopeDispose(()=>{h.value?.$unwatch();}),reactive({regle:h})}function nt(e,t,r){let n={autoDirty:t?.autoDirty,lazy:t?.lazy,rewardEarly:t?.rewardEarly,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange};function l(c,m,d){let $=isRef(m)?m:computed(typeof m=="function"?m:()=>m),p={...n,...d},h=isRef(c)?c:ref(c),V=ref(Q(h.value)?{...N(h.value)}:N(h.value));return {r$:Ce({scopeRules:$,state:h,options:p,initialState:V,customRules:e,shortcuts:r}).regle}}return l}var Le=nt();function at(){function e(t,r){return r}return e}var lt=at();function Vt({rules:e,modifiers:t,shortcuts:r}){let n=nt(e,t,r),l=at();return {useRegle:n,inferRules:l}}function Me(e,t){let r=t??false,n=computed({get:()=>r?Object.values(e).map(s=>s.$value):Object.fromEntries(Object.entries(e).map(([s,o])=>[s,o.$value])),set:s=>{r||typeof s=="object"&&Object.entries(s).forEach(([o,b])=>e[o].$value=b);}}),l=computed({get:()=>Object.fromEntries(Object.entries(e).map(([s,o])=>[s,o.$silentValue])),set:s=>{typeof s=="object"&&Object.entries(s).forEach(([o,b])=>e[o].$silentValue=b);}}),c=computed(()=>{let s=Object.entries(e);return !!s.length&&s.every(([o,b])=>b?.$dirty)}),m=computed(()=>Object.entries(e).some(([s,o])=>o?.$anyDirty)),d=computed(()=>Object.entries(e).some(([s,o])=>o?.$invalid)),$=computed(()=>{let s=Object.entries(e);return !!s.length&&s.every(([o,b])=>b?.$correct||b.$anyDirty&&!b.$invalid)}),p=computed(()=>Object.entries(e).some(([s,o])=>o?.$error)),h=computed(()=>{let s=Object.entries(e);return !!s.length&&s.every(([o,b])=>b?.$ready)}),V=computed(()=>Object.entries(e).some(([s,o])=>o?.$pending)),C=computed(()=>r?Object.entries(e).map(([s,o])=>o.$errors):Object.fromEntries(Object.entries(e).map(([s,o])=>[s,o.$errors]))),A=computed(()=>r?Object.entries(e).map(([s,o])=>o.$silentErrors):Object.fromEntries(Object.entries(e).map(([s,o])=>[s,o.$silentErrors]))),w=computed(()=>{let s=Object.entries(e);return !!s.length&&s.every(([o,b])=>b?.$edited)}),O=computed(()=>Object.entries(e).some(([s,o])=>o?.$anyEdited)),a=computed(()=>r?Object.values(e):e);function S(s){Object.values(e).forEach(o=>{o.$reset(s);});}function E(){Object.values(e).forEach(s=>{s.$touch();});}function D(s=true){return Object.values(e).map(o=>o.$extractDirtyFields(s))}function u(){Object.values(e).forEach(s=>{s.$clearExternalErrors();});}async function T(){try{let s=n.value;return {valid:(await Promise.allSettled(Object.values(e).map(M=>M.$validate()))).every(M=>M.status==="fulfilled"?M.value.valid===!0:!1),data:s}}catch{return {valid:false,data:n.value}}}return reactive({...!r&&{$silentValue:l},$errors:C,$silentErrors:A,$instances:a,$value:n,$dirty:c,$anyDirty:m,$invalid:d,$correct:$,$error:p,$pending:V,$ready:h,$edited:w,$anyEdited:O,$reset:S,$touch:E,$validate:T,$extractDirtyFields:D,$clearExternalErrors:u})}function Nt(e){function t(r){let n=computed(()=>toValue(r));m();let l=ref(d(e.value)),c=reactive({r$:l});function m(){n.value&&!e.value[n.value]&&(e.value[n.value]={});}watch(n,m),watch(e,$=>{l.value=d($);},{deep:true});function d($){if(n.value){let p=$[n.value]??{};return Me(p,true)}else return Me($["~~global"]??{},true)}return {r$:c.r$}}return {useCollectScope:t}}function Ut(e,t){let r=t??Le;return {useScopedRegle:(l,c,m)=>{let{namespace:d,...$}=m??{},p=computed(()=>toValue(d)),h=ref(`${Object.keys(e.value).length+1}-${$e()}`),V=computed(()=>`instance-${h.value}`),{r$:C}=r(l,c,$);w(),bt(A),watch(p,(O,a)=>{A(a),w();}),getCurrentInstance()&&onMounted(()=>{let O=getCurrentInstance();typeof window<"u"&&O?.proxy?.$el?.parentElement&&document.documentElement&&!document.documentElement.contains(O?.proxy?.$el?.parentElement)&&A();});function A(O){let a=O??p.value;a?e.value[a]&&delete e.value[a][V.value]:e.value["~~global"][V.value]&&delete e.value["~~global"][V.value];}function w(){p.value?(e.value[p.value]||(e.value[p.value]={}),e.value[p.value][V.value]=C):(e.value["~~global"]||(e.value["~~global"]={}),e.value["~~global"][V.value]=C);}return {r$:C,dispose:A,register:w}}}}function ot(e){let r=(e?.customStore?()=>(e.customStore&&(e.customStore?.value["~~global"]?e.customStore?.value&&(e.customStore.value={"~~global":{}}):e.customStore.value["~~global"]={}),e.customStore):Tt(()=>ref({"~~global":{}})))(),{useScopedRegle:n}=Ut(r,e?.customUseRegle),{useCollectScope:l}=Nt(r);return {useScopedRegle:n,useCollectScope:l}}
2
+ export{ze as InternalRuleType,Ke as createRule,ot as createScopedUseRegle,Vt as defineRegleConfig,lt as inferRules,Me as mergeRegles,re as unwrapRuleParameters,Le as useRegle,Ce as useRootStorage};
@@ -613,7 +613,7 @@ function createReactiveRuleStatus({
613
613
  });
614
614
  $unwatchState = watch(scopeState?.$params, () => {
615
615
  if (modifiers.$autoDirty.value || modifiers.$rewardEarly.value && scopeState.$fieldError.value) {
616
- $validate();
616
+ $parse();
617
617
  }
618
618
  });
619
619
  }
@@ -659,7 +659,7 @@ function createReactiveRuleStatus({
659
659
  return ruleResult;
660
660
  }
661
661
  const $computeAsyncDebounce = debounce(computeAsyncResult, $debounce ?? 200);
662
- async function $validate() {
662
+ async function $parse() {
663
663
  try {
664
664
  $validating.value = true;
665
665
  let ruleResult = false;
@@ -711,7 +711,7 @@ function createReactiveRuleStatus({
711
711
  $metadata,
712
712
  $haveAsync,
713
713
  $validating,
714
- $validate,
714
+ $parse,
715
715
  $unwatch,
716
716
  $watch,
717
717
  $reset
@@ -733,7 +733,8 @@ function createReactiveFieldStatus({
733
733
  onUnwatch,
734
734
  $isArray,
735
735
  initialState,
736
- shortcuts
736
+ shortcuts,
737
+ onValidate
737
738
  }) {
738
739
  let scope = effectScope();
739
740
  let scopeState;
@@ -1092,7 +1093,7 @@ function createReactiveFieldStatus({
1092
1093
  }
1093
1094
  function $commitHandler() {
1094
1095
  Object.values($rules.value).forEach((rule) => {
1095
- rule.$validate();
1096
+ rule.$parse();
1096
1097
  });
1097
1098
  }
1098
1099
  const $rules = ref({});
@@ -1128,7 +1129,7 @@ function createReactiveFieldStatus({
1128
1129
  }
1129
1130
  if (!scopeState.$lazy.value && scopeState.$autoDirty.value) {
1130
1131
  Object.values($rules.value).forEach((rule) => {
1131
- return rule.$validate();
1132
+ return rule.$parse();
1132
1133
  });
1133
1134
  }
1134
1135
  if (!fromParent) {
@@ -1149,21 +1150,29 @@ function createReactiveFieldStatus({
1149
1150
  }
1150
1151
  async function $validate() {
1151
1152
  try {
1153
+ if (schemaMode) {
1154
+ if (onValidate) {
1155
+ $touch(false);
1156
+ return onValidate();
1157
+ } else {
1158
+ return { valid: false, data: state.value };
1159
+ }
1160
+ }
1152
1161
  const data = state.value;
1153
1162
  scopeState.triggerPunishment.value = true;
1154
1163
  if (!scopeState.$dirty.value) {
1155
1164
  scopeState.$dirty.value = true;
1156
1165
  } else if (scopeState.$autoDirty.value && scopeState.$dirty.value && !scopeState.$pending.value) {
1157
- return { result: !scopeState.$error.value, data };
1166
+ return { valid: !scopeState.$error.value, data };
1158
1167
  }
1159
1168
  if (schemaMode) {
1160
- return { result: !schemaErrors?.value?.length, data };
1169
+ return { valid: !schemaErrors?.value?.length, data };
1161
1170
  } else if (isEmpty($rules.value)) {
1162
- return { result: true, data };
1171
+ return { valid: true, data };
1163
1172
  }
1164
1173
  const results = await Promise.allSettled(
1165
1174
  Object.entries($rules.value).map(([key, rule]) => {
1166
- return rule.$validate();
1175
+ return rule.$parse();
1167
1176
  })
1168
1177
  );
1169
1178
  const validationResults = results.every((value) => {
@@ -1173,9 +1182,9 @@ function createReactiveFieldStatus({
1173
1182
  return false;
1174
1183
  }
1175
1184
  });
1176
- return { result: validationResults, data };
1185
+ return { valid: validationResults, data };
1177
1186
  } catch (e) {
1178
- return { result: false, data: state.value };
1187
+ return { valid: false, data: state.value };
1179
1188
  }
1180
1189
  }
1181
1190
  function $extractDirtyFields(filterNullishValues = true) {
@@ -1637,20 +1646,20 @@ function createReactiveCollectionStatus({
1637
1646
  try {
1638
1647
  const results = await Promise.allSettled([
1639
1648
  $selfStatus.value.$validate(),
1640
- ...$eachStatus.value.map((rule) => {
1641
- return rule.$validate();
1649
+ ...$eachStatus.value.map((status) => {
1650
+ return status.$validate();
1642
1651
  })
1643
1652
  ]);
1644
1653
  const validationResults = results.every((value) => {
1645
1654
  if (value.status === "fulfilled") {
1646
- return value.value.result === true;
1655
+ return value.value.valid === true;
1647
1656
  } else {
1648
1657
  return false;
1649
1658
  }
1650
1659
  });
1651
- return { result: validationResults, data };
1660
+ return { valid: validationResults, data };
1652
1661
  } catch (e) {
1653
- return { result: false, data };
1662
+ return { valid: false, data };
1654
1663
  }
1655
1664
  }
1656
1665
  function $clearExternalErrors() {
@@ -1884,7 +1893,7 @@ function createReactiveNestedStatus({
1884
1893
  });
1885
1894
  });
1886
1895
  const $invalid = computed(() => {
1887
- return Object.entries($fields.value).some(([_, statusOrField]) => {
1896
+ return !!Object.entries($fields.value).length && Object.entries($fields.value).some(([_, statusOrField]) => {
1888
1897
  return statusOrField?.$invalid;
1889
1898
  });
1890
1899
  });
@@ -1902,7 +1911,11 @@ function createReactiveNestedStatus({
1902
1911
  }
1903
1912
  return false;
1904
1913
  });
1905
- const $error = computed(() => $anyDirty.value && !$pending.value && $invalid.value);
1914
+ const $error = computed(() => {
1915
+ return !!Object.entries($fields.value).length && Object.entries($fields.value).some(([_, statusOrField]) => {
1916
+ return statusOrField?.$error;
1917
+ });
1918
+ });
1906
1919
  const $rewardEarly = computed(() => {
1907
1920
  if (unref(commonArgs.options.rewardEarly) != null) {
1908
1921
  return unref(commonArgs.options.rewardEarly);
@@ -2120,7 +2133,7 @@ function createReactiveNestedStatus({
2120
2133
  scopeState.$localPending.value = true;
2121
2134
  return commonArgs.onValidate();
2122
2135
  } else {
2123
- return { result: false, data: state.value };
2136
+ return { valid: false, data: state.value };
2124
2137
  }
2125
2138
  } else {
2126
2139
  const data = state.value;
@@ -2131,15 +2144,15 @@ function createReactiveNestedStatus({
2131
2144
  );
2132
2145
  const validationResults = results.every((value) => {
2133
2146
  if (value.status === "fulfilled") {
2134
- return value.value.result === true;
2147
+ return value.value.valid === true;
2135
2148
  } else {
2136
2149
  return false;
2137
2150
  }
2138
2151
  });
2139
- return { result: validationResults, data };
2152
+ return { valid: validationResults, data };
2140
2153
  }
2141
2154
  } catch (e) {
2142
- return { result: false, data: state.value };
2155
+ return { valid: false, data: state.value };
2143
2156
  } finally {
2144
2157
  scopeState.$localPending.value = false;
2145
2158
  }
@@ -2224,24 +2237,42 @@ function useRootStorage({
2224
2237
  }) {
2225
2238
  const storage = useStorage();
2226
2239
  const regle = ref();
2227
- regle.value = createReactiveNestedStatus({
2228
- rootRules: scopeRules,
2229
- rulesDef: scopeRules,
2230
- state,
2231
- customMessages: customRules?.(),
2232
- storage,
2233
- options,
2234
- externalErrors: options.externalErrors,
2235
- validationGroups: options.validationGroups,
2236
- initialState,
2237
- shortcuts,
2238
- fieldName: "root",
2239
- path: "",
2240
- schemaErrors,
2241
- rootSchemaErrors: schemaErrors,
2242
- schemaMode,
2243
- onValidate
2244
- });
2240
+ if (isNestedRulesDef(state, scopeRules)) {
2241
+ regle.value = createReactiveNestedStatus({
2242
+ rootRules: scopeRules,
2243
+ rulesDef: scopeRules,
2244
+ state,
2245
+ customMessages: customRules?.(),
2246
+ storage,
2247
+ options,
2248
+ externalErrors: options.externalErrors,
2249
+ validationGroups: options.validationGroups,
2250
+ initialState,
2251
+ shortcuts,
2252
+ fieldName: "root",
2253
+ path: "",
2254
+ schemaErrors,
2255
+ rootSchemaErrors: schemaErrors,
2256
+ schemaMode,
2257
+ onValidate
2258
+ });
2259
+ } else if (isValidatorRulesDef(scopeRules)) {
2260
+ regle.value = createReactiveFieldStatus({
2261
+ rulesDef: scopeRules,
2262
+ state,
2263
+ customMessages: customRules?.(),
2264
+ storage,
2265
+ options,
2266
+ externalErrors: options.externalErrors,
2267
+ initialState,
2268
+ shortcuts,
2269
+ fieldName: "root",
2270
+ path: "",
2271
+ schemaMode,
2272
+ schemaErrors,
2273
+ onValidate
2274
+ });
2275
+ }
2245
2276
  if (getCurrentScope()) {
2246
2277
  onScopeDispose(() => {
2247
2278
  regle.value?.$unwatch();
@@ -2265,7 +2296,9 @@ function createUseRegleComposable(customRules, options, shortcuts) {
2265
2296
  ...options2
2266
2297
  };
2267
2298
  const processedState = isRef(state) ? state : ref(state);
2268
- const initialState = ref({ ...cloneDeep(processedState.value) });
2299
+ const initialState = ref(
2300
+ isObject(processedState.value) ? { ...cloneDeep(processedState.value) } : cloneDeep(processedState.value)
2301
+ );
2269
2302
  const regle = useRootStorage({
2270
2303
  scopeRules,
2271
2304
  state: processedState,
@@ -2435,14 +2468,14 @@ function mergeRegles(regles, _scoped) {
2435
2468
  );
2436
2469
  const validationResults = results.every((value) => {
2437
2470
  if (value.status === "fulfilled") {
2438
- return value.value.result === true;
2471
+ return value.value.valid === true;
2439
2472
  } else {
2440
2473
  return false;
2441
2474
  }
2442
2475
  });
2443
- return { result: validationResults, data };
2476
+ return { valid: validationResults, data };
2444
2477
  } catch (e) {
2445
- return { result: false, data: $value.value };
2478
+ return { valid: false, data: $value.value };
2446
2479
  }
2447
2480
  }
2448
2481
  return reactive({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@regle/core",
3
- "version": "0.9.1",
3
+ "version": "0.10.1",
4
4
  "description": "Type safe form validation library for Vue 3",
5
5
  "peerDependencies": {
6
6
  "pinia": ">=2.2.5",