@regle/core 1.13.0 → 1.13.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/regle-core.d.ts +303 -224
- package/dist/regle-core.js +19 -20
- package/dist/regle-core.min.js +1 -1
- package/package.json +1 -1
package/dist/regle-core.d.ts
CHANGED
|
@@ -1,7 +1,198 @@
|
|
|
1
1
|
import * as vue0 from "vue";
|
|
2
2
|
import { ComputedRef, MaybeRef, MaybeRefOrGetter, Plugin, Raw, Ref, UnwrapNestedRefs, UnwrapRef } from "vue";
|
|
3
|
-
import { EmptyObject, IsAny, IsEmptyObject, IsUnion, IsUnknown, Merge, Or,
|
|
3
|
+
import { EmptyObject, IsAny, IsEmptyObject, IsUnion, IsUnknown, Merge, Or, RequireAtLeastOne, RequireOneOrNone, RequiredDeep, UnionToIntersection, UnionToTuple } from "type-fest";
|
|
4
4
|
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
5
|
+
declare const RegleStaticSymbol: unique symbol;
|
|
6
|
+
type RegleStatic<T> = T extends (new (...args: infer Args) => infer U) ? RegleStaticImpl<new (...args: Args) => RegleStaticImpl<U>> : RegleStaticImpl<T>;
|
|
7
|
+
type RegleStaticImpl<T> = Raw<T & {
|
|
8
|
+
[RegleStaticSymbol]: true;
|
|
9
|
+
}>;
|
|
10
|
+
type IsRegleStatic<T> = T extends RegleStaticImpl<T> ? true : false;
|
|
11
|
+
type UnwrapStatic<T> = IsUnknown<T> extends true ? any : NonNullable<T> extends RegleStaticImpl<infer U> ? Raw<U> : UnwrapStaticSimple<T>;
|
|
12
|
+
type UnwrapStaticSimple<T> = NonNullable<T> extends Array<infer U> ? Array<UnwrapStatic<U>> : isRecordLiteral<NonNullable<T>> extends true ? { [K in keyof T]: UnwrapStatic<T[K]> } : T;
|
|
13
|
+
type Prettify<T> = T extends infer R ? { [K in keyof R]: R[K] } & {} : never;
|
|
14
|
+
type Maybe<T = any> = T | null | undefined;
|
|
15
|
+
type MaybeInput<T = any> = T | null | undefined;
|
|
16
|
+
type MaybeOutput<T = any> = T | undefined;
|
|
17
|
+
type MaybeReadonly<T> = T | Readonly<T>;
|
|
18
|
+
type NonUndefined<T> = Exclude<T, undefined>;
|
|
19
|
+
type PromiseReturn<T> = T extends Promise<infer U> ? U : T;
|
|
20
|
+
type MaybeGetter<T, V$1 = any, TAdd extends Record<string, any> = {}> = T | ((value: Ref<V$1>, index: number) => T & TAdd);
|
|
21
|
+
type Unwrap<T extends MaybeRef<Record<string, any>>> = T extends Ref ? UnwrapRef<T> : UnwrapNestedRefs<T>;
|
|
22
|
+
type UnwrapSimple<T extends MaybeRef<Record<string, any>>> = T extends Ref ? UnwrapRef<T> : T extends ((...args: any[]) => infer U) ? U : T;
|
|
23
|
+
type ExtractFromGetter<T extends MaybeGetter<any, any, any>> = T extends ((value: Ref<any>, index: number) => infer U extends Record<string, any>) ? U : T;
|
|
24
|
+
type ExtendOnlyRealRecord<T extends unknown> = NonNullable<T> extends File | Date | RegleStatic<{}> | RegleStaticImpl<{}> ? false : NonNullable<T> extends Record<string, any> ? true : false;
|
|
25
|
+
type OmitByType<T extends Record<string, any>, U$1> = { [K in keyof T as T[K] extends U$1 ? never : K]: T[K] };
|
|
26
|
+
type DeepMaybeRef<T extends Record<string, any>> = { [K in keyof T]: MaybeRef<T[K]> };
|
|
27
|
+
type ExcludeByType<T, U$1> = { [K in keyof T as T[K] extends U$1 ? never : K]: T[K] extends U$1 ? never : T[K] };
|
|
28
|
+
type PrimitiveTypes = string | number | boolean | bigint | Date | File;
|
|
29
|
+
type isRecordLiteral<T extends unknown> = NonNullable<T> extends Date | File | RegleStatic<unknown> | RegleStaticImpl<unknown> ? false : NonNullable<T> extends Record<string, any> ? true : false;
|
|
30
|
+
type NoInferLegacy<A$1 extends any> = [A$1][A$1 extends any ? 0 : never];
|
|
31
|
+
/**
|
|
32
|
+
* Extract the element type from an array.
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* ```ts
|
|
36
|
+
* type Element = ArrayElement<[1, 2, 3]>; // number
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
type ArrayElement<T> = T extends Array<infer U> ? U : never;
|
|
40
|
+
/**
|
|
41
|
+
* Declares a tuple that must have at least one element
|
|
42
|
+
*/
|
|
43
|
+
type NonEmptyTuple<T> = [T, ...T[]] | T[];
|
|
44
|
+
type useRegleFnOptions<TState$1 extends Record<string, any> | MaybeInput<PrimitiveTypes>, TRules$1 extends DeepExact<TRules$1, ReglePartialRuleTree<Unwrap<TState$1 extends Record<string, any> ? TState$1 : {}>, Partial<ExtendedRulesDeclarations>>>, TAdditionalOptions extends Record<string, any>, TValidationGroups extends Record<string, RegleValidationGroupEntry[]>> = TState$1 extends MaybeInput<PrimitiveTypes> ? Partial<DeepMaybeRef<RegleBehaviourOptions>> & TAdditionalOptions : 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> & TAdditionalOptions;
|
|
45
|
+
interface useRegleFn<TCustomRules extends Partial<ExtendedRulesDeclarations>, TShortcuts extends RegleShortcutDefinition<any> = never, TAdditionalReturnProperties extends Record<string, any> = {}, TAdditionalOptions extends Record<string, any> = {}> {
|
|
46
|
+
<TState$1 extends Record<string, any> | MaybeInput<PrimitiveTypes>, TRules$1 extends DeepExact<TRules$1, ReglePartialRuleTree<Unwrap<TState$1 extends Record<string, any> ? TState$1 : {}>, Partial<ExtendedRulesDeclarations> & Partial<TCustomRules>>>, TDecl extends RegleRuleDecl<NonNullable<TState$1>, Partial<ExtendedRulesDeclarations> & Partial<TCustomRules>>, TValidationGroups extends Record<string, RegleValidationGroupEntry[]>>(...params: [state: Maybe<MaybeRef<TState$1> | DeepReactiveState<TState$1>>, rulesFactory: TState$1 extends MaybeInput<PrimitiveTypes> ? MaybeRefOrGetter<TDecl> : TState$1 extends Record<string, any> ? MaybeRefOrComputedRef<TRules$1> | ((...args: any[]) => TRules$1) : {}, ...(HaveAnyRequiredProps<useRegleFnOptions<TState$1, TRules$1, TAdditionalOptions, TValidationGroups>> extends true ? [options: useRegleFnOptions<TState$1, TRules$1, TAdditionalOptions, TValidationGroups>] : [options?: useRegleFnOptions<TState$1, TRules$1, TAdditionalOptions, TValidationGroups>])]): NonNullable<TState$1> extends PrimitiveTypes ? RegleSingleField<NonNullable<TState$1>, TDecl, TShortcuts, TAdditionalReturnProperties> : Regle<TState$1 extends Record<string, any> ? Unwrap<TState$1> : {}, TRules$1 extends Record<string, any> ? TRules$1 : {}, TValidationGroups, TShortcuts, TAdditionalReturnProperties>;
|
|
47
|
+
__config?: {
|
|
48
|
+
rules?: () => CustomRulesDeclarationTree;
|
|
49
|
+
modifiers?: RegleBehaviourOptions;
|
|
50
|
+
shortcuts?: TShortcuts;
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* useRegle serves as the foundation for validation logic.
|
|
55
|
+
*
|
|
56
|
+
* It accepts the following inputs:
|
|
57
|
+
*
|
|
58
|
+
* @param state - This can be a plain object, a ref, a reactive object, or a structure containing nested refs.
|
|
59
|
+
* @param rules - These should align with the structure of your state.
|
|
60
|
+
* @param modifiers - Customize regle behaviour
|
|
61
|
+
*
|
|
62
|
+
* ```ts
|
|
63
|
+
* import { useRegle } from '@regle/core';
|
|
64
|
+
import { required } from '@regle/rules';
|
|
65
|
+
|
|
66
|
+
const { r$ } = useRegle({ email: '' }, {
|
|
67
|
+
email: { required }
|
|
68
|
+
})
|
|
69
|
+
* ```
|
|
70
|
+
* Docs: {@link https://reglejs.dev/core-concepts/}
|
|
71
|
+
*/
|
|
72
|
+
declare const useRegle: useRegleFn<Partial<ExtendedRulesDeclarations>, RegleShortcutDefinition<any>, {}, {}>;
|
|
73
|
+
interface inferRulesFn<TCustomRules extends Partial<ExtendedRulesDeclarations>> {
|
|
74
|
+
<TState$1 extends Record<string, any> | MaybeInput<PrimitiveTypes>, TRules$1 extends DeepExact<TRules$1, ReglePartialRuleTree<Unwrap<TState$1 extends Record<string, any> ? TState$1 : {}>, Partial<DefaultValidatorsTree> & TCustomRules>>, TDecl extends RegleRuleDecl<NonNullable<TState$1>, Partial<DefaultValidatorsTree> & TCustomRules>>(state: MaybeRef<TState$1> | DeepReactiveState<TState$1> | undefined, rulesFactory: TState$1 extends MaybeInput<PrimitiveTypes> ? TDecl : TState$1 extends Record<string, any> ? TRules$1 : {}): NonNullable<TState$1> extends PrimitiveTypes ? TDecl : TRules$1;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Rule type helper to provide autocomplete and typecheck to your form rules or part of your form rules
|
|
78
|
+
* It will just return the rules without any processing.
|
|
79
|
+
*
|
|
80
|
+
* @param state - The state reference
|
|
81
|
+
* @param rules - Your rule tree
|
|
82
|
+
*/
|
|
83
|
+
declare const inferRules: inferRulesFn<Partial<ExtendedRulesDeclarations>>;
|
|
84
|
+
declare function useRootStorage({
|
|
85
|
+
initialState,
|
|
86
|
+
originalState,
|
|
87
|
+
options,
|
|
88
|
+
scopeRules,
|
|
89
|
+
state,
|
|
90
|
+
customRules,
|
|
91
|
+
shortcuts,
|
|
92
|
+
schemaErrors,
|
|
93
|
+
schemaMode,
|
|
94
|
+
onValidate
|
|
95
|
+
}: {
|
|
96
|
+
scopeRules: Ref<$InternalReglePartialRuleTree>;
|
|
97
|
+
state: Ref<Record<string, any> | PrimitiveTypes>;
|
|
98
|
+
options: ResolvedRegleBehaviourOptions;
|
|
99
|
+
initialState: Ref<Record<string, any> | PrimitiveTypes>;
|
|
100
|
+
originalState: Record<string, any> | PrimitiveTypes;
|
|
101
|
+
customRules?: () => CustomRulesDeclarationTree;
|
|
102
|
+
shortcuts: RegleShortcutDefinition | undefined;
|
|
103
|
+
schemaErrors?: Ref<any | undefined>;
|
|
104
|
+
schemaMode?: boolean;
|
|
105
|
+
onValidate?: () => Promise<$InternalRegleResult>;
|
|
106
|
+
}): {
|
|
107
|
+
regle: $InternalRegleStatusType | undefined;
|
|
108
|
+
};
|
|
109
|
+
/**
|
|
110
|
+
* Converts a nested $errors object to a flat array of string errors
|
|
111
|
+
*
|
|
112
|
+
* Can also flatten to an array containing the path of each error with the options.includePath
|
|
113
|
+
*/
|
|
114
|
+
declare function flatErrors(errors: $InternalRegleErrors, options: {
|
|
115
|
+
includePath: true;
|
|
116
|
+
}): StandardSchemaV1.Issue[];
|
|
117
|
+
declare function flatErrors(errors: $InternalRegleErrors, options?: {
|
|
118
|
+
includePath?: false;
|
|
119
|
+
}): string[];
|
|
120
|
+
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>;
|
|
121
|
+
interface useRulesFn<TCustomRules extends Partial<ExtendedRulesDeclarations>, TShortcuts extends RegleShortcutDefinition<any> = never> {
|
|
122
|
+
<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>;
|
|
123
|
+
__config?: {
|
|
124
|
+
rules?: () => CustomRulesDeclarationTree;
|
|
125
|
+
modifiers?: RegleBehaviourOptions;
|
|
126
|
+
shortcuts?: TShortcuts;
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* useRules is a clone of useRegle, without the need to provide a state.
|
|
131
|
+
*
|
|
132
|
+
* It accepts the following inputs:
|
|
133
|
+
*
|
|
134
|
+
* @param rules - Your rules object
|
|
135
|
+
* @param modifiers - Customize regle behaviour
|
|
136
|
+
*
|
|
137
|
+
* ```ts
|
|
138
|
+
* import { useRules } from '@regle/core';
|
|
139
|
+
import { required } from '@regle/rules';
|
|
140
|
+
|
|
141
|
+
const { r$ } = useRules({
|
|
142
|
+
email: { required }
|
|
143
|
+
})
|
|
144
|
+
* ```
|
|
145
|
+
*/
|
|
146
|
+
declare const useRules: useRulesFn<Partial<ExtendedRulesDeclarations>, RegleShortcutDefinition<any>>;
|
|
147
|
+
/**
|
|
148
|
+
* Marks a value as static and treats the constructor as a regular raw Field.
|
|
149
|
+
* @param value - The value to mark as static.
|
|
150
|
+
* @returns The marked value.
|
|
151
|
+
* @example
|
|
152
|
+
* ```ts
|
|
153
|
+
* const StaticDecimal = markStatic(Decimal);
|
|
154
|
+
* const StaticBigWrapper = markStatic(BigWrapper);
|
|
155
|
+
* ```
|
|
156
|
+
*/
|
|
157
|
+
declare function markStatic<T extends object>(value: T): T extends RegleStaticImpl<unknown> ? T : RegleStatic<T>;
|
|
158
|
+
/**
|
|
159
|
+
* Infer type of the `r$` of any function returning a regle instance
|
|
160
|
+
*/
|
|
161
|
+
type InferRegleRoot<T extends (...args: any[]) => SuperCompatibleRegle> = T extends ((...args: any[]) => infer U) ? U extends SuperCompatibleRegle ? U['r$'] : never : never;
|
|
162
|
+
/**
|
|
163
|
+
* Infer custom rules declared in a global configuration
|
|
164
|
+
*/
|
|
165
|
+
type InferRegleRules<T extends useRegleFn<any, any>> = T extends useRegleFn<infer U, any> ? UnwrapRuleTree<Partial<DefaultValidators>> & UnwrapRuleTree<Partial<U>> : {};
|
|
166
|
+
/**
|
|
167
|
+
* Infer custom shortcuts declared in a global configuration
|
|
168
|
+
*/
|
|
169
|
+
type InferRegleShortcuts<T extends useRegleFn<any, any>> = T extends useRegleFn<any, infer U> ? U : {};
|
|
170
|
+
/**
|
|
171
|
+
* Extract a set rules and setting them as required
|
|
172
|
+
*/
|
|
173
|
+
type RegleEnforceRequiredRules<TRules$1 extends keyof DefaultValidators> = Omit<Partial<DefaultValidatorsTree>, TRules$1> & { [K in TRules$1]-?: UnwrapRuleWithParams<DefaultValidators[K]> };
|
|
174
|
+
/**
|
|
175
|
+
* Extract a set of custom rules from a global configuration and setting them as required
|
|
176
|
+
|
|
177
|
+
*/
|
|
178
|
+
type RegleEnforceCustomRequiredRules<T extends useRegleFn<any, any>, TRules$1 extends keyof InferRegleRules<T>> = Omit<Partial<DefaultValidatorsTree>, TRules$1> & { [K in TRules$1]-?: T extends useRegleFn<any, any> ? K extends keyof InferRegleRules<T> ? NonNullable<UnwrapRuleWithParams<InferRegleRules<T>[K]>> : never : K extends keyof T ? NonNullable<T[K]> : never };
|
|
179
|
+
/**
|
|
180
|
+
* Extract custom rules and custom shortcuts and apply them to a RegleFieldStatus type
|
|
181
|
+
*/
|
|
182
|
+
type RegleCustomFieldStatus<T extends useRegleFn<any, any>, TState$1 extends unknown = any, TRules$1 extends keyof InferRegleRules<T> = never> = RegleFieldStatus<TState$1, [TRules$1] extends [never] ? Partial<InferRegleRules<T>> : RegleEnforceCustomRequiredRules<T, TRules$1>, InferRegleShortcuts<T>>;
|
|
183
|
+
/**
|
|
184
|
+
/**
|
|
185
|
+
* DeepExact<T, S> is a TypeScript utility type that recursively checks whether the structure of type S
|
|
186
|
+
* exactly matches the structure of type T, including all nested properties.
|
|
187
|
+
*
|
|
188
|
+
* Used in `useRegle` and `inferRules` to enforce that the rules object matches the expected shape exactly.
|
|
189
|
+
*/
|
|
190
|
+
type DeepExact<TInfer, TTree> = NonNullable<TTree> extends MaybeRef<RegleRuleDecl> ? TTree : NonNullable<TTree> extends MaybeRef<RegleCollectionRuleDecl> ? TTree : [keyof TInfer] extends [keyof ExtractFromGetter<TTree>] ? ExactObject<TInfer, TTree> : { [K in keyof TInfer as K extends keyof TTree ? never : K]: TypeError<`Unknown property: <${Coerce<K>}>`> };
|
|
191
|
+
type ExactObject<TInfer, TTree> = { [K in keyof TTree]: NonNullable<TTree[K]> extends Record<string, any> ? ExtendOnlyRealRecord<TTree[K]> extends true ? NonNullable<TTree[K]> extends MaybeRef<RegleRuleDecl> ? TTree[K] : K extends keyof TInfer ? DeepExact<TInfer[K], NonNullable<TTree[K]>> : TTree[K] : TTree[K] : TTree[K] };
|
|
192
|
+
type TypeError<Msg> = {
|
|
193
|
+
[' TypeError']: Msg;
|
|
194
|
+
};
|
|
195
|
+
type Coerce<T> = `${T & string}`;
|
|
5
196
|
interface RegleBehaviourOptions {
|
|
6
197
|
/**
|
|
7
198
|
* Only display error when calling `r$.$validate()`
|
|
@@ -189,10 +380,10 @@ type ScopedInstancesRecordLike = Partial<ScopedInstancesRecord>;
|
|
|
189
380
|
type PartialFormState<TState$1 extends Record<string, any>> = [unknown] extends [TState$1] ? {} : Prettify<{ [K in keyof TState$1 as ExtendOnlyRealRecord<TState$1[K]> extends true ? never : TState$1[K] extends Array<any> ? never : K]?: MaybeOutput<TState$1[K]> } & { [K in keyof TState$1 as ExtendOnlyRealRecord<TState$1[K]> extends true ? K : TState$1[K] extends Array<any> ? K : never]: NonNullable<TState$1[K]> extends Array<infer U extends Record<string, any>> ? PartialFormState<U>[] : PartialFormState<TState$1[K]> }>;
|
|
190
381
|
type RegleResult<Data extends Record<string, any> | any[] | unknown, TRules$1 extends ReglePartialRuleTree<any> | RegleFormPropertyType<any>> = {
|
|
191
382
|
valid: false;
|
|
192
|
-
data: IsUnknown<Data> extends true ? unknown : IsAny<Data> extends true ? unknown : HasNamedKeys<Data> extends true ? NonNullable<Data> extends Date | File ? MaybeOutput<Data
|
|
383
|
+
data: IsUnknown<Data> extends true ? unknown : IsAny<Data> extends true ? unknown : HasNamedKeys<Data> extends true ? NonNullable<Data> extends Date | File ? MaybeOutput<Raw<Data>> : NonNullable<Data> extends Array<infer U extends Record<string, any>> ? PartialFormState<U>[] : NonNullable<Data> extends Record<string, any> ? PartialFormState<NonNullable<Data>> : MaybeOutput<Data> : unknown;
|
|
193
384
|
} | {
|
|
194
385
|
valid: true;
|
|
195
|
-
data: IsUnknown<Data> extends true ? unknown : IsAny<Data> extends true ? unknown : HasNamedKeys<Data> extends true ? Data extends Array<infer U extends Record<string, any>> ? DeepSafeFormState<U, TRules$1>[] : Data extends Date | File ? SafeFieldProperty<Data
|
|
386
|
+
data: IsUnknown<Data> extends true ? unknown : IsAny<Data> extends true ? unknown : HasNamedKeys<Data> extends true ? NonNullable<Data> extends Array<infer U extends Record<string, any>> ? DeepSafeFormState<U, TRules$1>[] : NonNullable<Data> extends Date | File ? SafeFieldProperty<Raw<NonNullable<Data>>, TRules$1> : NonNullable<Data> extends Record<string, any> ? DeepSafeFormState<NonNullable<Data>, TRules$1> : SafeFieldProperty<Data, TRules$1> : unknown;
|
|
196
387
|
};
|
|
197
388
|
type RegleNestedResult<Data extends Record<string, any> | unknown, TRules$1 extends ReglePartialRuleTree<any> | RegleFormPropertyType<any>> = RegleResult<Data, TRules$1> & ({
|
|
198
389
|
/**
|
|
@@ -237,14 +428,6 @@ type RegleFieldResult<Data extends any, TRules$1 extends ReglePartialRuleTree<an
|
|
|
237
428
|
issues: [];
|
|
238
429
|
errors: [];
|
|
239
430
|
});
|
|
240
|
-
/**
|
|
241
|
-
* Infer safe output from any `r$` instance
|
|
242
|
-
*
|
|
243
|
-
* ```ts
|
|
244
|
-
* type FormRequest = InferSafeOutput<typeof r$>;
|
|
245
|
-
* ```
|
|
246
|
-
*/
|
|
247
|
-
type InferSafeOutput<TRegle extends MaybeRef<SuperCompatibleRegleRoot | SuperCompatibleRegleFieldStatus>> = UnwrapRef<TRegle> extends Raw<RegleRoot<infer TState extends Record<string, any>, infer TRules, any, any>> ? DeepSafeFormState<JoinDiscriminatedUnions<TState>, TRules> : UnwrapRef<TRegle> extends RegleFieldStatus<infer TState, infer TRules> ? SafeFieldProperty<TState, TRules> : UnwrapRef<TRegle> extends RegleLike<infer TState extends Record<string, any>> ? TState : never;
|
|
248
431
|
type $InternalRegleResult = {
|
|
249
432
|
valid: boolean;
|
|
250
433
|
data: any;
|
|
@@ -252,7 +435,7 @@ type $InternalRegleResult = {
|
|
|
252
435
|
issues: $InternalRegleIssuesTree | $InternalRegleCollectionIssues | RegleFieldIssue[];
|
|
253
436
|
};
|
|
254
437
|
type DeepSafeFormState<TState$1 extends Record<string, any>, TRules$1 extends ReglePartialRuleTree<Record<string, any>, CustomRulesDeclarationTree> | RegleFormPropertyType<any, any> | undefined> = [unknown] extends [TState$1] ? {} : TRules$1 extends undefined ? TState$1 : TRules$1 extends ReglePartialRuleTree<TState$1, CustomRulesDeclarationTree> ? Prettify<{ [K in keyof TState$1 as IsPropertyOutputRequired<TState$1[K], TRules$1[K]> extends false ? K : never]?: SafeProperty<TState$1[K], TRules$1[K]> extends MaybeInput<infer M> ? MaybeOutput<M> : SafeProperty<TState$1[K], TRules$1[K]> } & { [K in keyof TState$1 as IsPropertyOutputRequired<TState$1[K], TRules$1[K]> extends false ? never : K]-?: unknown extends SafeProperty<TState$1[K], TRules$1[K]> ? unknown : NonNullable<SafeProperty<TState$1[K], TRules$1[K]>> }> : TState$1;
|
|
255
|
-
type FieldHaveRequiredRule<TRule extends RegleFormPropertyType<any, any> | undefined = never> = TRule extends
|
|
438
|
+
type FieldHaveRequiredRule<TRule extends RegleFormPropertyType<any, any> | undefined = never> = TRule extends MaybeRefOrComputedRef<RegleRuleDecl<any, any>> ? [unknown] extends UnwrapRef<TRule>['required'] ? NonNullable<UnwrapRef<TRule>['literal']> extends RegleRuleDefinition<any, any[], any, any, any, any> ? true : false : NonNullable<UnwrapRef<TRule>['required']> extends UnwrapRef<TRule>['required'] ? UnwrapRef<TRule>['required'] extends RegleRuleDefinition<any, infer Params, any, any, any, any> ? Params extends never[] ? true : false : false : false : false;
|
|
256
439
|
type ObjectHaveAtLeastOneRequiredField<TState$1 extends Record<string, any>, TRule extends ReglePartialRuleTree<TState$1, any>> = TState$1 extends Maybe<TState$1> ? { [K in keyof NonNullable<TState$1>]-?: IsPropertyOutputRequired<NonNullable<TState$1>[K], TRule[K]> }[keyof TState$1] extends false ? false : true : true;
|
|
257
440
|
type ArrayHaveAtLeastOneRequiredField<TState$1 extends Maybe<any[]>, TRule extends RegleCollectionRuleDecl<TState$1>> = TState$1 extends Maybe<TState$1> ? FieldHaveRequiredRule<Omit<TRule, '$each'> extends MaybeRef<RegleRuleDecl> ? Omit<UnwrapRef<TRule>, '$each'> : {}> | ObjectHaveAtLeastOneRequiredField<ArrayElement<NonNullable<TState$1>>, ExtractFromGetter<TRule['$each']> extends undefined ? {} : NonNullable<ExtractFromGetter<TRule['$each']>>> extends false ? false : true : true;
|
|
258
441
|
type SafeProperty<TState$1, TRule extends RegleFormPropertyType<any, any> | undefined> = unknown extends TState$1 ? unknown : TRule extends RegleCollectionRuleDecl<any, any> ? TState$1 extends Array<infer U extends Record<string, any>> ? DeepSafeFormState<U, ExtractFromGetter<TRule['$each']>>[] : TState$1 : TRule extends ReglePartialRuleTree<any, any> ? ExtendOnlyRealRecord<TState$1> extends true ? DeepSafeFormState<NonNullable<TState$1> extends Record<string, any> ? JoinDiscriminatedUnions<NonNullable<TState$1>> : {}, TRule> : TRule extends MaybeRef<RegleRuleDecl<any, any>> ? FieldHaveRequiredRule<UnwrapRef<TRule>> extends true ? TState$1 : MaybeOutput<TState$1> : TState$1 : TState$1;
|
|
@@ -284,28 +467,27 @@ type MaybeVariantStatus<TState$1 extends Record<string, any> | undefined = Recor
|
|
|
284
467
|
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> } : {} };
|
|
285
468
|
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> : [];
|
|
286
469
|
type PossibleLiteralTypes<T extends Record<string, any>, TKey$1 extends keyof T> = unknown extends T[TKey$1] ? {
|
|
287
|
-
[x: string]: { [K in TKey$1]-?: Omit<RegleRuleDecl<any, Partial<
|
|
470
|
+
[x: string]: { [K in TKey$1]-?: Omit<RegleRuleDecl<any, Partial<ExtendedRulesDeclarations>>, 'literal'> & {
|
|
288
471
|
literal?: RegleRuleDefinition<any, [literal: any], false, boolean, any, string | number>;
|
|
289
472
|
} };
|
|
290
|
-
} : { [TVal in NonNullable<T[TKey$1]>]: { [K in TKey$1]-?: Omit<RegleRuleDecl<TVal, Partial<
|
|
473
|
+
} : { [TVal in NonNullable<T[TKey$1]>]: { [K in TKey$1]-?: Omit<RegleRuleDecl<TVal, Partial<ExtendedRulesDeclarations>>, 'literal'> & {
|
|
291
474
|
literal?: RegleRuleDefinition<MaybeInput<TVal>, [literal: TVal], false, boolean, MaybeInput<TVal>, string | number>;
|
|
292
475
|
} } };
|
|
293
476
|
type RequiredForm<T extends Record<string, any>, TKey$1 extends keyof T> = Omit<ReglePartialRuleTree<T>, TKey$1> & PossibleLiteralTypes<T, TKey$1>[keyof PossibleLiteralTypes<T, TKey$1>];
|
|
294
477
|
type VariantTuple<T extends Record<string, any>, TKey$1 extends keyof T> = [RequiredForm<T, TKey$1>, ...RequiredForm<T, TKey$1>[]];
|
|
295
|
-
type RemoveCommonKey<T extends readonly any[], K$1 extends PropertyKey> = T extends [infer F, ...infer R] ? [Prettify<Omit<F, K$1>>, ...RemoveCommonKey<R, K$1>] : [];
|
|
296
478
|
/**
|
|
297
|
-
*
|
|
479
|
+
* Combine all members of a union type, merging types for each key, and keeping loose types
|
|
298
480
|
*/
|
|
299
|
-
|
|
300
|
-
type MergePropsIntoRequiredBooleans<TObject extends Record<string, any>> = { [K in keyof TObject]-?: TObject[K] extends NonNullable<TObject[K]> ? true : false }[keyof TObject];
|
|
481
|
+
type JoinDiscriminatedUnions<TUnion extends unknown> = HasNamedKeys<TUnion> extends true ? isRecordLiteral<TUnion> extends true ? Prettify<Partial<UnionToIntersection<RemoveCommonKey<UnionToTuple<NonNullable<TUnion>>, keyof NormalizeUnion<NonNullable<TUnion>>>[number]>> & Pick<NormalizeUnion<NonNullable<TUnion>>, keyof NormalizeUnion<NonNullable<TUnion>>>> : TUnion : TUnion;
|
|
301
482
|
/**
|
|
302
|
-
*
|
|
483
|
+
* Combine all members of a union type on one level and not nested.
|
|
303
484
|
*/
|
|
304
|
-
type
|
|
485
|
+
type LazyJoinDiscriminatedUnions<TUnion extends unknown> = isRecordLiteral<TUnion> extends true ? Prettify<Partial<UnionToIntersection<RemoveCommonKey<UnionToTuple<TUnion>, keyof NonNullable<TUnion>>[number]>> & Pick<NonNullable<TUnion>, keyof NonNullable<TUnion>>> : TUnion;
|
|
486
|
+
type RemoveCommonKey<T extends readonly any[], K$1 extends PropertyKey> = T extends [infer F, ...infer R] ? [Prettify<Omit<F, K$1>>, ...RemoveCommonKey<R, K$1>] : [];
|
|
305
487
|
/**
|
|
306
|
-
*
|
|
488
|
+
* Transforms a union and apply undefined values to non-present keys to support intersection
|
|
307
489
|
*/
|
|
308
|
-
type
|
|
490
|
+
type NormalizeUnion<TUnion> = RetrieveUnionUnknownValues<NonNullable<UnionToTuple<TUnion>>, RetrieveUnionUnknownKeysOf<NonNullable<UnionToTuple<TUnion>>>[number]>[number];
|
|
309
491
|
/**
|
|
310
492
|
* Combine all union values to be able to get even the normally "never" values, act as an intersection type
|
|
311
493
|
*/
|
|
@@ -315,204 +497,47 @@ type RetrieveUnionUnknownValues<T extends readonly any[], TKeys extends string>
|
|
|
315
497
|
*/
|
|
316
498
|
type RetrieveUnionUnknownKeysOf<T extends readonly any[]> = T extends [infer F, ...infer R] ? [keyof F, ...RetrieveUnionUnknownKeysOf<R>] : [];
|
|
317
499
|
/**
|
|
318
|
-
*
|
|
500
|
+
* Get item value from object, otherwise fallback to undefined. Avoid TS to not be able to infer keys not present on all unions
|
|
319
501
|
*/
|
|
320
|
-
type
|
|
502
|
+
type GetMaybeObjectValue<O extends Record<string, any>, K$1 extends string> = K$1 extends keyof O ? O[K$1] : undefined;
|
|
503
|
+
type RemoveIndexSignature<T> = { [K in keyof T as string extends K ? never : number extends K ? never : symbol extends K ? never : K]: T[K] };
|
|
321
504
|
/**
|
|
322
|
-
*
|
|
505
|
+
* Merge every boolean property into a single boolean.
|
|
323
506
|
*/
|
|
324
|
-
type
|
|
325
|
-
|
|
507
|
+
type MergePropsIntoRequiredBooleans<TObject extends Record<string, any>> = { [K in keyof TObject]-?: TObject[K] extends NonNullable<TObject[K]> ? true : false }[keyof TObject];
|
|
508
|
+
/**
|
|
509
|
+
* Ensure that if at least one prop is required, the "prop" object will be required too
|
|
510
|
+
*/
|
|
511
|
+
type HaveAnyRequiredProps<TObject extends Record<string, any>> = [TObject] extends [never] ? false : TObject extends Record<string, any> ? MergePropsIntoRequiredBooleans<TObject> extends false ? false : true : false;
|
|
512
|
+
type EnumType<T extends Record<string, unknown>> = T[keyof T];
|
|
326
513
|
type EnumLike = {
|
|
327
514
|
[k: string]: string | number;
|
|
328
515
|
[nu: number]: string;
|
|
329
516
|
};
|
|
330
|
-
type enumType<T extends Record<string, unknown>> = T[keyof T];
|
|
331
517
|
type MaybeRefOrComputedRef<T extends any> = MaybeRef<T> | ComputedRef<T>;
|
|
332
518
|
type UnwrapMaybeRef<T extends MaybeRef<any> | DeepReactiveState<any>> = T extends Ref<any> ? UnwrapRef<T> : UnwrapNestedRefs<T>;
|
|
333
|
-
type UnwrapStatic<T> = IsUnknown<T> extends true ? any : NonNullable<T> extends RegleStaticImpl<infer U> ? Raw<U> : UnwrapStaticSimple<T>;
|
|
334
|
-
type UnwrapStaticSimple<T> = NonNullable<T> extends Array<infer U> ? Array<UnwrapStatic<U>> : isRecordLiteral<NonNullable<T>> extends true ? { [K in keyof T]: UnwrapStatic<T[K]> } : T;
|
|
335
519
|
type TupleToPlainObj<T> = { [I in keyof T & `${number}`]: T[I] };
|
|
336
520
|
type HasNamedKeys<T> = IsUnion<T> extends true ? ProcessHasNamedKeys<LazyJoinDiscriminatedUnions<T>> : ProcessHasNamedKeys<T>;
|
|
337
521
|
type ProcessHasNamedKeys<T> = { [K in keyof NonNullable<T>]: K extends string ? (string extends K ? never : K) : never }[keyof NonNullable<T>] extends never ? false : true;
|
|
338
|
-
declare const RegleStaticSymbol: unique symbol;
|
|
339
|
-
type RegleStatic<T> = T extends (new (...args: infer Args) => infer U) ? RegleStaticImpl<new (...args: Args) => RegleStaticImpl<U>> : RegleStaticImpl<T>;
|
|
340
|
-
type RegleStaticImpl<T> = Raw<T & {
|
|
341
|
-
[RegleStaticSymbol]: true;
|
|
342
|
-
}>;
|
|
343
|
-
type IsRegleStatic<T> = T extends RegleStaticImpl<T> ? true : false;
|
|
344
|
-
type Prettify<T> = T extends infer R ? { [K in keyof R]: R[K] } & {} : never;
|
|
345
|
-
type Maybe<T = any> = T | null | undefined;
|
|
346
|
-
type MaybeInput<T = any> = T | null | undefined;
|
|
347
|
-
type MaybeOutput<T = any> = T | undefined;
|
|
348
|
-
type MaybeReadonly<T> = T | Readonly<T>;
|
|
349
|
-
type NonUndefined<T> = Exclude<T, undefined>;
|
|
350
|
-
type PromiseReturn<T> = T extends Promise<infer U> ? U : T;
|
|
351
|
-
type MaybeGetter<T, V$1 = any, TAdd extends Record<string, any> = {}> = T | ((value: Ref<V$1>, index: number) => T & TAdd);
|
|
352
|
-
type Unwrap<T extends MaybeRef<Record<string, any>>> = T extends Ref ? UnwrapRef<T> : UnwrapNestedRefs<T>;
|
|
353
|
-
type UnwrapSimple<T extends MaybeRef<Record<string, any>>> = T extends Ref ? UnwrapRef<T> : T extends ((...args: any[]) => infer U) ? U : T;
|
|
354
|
-
type ExtractFromGetter<T extends MaybeGetter<any, any, any>> = T extends ((value: Ref<any>, index: number) => infer U extends Record<string, any>) ? U : T;
|
|
355
|
-
type ExtendOnlyRealRecord<T extends unknown> = NonNullable<T> extends File | Date | RegleStatic<{}> | RegleStaticImpl<{}> ? false : NonNullable<T> extends Record<string, any> ? true : false;
|
|
356
|
-
type OmitByType<T extends Record<string, any>, U$1> = { [K in keyof T as T[K] extends U$1 ? never : K]: T[K] };
|
|
357
|
-
type DeepMaybeRef<T extends Record<string, any>> = { [K in keyof T]: MaybeRef<T[K]> };
|
|
358
|
-
type ExcludeByType<T, U$1> = { [K in keyof T as T[K] extends U$1 ? never : K]: T[K] extends U$1 ? never : T[K] };
|
|
359
|
-
type PrimitiveTypes = string | number | boolean | bigint | Date | File;
|
|
360
|
-
type isRecordLiteral<T extends unknown> = NonNullable<T> extends Date | File | RegleStatic<unknown> | RegleStaticImpl<unknown> ? false : NonNullable<T> extends Record<string, any> ? true : false;
|
|
361
|
-
type NoInferLegacy<A$1 extends any> = [A$1][A$1 extends any ? 0 : never];
|
|
362
|
-
type ArrayElement<T> = T extends Array<infer U> ? U : never;
|
|
363
|
-
type NonEmptyTuple<T> = [T, ...T[]] | T[];
|
|
364
|
-
type useRegleFnOptions<TState$1 extends Record<string, any> | MaybeInput<PrimitiveTypes>, TRules$1 extends DeepExact<TRules$1, ReglePartialRuleTree<Unwrap<TState$1 extends Record<string, any> ? TState$1 : {}>, Partial<AllRulesDeclarations>>>, TAdditionalOptions extends Record<string, any>, TValidationGroups extends Record<string, RegleValidationGroupEntry[]>> = TState$1 extends MaybeInput<PrimitiveTypes> ? Partial<DeepMaybeRef<RegleBehaviourOptions>> & TAdditionalOptions : 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> & TAdditionalOptions;
|
|
365
|
-
interface useRegleFn<TCustomRules extends Partial<AllRulesDeclarations>, TShortcuts extends RegleShortcutDefinition<any> = never, TAdditionalReturnProperties extends Record<string, any> = {}, TAdditionalOptions extends Record<string, any> = {}> {
|
|
366
|
-
<TState$1 extends Record<string, any> | MaybeInput<PrimitiveTypes>, TRules$1 extends DeepExact<TRules$1, ReglePartialRuleTree<Unwrap<TState$1 extends Record<string, any> ? TState$1 : {}>, Partial<AllRulesDeclarations> & Partial<TCustomRules>>>, TDecl extends RegleRuleDecl<NonNullable<TState$1>, Partial<AllRulesDeclarations> & Partial<TCustomRules>>, TValidationGroups extends Record<string, RegleValidationGroupEntry[]>>(...params: [state: Maybe<MaybeRef<TState$1> | DeepReactiveState<TState$1>>, rulesFactory: TState$1 extends MaybeInput<PrimitiveTypes> ? MaybeRefOrGetter<TDecl> : TState$1 extends Record<string, any> ? MaybeRefOrComputedRef<TRules$1> | ((...args: any[]) => TRules$1) : {}, ...(HaveAnyRequiredProps<useRegleFnOptions<TState$1, TRules$1, TAdditionalOptions, TValidationGroups>> extends true ? [options: useRegleFnOptions<TState$1, TRules$1, TAdditionalOptions, TValidationGroups>] : [options?: useRegleFnOptions<TState$1, TRules$1, TAdditionalOptions, TValidationGroups>])]): NonNullable<TState$1> extends PrimitiveTypes ? RegleSingleField<NonNullable<TState$1>, TDecl, TShortcuts, TAdditionalReturnProperties> : Regle<TState$1 extends Record<string, any> ? Unwrap<TState$1> : {}, TRules$1 extends Record<string, any> ? TRules$1 : {}, TValidationGroups, TShortcuts, TAdditionalReturnProperties>;
|
|
367
|
-
__config?: {
|
|
368
|
-
rules?: () => CustomRulesDeclarationTree;
|
|
369
|
-
modifiers?: RegleBehaviourOptions;
|
|
370
|
-
shortcuts?: TShortcuts;
|
|
371
|
-
};
|
|
372
|
-
}
|
|
373
|
-
/**
|
|
374
|
-
* useRegle serves as the foundation for validation logic.
|
|
375
|
-
*
|
|
376
|
-
* It accepts the following inputs:
|
|
377
|
-
*
|
|
378
|
-
* @param state - This can be a plain object, a ref, a reactive object, or a structure containing nested refs.
|
|
379
|
-
* @param rules - These should align with the structure of your state.
|
|
380
|
-
* @param modifiers - Customize regle behaviour
|
|
381
|
-
*
|
|
382
|
-
* ```ts
|
|
383
|
-
* import { useRegle } from '@regle/core';
|
|
384
|
-
import { required } from '@regle/rules';
|
|
385
|
-
|
|
386
|
-
const { r$ } = useRegle({ email: '' }, {
|
|
387
|
-
email: { required }
|
|
388
|
-
})
|
|
389
|
-
* ```
|
|
390
|
-
* Docs: {@link https://reglejs.dev/core-concepts/}
|
|
391
|
-
*/
|
|
392
|
-
declare const useRegle: useRegleFn<Partial<AllRulesDeclarations>, RegleShortcutDefinition<any>, {}, {}>;
|
|
393
|
-
interface inferRulesFn<TCustomRules extends Partial<AllRulesDeclarations>> {
|
|
394
|
-
<TState$1 extends Record<string, any> | MaybeInput<PrimitiveTypes>, TRules$1 extends DeepExact<TRules$1, ReglePartialRuleTree<Unwrap<TState$1 extends Record<string, any> ? TState$1 : {}>, Partial<AllRulesDeclarations> & TCustomRules>>, TDecl extends RegleRuleDecl<NonNullable<TState$1>, Partial<AllRulesDeclarations> & TCustomRules>>(state: MaybeRef<TState$1> | DeepReactiveState<TState$1> | undefined, rulesFactory: TState$1 extends MaybeInput<PrimitiveTypes> ? TDecl : TState$1 extends Record<string, any> ? TRules$1 : {}): NonNullable<TState$1> extends PrimitiveTypes ? TDecl : TRules$1;
|
|
395
|
-
}
|
|
396
|
-
/**
|
|
397
|
-
* Rule type helper to provide autocomplete and typecheck to your form rules or part of your form rules
|
|
398
|
-
* It will just return the rules without any processing.
|
|
399
|
-
*
|
|
400
|
-
* @param state - The state reference
|
|
401
|
-
* @param rules - Your rule tree
|
|
402
|
-
*/
|
|
403
|
-
declare const inferRules: inferRulesFn<Partial<AllRulesDeclarations>>;
|
|
404
|
-
declare function useRootStorage({
|
|
405
|
-
initialState,
|
|
406
|
-
originalState,
|
|
407
|
-
options,
|
|
408
|
-
scopeRules,
|
|
409
|
-
state,
|
|
410
|
-
customRules,
|
|
411
|
-
shortcuts,
|
|
412
|
-
schemaErrors,
|
|
413
|
-
schemaMode,
|
|
414
|
-
onValidate
|
|
415
|
-
}: {
|
|
416
|
-
scopeRules: Ref<$InternalReglePartialRuleTree>;
|
|
417
|
-
state: Ref<Record<string, any> | PrimitiveTypes>;
|
|
418
|
-
options: ResolvedRegleBehaviourOptions;
|
|
419
|
-
initialState: Ref<Record<string, any> | PrimitiveTypes>;
|
|
420
|
-
originalState: Record<string, any> | PrimitiveTypes;
|
|
421
|
-
customRules?: () => CustomRulesDeclarationTree;
|
|
422
|
-
shortcuts: RegleShortcutDefinition | undefined;
|
|
423
|
-
schemaErrors?: Ref<any | undefined>;
|
|
424
|
-
schemaMode?: boolean;
|
|
425
|
-
onValidate?: () => Promise<$InternalRegleResult>;
|
|
426
|
-
}): {
|
|
427
|
-
regle: $InternalRegleStatusType | undefined;
|
|
428
|
-
};
|
|
429
522
|
/**
|
|
430
|
-
*
|
|
431
|
-
*
|
|
432
|
-
* Can also flatten to an array containing the path of each error with the options.includePath
|
|
523
|
+
* Convert a nested object to a deeply nested partial object.
|
|
433
524
|
*/
|
|
434
|
-
|
|
435
|
-
includePath: true;
|
|
436
|
-
}): StandardSchemaV1.Issue[];
|
|
437
|
-
declare function flatErrors(errors: $InternalRegleErrors, options?: {
|
|
438
|
-
includePath?: false;
|
|
439
|
-
}): string[];
|
|
440
|
-
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>;
|
|
441
|
-
interface useRulesFn<TCustomRules extends Partial<AllRulesDeclarations>, TShortcuts extends RegleShortcutDefinition<any> = never> {
|
|
442
|
-
<TRules$1 extends RegleUnknownRulesTree | RegleRuleDecl, TDecl extends RegleRuleDecl<NonNullable<TState$1>, Partial<AllRulesDeclarations> & 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>;
|
|
443
|
-
__config?: {
|
|
444
|
-
rules?: () => CustomRulesDeclarationTree;
|
|
445
|
-
modifiers?: RegleBehaviourOptions;
|
|
446
|
-
shortcuts?: TShortcuts;
|
|
447
|
-
};
|
|
448
|
-
}
|
|
525
|
+
type DeepPartial<T> = T extends Array<infer U> ? Array<DeepPartial<U>> : T extends Date | File | RegleStaticImpl<unknown> ? T : T extends Record<string, any> ? { [K in keyof T]?: DeepPartial<T[K]> | undefined } : T | undefined;
|
|
449
526
|
/**
|
|
450
|
-
*
|
|
451
|
-
*
|
|
452
|
-
* It accepts the following inputs:
|
|
453
|
-
*
|
|
454
|
-
* @param rules - Your rules object
|
|
455
|
-
* @param modifiers - Customize regle behaviour
|
|
527
|
+
* Infer safe output type from a rules object and it's original state type
|
|
456
528
|
*
|
|
457
529
|
* ```ts
|
|
458
|
-
*
|
|
459
|
-
import { required } from '@regle/rules';
|
|
460
|
-
|
|
461
|
-
const { r$ } = useRules({
|
|
462
|
-
email: { required }
|
|
463
|
-
})
|
|
530
|
+
* type FormRequest = InferOutput<typeof rules, typeof formState>;
|
|
464
531
|
* ```
|
|
465
532
|
*/
|
|
466
|
-
|
|
533
|
+
type InferOutput<TRules$1 extends MaybeRef<ReglePartialRuleTree<Record<string, any>, any>> | ((state: any) => ReglePartialRuleTree<Record<string, any>, any>) | MaybeRef<StandardSchemaV1<any>>, TState$1 extends MaybeRef<unknown> = InferInput<TRules$1>> = isRecordLiteral<TState$1> extends true ? DeepSafeFormState<JoinDiscriminatedUnions<Unwrap<NonNullable<TState$1>>>, TRules$1> : TState$1 extends any[] ? TState$1[] : TState$1;
|
|
467
534
|
/**
|
|
468
|
-
*
|
|
469
|
-
*
|
|
470
|
-
* @returns The marked value.
|
|
471
|
-
* @example
|
|
535
|
+
* Infer input type from a rules object
|
|
536
|
+
*
|
|
472
537
|
* ```ts
|
|
473
|
-
*
|
|
474
|
-
* const StaticBigWrapper = markStatic(BigWrapper);
|
|
538
|
+
* type FormRequest = InferInput<typeof rules>;
|
|
475
539
|
* ```
|
|
476
540
|
*/
|
|
477
|
-
declare function markStatic<T extends object>(value: T): T extends RegleStaticImpl<unknown> ? T : RegleStatic<T>;
|
|
478
|
-
/**
|
|
479
|
-
* Infer type of the `r$` of any function returning a regle instance
|
|
480
|
-
*/
|
|
481
|
-
type InferRegleRoot<T extends (...args: any[]) => SuperCompatibleRegle> = T extends ((...args: any[]) => infer U) ? U extends SuperCompatibleRegle ? U['r$'] : never : never;
|
|
482
|
-
/**
|
|
483
|
-
* Infer custom rules declared in a global configuration
|
|
484
|
-
*/
|
|
485
|
-
type InferRegleRules<T extends useRegleFn<any, any>> = T extends useRegleFn<infer U, any> ? UnwrapRuleTree<Partial<DefaultValidators>> & UnwrapRuleTree<Partial<U>> : {};
|
|
486
|
-
/**
|
|
487
|
-
* Infer custom shortcuts declared in a global configuration
|
|
488
|
-
*/
|
|
489
|
-
type InferRegleShortcuts<T extends useRegleFn<any, any>> = T extends useRegleFn<any, infer U> ? U : {};
|
|
490
|
-
/**
|
|
491
|
-
* Extract a set rules and setting them as required
|
|
492
|
-
*/
|
|
493
|
-
type RegleEnforceRequiredRules<TRules$1 extends keyof DefaultValidators> = Omit<Partial<DefaultValidatorsTree>, TRules$1> & { [K in TRules$1]-?: UnwrapRuleWithParams<DefaultValidators[K]> };
|
|
494
|
-
/**
|
|
495
|
-
* Extract a set of custom rules from a global configuration and setting them as required
|
|
496
|
-
|
|
497
|
-
*/
|
|
498
|
-
type RegleEnforceCustomRequiredRules<T extends useRegleFn<any, any>, TRules$1 extends keyof InferRegleRules<T>> = Omit<Partial<DefaultValidatorsTree>, TRules$1> & { [K in TRules$1]-?: T extends useRegleFn<any, any> ? K extends keyof InferRegleRules<T> ? NonNullable<UnwrapRuleWithParams<InferRegleRules<T>[K]>> : never : K extends keyof T ? NonNullable<T[K]> : never };
|
|
499
|
-
/**
|
|
500
|
-
* Extract custom rules and custom shortcuts and apply them to a RegleFieldStatus type
|
|
501
|
-
*/
|
|
502
|
-
type RegleCustomFieldStatus<T extends useRegleFn<any, any>, TState$1 extends unknown = any, TRules$1 extends keyof InferRegleRules<T> = never> = RegleFieldStatus<TState$1, [TRules$1] extends [never] ? Partial<InferRegleRules<T>> : RegleEnforceCustomRequiredRules<T, TRules$1>, InferRegleShortcuts<T>>;
|
|
503
|
-
/**
|
|
504
|
-
/**
|
|
505
|
-
* DeepExact<T, S> is a TypeScript utility type that recursively checks whether the structure of type S
|
|
506
|
-
* exactly matches the structure of type T, including all nested properties.
|
|
507
|
-
*
|
|
508
|
-
* Used in `useRegle` and `inferRules` to enforce that the rules object matches the expected shape exactly.
|
|
509
|
-
*/
|
|
510
|
-
type DeepExact<TInfer, TTree> = NonNullable<TTree> extends MaybeRef<RegleRuleDecl> ? TTree : NonNullable<TTree> extends MaybeRef<RegleCollectionRuleDecl> ? TTree : [keyof TInfer] extends [keyof ExtractFromGetter<TTree>] ? ExactObject<TInfer, TTree> : { [K in keyof TInfer as K extends keyof TTree ? never : K]: TypeError<`Unknown property: <${Coerce<K>}>`> };
|
|
511
|
-
type ExactObject<TInfer, TTree> = { [K in keyof TTree]: NonNullable<TTree[K]> extends Record<string, any> ? ExtendOnlyRealRecord<TTree[K]> extends true ? NonNullable<TTree[K]> extends MaybeRef<RegleRuleDecl> ? TTree[K] : K extends keyof TInfer ? DeepExact<TInfer[K], NonNullable<TTree[K]>> : TTree[K] : TTree[K] : TTree[K] };
|
|
512
|
-
type TypeError<Msg> = {
|
|
513
|
-
[' TypeError']: Msg;
|
|
514
|
-
};
|
|
515
|
-
type Coerce<T> = `${T & string}`;
|
|
516
541
|
type InferInput<TRules$1 extends MaybeRef<ReglePartialRuleTree<Record<string, any>, any>> | ((state: any) => ReglePartialRuleTree<Record<string, any>, any>) | MaybeRef<StandardSchemaV1<any>>, TMarkMaybe extends boolean = true> = TRules$1 extends MaybeRef<StandardSchemaV1<infer State>> ? State : IsUnion<UnwrapSimple<TRules$1>> extends true ? InferTupleUnionInput<UnionToTuple<UnwrapSimple<TRules$1>>>[number] : TMarkMaybe extends true ? Prettify<{ [K in keyof UnwrapSimple<TRules$1> as UnwrapSimple<TRules$1>[K] extends MaybeRef<RegleRuleDecl<any, any>> ? K : never]?: ProcessInputChildren<UnwrapSimple<TRules$1>[K], TMarkMaybe> } & { [K in keyof UnwrapSimple<TRules$1> as UnwrapSimple<TRules$1>[K] extends MaybeRef<RegleRuleDecl<any, any>> ? never : K]: ProcessInputChildren<UnwrapSimple<TRules$1>[K], TMarkMaybe> }> : Prettify<{ [K in keyof UnwrapSimple<TRules$1>]: ProcessInputChildren<UnwrapSimple<TRules$1>[K], TMarkMaybe> }>;
|
|
517
542
|
type ProcessInputChildren<TRule extends unknown, TMarkMaybe extends boolean> = TRule extends {
|
|
518
543
|
$each: RegleCollectionEachRules<any, any>;
|
|
@@ -523,6 +548,56 @@ type ExtractTypeFromRules<TRules$1 extends RegleRuleDecl<any, any>> = FilterRule
|
|
|
523
548
|
type FilterRulesWithInput<TRules$1 extends RegleRuleDecl<any, any>> = { [K in keyof TRules$1 as TRules$1[K] extends RegleRuleDefinition<any, any, any, any, infer Input> ? unknown extends Input ? never : K : never]: TRules$1[K] extends RegleRuleDefinition<any, any, any, any, infer Input> ? Input : unknown };
|
|
524
549
|
type FilterRulesWithSingleType<TRules$1 extends RegleRuleDecl<any, any>> = { [K in keyof TRules$1 as TRules$1[K] extends RegleRuleDefinition<any, any, any, any, infer Input> ? unknown extends Input ? never : IsUnion<NonNullable<Input>> extends true ? never : K : never]: TRules$1[K] extends RegleRuleDefinition<any, any, any, any, infer Input> ? IsUnion<NonNullable<Input>> extends true ? unknown : Input : unknown };
|
|
525
550
|
type InferTupleUnionInput<T extends any[]> = T extends [infer F extends ReglePartialRuleTree, ...infer R] ? [InferInput<F, true>, ...InferTupleUnionInput<R>] : [];
|
|
551
|
+
/**
|
|
552
|
+
* Infer safe output from any `r$` instance
|
|
553
|
+
*
|
|
554
|
+
* ```ts
|
|
555
|
+
* type FormRequest = InferSafeOutput<typeof r$>;
|
|
556
|
+
* ```
|
|
557
|
+
*
|
|
558
|
+
* @deprecated Use {@link InferValidOutput} instead
|
|
559
|
+
*/
|
|
560
|
+
type InferSafeOutput<TRegle extends MaybeRef<SuperCompatibleRegleRoot | SuperCompatibleRegleFieldStatus>> = UnwrapRef<TRegle> extends Raw<RegleRoot<infer TState extends Record<string, any>, infer TRules, any, any>> ? DeepSafeFormState<JoinDiscriminatedUnions<TState>, TRules> : UnwrapRef<TRegle> extends RegleFieldStatus<infer TState, infer TRules> ? SafeFieldProperty<TState, TRules> : UnwrapRef<TRegle> extends RegleLike<infer TState extends Record<string, any>> ? TState : never;
|
|
561
|
+
/**
|
|
562
|
+
* Infer safe output from any `r$` instance
|
|
563
|
+
*
|
|
564
|
+
* ```ts
|
|
565
|
+
* type FormRequest = InferValidOutput<typeof r$>;
|
|
566
|
+
* ```
|
|
567
|
+
*/
|
|
568
|
+
type InferValidOutput<TRegle extends MaybeRef<SuperCompatibleRegleRoot | SuperCompatibleRegleFieldStatus>> = InferSafeOutput<TRegle>;
|
|
569
|
+
/**
|
|
570
|
+
* Infer complete validation result from any `r$` instance
|
|
571
|
+
*/
|
|
572
|
+
type InferRegleValidationResult<TRegle extends MaybeRef<SuperCompatibleRegleRoot | SuperCompatibleRegleFieldStatus>> = InferRegleSettings<TRegle> extends {
|
|
573
|
+
state: infer TState;
|
|
574
|
+
rules: infer TRules extends Record<string, any>;
|
|
575
|
+
} ? RegleNestedResult<TState, TRules> : InferRegleSettings<TRegle> extends {
|
|
576
|
+
state: infer TState;
|
|
577
|
+
rules: never;
|
|
578
|
+
} ? ({
|
|
579
|
+
valid: true;
|
|
580
|
+
data: TState;
|
|
581
|
+
} | {
|
|
582
|
+
valid: false;
|
|
583
|
+
data: TState;
|
|
584
|
+
}) & {
|
|
585
|
+
errors: RegleErrorTree<TState>[];
|
|
586
|
+
issues: RegleIssuesTree<TState>;
|
|
587
|
+
} : never;
|
|
588
|
+
/**
|
|
589
|
+
* Infer State and Rules from any `r$` instance
|
|
590
|
+
*/
|
|
591
|
+
type InferRegleSettings<TRegle extends MaybeRef<SuperCompatibleRegleRoot | SuperCompatibleRegleFieldStatus>> = UnwrapRef<TRegle> extends Raw<RegleRoot<infer TState extends Record<string, any>, infer TRules extends Record<string, any>, any, any>> ? {
|
|
592
|
+
state: TState;
|
|
593
|
+
rules: TRules;
|
|
594
|
+
} : UnwrapRef<TRegle> extends RegleFieldStatus<infer TState, infer TRules extends Record<string, any>> ? {
|
|
595
|
+
state: TState;
|
|
596
|
+
rules: TRules;
|
|
597
|
+
} : UnwrapRef<TRegle> extends RegleLike<infer TState extends Record<string, any>> ? {
|
|
598
|
+
state: TState;
|
|
599
|
+
rules: never;
|
|
600
|
+
} : never;
|
|
526
601
|
type CreateFn<T extends any[]> = (...args: T) => any;
|
|
527
602
|
/**
|
|
528
603
|
* Transform normal parameters tuple declaration to a rich tuple declaration
|
|
@@ -550,7 +625,7 @@ declare const InternalRuleType: {
|
|
|
550
625
|
readonly Inline: "__inline";
|
|
551
626
|
readonly Async: "__async";
|
|
552
627
|
};
|
|
553
|
-
type InternalRuleType =
|
|
628
|
+
type InternalRuleType = EnumType<typeof InternalRuleType>;
|
|
554
629
|
type IsLiteral<T> = string extends T ? false : true;
|
|
555
630
|
/**
|
|
556
631
|
* Returned typed of rules created with `createRule`
|
|
@@ -624,7 +699,7 @@ type RegleRuleRawInput<TValue$1 extends any = any, TParams$1 extends [...any[]]
|
|
|
624
699
|
type InferRegleRule<TValue$1 extends any = any, TParams$1 extends any[] = [], TAsync$1 extends boolean = false, TMetaData extends RegleRuleMetadataDefinition = boolean> = [TParams$1] extends [[]] ? RegleRuleDefinition<TValue$1, TParams$1, TAsync$1, TMetaData> : RegleRuleWithParamsDefinition<TValue$1, TParams$1, TAsync$1, TMetaData>;
|
|
625
700
|
type RegleRuleDefinitionProcessor<TValue$1 extends any = any, TParams$1 extends any[] = [], TReturn = any> = (value: Maybe<TValue$1>, ...params: TParams$1) => TReturn;
|
|
626
701
|
type RegleRuleDefinitionWithMetadataProcessor<TValue$1 extends any, TMetadata$1 extends RegleRuleMetadataConsumer<TValue$1, any[]>, TReturn = any> = ((metadata: TMetadata$1) => TReturn) | TReturn;
|
|
627
|
-
type RegleCollectionRuleDefinition<TValue$1 = any[], TCustomRules extends Partial<
|
|
702
|
+
type RegleCollectionRuleDefinition<TValue$1 = any[], TCustomRules extends Partial<ExtendedRulesDeclarations> = Partial<ExtendedRulesDeclarations>> = (RegleRuleDecl<NonNullable<TValue$1>, TCustomRules, CollectionRegleBehaviourOptions> & {
|
|
628
703
|
$each: MaybeGetter<RegleFormPropertyType<ArrayElement<NonNullable<TValue$1>>, TCustomRules>, ArrayElement<TValue$1>>;
|
|
629
704
|
}) | ({
|
|
630
705
|
$each: MaybeGetter<RegleFormPropertyType<ArrayElement<NonNullable<TValue$1>>, TCustomRules>, ArrayElement<TValue$1>>;
|
|
@@ -725,15 +800,17 @@ type CustomRulesDeclarationTree = {
|
|
|
725
800
|
[x: string]: RegleRuleRawInput<any, any[], boolean, any> | undefined;
|
|
726
801
|
};
|
|
727
802
|
type DefaultValidatorsTree = { [K in keyof DefaultValidators]: RegleRuleRawInput<any, any[], boolean, any> | undefined };
|
|
728
|
-
type
|
|
803
|
+
type ExtendedRulesDeclarations = CustomRulesDeclarationTree & DefaultValidatorsTree;
|
|
804
|
+
/** @deprecated Use {@link ExtendedRulesDeclarations} instead */
|
|
805
|
+
type AllRulesDeclarations = ExtendedRulesDeclarations;
|
|
729
806
|
/**
|
|
730
807
|
* @public
|
|
731
808
|
*/
|
|
732
|
-
type ReglePartialRuleTree<TForm extends Record<string, any> = Record<string, any>, TCustomRules extends Partial<
|
|
809
|
+
type ReglePartialRuleTree<TForm extends Record<string, any> = Record<string, any>, TCustomRules extends Partial<ExtendedRulesDeclarations> = Partial<ExtendedRulesDeclarations>> = { [TKey in keyof TForm]?: RegleFormPropertyType<TForm[TKey], TCustomRules> };
|
|
733
810
|
/**
|
|
734
811
|
* @public
|
|
735
812
|
*/
|
|
736
|
-
type RegleRuleTree<TForm extends Record<string, any>, TCustomRules extends Partial<
|
|
813
|
+
type RegleRuleTree<TForm extends Record<string, any>, TCustomRules extends Partial<ExtendedRulesDeclarations> = Partial<ExtendedRulesDeclarations>> = { [TKey in keyof TForm]: RegleFormPropertyType<TForm[TKey], TCustomRules> };
|
|
737
814
|
/**
|
|
738
815
|
* @public
|
|
739
816
|
*/
|
|
@@ -743,7 +820,7 @@ type RegleUnknownRulesTree = {
|
|
|
743
820
|
/**
|
|
744
821
|
* @public
|
|
745
822
|
*/
|
|
746
|
-
type RegleComputedRules<TForm extends MaybeRefOrComputedRef<Record<string, any>> | DeepReactiveState<Record<string, any>>, TCustomRules extends Partial<
|
|
823
|
+
type RegleComputedRules<TForm extends MaybeRefOrComputedRef<Record<string, any>> | DeepReactiveState<Record<string, any>>, TCustomRules extends Partial<ExtendedRulesDeclarations> | Regle<any, any> | useRegleFn<any> = Partial<ExtendedRulesDeclarations>, TState$1 = Unwrap<UnwrapMaybeRef<TForm>>, TCustom = (TCustomRules extends Regle<any, infer R> ? R extends ReglePartialRuleTree<any, infer C> ? C : Partial<ExtendedRulesDeclarations> : TCustomRules extends useRegleFn<infer Rules, any> ? Rules : {})> = { [TKey in keyof JoinDiscriminatedUnions<TState$1>]?: RegleFormPropertyType<JoinDiscriminatedUnions<TState$1>[TKey], Omit<Partial<ExtendedRulesDeclarations>, keyof TCustom> & Partial<TCustom>> };
|
|
747
824
|
/**
|
|
748
825
|
* @internal
|
|
749
826
|
* @reference {@link ReglePartialRuleTree}
|
|
@@ -754,7 +831,7 @@ type $InternalReglePartialRuleTree = {
|
|
|
754
831
|
/**
|
|
755
832
|
* @public
|
|
756
833
|
*/
|
|
757
|
-
type RegleFormPropertyType<TValue$1 = any, TCustomRules extends Partial<
|
|
834
|
+
type RegleFormPropertyType<TValue$1 = any, TCustomRules extends Partial<ExtendedRulesDeclarations> = Partial<ExtendedRulesDeclarations>> = [NonNullable<TValue$1>] extends [never] ? MaybeRefOrComputedRef<RegleRuleDecl<TValue$1, TCustomRules>> : NonNullable<TValue$1> extends Array<any> ? RegleCollectionRuleDecl<TValue$1, TCustomRules> : NonNullable<TValue$1> extends Date ? MaybeRefOrComputedRef<RegleRuleDecl<NonNullable<TValue$1>, TCustomRules>> : NonNullable<TValue$1> extends File ? MaybeRefOrComputedRef<RegleRuleDecl<NonNullable<TValue$1>, TCustomRules>> : NonNullable<TValue$1> extends Ref<infer V> ? RegleFormPropertyType<V, TCustomRules> : NonNullable<TValue$1> extends Record<string, any> ? NonNullable<TValue$1> extends RegleStatic<infer U> ? MaybeRefOrComputedRef<RegleRuleDecl<Raw<U>, TCustomRules>> : ReglePartialRuleTree<NonNullable<TValue$1>, TCustomRules> : MaybeRefOrComputedRef<RegleRuleDecl<NonNullable<TValue$1>, TCustomRules>>;
|
|
758
835
|
/**
|
|
759
836
|
* @internal
|
|
760
837
|
* @reference {@link RegleFormPropertyType}
|
|
@@ -764,7 +841,9 @@ type $InternalFormPropertyTypes = MaybeRefOrComputedRef<$InternalRegleRuleDecl>
|
|
|
764
841
|
* @public
|
|
765
842
|
* Rule tree for a form property
|
|
766
843
|
*/
|
|
767
|
-
type RegleRuleDecl<TValue$1 extends any = any, TCustomRules extends Partial<
|
|
844
|
+
type RegleRuleDecl<TValue$1 extends any = any, TCustomRules extends Partial<ExtendedRulesDeclarations> = Partial<DefaultValidatorsTree>, TOptions extends Record<string, unknown> = FieldRegleBehaviourOptions> = TOptions & { [TKey in keyof RemoveIndexSignature<TCustomRules>]?: FormRuleDeclaration<TValue$1, any[]> } & {
|
|
845
|
+
[x: string]: FormRuleDeclaration<TValue$1, any[]> | boolean | number | undefined;
|
|
846
|
+
};
|
|
768
847
|
/**
|
|
769
848
|
* @internal
|
|
770
849
|
* @reference {@link RegleRuleDecl}
|
|
@@ -779,13 +858,13 @@ type RegleCollectionRuleDeclKeyProperty = {
|
|
|
779
858
|
/**
|
|
780
859
|
* @public
|
|
781
860
|
*/
|
|
782
|
-
type RegleCollectionRuleDecl<TValue$1 = any[], TCustomRules extends Partial<
|
|
861
|
+
type RegleCollectionRuleDecl<TValue$1 = any[], TCustomRules extends Partial<ExtendedRulesDeclarations> = Partial<ExtendedRulesDeclarations>> = ({
|
|
783
862
|
$each?: RegleCollectionEachRules<TValue$1, TCustomRules>;
|
|
784
863
|
} & RegleRuleDecl<NonNullable<TValue$1>, TCustomRules, CollectionRegleBehaviourOptions>) | ({
|
|
785
864
|
$each?: RegleCollectionEachRules<TValue$1, TCustomRules>;
|
|
786
865
|
} & CollectionRegleBehaviourOptions);
|
|
787
866
|
/** @public */
|
|
788
|
-
type RegleCollectionEachRules<TValue$1 = any[], TCustomRules extends Partial<
|
|
867
|
+
type RegleCollectionEachRules<TValue$1 = any[], TCustomRules extends Partial<ExtendedRulesDeclarations> = Partial<ExtendedRulesDeclarations>> = MaybeGetter<RegleFormPropertyType<ArrayElement<NonNullable<TValue$1>>, TCustomRules>, ArrayElement<TValue$1>, RegleCollectionRuleDeclKeyProperty>;
|
|
789
868
|
/**
|
|
790
869
|
* @internal
|
|
791
870
|
* @reference {@link RegleCollectionRuleDecl}
|
|
@@ -815,7 +894,7 @@ type ProcessNestedFields<TState$1 extends Record<string, any> | undefined, TRule
|
|
|
815
894
|
/**
|
|
816
895
|
* @public
|
|
817
896
|
*/
|
|
818
|
-
type RegleStatus<TState$1 extends Record<string, any> | undefined = Record<string, any>, TRules$1 extends ReglePartialRuleTree<NonNullable<TState$1>> = Record<string, any>, TShortcuts extends RegleShortcutDefinition = {}> = RegleCommonStatus<TState$1> & {
|
|
897
|
+
type RegleStatus<TState$1 extends Record<string, any> | undefined = Record<string, any>, TRules$1 extends ReglePartialRuleTree<NonNullable<TState$1>> = Record<string, any>, TShortcuts extends RegleShortcutDefinition = {}> = RegleCommonStatus<TState$1, TRules$1> & {
|
|
819
898
|
/** Represents all the children of your object. You can access any nested child at any depth to get the relevant data you need for your form. */
|
|
820
899
|
readonly $fields: ProcessNestedFields<TState$1, TRules$1, TShortcuts, true>;
|
|
821
900
|
/**
|
|
@@ -833,7 +912,7 @@ type RegleStatus<TState$1 extends Record<string, any> | undefined = Record<strin
|
|
|
833
912
|
/** Collection of all the error messages, collected for all children properties. */
|
|
834
913
|
readonly $silentErrors: RegleErrorTree<TState$1>;
|
|
835
914
|
/** 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). */
|
|
836
|
-
$extractDirtyFields: (filterNullishValues?: boolean) =>
|
|
915
|
+
$extractDirtyFields: (filterNullishValues?: boolean) => DeepPartial<TState$1>;
|
|
837
916
|
/** Sets all properties as dirty, triggering all rules. It returns a promise that will either resolve to false or a type safe copy of your form state. Values that had the required rule will be transformed into a non-nullable value (type only). */
|
|
838
917
|
$validate: (forceValues?: JoinDiscriminatedUnions<TState$1> extends EmptyObject ? any : HasNamedKeys<JoinDiscriminatedUnions<TState$1>> extends true ? IsUnknown<JoinDiscriminatedUnions<TState$1>> extends true ? any : JoinDiscriminatedUnions<TState$1> : any) => Promise<RegleNestedResult<JoinDiscriminatedUnions<TState$1>, TRules$1>>;
|
|
839
918
|
} & ProcessNestedFields<TState$1, TRules$1, TShortcuts> & ([TShortcuts['nested']] extends [never] ? {} : { [K in keyof TShortcuts['nested']]: ReturnType<NonNullable<TShortcuts['nested']>[K]> });
|
|
@@ -856,13 +935,13 @@ interface $InternalRegleStatus extends $InternalRegleCommonStatus {
|
|
|
856
935
|
/**
|
|
857
936
|
* @public
|
|
858
937
|
*/
|
|
859
|
-
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<infer U extends Record<string, any>> ? ExtendOnlyRealRecord<U> extends true ? 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> : RegleFieldStatus<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<TState$1[TKey$1]
|
|
938
|
+
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<infer U extends Record<string, any>> ? ExtendOnlyRealRecord<U> extends true ? 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> : RegleFieldStatus<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> : MaybeVariantStatus<TState$1[TKey$1], TRule, 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>;
|
|
860
939
|
/**
|
|
861
940
|
* @internal
|
|
862
941
|
* @reference {@link InferRegleStatusType}
|
|
863
942
|
*/
|
|
864
943
|
type $InternalRegleStatusType = $InternalRegleCollectionStatus | $InternalRegleStatus | $InternalRegleFieldStatus;
|
|
865
|
-
type RegleFieldIssue<TRules$1 extends RegleFormPropertyType<unknown, Partial<
|
|
944
|
+
type RegleFieldIssue<TRules$1 extends RegleFormPropertyType<unknown, Partial<ExtendedRulesDeclarations>> = EmptyObject> = {
|
|
866
945
|
readonly $property: string;
|
|
867
946
|
readonly $type?: string;
|
|
868
947
|
readonly $message: string;
|
|
@@ -879,13 +958,13 @@ type RegleFieldIssue<TRules$1 extends RegleFormPropertyType<unknown, Partial<All
|
|
|
879
958
|
} : {
|
|
880
959
|
readonly $rule: string;
|
|
881
960
|
} }[keyof ComputeFieldRules<any, TRules$1>]);
|
|
882
|
-
type ComputeFieldRules<TState$1 extends any, TRules$1 extends MaybeRef<RegleFormPropertyType<unknown, Partial<
|
|
961
|
+
type ComputeFieldRules<TState$1 extends any, TRules$1 extends MaybeRef<RegleFormPropertyType<unknown, Partial<ExtendedRulesDeclarations>>>> = IsEmptyObject<UnwrapRef<TRules$1>> extends true ? {
|
|
883
962
|
readonly [x: string]: RegleRuleStatus<TState$1, any[], any>;
|
|
884
963
|
} : { readonly [TRuleKey in keyof Omit<UnwrapRef<TRules$1>, '$each' | keyof FieldRegleBehaviourOptions>]: RegleRuleStatus<TState$1, UnwrapRef<TRules$1>[TRuleKey] extends RegleRuleDefinition<any, infer TParams, any> ? TParams : [], UnwrapRef<TRules$1>[TRuleKey] extends RegleRuleDefinition<any, any, any, infer TMetadata> ? TMetadata : UnwrapRef<TRules$1>[TRuleKey] extends InlineRuleDeclaration<any, any[], infer TMetadata> ? TMetadata extends Promise<infer P> ? P : TMetadata : boolean> };
|
|
885
964
|
/**
|
|
886
965
|
* @public
|
|
887
966
|
*/
|
|
888
|
-
type RegleFieldStatus<TState$1 extends any = any, TRules$1 extends RegleFormPropertyType<unknown, Partial<
|
|
967
|
+
type RegleFieldStatus<TState$1 extends any = any, TRules$1 extends RegleFormPropertyType<unknown, Partial<ExtendedRulesDeclarations>> = Record<string, any>, TShortcuts extends RegleShortcutDefinition = never> = Omit<RegleCommonStatus<TState$1, TRules$1>, '$value' | '$silentValue' | '$initialValue' | '$originalValue'> & {
|
|
889
968
|
/** A reference to the original validated model. It can be used to bind your form with v-model.*/
|
|
890
969
|
$value: MaybeOutput<UnwrapNestedRefs<TState$1>>;
|
|
891
970
|
/** $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. */
|
|
@@ -949,7 +1028,7 @@ interface $InternalRegleFieldStatus extends $InternalRegleCommonStatus {
|
|
|
949
1028
|
/**
|
|
950
1029
|
* @public
|
|
951
1030
|
*/
|
|
952
|
-
interface RegleCommonStatus<TValue$1 = any> extends StandardSchemaV1<TValue$1
|
|
1031
|
+
interface RegleCommonStatus<TValue$1 = any, TRules$1 extends Record<string, any> = never> extends StandardSchemaV1<TValue$1, [TRules$1] extends [never] ? TValue$1 : InferOutput<TRules$1, TValue$1>> {
|
|
953
1032
|
/** Indicates whether the field is invalid. It becomes true if any associated rules return false. */
|
|
954
1033
|
readonly $invalid: boolean;
|
|
955
1034
|
/**
|
|
@@ -1081,7 +1160,7 @@ interface $InternalRegleRuleStatus {
|
|
|
1081
1160
|
/**
|
|
1082
1161
|
* @public
|
|
1083
1162
|
*/
|
|
1084
|
-
type RegleCollectionStatus<TState$1 extends any[] = any[], TRules$1 extends ReglePartialRuleTree<ArrayElement<TState$1>> = Record<string, any>, TFieldRule extends RegleCollectionRuleDecl<any, any> = never, TShortcuts extends RegleShortcutDefinition = {}> = Omit<RegleCommonStatus<TState$1>, '$value'> & {
|
|
1163
|
+
type RegleCollectionStatus<TState$1 extends any[] = any[], TRules$1 extends ReglePartialRuleTree<ArrayElement<TState$1>> = Record<string, any>, TFieldRule extends RegleCollectionRuleDecl<any, any> = never, TShortcuts extends RegleShortcutDefinition = {}> = Omit<RegleCommonStatus<TState$1, TRules$1>, '$value'> & {
|
|
1085
1164
|
/** A reference to the original validated model. It can be used to bind your form with v-model.*/
|
|
1086
1165
|
$value: MaybeOutput<TState$1>;
|
|
1087
1166
|
/** $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. */
|
|
@@ -1103,7 +1182,7 @@ type RegleCollectionStatus<TState$1 extends any[] = any[], TRules$1 extends Regl
|
|
|
1103
1182
|
/** Collection of all the error messages, collected for all children properties and nested forms. */
|
|
1104
1183
|
readonly $silentErrors: RegleCollectionErrors<TState$1>;
|
|
1105
1184
|
/** 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). */
|
|
1106
|
-
$extractDirtyFields: (filterNullishValues?: boolean) =>
|
|
1185
|
+
$extractDirtyFields: (filterNullishValues?: boolean) => DeepPartial<TState$1>;
|
|
1107
1186
|
/** Sets all properties as dirty, triggering all rules. It returns a promise that will either resolve to false or a type safe copy of your form state. Values that had the required rule will be transformed into a non-nullable value (type only). */
|
|
1108
1187
|
$validate: (value?: JoinDiscriminatedUnions<TState$1>) => Promise<RegleCollectionResult<TState$1, JoinDiscriminatedUnions<TRules$1>>>;
|
|
1109
1188
|
} & ([TShortcuts['collections']] extends [never] ? {} : { [K in keyof TShortcuts['collections']]: ReturnType<NonNullable<TShortcuts['collections']>[K]> });
|
|
@@ -1259,7 +1338,7 @@ declare function unwrapRuleParameters<TParams$1 extends any[]>(params: MaybeRefO
|
|
|
1259
1338
|
* - a `useRegle` composable that can typecheck your custom rules
|
|
1260
1339
|
* - an `inferRules` helper that can typecheck your custom rules
|
|
1261
1340
|
*/
|
|
1262
|
-
declare function defineRegleConfig<TShortcuts extends RegleShortcutDefinition<TCustomRules>, TCustomRules extends Partial<
|
|
1341
|
+
declare function defineRegleConfig<TShortcuts extends RegleShortcutDefinition<TCustomRules>, TCustomRules extends Partial<ExtendedRulesDeclarations>>({
|
|
1263
1342
|
rules,
|
|
1264
1343
|
modifiers,
|
|
1265
1344
|
shortcuts
|
|
@@ -1280,7 +1359,7 @@ declare function defineRegleConfig<TShortcuts extends RegleShortcutDefinition<TC
|
|
|
1280
1359
|
* - a `useRegle` composable that can typecheck your custom rules
|
|
1281
1360
|
* - an `inferRules` helper that can typecheck your custom rules
|
|
1282
1361
|
*/
|
|
1283
|
-
declare function extendRegleConfig<TRootCustomRules extends Partial<
|
|
1362
|
+
declare function extendRegleConfig<TRootCustomRules extends Partial<ExtendedRulesDeclarations>, TRootShortcuts extends RegleShortcutDefinition<{}>, TShortcuts extends RegleShortcutDefinition<Merge<TRootCustomRules, TCustomRules>>, TCustomRules extends Partial<ExtendedRulesDeclarations>>(regle: useRegleFn<TRootCustomRules, TRootShortcuts>, {
|
|
1284
1363
|
rules,
|
|
1285
1364
|
modifiers,
|
|
1286
1365
|
shortcuts
|
|
@@ -1308,7 +1387,7 @@ type MergedRegles<TRegles extends Record<string, SuperCompatibleRegleRoot>, TVal
|
|
|
1308
1387
|
readonly $issues: { [K in keyof TRegles]: TRegles[K]['$issues'] };
|
|
1309
1388
|
readonly $silentIssues: { [K in keyof TRegles]: TRegles[K]['$silentIssues'] };
|
|
1310
1389
|
/** 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). */
|
|
1311
|
-
$extractDirtyFields: (filterNullishValues?: boolean) =>
|
|
1390
|
+
$extractDirtyFields: (filterNullishValues?: boolean) => DeepPartial<TValue$1>[];
|
|
1312
1391
|
/** Sets all properties as dirty, triggering all rules. It returns a promise that will either resolve to false or a type safe copy of your form state. Values that had the required rule will be transformed into a non-nullable value (type only). */
|
|
1313
1392
|
$validate: (forceValues?: TRegles['$value']) => Promise<MergedReglesResult<TRegles>>;
|
|
1314
1393
|
} & (HasNamedKeys<TRegles> extends true ? { [K in keyof TRegles]: TRegles[K] } : {});
|
|
@@ -1326,7 +1405,7 @@ type MergedScopedRegles<TValue$1 extends Record<string, unknown>[] = Record<stri
|
|
|
1326
1405
|
/** Collection of all registered Regles instances silent issues */
|
|
1327
1406
|
readonly $silentIssues: RegleValidationErrors<Record<string, unknown>, false, true>[];
|
|
1328
1407
|
/** 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). */
|
|
1329
|
-
$extractDirtyFields: (filterNullishValues?: boolean) =>
|
|
1408
|
+
$extractDirtyFields: (filterNullishValues?: boolean) => DeepPartial<TValue$1>;
|
|
1330
1409
|
/** Sets all properties as dirty, triggering all rules. It returns a promise that will either resolve to false or a type safe copy of your form state. Values that had the required rule will be transformed into a non-nullable value (type only). */
|
|
1331
1410
|
$validate: (forceValues?: TValue$1) => Promise<{
|
|
1332
1411
|
valid: boolean;
|
|
@@ -1381,10 +1460,10 @@ type CreateScopedUseRegleOptions<TCustomRegle extends useRegleFn<any, any>, TAsR
|
|
|
1381
1460
|
*/
|
|
1382
1461
|
asRecord?: TAsRecord;
|
|
1383
1462
|
};
|
|
1384
|
-
declare function createScopedUseRegle<TCustomRegle extends useRegleFn<any, any> = useRegleFn<Partial<
|
|
1463
|
+
declare function createScopedUseRegle<TCustomRegle extends useRegleFn<any, any> = useRegleFn<Partial<ExtendedRulesDeclarations>>, TAsRecord extends boolean = false, TReturnedRegle extends useRegleFn<any, any, any, any> = (TCustomRegle extends useRegleFn<infer A, infer B> ? useRegleFn<A, B, {
|
|
1385
1464
|
dispose: () => void;
|
|
1386
1465
|
register: () => void;
|
|
1387
|
-
}, UseScopedRegleOptions<TAsRecord>> : useRegleFn<Partial<
|
|
1466
|
+
}, UseScopedRegleOptions<TAsRecord>> : useRegleFn<Partial<ExtendedRulesDeclarations>, any, {
|
|
1388
1467
|
dispose: () => void;
|
|
1389
1468
|
register: () => void;
|
|
1390
1469
|
}, UseScopedRegleOptions<TAsRecord>>)>(options?: CreateScopedUseRegleOptions<TCustomRegle, TAsRecord>): {
|
|
@@ -1393,7 +1472,7 @@ declare function createScopedUseRegle<TCustomRegle extends useRegleFn<any, any>
|
|
|
1393
1472
|
};
|
|
1394
1473
|
declare const useCollectScope: <TValue$1 extends Record<string, unknown>[] = Record<string, unknown>[]>(namespace?: vue0.MaybeRefOrGetter<string | string[]>) => {
|
|
1395
1474
|
r$: MergedScopedRegles<TValue$1>;
|
|
1396
|
-
}, useScopedRegle: useRegleFn<Partial<
|
|
1475
|
+
}, useScopedRegle: useRegleFn<Partial<ExtendedRulesDeclarations>, never, {
|
|
1397
1476
|
dispose: () => void;
|
|
1398
1477
|
register: () => void;
|
|
1399
1478
|
}, {
|
|
@@ -1485,4 +1564,4 @@ declare function defineRules<TRules$1 extends RegleUnknownRulesTree>(rules: TRul
|
|
|
1485
1564
|
*/
|
|
1486
1565
|
declare function refineRules<TRules$1 extends RegleUnknownRulesTree, TRefinement extends ReglePartialRuleTree<InferInput<TRules$1>> & RegleUnknownRulesTree>(rules: TRules$1, refinement: (state: Ref<InferInput<TRules$1>>) => TRefinement): (state: Ref<InferInput<TRules$1>>) => Merge<TRules$1, TRefinement>;
|
|
1487
1566
|
declare const RegleVuePlugin: Plugin;
|
|
1488
|
-
export { type $InternalRegleStatus, type AllRulesDeclarations, type ArrayElement, type CommonAlphaOptions, type CommonComparisonOptions, type CreateScopedUseRegleOptions, type DeepMaybeRef, type DeepReactiveState, type DefaultValidatorsTree, type FormRuleDeclaration, type HasNamedKeys, type HaveAnyRequiredProps, type InferInput, type InferRegleRoot, type InferRegleRule, type InferRegleRules, type InferRegleShortcuts, type InferRegleStatusType, type InferSafeOutput, type InlineRuleDeclaration, InternalRuleType, type IsRegleStatic, type JoinDiscriminatedUnions, 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 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 ReglePartialRuleTree, type RegleResult, type RegleRoot, type RegleRuleCore, type RegleRuleDecl, type RegleRuleDefinition, type RegleRuleDefinitionProcessor, type RegleRuleDefinitionWithMetadataProcessor, type RegleRuleInit, type RegleRuleMetadataConsumer, type RegleRuleMetadataDefinition, type RegleRuleMetadataExtended, type RegleRuleRaw, type RegleRuleStatus, type RegleRuleTypeReturn, type RegleRuleWithParamsDefinition, type RegleShortcutDefinition, type RegleSingleField, type 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, markStatic, mergeRegles, narrowVariant, refineRules, unwrapRuleParameters, useCollectScope, type useCollectScopeFn, useRegle, type useRegleFn, useRootStorage, useRules, type useRulesFn, useScopedRegle, variantToRef };
|
|
1567
|
+
export { type $InternalRegleStatus, type AllRulesDeclarations, type ArrayElement, type CommonAlphaOptions, type CommonComparisonOptions, type CreateScopedUseRegleOptions, type DeepMaybeRef, type DeepPartial, type DeepReactiveState, type DefaultValidatorsTree, type ExtendedRulesDeclarations, type FormRuleDeclaration, 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 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 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 RegleNestedResult, 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, markStatic, mergeRegles, narrowVariant, refineRules, unwrapRuleParameters, useCollectScope, type useCollectScopeFn, useRegle, type useRegleFn, useRootStorage, useRules, type useRulesFn, useScopedRegle, variantToRef };
|
package/dist/regle-core.js
CHANGED
|
@@ -282,20 +282,6 @@ const InternalRuleType = {
|
|
|
282
282
|
Async: "__async"
|
|
283
283
|
};
|
|
284
284
|
|
|
285
|
-
function mergeBooleanGroupProperties(entries, property) {
|
|
286
|
-
return entries.some((entry) => {
|
|
287
|
-
if (!property) return false;
|
|
288
|
-
return entry?.[property];
|
|
289
|
-
});
|
|
290
|
-
}
|
|
291
|
-
function mergeArrayGroupProperties(entries, property) {
|
|
292
|
-
if (!property) return [];
|
|
293
|
-
return entries.reduce((all, entry) => {
|
|
294
|
-
const fetchedProperty = entry?.[property] || [];
|
|
295
|
-
return all.concat(fetchedProperty);
|
|
296
|
-
}, []);
|
|
297
|
-
}
|
|
298
|
-
|
|
299
285
|
/**
|
|
300
286
|
* Returns a clean list of parameters
|
|
301
287
|
* Removing Ref and executing function to return the unwrapped value
|
|
@@ -538,6 +524,20 @@ function createGlobalState(stateFactory) {
|
|
|
538
524
|
});
|
|
539
525
|
}
|
|
540
526
|
|
|
527
|
+
function mergeBooleanGroupProperties(entries, property) {
|
|
528
|
+
return entries.some((entry) => {
|
|
529
|
+
if (!property) return false;
|
|
530
|
+
return entry?.[property];
|
|
531
|
+
});
|
|
532
|
+
}
|
|
533
|
+
function mergeArrayGroupProperties(entries, property) {
|
|
534
|
+
if (!property) return [];
|
|
535
|
+
return entries.reduce((all, entry) => {
|
|
536
|
+
const fetchedProperty = entry?.[property] || [];
|
|
537
|
+
return all.concat(fetchedProperty);
|
|
538
|
+
}, []);
|
|
539
|
+
}
|
|
540
|
+
|
|
541
541
|
/**
|
|
542
542
|
* Inspired by Vuelidate storage
|
|
543
543
|
*/
|
|
@@ -1140,8 +1140,7 @@ function createReactiveFieldStatus({ state, rulesDef, customMessages, path, cach
|
|
|
1140
1140
|
return extractRulesTooltips({ field: { $rules: $rules.value } });
|
|
1141
1141
|
});
|
|
1142
1142
|
const $ready = computed(() => {
|
|
1143
|
-
|
|
1144
|
-
return $anyDirty.value && !($invalid.value || $pending.value);
|
|
1143
|
+
return !($invalid.value || $pending.value);
|
|
1145
1144
|
});
|
|
1146
1145
|
const $pending = computed(() => {
|
|
1147
1146
|
if (triggerPunishment.value || !$rewardEarly$1.value) return Object.entries($rules.value).some(([_, ruleResult]) => {
|
|
@@ -2083,8 +2082,7 @@ function createReactiveNestedStatus({ rulesDef, state, path = "", cachePath, roo
|
|
|
2083
2082
|
return true;
|
|
2084
2083
|
});
|
|
2085
2084
|
const $ready = computed(() => {
|
|
2086
|
-
|
|
2087
|
-
return $anyDirty.value && !($invalid.value || $pending.value);
|
|
2085
|
+
return !($invalid.value || $pending.value);
|
|
2088
2086
|
});
|
|
2089
2087
|
const $localPending = ref(false);
|
|
2090
2088
|
const $pending = computed(() => {
|
|
@@ -2504,6 +2502,7 @@ function useRegleDevtoolsRegistry() {
|
|
|
2504
2502
|
watchers.value.set(id, stopHandle);
|
|
2505
2503
|
}
|
|
2506
2504
|
return {
|
|
2505
|
+
devtoolsApi,
|
|
2507
2506
|
register,
|
|
2508
2507
|
unregister,
|
|
2509
2508
|
getAll,
|
|
@@ -2521,7 +2520,7 @@ const regleDevtoolsRegistry = useRegleDevtoolsRegistry();
|
|
|
2521
2520
|
*/
|
|
2522
2521
|
function registerRegleInstance(r$, options) {
|
|
2523
2522
|
if (typeof window === "undefined") return;
|
|
2524
|
-
if (!inject(regleSymbol) && !regleDevtoolsRegistry.loggedWarning.value) {
|
|
2523
|
+
if (!inject(regleSymbol) && !regleDevtoolsRegistry.loggedWarning.value && !!regleDevtoolsRegistry.devtoolsApi) {
|
|
2525
2524
|
regleDevtoolsRegistry.loggedWarning.value = true;
|
|
2526
2525
|
console.warn(`📏 Regle Devtools are not available. Install Regle plugin in your app to enable them. https://reglejs.dev/introduction/devtools`);
|
|
2527
2526
|
return;
|
|
@@ -2985,7 +2984,7 @@ function filterInspectorTree(nodes, filter) {
|
|
|
2985
2984
|
return filtered;
|
|
2986
2985
|
}
|
|
2987
2986
|
|
|
2988
|
-
var version$1 = "1.13.
|
|
2987
|
+
var version$1 = "1.13.1";
|
|
2989
2988
|
|
|
2990
2989
|
function createDevtools(app) {
|
|
2991
2990
|
setupDevtoolsPlugin({
|
package/dist/regle-core.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
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`||e?.constructor?.name==`FileList`}function b(e,t=!0){return e==null?!0:e instanceof Date?isNaN(e.getTime()):y(e)?e.size<=0:Array.isArray(e)?t?e.length===0:!1:typeof e==`object`&&e?Object.keys(e).length===0:!String(e).length}const x=Symbol(`regle-rule`);function S(e){if(typeof e.source.flags==`string`)return e.source.flags;{let t=[];return e.global&&t.push(`g`),e.ignoreCase&&t.push(`i`),e.multiline&&t.push(`m`),e.sticky&&t.push(`y`),e.unicode&&t.push(`u`),t.join(``)}}function C(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=>C(e,t++)))),r==`Map`&&(n=new Map([...e].map(e=>[C(e[0]),C(e[1])]))),r==`Date`&&(n=new Date(e.getTime())),r==`RegExp`&&(n=RegExp(e.source,S(e))),r==`Array`||r==`Object`)for(let r in n=Array.isArray(e)?[]:{},e)n[r]=C(e[r],t++);return n}function w(e){return e&&(e instanceof Date||e.constructor.name==`File`||e.constructor.name==`FileList`)?!1:typeof e==`object`&&!!e&&!Array.isArray(e)}function T(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 E(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 D(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function O(e,t,n,r=!1){Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})}function k(e){return typeof e==`function`&&!!e.prototype&&`constructor`in e.prototype&&e.prototype.constructor===e}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(w(e)&&w(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)=>{if(n.aborted){r(new N);return}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,t){return e.some(e=>t?e?.[t]:!1)}function L(e,t){return t?e.reduce((e,n)=>{let r=n?.[t]||[];return e.concat(r)},[]):[]}function R(e){try{return e.map(e=>p(e))}catch{return[]}}function z(t){return t.map(t=>t instanceof Function?e(t):i(t)?t:f(()=>t))}function B(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 V(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,...R(r.length?r:t))},message(n){return typeof e.message==`function`?e.message({...n,$params:R(n?.$params?.length?n.$params:t)}):e.message},active(n){return typeof e.active==`function`?e.active({...n,$params:R(n?.$params?.length?n.$params:t)}):e.active??!0},tooltip(n){return typeof e.tooltip==`function`?e.tooltip({...n,$params:R(n?.$params?.length?n.$params:t)}):e.tooltip??[]},exec(n){let r=e.validator(n,...R(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:z(t),_brand:x})}function H(e){if(typeof e.validator==`function`){let t=[],n=e.async??e.validator.constructor.name===`AsyncFunction`,r=V({...e,async:n},...t);if(B(e.validator)>1){let t=function(...t){return V(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 U(e){return w(e.value)}function W(e,n,r){let i=t(),a;return a=e instanceof Function?i.run(()=>e(n,r??0)):e,{scope:i,unwrapped:a}}const G={LessThan:-1,EqualTo:0,GreaterThan:1};function ee(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 G.GreaterThan;if(i>t)return G.LessThan;if(!isNaN(t)&&isNaN(i))return G.GreaterThan;if(isNaN(t)&&!isNaN(i))return G.LessThan}return G.EqualTo}const K=ee(g,`3.5.0`)!==-1;function q(){return Math.floor(Math.random()*Date.now()).toString()}function J(){return typeof window>`u`?q():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function Y(e){return r()?(c(e),!0):!1}function X(e){let n=!1,r,i=t(!0);return((...t)=>(n||=(r=i.run(()=>e(...t)),!0),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=R(i._params),n=R(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 te=Symbol(`regle`),Q={REGLE_STATIC:`__regle_static`};function ne(e,t){return!oe(e.value)&&(U(e)||w(t.value)&&!b(t.value)&&!Object.entries(t.value).some(([e,t])=>$(t)||typeof t==`function`))}function re(e,t,n=!1){return!!e.value&&w(e.value)&&`$each`in e.value||n&&Array.isArray(t.value)||Array.isArray(t.value)&&t.value.some(w)}function ie(e){return!!e.value&&(w(e.value)||U(e.value))}function $(e){return w(e)&&`_validator`in e}function ae(e){return typeof e.value==`function`?`_validator`in e.value:!0}function oe(e){return w(e)&&D(e,Q.REGLE_STATIC)&&e[Q.REGLE_STATIC]===!0}function se(e){return w(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 w(e)&&`$each`in e}function fe(e,t){let{includePath:n=!1}=t??{};if(Array.isArray(e)&&e.every(e=>!w(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=>!w(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(()=>$(r.value)&&r.value._async),g=u(!1),{$pending:v,$valid:y,$metadata:x,$validating:S}=c.trySetRuleStatusRef(`${s}.${i}`);function C(){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:C.value,...x.value})),p=e(()=>{try{return ae(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),ae(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 b(e)&&(e=`This field is not valid`),e}),g=e(()=>m(`tooltip`)),_=e(()=>ae(r)&&r.value.type?r.value.type:i),S=e(()=>ae(r)?r.value.validator:r.value),C=e(()=>typeof r.value==`function`?[]:R(r.value._params??[]));return{$active:p,$message:h,$type:_,$validator:S,$params:C,$path:e(()=>`${o}.${_.value}`),$tooltip:g,$fieldCorrect:d,$fieldError:s,$fieldDirty:t,$fieldPending:l,$fieldInvalid:c}}),m=_(p?.$params,()=>{(!d.$silent.value||d.$rewardEarly.value&&p.$fieldError.value)&&E()})}C();function w(){y.value=!0,p.$fieldDirty.value&&(v.value=!0)}async function T(){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;w();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,x.value=n}}catch{e=!1}finally{v.value=!1}return e}async function E(){try{S.value=!0;let e=!1;if(g.value=!0,$(r.value)&&r.value._async)e=await T();else{let t=p.$validator.value,n=t(a.value,...p.$params.value);if(n instanceof Promise)console.warn(`You used a async validator function on a non-async rule, please use "async await" or the "withAsync" helper`);else if(n!=null)if(typeof n==`boolean`)e=n;else{let{$valid:t,...r}=n;e=t,x.value=r}}return y.value=e,e}catch{return!1}finally{S.value=!1,g.value=!1}}function D(){y.value=!0,x.value={},v.value=!1,S.value=!1,C()}function O(){m(),f.stop(),f=t()}return l({...p,$pending:v,$valid:y,$metadata:x,$haveAsync:h,$maybePending:g,$validating:S,$parse:E,$unwatch:O,$watch:C,$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:T,shortcuts:E,onValidate:D}){let O=t(),k,N=[],F,I,L,R,z=()=>{},B,V=u(!1);function H(){let e=r.value,t=c.checkRuleDeclEntry(o,e),s={};for(let t in e)t.startsWith(`$`)&&(s[t]=e[t]);Y.value=s,G();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:k.$silent,$rewardEarly:k.$rewardEarly},customMessages:i,rule:r,ruleKey:e,state:n,path:a,cachePath:o,storage:c,$debounce:Y.value.$debounce})])}J.value=Object.fromEntries(u),k.processShortcuts(),U(),t?.valid!=null&&(k.$dirty.value=c.getDirtyState(o),(k.$dirty.value&&!k.$silent.value||k.$rewardEarly.value&&k.$error.value)&&z()),c.addRuleDeclEntry(o,e)}function U(){z=k.$debounce.value>0?j(q,k.$debounce.value,{trackDebounceRef:V}):q}function W(){if(J.value)for(let e of Object.values(J.value))e.$unwatch();I(),R?.(),k.$dirty.value&&c.setDirtyEntry(o,k.$dirty.value),F?.(),O.stop(),O=t();for(let e of N)e.stop();N=[],y?.(),L?.()}function G(){if(J.value)for(let e of Object.values(J.value))e.$watch();k=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?k.$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),C=e(()=>Y.value.$rewardEarly==null?h(d.rewardEarly)==null?!1:h(d.rewardEarly):Y.value.$rewardEarly),w=e(()=>Y.value.$clearExternalErrorsOnChange==null?h(d.clearExternalErrorsOnChange)==null?!T.value:h(d.clearExternalErrorsOnChange):Y.value.$clearExternalErrorsOnChange),T=e(()=>C.value?!0:Y.value.$silent==null?h(d.silent)==null?!1:h(d.silent):Y.value.$silent),D=e(()=>Y.value.$autoDirty==null?h(d.autoDirty)==null?!0:h(d.autoDirty):Y.value.$autoDirty),O=e(()=>{for(let e of Object.values(J.value))if(e.$validating)return!0;return!1}),j=e({get:()=>n.value,set(e){F(),n.value=e,ee()}}),P=e(()=>V.value?K.value&&i.value:K.value&&!G.value&&i.value),I=e(()=>le({field:{$rules:J.value,$error:P.value,$externalErrors:p?.value,$schemaErrors:m?.value,fieldName:q.value}})),L=e(()=>le({field:{$rules:J.value,$error:P.value,$externalErrors:p?.value,$schemaErrors:m?.value,fieldName:q.value},silent:!0})),R=e(()=>I.value.map(e=>e.$message)),z=e(()=>L.value.map(e=>e.$message)),B=e(()=>i.value?S.value instanceof Date&&n.value instanceof Date?A(S.value).getDate()!==A(n.value).getDate():S.value==null?!!n.value:Array.isArray(n.value)&&Array.isArray(S.value)?!M(n.value,S.value,Y.value.$deepCompare):S.value!==n.value:!1),H=e(()=>B.value),U=e(()=>ue({field:{$rules:J.value}})),W=e(()=>(T.value||o.value)&&!(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||V.value)return!1;if(i.value&&!b(n.value)&&!O.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}),te=e(()=>Object.values(J.value).some(e=>e.$haveAsync)),Q=e(()=>({$debounce:f.value,$lazy:y.value,$rewardEarly:C.value,$autoDirty:D.value,$silent:T.value,$clearExternalErrorsOnChange:w.value}));function ne(){E?.fields&&Object.entries(E.fields).forEach(([e,r])=>{let a=t();re[e]=a.run(()=>{let e=u();return v(()=>{e.value=r(l({$dirty:i,$externalErrors:p?.value??[],$value:n,$silentValue:j,$rules:J,$error:P,$pending:G,$invalid:K,$correct:Z,$errors:R,$ready:W,$silentErrors:z,$anyDirty:o,$tooltips:U,$name:q,$inactive:X,$edited:B,$anyEdited:H}))}),e}),N.push(a)})}let re={};return{$error:P,$pending:G,$invalid:K,$correct:Z,$debounce:f,$deepCompare:_,$lazy:y,$ready:W,$issues:I,$silentIssues:L,$errors:R,$silentErrors:z,$rewardEarly:C,$autoDirty:D,$silent:T,$clearExternalErrorsOnChange:w,$anyDirty:o,$edited:B,$anyEdited:H,$name:q,$haveAnyAsyncRule:te,$shortcuts:re,$validating:O,$tooltips:U,$dirty:i,processShortcuts:ne,$silentValue:j,$inactive:X,$modifiers:Q,$isArrayOrRegleStatic:c}}),ee(),I=_(k.$dirty,e=>{c.setDirtyEntry(o,e),Object.values(J.value).forEach(t=>{t.$fieldDirty=e})}),R=_([k.$error,k.$correct,k.$invalid,k.$pending],()=>{Object.values(J.value).forEach(e=>{e.$fieldError=k.$error.value,e.$fieldInvalid=k.$invalid.value,e.$fieldPending=k.$pending.value,e.$fieldCorrect=k.$correct.value})}),L=_(k.$haveAnyAsyncRule,U)}function ee(){F=_(n,()=>{k.$autoDirty.value&&!k.$silent.value&&(k.$dirty.value||(k.$dirty.value=!0)),r.value instanceof Function&&H(),(!k.$silent.value||k.$rewardEarly.value&&k.$error.value)&&z(),k.$clearExternalErrorsOnChange.value&&$()},{deep:k.$isArrayOrRegleStatic.value?!0:K?1:!0})}async function q(){try{let{promise:e}=te(Promise.allSettled(Object.values(J.value).map(e=>e.$parse())));await e}catch{}}let J=u({}),Y=u({});H();function X(e,t){if(Z(),$(),k.$dirty.value=!1,c.setDirtyEntry(o,!1),!t)if(e?.toOriginalState)n.value=C(T),S.value=C(T);else if(e?.toInitialState)n.value=C(S.value);else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,S.value=C(t),n.value=C(t)}else S.value=w(n.value)?C(n.value):Array.isArray(n.value)?[...n.value]:n.value;if(e?.clearExternalErrors&&$(),!t&&!e?.keepValidationState)for(let e of Object.values(J.value))e.$reset();if(!k.$lazy.value&&!k.$silent.value&&!t)for(let e of Object.values(J.value))e.$parse()}function Z(){`cancel`in z&&z.cancel()}function te(e){return B&&B.abort(),B=P(e),B}function Q(){Z(),B&&B.abort()}function ne(e=!0,t=!1){k.$dirty.value||(k.$dirty.value=!0),t&&e?(!k.$silent.value||k.$rewardEarly.value&&k.$error.value)&&(Z(),z()):e&&(Z(),z())}async function re(e){try{if(e&&(n.value=e),g)return D?(ne(!1),D()):{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&&!V.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(b(J.value))return{valid:!0,data:t,errors:k.$errors.value,issues:k.$issues.value};Q();let{promise:r}=te(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:k.$errors.value,issues:k.$issues.value}}catch{return{valid:!1,data:n.value,errors:k.$errors.value,issues:k.$issues.value}}}function ie(e=!0){return k.$dirty.value?n.value:e?{_null:!0}:null}function $(){p?.value?.length&&(p.value=[])}!k.$lazy.value&&!k.$dirty.value&&!k.$silent.value&&q();let{$shortcuts:ae,$validating:se,$autoDirty:ce,$rewardEarly:de,$clearExternalErrorsOnChange:fe,$haveAnyAsyncRule:pe,$debounce:ge,$lazy:_e,...ve}=k;return l({...ve,$externalErrors:p,$value:n,$initialValue:S,$originalValue:T,$rules:J,...ae,$path:a,$isDebouncing:V,$reset:X,$touch:ne,$validate:re,$unwatch:W,$watch:G,$extractDirtyFields:ie,$clearExternalErrors:$,$abort:Q,$schemaMode:g,"~modifiers":k.$modifiers,...he(re)})}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:_}){let v=s.value?.$id??l.$key??J(),y=`${r}.${String(v)}`,b=`${n}.${i}`;typeof s.value==`object`&&s.value!=null&&(s.value.$id||Object.defineProperties(s.value,{$id:{value:v,enumerable:!1,configurable:!1,writable:!1}}));let x=f(u?.value??[],i),S=e(()=>d?.value?.[i]),C=be({index:i,state:s,rulesDef:f(()=>l),customMessages:c,path:b,cachePath:y,storage:o,options:a,externalErrors:x,schemaErrors:S,initialState:p,originalState:m,shortcuts:h,fieldName:g,schemaMode:_});return C&&(C.$id=s.value?.$id??String(v),o.addArrayStatus(t,C.$id,C)),s.value&&!w(s.value)&&_&&C?.$touch(),C}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:x,fieldName:S}){let w=t(),T,E=t(),D,O=[];if(!Array.isArray(n.value)&&!r.value.$each)return;let k=u(),A=u(n.value),j=u({}),M,N,P=u({}),F=s.getCollectionsEntry(a);D=E.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)})),I(),B();function I(){j.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=J(),Object.defineProperties(n.value,{$id:{value:k.value,enumerable:!1,configurable:!1,writable:!1}})):n.value?.$id&&(k.value=n.value.$id)),A.value=P.value.$value,Array.isArray(n.value)&&(!D.isPrimitiveArray.value||m)?F.value=n.value.map((t,n)=>{let{scope:l,unwrapped:u}=W(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: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:x,fieldName:S,schemaMode:m})||null}).filter(e=>!!e):F.value=[],P.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:x,fieldName:S,schemaMode:m})}function L(){if(Array.isArray(n.value)&&(!D.isPrimitiveArray.value||m)){let t=C(F.value);F.value=n.value.map((t,n)=>{let o=f(()=>t);if(t.$id&&F.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}=W(r.value.$each,o,n);t&&O.push(t);let u=f(d?.value??{},`$each`),h=e(()=>p?.value?.$each??[]);return _e({$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:x,fieldName:S,schemaMode:m})||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 F.value=[]}function R(){M=_(n,()=>{N?.(),n.value!=null&&!Object.hasOwn(n.value,`$id`)&&!k.value?I():L(),z()},{deep:K?1:!0,flush:`pre`}),z()}function z(){N=_(n,()=>{T.$autoDirty.value&&!T.$silent.value&&P.value.$touch(!1,!0)},{flush:`post`})}function B(){R(),w=t(),T=w.run(()=>{let r=e({get:()=>n.value,set(e){M?.(),N?.(),n.value=e,R()}}),i=e(()=>P.value.$dirty&&(!F.value.length||F.value.every(e=>e.$dirty))),o=e(()=>P.value.$anyDirty||F.value.some(e=>e.$anyDirty)),s=e(()=>P.value.$invalid||F.value.some(e=>e.$invalid)),d=e(()=>(m?P.value.$correct:b(P.value.$rules)?!0:P.value.$correct)&&(!F.value.length||F.value.every(e=>e.$correct||e.$anyDirty&&!e.$invalid))),f=e(()=>P.value.$error||F.value.some(e=>e.$error)),p=e(()=>!(s.value||_.value)),_=e(()=>P.value.$pending||F.value.some(e=>e.$pending)),C=e(()=>!!F.value.length&&F.value.every(e=>e.$edited)),w=e(()=>P.value.$anyEdited||F.value.some(e=>e.$anyEdited)),T=e(()=>({$self:P.value.$issues,$each:F.value.map(e=>e.$issues)})),E=e(()=>({$self:P.value.$errors,$each:F.value.map(e=>e.$errors)})),D=e(()=>({$self:P.value.$silentErrors,$each:F.value.map(e=>e.$silentErrors)})),k=e(()=>j.value.$rewardEarly==null?h(c.rewardEarly)==null?!1:h(c.rewardEarly):j.value.$rewardEarly),A=e(()=>k.value?!0:j.value.$silent==null?h(c.silent)==null?!1:h(c.silent):j.value.$silent),I=e(()=>j.value.$autoDirty==null?h(c.autoDirty)==null?!0:h(c.autoDirty):j.value.$autoDirty),L=e(()=>S??c.id??`root`),z=e(()=>({$deepCompare:j.value.$deepCompare??!1,$lazy:j.value.$lazy??!1,$rewardEarly:k.value,$autoDirty:I.value,$silent:A.value,$clearExternalErrorsOnChange:j.value.$clearExternalErrorsOnChange??!1}));function B(){x?.collections&&Object.entries(x?.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:E,$silentErrors:D,$initialValue:g,$originalValue:y,$ready:p,$anyDirty:o,$name:L,$each:F,$self:P,$value:n,$edited:C,$anyEdited:w,$issues:T}))}),e}),O.push(m)})}let V={};return B(),{$dirty:i,$anyDirty:o,$invalid:s,$correct:d,$error:f,$pending:_,$errors:E,$silentErrors:D,$ready:p,$name:L,$shortcuts:V,$silentValue:r,$edited:C,$anyEdited:w,$rewardEarly:k,$silent:A,$autoDirty:I,$issues:T,$modifiers:z}}),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 V(){M?.(),P.value&&P.value.$unwatch(),F.value&&F.value.forEach(e=>{`$dirty`in e&&e.$unwatch()}),w.stop(),w=t(),E.stop(),E=t(!0),O.forEach(e=>e.stop()),O=[]}function H(e=!0,t=!1){P.value.$touch(e,t),F.value.forEach(n=>{n.$touch(e,t)})}function U(e,t){if(V(),!t)if(e?.toOriginalState)n.value=C(y),g.value=C(y);else if(e?.toInitialState)n.value=C(g.value);else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,g.value=C(t),n.value=C(t)}else g.value=C(n.value);e?.clearExternalErrors&&q(),e?.keepValidationState||(P.value.$reset(e,t),F.value.forEach(t=>{t.$reset(e,!0)})),t||I()}function G(){P.value.$abort(),F.value.forEach(e=>{e.$abort()})}async function ee(e){e&&(n.value=e);let t=n.value;try{return G(),{valid:(await Promise.allSettled([P.value.$validate(e),...F.value.map(e=>e.$validate())])).every(e=>e.status===`fulfilled`?e.value.valid===!0:!1),data:t,errors:T.$errors.value,issues:T.$issues.value}}catch{return{valid:!1,data:t,errors:T.$errors.value,issues:T.$issues.value}}}function q(){P.value.$clearExternalErrors(),F.value.forEach(e=>{e.$clearExternalErrors()})}function Y(e=!0){let t=F.value.map(t=>{if(se(t))return t.$extractDirtyFields(e)});return e&&t.every(e=>b(e))&&(t=[]),t}let{$shortcuts:X,...Z}=T;return l({$self:P,...Z,...X,$path:a,$each:F,$value:n,$initialValue:g,$originalValue:y,$validate:ee,$unwatch:V,$watch:B,$touch:H,$reset:U,$abort:G,$extractDirtyFields:Y,$clearExternalErrors:q,"~modifiers":T.$modifiers,...he(ee)})}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(),T,E=[],D=null,O=null,k=null,A=null;async function j(t=!0){let o=Object.entries(n.value),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})]}));M.value={...l,...u,...d,...p},t&&F()}let M=x.storage.getFieldsEntry(a);j();function N(){s&&(k=_(s,()=>{R(),j()},{deep:!0}))}function P(){A=_(r,()=>{R(),j(),T.$autoDirty.value&&!T.$silent.value&&V(!1,!0)},{flush:`post`})}function F(){o&&(D?.(),D=_(o,()=>{R(),j()},{deep:!0,flush:`pre`}),N()),d&&(O?.(),O=_(d,()=>{R(),j()},{deep:!0,flush:`post`})),P(),T=S.run(()=>{let n=e({get:()=>r.value,set(e){R(),r.value=e,j(),T.$autoDirty.value&&!T.$silent.value&&V(!1,!0)}}),a=e({get:()=>r.value,set(e){R(),r.value=e,j()}}),o=e(()=>{let e=M.value,t=Object.keys(e);if(!t.length)return!1;for(let n of t)if(!e[n]?.$dirty)return!1;return!0}),s=e(()=>{let e=M.value;for(let t in e)if(e[t]?.$anyDirty)return!0;return!1}),c=e(()=>{let e=M.value,t=Object.entries(e);if(!t.length)return!1;for(let[e,n]of t)if(n?.$invalid)return!0;return!1}),d=e(()=>{let e=Object.entries(M.value).reduce((e,[t,n])=>((!ce(n)||!n.$inactive)&&e.push([t,n]),e),[]);return e.length?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):!1}),f=e(()=>{let e=M.value;if(!Object.keys(e).length)return!1;for(let t in e)if(e[t]?.$error)return!0;return!1}),_=e(()=>h(x.options.rewardEarly)==null?!1:h(x.options.rewardEarly)),b=e(()=>h(x.options.silent)==null?!!_.value:h(x.options.silent)),S=e(()=>h(x.options.autoDirty)==null?!0:h(x.options.autoDirty)),C=e(()=>(b.value||s.value)&&!(c.value||D.value)),w=u(!1),D=e(()=>{if(w.value)return!0;let e=M.value;for(let t in e)if(e[t]?.$pending)return!0;return!1}),O=e(()=>{let e={};for(let t in M.value)e[t]=M.value[t]?.$issues;return e}),k=e(()=>{let e={};for(let t in M.value)e[t]=M.value[t]?.$errors;return e}),A=e(()=>{let e={};for(let t in M.value)e[t]=M.value[t]?.$silentErrors;return e}),N=e(()=>{if(!Object.keys(M.value).length)return!1;for(let e in M.value)if(!M.value[e]?.$edited)return!1;return!0}),P=e(()=>{for(let e in M.value)if(M.value[e]?.$anyEdited)return!0;return!1}),F=e(()=>y??x.options.id??`root`),z=e(()=>({autoDirty:S.value,lazy:h(x.options.lazy)??!1,rewardEarly:_.value,silent:b.value,clearExternalErrorsOnChange:h(x.options.clearExternalErrorsOnChange)??!1,id:h(x.options.id)}));function B(){x.shortcuts?.nested&&Object.entries(x.shortcuts.nested).forEach(([e,n])=>{let p=t();U[e]=p.run(()=>{let e=u();return v(()=>{e.value=n(l({$dirty:o,$path:i,$value:r,$silentValue:a,$error:f,$originalValue:g,$pending:D,$invalid:c,$correct:d,$ready:C,$anyDirty:s,$name:F,$silentErrors:A,$initialValue:m,$errors:k,$fields:M,$edited:N,$anyEdited:P,$issues:O,"~modifiers":h(x.options)}))}),e}),E.push(p)})}let H=e({get:()=>p?Object.fromEntries(Object.entries(p?.(M.value)??{}).map(([e,t])=>t.length?[e,{...Object.fromEntries([`$invalid`,`$error`,`$pending`,`$dirty`,`$correct`].map(e=>[e,I(t,e)])),...Object.fromEntries([`$errors`,`$silentErrors`].map(e=>[e,L(t,e)]))}]:[])):{},set(){}}),U={};return B(),{$dirty:o,$anyDirty:s,$invalid:c,$correct:d,$error:f,$pending:D,$issues:O,$errors:k,$silentErrors:A,$ready:C,$name:F,$shortcuts:U,$groups:H,$silentValue:a,$edited:N,$anyEdited:P,$localPending:w,$autoDirty:S,$silent:b,$value:n,$modifiers:z}})}function R(){if(D?.(),k?.(),A?.(),O?.(),E=[],T={},M.value)for(let e of Object.values(M.value))e?.$unwatch()}function z(){let e=M.value;for(let t of Object.values(e))t.$clearExternalErrors()}function B(e,t){if(k?.(),R(),!t)if(e?.toOriginalState)r.value=C({...g}),m.value=C({...g});else if(e?.toInitialState)r.value=C({...m.value});else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,m.value=C(t),r.value=C(t)}else m.value=C(r.value);if(!e?.keepValidationState)for(let t of Object.values(M.value))t?.$reset(e,!0);e?.clearExternalErrors&&z(),N(),t||j()}function V(e=!0,t=!1){for(let n of Object.values(M.value))n?.$touch(e,t)}function H(e){return e.filter(([e,t])=>w(t)?!(t&&typeof t==`object`&&`_null`in t)&&!b(t):Array.isArray(t)?t.length:!0)}function U(e=!0){let t=Object.entries(M.value).map(([t,n])=>[t,n.$extractDirtyFields(e)]);return e&&(t=H(t)),Object.fromEntries(t)}function W(){for(let e of Object.values(M.value))e.$abort()}async function G(e){try{if(e&&(r.value=e),x.schemaMode)return x.onValidate?(V(!1),T.$localPending.value=!0,x.onValidate()):{valid:!1,data:r.value,errors:T.$errors.value,issues:T.$issues.value};{let e=r.value;return W(),{valid:(await Promise.allSettled(Object.values(M.value).map(e=>e.$validate()))).every(e=>e.status===`fulfilled`&&e?.value.valid===!0),data:e,errors:T.$errors.value,issues:T.$issues.value}}}catch{return{valid:!1,data:r.value,errors:T.$errors.value,issues:T.$issues.value}}finally{T.$localPending.value=!1}}let{$shortcuts:ee,$localPending:K,...q}=T,J=l({...q,...ee,$path:i,$initialValue:m,$originalValue:g,$fields:M,$reset:B,$touch:V,$validate:G,$unwatch:R,$watch:F,$clearExternalErrors:z,$extractDirtyFields:U,$abort:W,...o?{"~modifiers":T.$modifiers}:{},...he(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(M.value))e?.$name&&Object.assign(J,{[e.$name]:e})}),J}function be({rulesDef:e,...n}){if(re(e,n.state,n.schemaMode))return ve({rulesDef:e,...n});if(ne(n.state,e)){if(U(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(ie(e))return ge({rulesDef:i(e.value)?e.value:e,...n})}var xe=`1.13.0`;function Se({initialState:e,originalState:t,options:n,scopeRules:i,state:a,customRules:o,shortcuts:s,schemaErrors:d,schemaMode:f=!1,onValidate:p}){let m=Z(),h=u(),g=u(),v,y;function b(){v=_(()=>n.externalErrors?.value,()=>{y?.(),n.externalErrors?.value&&Object.keys(n.externalErrors.value).some(e=>e.includes(`.`))?g.value=E(n.externalErrors.value):g.value=n.externalErrors?.value,x()},{immediate:!0,deep:!0})}function x(){y=_(()=>g.value,()=>{v?.(),n.externalErrors?.value&&(n.externalErrors.value=g.value),b()},{deep:!0})}return b(),ne(a,i)?h.value=ye({rootRules:i,rulesDef:i,state:a,customMessages:o?.(),storage:m,options:n,externalErrors:g,validationGroups:n.validationGroups,initialState:e,originalState:t,shortcuts:s,fieldName:void 0,path:``,cachePath:``,schemaErrors:d,rootSchemaErrors:d,schemaMode:f,onValidate:p}):ie(i)&&(h.value=ge({rulesDef:i,state:a,customMessages:o?.(),storage:m,options:n,externalErrors:g,initialState:e,originalState:t,shortcuts:s,fieldName:void 0,path:``,cachePath:``,schemaMode:f,schemaErrors:d,onValidate:p})),r()&&c(()=>{h.value?.$unwatch(),y?.(),v?.()}),l({regle:h})}function Ce({state:t,rulesFactory:n,options:r,globalOptions:a,customRules:o,shortcuts:s}){let c=i(n)?n:typeof n==`function`?void 0:e(()=>n),l={...a,...r},f,p=d(c??{});typeof n==`function`&&(f=v(()=>{p.value=n(t),m(p)}));let h=u(w(t.value)?{...C(t.value)}:C(t.value)),g=w(t.value)?{...C(t.value)}:C(t.value);return Y(()=>{f?.()}),Se({scopeRules:p,state:t,options:l,initialState:h,originalState:g,customRules:o,shortcuts:s})}function we(e,t,n){let r={autoDirty:t?.autoDirty,lazy:t?.lazy,rewardEarly:t?.rewardEarly,silent:t?.silent,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange};function a(t,a,o){return{r$:Ce({state:i(t)?t:u(t),rulesFactory:a,options:o,globalOptions:r,customRules:e,shortcuts:n}).regle}}return a}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])=>$(t)||typeof t==`function`))return null;for(let n in e){let r=e[n];r&&w(r)&&`$each`in r&&r.$each&&w(r.$each)?t[n]=[Oe(r.$each)]:w(r)&&!b(r)&&!Object.entries(r).some(([e,t])=>$(t)||typeof t==`function`)?t[n]=Oe(r):t[n]=null}return t}function ke(t,n,r){let a={autoDirty:n?.autoDirty,lazy:n?.lazy,rewardEarly:n?.rewardEarly,silent:n?.silent,clearExternalErrorsOnChange:n?.clearExternalErrorsOnChange};function o(n,o){let s=i(n)?n:typeof n==`function`?void 0:e(()=>n);return Ce({state:u(Oe(s?.value)),rulesFactory:s,options:o,globalOptions:a,customRules:t,shortcuts:r}).regle}return o}const Ae=ke();function je(e){if(k(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!D(e,Q.REGLE_STATIC)&&Object.isExtensible(e)&&O(e,Q.REGLE_STATIC,!0),e}function Ne({rules:e,modifiers:t,shortcuts:n}){let r=we(e,t,n),i=ke(e,t,n);return r.__config={rules:e,modifiers:t,shortcuts:n},i.__config={rules:e,modifiers:t,shortcuts:n},{useRegle:r,inferRules:Ee(),useRules:i}}function Pe(e,{rules:t,modifiers:n,shortcuts:r}){let i=e.__config??{},a=()=>({...i.rules?.(),...t?.()}),o=i.modifiers&&n?T(i.modifiers,n):i.modifiers??n,s=i.shortcuts&&r?T(i.shortcuts,r):i.shortcuts??r,c=we(a,o,s);return c.__config={rules:a,modifiers:o,shortcuts:s},{useRegle:c,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}-${J()}`),v=e(()=>m.value??`instance-${g.value}`),{r$:y}=i(r,a,{...f,id:m.value});x(),Y(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):X(()=>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();function Ve(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=>w(e[n])&&!Object.keys(e[n]).some(e=>e===`literal`))||{})}function He(e,t,n){return!!e&&w(e[t])&&`$value`in e[t]&&e[t]?.$value===n}function Ue(e,t,n,r){let a=i(e)?f(e.value,`$fields`):f(e,`$fields`),s=u();return _(a,async()=>{await o(),He(a.value,t,n)?s.value=f(e).value:s.value=void 0},{immediate:!0,flush:`pre`}),s}function We(e){return e}function Ge(e,t){return n=>T({...e},t(n))}const Ke={install(e){e.provide(te,xe)}};export{F as InternalRuleType,Ke as RegleVuePlugin,H as createRule,Re as createScopedUseRegle,Ve as createVariant,Ne as defineRegleConfig,We as defineRules,Pe as extendRegleConfig,fe as flatErrors,De as inferRules,je as markStatic,Fe as mergeRegles,He as narrowVariant,Ge as refineRules,R as unwrapRuleParameters,ze as useCollectScope,Te as useRegle,Se as useRootStorage,Ae as useRules,Be as useScopedRegle,Ue as variantToRef};
|
|
1
|
+
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`||e?.constructor?.name==`FileList`}function b(e,t=!0){return e==null?!0:e instanceof Date?isNaN(e.getTime()):y(e)?e.size<=0:Array.isArray(e)?t?e.length===0:!1:typeof e==`object`&&e?Object.keys(e).length===0:!String(e).length}const x=Symbol(`regle-rule`);function S(e){if(typeof e.source.flags==`string`)return e.source.flags;{let t=[];return e.global&&t.push(`g`),e.ignoreCase&&t.push(`i`),e.multiline&&t.push(`m`),e.sticky&&t.push(`y`),e.unicode&&t.push(`u`),t.join(``)}}function C(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=>C(e,t++)))),r==`Map`&&(n=new Map([...e].map(e=>[C(e[0]),C(e[1])]))),r==`Date`&&(n=new Date(e.getTime())),r==`RegExp`&&(n=RegExp(e.source,S(e))),r==`Array`||r==`Object`)for(let r in n=Array.isArray(e)?[]:{},e)n[r]=C(e[r],t++);return n}function w(e){return e&&(e instanceof Date||e.constructor.name==`File`||e.constructor.name==`FileList`)?!1:typeof e==`object`&&!!e&&!Array.isArray(e)}function T(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 E(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 D(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function O(e,t,n,r=!1){Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})}function k(e){return typeof e==`function`&&!!e.prototype&&`constructor`in e.prototype&&e.prototype.constructor===e}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(w(e)&&w(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)=>{if(n.aborted){r(new N);return}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:x})}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 w(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 ee(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 W=ee(g,`3.5.0`)!==-1;function G(){return Math.floor(Math.random()*Date.now()).toString()}function K(){return typeof window>`u`?G():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function q(e){return r()?(c(e),!0):!1}function J(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=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 te=Symbol(`regle`),Q={REGLE_STATIC:`__regle_static`};function ne(e,t){return!oe(e.value)&&(V(e)||w(t.value)&&!b(t.value)&&!Object.entries(t.value).some(([e,t])=>$(t)||typeof t==`function`))}function re(e,t,n=!1){return!!e.value&&w(e.value)&&`$each`in e.value||n&&Array.isArray(t.value)||Array.isArray(t.value)&&t.value.some(w)}function ie(e){return!!e.value&&(w(e.value)||V(e.value))}function $(e){return w(e)&&`_validator`in e}function ae(e){return typeof e.value==`function`?`_validator`in e.value:!0}function oe(e){return w(e)&&D(e,Q.REGLE_STATIC)&&e[Q.REGLE_STATIC]===!0}function se(e){return w(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 w(e)&&`$each`in e}function fe(e,t){let{includePath:n=!1}=t??{};if(Array.isArray(e)&&e.every(e=>!w(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=>!w(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(()=>$(r.value)&&r.value._async),g=u(!1),{$pending:v,$valid:y,$metadata:x,$validating:S}=c.trySetRuleStatusRef(`${s}.${i}`);function C(){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:C.value,...x.value})),p=e(()=>{try{return ae(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),ae(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 b(e)&&(e=`This field is not valid`),e}),g=e(()=>m(`tooltip`)),_=e(()=>ae(r)&&r.value.type?r.value.type:i),S=e(()=>ae(r)?r.value.validator:r.value),C=e(()=>typeof r.value==`function`?[]:I(r.value._params??[]));return{$active:p,$message:h,$type:_,$validator:S,$params:C,$path:e(()=>`${o}.${_.value}`),$tooltip:g,$fieldCorrect:d,$fieldError:s,$fieldDirty:t,$fieldPending:l,$fieldInvalid:c}}),m=_(p?.$params,()=>{(!d.$silent.value||d.$rewardEarly.value&&p.$fieldError.value)&&E()})}C();function w(){y.value=!0,p.$fieldDirty.value&&(v.value=!0)}async function T(){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;w();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,x.value=n}}catch{e=!1}finally{v.value=!1}return e}async function E(){try{S.value=!0;let e=!1;if(g.value=!0,$(r.value)&&r.value._async)e=await T();else{let t=p.$validator.value,n=t(a.value,...p.$params.value);if(n instanceof Promise)console.warn(`You used a async validator function on a non-async rule, please use "async await" or the "withAsync" helper`);else if(n!=null)if(typeof n==`boolean`)e=n;else{let{$valid:t,...r}=n;e=t,x.value=r}}return y.value=e,e}catch{return!1}finally{S.value=!1,g.value=!1}}function D(){y.value=!0,x.value={},v.value=!1,S.value=!1,C()}function O(){m(),f.stop(),f=t()}return l({...p,$pending:v,$valid:y,$metadata:x,$haveAsync:h,$maybePending:g,$validating:S,$parse:E,$unwatch:O,$watch:C,$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:T,shortcuts:E,onValidate:D}){let O=t(),k,N=[],F,I,L,R,z=()=>{},B,V=u(!1);function H(){let e=r.value,t=c.checkRuleDeclEntry(o,e),s={};for(let t in e)t.startsWith(`$`)&&(s[t]=e[t]);Y.value=s,G();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:k.$silent,$rewardEarly:k.$rewardEarly},customMessages:i,rule:r,ruleKey:e,state:n,path:a,cachePath:o,storage:c,$debounce:Y.value.$debounce})])}J.value=Object.fromEntries(u),k.processShortcuts(),U(),t?.valid!=null&&(k.$dirty.value=c.getDirtyState(o),(k.$dirty.value&&!k.$silent.value||k.$rewardEarly.value&&k.$error.value)&&z()),c.addRuleDeclEntry(o,e)}function U(){z=k.$debounce.value>0?j(q,k.$debounce.value,{trackDebounceRef:V}):q}function ee(){if(J.value)for(let e of Object.values(J.value))e.$unwatch();I(),R?.(),k.$dirty.value&&c.setDirtyEntry(o,k.$dirty.value),F?.(),O.stop(),O=t();for(let e of N)e.stop();N=[],y?.(),L?.()}function G(){if(J.value)for(let e of Object.values(J.value))e.$watch();k=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?k.$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),C=e(()=>Y.value.$rewardEarly==null?h(d.rewardEarly)==null?!1:h(d.rewardEarly):Y.value.$rewardEarly),w=e(()=>Y.value.$clearExternalErrorsOnChange==null?h(d.clearExternalErrorsOnChange)==null?!T.value:h(d.clearExternalErrorsOnChange):Y.value.$clearExternalErrorsOnChange),T=e(()=>C.value?!0:Y.value.$silent==null?h(d.silent)==null?!1:h(d.silent):Y.value.$silent),D=e(()=>Y.value.$autoDirty==null?h(d.autoDirty)==null?!0:h(d.autoDirty):Y.value.$autoDirty),O=e(()=>{for(let e of Object.values(J.value))if(e.$validating)return!0;return!1}),j=e({get:()=>n.value,set(e){F(),n.value=e,K()}}),P=e(()=>V.value?G.value&&i.value:G.value&&!W.value&&i.value),I=e(()=>le({field:{$rules:J.value,$error:P.value,$externalErrors:p?.value,$schemaErrors:m?.value,fieldName:q.value}})),L=e(()=>le({field:{$rules:J.value,$error:P.value,$externalErrors:p?.value,$schemaErrors:m?.value,fieldName:q.value},silent:!0})),R=e(()=>I.value.map(e=>e.$message)),z=e(()=>L.value.map(e=>e.$message)),B=e(()=>i.value?S.value instanceof Date&&n.value instanceof Date?A(S.value).getDate()!==A(n.value).getDate():S.value==null?!!n.value:Array.isArray(n.value)&&Array.isArray(S.value)?!M(n.value,S.value,Y.value.$deepCompare):S.value!==n.value:!1),H=e(()=>B.value),U=e(()=>ue({field:{$rules:J.value}})),ee=e(()=>!(G.value||W.value)),W=e(()=>a.value||!C.value?Object.entries(J.value).some(([e,t])=>t.$pending):!1),G=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||V.value)return!1;if(i.value&&!b(n.value)&&!O.value&&!W.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}),te=e(()=>Object.values(J.value).some(e=>e.$haveAsync)),Q=e(()=>({$debounce:f.value,$lazy:y.value,$rewardEarly:C.value,$autoDirty:D.value,$silent:T.value,$clearExternalErrorsOnChange:w.value}));function ne(){E?.fields&&Object.entries(E.fields).forEach(([e,r])=>{let a=t();re[e]=a.run(()=>{let e=u();return v(()=>{e.value=r(l({$dirty:i,$externalErrors:p?.value??[],$value:n,$silentValue:j,$rules:J,$error:P,$pending:W,$invalid:G,$correct:Z,$errors:R,$ready:ee,$silentErrors:z,$anyDirty:o,$tooltips:U,$name:q,$inactive:X,$edited:B,$anyEdited:H}))}),e}),N.push(a)})}let re={};return{$error:P,$pending:W,$invalid:G,$correct:Z,$debounce:f,$deepCompare:_,$lazy:y,$ready:ee,$issues:I,$silentIssues:L,$errors:R,$silentErrors:z,$rewardEarly:C,$autoDirty:D,$silent:T,$clearExternalErrorsOnChange:w,$anyDirty:o,$edited:B,$anyEdited:H,$name:q,$haveAnyAsyncRule:te,$shortcuts:re,$validating:O,$tooltips:U,$dirty:i,processShortcuts:ne,$silentValue:j,$inactive:X,$modifiers:Q,$isArrayOrRegleStatic:c}}),K(),I=_(k.$dirty,e=>{c.setDirtyEntry(o,e),Object.values(J.value).forEach(t=>{t.$fieldDirty=e})}),R=_([k.$error,k.$correct,k.$invalid,k.$pending],()=>{Object.values(J.value).forEach(e=>{e.$fieldError=k.$error.value,e.$fieldInvalid=k.$invalid.value,e.$fieldPending=k.$pending.value,e.$fieldCorrect=k.$correct.value})}),L=_(k.$haveAnyAsyncRule,U)}function K(){F=_(n,()=>{k.$autoDirty.value&&!k.$silent.value&&(k.$dirty.value||(k.$dirty.value=!0)),r.value instanceof Function&&H(),(!k.$silent.value||k.$rewardEarly.value&&k.$error.value)&&z(),k.$clearExternalErrorsOnChange.value&&$()},{deep:k.$isArrayOrRegleStatic.value?!0:W?1:!0})}async function q(){try{let{promise:e}=te(Promise.allSettled(Object.values(J.value).map(e=>e.$parse())));await e}catch{}}let J=u({}),Y=u({});H();function X(e,t){if(Z(),$(),k.$dirty.value=!1,c.setDirtyEntry(o,!1),!t)if(e?.toOriginalState)n.value=C(T),S.value=C(T);else if(e?.toInitialState)n.value=C(S.value);else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,S.value=C(t),n.value=C(t)}else S.value=w(n.value)?C(n.value):Array.isArray(n.value)?[...n.value]:n.value;if(e?.clearExternalErrors&&$(),!t&&!e?.keepValidationState)for(let e of Object.values(J.value))e.$reset();if(!k.$lazy.value&&!k.$silent.value&&!t)for(let e of Object.values(J.value))e.$parse()}function Z(){`cancel`in z&&z.cancel()}function te(e){return B&&B.abort(),B=P(e),B}function Q(){Z(),B&&B.abort()}function ne(e=!0,t=!1){k.$dirty.value||(k.$dirty.value=!0),t&&e?(!k.$silent.value||k.$rewardEarly.value&&k.$error.value)&&(Z(),z()):e&&(Z(),z())}async function re(e){try{if(e&&(n.value=e),g)return D?(ne(!1),D()):{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&&!V.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(b(J.value))return{valid:!0,data:t,errors:k.$errors.value,issues:k.$issues.value};Q();let{promise:r}=te(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:k.$errors.value,issues:k.$issues.value}}catch{return{valid:!1,data:n.value,errors:k.$errors.value,issues:k.$issues.value}}}function ie(e=!0){return k.$dirty.value?n.value:e?{_null:!0}:null}function $(){p?.value?.length&&(p.value=[])}!k.$lazy.value&&!k.$dirty.value&&!k.$silent.value&&q();let{$shortcuts:ae,$validating:se,$autoDirty:ce,$rewardEarly:de,$clearExternalErrorsOnChange:fe,$haveAnyAsyncRule:pe,$debounce:ge,$lazy:_e,...ve}=k;return l({...ve,$externalErrors:p,$value:n,$initialValue:S,$originalValue:T,$rules:J,...ae,$path:a,$isDebouncing:V,$reset:X,$touch:ne,$validate:re,$unwatch:ee,$watch:G,$extractDirtyFields:ie,$clearExternalErrors:$,$abort:Q,$schemaMode:g,"~modifiers":k.$modifiers,...he(re)})}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:_}){let v=s.value?.$id??l.$key??K(),y=`${r}.${String(v)}`,b=`${n}.${i}`;typeof s.value==`object`&&s.value!=null&&(s.value.$id||Object.defineProperties(s.value,{$id:{value:v,enumerable:!1,configurable:!1,writable:!1}}));let x=f(u?.value??[],i),S=e(()=>d?.value?.[i]),C=be({index:i,state:s,rulesDef:f(()=>l),customMessages:c,path:b,cachePath:y,storage:o,options:a,externalErrors:x,schemaErrors:S,initialState:p,originalState:m,shortcuts:h,fieldName:g,schemaMode:_});return C&&(C.$id=s.value?.$id??String(v),o.addArrayStatus(t,C.$id,C)),s.value&&!w(s.value)&&_&&C?.$touch(),C}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:x,fieldName:S}){let w=t(),T,E=t(),D,O=[];if(!Array.isArray(n.value)&&!r.value.$each)return;let k=u(),A=u(n.value),j=u({}),M,N,P=u({}),F=s.getCollectionsEntry(a);D=E.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)})),I(),B();function I(){j.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=K(),Object.defineProperties(n.value,{$id:{value:k.value,enumerable:!1,configurable:!1,writable:!1}})):n.value?.$id&&(k.value=n.value.$id)),A.value=P.value.$value,Array.isArray(n.value)&&(!D.isPrimitiveArray.value||m)?F.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: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:x,fieldName:S,schemaMode:m})||null}).filter(e=>!!e):F.value=[],P.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:x,fieldName:S,schemaMode:m})}function L(){if(Array.isArray(n.value)&&(!D.isPrimitiveArray.value||m)){let t=C(F.value);F.value=n.value.map((t,n)=>{let o=f(()=>t);if(t.$id&&F.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}=H(r.value.$each,o,n);t&&O.push(t);let u=f(d?.value??{},`$each`),h=e(()=>p?.value?.$each??[]);return _e({$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:x,fieldName:S,schemaMode:m})||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 F.value=[]}function R(){M=_(n,()=>{N?.(),n.value!=null&&!Object.hasOwn(n.value,`$id`)&&!k.value?I():L(),z()},{deep:W?1:!0,flush:`pre`}),z()}function z(){N=_(n,()=>{T.$autoDirty.value&&!T.$silent.value&&P.value.$touch(!1,!0)},{flush:`post`})}function B(){R(),w=t(),T=w.run(()=>{let r=e({get:()=>n.value,set(e){M?.(),N?.(),n.value=e,R()}}),i=e(()=>P.value.$dirty&&(!F.value.length||F.value.every(e=>e.$dirty))),o=e(()=>P.value.$anyDirty||F.value.some(e=>e.$anyDirty)),s=e(()=>P.value.$invalid||F.value.some(e=>e.$invalid)),d=e(()=>(m?P.value.$correct:b(P.value.$rules)?!0:P.value.$correct)&&(!F.value.length||F.value.every(e=>e.$correct||e.$anyDirty&&!e.$invalid))),f=e(()=>P.value.$error||F.value.some(e=>e.$error)),p=e(()=>!(s.value||_.value)),_=e(()=>P.value.$pending||F.value.some(e=>e.$pending)),C=e(()=>!!F.value.length&&F.value.every(e=>e.$edited)),w=e(()=>P.value.$anyEdited||F.value.some(e=>e.$anyEdited)),T=e(()=>({$self:P.value.$issues,$each:F.value.map(e=>e.$issues)})),E=e(()=>({$self:P.value.$errors,$each:F.value.map(e=>e.$errors)})),D=e(()=>({$self:P.value.$silentErrors,$each:F.value.map(e=>e.$silentErrors)})),k=e(()=>j.value.$rewardEarly==null?h(c.rewardEarly)==null?!1:h(c.rewardEarly):j.value.$rewardEarly),A=e(()=>k.value?!0:j.value.$silent==null?h(c.silent)==null?!1:h(c.silent):j.value.$silent),I=e(()=>j.value.$autoDirty==null?h(c.autoDirty)==null?!0:h(c.autoDirty):j.value.$autoDirty),L=e(()=>S??c.id??`root`),z=e(()=>({$deepCompare:j.value.$deepCompare??!1,$lazy:j.value.$lazy??!1,$rewardEarly:k.value,$autoDirty:I.value,$silent:A.value,$clearExternalErrorsOnChange:j.value.$clearExternalErrorsOnChange??!1}));function B(){x?.collections&&Object.entries(x?.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:E,$silentErrors:D,$initialValue:g,$originalValue:y,$ready:p,$anyDirty:o,$name:L,$each:F,$self:P,$value:n,$edited:C,$anyEdited:w,$issues:T}))}),e}),O.push(m)})}let V={};return B(),{$dirty:i,$anyDirty:o,$invalid:s,$correct:d,$error:f,$pending:_,$errors:E,$silentErrors:D,$ready:p,$name:L,$shortcuts:V,$silentValue:r,$edited:C,$anyEdited:w,$rewardEarly:k,$silent:A,$autoDirty:I,$issues:T,$modifiers:z}}),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 V(){M?.(),P.value&&P.value.$unwatch(),F.value&&F.value.forEach(e=>{`$dirty`in e&&e.$unwatch()}),w.stop(),w=t(),E.stop(),E=t(!0),O.forEach(e=>e.stop()),O=[]}function U(e=!0,t=!1){P.value.$touch(e,t),F.value.forEach(n=>{n.$touch(e,t)})}function ee(e,t){if(V(),!t)if(e?.toOriginalState)n.value=C(y),g.value=C(y);else if(e?.toInitialState)n.value=C(g.value);else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,g.value=C(t),n.value=C(t)}else g.value=C(n.value);e?.clearExternalErrors&&J(),e?.keepValidationState||(P.value.$reset(e,t),F.value.forEach(t=>{t.$reset(e,!0)})),t||I()}function G(){P.value.$abort(),F.value.forEach(e=>{e.$abort()})}async function q(e){e&&(n.value=e);let t=n.value;try{return G(),{valid:(await Promise.allSettled([P.value.$validate(e),...F.value.map(e=>e.$validate())])).every(e=>e.status===`fulfilled`?e.value.valid===!0:!1),data:t,errors:T.$errors.value,issues:T.$issues.value}}catch{return{valid:!1,data:t,errors:T.$errors.value,issues:T.$issues.value}}}function J(){P.value.$clearExternalErrors(),F.value.forEach(e=>{e.$clearExternalErrors()})}function Y(e=!0){let t=F.value.map(t=>{if(se(t))return t.$extractDirtyFields(e)});return e&&t.every(e=>b(e))&&(t=[]),t}let{$shortcuts:X,...Z}=T;return l({$self:P,...Z,...X,$path:a,$each:F,$value:n,$initialValue:g,$originalValue:y,$validate:q,$unwatch:V,$watch:B,$touch:U,$reset:ee,$abort:G,$extractDirtyFields:Y,$clearExternalErrors:J,"~modifiers":T.$modifiers,...he(q)})}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(),T,E=[],D=null,O=null,k=null,A=null;async function j(t=!0){let o=Object.entries(n.value),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})]}));M.value={...l,...u,...d,...p},t&&F()}let M=x.storage.getFieldsEntry(a);j();function N(){s&&(k=_(s,()=>{I(),j()},{deep:!0}))}function P(){A=_(r,()=>{I(),j(),T.$autoDirty.value&&!T.$silent.value&&z(!1,!0)},{flush:`post`})}function F(){o&&(D?.(),D=_(o,()=>{I(),j()},{deep:!0,flush:`pre`}),N()),d&&(O?.(),O=_(d,()=>{I(),j()},{deep:!0,flush:`post`})),P(),T=S.run(()=>{let n=e({get:()=>r.value,set(e){I(),r.value=e,j(),T.$autoDirty.value&&!T.$silent.value&&z(!1,!0)}}),a=e({get:()=>r.value,set(e){I(),r.value=e,j()}}),o=e(()=>{let e=M.value,t=Object.keys(e);if(!t.length)return!1;for(let n of t)if(!e[n]?.$dirty)return!1;return!0}),s=e(()=>{let e=M.value;for(let t in e)if(e[t]?.$anyDirty)return!0;return!1}),c=e(()=>{let e=M.value,t=Object.entries(e);if(!t.length)return!1;for(let[e,n]of t)if(n?.$invalid)return!0;return!1}),d=e(()=>{let e=Object.entries(M.value).reduce((e,[t,n])=>((!ce(n)||!n.$inactive)&&e.push([t,n]),e),[]);return e.length?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):!1}),f=e(()=>{let e=M.value;if(!Object.keys(e).length)return!1;for(let t in e)if(e[t]?.$error)return!0;return!1}),_=e(()=>h(x.options.rewardEarly)==null?!1:h(x.options.rewardEarly)),b=e(()=>h(x.options.silent)==null?!!_.value:h(x.options.silent)),S=e(()=>h(x.options.autoDirty)==null?!0:h(x.options.autoDirty)),C=e(()=>!(c.value||D.value)),w=u(!1),D=e(()=>{if(w.value)return!0;let e=M.value;for(let t in e)if(e[t]?.$pending)return!0;return!1}),O=e(()=>{let e={};for(let t in M.value)e[t]=M.value[t]?.$issues;return e}),k=e(()=>{let e={};for(let t in M.value)e[t]=M.value[t]?.$errors;return e}),A=e(()=>{let e={};for(let t in M.value)e[t]=M.value[t]?.$silentErrors;return e}),N=e(()=>{if(!Object.keys(M.value).length)return!1;for(let e in M.value)if(!M.value[e]?.$edited)return!1;return!0}),P=e(()=>{for(let e in M.value)if(M.value[e]?.$anyEdited)return!0;return!1}),F=e(()=>y??x.options.id??`root`),L=e(()=>({autoDirty:S.value,lazy:h(x.options.lazy)??!1,rewardEarly:_.value,silent:b.value,clearExternalErrorsOnChange:h(x.options.clearExternalErrorsOnChange)??!1,id:h(x.options.id)}));function R(){x.shortcuts?.nested&&Object.entries(x.shortcuts.nested).forEach(([e,n])=>{let p=t();V[e]=p.run(()=>{let e=u();return v(()=>{e.value=n(l({$dirty:o,$path:i,$value:r,$silentValue:a,$error:f,$originalValue:g,$pending:D,$invalid:c,$correct:d,$ready:C,$anyDirty:s,$name:F,$silentErrors:A,$initialValue:m,$errors:k,$fields:M,$edited:N,$anyEdited:P,$issues:O,"~modifiers":h(x.options)}))}),e}),E.push(p)})}let B=e({get:()=>p?Object.fromEntries(Object.entries(p?.(M.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(){}}),V={};return R(),{$dirty:o,$anyDirty:s,$invalid:c,$correct:d,$error:f,$pending:D,$issues:O,$errors:k,$silentErrors:A,$ready:C,$name:F,$shortcuts:V,$groups:B,$silentValue:a,$edited:N,$anyEdited:P,$localPending:w,$autoDirty:S,$silent:b,$value:n,$modifiers:L}})}function I(){if(D?.(),k?.(),A?.(),O?.(),E=[],T={},M.value)for(let e of Object.values(M.value))e?.$unwatch()}function L(){let e=M.value;for(let t of Object.values(e))t.$clearExternalErrors()}function R(e,t){if(k?.(),I(),!t)if(e?.toOriginalState)r.value=C({...g}),m.value=C({...g});else if(e?.toInitialState)r.value=C({...m.value});else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,m.value=C(t),r.value=C(t)}else m.value=C(r.value);if(!e?.keepValidationState)for(let t of Object.values(M.value))t?.$reset(e,!0);e?.clearExternalErrors&&L(),N(),t||j()}function z(e=!0,t=!1){for(let n of Object.values(M.value))n?.$touch(e,t)}function B(e){return e.filter(([e,t])=>w(t)?!(t&&typeof t==`object`&&`_null`in t)&&!b(t):Array.isArray(t)?t.length:!0)}function V(e=!0){let t=Object.entries(M.value).map(([t,n])=>[t,n.$extractDirtyFields(e)]);return e&&(t=B(t)),Object.fromEntries(t)}function H(){for(let e of Object.values(M.value))e.$abort()}async function U(e){try{if(e&&(r.value=e),x.schemaMode)return x.onValidate?(z(!1),T.$localPending.value=!0,x.onValidate()):{valid:!1,data:r.value,errors:T.$errors.value,issues:T.$issues.value};{let e=r.value;return H(),{valid:(await Promise.allSettled(Object.values(M.value).map(e=>e.$validate()))).every(e=>e.status===`fulfilled`&&e?.value.valid===!0),data:e,errors:T.$errors.value,issues:T.$issues.value}}}catch{return{valid:!1,data:r.value,errors:T.$errors.value,issues:T.$issues.value}}finally{T.$localPending.value=!1}}let{$shortcuts:ee,$localPending:W,...G}=T,K=l({...G,...ee,$path:i,$initialValue:m,$originalValue:g,$fields:M,$reset:R,$touch:z,$validate:U,$unwatch:I,$watch:F,$clearExternalErrors:L,$extractDirtyFields:V,$abort:H,...o?{"~modifiers":T.$modifiers}:{},...he(U)});return v(()=>{for(let e of Object.keys(K).filter(e=>!e.startsWith(`$`)&&!e.startsWith(`~`)))delete K[e];for(let e of Object.values(M.value))e?.$name&&Object.assign(K,{[e.$name]:e})}),K}function be({rulesDef:e,...n}){if(re(e,n.state,n.schemaMode))return ve({rulesDef:e,...n});if(ne(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(ie(e))return ge({rulesDef:i(e.value)?e.value:e,...n})}var xe=`1.13.1`;function Se({initialState:e,originalState:t,options:n,scopeRules:i,state:a,customRules:o,shortcuts:s,schemaErrors:d,schemaMode:f=!1,onValidate:p}){let m=Z(),h=u(),g=u(),v,y;function b(){v=_(()=>n.externalErrors?.value,()=>{y?.(),n.externalErrors?.value&&Object.keys(n.externalErrors.value).some(e=>e.includes(`.`))?g.value=E(n.externalErrors.value):g.value=n.externalErrors?.value,x()},{immediate:!0,deep:!0})}function x(){y=_(()=>g.value,()=>{v?.(),n.externalErrors?.value&&(n.externalErrors.value=g.value),b()},{deep:!0})}return b(),ne(a,i)?h.value=ye({rootRules:i,rulesDef:i,state:a,customMessages:o?.(),storage:m,options:n,externalErrors:g,validationGroups:n.validationGroups,initialState:e,originalState:t,shortcuts:s,fieldName:void 0,path:``,cachePath:``,schemaErrors:d,rootSchemaErrors:d,schemaMode:f,onValidate:p}):ie(i)&&(h.value=ge({rulesDef:i,state:a,customMessages:o?.(),storage:m,options:n,externalErrors:g,initialState:e,originalState:t,shortcuts:s,fieldName:void 0,path:``,cachePath:``,schemaMode:f,schemaErrors:d,onValidate:p})),r()&&c(()=>{h.value?.$unwatch(),y?.(),v?.()}),l({regle:h})}function Ce({state:t,rulesFactory:n,options:r,globalOptions:a,customRules:o,shortcuts:s}){let c=i(n)?n:typeof n==`function`?void 0:e(()=>n),l={...a,...r},f,p=d(c??{});typeof n==`function`&&(f=v(()=>{p.value=n(t),m(p)}));let h=u(w(t.value)?{...C(t.value)}:C(t.value)),g=w(t.value)?{...C(t.value)}:C(t.value);return q(()=>{f?.()}),Se({scopeRules:p,state:t,options:l,initialState:h,originalState:g,customRules:o,shortcuts:s})}function we(e,t,n){let r={autoDirty:t?.autoDirty,lazy:t?.lazy,rewardEarly:t?.rewardEarly,silent:t?.silent,clearExternalErrorsOnChange:t?.clearExternalErrorsOnChange};function a(t,a,o){return{r$:Ce({state:i(t)?t:u(t),rulesFactory:a,options:o,globalOptions:r,customRules:e,shortcuts:n}).regle}}return a}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])=>$(t)||typeof t==`function`))return null;for(let n in e){let r=e[n];r&&w(r)&&`$each`in r&&r.$each&&w(r.$each)?t[n]=[Oe(r.$each)]:w(r)&&!b(r)&&!Object.entries(r).some(([e,t])=>$(t)||typeof t==`function`)?t[n]=Oe(r):t[n]=null}return t}function ke(t,n,r){let a={autoDirty:n?.autoDirty,lazy:n?.lazy,rewardEarly:n?.rewardEarly,silent:n?.silent,clearExternalErrorsOnChange:n?.clearExternalErrorsOnChange};function o(n,o){let s=i(n)?n:typeof n==`function`?void 0:e(()=>n);return Ce({state:u(Oe(s?.value)),rulesFactory:s,options:o,globalOptions:a,customRules:t,shortcuts:r}).regle}return o}const Ae=ke();function je(e){if(k(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!D(e,Q.REGLE_STATIC)&&Object.isExtensible(e)&&O(e,Q.REGLE_STATIC,!0),e}function Ne({rules:e,modifiers:t,shortcuts:n}){let r=we(e,t,n),i=ke(e,t,n);return r.__config={rules:e,modifiers:t,shortcuts:n},i.__config={rules:e,modifiers:t,shortcuts:n},{useRegle:r,inferRules:Ee(),useRules:i}}function Pe(e,{rules:t,modifiers:n,shortcuts:r}){let i=e.__config??{},a=()=>({...i.rules?.(),...t?.()}),o=i.modifiers&&n?T(i.modifiers,n):i.modifiers??n,s=i.shortcuts&&r?T(i.shortcuts,r):i.shortcuts??r,c=we(a,o,s);return c.__config={rules:a,modifiers:o,shortcuts:s},{useRegle:c,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}-${K()}`),v=e(()=>m.value??`instance-${g.value}`),{r$:y}=i(r,a,{...f,id:m.value});x(),q(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):J(()=>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();function Ve(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=>w(e[n])&&!Object.keys(e[n]).some(e=>e===`literal`))||{})}function He(e,t,n){return!!e&&w(e[t])&&`$value`in e[t]&&e[t]?.$value===n}function Ue(e,t,n,r){let a=i(e)?f(e.value,`$fields`):f(e,`$fields`),s=u();return _(a,async()=>{await o(),He(a.value,t,n)?s.value=f(e).value:s.value=void 0},{immediate:!0,flush:`pre`}),s}function We(e){return e}function Ge(e,t){return n=>T({...e},t(n))}const Ke={install(e){e.provide(te,xe)}};export{F as InternalRuleType,Ke as RegleVuePlugin,B as createRule,Re as createScopedUseRegle,Ve as createVariant,Ne as defineRegleConfig,We as defineRules,Pe as extendRegleConfig,fe as flatErrors,De as inferRules,je as markStatic,Fe as mergeRegles,He as narrowVariant,Ge as refineRules,I as unwrapRuleParameters,ze as useCollectScope,Te as useRegle,Se as useRootStorage,Ae as useRules,Be as useScopedRegle,Ue as variantToRef};
|