@regle/core 1.18.0-beta.2 → 1.18.0-beta.4
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.
- package/dist/regle-core.d.ts +126 -39
- package/dist/regle-core.js +100 -6
- package/dist/regle-core.min.js +2 -2
- package/package.json +1 -1
package/dist/regle-core.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @regle/core v1.18.0-beta.
|
|
2
|
+
* @regle/core v1.18.0-beta.4
|
|
3
3
|
* (c) 2026 Victor Garcia
|
|
4
4
|
* @license MIT
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import { ComputedRef, MaybeRef, MaybeRefOrGetter, Plugin, Raw, Ref, UnwrapNestedRefs, UnwrapRef } from "vue";
|
|
8
|
-
import { EmptyObject, IsAny, IsEmptyObject, IsUnion, IsUnknown, Merge, Or, RequireAtLeastOne, RequireOneOrNone, RequiredDeep, UnionToIntersection, UnionToTuple } from "type-fest";
|
|
8
|
+
import { EmptyObject, Get, IsAny, IsEmptyObject, IsNullable, IsOptional, IsStringLiteral, IsUnion, IsUnknown, Merge, Or, Paths, RequireAtLeastOne, RequireOneOrNone, RequiredDeep, UnionToIntersection, UnionToTuple } from "type-fest";
|
|
9
9
|
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
10
10
|
declare const RegleStaticSymbol: unique symbol;
|
|
11
11
|
type RegleStatic<T> = T extends (new (...args: infer Args) => infer U) ? RegleStaticImpl<new (...args: Args) => RegleStaticImpl<U>> : RegleStaticImpl<T>;
|
|
@@ -301,9 +301,9 @@ type NarrowVariant<TRoot extends {
|
|
|
301
301
|
} & { [K in TKey$1]: TRoot[K] & {
|
|
302
302
|
$value: TValue$1;
|
|
303
303
|
} };
|
|
304
|
-
type MaybeVariantStatus<TState$1 extends Record<string, any> | undefined = Record<string, any>, TRules$1 extends ReglePartialRuleTree<NonNullable<TState$1>> = Record<string, any>, TShortcuts extends RegleShortcutDefinition = {}> = IsUnion<NonNullable<TState$1>> extends true ? Omit<RegleStatus<TState$1, TRules$1, TShortcuts>, '$fields'> & {
|
|
304
|
+
type MaybeVariantStatus<TState$1 extends Record<string, any> | undefined = Record<string, any>, TRules$1 extends ReglePartialRuleTree<NonNullable<TState$1>> = Record<string, any>, TShortcuts extends RegleShortcutDefinition = {}> = IsUnion<NonNullable<TState$1>> extends true ? IsUnion<TRules$1> extends true ? Omit<RegleStatus<TState$1, TRules$1, TShortcuts>, '$fields'> & {
|
|
305
305
|
$fields: ProcessChildrenFields<TState$1, TRules$1, TShortcuts>[keyof ProcessChildrenFields<TState$1, TRules$1, TShortcuts>];
|
|
306
|
-
} & (HasNamedKeys<TState$1> extends true ? ProcessChildrenFields<TState$1, TRules$1, TShortcuts>[keyof ProcessChildrenFields<TState$1, TRules$1, TShortcuts>] : {}) : RegleStatus<TState$1, TRules$1, TShortcuts>;
|
|
306
|
+
} & (HasNamedKeys<TState$1> extends true ? ProcessChildrenFields<TState$1, TRules$1, TShortcuts>[keyof ProcessChildrenFields<TState$1, TRules$1, TShortcuts>] : {}) : RegleStatus<JoinDiscriminatedUnions<TState$1>, TRules$1 extends ReglePartialRuleTree<NonNullable<JoinDiscriminatedUnions<TState$1>>> ? TRules$1 : EmptyObject, TShortcuts> : RegleStatus<TState$1, TRules$1, TShortcuts>;
|
|
307
307
|
type ProcessChildrenFields<TState$1 extends Record<string, any> | undefined, TRules$1 extends ReglePartialRuleTree<NonNullable<TState$1>>, TShortcuts extends RegleShortcutDefinition = {}> = { [TIndex in keyof TupleToPlainObj<UnionToTuple<TState$1>>]: TIndex extends `${infer TIndexInt extends number}` ? { [TKey in keyof UnionToTuple<TState$1>[TIndexInt] as IsEmptyObject<FindCorrespondingVariant<UnionToTuple<TState$1>[TIndexInt] extends Record<string, any> ? UnionToTuple<TState$1>[TIndexInt] : never, UnionToTuple<TRules$1>> extends [infer U] ? TKey extends keyof U ? U[TKey] : EmptyObject : EmptyObject> extends true ? TKey extends keyof TState$1 ? TState$1[TKey] extends NonNullable<TState$1[TKey]> ? TKey : never : never : TKey]-?: InferRegleStatusType<FindCorrespondingVariant<UnionToTuple<TState$1>[TIndexInt] extends Record<string, any> ? UnionToTuple<TState$1>[TIndexInt] : never, UnionToTuple<TRules$1>> extends [infer U] ? TKey extends keyof U ? U[TKey] : EmptyObject : EmptyObject, NonNullable<UnionToTuple<TState$1>[TIndexInt]>, TKey, TShortcuts> } & { [TKey in keyof UnionToTuple<TState$1>[TIndexInt] as IsEmptyObject<FindCorrespondingVariant<UnionToTuple<TState$1>[TIndexInt] extends Record<string, any> ? UnionToTuple<TState$1>[TIndexInt] : never, UnionToTuple<TRules$1>> extends [infer U] ? TKey extends keyof U ? U[TKey] : EmptyObject : EmptyObject> extends true ? TKey extends keyof TState$1 ? TState$1[TKey] extends NonNullable<TState$1[TKey]> ? never : TKey : TKey : never]?: InferRegleStatusType<FindCorrespondingVariant<UnionToTuple<TState$1>[TIndexInt] extends Record<string, any> ? UnionToTuple<TState$1>[TIndexInt] : never, UnionToTuple<TRules$1>> extends [infer U] ? TKey extends keyof U ? U[TKey] : EmptyObject : EmptyObject, NonNullable<UnionToTuple<TState$1>[TIndexInt]>, TKey, TShortcuts> } : {} };
|
|
308
308
|
type FindCorrespondingVariant<TState$1 extends Record<string, any>, TRules$1 extends any[]> = TRules$1 extends [infer F, ...infer R] ? F extends ReglePartialRuleTree<TState$1> ? [F] : FindCorrespondingVariant<TState$1, R> : [];
|
|
309
309
|
type PossibleLiteralTypes<T extends Record<string, any>, TKey$1 extends keyof T> = unknown extends T[TKey$1] ? {
|
|
@@ -318,7 +318,8 @@ type VariantTuple<T extends Record<string, any>, TKey$1 extends keyof T> = [Requ
|
|
|
318
318
|
/**
|
|
319
319
|
* Combine all members of a union type, merging types for each key, and keeping loose types
|
|
320
320
|
*/
|
|
321
|
-
type JoinDiscriminatedUnions<TUnion extends unknown> = HasNamedKeys<TUnion> extends true ? isRecordLiteral<TUnion> extends true ? HasCommonKey<UnionToTuple<NonNullable<TUnion>>, keyof NormalizeUnion<NonNullable<TUnion>>> extends true ? Prettify<
|
|
321
|
+
type JoinDiscriminatedUnions<TUnion extends unknown> = HasNamedKeys<TUnion> extends true ? isRecordLiteral<TUnion> extends true ? HasCommonKey<UnionToTuple<NonNullable<TUnion>>, keyof NormalizeUnion<NonNullable<TUnion>>> extends true ? Prettify<ResolveKeys<TUnion> & (Omit<DumbJoinDiscriminatedUnions<TUnion>, keyof ResolveKeys<TUnion>> extends EmptyObject ? {} : Omit<DumbJoinDiscriminatedUnions<TUnion>, keyof ResolveKeys<TUnion>>)> : DumbJoinDiscriminatedUnions<TUnion> : TUnion : TUnion;
|
|
322
|
+
type ResolveKeys<TUnion extends unknown> = Partial<UnionToIntersection<RemoveCommonKey<UnionToTuple<NonNullable<TUnion>>, keyof NormalizeUnion<NonNullable<TUnion>>>[number]>> & Pick<NormalizeUnion<NonNullable<TUnion>>, keyof NormalizeUnion<NonNullable<TUnion>>>;
|
|
322
323
|
/**
|
|
323
324
|
* Combine all members of a union type on one level and not nested.
|
|
324
325
|
*/
|
|
@@ -371,6 +372,7 @@ type MaybeInput<T = any> = T | null | undefined;
|
|
|
371
372
|
type MaybeOutput<T = any> = T | undefined;
|
|
372
373
|
type MaybeReadonly<T> = T | Readonly<T>;
|
|
373
374
|
type NonUndefined<T> = Exclude<T, undefined>;
|
|
375
|
+
type MaybeNullable<T> = Or<IsNullable<T>, IsOptional<T>>;
|
|
374
376
|
type PromiseReturn<T> = T extends Promise<infer U> ? U : T;
|
|
375
377
|
type MaybeGetter<T, V$1 = any, TAdd extends Record<string, any> = {}, TSelf extends Record<string, any> = {}> = (T & TSelf) | ((value: Ref<V$1>, index: number) => T & TAdd & TSelf);
|
|
376
378
|
type MaybeComputedOrGetter<T> = MaybeRefOrComputedRef<T> | ((...args: any[]) => T);
|
|
@@ -678,6 +680,78 @@ declare function flatErrors(errors: $InternalRegleErrors, options: {
|
|
|
678
680
|
declare function flatErrors(errors: $InternalRegleErrors, options?: {
|
|
679
681
|
includePath?: false;
|
|
680
682
|
}): string[];
|
|
683
|
+
/**
|
|
684
|
+
* Retrieves error messages for a specific field using a dot-notation path.
|
|
685
|
+
* Provides type-safe access to nested error arrays in a Regle instance.
|
|
686
|
+
*
|
|
687
|
+
* @typeParam TRegle - The Regle instance type (root or status)
|
|
688
|
+
* @typeParam TPath - The dot-notation path type, validated at compile-time
|
|
689
|
+
*
|
|
690
|
+
* @param r$ - The Regle instance (e.g., from `useRegle()`)
|
|
691
|
+
* @param path - Dot-notation path to the field (e.g., `'user.email'` or `'items.0.name'`)
|
|
692
|
+
* @returns Array of error strings for the field, or `undefined` if path doesn't exist
|
|
693
|
+
*
|
|
694
|
+
* @example
|
|
695
|
+
* ```ts
|
|
696
|
+
* import { getErrors, useRegle } from '@regle/core';
|
|
697
|
+
* import { required, email } from '@regle/rules';
|
|
698
|
+
*
|
|
699
|
+
* const { r$ } = useRegle(
|
|
700
|
+
* { user: { email: '' } },
|
|
701
|
+
* { user: { email: { required, email } } }
|
|
702
|
+
* );
|
|
703
|
+
*
|
|
704
|
+
* await r$.$validate();
|
|
705
|
+
*
|
|
706
|
+
* // Type-safe access to nested errors
|
|
707
|
+
* const emailErrors = getErrors(r$, 'user.email');
|
|
708
|
+
* // ['This field is required']
|
|
709
|
+
*
|
|
710
|
+
* // Works with collections too
|
|
711
|
+
* const itemErrors = getErrors(r$, 'items.0.name');
|
|
712
|
+
* ```
|
|
713
|
+
*
|
|
714
|
+
* @see {@link https://reglejs.dev/core-concepts/displaying-errors#get-errors-by-path Documentation}
|
|
715
|
+
*/
|
|
716
|
+
declare function getErrors<TRegle extends SuperCompatibleRegleRoot | SuperCompatibleRegleStatus, TPath extends Paths<TRegle['$errors']> | (string & {})>(r$: MaybeRef<TRegle>, path: TPath): IsStringLiteral<TPath> extends true ? Get<TRegle['$errors'], TPath & string> : string[] | undefined;
|
|
717
|
+
/**
|
|
718
|
+
* Retrieves detailed validation issues for a specific field using a dot-notation path.
|
|
719
|
+
* Issues contain more information than errors, including the rule name, property, and metadata.
|
|
720
|
+
*
|
|
721
|
+
* @typeParam TRegle - The Regle instance type (root or status)
|
|
722
|
+
* @typeParam TPath - The dot-notation path type, validated at compile-time
|
|
723
|
+
*
|
|
724
|
+
* @param r$ - The Regle instance (e.g., from `useRegle()`)
|
|
725
|
+
* @param path - Dot-notation path to the field (e.g., `'user.email'` or `'items.0.name'`)
|
|
726
|
+
* @returns Array of `RegleFieldIssue` objects for the field, or `undefined` if path doesn't exist
|
|
727
|
+
*
|
|
728
|
+
* @example
|
|
729
|
+
* ```ts
|
|
730
|
+
* import { getIssues, useRegle } from '@regle/core';
|
|
731
|
+
* import { required, email } from '@regle/rules';
|
|
732
|
+
*
|
|
733
|
+
* const { r$ } = useRegle(
|
|
734
|
+
* { user: { email: '' } },
|
|
735
|
+
* { user: { email: { required, email } } }
|
|
736
|
+
* );
|
|
737
|
+
*
|
|
738
|
+
* await r$.$validate();
|
|
739
|
+
*
|
|
740
|
+
* // Type-safe access to nested issues with full metadata
|
|
741
|
+
* const emailIssues = getIssues(r$, 'user.email');
|
|
742
|
+
* // [{
|
|
743
|
+
* // $message: 'This field is required',
|
|
744
|
+
* // $property: 'email',
|
|
745
|
+
* // $rule: 'required'
|
|
746
|
+
* // }]
|
|
747
|
+
*
|
|
748
|
+
* // Works with collections too
|
|
749
|
+
* const itemIssues = getIssues(r$, 'items.0.name');
|
|
750
|
+
* ```
|
|
751
|
+
*
|
|
752
|
+
* @see {@link https://reglejs.dev/core-concepts/displaying-errors#get-issues-by-path Documentation}
|
|
753
|
+
*/
|
|
754
|
+
declare function getIssues<TRegle extends SuperCompatibleRegleRoot | SuperCompatibleRegleStatus, TPath extends Paths<TRegle['$issues']>>(r$: MaybeRef<TRegle>, path: TPath | (string & {})): IsStringLiteral<TPath> extends true ? Get<TRegle['$issues'], TPath & string> : RegleFieldIssue[] | undefined;
|
|
681
755
|
type useRulesFnOptions<TRules$1 extends RegleUnknownRulesTree | RegleRuleDecl, TValidationGroups extends Record<string, RegleValidationGroupEntry[]>, TState$1 = InferInput<TRules$1>> = Partial<DeepMaybeRef<RegleBehaviourOptions>> & LocalRegleBehaviourOptions<JoinDiscriminatedUnions<TState$1 extends Record<string, any> ? Unwrap<TState$1> : {}>, TState$1 extends Record<string, any> ? (TRules$1 extends Record<string, any> ? TRules$1 : {}) : {}, TValidationGroups>;
|
|
682
756
|
interface useRulesFn<TCustomRules extends Partial<ExtendedRulesDeclarations>, TShortcuts extends RegleShortcutDefinition<any> = never> {
|
|
683
757
|
<TRules$1 extends RegleUnknownRulesTree | RegleRuleDecl, TDecl extends RegleRuleDecl<NonNullable<TState$1>, Partial<ExtendedRulesDeclarations> & TCustomRules>, TValidationGroups extends Record<string, RegleValidationGroupEntry[]>, TState$1 extends Record<string, any> = InferInput<TRules$1>>(rulesFactory: TState$1 extends Record<string, any> ? MaybeRef<TRules$1> | ((...args: any[]) => TRules$1) : {}, options?: useRulesFnOptions<TRules$1, TValidationGroups, TState$1>): NonNullable<TState$1> extends PrimitiveTypes ? Raw<RegleFieldStatus<NonNullable<TState$1>, TDecl, TShortcuts>> & StandardSchemaV1<TState$1> : Raw<RegleRoot<TState$1 extends Record<string, any> ? Unwrap<TState$1> : {}, TRules$1 extends Record<string, any> ? TRules$1 : {}, TValidationGroups, TShortcuts>> & StandardSchemaV1<TState$1>;
|
|
@@ -1058,13 +1132,13 @@ type RegleStatus<TState$1 extends object | Record<string, any> | undefined = Rec
|
|
|
1058
1132
|
*
|
|
1059
1133
|
* Only contains issues from properties where $dirty equals true.
|
|
1060
1134
|
*/
|
|
1061
|
-
readonly $issues: RegleIssuesTree<TState$1>;
|
|
1135
|
+
readonly $issues: RegleIssuesTree<TState$1, false, TRules$1>;
|
|
1062
1136
|
/**
|
|
1063
1137
|
* Collection of all the error messages, collected for all children properties and nested forms.
|
|
1064
1138
|
*
|
|
1065
1139
|
* Only contains errors from properties where $dirty equals true.
|
|
1066
1140
|
* */
|
|
1067
|
-
readonly $errors: RegleErrorTree<TState$1>;
|
|
1141
|
+
readonly $errors: RegleErrorTree<TState$1, false>;
|
|
1068
1142
|
/** Collection of all the error messages, collected for all children properties. */
|
|
1069
1143
|
readonly $silentErrors: RegleErrorTree<TState$1>;
|
|
1070
1144
|
/** Will return a copy of your state with only the fields that are dirty. By default it will filter out nullish values or objects, but you can override it with the first parameter $extractDirtyFields(false). */
|
|
@@ -1095,32 +1169,12 @@ interface $InternalRegleStatus extends $InternalRegleCommonStatus {
|
|
|
1095
1169
|
/**
|
|
1096
1170
|
* @public
|
|
1097
1171
|
*/
|
|
1098
|
-
type InferRegleStatusType<TRule extends RegleCollectionRuleDecl | RegleRuleDecl | ReglePartialRuleTree<any>, TState$1 extends Record<PropertyKey, any> = any, TKey$1 extends PropertyKey = string, TShortcuts extends RegleShortcutDefinition = {}> = HasNamedKeys<TState$1> extends true ? [TState$1[TKey$1]] extends [undefined | null] ? RegleFieldStatus<TState$1[TKey$1], TRule, TShortcuts> : NonNullable<TState$1[TKey$1]> extends Array<
|
|
1172
|
+
type InferRegleStatusType<TRule extends RegleCollectionRuleDecl | RegleRuleDecl | ReglePartialRuleTree<any>, TState$1 extends Record<PropertyKey, any> = any, TKey$1 extends PropertyKey = string, TShortcuts extends RegleShortcutDefinition = {}> = HasNamedKeys<TState$1> extends true ? [TState$1[TKey$1]] extends [undefined | null] ? RegleFieldStatus<TState$1[TKey$1], TRule, TShortcuts> : NonNullable<TState$1[TKey$1]> extends Array<unknown> ? TRule extends RegleCollectionRuleDefinition<any, any> ? ExtractFromGetter<TRule['$each']> extends ReglePartialRuleTree<any> ? RegleCollectionStatus<TState$1[TKey$1], ExtractFromGetter<TRule['$each']>, TRule, TShortcuts> : RegleFieldStatus<TState$1[TKey$1], TRule, TShortcuts> : RegleCollectionStatus<TState$1[TKey$1], {}, TRule, TShortcuts> : TRule extends ReglePartialRuleTree<any> ? NonNullable<TState$1[TKey$1]> extends Array<any> ? RegleFieldStatus<TState$1[TKey$1], TRule, TShortcuts> : NonNullable<TState$1[TKey$1]> extends Date | File ? RegleFieldStatus<Raw<TState$1[TKey$1]>, TRule, TShortcuts> : unknown extends TState$1[TKey$1] ? RegleFieldStatus<TState$1[TKey$1], TRule, TShortcuts> : NonNullable<TState$1[TKey$1]> extends Record<PropertyKey, any> ? NonNullable<TState$1[TKey$1]> extends RegleStaticImpl<infer U> ? RegleFieldStatus<Raw<U>, TRule, TShortcuts> : TRule extends ReglePartialRuleTree<TState$1[TKey$1]> ? MaybeVariantStatus<TState$1[TKey$1], TRule, TShortcuts> : MaybeVariantStatus<TState$1[TKey$1], {}, TShortcuts> : RegleFieldStatus<TState$1[TKey$1], TRule, TShortcuts> : NonNullable<TState$1[TKey$1]> extends Date | File ? RegleFieldStatus<Raw<NonNullable<TState$1[TKey$1]>>, TRule, TShortcuts> : unknown extends TState$1[TKey$1] ? RegleFieldStatus<TState$1[TKey$1], TRule, TShortcuts> : NonNullable<TState$1[TKey$1]> extends Record<PropertyKey, any> ? NonNullable<TState$1[TKey$1]> extends RegleStaticImpl<infer U> ? RegleFieldStatus<Raw<U>, TRule, TShortcuts> : MaybeVariantStatus<TState$1[TKey$1], ReglePartialRuleTree<TState$1[TKey$1]>, TShortcuts> : RegleFieldStatus<TState$1[TKey$1], TRule, TShortcuts> : RegleCommonStatus<unknown>;
|
|
1099
1173
|
/**
|
|
1100
1174
|
* @internal
|
|
1101
1175
|
* @reference {@link InferRegleStatusType}
|
|
1102
1176
|
*/
|
|
1103
1177
|
type $InternalRegleStatusType = $InternalRegleCollectionStatus | $InternalRegleStatus | $InternalRegleFieldStatus;
|
|
1104
|
-
type RegleFieldIssue<TRules$1 extends RegleFormPropertyType<unknown, Partial<ExtendedRulesDeclarations>> = EmptyObject> = {
|
|
1105
|
-
readonly $property: string;
|
|
1106
|
-
readonly $type?: string;
|
|
1107
|
-
readonly $message: string;
|
|
1108
|
-
} & (IsEmptyObject<TRules$1> extends true ? {
|
|
1109
|
-
readonly $rule: string;
|
|
1110
|
-
} : { [K in keyof ComputeFieldRules<any, TRules$1>]: ComputeFieldRules<any, TRules$1>[K] extends {
|
|
1111
|
-
$metadata: infer TMetadata;
|
|
1112
|
-
} ? K extends string ? {
|
|
1113
|
-
readonly $rule: K;
|
|
1114
|
-
} & (TMetadata extends boolean ? {
|
|
1115
|
-
readonly $rule: string;
|
|
1116
|
-
} : TMetadata) : {
|
|
1117
|
-
readonly $rule: string;
|
|
1118
|
-
} : {
|
|
1119
|
-
readonly $rule: string;
|
|
1120
|
-
} }[keyof ComputeFieldRules<any, TRules$1>]);
|
|
1121
|
-
type ComputeFieldRules<TState$1 extends any, TRules$1 extends MaybeRef<RegleFormPropertyType<unknown, Partial<ExtendedRulesDeclarations>>>> = IsEmptyObject<UnwrapRef<TRules$1>> extends true ? {
|
|
1122
|
-
readonly [x: string]: RegleRuleStatus<TState$1, any[], any>;
|
|
1123
|
-
} : { readonly [TRuleKey in keyof Omit<UnwrapRef<TRules$1>, '$each' | keyof FieldRegleBehaviourOptions>]: RegleRuleStatus<TState$1, UnwrapRef<TRules$1>[TRuleKey] extends RegleRuleDefinition<unknown, any, infer TParams, any> ? TParams : [], UnwrapRef<TRules$1>[TRuleKey] extends RegleRuleDefinition<unknown, any, any, any, infer TMetadata> ? TMetadata : UnwrapRef<TRules$1>[TRuleKey] extends InlineRuleDeclaration<any, any[], infer TMetadata> ? TMetadata extends Promise<infer P> ? P : TMetadata : boolean> };
|
|
1124
1178
|
/**
|
|
1125
1179
|
* @public
|
|
1126
1180
|
*/
|
|
@@ -1322,7 +1376,7 @@ interface $InternalRegleRuleStatus {
|
|
|
1322
1376
|
/**
|
|
1323
1377
|
* @public
|
|
1324
1378
|
*/
|
|
1325
|
-
type RegleCollectionStatus<TState$1 extends any[] = any[], TRules$1 extends ReglePartialRuleTree<any
|
|
1379
|
+
type RegleCollectionStatus<TState$1 extends any[] = any[], TRules$1 extends ReglePartialRuleTree<Record<string, any>> = Record<string, any>, TFieldRule extends RegleCollectionRuleDecl<any, any> = never, TShortcuts extends RegleShortcutDefinition = {}> = Omit<RegleCommonStatus<TState$1, TRules$1>, '$value'> & {
|
|
1326
1380
|
/** A reference to the original validated model. It can be used to bind your form with v-model.*/
|
|
1327
1381
|
$value: MaybeOutput<TState$1>;
|
|
1328
1382
|
/** $value variant that will not "touch" the field and update the value silently, running only the rules, so you can easily swap values without impacting user interaction. */
|
|
@@ -1421,14 +1475,27 @@ type $InternalRegleRuleDecl = FieldRegleBehaviourOptions & CollectionRegleBehavi
|
|
|
1421
1475
|
type RegleCollectionRuleDeclKeyProperty = {
|
|
1422
1476
|
$key?: PropertyKey;
|
|
1423
1477
|
};
|
|
1478
|
+
type CollectionEachRuleDecl<TValue$1 = any[], TCustomRules extends Partial<ExtendedRulesDeclarations> = Partial<ExtendedRulesDeclarations>> = IsAny<TValue$1> extends true ? {
|
|
1479
|
+
$each?: RegleCollectionEachRules<TValue$1, TCustomRules>;
|
|
1480
|
+
} : MaybeNullable<TValue$1> extends true ? {
|
|
1481
|
+
/**
|
|
1482
|
+
* Rules for each item in the collection
|
|
1483
|
+
*
|
|
1484
|
+
* ⚠️ `$each` is required here because your array is potentially undefined.
|
|
1485
|
+
* Regle can't guess the type of the array if it's undefined.
|
|
1486
|
+
* Having an empty `$each: {}` is the only way to tell Regle that the array is a collection.
|
|
1487
|
+
*/
|
|
1488
|
+
$each: RegleCollectionEachRules<TValue$1, TCustomRules>;
|
|
1489
|
+
} : {
|
|
1490
|
+
/**
|
|
1491
|
+
* Rules for each item in the collection
|
|
1492
|
+
*/
|
|
1493
|
+
$each?: RegleCollectionEachRules<TValue$1, TCustomRules>;
|
|
1494
|
+
};
|
|
1424
1495
|
/**
|
|
1425
1496
|
* @public
|
|
1426
1497
|
*/
|
|
1427
|
-
type RegleCollectionRuleDecl<TValue$1 = any[], TCustomRules extends Partial<ExtendedRulesDeclarations> = Partial<ExtendedRulesDeclarations>> = (
|
|
1428
|
-
$each?: RegleCollectionEachRules<TValue$1, TCustomRules>;
|
|
1429
|
-
} & RegleRuleDecl<NonNullable<TValue$1>, TCustomRules, CollectionRegleBehaviourOptions>) | ({
|
|
1430
|
-
$each?: RegleCollectionEachRules<TValue$1, TCustomRules>;
|
|
1431
|
-
} & CollectionRegleBehaviourOptions);
|
|
1498
|
+
type RegleCollectionRuleDecl<TValue$1 = any[], TCustomRules extends Partial<ExtendedRulesDeclarations> = Partial<ExtendedRulesDeclarations>> = (CollectionEachRuleDecl<TValue$1, TCustomRules> & RegleRuleDecl<NonNullable<TValue$1>, TCustomRules, CollectionRegleBehaviourOptions>) | (CollectionEachRuleDecl<TValue$1, TCustomRules> & CollectionRegleBehaviourOptions);
|
|
1432
1499
|
/** @public */
|
|
1433
1500
|
type RegleCollectionEachRules<TValue$1 = any[], TCustomRules extends Partial<ExtendedRulesDeclarations> = Partial<ExtendedRulesDeclarations>> = MaybeGetter<RegleFormPropertyType<ArrayElement<NonNullable<TValue$1>>, TCustomRules>, ArrayElement<TValue$1>, RegleCollectionRuleDeclKeyProperty, RegleFormPropertyType<ArrayElement<NonNullable<TValue$1>>, TCustomRules>>;
|
|
1434
1501
|
/**
|
|
@@ -1452,20 +1519,40 @@ type FormRuleDeclaration<TValue$1 extends any = unknown, TParams$1 extends any[]
|
|
|
1452
1519
|
type RegleErrorTree<TState$1 = MaybeRef<Record<string, any> | any[]>, TIssue extends boolean = false, TSchema extends boolean = false> = { readonly [K in keyof JoinDiscriminatedUnions<UnwrapMaybeRef<TState$1>>]: RegleValidationErrors<JoinDiscriminatedUnions<UnwrapMaybeRef<TState$1>>[K], false, TIssue, TSchema> } & {
|
|
1453
1520
|
readonly $self?: string[];
|
|
1454
1521
|
};
|
|
1455
|
-
type RegleIssuesTree<TState$1 = MaybeRef<Record<string, any> | any[]>, TSchema extends boolean = false
|
|
1522
|
+
type RegleIssuesTree<TState$1 = MaybeRef<Record<string, any> | any[]>, TSchema extends boolean = false, TRules$1 extends ReglePartialRuleTree<NonNullable<TState$1>> = Record<string, any>> = { readonly [K in keyof JoinDiscriminatedUnions<UnwrapMaybeRef<TState$1>>]: RegleValidationErrors<JoinDiscriminatedUnions<UnwrapMaybeRef<TState$1>>[K], false, true, TSchema, K extends keyof TRules$1 ? TRules$1[K] extends RegleFormPropertyType<Record<string, any>> ? TRules$1[K] : EmptyObject : EmptyObject> } & {
|
|
1456
1523
|
readonly $self?: RegleFieldIssue[];
|
|
1457
1524
|
};
|
|
1458
1525
|
type RegleExternalErrorTree<TState$1 = MaybeRef<Record<string, any> | any[]>, TSchema extends boolean = false> = { readonly [K in keyof JoinDiscriminatedUnions<UnwrapMaybeRef<TState$1>>]?: RegleValidationErrors<JoinDiscriminatedUnions<UnwrapMaybeRef<TState$1>>[K], true, TSchema> } & {
|
|
1459
1526
|
readonly $self?: RegleFieldIssue[];
|
|
1460
1527
|
};
|
|
1461
1528
|
type RegleExternalSchemaErrorTree<TState$1 = MaybeRef<Record<string, any> | any[]>, TSchema extends boolean = false> = { readonly [K in keyof JoinDiscriminatedUnions<UnwrapMaybeRef<TState$1>>]?: RegleValidationErrors<JoinDiscriminatedUnions<UnwrapMaybeRef<TState$1>>[K], true, true, TSchema> };
|
|
1462
|
-
type ErrorMessageOrIssue<TIssue extends boolean> = TIssue extends true ? RegleFieldIssue[] : string[];
|
|
1463
|
-
type RegleValidationErrors<TState$1 extends Record<string, any> | any[] | unknown = never, TExternal extends boolean = false, TIssue extends boolean = false, TSchema extends boolean = false> = HasNamedKeys<TState$1> extends true ? IsAny<TState$1> extends true ? any : NonNullable<TState$1> extends Array<infer U> ? TSchema extends false ?
|
|
1529
|
+
type ErrorMessageOrIssue<TIssue extends boolean, TRules$1 extends RegleFormPropertyType<Record<string, any>> = EmptyObject> = TIssue extends true ? RegleFieldIssue<TRules$1>[] : string[];
|
|
1530
|
+
type RegleValidationErrors<TState$1 extends Record<string, any> | any[] | unknown = never, TExternal extends boolean = false, TIssue extends boolean = false, TSchema extends boolean = false, TRules$1 extends RegleFormPropertyType<Record<string, any>> = EmptyObject> = HasNamedKeys<TState$1> extends true ? IsAny<TState$1> extends true ? any : NonNullable<TState$1> extends Array<infer U> ? TSchema extends false ? TExternal extends false ? RegleCollectionErrors<U, TIssue, TSchema> : RegleExternalCollectionErrors<U, TIssue, TSchema> : RegleCollectionErrors<U, TIssue, TSchema> : NonNullable<TState$1> extends Date | File ? ErrorMessageOrIssue<TIssue, TRules$1> : NonNullable<TState$1> extends Record<string, any> ? IsRegleStatic<NonNullable<TState$1>> extends true ? ErrorMessageOrIssue<TIssue, TRules$1> : TExternal extends false ? RegleErrorTree<TState$1, TIssue, TSchema> : RegleExternalErrorTree<TState$1, TSchema> : ErrorMessageOrIssue<TIssue, TRules$1> : any;
|
|
1531
|
+
type RegleFieldIssue<TRules$1 extends RegleFormPropertyType<unknown, Partial<ExtendedRulesDeclarations>> = EmptyObject> = {
|
|
1532
|
+
readonly $property: string;
|
|
1533
|
+
readonly $type?: string;
|
|
1534
|
+
readonly $message: string;
|
|
1535
|
+
} & (IsEmptyObject<TRules$1> extends true ? {
|
|
1536
|
+
readonly $rule: string;
|
|
1537
|
+
} : { [K in keyof ComputeFieldRules<any, TRules$1>]: ComputeFieldRules<any, TRules$1>[K] extends {
|
|
1538
|
+
$metadata: infer TMetadata;
|
|
1539
|
+
} ? K extends string ? {
|
|
1540
|
+
readonly $rule: K;
|
|
1541
|
+
} & (TMetadata extends boolean ? {
|
|
1542
|
+
readonly $rule: string;
|
|
1543
|
+
} : TMetadata) : {
|
|
1544
|
+
readonly $rule: string;
|
|
1545
|
+
} : {
|
|
1546
|
+
readonly $rule: string;
|
|
1547
|
+
} }[keyof ComputeFieldRules<any, TRules$1>]);
|
|
1548
|
+
type ComputeFieldRules<TState$1 extends any, TRules$1 extends MaybeRef<RegleFormPropertyType<unknown, Partial<ExtendedRulesDeclarations>>>> = IsEmptyObject<UnwrapRef<TRules$1>> extends true ? {
|
|
1549
|
+
readonly [x: string]: RegleRuleStatus<TState$1, any[], any>;
|
|
1550
|
+
} : { readonly [TRuleKey in keyof Omit<UnwrapRef<TRules$1>, '$each' | keyof FieldRegleBehaviourOptions>]: RegleRuleStatus<TState$1, UnwrapRef<TRules$1>[TRuleKey] extends RegleRuleDefinition<unknown, any, infer TParams, any> ? TParams : [], UnwrapRef<TRules$1>[TRuleKey] extends RegleRuleDefinition<unknown, any, any, any, infer TMetadata> ? TMetadata : UnwrapRef<TRules$1>[TRuleKey] extends InlineRuleDeclaration<any, any[], infer TMetadata> ? TMetadata extends Promise<infer P> ? P : TMetadata : boolean> };
|
|
1464
1551
|
type RegleCollectionErrors<TState$1 extends any, TIssue extends boolean = false, TSchema extends boolean = false> = {
|
|
1465
1552
|
readonly $self: TIssue extends true ? RegleFieldIssue[] : string[];
|
|
1466
1553
|
readonly $each: RegleValidationErrors<TState$1, false, TIssue, TSchema>[];
|
|
1467
1554
|
};
|
|
1468
|
-
type RegleExternalCollectionErrors<TState$1 extends
|
|
1555
|
+
type RegleExternalCollectionErrors<TState$1 extends unknown, TIssue extends boolean = false, TSchema extends boolean = false> = {
|
|
1469
1556
|
readonly $self?: TIssue extends true ? RegleFieldIssue[] : string[];
|
|
1470
1557
|
readonly $each?: RegleValidationErrors<TState$1, true, TIssue, TSchema>[];
|
|
1471
1558
|
};
|
|
@@ -2009,4 +2096,4 @@ declare function refineRules<TRules$1 extends RegleUnknownRulesTree, TRefinement
|
|
|
2009
2096
|
* @see {@link https://reglejs.dev/introduction/devtools Documentation}
|
|
2010
2097
|
*/
|
|
2011
2098
|
declare const RegleVuePlugin: Plugin;
|
|
2012
|
-
export { type $InternalRegleStatus, type AllRulesDeclarations, type ArrayElement, type CommonAlphaOptions, type CommonComparisonOptions, type CreateScopedUseRegleOptions, type DeepMaybeRef, type DeepPartial, type DeepReactiveState, type DefaultValidatorsTree, type DumbJoinDiscriminatedUnions, type ExtendedRulesDeclarations, type FormRuleDeclaration, type GlobalConfigOverrides, type HasNamedKeys, type HaveAnyRequiredProps, type InferInput, type InferOutput, type InferRegleRoot, type InferRegleRule, type InferRegleRules, type InferRegleSettings, type InferRegleShortcuts, type InferRegleStatusType, type InferRegleValidationResult, type InferSafeOutput, type InferValidOutput, type InlineRuleDeclaration, InternalRuleType, type IsRegleStatic, type JoinDiscriminatedUnions, type LazyJoinDiscriminatedUnions, type LocalRegleBehaviourOptions, type Maybe, type MaybeInput, type MaybeOutput, type MaybeReadonly, type MaybeVariantStatus, type MergedRegles, type MergedScopedRegles, type NarrowVariant, type NarrowVariantExtracts, type NarrowVariantFieldExtracts, type NoInferLegacy, type NonEmptyTuple, type Prettify, type PrimitiveTypes, type Regle, type RegleBehaviourOptions, type RegleCollectionErrors, type RegleCollectionRuleDecl, type RegleCollectionRuleDefinition, type RegleCollectionStatus, type RegleCommonStatus, type RegleComputedRules, type RegleCustomFieldStatus, type RegleEnforceCustomRequiredRules, type RegleEnforceRequiredRules, type RegleErrorTree, type RegleExternalCollectionErrors, type RegleExternalErrorTree, type RegleExternalSchemaErrorTree, type RegleFieldIssue, type RegleFieldStatus, type RegleFormPropertyType, type RegleInternalRuleDefs, type RegleIssuesTree, type RegleLike, 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 RegleRuleWithParamsDefinitionInput, type RegleShortcutDefinition, type RegleSingleField, type RegleStatic, type RegleStaticImpl, type RegleStatus, type RegleUniversalParams, type RegleUnknownRulesTree, type RegleValidationErrors, type RegleValidationGroupEntry, type RegleValidationGroupOutput, type RegleRuleTree as RegleValidationTree, RegleVuePlugin, type ResolvedRegleBehaviourOptions, type ScopedInstancesRecord, type ScopedInstancesRecordLike, type SuperCompatibleRegle, type SuperCompatibleRegleCollectionErrors, type SuperCompatibleRegleCollectionStatus, type SuperCompatibleRegleFieldStatus, type SuperCompatibleRegleResult, type SuperCompatibleRegleRoot, type SuperCompatibleRegleRuleStatus, type SuperCompatibleRegleStatus, type TupleToPlainObj, type Unwrap, type UnwrapRegleUniversalParams, type UnwrapRuleWithParams, type UnwrapStatic, type UseScopedRegleOptions, createRule, createScopedUseRegle, createVariant, defineRegleConfig, defineRules, extendRegleConfig, flatErrors, inferRules, type inferRulesFn, type isEditedHandlerFn, markStatic, mergeRegles, narrowVariant, refineRules, unwrapRuleParameters, useCollectScope, type useCollectScopeFn, useRegle, type useRegleFn, useRootStorage, useRules, type useRulesFn, useScopedRegle, variantToRef };
|
|
2099
|
+
export { type $InternalRegleStatus, type AllRulesDeclarations, type ArrayElement, type CommonAlphaOptions, type CommonComparisonOptions, type CreateScopedUseRegleOptions, type DeepMaybeRef, type DeepPartial, type DeepReactiveState, type DefaultValidatorsTree, type DumbJoinDiscriminatedUnions, type ExtendedRulesDeclarations, type FormRuleDeclaration, type GlobalConfigOverrides, type HasNamedKeys, type HaveAnyRequiredProps, type InferInput, type InferOutput, type InferRegleRoot, type InferRegleRule, type InferRegleRules, type InferRegleSettings, type InferRegleShortcuts, type InferRegleStatusType, type InferRegleValidationResult, type InferSafeOutput, type InferValidOutput, type InlineRuleDeclaration, InternalRuleType, type IsRegleStatic, type JoinDiscriminatedUnions, type LazyJoinDiscriminatedUnions, type LocalRegleBehaviourOptions, type Maybe, type MaybeInput, type MaybeOutput, type MaybeReadonly, type MaybeVariantStatus, type MergedRegles, type MergedScopedRegles, type NarrowVariant, type NarrowVariantExtracts, type NarrowVariantFieldExtracts, type NoInferLegacy, type NonEmptyTuple, type Prettify, type PrimitiveTypes, type Regle, type RegleBehaviourOptions, type RegleCollectionErrors, type RegleCollectionRuleDecl, type RegleCollectionRuleDefinition, type RegleCollectionStatus, type RegleCommonStatus, type RegleComputedRules, type RegleCustomFieldStatus, type RegleEnforceCustomRequiredRules, type RegleEnforceRequiredRules, type RegleErrorTree, type RegleExternalCollectionErrors, type RegleExternalErrorTree, type RegleExternalSchemaErrorTree, type RegleFieldIssue, type RegleFieldStatus, type RegleFormPropertyType, type RegleInternalRuleDefs, type RegleIssuesTree, type RegleLike, 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 RegleRuleWithParamsDefinitionInput, type RegleShortcutDefinition, type RegleSingleField, type RegleStatic, type RegleStaticImpl, type RegleStatus, type RegleUniversalParams, type RegleUnknownRulesTree, type RegleValidationErrors, type RegleValidationGroupEntry, type RegleValidationGroupOutput, type RegleRuleTree as RegleValidationTree, RegleVuePlugin, type ResolvedRegleBehaviourOptions, type ScopedInstancesRecord, type ScopedInstancesRecordLike, type SuperCompatibleRegle, type SuperCompatibleRegleCollectionErrors, type SuperCompatibleRegleCollectionStatus, type SuperCompatibleRegleFieldStatus, type SuperCompatibleRegleResult, type SuperCompatibleRegleRoot, type SuperCompatibleRegleRuleStatus, type SuperCompatibleRegleStatus, type TupleToPlainObj, type Unwrap, type UnwrapRegleUniversalParams, type UnwrapRuleWithParams, type UnwrapStatic, type UseScopedRegleOptions, createRule, createScopedUseRegle, createVariant, defineRegleConfig, defineRules, extendRegleConfig, flatErrors, getErrors, getIssues, inferRules, type inferRulesFn, type isEditedHandlerFn, markStatic, mergeRegles, narrowVariant, refineRules, unwrapRuleParameters, useCollectScope, type useCollectScopeFn, useRegle, type useRegleFn, useRootStorage, useRules, type useRulesFn, useScopedRegle, variantToRef };
|
package/dist/regle-core.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @regle/core v1.18.0-beta.
|
|
2
|
+
* @regle/core v1.18.0-beta.4
|
|
3
3
|
* (c) 2026 Victor Garcia
|
|
4
4
|
* @license MIT
|
|
5
5
|
*/
|
|
@@ -18,6 +18,22 @@ function isObject(obj) {
|
|
|
18
18
|
if (obj && (obj instanceof Date || obj.constructor.name == "File" || obj.constructor.name == "FileList")) return false;
|
|
19
19
|
return typeof obj === "object" && obj !== null && !Array.isArray(obj);
|
|
20
20
|
}
|
|
21
|
+
function getDotPath(obj, propsArg, defaultValue) {
|
|
22
|
+
if (!obj) return defaultValue;
|
|
23
|
+
var props, prop;
|
|
24
|
+
if (Array.isArray(propsArg)) props = propsArg.slice(0);
|
|
25
|
+
if (typeof propsArg == "string") props = propsArg.split(".");
|
|
26
|
+
if (typeof propsArg == "symbol") props = [propsArg];
|
|
27
|
+
if (!Array.isArray(props)) throw new Error("props arg must be an array, a string or a symbol");
|
|
28
|
+
while (props.length) {
|
|
29
|
+
prop = props.shift();
|
|
30
|
+
if (!obj) return defaultValue;
|
|
31
|
+
if (!prop) return defaultValue;
|
|
32
|
+
obj = obj[prop];
|
|
33
|
+
if (obj === void 0) return defaultValue;
|
|
34
|
+
}
|
|
35
|
+
return obj;
|
|
36
|
+
}
|
|
21
37
|
function merge(_obj1, ..._objs) {
|
|
22
38
|
var args = [].slice.call(arguments);
|
|
23
39
|
var arg;
|
|
@@ -725,8 +741,8 @@ const REGLE_FLAGS = { REGLE_STATIC: "__regle_static" };
|
|
|
725
741
|
function isNestedRulesDef(state, rules) {
|
|
726
742
|
return !isStatic(state.value) && (isRefObject(state) || isObject(rules.value) && !isEmpty(rules.value) && !Object.entries(rules.value).some(([_, rule]) => isRuleDef(rule) || typeof rule === "function"));
|
|
727
743
|
}
|
|
728
|
-
function isCollectionRulesDef(rules, state
|
|
729
|
-
return !!rules.value && isObject(rules.value) && "$each" in rules.value ||
|
|
744
|
+
function isCollectionRulesDef(rules, state) {
|
|
745
|
+
return !!rules.value && isObject(rules.value) && "$each" in rules.value || Array.isArray(state.value);
|
|
730
746
|
}
|
|
731
747
|
function isValidatorRulesDef(rules) {
|
|
732
748
|
return !!rules.value && (isObject(rules.value) || isRefObject(rules.value));
|
|
@@ -2442,7 +2458,7 @@ function createReactiveNestedStatus({ rulesDef, state, path = "", cachePath, roo
|
|
|
2442
2458
|
* Main resolver divider, will distribute the logic depending on the type of the current value (primitive, object, array)
|
|
2443
2459
|
*/
|
|
2444
2460
|
function createReactiveChildrenStatus({ rulesDef, ...properties }) {
|
|
2445
|
-
if (isCollectionRulesDef(rulesDef, properties.state
|
|
2461
|
+
if (isCollectionRulesDef(rulesDef, properties.state)) return createReactiveCollectionStatus({
|
|
2446
2462
|
rulesDef,
|
|
2447
2463
|
...properties
|
|
2448
2464
|
});
|
|
@@ -3117,7 +3133,7 @@ function filterInspectorTree(nodes, filter) {
|
|
|
3117
3133
|
return filtered;
|
|
3118
3134
|
}
|
|
3119
3135
|
|
|
3120
|
-
var version$1 = "1.18.0-beta.
|
|
3136
|
+
var version$1 = "1.18.0-beta.4";
|
|
3121
3137
|
|
|
3122
3138
|
function createDevtools(app) {
|
|
3123
3139
|
setupDevtoolsPlugin({
|
|
@@ -3401,6 +3417,84 @@ function createInferRuleHelper() {
|
|
|
3401
3417
|
*/
|
|
3402
3418
|
const inferRules = createInferRuleHelper();
|
|
3403
3419
|
|
|
3420
|
+
/**
|
|
3421
|
+
* Retrieves error messages for a specific field using a dot-notation path.
|
|
3422
|
+
* Provides type-safe access to nested error arrays in a Regle instance.
|
|
3423
|
+
*
|
|
3424
|
+
* @typeParam TRegle - The Regle instance type (root or status)
|
|
3425
|
+
* @typeParam TPath - The dot-notation path type, validated at compile-time
|
|
3426
|
+
*
|
|
3427
|
+
* @param r$ - The Regle instance (e.g., from `useRegle()`)
|
|
3428
|
+
* @param path - Dot-notation path to the field (e.g., `'user.email'` or `'items.0.name'`)
|
|
3429
|
+
* @returns Array of error strings for the field, or `undefined` if path doesn't exist
|
|
3430
|
+
*
|
|
3431
|
+
* @example
|
|
3432
|
+
* ```ts
|
|
3433
|
+
* import { getErrors, useRegle } from '@regle/core';
|
|
3434
|
+
* import { required, email } from '@regle/rules';
|
|
3435
|
+
*
|
|
3436
|
+
* const { r$ } = useRegle(
|
|
3437
|
+
* { user: { email: '' } },
|
|
3438
|
+
* { user: { email: { required, email } } }
|
|
3439
|
+
* );
|
|
3440
|
+
*
|
|
3441
|
+
* await r$.$validate();
|
|
3442
|
+
*
|
|
3443
|
+
* // Type-safe access to nested errors
|
|
3444
|
+
* const emailErrors = getErrors(r$, 'user.email');
|
|
3445
|
+
* // ['This field is required']
|
|
3446
|
+
*
|
|
3447
|
+
* // Works with collections too
|
|
3448
|
+
* const itemErrors = getErrors(r$, 'items.0.name');
|
|
3449
|
+
* ```
|
|
3450
|
+
*
|
|
3451
|
+
* @see {@link https://reglejs.dev/core-concepts/displaying-errors#get-errors-by-path Documentation}
|
|
3452
|
+
*/
|
|
3453
|
+
function getErrors(r$, path) {
|
|
3454
|
+
return getDotPath(unref(r$).$errors, String(path));
|
|
3455
|
+
}
|
|
3456
|
+
|
|
3457
|
+
/**
|
|
3458
|
+
* Retrieves detailed validation issues for a specific field using a dot-notation path.
|
|
3459
|
+
* Issues contain more information than errors, including the rule name, property, and metadata.
|
|
3460
|
+
*
|
|
3461
|
+
* @typeParam TRegle - The Regle instance type (root or status)
|
|
3462
|
+
* @typeParam TPath - The dot-notation path type, validated at compile-time
|
|
3463
|
+
*
|
|
3464
|
+
* @param r$ - The Regle instance (e.g., from `useRegle()`)
|
|
3465
|
+
* @param path - Dot-notation path to the field (e.g., `'user.email'` or `'items.0.name'`)
|
|
3466
|
+
* @returns Array of `RegleFieldIssue` objects for the field, or `undefined` if path doesn't exist
|
|
3467
|
+
*
|
|
3468
|
+
* @example
|
|
3469
|
+
* ```ts
|
|
3470
|
+
* import { getIssues, useRegle } from '@regle/core';
|
|
3471
|
+
* import { required, email } from '@regle/rules';
|
|
3472
|
+
*
|
|
3473
|
+
* const { r$ } = useRegle(
|
|
3474
|
+
* { user: { email: '' } },
|
|
3475
|
+
* { user: { email: { required, email } } }
|
|
3476
|
+
* );
|
|
3477
|
+
*
|
|
3478
|
+
* await r$.$validate();
|
|
3479
|
+
*
|
|
3480
|
+
* // Type-safe access to nested issues with full metadata
|
|
3481
|
+
* const emailIssues = getIssues(r$, 'user.email');
|
|
3482
|
+
* // [{
|
|
3483
|
+
* // $message: 'This field is required',
|
|
3484
|
+
* // $property: 'email',
|
|
3485
|
+
* // $rule: 'required'
|
|
3486
|
+
* // }]
|
|
3487
|
+
*
|
|
3488
|
+
* // Works with collections too
|
|
3489
|
+
* const itemIssues = getIssues(r$, 'items.0.name');
|
|
3490
|
+
* ```
|
|
3491
|
+
*
|
|
3492
|
+
* @see {@link https://reglejs.dev/core-concepts/displaying-errors#get-issues-by-path Documentation}
|
|
3493
|
+
*/
|
|
3494
|
+
function getIssues(r$, path) {
|
|
3495
|
+
return getDotPath(unref(r$).$issues, String(path));
|
|
3496
|
+
}
|
|
3497
|
+
|
|
3404
3498
|
function createEmptyRuleState(rules) {
|
|
3405
3499
|
const result = {};
|
|
3406
3500
|
if (Object.entries(rules).some(([_, rule]) => isRuleDef(rule) || typeof rule === "function")) return null;
|
|
@@ -4203,4 +4297,4 @@ const RegleVuePlugin = { install(app) {
|
|
|
4203
4297
|
if (typeof window !== "undefined" && true) createDevtools(app);
|
|
4204
4298
|
} };
|
|
4205
4299
|
|
|
4206
|
-
export { InternalRuleType, RegleVuePlugin, createRule, createScopedUseRegle, createVariant, defineRegleConfig, defineRules, extendRegleConfig, flatErrors, inferRules, markStatic, mergeRegles, narrowVariant, refineRules, unwrapRuleParameters, useCollectScope, useRegle, useRootStorage, useRules, useScopedRegle, variantToRef };
|
|
4300
|
+
export { InternalRuleType, RegleVuePlugin, createRule, createScopedUseRegle, createVariant, defineRegleConfig, defineRules, extendRegleConfig, flatErrors, getErrors, getIssues, inferRules, markStatic, mergeRegles, narrowVariant, refineRules, unwrapRuleParameters, useCollectScope, useRegle, useRootStorage, useRules, useScopedRegle, variantToRef };
|
package/dist/regle-core.min.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @regle/core v1.18.0-beta.
|
|
2
|
+
* @regle/core v1.18.0-beta.4
|
|
3
3
|
* (c) 2026 Victor Garcia
|
|
4
4
|
* @license MIT
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import{computed as e,effectScope as t,getCurrentInstance as n,getCurrentScope as r,isRef as i,markRaw as a,nextTick as o,onMounted as s,onScopeDispose as c,reactive as l,ref as u,shallowRef as d,toRef as f,toValue as p,triggerRef as m,unref as h,version as g,watch as _,watchEffect as v}from"vue";function y(e){return e?.constructor?.name==`File`}function b(e){return e&&(e instanceof Date||e.constructor.name==`File`||e.constructor.name==`FileList`)?!1:typeof e==`object`&&!!e&&!Array.isArray(e)}function x(e,...t){for(var n=[].slice.call(arguments),r,i=n.length;r=n[i-1],i--;)if(!r||typeof r!=`object`&&typeof r!=`function`)throw Error(`expected object, got `+r);for(var a=n[0],o=n.slice(1),s=o.length,i=0;i<s;i++){var c=o[i];for(var l in c)a[l]=c[l]}return a}function S(e){let t={};for(let n in e){if(!Object.prototype.hasOwnProperty.call(e,n))continue;let r=e[n],i=n.split(`.`),a=t;for(let e=0;e<i.length;e++){let t=i[e],n=e===i.length-1,o=t.match(/^\d+$/)?Number(t):null;if(o!==null){if(Array.isArray(a))if(n)a[o]=r;else{if(typeof a[o]!=`object`||a[o]===null){let t=i[e+1];a[o]=t&&t.match(/^\d+$/)?{$each:[],$self:[]}:{}}a=`$each`in a[o]?a[o].$each:a[o]}}else if(n)if(Array.isArray(a[t])){let e=a[t].slice();a[t]={},a[t].$self=e}else typeof a[t]==`object`&&a[t]!==null&&`$each`in a[t]?a[t].$self=r:a[t]=r;else{let n=i[e+1];if(Array.isArray(a[t])){let e=a[t].slice();a[t]={$each:[]},a[t].$self=e}(typeof a[t]!=`object`||a[t]===null||Array.isArray(a[t])&&!n.match(/^\d+$/))&&(n&&n.match(/^\d+$/)?a[t]={$each:[],$self:[]}:a[t]={}),a=`$each`in a[t]?a[t].$each:a[t]}}}return t}function C(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function w(e,t,n,r=!1){Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})}function T(e){return typeof e==`function`&&!!e.prototype&&`constructor`in e.prototype&&e.prototype.constructor===e}function E(e,t=!0,n=!0){return e==null?!0:e instanceof Date?isNaN(e.getTime()):y(e)?e.size<=0:Array.isArray(e)?t?e.length===0:!1:b(e)?e==null?!0:n?Object.keys(e).length===0:!1:!String(e).length}const D=Symbol(`regle-rule`);function O(e){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 k(e,t=0){if(t>20)return e;let n=e,r={}.toString.call(e).slice(8,-1);if(r==`Set`&&(n=new Set([...e].map(e=>k(e,t++)))),r==`Map`&&(n=new Map([...e].map(e=>[k(e[0]),k(e[1])]))),r==`Date`&&(n=new Date(e.getTime())),r==`RegExp`&&(n=RegExp(e.source,O(e))),r==`Array`||r==`Object`)for(let r in n=Array.isArray(e)?[]:{},e)n[r]=k(e[r],t++);return n}function A(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]`||typeof e==`string`||t===`[object String]`?new Date(e):new Date(NaN)}function j(e,t,{immediate:n=!1,trackDebounceRef:r}={}){let i,a=(...a)=>{r&&(r.value=!0);function o(){r&&(r.value=!1)}return new Promise((r,s)=>{function c(e){r(e),o()}if(clearTimeout(i),i=setTimeout(()=>{if(o(),i=void 0,!n)try{Promise.resolve(e.apply(this,[...a])).then(c).catch(e=>s(e)).finally(o)}catch(e){s(e)}},t),n){o();try{Promise.resolve(e.apply(this,[...a])).then(c).catch(e=>s(e)).finally(o)}catch(e){s(e)}}})};return a.cancel=()=>{clearTimeout(i),i=void 0,r&&(r.value=!1)},a}function M(e,t,n=!1,r=!0){if(e===t)return!0;if(e&&t&&typeof e==`object`&&typeof t==`object`){if(e.constructor!==t.constructor)return!1;var i,a,o;if(Array.isArray(e)&&Array.isArray(t)){if(i=e.length,i!=t.length)return!1;if(r||!r&&n){for(a=i;a--!==0;)if(!M(e[a],t[a],n,!1))return!1}return!0}if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===t.toString();if(o=Object.keys(e),i=o.length,i!==Object.keys(t).length)return!1;for(a=i;a--!==0;)if(!Object.prototype.hasOwnProperty.call(t,o[a]))return!1;for(a=i;a--!==0;){var s=o[a];if(b(e)&&b(t)&&s&&(r||!r&&n)&&!M(e[s],t[s],n,!1))return!1}return!0}return e!==e&&t!==t}var N=class extends Error{constructor(e=`Promise was aborted`){super(e),this.name=`AbortError`}};function P(e){let t=new AbortController,{signal:n}=t,r=new Promise((t,r)=>{function i(){r(new N)}n.addEventListener(`abort`,i),e.then(e=>{n.removeEventListener(`abort`,i),n.aborted?r(new N):t(e)}).catch(e=>{n.removeEventListener(`abort`,i),n.aborted?r(new N):r(e)})});function i(e){t.abort(e)}return{promise:r,abort:i,signal:n}}const F={Inline:`__inline`,Async:`__async`};function I(e){try{return e.map(e=>p(e))}catch{return[]}}function L(t){return t.map(t=>t instanceof Function?e(t):i(t)?t:f(()=>t))}function R(e){let t=e.toString().replace(/\/\/.*$/gm,``).replace(/\/\*[\s\S]*?\*\//g,``).match(/^(?:async\s*)?(?:function\b.*?\(|\((.*?)\)|(\w+))\s*=>|\((.*?)\)\s*=>|function.*?\((.*?)\)|\((.*?)\)/);return t?(t[0]||t[1]||t[2]||t[3]||t[4]||``).split(`,`).map(e=>e.trim()).filter(e=>e.length>0).length:0}function z(e,...t){let{validator:n,type:r,async:i}=e,o=i||r===F.Async||n.constructor.name===`AsyncFunction`;return a({validator(n,...r){return e.validator(n,...I(r.length?r:t))},message(n){return typeof e.message==`function`?e.message({...n,$params:I(n?.$params?.length?n.$params:t)}):e.message},active(n){return typeof e.active==`function`?e.active({...n,$params:I(n?.$params?.length?n.$params:t)}):e.active??!0},tooltip(n){return typeof e.tooltip==`function`?e.tooltip({...n,$params:I(n?.$params?.length?n.$params:t)}):e.tooltip??[]},exec(n){let r=e.validator(n,...I(t)),i;return r instanceof Promise?r.then(e=>(i=e,typeof i==`object`&&`$valid`in i?i.$valid:typeof i==`boolean`?i:!1)):(i=r,typeof i==`object`&&`$valid`in i?i.$valid:typeof i==`boolean`?i:!1)},type:r,_validator:e.validator,_message:e.message,_active:e.active,_tooltip:e.tooltip,_type:e.type,_message_patched:!1,_tooltip_patched:!1,_async:o,_params:L(t),_brand:D})}function B(e){if(typeof e.validator==`function`){let t=[],n=e.async??e.validator.constructor.name===`AsyncFunction`,r=z({...e,async:n},...t);if(R(e.validator)>1){let t=function(...t){return z(e,...t)};return t.validator=r.validator,t.message=r.message,t.active=r.active,t.tooltip=r.tooltip,t.type=r.type,t.exec=r.exec,t._validator=r.validator,t._message=r.message,t._active=r.active,t._tooltip=r.tooltip,t._type=e.type,t._message_pacthed=!1,t._tooltip_pacthed=!1,t._async=n,t}else return r}throw Error(`[createRule] validator must be a function`)}function V(e){return b(e.value)}function H(e,n,r){let i=t(),a;return a=e instanceof Function?i.run(()=>e(n,r??0)):e,{scope:i,unwrapped:a}}const U={LessThan:-1,EqualTo:0,GreaterThan:1};function W(e,t){let n=String(e).split(`.`),r=String(t).split(`.`);for(let e=0;e<Math.min(n.length,r.length);e++){let t=Number(n[e]),i=Number(r[e]);if(t>i)return U.GreaterThan;if(i>t)return U.LessThan;if(!isNaN(t)&&isNaN(i))return U.GreaterThan;if(isNaN(t)&&!isNaN(i))return U.LessThan}return U.EqualTo}const ee=W(g,`3.5.0`)!==-1;function te(){return Math.floor(Math.random()*Date.now()).toString()}function ne(){return typeof window>`u`?te():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function G(e){return r()?(c(e),!0):!1}function K(e){let n=!1,r,i=t(!0);return((...t)=>(n||=(r=i.run(()=>e(...t)),!0),r))}function re(e,t){return e.some(e=>t?e?.[t]:!1)}function q(e,t){return t?e.reduce((e,n)=>{let r=n?.[t]||[];return e.concat(r)},[]):[]}function J(){let e=d(new Map),t=d(new Map),n=d(new Map),i=d(new Map),a=d(new Map),o=d(new Map);function s(e){let n=t.value.get(e);if(n)return n;{let n=u({});return t.value.set(e,n),n}}function l(e){let t=n.value.get(e);if(t)return t;{let t=u([]);return n.value.set(e,t),t}}function f(e,t,n){o.value.set(`${e}-${t}`,n)}function p(e,t){return o.value.get(`${e}-${t}`)}function m(e,t){e&&t!=null&&o.value.delete(`${e}-${t}`)}function h(e,t){i.value.set(e,t)}function g(e){return i.value.get(e)??!1}function _(t,n){e.value.set(t,n)}function v(t,n){let r=e.value.get(t);if(r)return y(n,r)?{valid:!0}:{valid:!1}}function y(e,t){let n=Object.keys(t),r=Object.keys(e);return r.length!==n.length||!r.every(e=>n.includes(e))?!1:r.every(n=>{let r=e[n],i=t[n];return!i||!r||typeof r==`function`||typeof i==`function`||typeof r==`number`||typeof r==`boolean`||typeof r==`string`?!1:r._params?r._params?.every((e,t)=>{if(typeof i==`number`||typeof i==`boolean`||typeof i==`string`)return!0;{let e=I(i._params),n=I(r._params);return e?.[t]===n?.[t]}}):!0})}function b(e){let t=a.value.get(e);if(t)return t;{let t=u(!1),n=u(!0),r=u({}),i=u(!1);return a.value.set(e,{$pending:t,$valid:n,$metadata:r,$validating:i}),{$pending:t,$valid:n,$metadata:r,$validating:i}}}return r()&&c(()=>{e.value.clear(),t.value.clear(),n.value.clear(),i.value.clear(),a.value.clear(),o.value.clear()}),{addRuleDeclEntry:_,setDirtyEntry:h,checkRuleDeclEntry:v,getDirtyState:g,trySetRuleStatusRef:b,getFieldsEntry:s,getCollectionsEntry:l,getArrayStatus:p,addArrayStatus:f,deleteArrayStatus:m,arrayStatusStorage:o}}const Y=Symbol(`regle`),X={REGLE_STATIC:`__regle_static`};function Z(e,t){return!oe(e.value)&&(V(e)||b(t.value)&&!E(t.value)&&!Object.entries(t.value).some(([e,t])=>Q(t)||typeof t==`function`))}function ie(e,t,n=!1){return!!e.value&&b(e.value)&&`$each`in e.value||n&&Array.isArray(t.value)||Array.isArray(t.value)&&t.value.some(b)}function ae(e){return!!e.value&&(b(e.value)||V(e.value))}function Q(e){return(b(e)||typeof e==`function`)&&`_validator`in e}function $(e){return typeof e.value==`function`?`_validator`in e.value:!0}function oe(e){return b(e)&&C(e,X.REGLE_STATIC)&&e[X.REGLE_STATIC]===!0}function se(e){return b(e)&&`$fields`in e}function ce(e){return!!e&&`$rules`in e}function le({field:e,silent:t=!1}){let n=Object.entries(e.$rules??{}).map(([n,r])=>{let i=``;if(t&&!r.$valid)i=r.$message;else if(!r.$valid&&e.$error&&!r.$validating)i=r.$message;else return null;return{$message:i,$property:e.fieldName,$rule:n,$type:r.$type,...typeof r.$metadata==`object`?r.$metadata:{}}}).filter(e=>!!e).reduce((e,t)=>(typeof t.$message==`string`?e.push(t):e.push(...t.$message.map(e=>({...t,$message:e}))),e),[]),r=e.$error&&e.$externalErrors?e.$externalErrors.map(t=>({$message:t,$property:e.fieldName,$rule:`external`,$type:void 0})):[],i=[];return e.$schemaErrors&&e.$error&&(i=!Array.isArray(e.$schemaErrors)&&`$self`in e.$schemaErrors?e.$schemaErrors.$self??[]:e.$schemaErrors??[]),[...n,...r,...i]}function ue({field:e}){let t=[];for(let n of Object.values(e.$rules??{})){let e=n.$tooltip;e&&(typeof e==`string`?t.push(e):t.push(...e))}return t}function de(e){return b(e)&&`$each`in e}function fe(e,t){let{includePath:n=!1}=t??{};if(Array.isArray(e)&&e.every(e=>!b(e)))return e;if(de(e)){let t=n?e.$self?.map(e=>({message:e,path:[]}))??[]:e.$self??[],r=e.$each?.map(e=>pe(e,n))??[];return t?.concat(r.flat())}else return Object.entries(e).map(([e,t])=>pe(t,n,[e])).flat()}function pe(e,t=!1,n){let r=t&&!n?[]:n;if(Array.isArray(e)&&e.every(e=>!b(e)))return t?e.map(e=>({message:e,path:r??[]})):e;if(de(e)){let n=r?.length?e.$self?.map(e=>({message:e,path:r??[]}))??[]:e.$self??[],i=e.$each?.map((e,n)=>pe(e,t,r?.concat(n)))??[];return n?.concat(i.flat())}else return Object.entries(e).map(([e,n])=>pe(n,t,r?.concat(e))).flat()}function me({customMessages:n,rule:r,ruleKey:i,state:a,path:o,cachePath:s,storage:c,modifiers:d}){let f=t(),p={},m,h=e(()=>Q(r.value)&&r.value._async),g=u(!1),{$pending:v,$valid:y,$metadata:b,$validating:x}=c.trySetRuleStatusRef(`${s}.${i}`);function S(){f=t(),p=f.run(()=>{let t=u(!1),s=u(!1),c=u(!0),l=u(!1),d=u(!1),f=e(()=>({$value:a.value,$error:s.value,$dirty:t.value,$pending:l.value,$correct:d.value,$invalid:c.value,$rule:{$valid:y.value,$invalid:!y.value,$pending:v.value},$params:S.value,...b.value})),p=e(()=>{try{return $(r)?typeof r.value.active==`function`?r.value.active(f.value):!!r.value.active:!0}catch(e){return console.error(`Error in "active" function for "${o}.${i}" rule`,{cause:e}),!0}});function m(e){try{let t=``,a=n?n[i]?.[e]:void 0;if(a&&(t=typeof a==`function`?a(f.value):a),$(r)){let n=`_${e}_patched`;a&&!r.value[n]||(t=typeof r.value[e]==`function`?r.value[e](f.value):r.value[e]??``)}return t}catch(t){return console.error(`Error in "${e}" function for "${o}.${i}" rule`,{cause:t}),``}}let h=e(()=>{let e=m(`message`);return E(e)&&(e=`This field is not valid`),e}),g=e(()=>m(`tooltip`)),_=e(()=>$(r)&&r.value.type?r.value.type:i),x=e(()=>$(r)?r.value.validator:r.value),S=e(()=>typeof r.value==`function`?[]:I(r.value._params??[]));return{$active:p,$message:h,$type:_,$validator:x,$params:S,$path:e(()=>`${o}.${i}`),$tooltip:g,$fieldCorrect:d,$fieldError:s,$fieldDirty:t,$fieldPending:l,$fieldInvalid:c}}),m=_(p?.$params,()=>{(!d.$silent.value||d.$rewardEarly.value&&p.$fieldError.value)&&T()},{deep:ee?1:!0})}S();function C(){y.value=!0,p.$fieldDirty.value&&(v.value=!0)}async function w(){let e=!1;try{let t=p.$validator.value;if(typeof t!=`function`)return console.error(`${o}: Incorrect rule format, it needs to be either a function or created with "createRule".`),!1;let n=t(a.value,...p.$params.value),r=a.value;C();let i;if(i=n instanceof Promise?await n:n,a.value!==r)return!0;if(typeof i==`boolean`)e=i;else{let{$valid:t,...n}=i;e=t,b.value=n}}catch{e=!1}finally{v.value=!1}return e}async function T(){try{x.value=!0;let e=!1;if(g.value=!0,Q(r.value)&&r.value._async)e=await w();else{let t=p.$validator.value,n=t(a.value,...p.$params.value);if(!(n instanceof Promise)&&n!=null)if(typeof n==`boolean`)e=n;else{let{$valid:t,...r}=n;e=t,b.value=r}}return y.value=e,e}catch{return!1}finally{x.value=!1,g.value=!1}}function D(){y.value=!0,b.value={},v.value=!1,x.value=!1,S()}function O(){m(),f.stop(),f=t()}return l({...p,$pending:v,$valid:y,$metadata:b,$haveAsync:h,$maybePending:g,$validating:x,$parse:T,$unwatch:O,$watch:S,$reset:D})}function he(e){return{"~standard":{version:1,vendor:`regle`,validate:async t=>{let{valid:n,data:r,errors:i}=await e(t);return n?{value:r,issues:[]}:{issues:fe(i,{includePath:!0})}}}}}function ge({state:n,rulesDef:r,customMessages:i,path:a,cachePath:o,fieldName:s,storage:c,options:d,externalErrors:p,schemaErrors:m,schemaMode:g,onUnwatch:y,$isArray:x,initialState:S,originalState:C,shortcuts:w,overrides:T,onValidate:D}){let O=t(),N,F=[],I,L,R,z,B=()=>{},V,H=()=>{},U=u(!1);function W(){let e=r.value,t=c.checkRuleDeclEntry(o,e),s={};for(let t in e)t.startsWith(`$`)&&(s[t]=e[t]);Y.value=s,K();let l=r.value,u=[];for(let e in l){if(e.startsWith(`$`)||e.startsWith(`~`))continue;let t=l[e];if(!t)continue;let r=f(()=>t);u.push([e,me({modifiers:{$silent:N.$silent,$rewardEarly:N.$rewardEarly},customMessages:i,rule:r,ruleKey:e,state:n,path:a,cachePath:o,storage:c,$debounce:Y.value.$debounce})])}J.value=Object.fromEntries(u),N.processShortcuts(),te(),ne(),t?.valid!=null&&(N.$dirty.value=c.getDirtyState(o),(N.$dirty.value&&!N.$silent.value||N.$rewardEarly.value&&N.$error.value)&&B()),c.addRuleDeclEntry(o,e)}function te(){B=N.$debounce.value>0?j(q,N.$debounce.value,{trackDebounceRef:U}):q}function ne(){H=N.$debounce.value>0?j(()=>{N.$dirty.value=!0},N.$debounce.value):()=>{N.$dirty.value=!0}}function G(){if(J.value)for(let e of Object.values(J.value))e.$unwatch();L(),z?.(),N.$dirty.value&&c.setDirtyEntry(o,N.$dirty.value),I?.(),O.stop(),O=t();for(let e of F)e.stop();F=[],y?.(),R?.()}function K(){if(J.value)for(let e of Object.values(J.value))e.$watch();N=O.run(()=>{let i=u(!1),a=u(!1),o=e(()=>i.value),c=e(()=>x||oe(n.value)),f=e(()=>Y.value.$debounce==null?N.$haveAnyAsyncRule.value?200:0:Y.value.$debounce),_=e(()=>Y.value.$deepCompare==null?!1:Y.value.$deepCompare),y=e(()=>Y.value.$lazy==null?h(d.lazy)==null?!1:h(d.lazy):Y.value.$lazy),b=e(()=>Y.value.$immediateDirty==null?h(d.immediateDirty)==null?!1:h(d.immediateDirty):Y.value.$immediateDirty),C=e(()=>Y.value.$rewardEarly==null?h(d.rewardEarly)==null?!1:h(d.rewardEarly):Y.value.$rewardEarly),D=e(()=>Y.value.$clearExternalErrorsOnChange==null?h(d.clearExternalErrorsOnChange)==null?!O.value:h(d.clearExternalErrorsOnChange):Y.value.$clearExternalErrorsOnChange),O=e(()=>C.value?!0:Y.value.$silent==null?h(d.silent)==null?!1:h(d.silent):Y.value.$silent),k=e(()=>Y.value.$autoDirty==null?h(d.autoDirty)==null?!0:h(d.autoDirty):Y.value.$autoDirty),j=e(()=>{for(let e of Object.values(J.value))if(e.$validating)return!0;return!1}),P=e({get:()=>n.value,set(e){I(),n.value=e,re()}}),L=e(()=>U.value?K.value&&i.value:K.value&&!G.value&&i.value),R=e(()=>le({field:{$rules:J.value,$error:L.value,$externalErrors:p?.value,$schemaErrors:m?.value,fieldName:q.value}})),z=e(()=>le({field:{$rules:J.value,$error:L.value,$externalErrors:p?.value,$schemaErrors:m?.value,fieldName:q.value},silent:!0})),B=e(()=>R.value.map(e=>e.$message)),V=e(()=>z.value.map(e=>e.$message)),H=u(!1);function W(e,t){return t instanceof Date&&e instanceof Date?A(t).getDate()!==A(e).getDate():t==null?!!e:Array.isArray(e)&&Array.isArray(t)?!M(e,t,Y.value.$deepCompare):t!==e}v(()=>{i.value?Y.value.$isEdited?H.value=Y.value.$isEdited(n.value,S.value,W):T?.isEdited?H.value=T.isEdited(n.value,S.value,W):H.value=W(n.value,S.value):H.value=!1});let ee=e(()=>H.value),te=e(()=>ue({field:{$rules:J.value}})),ne=e(()=>!(K.value||G.value)),G=e(()=>a.value||!C.value?Object.entries(J.value).some(([e,t])=>t.$pending):!1),K=e(()=>p?.value?.length||m?.value?.length?!0:X.value?!1:Object.values(J.value).some(e=>!e.$valid||e.$maybePending)),q=e(()=>s??d.id??`root`),X=e(()=>!g&&!Object.keys(r.value).some(e=>!e.startsWith(`$`))),Z=e(()=>{if(p?.value?.length||X.value||U.value)return!1;if(i.value&&!E(n.value)&&!j.value&&!G.value){if(g)return!m?.value?.length;{let e=Object.values(J.value);for(let t of e)if(t.$active&&!t.$valid)return!1;return e.some(e=>e.$active)}}return!1}),ie=e(()=>Object.values(J.value).some(e=>e.$haveAsync)),ae=e(()=>({$debounce:f.value,$lazy:y.value,$rewardEarly:C.value,$autoDirty:k.value,$silent:O.value,$clearExternalErrorsOnChange:D.value}));function Q(){w?.fields&&Object.entries(w.fields).forEach(([e,r])=>{let a=t();$[e]=a.run(()=>{let e=u();return v(()=>{e.value=r(l({$dirty:i,$externalErrors:p?.value??[],$value:n,$silentValue:P,$rules:J,$error:L,$pending:G,$invalid:K,$correct:Z,$errors:B,$ready:ne,$silentErrors:V,$anyDirty:o,$tooltips:te,$name:q,$inactive:X,$edited:H,$anyEdited:ee}))}),e}),F.push(a)})}let $={};return{$error:L,$pending:G,$invalid:K,$correct:Z,$debounce:f,$deepCompare:_,$lazy:y,$immediateDirty:b,$ready:ne,$issues:R,$silentIssues:z,$errors:B,$silentErrors:V,$rewardEarly:C,$autoDirty:k,$silent:O,$clearExternalErrorsOnChange:D,$anyDirty:o,$edited:H,$anyEdited:ee,$name:q,$haveAnyAsyncRule:ie,$shortcuts:$,$validating:j,$tooltips:te,$dirty:i,processShortcuts:Q,$silentValue:P,$inactive:X,$modifiers:ae,$isArrayOrRegleStatic:c}}),re(),L=_(N.$dirty,e=>{c.setDirtyEntry(o,e),Object.values(J.value).forEach(t=>{t.$fieldDirty=e})}),z=_([N.$error,N.$correct,N.$invalid,N.$pending],()=>{Object.values(J.value).forEach(e=>{e.$fieldError=N.$error.value,e.$fieldInvalid=N.$invalid.value,e.$fieldPending=N.$pending.value,e.$fieldCorrect=N.$correct.value})}),R=_(N.$haveAnyAsyncRule,te)}function re(){I=_(n,()=>{N.$autoDirty.value&&!N.$silent.value&&(N.$dirty.value||H()),r.value instanceof Function&&W(),(!N.$silent.value||N.$rewardEarly.value&&N.$error.value)&&B(),N.$clearExternalErrorsOnChange.value&&ce()},{deep:N.$isArrayOrRegleStatic.value?!0:ee?1:!0})}async function q(){try{let{promise:e}=ie(Promise.allSettled(Object.values(J.value).map(e=>e.$parse())));await e}catch{}}let J=u({}),Y=u({});W();function X(e,t){if(Z(),ce(),N.$dirty.value=!1,c.setDirtyEntry(o,!1),!t)if(e?.toOriginalState)n.value=k(C),S.value=k(C);else if(e?.toInitialState)n.value=k(S.value);else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,S.value=k(t),n.value=k(t)}else S.value=b(n.value)&&!oe(n.value)?k(n.value):Array.isArray(n.value)?[...n.value]:n.value;if(e?.clearExternalErrors&&ce(),!t&&!e?.keepValidationState)for(let e of Object.values(J.value))e.$reset();if(!N.$lazy.value&&!N.$silent.value&&!t)for(let e of Object.values(J.value))e.$parse()}function Z(){`cancel`in B&&B.cancel()}function ie(e){return V&&V.abort(),V=P(e),V}function ae(){Z(),V&&V.abort()}function Q(e=!0,t=!1){N.$dirty.value||H(),t&&e?(!N.$silent.value||N.$rewardEarly.value&&N.$error.value)&&(Z(),B()):e&&(Z(),B())}async function $(e){try{if(e&&(n.value=e),g)return D?(Q(!1),D()):{valid:!1,data:n.value,errors:N.$errors.value,issues:N.$issues.value};let t=n.value;if(!N.$dirty.value)N.$dirty.value=!0;else if(!N.$silent.value&&N.$dirty.value&&!N.$pending.value&&!U.value&&!N.$haveAnyAsyncRule.value)return{valid:!N.$error.value,data:t,errors:N.$errors.value,issues:N.$issues.value};if(g)return{valid:!m?.value?.length,data:t,errors:N.$errors.value,issues:N.$issues.value};if(E(J.value))return{valid:!0,data:t,errors:N.$errors.value,issues:N.$issues.value};ae();let{promise:r}=ie(Promise.allSettled(Object.values(J.value).map(e=>e.$parse())));return{valid:(await r).every(e=>e.status===`fulfilled`&&e.value===!0),data:t,errors:N.$errors.value,issues:N.$issues.value}}catch{return{valid:!1,data:n.value,errors:N.$errors.value,issues:N.$issues.value}}}function se(e=!0){return N.$dirty.value?n.value:e?{_null:!0}:null}function ce(){p?.value?.length&&(p.value=[])}!N.$lazy.value&&!N.$dirty.value&&!N.$silent.value&&q(),N.$immediateDirty.value&&(N.$dirty.value=!0);let{$shortcuts:de,$validating:fe,$autoDirty:pe,$rewardEarly:ge,$clearExternalErrorsOnChange:_e,$haveAnyAsyncRule:ve,$debounce:ye,$lazy:be,...xe}=N;return l({...xe,$externalErrors:p,$value:n,$initialValue:S,$originalValue:C,$rules:J,...de,$path:a,$isDebouncing:U,$reset:X,$touch:Q,$validate:$,$unwatch:G,$watch:K,$extractDirtyFields:se,$clearExternalErrors:ce,$abort:ae,$schemaMode:g,"~modifiers":N.$modifiers,...he($)})}function _e({$id:t,path:n,cachePath:r,index:i,options:a,storage:o,stateValue:s,customMessages:c,rules:l,externalErrors:u,schemaErrors:d,initialState:p,originalState:m,shortcuts:h,fieldName:g,schemaMode:_,overrides:v}){let y=s.value?.$id??l.$key??ne(),x=`${r}.${String(y)}`,S=`${n}.${i}`;typeof s.value==`object`&&s.value!=null&&(s.value.$id||Object.defineProperties(s.value,{$id:{value:y,enumerable:!1,configurable:!1,writable:!1}}));let C=f(u?.value??[],i),w=e(()=>d?.value?.[i]),T=be({index:i,state:s,rulesDef:f(()=>l),customMessages:c,path:S,cachePath:x,storage:o,options:a,externalErrors:C,schemaErrors:w,initialState:p,originalState:m,shortcuts:h,fieldName:g,schemaMode:_,overrides:v});return T&&(T.$id=s.value?.$id??String(y),o.addArrayStatus(t,T.$id,T)),s.value&&(!b(s.value)||oe(s.value))&&_&&T?.$touch(),T}function ve({state:n,rulesDef:r,customMessages:i,path:a,cachePath:o,storage:s,options:c,externalErrors:d,schemaErrors:p,schemaMode:m,initialState:g,originalState:y,shortcuts:b,fieldName:x,overrides:S}){let C=t(),w,T=t(),D,O=[];if(!Array.isArray(n.value)&&!r.value.$each)return;let A=u(),j=u(n.value),M=u({}),N,P,F=u({}),I=s.getCollectionsEntry(a);D=T.run(()=>({isPrimitiveArray:e(()=>n.value?.length?Array.isArray(n.value)&&n.value.length?n.value.every(e=>typeof e!=`object`):r.value.$each&&!(r.value.$each instanceof Function)?Object.values(r.value.$each).every(e=>Q(e)||typeof e==`function`):!1:!1)})),L(),V();function L(){M.value=Object.fromEntries(Object.entries(r.value).filter(([e])=>e.startsWith(`$`))),typeof n.value==`object`&&(n.value!=null&&!n.value?.$id&&n.value!==null?(A.value=ne(),Object.defineProperties(n.value,{$id:{value:A.value,enumerable:!1,configurable:!1,writable:!1}})):n.value?.$id&&(A.value=n.value.$id)),j.value=F.value.$value,Array.isArray(n.value)&&(!D.isPrimitiveArray.value||m)?I.value=n.value.map((t,n)=>{let{scope:l,unwrapped:u}=H(r.value.$each,f(()=>t),n);l&&O.push(l);let h=f(g.value??[],n),_=f(d?.value??{},`$each`),v=e(()=>p?.value?.$each);return _e({$id:A.value,path:a,cachePath:o,customMessages:i,rules:u??{},stateValue:f(()=>t),index:n,options:c,storage:s,externalErrors:_,schemaErrors:v,initialState:h,originalState:y,shortcuts:b,fieldName:x,schemaMode:m,overrides:S})||null}).filter(e=>!!e):I.value=[],F.value=ge({state:n,rulesDef:r,customMessages:i,path:a,cachePath:a,storage:s,options:c,externalErrors:f(d?.value??{},`$self`),schemaErrors:e(()=>p?.value?.$self),$isArray:!0,initialState:g,originalState:y,shortcuts:b,fieldName:x,schemaMode:m,overrides:S})}function R(){if(Array.isArray(n.value)&&(!D.isPrimitiveArray.value||m)){let t=k(I.value);I.value=n.value.map((t,n)=>{let o=f(()=>t);if(t.$id&&I.value.find(e=>e.$id===t.$id)){let e=s.getArrayStatus(A.value,t.$id);return e?(e.$value=o,e):null}else{let{scope:t,unwrapped:l}=H(r.value.$each,o,n);t&&O.push(t);let u=f(d?.value??{},`$each`),h=e(()=>p?.value?.$each??[]);return _e({$id:A.value,path:a,cachePath:a,customMessages:i,rules:l??{},stateValue:o,index:n,options:c,storage:s,externalErrors:u,schemaErrors:h,initialState:f(g.value??[],n),originalState:y,shortcuts:b,fieldName:x,schemaMode:m,overrides:S})||null}}).filter(e=>!!e),t.filter(e=>!n.value?.find(t=>e.$id===t.$id)).forEach((e,t)=>{s.deleteArrayStatus(A.value,t.toString())})}else I.value=[]}function z(){N=_(n,()=>{P?.(),n.value!=null&&!Object.hasOwn(n.value,`$id`)&&!A.value?L():R(),B()},{deep:ee?1:!0,flush:`pre`}),B()}function B(){P=_(n,()=>{w.$autoDirty.value&&!w.$silent.value&&F.value.$touch(!1,!0)},{flush:`post`})}function V(){z(),C=t(),w=C.run(()=>{let r=e({get:()=>n.value,set(e){N?.(),P?.(),n.value=e,z()}}),i=e(()=>F.value.$dirty&&(!I.value.length||I.value.every(e=>e.$dirty))),o=e(()=>F.value.$anyDirty||I.value.some(e=>e.$anyDirty)),s=e(()=>F.value.$invalid||I.value.some(e=>e.$invalid)),d=e(()=>(m?F.value.$correct:E(F.value.$rules)?!0:F.value.$correct)&&(!I.value.length||I.value.every(e=>e.$correct||e.$anyDirty&&!e.$invalid))),f=e(()=>F.value.$error||I.value.some(e=>e.$error)),p=e(()=>!(s.value||_.value)),_=e(()=>F.value.$pending||I.value.some(e=>e.$pending)),S=e(()=>!!I.value.length&&I.value.every(e=>e.$edited)),C=e(()=>F.value.$anyEdited||I.value.some(e=>e.$anyEdited)),w=e(()=>({$self:F.value.$issues,$each:I.value.map(e=>e.$issues)})),T=e(()=>({$self:F.value.$errors,$each:I.value.map(e=>e.$errors)})),D=e(()=>({$self:F.value.$silentErrors,$each:I.value.map(e=>e.$silentErrors)})),k=e(()=>M.value.$rewardEarly==null?h(c.rewardEarly)==null?!1:h(c.rewardEarly):M.value.$rewardEarly),A=e(()=>k.value?!0:M.value.$silent==null?h(c.silent)==null?!1:h(c.silent):M.value.$silent),j=e(()=>M.value.$autoDirty==null?h(c.autoDirty)==null?!0:h(c.autoDirty):M.value.$autoDirty),L=e(()=>x??c.id??`root`),R=e(()=>({$deepCompare:M.value.$deepCompare??!1,$lazy:M.value.$lazy??!1,$rewardEarly:k.value,$autoDirty:j.value,$silent:A.value,$clearExternalErrorsOnChange:M.value.$clearExternalErrorsOnChange??!1}));function B(){b?.collections&&Object.entries(b?.collections).forEach(([e,c])=>{let m=t();V[e]=m.run(()=>{let e=u();return v(()=>{e.value=c(l({$dirty:i,$error:f,$path:a,$silentValue:r,$pending:_,$invalid:s,$correct:d,$errors:T,$silentErrors:D,$initialValue:g,$originalValue:y,$ready:p,$anyDirty:o,$name:L,$each:I,$self:F,$value:n,$edited:S,$anyEdited:C,$issues:w}))}),e}),O.push(m)})}let V={};return B(),{$dirty:i,$anyDirty:o,$invalid:s,$correct:d,$error:f,$pending:_,$errors:T,$silentErrors:D,$ready:p,$name:L,$shortcuts:V,$silentValue:r,$edited:S,$anyEdited:C,$rewardEarly:k,$silent:A,$autoDirty:j,$issues:w,$modifiers:R}}),D.isPrimitiveArray.value&&r.value.$each&&console.warn(`${a} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`)}function U(){N?.(),F.value&&F.value.$unwatch(),I.value&&I.value.forEach(e=>{`$dirty`in e&&e.$unwatch()}),C.stop(),C=t(),T.stop(),T=t(!0),O.forEach(e=>e.stop()),O=[]}function W(e=!0,t=!1){F.value.$touch(e,t),I.value.forEach(n=>{n.$touch(e,t)})}function te(e,t){if(U(),!t)if(e?.toOriginalState)n.value=k(y),g.value=k(y);else if(e?.toInitialState)n.value=k(g.value);else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,g.value=k(t),n.value=k(t)}else g.value=k(n.value);e?.clearExternalErrors&&re(),e?.keepValidationState||(F.value.$reset(e,t),I.value.forEach(t=>{t.$reset(e,!0)})),t||L()}function G(){F.value.$abort(),I.value.forEach(e=>{e.$abort()})}async function K(e){e&&(n.value=e);let t=n.value;try{return G(),{valid:(await Promise.allSettled([F.value.$validate(e),...I.value.map(e=>e.$validate())])).every(e=>e.status===`fulfilled`?e.value.valid===!0:!1),data:t,errors:w.$errors.value,issues:w.$issues.value}}catch{return{valid:!1,data:t,errors:w.$errors.value,issues:w.$issues.value}}}function re(){F.value.$clearExternalErrors(),I.value.forEach(e=>{e.$clearExternalErrors()})}function q(e=!0){let t=I.value.map(t=>{if(se(t))return t.$extractDirtyFields(e)});return e&&t.every(e=>E(e))&&(t=[]),t}let{$shortcuts:J,...Y}=w;return l({$self:F,...Y,...J,$path:a,$each:I,$value:n,$initialValue:g,$originalValue:y,$validate:K,$unwatch:U,$watch:V,$touch:W,$reset:te,$abort:G,$extractDirtyFields:q,$clearExternalErrors:re,"~modifiers":w.$modifiers,...he(K)})}function ye({rulesDef:n,state:r,path:i=``,cachePath:a,rootRules:o,externalErrors:s,schemaErrors:c,rootSchemaErrors:d,validationGroups:p,initialState:m,originalState:g,fieldName:y,...x}){let S=t(),C,w=[],T=null,D=null,O=null,A=null,j=u(void 0);async function M(t=!0){let o=Object.entries(n.value).filter(([e])=>e!==`$self`),l=Object.fromEntries(o.reduce((t,[n,o])=>{if(!o)return t;let l=f(r.value??{},n),u=f(()=>o),d=f(s?.value??{},n),p=e(()=>c?.value?.[n]),h=f(m?.value??{},n);return t.push([n,be({state:l,rulesDef:u,path:i?`${i}.${n}`:n,cachePath:a?`${a}.${n}`:n,externalErrors:d,schemaErrors:p,initialState:h,originalState:g?.[n],fieldName:n,...x})]),t},[])),u=Object.fromEntries(Object.entries(h(s)??{}).filter(([e,t])=>!(e in n.value)&&!!t).map(([t])=>{let n=f(r.value??{},t),o=f(s?.value??{},t),l=e(()=>c?.value?.[t]),u=f(m?.value??{},t),d=i?`${i}.${t}`:t,p=a?`${a}.${t}`:t;return[t,be({state:n,rulesDef:e(()=>({})),path:d,cachePath:p,externalErrors:o,schemaErrors:l,initialState:u,originalState:g?.[t],fieldName:t,...x})]})),d=Object.fromEntries(Object.entries(h(c)??{}).map(([t])=>{let n=i?`${i}.${t}`:t,o=a?`${a}.${t}`:t,l=f(r.value??{},t),u=f(s?.value??{},t),d=e(()=>c?.value?.[t]),p=f(m?.value??{},t);return[t,be({state:l,rulesDef:e(()=>({})),path:n,cachePath:o,externalErrors:u,schemaErrors:d,initialState:p,originalState:g?.[t],fieldName:t,...x})]})),p=Object.fromEntries(Object.entries(r.value??{}).filter(([e])=>!(e in n.value)&&!(e in(u??{}))&&!(e in(d??{}))).map(([t])=>{let n=f(r.value??{},t),o=f(s?.value??{},t),l=e(()=>c?.value?.[t]),u=f(m?.value??{},t);return[t,be({state:n,rulesDef:e(()=>({})),path:i?`${i}.${t}`:t,cachePath:a?`${a}.${t}`:t,externalErrors:o,schemaErrors:l,initialState:u,originalState:g?.[t],fieldName:t,...x})]}));P.value={...l,...u,...d,...p},t&&L()}function N(){n.value.$self&&(j.value=ge({state:r,rulesDef:e(()=>n.value.$self??{}),path:i,cachePath:a,externalErrors:u(void 0),schemaErrors:u(void 0),initialState:f(m?.value??{},`$self`),originalState:g?.$self,fieldName:`$self`,...x}))}let P=x.storage.getFieldsEntry(a);M(),N();function F(){s&&(O=_(s,()=>{R(),M()},{deep:!0}))}function I(){A=_(r,()=>{R(),M(),C.$autoDirty.value&&!C.$silent.value&&V(!1,!0)},{flush:`post`})}function L(){o&&(T?.(),T=_(o,()=>{R(),M()},{deep:!0,flush:`pre`}),F()),d&&(D?.(),D=_(d,()=>{R(),M()},{deep:!0,flush:`post`})),I(),C=S.run(()=>{let a=e({get:()=>r.value,set(e){R(),r.value=e,M(),C.$autoDirty.value&&!C.$silent.value&&V(!1,!0)}}),o=e({get:()=>r.value,set(e){R(),r.value=e,M()}}),s=e(()=>{let e=P.value,t=Object.keys(e);if(!t.length)return!1;for(let n of t)if(!e[n]?.$dirty)return!1;return!0}),c=e(()=>{let e=P.value;for(let t in e)if(e[t]?.$anyDirty)return!0;return!1}),d=e(()=>{if(j.value?.$invalid)return!0;let e=P.value,t=Object.entries(e);if(!t.length)return!1;for(let[e,n]of t)if(n?.$invalid)return!0;return!1}),f=e(()=>{let e=Object.entries(P.value).reduce((e,[t,n])=>((!ce(n)||!n.$inactive)&&e.push([t,n]),e),[]),t=n.value.$self&&!E(n.value.$self);if(e.length||t){let t=j.value?.$correct??!0,n=!1;return n=x.schemaMode?e.every(([e,t])=>t.$correct):e.every(([e,t])=>ce(t)?`required`in t.$rules&&t.$rules.required.$active?t.$correct:!t.$invalid&&!t.$pending&&!t.$isDebouncing:t?.$correct),t&&n}return!1}),_=e(()=>{if(j.value?.$error)return!0;let e=P.value;if(!Object.keys(e).length)return!1;for(let t in e)if(e[t]?.$error)return!0;return!1}),b=e(()=>h(x.options.rewardEarly)==null?!1:h(x.options.rewardEarly)),S=e(()=>h(x.options.silent)==null?!!b.value:h(x.options.silent)),T=e(()=>h(x.options.autoDirty)==null?!0:h(x.options.autoDirty)),D=e(()=>!(d.value||k.value)),O=u(!1),k=e(()=>{if(j.value?.$pending||O.value)return!0;let e=P.value;for(let t in e)if(e[t]?.$pending)return!0;return!1}),A=e(()=>{let e={...j.value&&{$self:j.value?.$issues??[]}};for(let t in P.value)e[t]=P.value[t]?.$issues;return e}),N=e(()=>{let e={...j.value&&{$self:j.value?.$errors??[]}};for(let t in P.value)e[t]=P.value[t]?.$errors;return e}),F=e(()=>{let e={...j.value&&{$self:j.value?.$silentErrors??[]}};for(let t in P.value)e[t]=P.value[t]?.$silentErrors;return e}),I=e(()=>{if(j.value?.$edited)return!0;if(!Object.keys(P.value).length)return!1;for(let e in P.value)if(!P.value[e]?.$edited)return!1;return!0}),L=e(()=>{if(j.value?.$anyEdited)return!0;for(let e in P.value)if(P.value[e]?.$anyEdited)return!0;return!1}),z=e(()=>y??x.options.id??`root`),B=e(()=>({autoDirty:T.value,lazy:h(x.options.lazy)??!1,rewardEarly:b.value,silent:S.value,clearExternalErrorsOnChange:h(x.options.clearExternalErrorsOnChange)??!1,id:h(x.options.id)}));function H(){x.shortcuts?.nested&&Object.entries(x.shortcuts.nested).forEach(([e,n])=>{let a=t();W[e]=a.run(()=>{let e=u();return v(()=>{e.value=n(l({$dirty:s,$path:i,$value:r,$silentValue:o,$error:_,$originalValue:g,$pending:k,$invalid:d,$correct:f,$ready:D,$anyDirty:c,$name:z,$silentErrors:F,$initialValue:m,$errors:N,$fields:P,$edited:I,$anyEdited:L,$issues:A,$self:j,"~modifiers":h(x.options)}))}),e}),w.push(a)})}let U=e({get:()=>p?Object.fromEntries(Object.entries(p?.(P.value)??{}).map(([e,t])=>t.length?[e,{...Object.fromEntries([`$invalid`,`$error`,`$pending`,`$dirty`,`$correct`].map(e=>[e,re(t,e)])),...Object.fromEntries([`$errors`,`$silentErrors`].map(e=>[e,q(t,e)]))}]:[])):{},set(){}}),W={};return H(),{$dirty:s,$anyDirty:c,$invalid:d,$correct:f,$error:_,$pending:k,$issues:A,$errors:N,$silentErrors:F,$ready:D,$name:z,$shortcuts:W,$groups:U,$silentValue:o,$edited:I,$anyEdited:L,$localPending:O,$autoDirty:T,$silent:S,$value:a,$modifiers:B}})}function R(){if(T?.(),O?.(),A?.(),D?.(),w=[],C={},P.value)for(let e of Object.values(P.value))e?.$unwatch()}function z(){let e=P.value;for(let t of Object.values(e))t.$clearExternalErrors();j.value?.$clearExternalErrors()}function B(e,t){if(O?.(),R(),!t)if(e?.toOriginalState)r.value=k({...g}),m.value=k({...g});else if(e?.toInitialState)r.value=k({...m.value});else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,m.value=k(t),r.value=k(t)}else m.value=k(r.value);if(!e?.keepValidationState){for(let t of Object.values(P.value))t?.$reset(e,!0);j.value?.$reset(e,!0)}e?.clearExternalErrors&&z(),F(),t||M()}function V(e=!0,t=!1){for(let n of Object.values(P.value))n?.$touch(e,t);j.value?.$touch(e,t)}function H(e){return e.filter(([e,t])=>b(t)&&!oe(t)?!(t&&typeof t==`object`&&`_null`in t)&&!E(t):Array.isArray(t)?t.length:!0)}function U(e=!0){let t=Object.entries(P.value).map(([t,n])=>[t,n.$extractDirtyFields(e)]);return e&&(t=H(t)),Object.fromEntries(t)}function W(){for(let e of Object.values(P.value))e.$abort();j.value?.$abort()}async function ee(e){try{if(e&&(r.value=e),x.schemaMode)return x.onValidate?(V(!1),C.$localPending.value=!0,x.onValidate()):{valid:!1,data:r.value,errors:C.$errors.value,issues:C.$issues.value};{let e=r.value;W();let t=[...Object.values(P.value).map(e=>e.$validate()),...j.value?[j.value?.$validate()]:[]];return{valid:(await Promise.allSettled(t)).every(e=>e.status===`fulfilled`&&e?.value?.valid===!0),data:e,errors:C.$errors.value,issues:C.$issues.value}}}catch{return{valid:!1,data:r.value,errors:C.$errors.value,issues:C.$issues.value}}finally{C.$localPending.value=!1}}let{$shortcuts:te,$localPending:ne,...G}=C,K=l({...G,...te,$path:i,$initialValue:m,$originalValue:g,$self:j,$fields:P,$reset:B,$touch:V,$validate:ee,$unwatch:R,$watch:L,$clearExternalErrors:z,$extractDirtyFields:U,$abort:W,...o?{"~modifiers":C.$modifiers}:{},...he(ee)});return v(()=>{for(let e of Object.keys(K).filter(e=>!e.startsWith(`$`)&&!e.startsWith(`~`)))delete K[e];for(let e of Object.values(P.value))e?.$name&&Object.assign(K,{[e.$name]:e})}),K}function be({rulesDef:e,...n}){if(ie(e,n.state,n.schemaMode))return ve({rulesDef:e,...n});if(Z(n.state,e)){if(V(n.state))return ye({rulesDef:e,...n});{let r=t().run(()=>{let e=f(n.state.value?n.state:u({}));return _(()=>n.state.value,t=>{e.value=t},{deep:!0}),_(e,e=>{n.state.value=e},{deep:!0}),{fakeState:e}}),{state:i,...a}=n;return ye({rulesDef:e,...a,state:r.fakeState})}}else if(ae(e))return ge({rulesDef:i(e.value)?e.value:e,...n})}var xe=`1.18.0-beta.2`;function Se({initialState:e,originalState:t,options:n,scopeRules:i,state:a,customRules:o,shortcuts:s,schemaErrors:d,schemaMode:f=!1,onValidate:p,overrides:m}){let h=J(),g=u(),v=u(),y,b;function x(){y=_(()=>n.externalErrors?.value,()=>{b?.(),n.externalErrors?.value&&Object.keys(n.externalErrors.value).some(e=>e.includes(`.`))?v.value=S(n.externalErrors.value):v.value=n.externalErrors?.value,C()},{immediate:!0,deep:!0})}function C(){b=_(()=>v.value,()=>{y?.(),n.externalErrors?.value&&(n.externalErrors.value=v.value),x()},{deep:!0})}return x(),Z(a,i)?g.value=ye({rootRules:i,rulesDef:i,state:a,customMessages:o?.(),storage:h,options:n,externalErrors:v,validationGroups:n.validationGroups,initialState:e,originalState:t,shortcuts:s,fieldName:void 0,path:``,cachePath:``,schemaErrors:d,rootSchemaErrors:d,schemaMode:f,onValidate:p,overrides:m}):ae(i)&&(g.value=ge({rulesDef:i,state:a,customMessages:o?.(),storage:h,options:n,externalErrors:v,initialState:e,originalState:t,shortcuts:s,fieldName:void 0,path:``,cachePath:``,schemaMode:f,schemaErrors:d,onValidate:p,overrides:m})),r()&&c(()=>{g.value?.$unwatch(),b?.(),y?.()}),l({regle:g})}function Ce({state:t,rulesFactory:n,options:r,globalOptions:a,customRules:o,shortcuts:s,overrides:c}){let l=i(n)?n:typeof n==`function`?void 0:e(()=>n),f={...a,...r},p,h=d(l??{});typeof n==`function`&&(p=v(()=>{h.value=n(t),m(h)}));let g=u(b(t.value)?{...k(t.value)}:k(t.value)),_=b(t.value)?{...k(t.value)}:k(t.value);return G(()=>{p?.()}),Se({scopeRules:h,state:t,options:f,initialState:g,originalState:_,customRules:o,shortcuts:s,overrides:c})}function we(e){let{rules:t,modifiers:n,shortcuts:r,overrides:a}=e??{},o={autoDirty:n?.autoDirty,lazy:n?.lazy,rewardEarly:n?.rewardEarly,silent:n?.silent,clearExternalErrorsOnChange:n?.clearExternalErrorsOnChange,immediateDirty:n?.immediateDirty};function s(e,n,s){return{r$:Ce({state:i(e)?e:u(e),rulesFactory:n,options:s,globalOptions:o,customRules:t,shortcuts:r,overrides:a}).regle}}return s}const Te=we();function Ee(){function e(e,t){return t}return e}const De=Ee();function Oe(e){let t={};if(Object.entries(e).some(([e,t])=>Q(t)||typeof t==`function`))return null;for(let n in e){let r=e[n];r&&b(r)&&`$each`in r&&r.$each&&b(r.$each)?t[n]=[Oe(r.$each)]:b(r)&&!E(r)&&!Object.entries(r).some(([e,t])=>Q(t)||typeof t==`function`)?t[n]=Oe(r):t[n]=null}return t}function ke(t){let{rules:n,modifiers:r,shortcuts:a,overrides:o}=t??{},s={autoDirty:r?.autoDirty,lazy:r?.lazy,rewardEarly:r?.rewardEarly,silent:r?.silent,clearExternalErrorsOnChange:r?.clearExternalErrorsOnChange,immediateDirty:r?.immediateDirty};function c(t,r){let c=i(t)?t:typeof t==`function`?void 0:e(()=>t);return Ce({state:u(Oe(c?.value)),rulesFactory:c,options:r,globalOptions:s,customRules:n,shortcuts:a,overrides:o}).regle}return c}const Ae=ke();function je(e){if(T(e)){let t=e,n=class extends t{constructor(...e){return super(...e),Me(this)}};return Object.defineProperty(n,`name`,{value:t.name}),Me(n)}return Me(e)}function Me(e){return!C(e,X.REGLE_STATIC)&&Object.isExtensible(e)&&w(e,X.REGLE_STATIC,!0),e}function Ne({rules:e,modifiers:t,shortcuts:n,overrides:r}){let i=we({rules:e,modifiers:t,shortcuts:n,overrides:r}),a=ke({rules:e,modifiers:t,shortcuts:n,overrides:r});return i.__config={rules:e,modifiers:t,shortcuts:n,overrides:r},a.__config={rules:e,modifiers:t,shortcuts:n,overrides:r},{useRegle:i,inferRules:Ee(),useRules:a}}function Pe(e,{rules:t,modifiers:n,shortcuts:r,overrides:i}){let a=e.__config??{},o=()=>({...a.rules?.(),...t?.()}),s=a.modifiers&&n?x(a.modifiers,n):a.modifiers??n,c=a.shortcuts&&r?x(a.shortcuts,r):a.shortcuts??r,l=a.overrides&&i?x(a.overrides,i):a.overrides??i,u=we({rules:o,modifiers:s,shortcuts:c,overrides:l});return u.__config={rules:o,modifiers:s,shortcuts:c,overrides:l},{useRegle:u,inferRules:Ee()}}function Fe(t,n){let r=n??!1,i=e({get:()=>r?Object.values(t).map(e=>e.$value):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$value])),set:e=>{r||typeof e==`object`&&Object.entries(e).forEach(([e,n])=>t[e].$value=n)}}),a=e({get:()=>Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$silentValue])),set:e=>{typeof e==`object`&&Object.entries(e).forEach(([e,n])=>t[e].$silentValue=n)}}),o=e(()=>{let e=Object.entries(t);return!!e.length&&e.every(([e,t])=>t?.$dirty)}),s=e(()=>Object.entries(t).some(([e,t])=>t?.$anyDirty)),c=e(()=>Object.entries(t).some(([e,t])=>t?.$invalid)),u=e(()=>{let e=Object.entries(t);return!!e.length&&e.every(([e,t])=>t?.$correct||t.$anyDirty&&!t.$invalid)}),d=e(()=>Object.entries(t).some(([e,t])=>t?.$error)),f=e(()=>{let e=Object.entries(t);return!!e.length&&e.every(([e,t])=>t?.$ready)}),p=e(()=>Object.entries(t).some(([e,t])=>t?.$pending)),m=e(()=>r?Object.entries(t).map(([e,t])=>t.$issues):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$issues]))),h=e(()=>r?Object.entries(t).map(([e,t])=>t.$silentIssues):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$silentIssues]))),g=e(()=>r?Object.entries(t).map(([e,t])=>t.$errors):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$errors]))),_=e(()=>r?Object.entries(t).map(([e,t])=>t.$silentErrors):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$silentErrors]))),y=e(()=>{let e=Object.entries(t);return!!e.length&&e.every(([e,t])=>t?.$edited)}),b=e(()=>Object.entries(t).some(([e,t])=>t?.$anyEdited)),x=e(()=>r?Object.values(t):t);function S(e){Object.values(t).forEach(t=>{t.$reset(e)})}function C(){Object.values(t).forEach(e=>{e.$touch()})}function w(e=!0){return Object.values(t).map(t=>t.$extractDirtyFields(e))}function T(){Object.values(t).forEach(e=>{e.$clearExternalErrors()})}async function E(e){try{e&&(i.value=e);let n=i.value;return{valid:(await Promise.allSettled(Object.values(t).map(e=>e.$validate()))).every(e=>e.status===`fulfilled`?e.value.valid===!0:!1),data:n,errors:g.value,issues:m.value}}catch{return{valid:!1,data:i.value,errors:g.value,issues:m.value}}}let D=l({...!r&&{$silentValue:a},$errors:g,$issues:m,$silentIssues:h,$silentErrors:_,$instances:x,$value:i,$dirty:o,$anyDirty:s,$invalid:c,$correct:u,$error:d,$pending:p,$ready:f,$edited:y,$anyEdited:b,$reset:S,$touch:C,$validate:E,$extractDirtyFields:w,$clearExternalErrors:T});return v(()=>{if(!r){for(let e of Object.keys(D).filter(e=>!e.startsWith(`$`)&&!e.startsWith(`~`)))delete D[e];for(let[e,t]of Object.entries(x.value))Object.assign(D,{[e]:t})}}),D}function Ie(t,n){function r(r){let i=e(()=>p(r)),a=l({});c();let o=u(d(t.value)),s=l({r$:o});function c(){i.value&&(typeof i.value==`string`&&!t.value[i.value]?t.value[i.value]={}:Array.isArray(i.value)&&i.value.forEach(e=>{t.value[e]||(t.value[e]={})}))}_(i,c),_(t,e=>{o.value=d(e)},{deep:!0});function d(e){return i.value?typeof i.value==`string`?Fe(e[i.value]??{},!n.asRecord):(Object.keys(a).forEach(e=>{delete a[e]}),i.value.forEach(t=>{Object.entries(e[t]).forEach(([e,t])=>{Object.assign(a,{[e]:t})})}),Fe(a,!n.asRecord)):Fe(e[`~~global`]??{},!n.asRecord)}return{r$:s.r$}}return{useCollectScope:r}}function Le(t,r){let i=r??Te;return{useScopedRegle:((r,a,o)=>{let{namespace:c,scopeKey:l,id:d,...f}=o??{};i.__config??={};let m=e(()=>d??l),h=e(()=>p(c)),g=u(`${Object.keys(t.value).length+1}-${ne()}`),v=e(()=>m.value??`instance-${g.value}`),{r$:y}=i(r,a,{...f,id:m.value});x(),G(b),_(h,(e,t)=>{b(t),x()}),n()&&s(()=>{let e=n();typeof window<`u`&&e?.proxy?.$el?.parentElement&&document.documentElement&&!document.documentElement.contains(e?.proxy?.$el?.parentElement)&&b()});function b(e){let n=e??h.value;n?t.value[n]&&delete t.value[n][v.value]:t.value[`~~global`][v.value]&&delete t.value[`~~global`][v.value]}function x(){h.value?(t.value[h.value]||(t.value[h.value]={}),t.value[h.value][v.value]=y):(t.value[`~~global`]||(t.value[`~~global`]={}),t.value[`~~global`][v.value]=y)}return{r$:y,dispose:b,register:x}})}}function Re(e){let t=(e?.customStore?()=>(e.customStore&&(e.customStore?.value[`~~global`]?e.customStore?.value&&(e.customStore.value={"~~global":{}}):e.customStore.value[`~~global`]={}),e.customStore):K(()=>u({"~~global":{}})))(),{useScopedRegle:n}=Le(t,e?.customUseRegle),{useCollectScope:r}=Ie(t,{asRecord:e?.asRecord});return{useScopedRegle:n,useCollectScope:r}}const{useCollectScope:ze,useScopedRegle:Be}=Re(),Ve=ze,He=Be;function Ue(t,n,r){let i=e(()=>p(t)[n]);return e(()=>r.find(e=>{if(e[n]&&`literal`in e[n]){let t=e[n].literal;if(Q(t))return h(t._params?.[0])===i.value}})||r.find(e=>b(e[n])&&!Object.keys(e[n]).some(e=>e===`literal`))||{})}function We(e,t,n){return!!e&&b(e[t])&&`$value`in e[t]&&e[t]?.$value===n}function Ge(e,t,n,r){let a=i(e)?f(e.value,`$fields`):f(e,`$fields`),s=u();return _(a,async()=>{await o(),We(a.value,t,n)?s.value=f(e).value:s.value=void 0},{immediate:!0,flush:`pre`}),s}function Ke(e){return e}function qe(e,t){return n=>x({...e},t(n))}const Je={install(e){e.provide(Y,xe)}};export{F as InternalRuleType,Je as RegleVuePlugin,B as createRule,Re as createScopedUseRegle,Ue as createVariant,Ne as defineRegleConfig,Ke as defineRules,Pe as extendRegleConfig,fe as flatErrors,De as inferRules,je as markStatic,Fe as mergeRegles,We as narrowVariant,qe as refineRules,I as unwrapRuleParameters,Ve as useCollectScope,Te as useRegle,Se as useRootStorage,Ae as useRules,He as useScopedRegle,Ge as variantToRef};
|
|
7
|
+
import{computed as e,effectScope as t,getCurrentInstance as n,getCurrentScope as r,isRef as i,markRaw as a,nextTick as o,onMounted as s,onScopeDispose as c,reactive as l,ref as u,shallowRef as d,toRef as f,toValue as p,triggerRef as m,unref as h,version as g,watch as _,watchEffect as v}from"vue";function y(e){return e?.constructor?.name==`File`}function b(e){return e&&(e instanceof Date||e.constructor.name==`File`||e.constructor.name==`FileList`)?!1:typeof e==`object`&&!!e&&!Array.isArray(e)}function x(e,t,n){if(!e)return n;var r,i;if(Array.isArray(t)&&(r=t.slice(0)),typeof t==`string`&&(r=t.split(`.`)),typeof t==`symbol`&&(r=[t]),!Array.isArray(r))throw Error(`props arg must be an array, a string or a symbol`);for(;r.length;)if(i=r.shift(),!e||!i||(e=e[i],e===void 0))return n;return e}function S(e,...t){for(var n=[].slice.call(arguments),r,i=n.length;r=n[i-1],i--;)if(!r||typeof r!=`object`&&typeof r!=`function`)throw Error(`expected object, got `+r);for(var a=n[0],o=n.slice(1),s=o.length,i=0;i<s;i++){var c=o[i];for(var l in c)a[l]=c[l]}return a}function C(e){let t={};for(let n in e){if(!Object.prototype.hasOwnProperty.call(e,n))continue;let r=e[n],i=n.split(`.`),a=t;for(let e=0;e<i.length;e++){let t=i[e],n=e===i.length-1,o=t.match(/^\d+$/)?Number(t):null;if(o!==null){if(Array.isArray(a))if(n)a[o]=r;else{if(typeof a[o]!=`object`||a[o]===null){let t=i[e+1];a[o]=t&&t.match(/^\d+$/)?{$each:[],$self:[]}:{}}a=`$each`in a[o]?a[o].$each:a[o]}}else if(n)if(Array.isArray(a[t])){let e=a[t].slice();a[t]={},a[t].$self=e}else typeof a[t]==`object`&&a[t]!==null&&`$each`in a[t]?a[t].$self=r:a[t]=r;else{let n=i[e+1];if(Array.isArray(a[t])){let e=a[t].slice();a[t]={$each:[]},a[t].$self=e}(typeof a[t]!=`object`||a[t]===null||Array.isArray(a[t])&&!n.match(/^\d+$/))&&(n&&n.match(/^\d+$/)?a[t]={$each:[],$self:[]}:a[t]={}),a=`$each`in a[t]?a[t].$each:a[t]}}}return t}function w(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function T(e,t,n,r=!1){Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})}function E(e){return typeof e==`function`&&!!e.prototype&&`constructor`in e.prototype&&e.prototype.constructor===e}function D(e,t=!0,n=!0){return e==null?!0:e instanceof Date?isNaN(e.getTime()):y(e)?e.size<=0:Array.isArray(e)?t?e.length===0:!1:b(e)?e==null?!0:n?Object.keys(e).length===0:!1:!String(e).length}const O=Symbol(`regle-rule`);function k(e){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 A(e,t=0){if(t>20)return e;let n=e,r={}.toString.call(e).slice(8,-1);if(r==`Set`&&(n=new Set([...e].map(e=>A(e,t++)))),r==`Map`&&(n=new Map([...e].map(e=>[A(e[0]),A(e[1])]))),r==`Date`&&(n=new Date(e.getTime())),r==`RegExp`&&(n=RegExp(e.source,k(e))),r==`Array`||r==`Object`)for(let r in n=Array.isArray(e)?[]:{},e)n[r]=A(e[r],t++);return n}function j(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]`||typeof e==`string`||t===`[object String]`?new Date(e):new Date(NaN)}function M(e,t,{immediate:n=!1,trackDebounceRef:r}={}){let i,a=(...a)=>{r&&(r.value=!0);function o(){r&&(r.value=!1)}return new Promise((r,s)=>{function c(e){r(e),o()}if(clearTimeout(i),i=setTimeout(()=>{if(o(),i=void 0,!n)try{Promise.resolve(e.apply(this,[...a])).then(c).catch(e=>s(e)).finally(o)}catch(e){s(e)}},t),n){o();try{Promise.resolve(e.apply(this,[...a])).then(c).catch(e=>s(e)).finally(o)}catch(e){s(e)}}})};return a.cancel=()=>{clearTimeout(i),i=void 0,r&&(r.value=!1)},a}function N(e,t,n=!1,r=!0){if(e===t)return!0;if(e&&t&&typeof e==`object`&&typeof t==`object`){if(e.constructor!==t.constructor)return!1;var i,a,o;if(Array.isArray(e)&&Array.isArray(t)){if(i=e.length,i!=t.length)return!1;if(r||!r&&n){for(a=i;a--!==0;)if(!N(e[a],t[a],n,!1))return!1}return!0}if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===t.toString();if(o=Object.keys(e),i=o.length,i!==Object.keys(t).length)return!1;for(a=i;a--!==0;)if(!Object.prototype.hasOwnProperty.call(t,o[a]))return!1;for(a=i;a--!==0;){var s=o[a];if(b(e)&&b(t)&&s&&(r||!r&&n)&&!N(e[s],t[s],n,!1))return!1}return!0}return e!==e&&t!==t}var P=class extends Error{constructor(e=`Promise was aborted`){super(e),this.name=`AbortError`}};function F(e){let t=new AbortController,{signal:n}=t,r=new Promise((t,r)=>{function i(){r(new P)}n.addEventListener(`abort`,i),e.then(e=>{n.removeEventListener(`abort`,i),n.aborted?r(new P):t(e)}).catch(e=>{n.removeEventListener(`abort`,i),n.aborted?r(new P):r(e)})});function i(e){t.abort(e)}return{promise:r,abort:i,signal:n}}const I={Inline:`__inline`,Async:`__async`};function L(e){try{return e.map(e=>p(e))}catch{return[]}}function R(t){return t.map(t=>t instanceof Function?e(t):i(t)?t:f(()=>t))}function z(e){let t=e.toString().replace(/\/\/.*$/gm,``).replace(/\/\*[\s\S]*?\*\//g,``).match(/^(?:async\s*)?(?:function\b.*?\(|\((.*?)\)|(\w+))\s*=>|\((.*?)\)\s*=>|function.*?\((.*?)\)|\((.*?)\)/);return t?(t[0]||t[1]||t[2]||t[3]||t[4]||``).split(`,`).map(e=>e.trim()).filter(e=>e.length>0).length:0}function B(e,...t){let{validator:n,type:r,async:i}=e,o=i||r===I.Async||n.constructor.name===`AsyncFunction`;return a({validator(n,...r){return e.validator(n,...L(r.length?r:t))},message(n){return typeof e.message==`function`?e.message({...n,$params:L(n?.$params?.length?n.$params:t)}):e.message},active(n){return typeof e.active==`function`?e.active({...n,$params:L(n?.$params?.length?n.$params:t)}):e.active??!0},tooltip(n){return typeof e.tooltip==`function`?e.tooltip({...n,$params:L(n?.$params?.length?n.$params:t)}):e.tooltip??[]},exec(n){let r=e.validator(n,...L(t)),i;return r instanceof Promise?r.then(e=>(i=e,typeof i==`object`&&`$valid`in i?i.$valid:typeof i==`boolean`?i:!1)):(i=r,typeof i==`object`&&`$valid`in i?i.$valid:typeof i==`boolean`?i:!1)},type:r,_validator:e.validator,_message:e.message,_active:e.active,_tooltip:e.tooltip,_type:e.type,_message_patched:!1,_tooltip_patched:!1,_async:o,_params:R(t),_brand:O})}function V(e){if(typeof e.validator==`function`){let t=[],n=e.async??e.validator.constructor.name===`AsyncFunction`,r=B({...e,async:n},...t);if(z(e.validator)>1){let t=function(...t){return B(e,...t)};return t.validator=r.validator,t.message=r.message,t.active=r.active,t.tooltip=r.tooltip,t.type=r.type,t.exec=r.exec,t._validator=r.validator,t._message=r.message,t._active=r.active,t._tooltip=r.tooltip,t._type=e.type,t._message_pacthed=!1,t._tooltip_pacthed=!1,t._async=n,t}else return r}throw Error(`[createRule] validator must be a function`)}function H(e){return b(e.value)}function U(e,n,r){let i=t(),a;return a=e instanceof Function?i.run(()=>e(n,r??0)):e,{scope:i,unwrapped:a}}const W={LessThan:-1,EqualTo:0,GreaterThan:1};function G(e,t){let n=String(e).split(`.`),r=String(t).split(`.`);for(let e=0;e<Math.min(n.length,r.length);e++){let t=Number(n[e]),i=Number(r[e]);if(t>i)return W.GreaterThan;if(i>t)return W.LessThan;if(!isNaN(t)&&isNaN(i))return W.GreaterThan;if(isNaN(t)&&!isNaN(i))return W.LessThan}return W.EqualTo}const ee=G(g,`3.5.0`)!==-1;function K(){return Math.floor(Math.random()*Date.now()).toString()}function q(){return typeof window>`u`?K():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function J(e){return r()?(c(e),!0):!1}function te(e){let n=!1,r,i=t(!0);return((...t)=>(n||=(r=i.run(()=>e(...t)),!0),r))}function Y(e,t){return e.some(e=>t?e?.[t]:!1)}function X(e,t){return t?e.reduce((e,n)=>{let r=n?.[t]||[];return e.concat(r)},[]):[]}function Z(){let e=d(new Map),t=d(new Map),n=d(new Map),i=d(new Map),a=d(new Map),o=d(new Map);function s(e){let n=t.value.get(e);if(n)return n;{let n=u({});return t.value.set(e,n),n}}function l(e){let t=n.value.get(e);if(t)return t;{let t=u([]);return n.value.set(e,t),t}}function f(e,t,n){o.value.set(`${e}-${t}`,n)}function p(e,t){return o.value.get(`${e}-${t}`)}function m(e,t){e&&t!=null&&o.value.delete(`${e}-${t}`)}function h(e,t){i.value.set(e,t)}function g(e){return i.value.get(e)??!1}function _(t,n){e.value.set(t,n)}function v(t,n){let r=e.value.get(t);if(r)return y(n,r)?{valid:!0}:{valid:!1}}function y(e,t){let n=Object.keys(t),r=Object.keys(e);return r.length!==n.length||!r.every(e=>n.includes(e))?!1:r.every(n=>{let r=e[n],i=t[n];return!i||!r||typeof r==`function`||typeof i==`function`||typeof r==`number`||typeof r==`boolean`||typeof r==`string`?!1:r._params?r._params?.every((e,t)=>{if(typeof i==`number`||typeof i==`boolean`||typeof i==`string`)return!0;{let e=L(i._params),n=L(r._params);return e?.[t]===n?.[t]}}):!0})}function b(e){let t=a.value.get(e);if(t)return t;{let t=u(!1),n=u(!0),r=u({}),i=u(!1);return a.value.set(e,{$pending:t,$valid:n,$metadata:r,$validating:i}),{$pending:t,$valid:n,$metadata:r,$validating:i}}}return r()&&c(()=>{e.value.clear(),t.value.clear(),n.value.clear(),i.value.clear(),a.value.clear(),o.value.clear()}),{addRuleDeclEntry:_,setDirtyEntry:h,checkRuleDeclEntry:v,getDirtyState:g,trySetRuleStatusRef:b,getFieldsEntry:s,getCollectionsEntry:l,getArrayStatus:p,addArrayStatus:f,deleteArrayStatus:m,arrayStatusStorage:o}}const ne=Symbol(`regle`),Q={REGLE_STATIC:`__regle_static`};function re(e,t){return!se(e.value)&&(H(e)||b(t.value)&&!D(t.value)&&!Object.entries(t.value).some(([e,t])=>$(t)||typeof t==`function`))}function ie(e,t){return!!e.value&&b(e.value)&&`$each`in e.value||Array.isArray(t.value)}function ae(e){return!!e.value&&(b(e.value)||H(e.value))}function $(e){return(b(e)||typeof e==`function`)&&`_validator`in e}function oe(e){return typeof e.value==`function`?`_validator`in e.value:!0}function se(e){return b(e)&&w(e,Q.REGLE_STATIC)&&e[Q.REGLE_STATIC]===!0}function ce(e){return b(e)&&`$fields`in e}function le(e){return!!e&&`$rules`in e}function ue({field:e,silent:t=!1}){let n=Object.entries(e.$rules??{}).map(([n,r])=>{let i=``;if(t&&!r.$valid)i=r.$message;else if(!r.$valid&&e.$error&&!r.$validating)i=r.$message;else return null;return{$message:i,$property:e.fieldName,$rule:n,$type:r.$type,...typeof r.$metadata==`object`?r.$metadata:{}}}).filter(e=>!!e).reduce((e,t)=>(typeof t.$message==`string`?e.push(t):e.push(...t.$message.map(e=>({...t,$message:e}))),e),[]),r=e.$error&&e.$externalErrors?e.$externalErrors.map(t=>({$message:t,$property:e.fieldName,$rule:`external`,$type:void 0})):[],i=[];return e.$schemaErrors&&e.$error&&(i=!Array.isArray(e.$schemaErrors)&&`$self`in e.$schemaErrors?e.$schemaErrors.$self??[]:e.$schemaErrors??[]),[...n,...r,...i]}function de({field:e}){let t=[];for(let n of Object.values(e.$rules??{})){let e=n.$tooltip;e&&(typeof e==`string`?t.push(e):t.push(...e))}return t}function fe(e){return b(e)&&`$each`in e}function pe(e,t){let{includePath:n=!1}=t??{};if(Array.isArray(e)&&e.every(e=>!b(e)))return e;if(fe(e)){let t=n?e.$self?.map(e=>({message:e,path:[]}))??[]:e.$self??[],r=e.$each?.map(e=>me(e,n))??[];return t?.concat(r.flat())}else return Object.entries(e).map(([e,t])=>me(t,n,[e])).flat()}function me(e,t=!1,n){let r=t&&!n?[]:n;if(Array.isArray(e)&&e.every(e=>!b(e)))return t?e.map(e=>({message:e,path:r??[]})):e;if(fe(e)){let n=r?.length?e.$self?.map(e=>({message:e,path:r??[]}))??[]:e.$self??[],i=e.$each?.map((e,n)=>me(e,t,r?.concat(n)))??[];return n?.concat(i.flat())}else return Object.entries(e).map(([e,n])=>me(n,t,r?.concat(e))).flat()}function he({customMessages:n,rule:r,ruleKey:i,state:a,path:o,cachePath:s,storage:c,modifiers:d}){let f=t(),p={},m,h=e(()=>$(r.value)&&r.value._async),g=u(!1),{$pending:v,$valid:y,$metadata:b,$validating:x}=c.trySetRuleStatusRef(`${s}.${i}`);function S(){f=t(),p=f.run(()=>{let t=u(!1),s=u(!1),c=u(!0),l=u(!1),d=u(!1),f=e(()=>({$value:a.value,$error:s.value,$dirty:t.value,$pending:l.value,$correct:d.value,$invalid:c.value,$rule:{$valid:y.value,$invalid:!y.value,$pending:v.value},$params:S.value,...b.value})),p=e(()=>{try{return oe(r)?typeof r.value.active==`function`?r.value.active(f.value):!!r.value.active:!0}catch(e){return console.error(`Error in "active" function for "${o}.${i}" rule`,{cause:e}),!0}});function m(e){try{let t=``,a=n?n[i]?.[e]:void 0;if(a&&(t=typeof a==`function`?a(f.value):a),oe(r)){let n=`_${e}_patched`;a&&!r.value[n]||(t=typeof r.value[e]==`function`?r.value[e](f.value):r.value[e]??``)}return t}catch(t){return console.error(`Error in "${e}" function for "${o}.${i}" rule`,{cause:t}),``}}let h=e(()=>{let e=m(`message`);return D(e)&&(e=`This field is not valid`),e}),g=e(()=>m(`tooltip`)),_=e(()=>oe(r)&&r.value.type?r.value.type:i),x=e(()=>oe(r)?r.value.validator:r.value),S=e(()=>typeof r.value==`function`?[]:L(r.value._params??[]));return{$active:p,$message:h,$type:_,$validator:x,$params:S,$path:e(()=>`${o}.${i}`),$tooltip:g,$fieldCorrect:d,$fieldError:s,$fieldDirty:t,$fieldPending:l,$fieldInvalid:c}}),m=_(p?.$params,()=>{(!d.$silent.value||d.$rewardEarly.value&&p.$fieldError.value)&&T()},{deep:ee?1:!0})}S();function C(){y.value=!0,p.$fieldDirty.value&&(v.value=!0)}async function w(){let e=!1;try{let t=p.$validator.value;if(typeof t!=`function`)return console.error(`${o}: Incorrect rule format, it needs to be either a function or created with "createRule".`),!1;let n=t(a.value,...p.$params.value),r=a.value;C();let i;if(i=n instanceof Promise?await n:n,a.value!==r)return!0;if(typeof i==`boolean`)e=i;else{let{$valid:t,...n}=i;e=t,b.value=n}}catch{e=!1}finally{v.value=!1}return e}async function T(){try{x.value=!0;let e=!1;if(g.value=!0,$(r.value)&&r.value._async)e=await w();else{let t=p.$validator.value,n=t(a.value,...p.$params.value);if(!(n instanceof Promise)&&n!=null)if(typeof n==`boolean`)e=n;else{let{$valid:t,...r}=n;e=t,b.value=r}}return y.value=e,e}catch{return!1}finally{x.value=!1,g.value=!1}}function E(){y.value=!0,b.value={},v.value=!1,x.value=!1,S()}function O(){m(),f.stop(),f=t()}return l({...p,$pending:v,$valid:y,$metadata:b,$haveAsync:h,$maybePending:g,$validating:x,$parse:T,$unwatch:O,$watch:S,$reset:E})}function ge(e){return{"~standard":{version:1,vendor:`regle`,validate:async t=>{let{valid:n,data:r,errors:i}=await e(t);return n?{value:r,issues:[]}:{issues:pe(i,{includePath:!0})}}}}}function _e({state:n,rulesDef:r,customMessages:i,path:a,cachePath:o,fieldName:s,storage:c,options:d,externalErrors:p,schemaErrors:m,schemaMode:g,onUnwatch:y,$isArray:x,initialState:S,originalState:C,shortcuts:w,overrides:T,onValidate:E}){let O=t(),k,P=[],I,L,R,z,B=()=>{},V,H=()=>{},U=u(!1);function W(){let e=r.value,t=c.checkRuleDeclEntry(o,e),s={};for(let t in e)t.startsWith(`$`)&&(s[t]=e[t]);Z.value=s,J();let l=r.value,u=[];for(let e in l){if(e.startsWith(`$`)||e.startsWith(`~`))continue;let t=l[e];if(!t)continue;let r=f(()=>t);u.push([e,he({modifiers:{$silent:k.$silent,$rewardEarly:k.$rewardEarly},customMessages:i,rule:r,ruleKey:e,state:n,path:a,cachePath:o,storage:c,$debounce:Z.value.$debounce})])}X.value=Object.fromEntries(u),k.processShortcuts(),G(),K(),t?.valid!=null&&(k.$dirty.value=c.getDirtyState(o),(k.$dirty.value&&!k.$silent.value||k.$rewardEarly.value&&k.$error.value)&&B()),c.addRuleDeclEntry(o,e)}function G(){B=k.$debounce.value>0?M(Y,k.$debounce.value,{trackDebounceRef:U}):Y}function K(){H=k.$debounce.value>0?M(()=>{k.$dirty.value=!0},k.$debounce.value):()=>{k.$dirty.value=!0}}function q(){if(X.value)for(let e of Object.values(X.value))e.$unwatch();L(),z?.(),k.$dirty.value&&c.setDirtyEntry(o,k.$dirty.value),I?.(),O.stop(),O=t();for(let e of P)e.stop();P=[],y?.(),R?.()}function J(){if(X.value)for(let e of Object.values(X.value))e.$watch();k=O.run(()=>{let i=u(!1),a=u(!1),o=e(()=>i.value),c=e(()=>x||se(n.value)),f=e(()=>Z.value.$debounce==null?k.$haveAnyAsyncRule.value?200:0:Z.value.$debounce),_=e(()=>Z.value.$deepCompare==null?!1:Z.value.$deepCompare),y=e(()=>Z.value.$lazy==null?h(d.lazy)==null?!1:h(d.lazy):Z.value.$lazy),b=e(()=>Z.value.$immediateDirty==null?h(d.immediateDirty)==null?!1:h(d.immediateDirty):Z.value.$immediateDirty),C=e(()=>Z.value.$rewardEarly==null?h(d.rewardEarly)==null?!1:h(d.rewardEarly):Z.value.$rewardEarly),E=e(()=>Z.value.$clearExternalErrorsOnChange==null?h(d.clearExternalErrorsOnChange)==null?!O.value:h(d.clearExternalErrorsOnChange):Z.value.$clearExternalErrorsOnChange),O=e(()=>C.value?!0:Z.value.$silent==null?h(d.silent)==null?!1:h(d.silent):Z.value.$silent),A=e(()=>Z.value.$autoDirty==null?h(d.autoDirty)==null?!0:h(d.autoDirty):Z.value.$autoDirty),M=e(()=>{for(let e of Object.values(X.value))if(e.$validating)return!0;return!1}),F=e({get:()=>n.value,set(e){I(),n.value=e,te()}}),L=e(()=>U.value?J.value&&i.value:J.value&&!q.value&&i.value),R=e(()=>ue({field:{$rules:X.value,$error:L.value,$externalErrors:p?.value,$schemaErrors:m?.value,fieldName:Y.value}})),z=e(()=>ue({field:{$rules:X.value,$error:L.value,$externalErrors:p?.value,$schemaErrors:m?.value,fieldName:Y.value},silent:!0})),B=e(()=>R.value.map(e=>e.$message)),V=e(()=>z.value.map(e=>e.$message)),H=u(!1);function W(e,t){return t instanceof Date&&e instanceof Date?j(t).getDate()!==j(e).getDate():t==null?!!e:Array.isArray(e)&&Array.isArray(t)?!N(e,t,Z.value.$deepCompare):t!==e}v(()=>{i.value?Z.value.$isEdited?H.value=Z.value.$isEdited(n.value,S.value,W):T?.isEdited?H.value=T.isEdited(n.value,S.value,W):H.value=W(n.value,S.value):H.value=!1});let G=e(()=>H.value),ee=e(()=>de({field:{$rules:X.value}})),K=e(()=>!(J.value||q.value)),q=e(()=>a.value||!C.value?Object.entries(X.value).some(([e,t])=>t.$pending):!1),J=e(()=>p?.value?.length||m?.value?.length?!0:ne.value?!1:Object.values(X.value).some(e=>!e.$valid||e.$maybePending)),Y=e(()=>s??d.id??`root`),ne=e(()=>!g&&!Object.keys(r.value).some(e=>!e.startsWith(`$`))),Q=e(()=>{if(p?.value?.length||ne.value||U.value)return!1;if(i.value&&!D(n.value)&&!M.value&&!q.value){if(g)return!m?.value?.length;{let e=Object.values(X.value);for(let t of e)if(t.$active&&!t.$valid)return!1;return e.some(e=>e.$active)}}return!1}),re=e(()=>Object.values(X.value).some(e=>e.$haveAsync)),ie=e(()=>({$debounce:f.value,$lazy:y.value,$rewardEarly:C.value,$autoDirty:A.value,$silent:O.value,$clearExternalErrorsOnChange:E.value}));function ae(){w?.fields&&Object.entries(w.fields).forEach(([e,r])=>{let a=t();$[e]=a.run(()=>{let e=u();return v(()=>{e.value=r(l({$dirty:i,$externalErrors:p?.value??[],$value:n,$silentValue:F,$rules:X,$error:L,$pending:q,$invalid:J,$correct:Q,$errors:B,$ready:K,$silentErrors:V,$anyDirty:o,$tooltips:ee,$name:Y,$inactive:ne,$edited:H,$anyEdited:G}))}),e}),P.push(a)})}let $={};return{$error:L,$pending:q,$invalid:J,$correct:Q,$debounce:f,$deepCompare:_,$lazy:y,$immediateDirty:b,$ready:K,$issues:R,$silentIssues:z,$errors:B,$silentErrors:V,$rewardEarly:C,$autoDirty:A,$silent:O,$clearExternalErrorsOnChange:E,$anyDirty:o,$edited:H,$anyEdited:G,$name:Y,$haveAnyAsyncRule:re,$shortcuts:$,$validating:M,$tooltips:ee,$dirty:i,processShortcuts:ae,$silentValue:F,$inactive:ne,$modifiers:ie,$isArrayOrRegleStatic:c}}),te(),L=_(k.$dirty,e=>{c.setDirtyEntry(o,e),Object.values(X.value).forEach(t=>{t.$fieldDirty=e})}),z=_([k.$error,k.$correct,k.$invalid,k.$pending],()=>{Object.values(X.value).forEach(e=>{e.$fieldError=k.$error.value,e.$fieldInvalid=k.$invalid.value,e.$fieldPending=k.$pending.value,e.$fieldCorrect=k.$correct.value})}),R=_(k.$haveAnyAsyncRule,G)}function te(){I=_(n,()=>{k.$autoDirty.value&&!k.$silent.value&&(k.$dirty.value||H()),r.value instanceof Function&&W(),(!k.$silent.value||k.$rewardEarly.value&&k.$error.value)&&B(),k.$clearExternalErrorsOnChange.value&&ce()},{deep:k.$isArrayOrRegleStatic.value?!0:ee?1:!0})}async function Y(){try{let{promise:e}=re(Promise.allSettled(Object.values(X.value).map(e=>e.$parse())));await e}catch{}}let X=u({}),Z=u({});W();function ne(e,t){if(Q(),ce(),k.$dirty.value=!1,c.setDirtyEntry(o,!1),!t)if(e?.toOriginalState)n.value=A(C),S.value=A(C);else if(e?.toInitialState)n.value=A(S.value);else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,S.value=A(t),n.value=A(t)}else S.value=b(n.value)&&!se(n.value)?A(n.value):Array.isArray(n.value)?[...n.value]:n.value;if(e?.clearExternalErrors&&ce(),!t&&!e?.keepValidationState)for(let e of Object.values(X.value))e.$reset();if(!k.$lazy.value&&!k.$silent.value&&!t)for(let e of Object.values(X.value))e.$parse()}function Q(){`cancel`in B&&B.cancel()}function re(e){return V&&V.abort(),V=F(e),V}function ie(){Q(),V&&V.abort()}function ae(e=!0,t=!1){k.$dirty.value||H(),t&&e?(!k.$silent.value||k.$rewardEarly.value&&k.$error.value)&&(Q(),B()):e&&(Q(),B())}async function $(e){try{if(e&&(n.value=e),g)return E?(ae(!1),E()):{valid:!1,data:n.value,errors:k.$errors.value,issues:k.$issues.value};let t=n.value;if(!k.$dirty.value)k.$dirty.value=!0;else if(!k.$silent.value&&k.$dirty.value&&!k.$pending.value&&!U.value&&!k.$haveAnyAsyncRule.value)return{valid:!k.$error.value,data:t,errors:k.$errors.value,issues:k.$issues.value};if(g)return{valid:!m?.value?.length,data:t,errors:k.$errors.value,issues:k.$issues.value};if(D(X.value))return{valid:!0,data:t,errors:k.$errors.value,issues:k.$issues.value};ie();let{promise:r}=re(Promise.allSettled(Object.values(X.value).map(e=>e.$parse())));return{valid:(await r).every(e=>e.status===`fulfilled`&&e.value===!0),data:t,errors:k.$errors.value,issues:k.$issues.value}}catch{return{valid:!1,data:n.value,errors:k.$errors.value,issues:k.$issues.value}}}function oe(e=!0){return k.$dirty.value?n.value:e?{_null:!0}:null}function ce(){p?.value?.length&&(p.value=[])}!k.$lazy.value&&!k.$dirty.value&&!k.$silent.value&&Y(),k.$immediateDirty.value&&(k.$dirty.value=!0);let{$shortcuts:le,$validating:fe,$autoDirty:pe,$rewardEarly:me,$clearExternalErrorsOnChange:_e,$haveAnyAsyncRule:ve,$debounce:ye,$lazy:be,...xe}=k;return l({...xe,$externalErrors:p,$value:n,$initialValue:S,$originalValue:C,$rules:X,...le,$path:a,$isDebouncing:U,$reset:ne,$touch:ae,$validate:$,$unwatch:q,$watch:J,$extractDirtyFields:oe,$clearExternalErrors:ce,$abort:ie,$schemaMode:g,"~modifiers":k.$modifiers,...ge($)})}function ve({$id:t,path:n,cachePath:r,index:i,options:a,storage:o,stateValue:s,customMessages:c,rules:l,externalErrors:u,schemaErrors:d,initialState:p,originalState:m,shortcuts:h,fieldName:g,schemaMode:_,overrides:v}){let y=s.value?.$id??l.$key??q(),x=`${r}.${String(y)}`,S=`${n}.${i}`;typeof s.value==`object`&&s.value!=null&&(s.value.$id||Object.defineProperties(s.value,{$id:{value:y,enumerable:!1,configurable:!1,writable:!1}}));let C=f(u?.value??[],i),w=e(()=>d?.value?.[i]),T=xe({index:i,state:s,rulesDef:f(()=>l),customMessages:c,path:S,cachePath:x,storage:o,options:a,externalErrors:C,schemaErrors:w,initialState:p,originalState:m,shortcuts:h,fieldName:g,schemaMode:_,overrides:v});return T&&(T.$id=s.value?.$id??String(y),o.addArrayStatus(t,T.$id,T)),s.value&&(!b(s.value)||se(s.value))&&_&&T?.$touch(),T}function ye({state:n,rulesDef:r,customMessages:i,path:a,cachePath:o,storage:s,options:c,externalErrors:d,schemaErrors:p,schemaMode:m,initialState:g,originalState:y,shortcuts:b,fieldName:x,overrides:S}){let C=t(),w,T=t(),E,O=[];if(!Array.isArray(n.value)&&!r.value.$each)return;let k=u(),j=u(n.value),M=u({}),N,P,F=u({}),I=s.getCollectionsEntry(a);E=T.run(()=>({isPrimitiveArray:e(()=>n.value?.length?Array.isArray(n.value)&&n.value.length?n.value.every(e=>typeof e!=`object`):r.value.$each&&!(r.value.$each instanceof Function)?Object.values(r.value.$each).every(e=>$(e)||typeof e==`function`):!1:!1)})),L(),V();function L(){M.value=Object.fromEntries(Object.entries(r.value).filter(([e])=>e.startsWith(`$`))),typeof n.value==`object`&&(n.value!=null&&!n.value?.$id&&n.value!==null?(k.value=q(),Object.defineProperties(n.value,{$id:{value:k.value,enumerable:!1,configurable:!1,writable:!1}})):n.value?.$id&&(k.value=n.value.$id)),j.value=F.value.$value,Array.isArray(n.value)&&(!E.isPrimitiveArray.value||m)?I.value=n.value.map((t,n)=>{let{scope:l,unwrapped:u}=U(r.value.$each,f(()=>t),n);l&&O.push(l);let h=f(g.value??[],n),_=f(d?.value??{},`$each`),v=e(()=>p?.value?.$each);return ve({$id:k.value,path:a,cachePath:o,customMessages:i,rules:u??{},stateValue:f(()=>t),index:n,options:c,storage:s,externalErrors:_,schemaErrors:v,initialState:h,originalState:y,shortcuts:b,fieldName:x,schemaMode:m,overrides:S})||null}).filter(e=>!!e):I.value=[],F.value=_e({state:n,rulesDef:r,customMessages:i,path:a,cachePath:a,storage:s,options:c,externalErrors:f(d?.value??{},`$self`),schemaErrors:e(()=>p?.value?.$self),$isArray:!0,initialState:g,originalState:y,shortcuts:b,fieldName:x,schemaMode:m,overrides:S})}function R(){if(Array.isArray(n.value)&&(!E.isPrimitiveArray.value||m)){let t=A(I.value);I.value=n.value.map((t,n)=>{let o=f(()=>t);if(t.$id&&I.value.find(e=>e.$id===t.$id)){let e=s.getArrayStatus(k.value,t.$id);return e?(e.$value=o,e):null}else{let{scope:t,unwrapped:l}=U(r.value.$each,o,n);t&&O.push(t);let u=f(d?.value??{},`$each`),h=e(()=>p?.value?.$each??[]);return ve({$id:k.value,path:a,cachePath:a,customMessages:i,rules:l??{},stateValue:o,index:n,options:c,storage:s,externalErrors:u,schemaErrors:h,initialState:f(g.value??[],n),originalState:y,shortcuts:b,fieldName:x,schemaMode:m,overrides:S})||null}}).filter(e=>!!e),t.filter(e=>!n.value?.find(t=>e.$id===t.$id)).forEach((e,t)=>{s.deleteArrayStatus(k.value,t.toString())})}else I.value=[]}function z(){N=_(n,()=>{P?.(),n.value!=null&&!Object.hasOwn(n.value,`$id`)&&!k.value?L():R(),B()},{deep:ee?1:!0,flush:`pre`}),B()}function B(){P=_(n,()=>{w.$autoDirty.value&&!w.$silent.value&&F.value.$touch(!1,!0)},{flush:`post`})}function V(){z(),C=t(),w=C.run(()=>{let r=e({get:()=>n.value,set(e){N?.(),P?.(),n.value=e,z()}}),i=e(()=>F.value.$dirty&&(!I.value.length||I.value.every(e=>e.$dirty))),o=e(()=>F.value.$anyDirty||I.value.some(e=>e.$anyDirty)),s=e(()=>F.value.$invalid||I.value.some(e=>e.$invalid)),d=e(()=>(m?F.value.$correct:D(F.value.$rules)?!0:F.value.$correct)&&(!I.value.length||I.value.every(e=>e.$correct||e.$anyDirty&&!e.$invalid))),f=e(()=>F.value.$error||I.value.some(e=>e.$error)),p=e(()=>!(s.value||_.value)),_=e(()=>F.value.$pending||I.value.some(e=>e.$pending)),S=e(()=>!!I.value.length&&I.value.every(e=>e.$edited)),C=e(()=>F.value.$anyEdited||I.value.some(e=>e.$anyEdited)),w=e(()=>({$self:F.value.$issues,$each:I.value.map(e=>e.$issues)})),T=e(()=>({$self:F.value.$errors,$each:I.value.map(e=>e.$errors)})),E=e(()=>({$self:F.value.$silentErrors,$each:I.value.map(e=>e.$silentErrors)})),k=e(()=>M.value.$rewardEarly==null?h(c.rewardEarly)==null?!1:h(c.rewardEarly):M.value.$rewardEarly),A=e(()=>k.value?!0:M.value.$silent==null?h(c.silent)==null?!1:h(c.silent):M.value.$silent),j=e(()=>M.value.$autoDirty==null?h(c.autoDirty)==null?!0:h(c.autoDirty):M.value.$autoDirty),L=e(()=>x??c.id??`root`),R=e(()=>({$deepCompare:M.value.$deepCompare??!1,$lazy:M.value.$lazy??!1,$rewardEarly:k.value,$autoDirty:j.value,$silent:A.value,$clearExternalErrorsOnChange:M.value.$clearExternalErrorsOnChange??!1}));function B(){b?.collections&&Object.entries(b?.collections).forEach(([e,c])=>{let m=t();V[e]=m.run(()=>{let e=u();return v(()=>{e.value=c(l({$dirty:i,$error:f,$path:a,$silentValue:r,$pending:_,$invalid:s,$correct:d,$errors:T,$silentErrors:E,$initialValue:g,$originalValue:y,$ready:p,$anyDirty:o,$name:L,$each:I,$self:F,$value:n,$edited:S,$anyEdited:C,$issues:w}))}),e}),O.push(m)})}let V={};return B(),{$dirty:i,$anyDirty:o,$invalid:s,$correct:d,$error:f,$pending:_,$errors:T,$silentErrors:E,$ready:p,$name:L,$shortcuts:V,$silentValue:r,$edited:S,$anyEdited:C,$rewardEarly:k,$silent:A,$autoDirty:j,$issues:w,$modifiers:R}}),E.isPrimitiveArray.value&&r.value.$each&&console.warn(`${a} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`)}function H(){N?.(),F.value&&F.value.$unwatch(),I.value&&I.value.forEach(e=>{`$dirty`in e&&e.$unwatch()}),C.stop(),C=t(),T.stop(),T=t(!0),O.forEach(e=>e.stop()),O=[]}function W(e=!0,t=!1){F.value.$touch(e,t),I.value.forEach(n=>{n.$touch(e,t)})}function G(e,t){if(H(),!t)if(e?.toOriginalState)n.value=A(y),g.value=A(y);else if(e?.toInitialState)n.value=A(g.value);else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,g.value=A(t),n.value=A(t)}else g.value=A(n.value);e?.clearExternalErrors&&te(),e?.keepValidationState||(F.value.$reset(e,t),I.value.forEach(t=>{t.$reset(e,!0)})),t||L()}function K(){F.value.$abort(),I.value.forEach(e=>{e.$abort()})}async function J(e){e&&(n.value=e);let t=n.value;try{return K(),{valid:(await Promise.allSettled([F.value.$validate(e),...I.value.map(e=>e.$validate())])).every(e=>e.status===`fulfilled`?e.value.valid===!0:!1),data:t,errors:w.$errors.value,issues:w.$issues.value}}catch{return{valid:!1,data:t,errors:w.$errors.value,issues:w.$issues.value}}}function te(){F.value.$clearExternalErrors(),I.value.forEach(e=>{e.$clearExternalErrors()})}function Y(e=!0){let t=I.value.map(t=>{if(ce(t))return t.$extractDirtyFields(e)});return e&&t.every(e=>D(e))&&(t=[]),t}let{$shortcuts:X,...Z}=w;return l({$self:F,...Z,...X,$path:a,$each:I,$value:n,$initialValue:g,$originalValue:y,$validate:J,$unwatch:H,$watch:V,$touch:W,$reset:G,$abort:K,$extractDirtyFields:Y,$clearExternalErrors:te,"~modifiers":w.$modifiers,...ge(J)})}function be({rulesDef:n,state:r,path:i=``,cachePath:a,rootRules:o,externalErrors:s,schemaErrors:c,rootSchemaErrors:d,validationGroups:p,initialState:m,originalState:g,fieldName:y,...x}){let S=t(),C,w=[],T=null,E=null,O=null,k=null,j=u(void 0);async function M(t=!0){let o=Object.entries(n.value).filter(([e])=>e!==`$self`),l=Object.fromEntries(o.reduce((t,[n,o])=>{if(!o)return t;let l=f(r.value??{},n),u=f(()=>o),d=f(s?.value??{},n),p=e(()=>c?.value?.[n]),h=f(m?.value??{},n);return t.push([n,xe({state:l,rulesDef:u,path:i?`${i}.${n}`:n,cachePath:a?`${a}.${n}`:n,externalErrors:d,schemaErrors:p,initialState:h,originalState:g?.[n],fieldName:n,...x})]),t},[])),u=Object.fromEntries(Object.entries(h(s)??{}).filter(([e,t])=>!(e in n.value)&&!!t).map(([t])=>{let n=f(r.value??{},t),o=f(s?.value??{},t),l=e(()=>c?.value?.[t]),u=f(m?.value??{},t),d=i?`${i}.${t}`:t,p=a?`${a}.${t}`:t;return[t,xe({state:n,rulesDef:e(()=>({})),path:d,cachePath:p,externalErrors:o,schemaErrors:l,initialState:u,originalState:g?.[t],fieldName:t,...x})]})),d=Object.fromEntries(Object.entries(h(c)??{}).map(([t])=>{let n=i?`${i}.${t}`:t,o=a?`${a}.${t}`:t,l=f(r.value??{},t),u=f(s?.value??{},t),d=e(()=>c?.value?.[t]),p=f(m?.value??{},t);return[t,xe({state:l,rulesDef:e(()=>({})),path:n,cachePath:o,externalErrors:u,schemaErrors:d,initialState:p,originalState:g?.[t],fieldName:t,...x})]})),p=Object.fromEntries(Object.entries(r.value??{}).filter(([e])=>!(e in n.value)&&!(e in(u??{}))&&!(e in(d??{}))).map(([t])=>{let n=f(r.value??{},t),o=f(s?.value??{},t),l=e(()=>c?.value?.[t]),u=f(m?.value??{},t);return[t,xe({state:n,rulesDef:e(()=>({})),path:i?`${i}.${t}`:t,cachePath:a?`${a}.${t}`:t,externalErrors:o,schemaErrors:l,initialState:u,originalState:g?.[t],fieldName:t,...x})]}));P.value={...l,...u,...d,...p},t&&L()}function N(){n.value.$self&&(j.value=_e({state:r,rulesDef:e(()=>n.value.$self??{}),path:i,cachePath:a,externalErrors:u(void 0),schemaErrors:u(void 0),initialState:f(m?.value??{},`$self`),originalState:g?.$self,fieldName:`$self`,...x}))}let P=x.storage.getFieldsEntry(a);M(),N();function F(){s&&(O=_(s,()=>{R(),M()},{deep:!0}))}function I(){k=_(r,()=>{R(),M(),C.$autoDirty.value&&!C.$silent.value&&V(!1,!0)},{flush:`post`})}function L(){o&&(T?.(),T=_(o,()=>{R(),M()},{deep:!0,flush:`pre`}),F()),d&&(E?.(),E=_(d,()=>{R(),M()},{deep:!0,flush:`post`})),I(),C=S.run(()=>{let a=e({get:()=>r.value,set(e){R(),r.value=e,M(),C.$autoDirty.value&&!C.$silent.value&&V(!1,!0)}}),o=e({get:()=>r.value,set(e){R(),r.value=e,M()}}),s=e(()=>{let e=P.value,t=Object.keys(e);if(!t.length)return!1;for(let n of t)if(!e[n]?.$dirty)return!1;return!0}),c=e(()=>{let e=P.value;for(let t in e)if(e[t]?.$anyDirty)return!0;return!1}),d=e(()=>{if(j.value?.$invalid)return!0;let e=P.value,t=Object.entries(e);if(!t.length)return!1;for(let[e,n]of t)if(n?.$invalid)return!0;return!1}),f=e(()=>{let e=Object.entries(P.value).reduce((e,[t,n])=>((!le(n)||!n.$inactive)&&e.push([t,n]),e),[]),t=n.value.$self&&!D(n.value.$self);if(e.length||t){let t=j.value?.$correct??!0,n=!1;return n=x.schemaMode?e.every(([e,t])=>t.$correct):e.every(([e,t])=>le(t)?`required`in t.$rules&&t.$rules.required.$active?t.$correct:!t.$invalid&&!t.$pending&&!t.$isDebouncing:t?.$correct),t&&n}return!1}),_=e(()=>{if(j.value?.$error)return!0;let e=P.value;if(!Object.keys(e).length)return!1;for(let t in e)if(e[t]?.$error)return!0;return!1}),b=e(()=>h(x.options.rewardEarly)==null?!1:h(x.options.rewardEarly)),S=e(()=>h(x.options.silent)==null?!!b.value:h(x.options.silent)),T=e(()=>h(x.options.autoDirty)==null?!0:h(x.options.autoDirty)),E=e(()=>!(d.value||k.value)),O=u(!1),k=e(()=>{if(j.value?.$pending||O.value)return!0;let e=P.value;for(let t in e)if(e[t]?.$pending)return!0;return!1}),A=e(()=>{let e={...j.value&&{$self:j.value?.$issues??[]}};for(let t in P.value)e[t]=P.value[t]?.$issues;return e}),N=e(()=>{let e={...j.value&&{$self:j.value?.$errors??[]}};for(let t in P.value)e[t]=P.value[t]?.$errors;return e}),F=e(()=>{let e={...j.value&&{$self:j.value?.$silentErrors??[]}};for(let t in P.value)e[t]=P.value[t]?.$silentErrors;return e}),I=e(()=>{if(j.value?.$edited)return!0;if(!Object.keys(P.value).length)return!1;for(let e in P.value)if(!P.value[e]?.$edited)return!1;return!0}),L=e(()=>{if(j.value?.$anyEdited)return!0;for(let e in P.value)if(P.value[e]?.$anyEdited)return!0;return!1}),z=e(()=>y??x.options.id??`root`),B=e(()=>({autoDirty:T.value,lazy:h(x.options.lazy)??!1,rewardEarly:b.value,silent:S.value,clearExternalErrorsOnChange:h(x.options.clearExternalErrorsOnChange)??!1,id:h(x.options.id)}));function H(){x.shortcuts?.nested&&Object.entries(x.shortcuts.nested).forEach(([e,n])=>{let a=t();W[e]=a.run(()=>{let e=u();return v(()=>{e.value=n(l({$dirty:s,$path:i,$value:r,$silentValue:o,$error:_,$originalValue:g,$pending:k,$invalid:d,$correct:f,$ready:E,$anyDirty:c,$name:z,$silentErrors:F,$initialValue:m,$errors:N,$fields:P,$edited:I,$anyEdited:L,$issues:A,$self:j,"~modifiers":h(x.options)}))}),e}),w.push(a)})}let U=e({get:()=>p?Object.fromEntries(Object.entries(p?.(P.value)??{}).map(([e,t])=>t.length?[e,{...Object.fromEntries([`$invalid`,`$error`,`$pending`,`$dirty`,`$correct`].map(e=>[e,Y(t,e)])),...Object.fromEntries([`$errors`,`$silentErrors`].map(e=>[e,X(t,e)]))}]:[])):{},set(){}}),W={};return H(),{$dirty:s,$anyDirty:c,$invalid:d,$correct:f,$error:_,$pending:k,$issues:A,$errors:N,$silentErrors:F,$ready:E,$name:z,$shortcuts:W,$groups:U,$silentValue:o,$edited:I,$anyEdited:L,$localPending:O,$autoDirty:T,$silent:S,$value:a,$modifiers:B}})}function R(){if(T?.(),O?.(),k?.(),E?.(),w=[],C={},P.value)for(let e of Object.values(P.value))e?.$unwatch()}function z(){let e=P.value;for(let t of Object.values(e))t.$clearExternalErrors();j.value?.$clearExternalErrors()}function B(e,t){if(O?.(),R(),!t)if(e?.toOriginalState)r.value=A({...g}),m.value=A({...g});else if(e?.toInitialState)r.value=A({...m.value});else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,m.value=A(t),r.value=A(t)}else m.value=A(r.value);if(!e?.keepValidationState){for(let t of Object.values(P.value))t?.$reset(e,!0);j.value?.$reset(e,!0)}e?.clearExternalErrors&&z(),F(),t||M()}function V(e=!0,t=!1){for(let n of Object.values(P.value))n?.$touch(e,t);j.value?.$touch(e,t)}function H(e){return e.filter(([e,t])=>b(t)&&!se(t)?!(t&&typeof t==`object`&&`_null`in t)&&!D(t):Array.isArray(t)?t.length:!0)}function U(e=!0){let t=Object.entries(P.value).map(([t,n])=>[t,n.$extractDirtyFields(e)]);return e&&(t=H(t)),Object.fromEntries(t)}function W(){for(let e of Object.values(P.value))e.$abort();j.value?.$abort()}async function G(e){try{if(e&&(r.value=e),x.schemaMode)return x.onValidate?(V(!1),C.$localPending.value=!0,x.onValidate()):{valid:!1,data:r.value,errors:C.$errors.value,issues:C.$issues.value};{let e=r.value;W();let t=[...Object.values(P.value).map(e=>e.$validate()),...j.value?[j.value?.$validate()]:[]];return{valid:(await Promise.allSettled(t)).every(e=>e.status===`fulfilled`&&e?.value?.valid===!0),data:e,errors:C.$errors.value,issues:C.$issues.value}}}catch{return{valid:!1,data:r.value,errors:C.$errors.value,issues:C.$issues.value}}finally{C.$localPending.value=!1}}let{$shortcuts:ee,$localPending:K,...q}=C,J=l({...q,...ee,$path:i,$initialValue:m,$originalValue:g,$self:j,$fields:P,$reset:B,$touch:V,$validate:G,$unwatch:R,$watch:L,$clearExternalErrors:z,$extractDirtyFields:U,$abort:W,...o?{"~modifiers":C.$modifiers}:{},...ge(G)});return v(()=>{for(let e of Object.keys(J).filter(e=>!e.startsWith(`$`)&&!e.startsWith(`~`)))delete J[e];for(let e of Object.values(P.value))e?.$name&&Object.assign(J,{[e.$name]:e})}),J}function xe({rulesDef:e,...n}){if(ie(e,n.state))return ye({rulesDef:e,...n});if(re(n.state,e)){if(H(n.state))return be({rulesDef:e,...n});{let r=t().run(()=>{let e=f(n.state.value?n.state:u({}));return _(()=>n.state.value,t=>{e.value=t},{deep:!0}),_(e,e=>{n.state.value=e},{deep:!0}),{fakeState:e}}),{state:i,...a}=n;return be({rulesDef:e,...a,state:r.fakeState})}}else if(ae(e))return _e({rulesDef:i(e.value)?e.value:e,...n})}var Se=`1.18.0-beta.4`;function Ce({initialState:e,originalState:t,options:n,scopeRules:i,state:a,customRules:o,shortcuts:s,schemaErrors:d,schemaMode:f=!1,onValidate:p,overrides:m}){let h=Z(),g=u(),v=u(),y,b;function x(){y=_(()=>n.externalErrors?.value,()=>{b?.(),n.externalErrors?.value&&Object.keys(n.externalErrors.value).some(e=>e.includes(`.`))?v.value=C(n.externalErrors.value):v.value=n.externalErrors?.value,S()},{immediate:!0,deep:!0})}function S(){b=_(()=>v.value,()=>{y?.(),n.externalErrors?.value&&(n.externalErrors.value=v.value),x()},{deep:!0})}return x(),re(a,i)?g.value=be({rootRules:i,rulesDef:i,state:a,customMessages:o?.(),storage:h,options:n,externalErrors:v,validationGroups:n.validationGroups,initialState:e,originalState:t,shortcuts:s,fieldName:void 0,path:``,cachePath:``,schemaErrors:d,rootSchemaErrors:d,schemaMode:f,onValidate:p,overrides:m}):ae(i)&&(g.value=_e({rulesDef:i,state:a,customMessages:o?.(),storage:h,options:n,externalErrors:v,initialState:e,originalState:t,shortcuts:s,fieldName:void 0,path:``,cachePath:``,schemaMode:f,schemaErrors:d,onValidate:p,overrides:m})),r()&&c(()=>{g.value?.$unwatch(),b?.(),y?.()}),l({regle:g})}function we({state:t,rulesFactory:n,options:r,globalOptions:a,customRules:o,shortcuts:s,overrides:c}){let l=i(n)?n:typeof n==`function`?void 0:e(()=>n),f={...a,...r},p,h=d(l??{});typeof n==`function`&&(p=v(()=>{h.value=n(t),m(h)}));let g=u(b(t.value)?{...A(t.value)}:A(t.value)),_=b(t.value)?{...A(t.value)}:A(t.value);return J(()=>{p?.()}),Ce({scopeRules:h,state:t,options:f,initialState:g,originalState:_,customRules:o,shortcuts:s,overrides:c})}function Te(e){let{rules:t,modifiers:n,shortcuts:r,overrides:a}=e??{},o={autoDirty:n?.autoDirty,lazy:n?.lazy,rewardEarly:n?.rewardEarly,silent:n?.silent,clearExternalErrorsOnChange:n?.clearExternalErrorsOnChange,immediateDirty:n?.immediateDirty};function s(e,n,s){return{r$:we({state:i(e)?e:u(e),rulesFactory:n,options:s,globalOptions:o,customRules:t,shortcuts:r,overrides:a}).regle}}return s}const Ee=Te();function De(){function e(e,t){return t}return e}const Oe=De();function ke(e,t){return x(h(e).$errors,String(t))}function Ae(e,t){return x(h(e).$issues,String(t))}function je(e){let t={};if(Object.entries(e).some(([e,t])=>$(t)||typeof t==`function`))return null;for(let n in e){let r=e[n];r&&b(r)&&`$each`in r&&r.$each&&b(r.$each)?t[n]=[je(r.$each)]:b(r)&&!D(r)&&!Object.entries(r).some(([e,t])=>$(t)||typeof t==`function`)?t[n]=je(r):t[n]=null}return t}function Me(t){let{rules:n,modifiers:r,shortcuts:a,overrides:o}=t??{},s={autoDirty:r?.autoDirty,lazy:r?.lazy,rewardEarly:r?.rewardEarly,silent:r?.silent,clearExternalErrorsOnChange:r?.clearExternalErrorsOnChange,immediateDirty:r?.immediateDirty};function c(t,r){let c=i(t)?t:typeof t==`function`?void 0:e(()=>t);return we({state:u(je(c?.value)),rulesFactory:c,options:r,globalOptions:s,customRules:n,shortcuts:a,overrides:o}).regle}return c}const Ne=Me();function Pe(e){if(E(e)){let t=e,n=class extends t{constructor(...e){return super(...e),Fe(this)}};return Object.defineProperty(n,`name`,{value:t.name}),Fe(n)}return Fe(e)}function Fe(e){return!w(e,Q.REGLE_STATIC)&&Object.isExtensible(e)&&T(e,Q.REGLE_STATIC,!0),e}function Ie({rules:e,modifiers:t,shortcuts:n,overrides:r}){let i=Te({rules:e,modifiers:t,shortcuts:n,overrides:r}),a=Me({rules:e,modifiers:t,shortcuts:n,overrides:r});return i.__config={rules:e,modifiers:t,shortcuts:n,overrides:r},a.__config={rules:e,modifiers:t,shortcuts:n,overrides:r},{useRegle:i,inferRules:De(),useRules:a}}function Le(e,{rules:t,modifiers:n,shortcuts:r,overrides:i}){let a=e.__config??{},o=()=>({...a.rules?.(),...t?.()}),s=a.modifiers&&n?S(a.modifiers,n):a.modifiers??n,c=a.shortcuts&&r?S(a.shortcuts,r):a.shortcuts??r,l=a.overrides&&i?S(a.overrides,i):a.overrides??i,u=Te({rules:o,modifiers:s,shortcuts:c,overrides:l});return u.__config={rules:o,modifiers:s,shortcuts:c,overrides:l},{useRegle:u,inferRules:De()}}function Re(t,n){let r=n??!1,i=e({get:()=>r?Object.values(t).map(e=>e.$value):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$value])),set:e=>{r||typeof e==`object`&&Object.entries(e).forEach(([e,n])=>t[e].$value=n)}}),a=e({get:()=>Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$silentValue])),set:e=>{typeof e==`object`&&Object.entries(e).forEach(([e,n])=>t[e].$silentValue=n)}}),o=e(()=>{let e=Object.entries(t);return!!e.length&&e.every(([e,t])=>t?.$dirty)}),s=e(()=>Object.entries(t).some(([e,t])=>t?.$anyDirty)),c=e(()=>Object.entries(t).some(([e,t])=>t?.$invalid)),u=e(()=>{let e=Object.entries(t);return!!e.length&&e.every(([e,t])=>t?.$correct||t.$anyDirty&&!t.$invalid)}),d=e(()=>Object.entries(t).some(([e,t])=>t?.$error)),f=e(()=>{let e=Object.entries(t);return!!e.length&&e.every(([e,t])=>t?.$ready)}),p=e(()=>Object.entries(t).some(([e,t])=>t?.$pending)),m=e(()=>r?Object.entries(t).map(([e,t])=>t.$issues):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$issues]))),h=e(()=>r?Object.entries(t).map(([e,t])=>t.$silentIssues):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$silentIssues]))),g=e(()=>r?Object.entries(t).map(([e,t])=>t.$errors):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$errors]))),_=e(()=>r?Object.entries(t).map(([e,t])=>t.$silentErrors):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$silentErrors]))),y=e(()=>{let e=Object.entries(t);return!!e.length&&e.every(([e,t])=>t?.$edited)}),b=e(()=>Object.entries(t).some(([e,t])=>t?.$anyEdited)),x=e(()=>r?Object.values(t):t);function S(e){Object.values(t).forEach(t=>{t.$reset(e)})}function C(){Object.values(t).forEach(e=>{e.$touch()})}function w(e=!0){return Object.values(t).map(t=>t.$extractDirtyFields(e))}function T(){Object.values(t).forEach(e=>{e.$clearExternalErrors()})}async function E(e){try{e&&(i.value=e);let n=i.value;return{valid:(await Promise.allSettled(Object.values(t).map(e=>e.$validate()))).every(e=>e.status===`fulfilled`?e.value.valid===!0:!1),data:n,errors:g.value,issues:m.value}}catch{return{valid:!1,data:i.value,errors:g.value,issues:m.value}}}let D=l({...!r&&{$silentValue:a},$errors:g,$issues:m,$silentIssues:h,$silentErrors:_,$instances:x,$value:i,$dirty:o,$anyDirty:s,$invalid:c,$correct:u,$error:d,$pending:p,$ready:f,$edited:y,$anyEdited:b,$reset:S,$touch:C,$validate:E,$extractDirtyFields:w,$clearExternalErrors:T});return v(()=>{if(!r){for(let e of Object.keys(D).filter(e=>!e.startsWith(`$`)&&!e.startsWith(`~`)))delete D[e];for(let[e,t]of Object.entries(x.value))Object.assign(D,{[e]:t})}}),D}function ze(t,n){function r(r){let i=e(()=>p(r)),a=l({});c();let o=u(d(t.value)),s=l({r$:o});function c(){i.value&&(typeof i.value==`string`&&!t.value[i.value]?t.value[i.value]={}:Array.isArray(i.value)&&i.value.forEach(e=>{t.value[e]||(t.value[e]={})}))}_(i,c),_(t,e=>{o.value=d(e)},{deep:!0});function d(e){return i.value?typeof i.value==`string`?Re(e[i.value]??{},!n.asRecord):(Object.keys(a).forEach(e=>{delete a[e]}),i.value.forEach(t=>{Object.entries(e[t]).forEach(([e,t])=>{Object.assign(a,{[e]:t})})}),Re(a,!n.asRecord)):Re(e[`~~global`]??{},!n.asRecord)}return{r$:s.r$}}return{useCollectScope:r}}function Be(t,r){let i=r??Ee;return{useScopedRegle:((r,a,o)=>{let{namespace:c,scopeKey:l,id:d,...f}=o??{};i.__config??={};let m=e(()=>d??l),h=e(()=>p(c)),g=u(`${Object.keys(t.value).length+1}-${q()}`),v=e(()=>m.value??`instance-${g.value}`),{r$:y}=i(r,a,{...f,id:m.value});x(),J(b),_(h,(e,t)=>{b(t),x()}),n()&&s(()=>{let e=n();typeof window<`u`&&e?.proxy?.$el?.parentElement&&document.documentElement&&!document.documentElement.contains(e?.proxy?.$el?.parentElement)&&b()});function b(e){let n=e??h.value;n?t.value[n]&&delete t.value[n][v.value]:t.value[`~~global`][v.value]&&delete t.value[`~~global`][v.value]}function x(){h.value?(t.value[h.value]||(t.value[h.value]={}),t.value[h.value][v.value]=y):(t.value[`~~global`]||(t.value[`~~global`]={}),t.value[`~~global`][v.value]=y)}return{r$:y,dispose:b,register:x}})}}function Ve(e){let t=(e?.customStore?()=>(e.customStore&&(e.customStore?.value[`~~global`]?e.customStore?.value&&(e.customStore.value={"~~global":{}}):e.customStore.value[`~~global`]={}),e.customStore):te(()=>u({"~~global":{}})))(),{useScopedRegle:n}=Be(t,e?.customUseRegle),{useCollectScope:r}=ze(t,{asRecord:e?.asRecord});return{useScopedRegle:n,useCollectScope:r}}const{useCollectScope:He,useScopedRegle:Ue}=Ve(),We=He,Ge=Ue;function Ke(t,n,r){let i=e(()=>p(t)[n]);return e(()=>r.find(e=>{if(e[n]&&`literal`in e[n]){let t=e[n].literal;if($(t))return h(t._params?.[0])===i.value}})||r.find(e=>b(e[n])&&!Object.keys(e[n]).some(e=>e===`literal`))||{})}function qe(e,t,n){return!!e&&b(e[t])&&`$value`in e[t]&&e[t]?.$value===n}function Je(e,t,n,r){let a=i(e)?f(e.value,`$fields`):f(e,`$fields`),s=u();return _(a,async()=>{await o(),qe(a.value,t,n)?s.value=f(e).value:s.value=void 0},{immediate:!0,flush:`pre`}),s}function Ye(e){return e}function Xe(e,t){return n=>S({...e},t(n))}const Ze={install(e){e.provide(ne,Se)}};export{I as InternalRuleType,Ze as RegleVuePlugin,V as createRule,Ve as createScopedUseRegle,Ke as createVariant,Ie as defineRegleConfig,Ye as defineRules,Le as extendRegleConfig,pe as flatErrors,ke as getErrors,Ae as getIssues,Oe as inferRules,Pe as markStatic,Re as mergeRegles,qe as narrowVariant,Xe as refineRules,L as unwrapRuleParameters,We as useCollectScope,Ee as useRegle,Ce as useRootStorage,Ne as useRules,Ge as useScopedRegle,Je as variantToRef};
|