@regle/core 0.10.0 → 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.
@@ -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;
@@ -1151,6 +1152,14 @@ 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) {
@@ -2230,24 +2239,42 @@ function useRootStorage({
2230
2239
  }) {
2231
2240
  const storage = useStorage();
2232
2241
  const regle = vue.ref();
2233
- regle.value = createReactiveNestedStatus({
2234
- rootRules: scopeRules,
2235
- rulesDef: scopeRules,
2236
- state,
2237
- customMessages: customRules?.(),
2238
- storage,
2239
- options,
2240
- externalErrors: options.externalErrors,
2241
- validationGroups: options.validationGroups,
2242
- initialState,
2243
- shortcuts,
2244
- fieldName: "root",
2245
- path: "",
2246
- schemaErrors,
2247
- rootSchemaErrors: schemaErrors,
2248
- schemaMode,
2249
- onValidate
2250
- });
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
+ }
2251
2278
  if (vue.getCurrentScope()) {
2252
2279
  vue.onScopeDispose(() => {
2253
2280
  regle.value?.$unwatch();
@@ -2271,7 +2298,9 @@ function createUseRegleComposable(customRules, options, shortcuts) {
2271
2298
  ...options2
2272
2299
  };
2273
2300
  const processedState = vue.isRef(state) ? state : vue.ref(state);
2274
- const initialState = vue.ref({ ...cloneDeep(processedState.value) });
2301
+ const initialState = vue.ref(
2302
+ isObject(processedState.value) ? { ...cloneDeep(processedState.value) } : cloneDeep(processedState.value)
2303
+ );
2275
2304
  const regle = useRootStorage({
2276
2305
  scopeRules,
2277
2306
  state: processedState,
@@ -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;
@@ -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;
@@ -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 U(e){let t=e,r={}.toString.call(e).slice(8,-1);if(r=="Set"&&(t=new Set([...e].map(n=>U(n)))),r=="Map"&&(t=new Map([...e].map(n=>[U(n[0]),U(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]=U(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=(...f)=>new Promise(p=>{clearTimeout(n),n=setTimeout(()=>{n=undefined,Promise.resolve(e.apply(this,[...f])).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(...f){return Be(e,...f)};return l.validator=r.validator,l.message=r.message,l.active=r.active,l.tooltip=r.tooltip,l.type=r.type,l.exec=r.exec,l._validator=r.validator,l._message=r.message,l._active=r.active,l._tooltip=r.tooltip,l._type=e.type,l._message_pacthed=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),f=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){f.value.set(`${v}-${E}`,D);}function m(v,E){return f.value.get(`${v}-${E}`)}function b(v,E){v&&E!=null&&f.value.delete(`${v}-${E}`);}function V(v,E){n.value.set(v,E);}function C(v){return n.value.get(v)??false}function F(v,E){e.value.set(v,E);}function O(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),i=Object.keys(v);return i.length!==D.length||!i.every(o=>D.includes(o))?false:i.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((A,q)=>{if(typeof h=="number"||typeof h=="boolean")return true;{let W=te(h._params),X=te(s._params);return W?.[q]===X?.[q]}}):true})}function w(v){let E=l.value.get(v);if(E)return E;{let D=vue.ref(false),i=vue.ref(true),S=vue.ref({}),o=vue.ref(false);return l.value.set(v,{$pending:D,$valid:i,$metadata:S,$validating:o}),{$pending:D,$valid:i,$metadata:S,$validating:o}}}return vue.getCurrentScope()&&vue.onScopeDispose(()=>{e.value.clear(),t.value.clear(),r.value.clear(),n.value.clear(),l.value.clear(),f.value.clear();}),{addRuleDeclEntry:F,setDirtyEntry:V,checkRuleDeclEntry:O,getDirtyState:C,trySetRuleStatusRef:w,getFieldsEntry:p,getCollectionsEntry:d,getArrayStatus:m,addArrayStatus:$,deleteArrayStatus:b,arrayStatusStorage:f}}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 f=Number(r[l]),p=Number(n[l]);if(f>p)return 1;if(p>f)return -1;if(!isNaN(f)&&isNaN(p))return 1;if(isNaN(f)&&!isNaN(p))return -1}return 0}var 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])=>Oe(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 Oe(e){return ae(e)&&"_validator"in e}function we(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:f,$debounce:p,modifiers:d}){let $=vue.effectScope(),m={},b,V=vue.ref(false),{$pending:C,$valid:F,$metadata:O,$validating:a}=f.trySetRuleStatusRef(`${l}.${r}`);function w(){$=vue.effectScope(),m=$.run(()=>{let s=vue.ref(false),h=vue.ref(false),A=vue.ref(true),q=vue.ref(false),W=vue.ref(false),X=vue.computed(()=>({$value:n.value,$error:h.value,$dirty:s.value,$pending:q.value,$correct:W.value,$invalid:A.value,$rule:{$valid:F.value,$invalid:!F.value,$pending:C.value},$params:c.value,...O.value})),I=vue.computed(()=>we(t)?typeof t.value.active=="function"?t.value.active(X.value):!!t.value.active:true);function B(T){let j="",H=e?e[r]?.[T]:undefined;if(H&&(typeof H=="function"?j=H(X.value):j=H),we(t)){let y=`_${T}_patched`;H&&!t.value[y]||(typeof t.value[T]=="function"?j=t.value[T](X.value):j=t.value[T]??"");}return j}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(()=>we(t)&&t.value.type?t.value.type:r),u=vue.computed(()=>we(t)?t.value.validator:t.value),c=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:c,$path:R,$tooltip:ye,$fieldCorrect:W,$fieldError:h,$fieldDirty:s,$fieldPending:q,$fieldInvalid:A}}),b=vue.watch(m?.$params,()=>{(d.$autoDirty.value||d.$rewardEarly.value&&m.$fieldError.value)&&i();});}w();function v(){F.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 A=h(n.value,...m.$params.value),q=n.value;v();let W;if(A instanceof Promise?W=await A:W=A,n.value!==q)return !0;if(typeof W=="boolean")s=W;else {let{$valid:X,...I}=W;s=X,O.value=I;}}catch{s=false;}finally{C.value=false;}return s}let D=Fe(E,p??200);async function i(){try{a.value=!0;let s=!1;if(Oe(t.value)&&t.value._async)s=await D();else {let h=m.$validator.value,A=h(n.value,...m.$params.value);if(A 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(A!=null)if(typeof A=="boolean")s=A;else {let{$valid:q,...W}=A;s=q,O.value=W;}}return F.value=s,s}catch{return false}finally{a.value=false;}}function S(){F.value=true,O.value={},C.value=false,a.value=false,w();}function o(){b(),$.stop(),$=vue.effectScope();}return vue.reactive({...m,$pending:C,$valid:F,$metadata:O,$haveAsync:V,$validating:a,$parse:i,$unwatch:o,$watch:w,$reset:S})}function _e({state:e,rulesDef:t,customMessages:r,path:n,fieldName:l,storage:f,options:p,externalErrors:d,schemaErrors:$,schemaMode:m,onUnwatch:b,$isArray:V,initialState:C,shortcuts:F}){let O=vue.effectScope(),a,w=[],v,E,D,i,S,o=()=>{};function s(){let g=t.value,k=f.checkRuleDeclEntry(n,g);B.value=Object.fromEntries(Object.entries(g).filter(([M])=>M.startsWith("$"))),q(),I.value=Object.fromEntries(Object.entries(t.value).filter(([M])=>!M.startsWith("$")).map(([M,x])=>{if(x){let ue=vue.toRef(()=>x);return [M,Ct({modifiers:{$autoDirty:a.$autoDirty,$rewardEarly:a.$rewardEarly},customMessages:r,rule:ue,ruleKey:M,state:e,path:n,storage:f,$debounce:B.value.$debounce})]}return []}).filter(M=>!!M.length)),a.processShortcuts(),h(),k?.valid!=null&&(a.$dirty.value=f.getDirtyState(n),(a.$dirty.value&&a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&o()),f.addRuleDeclEntry(n,g);}function h(){o=a.$debounce.value?Fe(X,a.$debounce.value??a.$haveAnyAsyncRule?100:0):X;}function A(){I.value&&Object.entries(I.value).forEach(([g,k])=>{k.$unwatch();}),D(),S?.(),a.$dirty.value&&f.setDirtyEntry(n,a.$dirty.value),v?.(),E?.(),O.stop(),O=vue.effectScope(),w.forEach(g=>g.stop()),w=[],b?.(),i?.();}function q(){I.value&&Object.entries(I.value).forEach(([g,k])=>{k.$watch();}),a=O.run(()=>{let g=vue.ref(false),k=vue.ref(false),M=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),G=vue.computed(()=>B.value.$autoDirty!=null?B.value.$autoDirty:vue.unref(p.autoDirty)!=null?vue.unref(p.autoDirty):!le.value),P=vue.computed(()=>Object.entries(I.value).some(([oe,Q])=>Q.$validating)),z=vue.computed({get:()=>e.value,set(oe){v(),e.value=oe,W();}}),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(()=>G.value?M.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)&&!P.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(){F?.fields&&Object.entries(F.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:M,$tooltips:st,$name:it,$inactive:Me,$edited:Ue,$anyEdited:ot}));}),dt}),w.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:G,$clearExternalErrorsOnChange:pe,$anyDirty:M,$edited:Ue,$anyEdited:ot,$name:it,$haveAnyAsyncRule:Ut,$shortcuts:ft,$validating:P,$tooltips:st,$dirty:g,triggerPunishment:k,processShortcuts:Wt,$silentValue:z,$inactive:Me}}),W(),D=vue.watch(a.$dirty,g=>{f.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);}),i=vue.watch(a.$haveAnyAsyncRule,h);}function W(){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&&c();},{deep:V?true:Ve?1:true,flush:"post"});}function X(){Object.values(I.value).forEach(g=>{g.$parse();});}let I=vue.ref({}),B=vue.ref({});s();function de(g,k){if(c(),a.$dirty.value=false,a.triggerPunishment.value=false,f.setDirtyEntry(n,false),!k)if(g?.toInitialState)A(),e.value=U(C);else if(g?.toState){A();let M;typeof g?.toState=="function"?M=g?.toState():M=g?.toState,C.value=U(M),e.value=U(M);}else C.value=ae(e.value)?U(e.value):Array.isArray(e.value)?[...e.value]:e.value;k||Object.entries(I.value).forEach(([M,x])=>{x.$reset();}),!a.$lazy.value&&a.$autoDirty.value&&Object.values(I.value).forEach(M=>M.$parse()),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 {valid:!a.$error.value,data:g};return m?{valid:!$?.value?.length,data:g}:ee(I.value)?{valid:!0,data:g}:{valid:(await Promise.allSettled(Object.entries(I.value).map(([x,ue])=>ue.$parse()))).every(x=>x.status==="fulfilled"?x.value===!0:!1),data:g}}catch{return {valid:false,data:e.value}}}function u(g=true){return a.$dirty.value?e.value:g?{_null:true}:null}function c(){d?.value?.length&&(d.value=[]);}!a.$lazy.value&&!a.$dirty.value&&a.$autoDirty.value&&o();let{$shortcuts:R,$validating:T,$autoDirty:j,$rewardEarly:H,$clearExternalErrorsOnChange:y,$haveAnyAsyncRule:_,$debounce:K,$lazy:Z,triggerPunishment:Y,...se}=a;return vue.reactive({...se,$externalErrors:d,$value:e,$rules:I,...R,$reset:de,$touch:ye,$validate:ie,$unwatch:A,$watch:q,$extractDirtyFields:u,$clearExternalErrors:c})}function Qe({$id:e,path:t,index:r,options:n,storage:l,stateValue:f,customMessages:p,rules:d,externalErrors:$,schemaErrors:m,initialState:b,shortcuts:V,fieldName:C,schemaMode:F}){let O=d.$key?d.$key:Se(),a=`${t}.${String(O)}`;typeof f.value=="object"&&f.value!=null&&(f.value.$id?a=`${t}.${f.value.$id}`:Object.defineProperties(f.value,{$id:{value:O,enumerable:false,configurable:false,writable:false}}));let w=vue.toRef($?.value??[],r),v=vue.computed(()=>m?.value?.[r]),E=Ee({state:f,rulesDef:vue.toRef(()=>d),customMessages:p,path:a,storage:l,options:n,externalErrors:w,schemaErrors:v,initialState:b,shortcuts:V,fieldName:C,schemaMode:F});if(E){let D=f.value?.$id;E.$id=D??String(O),l.addArrayStatus(e,E.$id,E);}return E}function Pt({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:f,externalErrors:p,schemaErrors:d,schemaMode:$,initialState:m,shortcuts:b,fieldName:V}){let C=vue.effectScope(),F,O=vue.effectScope(),a,w=[];if(!Array.isArray(e.value)&&!t.value.$each)return;let v=vue.ref(),E=vue.ref(e.value),D,i=vue.ref({}),S=l.getCollectionsEntry(n);a=O.run(()=>({isPrimitiveArray:vue.computed(()=>Array.isArray(e.value)&&e.value.length?e.value.every(c=>typeof c!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(c=>Oe(c)||typeof c=="function"):false)})),o(),A();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=i.value.$value,Array.isArray(e.value)&&!a.isPrimitiveArray.value?S.value=e.value.filter(u=>typeof u=="object").map((u,c)=>{let{scope:R,unwrapped:T}=qe(t.value.$each,vue.toRef(()=>u),c);R&&w.push(R);let j=vue.toRef(m.value??[],c),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:c,options:f,storage:l,externalErrors:H,schemaErrors:y,initialState:j,shortcuts:b,fieldName:V,schemaMode:$});return _||null}).filter(u=>!!u):S.value=[],i.value=_e({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:f,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=U(S.value);S.value=e.value.filter(c=>typeof c=="object").map((c,R)=>{let T=vue.toRef(()=>c);if(c.$id&&S.value.find(j=>j.$id===c.$id)){let j=l.getArrayStatus(v.value,c.$id);return j?(j.$value=T,j):null}else {let{scope:j,unwrapped:H}=qe(t.value.$each,T,R);j&&w.push(j);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:f,storage:l,externalErrors:y,schemaErrors:_,initialState:vue.toRef(m.value??[],R),shortcuts:b,fieldName:V,schemaMode:$});return K||null}}).filter(c=>!!c),u.filter(c=>!e.value?.find(R=>c.$id===R.$id)).forEach((c,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 A(){h(),C=vue.effectScope(),F=C.run(()=>{let u=vue.computed({get:()=>e.value,set(x){D(),e.value=x,h();}}),c=vue.computed(()=>i.value.$dirty&&(!S.value.length||S.value.every(x=>x.$dirty))),R=vue.computed(()=>i.value.$anyDirty||S.value.some(x=>x.$anyDirty)),T=vue.computed(()=>i.value.$invalid||S.value.some(x=>x.$invalid)),j=vue.computed(()=>(ee(i.value.$rules)?true:i.value.$correct)&&(!S.value.length||S.value.every(x=>x.$correct||x.$anyDirty&&!x.$invalid))),H=vue.computed(()=>i.value.$error||S.value.some(x=>x.$error)),y=vue.computed(()=>!(T.value||_.value)),_=vue.computed(()=>i.value.$pending||S.value.some(x=>x.$pending)),K=vue.computed(()=>!!S.value.length&&S.value.every(x=>x.$edited)),Z=vue.computed(()=>i.value.$anyEdited||S.value.some(x=>x.$anyEdited)),Y=vue.computed(()=>({$self:i.value.$errors,$each:S.value.map(x=>x.$errors)})),se=vue.computed(()=>({$self:i.value.$silentErrors,$each:S.value.map(x=>x.$silentErrors)})),g=vue.computed(()=>V);function k(){b?.collections&&Object.entries(b?.collections).forEach(([x,ue])=>{let le=vue.effectScope();M[x]=le.run(()=>{let pe=vue.ref();return vue.watchEffect(()=>{pe.value=ue(vue.reactive({$dirty:c,$error:H,$silentValue:u,$pending:_,$invalid:T,$correct:j,$errors:Y,$ready:y,$silentErrors:se,$anyDirty:R,$name:g,$each:S,$self:i,$value:e,$edited:K,$anyEdited:Z}));}),pe}),w.push(le);});}let M={};return k(),{$dirty:c,$anyDirty:R,$invalid:T,$correct:j,$error:H,$pending:_,$errors:Y,$silentErrors:se,$ready:y,$name:g,$shortcuts:M,$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(),i.value&&i.value.$unwatch(),S.value&&S.value.forEach(u=>{"$dirty"in u&&u.$unwatch();}),C.stop(),C=vue.effectScope(),O.stop(),O=vue.effectScope(true),w.forEach(u=>u.stop()),w=[];}function W(u=true,c=false){i.value.$touch(u,c),S.value.forEach(R=>{R.$touch(u,c);});}function X(u,c){if(q(),!c)if(u?.toInitialState)e.value=U(m.value);else if(u?.toState){let R;typeof u?.toState=="function"?R=u?.toState():R=u?.toState,m.value=U(R),e.value=U(R);}else m.value=U(e.value);i.value.$reset(),S.value.forEach(R=>{R.$reset(u,true);}),c||o();}async function I(){let u=e.value;try{return {valid:(await Promise.allSettled([i.value.$validate(),...S.value.map(T=>T.$validate())])).every(T=>T.status==="fulfilled"?T.value.valid===!0:!1),data:u}}catch{return {valid:false,data:u}}}function B(){i.value.$clearExternalErrors(),S.value.forEach(u=>{u.$clearExternalErrors();});}function de(u=true){let c=S.value.map(R=>{if(Tt(R))return R.$extractDirtyFields(u)});return u&&c.every(R=>ee(R))&&(c=[]),c}let{$shortcuts:ye,...ie}=F;return vue.reactive({$self:i,...ie,...ye,$each:S,$value:e,$validate:I,$unwatch:q,$watch:A,$touch:W,$reset:X,$extractDirtyFields:de,$clearExternalErrors:B})}function Ne({rulesDef:e,state:t,path:r="",rootRules:n,externalErrors:l,schemaErrors:f,rootSchemaErrors:p,validationGroups:d,initialState:$,fieldName:m,...b}){let V=vue.effectScope(),C,F=[],O=null,a=null,w=null,v=null;async function D(u=true){let c=Object.entries(e.value),R=Object.fromEntries(c.filter(([y,_])=>!!_).map(([y,_])=>{if(_){let K=vue.toRef(t.value??{},y),Z=vue.toRef(()=>_),Y=vue.toRef(l?.value??{},y),se=vue.computed(()=>f?.value?.[y]),g=vue.toRef($?.value??{},y);return [y,Ee({state:K,rulesDef:Z,path:r?`${r}.${y}`:y,externalErrors:Y,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(()=>f?.value?.[y]),Y=vue.toRef($?.value??{},y);return [y,Ee({state:_,rulesDef:vue.computed(()=>({})),path:r?`${r}.${y}`:y,externalErrors:K,schemaErrors:Z,initialState:Y,fieldName:y,...b})]})),j=Object.fromEntries(Object.entries(vue.unref(f)??{}).map(([y])=>{let _=vue.toRef(t.value??{},y),K=vue.toRef(l?.value??{},y),Z=vue.computed(()=>f?.value?.[y]),Y=vue.toRef($?.value??{},y);return [y,Ee({state:_,rulesDef:vue.computed(()=>({})),path:r?`${r}.${y}`:y,externalErrors:K,schemaErrors:Z,initialState:Y,fieldName:y,...b})]})),H=Object.fromEntries(Object.entries(t.value??{}).filter(([y])=>!(y in e.value)&&!(y in(T??{}))&&!(y in(j??{}))).map(([y])=>{let _=vue.toRef(t.value??{},y),K=vue.toRef(l?.value??{},y),Z=vue.computed(()=>f?.value?.[y]),Y=vue.toRef($?.value??{},y);return [y,Ee({state:_,rulesDef:vue.computed(()=>({})),path:r?`${r}.${y}`:y,externalErrors:K,schemaErrors:Z,initialState:Y,fieldName:y,...b})]}));i.value={...R,...T,...j,...H},u&&s();}let i=b.storage.getFieldsEntry(r);D();function S(){l&&(w=vue.watch(l,()=>{h(),D();},{deep:true}));}function o(){v=vue.watch(t,()=>{h(),D(),W(true,true);},{flush:"sync"});}function s(){n&&(O?.(),O=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(G){h(),t.value=G,D();}}),c=vue.computed(()=>!!Object.entries(i.value).length&&Object.entries(i.value).every(([G,P])=>P?.$dirty)),R=vue.computed(()=>Object.entries(i.value).some(([G,P])=>P?.$anyDirty)),T=vue.computed(()=>!!Object.entries(i.value).length&&Object.entries(i.value).some(([G,P])=>P?.$invalid)),j=vue.computed(()=>{let G=Object.entries(i.value).filter(([P,z])=>xt(z)?!z.$inactive:true);return G.length?G.every(([P,z])=>z?.$correct||z.$anyDirty&&!z.$invalid):false}),H=vue.computed(()=>!!Object.entries(i.value).length&&Object.entries(i.value).some(([G,P])=>P?.$error)),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||Y.value):!(T.value||Y.value)),Z=vue.ref(false),Y=vue.computed(()=>Z.value||Object.entries(i.value).some(([G,P])=>P?.$pending)),se=vue.computed(()=>Object.fromEntries(Object.entries(i.value).map(([G,P])=>[G,P?.$errors]))),g=vue.computed(()=>Object.fromEntries(Object.entries(i.value).map(([G,P])=>[G,P?.$silentErrors]))),k=vue.computed(()=>!!Object.entries(i.value).length&&Object.entries(i.value).every(([G,P])=>P?.$edited)),M=vue.computed(()=>Object.entries(i.value).some(([G,P])=>P?.$anyEdited)),x=vue.computed(()=>m);function ue(){b.shortcuts?.nested&&Object.entries(b.shortcuts.nested).forEach(([G,P])=>{let z=vue.effectScope();pe[G]=z.run(()=>{let me=vue.ref();return vue.watchEffect(()=>{me.value=P(vue.reactive({$dirty:c,$value:t,$silentValue:u,$error:H,$pending:Y,$invalid:T,$correct:j,$ready:K,$anyDirty:R,$name:x,$silentErrors:g,$errors:se,$fields:i,$edited:k,$anyEdited:M}));}),me}),F.push(z);});}let le=vue.computed({get:()=>d?Object.fromEntries(Object.entries(d?.(i.value)??{}).map(([G,P])=>P.length?[G,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$correct"].map(z=>[z,mt(P,z)])),...Object.fromEntries(["$errors","$silentErrors"].map(z=>[z,yt(P,z)]))}]:[])):{},set(){}}),pe={};return ue(),{$dirty:c,$anyDirty:R,$invalid:T,$correct:j,$error:H,$pending:Y,$errors:se,$silentErrors:g,$ready:K,$name:x,$shortcuts:pe,$groups:le,$silentValue:u,$edited:k,$anyEdited:M,$localPending:Z}});}function h(){O?.(),w?.(),v?.(),a?.(),F=[],C={},i.value&&Object.entries(i.value).forEach(([u,c])=>{c.$unwatch();});}function A(){Object.entries(i.value).forEach(([u,c])=>{c.$clearExternalErrors();});}function q(u,c){if(w?.(),h(),!c)if(u?.toInitialState)t.value=U({...$.value??{}});else if(u?.toState){let R;typeof u?.toState=="function"?R=u?.toState():R=u?.toState,$.value=U(R),t.value=U(R);}else $.value=U(t.value);Object.values(i.value).forEach(R=>{R.$reset(u,true);}),S(),c||D();}function W(u=true,c=false){Object.values(i.value).forEach(R=>{R.$touch(u,c);});}function X(u){return u.filter(([c,R])=>ae(R)?!(R&&typeof R=="object"&&"_null"in R)&&!ee(R):Array.isArray(R)?R.length:true)}function I(u=true){let c=Object.entries(i.value).map(([R,T])=>[R,T.$extractDirtyFields(u)]);return u&&(c=X(c)),Object.fromEntries(c)}async function B(){try{if(b.schemaMode)return b.onValidate?(W(!1),C.$localPending.value=!0,b.onValidate()):{valid:!1,data:t.value};{let u=t.value;return {valid:(await Promise.allSettled(Object.values(i.value).map(T=>T.$validate()))).every(T=>T.status==="fulfilled"?T.value.valid===!0:!1),data:u}}}catch{return {valid:false,data:t.value}}finally{C.$localPending.value=false;}}let{$shortcuts:de,$localPending:ye,...ie}=C;return vue.reactive({...ie,...de,$fields:i,$value:t,$reset:q,$touch:W,$validate:B,$unwatch:h,$watch:s,$clearExternalErrors:A,$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,...f}=t;return Ne({rulesDef:e,...f,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:f,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:f,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(f,p,d){let $=vue.isRef(p)?p:vue.computed(typeof p=="function"?p:()=>p),m={...n,...d},b=vue.isRef(f)?f:vue.ref(f),V=vue.ref({...U(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);}}),f=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]))),F=vue.computed(()=>r?Object.entries(e).map(([o,s])=>s.$silentErrors):Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$silentErrors]))),O=vue.computed(()=>{let o=Object.entries(e);return !!o.length&&o.every(([s,h])=>h?.$edited)}),a=vue.computed(()=>Object.entries(e).some(([o,s])=>s?.$anyEdited)),w=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 i(){Object.values(e).forEach(o=>{o.$clearExternalErrors();});}async function S(){try{let o=n.value;return {valid:(await Promise.allSettled(Object.values(e).map(A=>A.$validate()))).every(A=>A.status==="fulfilled"?A.value.valid===!0:!1),data:o}}catch{return {valid:false,data:n.value}}}return vue.reactive({...!r&&{$silentValue:l},$errors:C,$silentErrors:F,$instances:w,$value:n,$dirty:f,$anyDirty:p,$invalid:d,$correct:$,$error:m,$pending:V,$ready:b,$edited:O,$anyEdited:a,$reset:v,$touch:E,$validate:S,$extractDirtyFields:D,$clearExternalErrors:i})}function _t(e){function t(r){let n=vue.computed(()=>vue.toValue(r));p();let l=vue.ref(d(e.value)),f=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$:f.r$}}return {useCollectScope:t}}function Gt(e,t){let r=t??Ge;return {useScopedRegle:(l,f,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,f,$);O(),$t(F),vue.watch(m,(a,w)=>{F(w),O();}),vue.getCurrentInstance()&&vue.onMounted(()=>{let a=vue.getCurrentInstance();typeof window<"u"&&a?.proxy?.$el?.parentElement&&document.documentElement&&!document.documentElement.contains(a?.proxy?.$el?.parentElement)&&F();});function F(a){let w=a??m.value;w?e.value[w]&&delete e.value[w][V.value]:e.value["~~global"][V.value]&&delete e.value["~~global"][V.value];}function O(){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:F,register:O}}}}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 U(e){let t=e,r={}.toString.call(e).slice(8,-1);if(r=="Set"&&(t=new Set([...e].map(n=>U(n)))),r=="Map"&&(t=new Map([...e].map(n=>[U(n[0]),U(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]=U(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=(...f)=>new Promise(p=>{clearTimeout(n),n=setTimeout(()=>{n=undefined,Promise.resolve(e.apply(this,[...f])).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(...f){return Be(e,...f)};return l.validator=r.validator,l.message=r.message,l.active=r.active,l.tooltip=r.tooltip,l.type=r.type,l.exec=r.exec,l._validator=r.validator,l._message=r.message,l._active=r.active,l._tooltip=r.tooltip,l._type=e.type,l._message_pacthed=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),f=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){f.value.set(`${v}-${E}`,D);}function m(v,E){return f.value.get(`${v}-${E}`)}function b(v,E){v&&E!=null&&f.value.delete(`${v}-${E}`);}function V(v,E){n.value.set(v,E);}function C(v){return n.value.get(v)??false}function F(v,E){e.value.set(v,E);}function O(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),i=Object.keys(v);return i.length!==D.length||!i.every(o=>D.includes(o))?false:i.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((A,q)=>{if(typeof h=="number"||typeof h=="boolean")return true;{let W=te(h._params),X=te(s._params);return W?.[q]===X?.[q]}}):true})}function w(v){let E=l.value.get(v);if(E)return E;{let D=ref(false),i=ref(true),S=ref({}),o=ref(false);return l.value.set(v,{$pending:D,$valid:i,$metadata:S,$validating:o}),{$pending:D,$valid:i,$metadata:S,$validating:o}}}return getCurrentScope()&&onScopeDispose(()=>{e.value.clear(),t.value.clear(),r.value.clear(),n.value.clear(),l.value.clear(),f.value.clear();}),{addRuleDeclEntry:F,setDirtyEntry:V,checkRuleDeclEntry:O,getDirtyState:C,trySetRuleStatusRef:w,getFieldsEntry:p,getCollectionsEntry:d,getArrayStatus:m,addArrayStatus:$,deleteArrayStatus:b,arrayStatusStorage:f}}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 f=Number(r[l]),p=Number(n[l]);if(f>p)return 1;if(p>f)return -1;if(!isNaN(f)&&isNaN(p))return 1;if(isNaN(f)&&!isNaN(p))return -1}return 0}var 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])=>Oe(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 Oe(e){return ae(e)&&"_validator"in e}function we(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:f,$debounce:p,modifiers:d}){let $=effectScope(),m={},b,V=ref(false),{$pending:C,$valid:F,$metadata:O,$validating:a}=f.trySetRuleStatusRef(`${l}.${r}`);function w(){$=effectScope(),m=$.run(()=>{let s=ref(false),h=ref(false),A=ref(true),q=ref(false),W=ref(false),X=computed(()=>({$value:n.value,$error:h.value,$dirty:s.value,$pending:q.value,$correct:W.value,$invalid:A.value,$rule:{$valid:F.value,$invalid:!F.value,$pending:C.value},$params:c.value,...O.value})),I=computed(()=>we(t)?typeof t.value.active=="function"?t.value.active(X.value):!!t.value.active:true);function B(T){let j="",H=e?e[r]?.[T]:undefined;if(H&&(typeof H=="function"?j=H(X.value):j=H),we(t)){let y=`_${T}_patched`;H&&!t.value[y]||(typeof t.value[T]=="function"?j=t.value[T](X.value):j=t.value[T]??"");}return j}let de=computed(()=>{let T=B("message");return ee(T)&&(T="This field is not valid"),T}),ye=computed(()=>B("tooltip")),ie=computed(()=>we(t)&&t.value.type?t.value.type:r),u=computed(()=>we(t)?t.value.validator:t.value),c=computed(()=>typeof t.value=="function"?[]:te(t.value._params??[])),R=computed(()=>`${l}.${ie.value}`);return {$active:I,$message:de,$type:ie,$validator:u,$params:c,$path:R,$tooltip:ye,$fieldCorrect:W,$fieldError:h,$fieldDirty:s,$fieldPending:q,$fieldInvalid:A}}),b=watch(m?.$params,()=>{(d.$autoDirty.value||d.$rewardEarly.value&&m.$fieldError.value)&&i();});}w();function v(){F.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 A=h(n.value,...m.$params.value),q=n.value;v();let W;if(A instanceof Promise?W=await A:W=A,n.value!==q)return !0;if(typeof W=="boolean")s=W;else {let{$valid:X,...I}=W;s=X,O.value=I;}}catch{s=false;}finally{C.value=false;}return s}let D=Fe(E,p??200);async function i(){try{a.value=!0;let s=!1;if(Oe(t.value)&&t.value._async)s=await D();else {let h=m.$validator.value,A=h(n.value,...m.$params.value);if(A 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(A!=null)if(typeof A=="boolean")s=A;else {let{$valid:q,...W}=A;s=q,O.value=W;}}return F.value=s,s}catch{return false}finally{a.value=false;}}function S(){F.value=true,O.value={},C.value=false,a.value=false,w();}function o(){b(),$.stop(),$=effectScope();}return reactive({...m,$pending:C,$valid:F,$metadata:O,$haveAsync:V,$validating:a,$parse:i,$unwatch:o,$watch:w,$reset:S})}function _e({state:e,rulesDef:t,customMessages:r,path:n,fieldName:l,storage:f,options:p,externalErrors:d,schemaErrors:$,schemaMode:m,onUnwatch:b,$isArray:V,initialState:C,shortcuts:F}){let O=effectScope(),a,w=[],v,E,D,i,S,o=()=>{};function s(){let g=t.value,k=f.checkRuleDeclEntry(n,g);B.value=Object.fromEntries(Object.entries(g).filter(([M])=>M.startsWith("$"))),q(),I.value=Object.fromEntries(Object.entries(t.value).filter(([M])=>!M.startsWith("$")).map(([M,x])=>{if(x){let ue=toRef(()=>x);return [M,Ct({modifiers:{$autoDirty:a.$autoDirty,$rewardEarly:a.$rewardEarly},customMessages:r,rule:ue,ruleKey:M,state:e,path:n,storage:f,$debounce:B.value.$debounce})]}return []}).filter(M=>!!M.length)),a.processShortcuts(),h(),k?.valid!=null&&(a.$dirty.value=f.getDirtyState(n),(a.$dirty.value&&a.$autoDirty.value||a.$rewardEarly.value&&a.$error.value)&&o()),f.addRuleDeclEntry(n,g);}function h(){o=a.$debounce.value?Fe(X,a.$debounce.value??a.$haveAnyAsyncRule?100:0):X;}function A(){I.value&&Object.entries(I.value).forEach(([g,k])=>{k.$unwatch();}),D(),S?.(),a.$dirty.value&&f.setDirtyEntry(n,a.$dirty.value),v?.(),E?.(),O.stop(),O=effectScope(),w.forEach(g=>g.stop()),w=[],b?.(),i?.();}function q(){I.value&&Object.entries(I.value).forEach(([g,k])=>{k.$watch();}),a=O.run(()=>{let g=ref(false),k=ref(false),M=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),G=computed(()=>B.value.$autoDirty!=null?B.value.$autoDirty:unref(p.autoDirty)!=null?unref(p.autoDirty):!le.value),P=computed(()=>Object.entries(I.value).some(([oe,Q])=>Q.$validating)),z=computed({get:()=>e.value,set(oe){v(),e.value=oe,W();}}),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(()=>G.value?M.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)&&!P.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(){F?.fields&&Object.entries(F.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:M,$tooltips:st,$name:it,$inactive:Me,$edited:Ue,$anyEdited:ot}));}),dt}),w.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:G,$clearExternalErrorsOnChange:pe,$anyDirty:M,$edited:Ue,$anyEdited:ot,$name:it,$haveAnyAsyncRule:Ut,$shortcuts:ft,$validating:P,$tooltips:st,$dirty:g,triggerPunishment:k,processShortcuts:Wt,$silentValue:z,$inactive:Me}}),W(),D=watch(a.$dirty,g=>{f.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);}),i=watch(a.$haveAnyAsyncRule,h);}function W(){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&&c();},{deep:V?true:Ve?1:true,flush:"post"});}function X(){Object.values(I.value).forEach(g=>{g.$parse();});}let I=ref({}),B=ref({});s();function de(g,k){if(c(),a.$dirty.value=false,a.triggerPunishment.value=false,f.setDirtyEntry(n,false),!k)if(g?.toInitialState)A(),e.value=U(C);else if(g?.toState){A();let M;typeof g?.toState=="function"?M=g?.toState():M=g?.toState,C.value=U(M),e.value=U(M);}else C.value=ae(e.value)?U(e.value):Array.isArray(e.value)?[...e.value]:e.value;k||Object.entries(I.value).forEach(([M,x])=>{x.$reset();}),!a.$lazy.value&&a.$autoDirty.value&&Object.values(I.value).forEach(M=>M.$parse()),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 {valid:!a.$error.value,data:g};return m?{valid:!$?.value?.length,data:g}:ee(I.value)?{valid:!0,data:g}:{valid:(await Promise.allSettled(Object.entries(I.value).map(([x,ue])=>ue.$parse()))).every(x=>x.status==="fulfilled"?x.value===!0:!1),data:g}}catch{return {valid:false,data:e.value}}}function u(g=true){return a.$dirty.value?e.value:g?{_null:true}:null}function c(){d?.value?.length&&(d.value=[]);}!a.$lazy.value&&!a.$dirty.value&&a.$autoDirty.value&&o();let{$shortcuts:R,$validating:T,$autoDirty:j,$rewardEarly:H,$clearExternalErrorsOnChange:y,$haveAnyAsyncRule:_,$debounce:K,$lazy:Z,triggerPunishment:Y,...se}=a;return reactive({...se,$externalErrors:d,$value:e,$rules:I,...R,$reset:de,$touch:ye,$validate:ie,$unwatch:A,$watch:q,$extractDirtyFields:u,$clearExternalErrors:c})}function Qe({$id:e,path:t,index:r,options:n,storage:l,stateValue:f,customMessages:p,rules:d,externalErrors:$,schemaErrors:m,initialState:b,shortcuts:V,fieldName:C,schemaMode:F}){let O=d.$key?d.$key:Se(),a=`${t}.${String(O)}`;typeof f.value=="object"&&f.value!=null&&(f.value.$id?a=`${t}.${f.value.$id}`:Object.defineProperties(f.value,{$id:{value:O,enumerable:false,configurable:false,writable:false}}));let w=toRef($?.value??[],r),v=computed(()=>m?.value?.[r]),E=Ee({state:f,rulesDef:toRef(()=>d),customMessages:p,path:a,storage:l,options:n,externalErrors:w,schemaErrors:v,initialState:b,shortcuts:V,fieldName:C,schemaMode:F});if(E){let D=f.value?.$id;E.$id=D??String(O),l.addArrayStatus(e,E.$id,E);}return E}function Pt({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:f,externalErrors:p,schemaErrors:d,schemaMode:$,initialState:m,shortcuts:b,fieldName:V}){let C=effectScope(),F,O=effectScope(),a,w=[];if(!Array.isArray(e.value)&&!t.value.$each)return;let v=ref(),E=ref(e.value),D,i=ref({}),S=l.getCollectionsEntry(n);a=O.run(()=>({isPrimitiveArray:computed(()=>Array.isArray(e.value)&&e.value.length?e.value.every(c=>typeof c!="object"):t.value.$each&&!(t.value.$each instanceof Function)?Object.values(t.value.$each).every(c=>Oe(c)||typeof c=="function"):false)})),o(),A();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=i.value.$value,Array.isArray(e.value)&&!a.isPrimitiveArray.value?S.value=e.value.filter(u=>typeof u=="object").map((u,c)=>{let{scope:R,unwrapped:T}=qe(t.value.$each,toRef(()=>u),c);R&&w.push(R);let j=toRef(m.value??[],c),H=toRef(p?.value??{},"$each"),y=computed(()=>d?.value?.$each),_=Qe({$id:v.value,path:n,customMessages:r,rules:T??{},stateValue:toRef(()=>u),index:c,options:f,storage:l,externalErrors:H,schemaErrors:y,initialState:j,shortcuts:b,fieldName:V,schemaMode:$});return _||null}).filter(u=>!!u):S.value=[],i.value=_e({state:e,rulesDef:t,customMessages:r,path:n,storage:l,options:f,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=U(S.value);S.value=e.value.filter(c=>typeof c=="object").map((c,R)=>{let T=toRef(()=>c);if(c.$id&&S.value.find(j=>j.$id===c.$id)){let j=l.getArrayStatus(v.value,c.$id);return j?(j.$value=T,j):null}else {let{scope:j,unwrapped:H}=qe(t.value.$each,T,R);j&&w.push(j);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:f,storage:l,externalErrors:y,schemaErrors:_,initialState:toRef(m.value??[],R),shortcuts:b,fieldName:V,schemaMode:$});return K||null}}).filter(c=>!!c),u.filter(c=>!e.value?.find(R=>c.$id===R.$id)).forEach((c,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 A(){h(),C=effectScope(),F=C.run(()=>{let u=computed({get:()=>e.value,set(x){D(),e.value=x,h();}}),c=computed(()=>i.value.$dirty&&(!S.value.length||S.value.every(x=>x.$dirty))),R=computed(()=>i.value.$anyDirty||S.value.some(x=>x.$anyDirty)),T=computed(()=>i.value.$invalid||S.value.some(x=>x.$invalid)),j=computed(()=>(ee(i.value.$rules)?true:i.value.$correct)&&(!S.value.length||S.value.every(x=>x.$correct||x.$anyDirty&&!x.$invalid))),H=computed(()=>i.value.$error||S.value.some(x=>x.$error)),y=computed(()=>!(T.value||_.value)),_=computed(()=>i.value.$pending||S.value.some(x=>x.$pending)),K=computed(()=>!!S.value.length&&S.value.every(x=>x.$edited)),Z=computed(()=>i.value.$anyEdited||S.value.some(x=>x.$anyEdited)),Y=computed(()=>({$self:i.value.$errors,$each:S.value.map(x=>x.$errors)})),se=computed(()=>({$self:i.value.$silentErrors,$each:S.value.map(x=>x.$silentErrors)})),g=computed(()=>V);function k(){b?.collections&&Object.entries(b?.collections).forEach(([x,ue])=>{let le=effectScope();M[x]=le.run(()=>{let pe=ref();return watchEffect(()=>{pe.value=ue(reactive({$dirty:c,$error:H,$silentValue:u,$pending:_,$invalid:T,$correct:j,$errors:Y,$ready:y,$silentErrors:se,$anyDirty:R,$name:g,$each:S,$self:i,$value:e,$edited:K,$anyEdited:Z}));}),pe}),w.push(le);});}let M={};return k(),{$dirty:c,$anyDirty:R,$invalid:T,$correct:j,$error:H,$pending:_,$errors:Y,$silentErrors:se,$ready:y,$name:g,$shortcuts:M,$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(),i.value&&i.value.$unwatch(),S.value&&S.value.forEach(u=>{"$dirty"in u&&u.$unwatch();}),C.stop(),C=effectScope(),O.stop(),O=effectScope(true),w.forEach(u=>u.stop()),w=[];}function W(u=true,c=false){i.value.$touch(u,c),S.value.forEach(R=>{R.$touch(u,c);});}function X(u,c){if(q(),!c)if(u?.toInitialState)e.value=U(m.value);else if(u?.toState){let R;typeof u?.toState=="function"?R=u?.toState():R=u?.toState,m.value=U(R),e.value=U(R);}else m.value=U(e.value);i.value.$reset(),S.value.forEach(R=>{R.$reset(u,true);}),c||o();}async function I(){let u=e.value;try{return {valid:(await Promise.allSettled([i.value.$validate(),...S.value.map(T=>T.$validate())])).every(T=>T.status==="fulfilled"?T.value.valid===!0:!1),data:u}}catch{return {valid:false,data:u}}}function B(){i.value.$clearExternalErrors(),S.value.forEach(u=>{u.$clearExternalErrors();});}function de(u=true){let c=S.value.map(R=>{if(Tt(R))return R.$extractDirtyFields(u)});return u&&c.every(R=>ee(R))&&(c=[]),c}let{$shortcuts:ye,...ie}=F;return reactive({$self:i,...ie,...ye,$each:S,$value:e,$validate:I,$unwatch:q,$watch:A,$touch:W,$reset:X,$extractDirtyFields:de,$clearExternalErrors:B})}function Ne({rulesDef:e,state:t,path:r="",rootRules:n,externalErrors:l,schemaErrors:f,rootSchemaErrors:p,validationGroups:d,initialState:$,fieldName:m,...b}){let V=effectScope(),C,F=[],O=null,a=null,w=null,v=null;async function D(u=true){let c=Object.entries(e.value),R=Object.fromEntries(c.filter(([y,_])=>!!_).map(([y,_])=>{if(_){let K=toRef(t.value??{},y),Z=toRef(()=>_),Y=toRef(l?.value??{},y),se=computed(()=>f?.value?.[y]),g=toRef($?.value??{},y);return [y,Ee({state:K,rulesDef:Z,path:r?`${r}.${y}`:y,externalErrors:Y,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(()=>f?.value?.[y]),Y=toRef($?.value??{},y);return [y,Ee({state:_,rulesDef:computed(()=>({})),path:r?`${r}.${y}`:y,externalErrors:K,schemaErrors:Z,initialState:Y,fieldName:y,...b})]})),j=Object.fromEntries(Object.entries(unref(f)??{}).map(([y])=>{let _=toRef(t.value??{},y),K=toRef(l?.value??{},y),Z=computed(()=>f?.value?.[y]),Y=toRef($?.value??{},y);return [y,Ee({state:_,rulesDef:computed(()=>({})),path:r?`${r}.${y}`:y,externalErrors:K,schemaErrors:Z,initialState:Y,fieldName:y,...b})]})),H=Object.fromEntries(Object.entries(t.value??{}).filter(([y])=>!(y in e.value)&&!(y in(T??{}))&&!(y in(j??{}))).map(([y])=>{let _=toRef(t.value??{},y),K=toRef(l?.value??{},y),Z=computed(()=>f?.value?.[y]),Y=toRef($?.value??{},y);return [y,Ee({state:_,rulesDef:computed(()=>({})),path:r?`${r}.${y}`:y,externalErrors:K,schemaErrors:Z,initialState:Y,fieldName:y,...b})]}));i.value={...R,...T,...j,...H},u&&s();}let i=b.storage.getFieldsEntry(r);D();function S(){l&&(w=watch(l,()=>{h(),D();},{deep:true}));}function o(){v=watch(t,()=>{h(),D(),W(true,true);},{flush:"sync"});}function s(){n&&(O?.(),O=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(G){h(),t.value=G,D();}}),c=computed(()=>!!Object.entries(i.value).length&&Object.entries(i.value).every(([G,P])=>P?.$dirty)),R=computed(()=>Object.entries(i.value).some(([G,P])=>P?.$anyDirty)),T=computed(()=>!!Object.entries(i.value).length&&Object.entries(i.value).some(([G,P])=>P?.$invalid)),j=computed(()=>{let G=Object.entries(i.value).filter(([P,z])=>xt(z)?!z.$inactive:true);return G.length?G.every(([P,z])=>z?.$correct||z.$anyDirty&&!z.$invalid):false}),H=computed(()=>!!Object.entries(i.value).length&&Object.entries(i.value).some(([G,P])=>P?.$error)),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||Y.value):!(T.value||Y.value)),Z=ref(false),Y=computed(()=>Z.value||Object.entries(i.value).some(([G,P])=>P?.$pending)),se=computed(()=>Object.fromEntries(Object.entries(i.value).map(([G,P])=>[G,P?.$errors]))),g=computed(()=>Object.fromEntries(Object.entries(i.value).map(([G,P])=>[G,P?.$silentErrors]))),k=computed(()=>!!Object.entries(i.value).length&&Object.entries(i.value).every(([G,P])=>P?.$edited)),M=computed(()=>Object.entries(i.value).some(([G,P])=>P?.$anyEdited)),x=computed(()=>m);function ue(){b.shortcuts?.nested&&Object.entries(b.shortcuts.nested).forEach(([G,P])=>{let z=effectScope();pe[G]=z.run(()=>{let me=ref();return watchEffect(()=>{me.value=P(reactive({$dirty:c,$value:t,$silentValue:u,$error:H,$pending:Y,$invalid:T,$correct:j,$ready:K,$anyDirty:R,$name:x,$silentErrors:g,$errors:se,$fields:i,$edited:k,$anyEdited:M}));}),me}),F.push(z);});}let le=computed({get:()=>d?Object.fromEntries(Object.entries(d?.(i.value)??{}).map(([G,P])=>P.length?[G,{...Object.fromEntries(["$invalid","$error","$pending","$dirty","$correct"].map(z=>[z,mt(P,z)])),...Object.fromEntries(["$errors","$silentErrors"].map(z=>[z,yt(P,z)]))}]:[])):{},set(){}}),pe={};return ue(),{$dirty:c,$anyDirty:R,$invalid:T,$correct:j,$error:H,$pending:Y,$errors:se,$silentErrors:g,$ready:K,$name:x,$shortcuts:pe,$groups:le,$silentValue:u,$edited:k,$anyEdited:M,$localPending:Z}});}function h(){O?.(),w?.(),v?.(),a?.(),F=[],C={},i.value&&Object.entries(i.value).forEach(([u,c])=>{c.$unwatch();});}function A(){Object.entries(i.value).forEach(([u,c])=>{c.$clearExternalErrors();});}function q(u,c){if(w?.(),h(),!c)if(u?.toInitialState)t.value=U({...$.value??{}});else if(u?.toState){let R;typeof u?.toState=="function"?R=u?.toState():R=u?.toState,$.value=U(R),t.value=U(R);}else $.value=U(t.value);Object.values(i.value).forEach(R=>{R.$reset(u,true);}),S(),c||D();}function W(u=true,c=false){Object.values(i.value).forEach(R=>{R.$touch(u,c);});}function X(u){return u.filter(([c,R])=>ae(R)?!(R&&typeof R=="object"&&"_null"in R)&&!ee(R):Array.isArray(R)?R.length:true)}function I(u=true){let c=Object.entries(i.value).map(([R,T])=>[R,T.$extractDirtyFields(u)]);return u&&(c=X(c)),Object.fromEntries(c)}async function B(){try{if(b.schemaMode)return b.onValidate?(W(!1),C.$localPending.value=!0,b.onValidate()):{valid:!1,data:t.value};{let u=t.value;return {valid:(await Promise.allSettled(Object.values(i.value).map(T=>T.$validate()))).every(T=>T.status==="fulfilled"?T.value.valid===!0:!1),data:u}}}catch{return {valid:false,data:t.value}}finally{C.$localPending.value=false;}}let{$shortcuts:de,$localPending:ye,...ie}=C;return reactive({...ie,...de,$fields:i,$value:t,$reset:q,$touch:W,$validate:B,$unwatch:h,$watch:s,$clearExternalErrors:A,$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,...f}=t;return Ne({rulesDef:e,...f,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:f,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:f,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(f,p,d){let $=isRef(p)?p:computed(typeof p=="function"?p:()=>p),m={...n,...d},b=isRef(f)?f:ref(f),V=ref({...U(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);}}),f=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]))),F=computed(()=>r?Object.entries(e).map(([o,s])=>s.$silentErrors):Object.fromEntries(Object.entries(e).map(([o,s])=>[o,s.$silentErrors]))),O=computed(()=>{let o=Object.entries(e);return !!o.length&&o.every(([s,h])=>h?.$edited)}),a=computed(()=>Object.entries(e).some(([o,s])=>s?.$anyEdited)),w=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 i(){Object.values(e).forEach(o=>{o.$clearExternalErrors();});}async function S(){try{let o=n.value;return {valid:(await Promise.allSettled(Object.values(e).map(A=>A.$validate()))).every(A=>A.status==="fulfilled"?A.value.valid===!0:!1),data:o}}catch{return {valid:false,data:n.value}}}return reactive({...!r&&{$silentValue:l},$errors:C,$silentErrors:F,$instances:w,$value:n,$dirty:f,$anyDirty:p,$invalid:d,$correct:$,$error:m,$pending:V,$ready:b,$edited:O,$anyEdited:a,$reset:v,$touch:E,$validate:S,$extractDirtyFields:D,$clearExternalErrors:i})}function _t(e){function t(r){let n=computed(()=>toValue(r));p();let l=ref(d(e.value)),f=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$:f.r$}}return {useCollectScope:t}}function Gt(e,t){let r=t??Ge;return {useScopedRegle:(l,f,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,f,$);O(),$t(F),watch(m,(a,w)=>{F(w),O();}),getCurrentInstance()&&onMounted(()=>{let a=getCurrentInstance();typeof window<"u"&&a?.proxy?.$el?.parentElement&&document.documentElement&&!document.documentElement.contains(a?.proxy?.$el?.parentElement)&&F();});function F(a){let w=a??m.value;w?e.value[w]&&delete e.value[w][V.value]:e.value["~~global"][V.value]&&delete e.value["~~global"][V.value];}function O(){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:F,register:O}}}}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};
@@ -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;
@@ -1149,6 +1150,14 @@ 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) {
@@ -2228,24 +2237,42 @@ function useRootStorage({
2228
2237
  }) {
2229
2238
  const storage = useStorage();
2230
2239
  const regle = ref();
2231
- regle.value = createReactiveNestedStatus({
2232
- rootRules: scopeRules,
2233
- rulesDef: scopeRules,
2234
- state,
2235
- customMessages: customRules?.(),
2236
- storage,
2237
- options,
2238
- externalErrors: options.externalErrors,
2239
- validationGroups: options.validationGroups,
2240
- initialState,
2241
- shortcuts,
2242
- fieldName: "root",
2243
- path: "",
2244
- schemaErrors,
2245
- rootSchemaErrors: schemaErrors,
2246
- schemaMode,
2247
- onValidate
2248
- });
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
+ }
2249
2276
  if (getCurrentScope()) {
2250
2277
  onScopeDispose(() => {
2251
2278
  regle.value?.$unwatch();
@@ -2269,7 +2296,9 @@ function createUseRegleComposable(customRules, options, shortcuts) {
2269
2296
  ...options2
2270
2297
  };
2271
2298
  const processedState = isRef(state) ? state : ref(state);
2272
- const initialState = ref({ ...cloneDeep(processedState.value) });
2299
+ const initialState = ref(
2300
+ isObject(processedState.value) ? { ...cloneDeep(processedState.value) } : cloneDeep(processedState.value)
2301
+ );
2273
2302
  const regle = useRootStorage({
2274
2303
  scopeRules,
2275
2304
  state: processedState,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@regle/core",
3
- "version": "0.10.0",
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",