@regle/core 1.20.4 → 1.21.0-beta.2
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 +28 -18
- package/dist/regle-core.js +51 -68
- package/dist/regle-core.min.js +2 -2
- package/package.json +4 -4
package/dist/regle-core.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @regle/core v1.
|
|
2
|
+
* @regle/core v1.21.0-beta.2
|
|
3
3
|
* (c) 2026 Victor Garcia
|
|
4
4
|
* @license MIT
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import { ComputedRef, MaybeRef, MaybeRefOrGetter, Plugin, Raw, Ref, UnwrapNestedRefs, UnwrapRef } from "vue";
|
|
8
|
-
import { EmptyObject, Get, IsAny, IsEmptyObject, IsLiteral, IsNullable, IsOptional, IsStringLiteral, IsUnion, IsUnknown, Merge, Or, Paths, RequireAtLeastOne, RequireOneOrNone, RequiredDeep, UnionToIntersection, UnionToTuple } from "type-fest";
|
|
8
|
+
import { EmptyObject, Get, IsAny, IsEmptyObject, IsLiteral, IsNever, IsNullable, IsOptional, IsStringLiteral, IsUnion, IsUnknown, Merge, Or, Paths, RequireAtLeastOne, RequireOneOrNone, RequiredDeep, UnionToIntersection, UnionToTuple } from "type-fest";
|
|
9
9
|
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
10
10
|
declare const RegleStaticSymbol: unique symbol;
|
|
11
11
|
type RegleStatic<T> = T extends (new (...args: infer Args) => infer U) ? RegleStaticImpl<new (...args: Args) => RegleStaticImpl<U>> : RegleStaticImpl<T>;
|
|
@@ -79,6 +79,8 @@ interface LocalRegleBehaviourOptions<TState extends Record<string, any>, TRules
|
|
|
79
79
|
*
|
|
80
80
|
* Useful for integrating errors from a backend or other validation sources.
|
|
81
81
|
* External errors can be assigned using a reactive object or a Ref, and will be merged into the `$externalErrors` and `$errors` properties for each field.
|
|
82
|
+
* You can also call `r$.$setExternalErrors(...)` directly without providing this option.
|
|
83
|
+
* Pass this option when the same external errors ref needs to be owned and synchronized outside of Regle.
|
|
82
84
|
*
|
|
83
85
|
* More details: https://reglejs.dev/advanced-usage/external-errors
|
|
84
86
|
*/
|
|
@@ -250,7 +252,7 @@ type ScopedInstancesRecordLike = Partial<ScopedInstancesRecord>;
|
|
|
250
252
|
type PartialFormState<TState extends Record<string, any>> = [unknown] extends [TState] ? {} : Prettify<{ [K in keyof TState as ExtendOnlyRealRecord<TState[K]> extends true ? never : TState[K] extends Array<any> ? never : K]?: MaybeOutput<TState[K]> } & { [K in keyof TState as ExtendOnlyRealRecord<TState[K]> extends true ? K : TState[K] extends Array<any> ? K : never]: NonNullable<TState[K]> extends Array<infer U extends Record<string, any>> ? PartialFormState<U>[] : PartialFormState<TState[K]> }>;
|
|
251
253
|
type RegleResult<Data extends Record<string, any> | any[] | unknown, TRules extends ReglePartialRuleTree<any> | RegleFormPropertyType<any>> = {
|
|
252
254
|
/** The result of the validation */valid: false; /** Output data, filter the result by checking the `valid` property */
|
|
253
|
-
data: IsUnknown<Data> extends true ? unknown : IsAny<Data> extends true ? unknown : IsEmptyObject<TRules> extends true ? MaybeOutput<Data> : 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;
|
|
255
|
+
data: IsUnknown<Data> extends true ? unknown : IsAny<Data> extends true ? unknown : IsEmptyObject<TRules> extends true ? Data extends Record<string, any> ? PartialFormState<Data> : MaybeOutput<Data> : HasNamedKeys<Data> extends true ? HasNamedKeys<TRules> 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> : Data extends Record<string, any> ? PartialFormState<Data> : MaybeOutput<Data> : unknown;
|
|
254
256
|
/**
|
|
255
257
|
* Collection of all the error messages, collected for all children properties and nested forms.
|
|
256
258
|
*
|
|
@@ -265,7 +267,7 @@ type RegleResult<Data extends Record<string, any> | any[] | unknown, TRules exte
|
|
|
265
267
|
errors: DataTypeRegleErrors<Data>;
|
|
266
268
|
} | {
|
|
267
269
|
valid: true;
|
|
268
|
-
data: IsUnknown<Data> extends true ? unknown : IsAny<Data> extends true ? unknown : IsEmptyObject<TRules> extends true ? MaybeOutput<Data> : HasNamedKeys<Data> extends true ? NonNullable<Data> extends Array<infer U extends Record<string, any>> ? DeepSafeFormState<U, TRules extends ReglePartialRuleTree<any> ? TRules : {}>[] : NonNullable<Data> extends Date | File ? SafeFieldProperty<Raw<NonNullable<Data>>, TRules extends ReglePartialRuleTree<any> ? TRules : {}> : NonNullable<Data> extends Record<string, any> ? DeepSafeFormState<NonNullable<Data>, TRules extends ReglePartialRuleTree<any> ? TRules : {}> : SafeFieldProperty<Data, TRules extends ReglePartialRuleTree<any> ? TRules : {}> : unknown;
|
|
270
|
+
data: IsUnknown<Data> extends true ? unknown : IsAny<Data> extends true ? unknown : IsEmptyObject<TRules> extends true ? Data extends Record<string, any> ? PartialFormState<Data> : MaybeOutput<Data> : HasNamedKeys<Data> extends true ? HasNamedKeys<TRules> extends true ? NonNullable<Data> extends Array<infer U extends Record<string, any>> ? DeepSafeFormState<U, TRules extends ReglePartialRuleTree<any> ? TRules : {}>[] : NonNullable<Data> extends Date | File ? SafeFieldProperty<Raw<NonNullable<Data>>, TRules extends ReglePartialRuleTree<any> ? TRules : {}> : NonNullable<Data> extends Record<string, any> ? DeepSafeFormState<NonNullable<Data>, TRules extends ReglePartialRuleTree<any> ? TRules : {}> : SafeFieldProperty<Data, TRules extends ReglePartialRuleTree<any> ? TRules : {}> : Data extends Record<string, any> ? PartialFormState<Data> : MaybeOutput<Data> : unknown;
|
|
269
271
|
issues: EmptyObject;
|
|
270
272
|
errors: EmptyObject;
|
|
271
273
|
};
|
|
@@ -324,9 +326,13 @@ type NarrowVariant<TRoot extends {
|
|
|
324
326
|
} & { [K in TKey]: TRoot[K] & {
|
|
325
327
|
$value: TValue;
|
|
326
328
|
} };
|
|
327
|
-
type MaybeVariantStatus<TState extends Record<string, any> | undefined = Record<string, any>, TRules extends ReglePartialRuleTree<NonNullable<TState>> = Record<string, any>, TShortcuts extends RegleShortcutDefinition = {}
|
|
329
|
+
type MaybeVariantStatus<TState extends Record<string, any> | undefined = Record<string, any>, TRules extends ReglePartialRuleTree<NonNullable<TState>> = Record<string, any>, TShortcuts extends RegleShortcutDefinition = {}, TIsUnionOverride extends boolean = false,
|
|
330
|
+
/**
|
|
331
|
+
* Workaround for $each variants, TS generic can't detect if the Rules are an union when type is too nested, to the tuple is passed from parent
|
|
332
|
+
*/
|
|
333
|
+
TRulesTuple extends any[] = never> = IsUnion<NonNullable<TState>> extends true ? Or<TIsUnionOverride, IsUnion<TRules>> extends true ? (IsNever<TRulesTuple> extends true ? TRules : TRulesTuple[number]) extends infer RulesUnionTuple extends ReglePartialRuleTree<NonNullable<TState>> ? ProcessChildrenFields<NonNullable<TState>, RulesUnionTuple, TShortcuts> extends infer TChildren ? Omit<RegleStatus<NonNullable<TState>, RulesUnionTuple, TShortcuts>, '$fields'> & {
|
|
328
334
|
$fields: TChildren[keyof TChildren];
|
|
329
|
-
} & (HasNamedKeys<NonNullable<TState>> extends true ? TChildren[keyof TChildren] : {}) : never : RegleStatus<JoinDiscriminatedUnions<NonNullable<TState>>, TRules extends ReglePartialRuleTree<NonNullable<JoinDiscriminatedUnions<NonNullable<TState>>>> ? TRules : EmptyObject, TShortcuts> : RegleStatus<TState, TRules, TShortcuts>;
|
|
335
|
+
} & (HasNamedKeys<NonNullable<TState>> extends true ? TChildren[keyof TChildren] : {}) : never : RegleStatus<JoinDiscriminatedUnions<NonNullable<TState>>, TRules extends ReglePartialRuleTree<NonNullable<JoinDiscriminatedUnions<NonNullable<TState>>>> ? TRules : EmptyObject, TShortcuts> : RegleStatus<JoinDiscriminatedUnions<NonNullable<TState>>, TRules extends ReglePartialRuleTree<NonNullable<JoinDiscriminatedUnions<NonNullable<TState>>>> ? TRules : EmptyObject, TShortcuts> : RegleStatus<TState, TRules, TShortcuts>;
|
|
330
336
|
/** Helper type to extract state tuple item at index */
|
|
331
337
|
type StateTupleItem<TStateTuple extends readonly any[], TIndexInt extends number> = TStateTuple[TIndexInt] extends Record<string, any> ? TStateTuple[TIndexInt] : never;
|
|
332
338
|
/** Helper type to extract NonNullable state tuple item */
|
|
@@ -401,6 +407,7 @@ type MaybeInput<T = any> = T | null | undefined;
|
|
|
401
407
|
type MaybeOutput<T = any> = T | undefined;
|
|
402
408
|
type MaybeReadonly<T> = T | Readonly<T>;
|
|
403
409
|
type NonUndefined<T> = Exclude<T, undefined>;
|
|
410
|
+
type MaybeOrPartial<T> = T extends Record<string, any> ? Partial<T> : MaybeOutput<T>;
|
|
404
411
|
type MaybeNullable<T> = Or<IsNullable<T>, IsOptional<T>>;
|
|
405
412
|
type PromiseReturn<T> = T extends Promise<infer U> ? U : T;
|
|
406
413
|
type MaybeGetter<T, V = any, TAdd extends Record<string, any> = {}, TSelf extends Record<string, any> = {}> = (T & TSelf) | ((value: Ref<V>, index: number) => T & TAdd & TSelf);
|
|
@@ -1262,7 +1269,8 @@ type RegleStatus<TState extends object | Record<string, any> | undefined = Recor
|
|
|
1262
1269
|
* Only contains errors from properties where $dirty equals true.
|
|
1263
1270
|
* */
|
|
1264
1271
|
readonly $errors: RegleErrorTree<TState, false>; /** Collection of all the error messages, collected for all children properties. */
|
|
1265
|
-
readonly $silentErrors: RegleErrorTree<TState>; /**
|
|
1272
|
+
readonly $silentErrors: RegleErrorTree<TState>; /** Sets the external errors for the field. */
|
|
1273
|
+
$setExternalErrors(errors: RegleExternalErrorTree<TState>): void; /** 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). */
|
|
1266
1274
|
$extractDirtyFields: (filterNullishValues?: boolean) => DeepPartial<TState>; /** 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). */
|
|
1267
1275
|
$validate: (forceValues?: JoinDiscriminatedUnions<TState> extends EmptyObject ? any : HasNamedKeys<JoinDiscriminatedUnions<TState>> extends true ? IsUnknown<JoinDiscriminatedUnions<TState>> extends true ? any : JoinDiscriminatedUnions<TState> : any) => Promise<RegleResult<JoinDiscriminatedUnions<TState>, TRules>>;
|
|
1268
1276
|
} & ProcessNestedFields<TState, TRules, TShortcuts> & CustomNestedProperties & ([TShortcuts['nested']] extends [never] ? {} : { [K in keyof TShortcuts['nested']]: ReturnType<NonNullable<TShortcuts['nested']>[K]> }) & (TRules['$self'] extends RegleRuleDecl ? {
|
|
@@ -1289,7 +1297,7 @@ interface $InternalRegleStatus extends $InternalRegleCommonStatus {
|
|
|
1289
1297
|
/**
|
|
1290
1298
|
* @public
|
|
1291
1299
|
*/
|
|
1292
|
-
type InferRegleStatusType<TRule extends RegleCollectionRuleDecl | RegleRuleDecl | ReglePartialRuleTree<any>, TState extends Record<PropertyKey, any> = any, TKey extends PropertyKey = string, TShortcuts extends RegleShortcutDefinition = {}> = HasNamedKeys<TState> extends true ? [TState[TKey]] extends [undefined | null] ? RegleFieldStatus<TState[TKey], TRule, TShortcuts> : NonNullable<TState[TKey]> extends Array<unknown> ? TRule extends RegleCollectionRuleDefinition<any, any> ? ExtractFromGetter<TRule['$each']> extends ReglePartialRuleTree<any> ? RegleCollectionStatus<TState[TKey], ExtractFromGetter<TRule['$each']>, TRule, TShortcuts> : RegleFieldStatus<TState[TKey], TRule, TShortcuts> : RegleCollectionStatus<TState[TKey], {}, TRule, TShortcuts> : TRule extends ReglePartialRuleTree<any> ? NonNullable<TState[TKey]> extends Array<any> ? RegleFieldStatus<TState[TKey], TRule, TShortcuts> : NonNullable<TState[TKey]> extends Date | File ? RegleFieldStatus<Raw<TState[TKey]>, TRule, TShortcuts> : unknown extends TState[TKey] ? RegleFieldStatus<TState[TKey], TRule, TShortcuts> : NonNullable<TState[TKey]> extends Record<PropertyKey, any> ? NonNullable<TState[TKey]> extends RegleStaticImpl<infer U> ? RegleFieldStatus<Raw<U>, TRule, TShortcuts> : TRule extends ReglePartialRuleTree<TState[TKey]> ? MaybeVariantStatus<TState[TKey], TRule, TShortcuts> : MaybeVariantStatus<TState[TKey], {}, TShortcuts> : RegleFieldStatus<TState[TKey], TRule, TShortcuts> : NonNullable<TState[TKey]> extends Date | File ? RegleFieldStatus<Raw<NonNullable<TState[TKey]>>, TRule, TShortcuts> : unknown extends TState[TKey] ? RegleFieldStatus<TState[TKey], TRule, TShortcuts> : NonNullable<TState[TKey]> extends Record<PropertyKey, any> ? NonNullable<TState[TKey]> extends RegleStaticImpl<infer U> ? RegleFieldStatus<Raw<U>, TRule, TShortcuts> : MaybeVariantStatus<TState[TKey], ReglePartialRuleTree<TState[TKey]>, TShortcuts> : RegleFieldStatus<TState[TKey], TRule, TShortcuts> : RegleCommonStatus<unknown>;
|
|
1300
|
+
type InferRegleStatusType<TRule extends RegleCollectionRuleDecl | RegleRuleDecl | ReglePartialRuleTree<any>, TState extends Record<PropertyKey, any> = any, TKey extends PropertyKey = string, TShortcuts extends RegleShortcutDefinition = {}, isUnionOverride extends boolean = false, TRulesTuple extends any[] = never> = HasNamedKeys<TState> extends true ? [TState[TKey]] extends [undefined | null] ? RegleFieldStatus<TState[TKey], TRule, TShortcuts> : NonNullable<TState[TKey]> extends Array<unknown> ? TRule extends RegleCollectionRuleDefinition<any, any> ? ExtractFromGetter<TRule['$each']> extends ReglePartialRuleTree<any> ? RegleCollectionStatus<TState[TKey], ExtractFromGetter<TRule['$each']>, TRule, TShortcuts> : RegleFieldStatus<TState[TKey], TRule, TShortcuts> : RegleCollectionStatus<TState[TKey], {}, TRule, TShortcuts> : TRule extends ReglePartialRuleTree<any> ? NonNullable<TState[TKey]> extends Array<any> ? RegleFieldStatus<TState[TKey], TRule, TShortcuts> : NonNullable<TState[TKey]> extends Date | File ? RegleFieldStatus<Raw<TState[TKey]>, TRule, TShortcuts> : unknown extends TState[TKey] ? RegleFieldStatus<TState[TKey], TRule, TShortcuts> : NonNullable<TState[TKey]> extends Record<PropertyKey, any> ? NonNullable<TState[TKey]> extends RegleStaticImpl<infer U> ? RegleFieldStatus<Raw<U>, TRule, TShortcuts> : TRule extends ReglePartialRuleTree<TState[TKey]> ? MaybeVariantStatus<TState[TKey], TRule, TShortcuts, isUnionOverride, TRulesTuple> : MaybeVariantStatus<TState[TKey], {}, TShortcuts, isUnionOverride, TRulesTuple> : RegleFieldStatus<TState[TKey], TRule, TShortcuts> : NonNullable<TState[TKey]> extends Date | File ? RegleFieldStatus<Raw<NonNullable<TState[TKey]>>, TRule, TShortcuts> : unknown extends TState[TKey] ? RegleFieldStatus<TState[TKey], TRule, TShortcuts> : NonNullable<TState[TKey]> extends Record<PropertyKey, any> ? NonNullable<TState[TKey]> extends RegleStaticImpl<infer U> ? RegleFieldStatus<Raw<U>, TRule, TShortcuts> : MaybeVariantStatus<TState[TKey], ReglePartialRuleTree<TState[TKey]>, TShortcuts, isUnionOverride, []> : RegleFieldStatus<TState[TKey], TRule, TShortcuts> : RegleCommonStatus<unknown>;
|
|
1293
1301
|
/**
|
|
1294
1302
|
* @internal
|
|
1295
1303
|
* @reference {@link InferRegleStatusType}
|
|
@@ -1331,7 +1339,8 @@ type RegleFieldStatus<TState extends any = any, TRules extends RegleFormProperty
|
|
|
1331
1339
|
* Adds runtime rules to the field.
|
|
1332
1340
|
* @deprecated Use `$addRules` instead. This alias will be removed in a future version.
|
|
1333
1341
|
*/
|
|
1334
|
-
addRules: (rules: RegleRuleDecl) => void; /**
|
|
1342
|
+
addRules: (rules: RegleRuleDecl) => void; /** Sets the external errors for the field. */
|
|
1343
|
+
$setExternalErrors(errors: string[]): void; /** 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). */
|
|
1335
1344
|
$extractDirtyFields: (filterNullishValues?: boolean) => MaybeOutput<TState>; /** 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). */
|
|
1336
1345
|
$validate: (forceValues?: IsUnknown<TState> extends true ? any : TState) => Promise<RegleFieldResult<TState, TRules>>; /** This is reactive tree containing all the declared rules of your field. To know more about the rule properties check the rules properties section */
|
|
1337
1346
|
readonly $rules: ComputeFieldRules<TState, TRules>;
|
|
@@ -1367,7 +1376,7 @@ interface $InternalRegleFieldStatus extends $InternalRegleCommonStatus {
|
|
|
1367
1376
|
/**
|
|
1368
1377
|
* @public
|
|
1369
1378
|
*/
|
|
1370
|
-
interface RegleCommonStatus<TValue = any, TRules extends Record<string, any> =
|
|
1379
|
+
interface RegleCommonStatus<TValue = any, TRules extends Record<string, any> = Record<string, any>> extends StandardSchemaV1<TValue, HasNamedKeys<TRules> extends true ? InferOutput<TRules, TValue> : MaybeOrPartial<TValue>> {
|
|
1371
1380
|
/** Indicates whether the field is invalid. It becomes true if any associated rules return false. */
|
|
1372
1381
|
readonly $invalid: boolean;
|
|
1373
1382
|
/**
|
|
@@ -1470,6 +1479,7 @@ interface $InternalRegleCommonStatus extends Omit<RegleCommonStatus, '$touch' |
|
|
|
1470
1479
|
$watch(): void;
|
|
1471
1480
|
$reset(options?: ResetOptions<any>, fromParent?: boolean): void;
|
|
1472
1481
|
$abort(): void;
|
|
1482
|
+
$setExternalErrors(errors: RegleExternalErrorTree<unknown>): void;
|
|
1473
1483
|
}
|
|
1474
1484
|
/**
|
|
1475
1485
|
* @public
|
|
@@ -1545,7 +1555,7 @@ interface $InternalRegleRuleStatus {
|
|
|
1545
1555
|
type RegleCollectionStatus<TState extends any[] = any[], TRules extends ReglePartialRuleTree<Record<string, any>> = Record<string, any>, TFieldRule extends RegleCollectionRuleDecl<any, any> = never, TShortcuts extends RegleShortcutDefinition = {}> = Omit<RegleCommonStatus<TState, TRules>, '$value'> & {
|
|
1546
1556
|
/** A reference to the original validated model. It can be used to bind your form with v-model.*/$value: MaybeOutput<TState>; /** $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. */
|
|
1547
1557
|
$silentValue: MaybeOutput<TState>; /** Collection of status of every item in your collection. Each item will be a field you can access, or map on it to display your elements. */
|
|
1548
|
-
readonly $each:
|
|
1558
|
+
readonly $each: InferRegleStatusType<NonNullable<TRules>, NonNullable<TState>, number, TShortcuts, IsUnion<TRules>, UnionToTuple<TRules>>[]; /** Represents the status of the collection itself. You can have validation rules on the array like minLength, this field represents the isolated status of the collection. */
|
|
1549
1559
|
readonly $self: RegleFieldStatus<TState, TFieldRule, TShortcuts>;
|
|
1550
1560
|
/**
|
|
1551
1561
|
* Collection of all the issues, collected for all children properties and nested forms.
|
|
@@ -1557,7 +1567,8 @@ type RegleCollectionStatus<TState extends any[] = any[], TRules extends ReglePar
|
|
|
1557
1567
|
*
|
|
1558
1568
|
* Only contains errors from properties where $dirty equals true. */
|
|
1559
1569
|
readonly $errors: RegleCollectionErrors<TState>; /** Collection of all the error messages, collected for all children properties and nested forms. */
|
|
1560
|
-
readonly $silentErrors: RegleCollectionErrors<TState>; /**
|
|
1570
|
+
readonly $silentErrors: RegleCollectionErrors<TState>; /** Sets the external errors for the field. */
|
|
1571
|
+
$setExternalErrors(errors: RegleExternalCollectionErrors<TState>): void; /** 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). */
|
|
1561
1572
|
$extractDirtyFields: (filterNullishValues?: boolean) => DeepPartial<TState>; /** 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). */
|
|
1562
1573
|
$validate: (value?: JoinDiscriminatedUnions<TState>) => Promise<RegleCollectionResult<TState, JoinDiscriminatedUnions<TRules>>>;
|
|
1563
1574
|
} & CustomCollectionProperties & ([TShortcuts['collections']] extends [never] ? {} : { [K in keyof TShortcuts['collections']]: ReturnType<NonNullable<TShortcuts['collections']>[K]> });
|
|
@@ -1579,15 +1590,14 @@ interface $InternalRegleCollectionStatus extends Omit<$InternalRegleStatus, '$fi
|
|
|
1579
1590
|
/**
|
|
1580
1591
|
* @public
|
|
1581
1592
|
*/
|
|
1582
|
-
type ReglePartialRuleTree<TForm extends Record<string, any> = Record<string, any>, TCustomRules extends Partial<ExtendedRulesDeclarations> = Partial<ExtendedRulesDeclarations>> = { [TKey in keyof TForm]?: RegleFormPropertyType<TForm[TKey], TCustomRules> } &
|
|
1593
|
+
type ReglePartialRuleTree<TForm extends Record<string, any> = Record<string, any>, TCustomRules extends Partial<ExtendedRulesDeclarations> = Partial<ExtendedRulesDeclarations>> = { [TKey in keyof TForm]?: RegleFormPropertyType<TForm[TKey], TCustomRules> } & SelfObjectValidationDecl<TForm, TCustomRules>;
|
|
1594
|
+
type SelfObjectValidationDecl<TForm extends Record<string, any> = Record<string, any>, TCustomRules extends Partial<ExtendedRulesDeclarations> = Partial<ExtendedRulesDeclarations>> = {
|
|
1583
1595
|
$self?: MaybeRefOrComputedRef<RegleRuleDecl<TForm, TCustomRules>>;
|
|
1584
1596
|
};
|
|
1585
1597
|
/**
|
|
1586
1598
|
* @public
|
|
1587
1599
|
*/
|
|
1588
|
-
type RegleRuleTree<TForm extends Record<string, any>, TCustomRules extends Partial<ExtendedRulesDeclarations> = Partial<ExtendedRulesDeclarations>> = HasNamedKeys<TForm> extends true ? { [TKey in keyof TForm]: RegleFormPropertyType<TForm[TKey], TCustomRules> } &
|
|
1589
|
-
$self?: MaybeRefOrComputedRef<RegleRuleDecl<TForm, TCustomRules>>;
|
|
1590
|
-
} : RegleUnknownRulesTree;
|
|
1600
|
+
type RegleRuleTree<TForm extends Record<string, any>, TCustomRules extends Partial<ExtendedRulesDeclarations> = Partial<ExtendedRulesDeclarations>> = HasNamedKeys<TForm> extends true ? { [TKey in keyof TForm]: RegleFormPropertyType<TForm[TKey], TCustomRules> } & SelfObjectValidationDecl<TForm, TCustomRules> : RegleUnknownRulesTree;
|
|
1591
1601
|
/**
|
|
1592
1602
|
* @public
|
|
1593
1603
|
*/
|
|
@@ -1681,9 +1691,9 @@ type RegleErrorTree<TState = MaybeRef<Record<string, any> | any[]>, TIssue exten
|
|
|
1681
1691
|
type RegleIssuesTree<TState = MaybeRef<Record<string, any> | any[]>, TSchema extends boolean = false, TRules extends ReglePartialRuleTree<NonNullable<TState>> = Record<string, any>> = IsAny<TState> extends true ? any : IsUnknown<TState> extends true ? any : { readonly [K in keyof JoinDiscriminatedUnions<UnwrapMaybeRef<TState>>]: RegleValidationErrors<JoinDiscriminatedUnions<UnwrapMaybeRef<TState>>[K], false, true, TSchema, K extends keyof TRules ? TRules[K] extends RegleFormPropertyType<Record<string, any>> ? TRules[K] : EmptyObject : EmptyObject> } & {
|
|
1682
1692
|
readonly $self?: RegleFieldIssue[];
|
|
1683
1693
|
};
|
|
1684
|
-
type RegleExternalErrorTree<TState = MaybeRef<Record<string, any> | any[]>, TSchema extends boolean = false> = IsAny<TState> extends true ? any : IsUnknown<TState> extends true ? any : { readonly [K in keyof JoinDiscriminatedUnions<UnwrapMaybeRef<TState>>]?: RegleValidationErrors<JoinDiscriminatedUnions<UnwrapMaybeRef<TState>>[K], true, TSchema> } & {
|
|
1694
|
+
type RegleExternalErrorTree<TState = MaybeRef<Record<string, any> | any[]>, TSchema extends boolean = false> = IsAny<TState> extends true ? any : IsUnknown<TState> extends true ? any : ({ readonly [K in keyof JoinDiscriminatedUnions<UnwrapMaybeRef<TState>>]?: RegleValidationErrors<JoinDiscriminatedUnions<UnwrapMaybeRef<TState>>[K], true, TSchema> } & {
|
|
1685
1695
|
readonly $self?: RegleFieldIssue[];
|
|
1686
|
-
}
|
|
1696
|
+
}) | Record<Paths<TState> | (string & {}), string[]>;
|
|
1687
1697
|
type RegleExternalSchemaErrorTree<TState = MaybeRef<Record<string, any> | any[]>, TSchema extends boolean = false> = IsAny<TState> extends true ? any : IsUnknown<TState> extends true ? any : { readonly [K in keyof JoinDiscriminatedUnions<UnwrapMaybeRef<TState>>]?: RegleValidationErrors<JoinDiscriminatedUnions<UnwrapMaybeRef<TState>>[K], true, true, TSchema> };
|
|
1688
1698
|
type ErrorMessageOrIssue<TIssue extends boolean, TRules extends RegleFormPropertyType<Record<string, any>> = EmptyObject> = TIssue extends true ? RegleFieldIssue<TRules>[] : string[];
|
|
1689
1699
|
type RegleValidationErrors<TState extends Record<string, any> | any[] | unknown = never, TExternal extends boolean = false, TIssue extends boolean = false, TSchema extends boolean = false, TRules extends RegleFormPropertyType<Record<string, any>> = EmptyObject> = IsAny<TState> extends true ? any : IsUnknown<TState> extends true ? any : HasNamedKeys<TState> extends true ? NonNullable<TState> extends Array<infer U> ? TSchema extends false ? TExternal extends false ? RegleCollectionErrors<U, TIssue, TSchema> : RegleExternalCollectionErrors<U, TIssue, TSchema> : RegleCollectionErrors<U, TIssue, TSchema> : NonNullable<TState> extends Date | File ? ErrorMessageOrIssue<TIssue, TRules> : NonNullable<TState> extends Record<string, any> ? IsRegleStatic<NonNullable<TState>> extends true ? ErrorMessageOrIssue<TIssue, TRules> : TExternal extends false ? RegleErrorTree<TState, TIssue, TSchema> : RegleExternalErrorTree<TState, TSchema> : ErrorMessageOrIssue<TIssue, TRules> : any;
|
package/dist/regle-core.js
CHANGED
|
@@ -1,19 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @regle/core v1.
|
|
2
|
+
* @regle/core v1.21.0-beta.2
|
|
3
3
|
* (c) 2026 Victor Garcia
|
|
4
4
|
* @license MIT
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import { computed, effectScope, getCurrentInstance, getCurrentScope, inject, isRef, markRaw, nextTick, onMounted, onScopeDispose, reactive, ref, shallowRef, toRef, toValue, triggerRef, unref, version, watch, watchEffect } from "vue";
|
|
8
8
|
import { setupDevtoolsPlugin } from "@vue/devtools-api";
|
|
9
|
-
|
|
10
9
|
/**
|
|
11
10
|
* Server side friendly way of checking for a File
|
|
12
11
|
*/
|
|
13
12
|
function isFile(value) {
|
|
14
13
|
return value?.constructor?.name == "File";
|
|
15
14
|
}
|
|
16
|
-
|
|
17
15
|
function isObject(obj) {
|
|
18
16
|
if (obj && (obj instanceof Date || obj.constructor.name == "File" || obj.constructor.name == "FileList")) return false;
|
|
19
17
|
return typeof obj === "object" && obj !== null && !Array.isArray(obj);
|
|
@@ -125,7 +123,6 @@ function def(obj, key, value, writable = false) {
|
|
|
125
123
|
function isConstructor(value) {
|
|
126
124
|
return typeof value === "function" && !!value.prototype && "constructor" in value.prototype && value.prototype.constructor === value;
|
|
127
125
|
}
|
|
128
|
-
|
|
129
126
|
/**
|
|
130
127
|
* Checks if a value is empty in any way (including arrays and objects).
|
|
131
128
|
* This is the inverse of `isFilled`.
|
|
@@ -170,9 +167,7 @@ function isEmpty(value, considerEmptyArrayInvalid = true, considerEmptyObjectInv
|
|
|
170
167
|
}
|
|
171
168
|
return !String(value).length;
|
|
172
169
|
}
|
|
173
|
-
|
|
174
170
|
const RegleRuleSymbol = Symbol("regle-rule");
|
|
175
|
-
|
|
176
171
|
function getRegExpFlags(regExp) {
|
|
177
172
|
let flags = [];
|
|
178
173
|
if (regExp.global) flags.push("g");
|
|
@@ -196,7 +191,6 @@ function cloneDeep(obj, dep = 0) {
|
|
|
196
191
|
}
|
|
197
192
|
return result;
|
|
198
193
|
}
|
|
199
|
-
|
|
200
194
|
/**
|
|
201
195
|
* Coerces any string, number, or Date value into a `Date` using the `Date` constructor.
|
|
202
196
|
*
|
|
@@ -222,7 +216,6 @@ function toDate(argument) {
|
|
|
222
216
|
else if (typeof argument === "string" || argStr === "[object String]") return new Date(argument);
|
|
223
217
|
else return /* @__PURE__ */ new Date(NaN);
|
|
224
218
|
}
|
|
225
|
-
|
|
226
219
|
function debounce(func, wait, { immediate = false, trackDebounceRef } = {}) {
|
|
227
220
|
let timeout;
|
|
228
221
|
const debouncedFn = (...args) => {
|
|
@@ -262,7 +255,6 @@ function debounce(func, wait, { immediate = false, trackDebounceRef } = {}) {
|
|
|
262
255
|
};
|
|
263
256
|
return debouncedFn;
|
|
264
257
|
}
|
|
265
|
-
|
|
266
258
|
function isEqual(a, b, deep = false, firstDeep = true) {
|
|
267
259
|
if (a === b) return true;
|
|
268
260
|
if (a && b && typeof a == "object" && typeof b == "object") {
|
|
@@ -294,7 +286,6 @@ function isEqual(a, b, deep = false, firstDeep = true) {
|
|
|
294
286
|
}
|
|
295
287
|
return a !== a && b !== b;
|
|
296
288
|
}
|
|
297
|
-
|
|
298
289
|
var AbortError = class extends Error {
|
|
299
290
|
constructor(message = "Promise was aborted") {
|
|
300
291
|
super(message);
|
|
@@ -331,7 +322,6 @@ function abortablePromise(input) {
|
|
|
331
322
|
signal
|
|
332
323
|
};
|
|
333
324
|
}
|
|
334
|
-
|
|
335
325
|
/**
|
|
336
326
|
* Converts ref to reactive.
|
|
337
327
|
*
|
|
@@ -377,12 +367,10 @@ function toReactive(objectRef, isDisabled) {
|
|
|
377
367
|
}
|
|
378
368
|
}));
|
|
379
369
|
}
|
|
380
|
-
|
|
381
370
|
const InternalRuleType = {
|
|
382
371
|
Inline: "__inline",
|
|
383
372
|
Async: "__async"
|
|
384
373
|
};
|
|
385
|
-
|
|
386
374
|
/**
|
|
387
375
|
* Returns a clean list of parameters
|
|
388
376
|
* Removing Ref and executing function to return the unwrapped value
|
|
@@ -413,7 +401,6 @@ function getFunctionParametersLength(func) {
|
|
|
413
401
|
if (!paramsMatch) return 0;
|
|
414
402
|
return (paramsMatch[0] || paramsMatch[1] || paramsMatch[2] || paramsMatch[3] || paramsMatch[4] || "").split(",").map((p) => p.trim()).filter((p) => p.length > 0).length;
|
|
415
403
|
}
|
|
416
|
-
|
|
417
404
|
function defineRuleProcessors(definition, ...params) {
|
|
418
405
|
const { validator, type, async } = definition;
|
|
419
406
|
const isAsync = async || type === InternalRuleType.Async || validator.constructor.name === "AsyncFunction";
|
|
@@ -469,7 +456,6 @@ function defineRuleProcessors(definition, ...params) {
|
|
|
469
456
|
_brand: RegleRuleSymbol
|
|
470
457
|
});
|
|
471
458
|
}
|
|
472
|
-
|
|
473
459
|
/**
|
|
474
460
|
* Create a typed custom rule that can be used like built-in rules.
|
|
475
461
|
* The created rule can be declared in global options or used directly.
|
|
@@ -554,7 +540,6 @@ function createRule(definition) {
|
|
|
554
540
|
}
|
|
555
541
|
throw new Error("[createRule] validator must be a function");
|
|
556
542
|
}
|
|
557
|
-
|
|
558
543
|
const REGLE_SYMBOL = Symbol.for("regle:instance");
|
|
559
544
|
/**
|
|
560
545
|
* Checks if a value is a Regle instance (`r$`).
|
|
@@ -591,7 +576,6 @@ function unwrapGetter(getter, value, index) {
|
|
|
591
576
|
unwrapped
|
|
592
577
|
};
|
|
593
578
|
}
|
|
594
|
-
|
|
595
579
|
const VersionIs = {
|
|
596
580
|
LessThan: -1,
|
|
597
581
|
EqualTo: 0,
|
|
@@ -617,7 +601,6 @@ function versionCompare(current, other) {
|
|
|
617
601
|
return VersionIs.EqualTo;
|
|
618
602
|
}
|
|
619
603
|
const isVueSuperiorOrEqualTo3dotFive = versionCompare(version, "3.5.0") === -1 ? false : true;
|
|
620
|
-
|
|
621
604
|
function uniqueIDNuxt() {
|
|
622
605
|
return Math.floor(Math.random() * Date.now()).toString();
|
|
623
606
|
}
|
|
@@ -628,7 +611,6 @@ function randomId() {
|
|
|
628
611
|
if (typeof window === "undefined") return uniqueIDNuxt();
|
|
629
612
|
else return window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10);
|
|
630
613
|
}
|
|
631
|
-
|
|
632
614
|
function tryOnScopeDispose(fn) {
|
|
633
615
|
if (getCurrentScope()) {
|
|
634
616
|
onScopeDispose(fn);
|
|
@@ -654,7 +636,6 @@ function createGlobalState(stateFactory) {
|
|
|
654
636
|
return state;
|
|
655
637
|
});
|
|
656
638
|
}
|
|
657
|
-
|
|
658
639
|
function mergeBooleanGroupProperties(entries, property) {
|
|
659
640
|
return entries.some((entry) => {
|
|
660
641
|
if (!property) return false;
|
|
@@ -668,7 +649,6 @@ function mergeArrayGroupProperties(entries, property) {
|
|
|
668
649
|
return all.concat(fetchedProperty);
|
|
669
650
|
}, []);
|
|
670
651
|
}
|
|
671
|
-
|
|
672
652
|
const COLORS = {
|
|
673
653
|
ERROR: {
|
|
674
654
|
text: 16777215,
|
|
@@ -761,11 +741,9 @@ const INSPECTOR_IDS = {
|
|
|
761
741
|
COMPONENTS: "components",
|
|
762
742
|
TIMELINE: "regle-timeline"
|
|
763
743
|
};
|
|
764
|
-
|
|
765
744
|
const regleSymbol = Symbol("regle");
|
|
766
745
|
const regleConfigSymbol = Symbol("regle-config");
|
|
767
746
|
const REGLE_FLAGS = { REGLE_STATIC: "__regle_static" };
|
|
768
|
-
|
|
769
747
|
function useRegleDevtoolsRegistry() {
|
|
770
748
|
const loggedWarning = ref(false);
|
|
771
749
|
const devtoolsApi = shallowRef();
|
|
@@ -871,7 +849,6 @@ function registerRegleInstance(r$, options) {
|
|
|
871
849
|
tryOnScopeDispose(unregister);
|
|
872
850
|
return unregister;
|
|
873
851
|
}
|
|
874
|
-
|
|
875
852
|
function isNestedRulesDef(state, rules) {
|
|
876
853
|
return !isStatic(state.value) && (isRefObject(state) || isObject(rules.value) && !isEmpty(rules.value) && !Object.entries(rules.value).some(([_, rule]) => isRuleDef(rule) || typeof rule === "function"));
|
|
877
854
|
}
|
|
@@ -894,7 +871,6 @@ function isFormRuleDefinition(rule) {
|
|
|
894
871
|
function isStatic(value) {
|
|
895
872
|
return isObject(value) && hasOwn(value, REGLE_FLAGS.REGLE_STATIC) && value[REGLE_FLAGS.REGLE_STATIC] === true;
|
|
896
873
|
}
|
|
897
|
-
|
|
898
874
|
function isNestedRulesStatus(rule) {
|
|
899
875
|
return isObject(rule) && "$fields" in rule;
|
|
900
876
|
}
|
|
@@ -904,7 +880,6 @@ function isCollectionRulesStatus(rule) {
|
|
|
904
880
|
function isFieldStatus(rule) {
|
|
905
881
|
return !!rule && "$rules" in rule;
|
|
906
882
|
}
|
|
907
|
-
|
|
908
883
|
function isMethod(value) {
|
|
909
884
|
return typeof value === "function";
|
|
910
885
|
}
|
|
@@ -924,7 +899,7 @@ function getRemainingProperties(obj, excludeKeys) {
|
|
|
924
899
|
key,
|
|
925
900
|
value,
|
|
926
901
|
editable: false
|
|
927
|
-
}));
|
|
902
|
+
})).sort((a, b) => a.key.localeCompare(b.key));
|
|
928
903
|
}
|
|
929
904
|
function parseFieldNodeId(nodeId) {
|
|
930
905
|
if (!nodeId.includes(":field:")) return null;
|
|
@@ -953,7 +928,6 @@ function parseRuleNodeId(nodeId) {
|
|
|
953
928
|
function createRuleNodeId(instanceId, fieldName, ruleName) {
|
|
954
929
|
return `${createFieldNodeId(instanceId, fieldName)}:rule:${ruleName}`;
|
|
955
930
|
}
|
|
956
|
-
|
|
957
931
|
/**
|
|
958
932
|
* Build state for a field node
|
|
959
933
|
*/
|
|
@@ -966,7 +940,12 @@ function buildFieldState(fieldStatus) {
|
|
|
966
940
|
"$rules",
|
|
967
941
|
"$fields",
|
|
968
942
|
"$modifiers",
|
|
969
|
-
"$deepCompare"
|
|
943
|
+
"$deepCompare",
|
|
944
|
+
"$clearExternalErrorsOnValidate",
|
|
945
|
+
"$silent",
|
|
946
|
+
"$isArrayOrRegleStatic",
|
|
947
|
+
"$schemaMode",
|
|
948
|
+
"$immediateDirty"
|
|
970
949
|
]);
|
|
971
950
|
if (remainingProperties.length > 0) state["Other Properties"] = remainingProperties;
|
|
972
951
|
if (fieldStatus["~modifiers"]) state["Modifiers"] = Object.entries(fieldStatus["~modifiers"]).map(([key, value]) => ({
|
|
@@ -1026,7 +1005,9 @@ function buildRootState(r$) {
|
|
|
1026
1005
|
...PRIORITY_KEYS.ROOT,
|
|
1027
1006
|
"$fields",
|
|
1028
1007
|
"$modifiers",
|
|
1029
|
-
"$path"
|
|
1008
|
+
"$path",
|
|
1009
|
+
"$clearExternalErrorsOnValidate",
|
|
1010
|
+
"$silent"
|
|
1030
1011
|
]);
|
|
1031
1012
|
if (remainingProperties.length > 0) state["Other Properties"] = remainingProperties;
|
|
1032
1013
|
if (r$["~modifiers"]) state["Modifiers"] = Object.entries(r$["~modifiers"]).map(([key, value]) => ({
|
|
@@ -1078,7 +1059,6 @@ function buildInspectorState(nodeId, getInstance) {
|
|
|
1078
1059
|
if (!instance) return null;
|
|
1079
1060
|
return buildRootState(instance.r$);
|
|
1080
1061
|
}
|
|
1081
|
-
|
|
1082
1062
|
function handleValidateAction(nodeId) {
|
|
1083
1063
|
if (nodeId.includes(":rule:")) return;
|
|
1084
1064
|
const fieldInfo = parseFieldNodeId(nodeId);
|
|
@@ -1141,7 +1121,6 @@ async function emitInspectorState(api) {
|
|
|
1141
1121
|
api.sendInspectorTree(INSPECTOR_IDS.INSPECTOR);
|
|
1142
1122
|
api.sendInspectorState(INSPECTOR_IDS.INSPECTOR);
|
|
1143
1123
|
}
|
|
1144
|
-
|
|
1145
1124
|
function buildNodeTags(fieldOrR$, componentName) {
|
|
1146
1125
|
const tags = [];
|
|
1147
1126
|
let isDisabled = false;
|
|
@@ -1365,9 +1344,7 @@ function filterInspectorTree(nodes, filter) {
|
|
|
1365
1344
|
}
|
|
1366
1345
|
return filtered;
|
|
1367
1346
|
}
|
|
1368
|
-
|
|
1369
|
-
var version$1 = "1.20.4";
|
|
1370
|
-
|
|
1347
|
+
var version$1 = "1.21.0-beta.2";
|
|
1371
1348
|
function createDevtools(app) {
|
|
1372
1349
|
setupDevtoolsPlugin({
|
|
1373
1350
|
id: "regle-devtools",
|
|
@@ -1449,7 +1426,6 @@ function createDevtools(app) {
|
|
|
1449
1426
|
});
|
|
1450
1427
|
});
|
|
1451
1428
|
}
|
|
1452
|
-
|
|
1453
1429
|
/**
|
|
1454
1430
|
* Inspired by Vuelidate storage
|
|
1455
1431
|
*/
|
|
@@ -1580,7 +1556,6 @@ function useStorage() {
|
|
|
1580
1556
|
getAdditionalRulesEntry
|
|
1581
1557
|
};
|
|
1582
1558
|
}
|
|
1583
|
-
|
|
1584
1559
|
function extractRulesIssues({ field, silent = false }) {
|
|
1585
1560
|
const ruleIssues = Object.entries(field.$rules ?? {}).map(([key, rule]) => {
|
|
1586
1561
|
let message = "";
|
|
@@ -1658,7 +1633,6 @@ function iterateErrors(errors, includePath = false, _path) {
|
|
|
1658
1633
|
return selfErrors?.concat(eachErrors.flat());
|
|
1659
1634
|
} else return Object.entries(errors).map(([key, value]) => iterateErrors(value, includePath, path?.concat(key))).flat();
|
|
1660
1635
|
}
|
|
1661
|
-
|
|
1662
1636
|
function createReactiveRuleStatus({ customMessages, rule, ruleKey, state, path, cachePath, storage, modifiers }) {
|
|
1663
1637
|
let scope = effectScope();
|
|
1664
1638
|
let scopeState = {};
|
|
@@ -1867,7 +1841,6 @@ function createReactiveRuleStatus({ customMessages, rule, ruleKey, state, path,
|
|
|
1867
1841
|
$reset
|
|
1868
1842
|
});
|
|
1869
1843
|
}
|
|
1870
|
-
|
|
1871
1844
|
function createStandardSchema(validateFn) {
|
|
1872
1845
|
return { "~standard": {
|
|
1873
1846
|
version: 1,
|
|
@@ -1882,7 +1855,6 @@ function createStandardSchema(validateFn) {
|
|
|
1882
1855
|
}
|
|
1883
1856
|
} };
|
|
1884
1857
|
}
|
|
1885
|
-
|
|
1886
1858
|
const DEFAULT_DEBOUNCE_TIME = 200;
|
|
1887
1859
|
function createReactiveFieldStatus({ state, rulesDef, customMessages, path, cachePath, fieldName, storage, options, externalErrors, schemaErrors, schemaMode, onUnwatch, $isArray, initialState, originalState, shortcuts, overrides, onValidate }) {
|
|
1888
1860
|
let scope = effectScope();
|
|
@@ -2367,6 +2339,9 @@ function createReactiveFieldStatus({ state, rulesDef, customMessages, path, cach
|
|
|
2367
2339
|
if (filterNullishValues) return { _null: true };
|
|
2368
2340
|
return null;
|
|
2369
2341
|
}
|
|
2342
|
+
function $setExternalErrors(errors) {
|
|
2343
|
+
if (externalErrors) externalErrors.value = errors;
|
|
2344
|
+
}
|
|
2370
2345
|
function $clearExternalErrors() {
|
|
2371
2346
|
if (externalErrors?.value?.length) externalErrors.value = [];
|
|
2372
2347
|
}
|
|
@@ -2396,12 +2371,12 @@ function createReactiveFieldStatus({ state, rulesDef, customMessages, path, cach
|
|
|
2396
2371
|
addRules,
|
|
2397
2372
|
$schemaMode: schemaMode,
|
|
2398
2373
|
"~modifiers": scopeState.$modifiers,
|
|
2374
|
+
$setExternalErrors,
|
|
2399
2375
|
...createStandardSchema($validate)
|
|
2400
2376
|
});
|
|
2401
2377
|
Object.defineProperty(fullStatus, Symbol.for("regle:instance"), { value: true });
|
|
2402
2378
|
return fullStatus;
|
|
2403
2379
|
}
|
|
2404
|
-
|
|
2405
2380
|
function createCollectionElement({ $id, path, cachePath, index, options, storage, stateValue, customMessages, rules, externalErrors, schemaErrors, initialState, originalState, shortcuts, fieldName, schemaMode, overrides }) {
|
|
2406
2381
|
const $fieldId = stateValue.value?.$id ?? rules.$key ?? randomId();
|
|
2407
2382
|
let $cachePath = `${cachePath}.${String($fieldId)}`;
|
|
@@ -2441,7 +2416,6 @@ function createCollectionElement({ $id, path, cachePath, index, options, storage
|
|
|
2441
2416
|
if (stateValue.value && (!isObject(stateValue.value) || isStatic(stateValue.value)) && schemaMode) $status?.$touch();
|
|
2442
2417
|
return $status;
|
|
2443
2418
|
}
|
|
2444
|
-
|
|
2445
2419
|
function createReactiveCollectionStatus({ state, rulesDef, customMessages, path, cachePath, storage, options, externalErrors, schemaErrors, schemaMode, initialState, originalState, shortcuts, fieldName, overrides }) {
|
|
2446
2420
|
let scope = effectScope();
|
|
2447
2421
|
let scopeState;
|
|
@@ -2863,6 +2837,9 @@ function createReactiveCollectionStatus({ state, rulesDef, customMessages, path,
|
|
|
2863
2837
|
return false;
|
|
2864
2838
|
}
|
|
2865
2839
|
}
|
|
2840
|
+
function $setExternalErrors(errors) {
|
|
2841
|
+
if (externalErrors?.value) externalErrors.value = errors;
|
|
2842
|
+
}
|
|
2866
2843
|
function $clearExternalErrors() {
|
|
2867
2844
|
$selfStatus.value.$clearExternalErrors();
|
|
2868
2845
|
$eachStatus.value.forEach(($each) => {
|
|
@@ -2899,11 +2876,11 @@ function createReactiveCollectionStatus({ state, rulesDef, customMessages, path,
|
|
|
2899
2876
|
$abort,
|
|
2900
2877
|
$extractDirtyFields,
|
|
2901
2878
|
$clearExternalErrors,
|
|
2879
|
+
$setExternalErrors,
|
|
2902
2880
|
"~modifiers": scopeState.$modifiers,
|
|
2903
2881
|
...createStandardSchema($validate)
|
|
2904
2882
|
});
|
|
2905
2883
|
}
|
|
2906
|
-
|
|
2907
2884
|
function createReactiveNestedStatus({ rulesDef, state, path = "", cachePath, rootRules, externalErrors, schemaErrors, rootSchemaErrors, validationGroups, initialState, originalState, fieldName, ...commonArgs }) {
|
|
2908
2885
|
let scope = effectScope();
|
|
2909
2886
|
let scopeState;
|
|
@@ -3291,6 +3268,9 @@ function createReactiveNestedStatus({ rulesDef, state, path = "", cachePath, roo
|
|
|
3291
3268
|
scopeState = {};
|
|
3292
3269
|
if ($fields.value) for (const field of Object.values($fields.value)) field?.$unwatch();
|
|
3293
3270
|
}
|
|
3271
|
+
function $setExternalErrors(errors) {
|
|
3272
|
+
if (externalErrors) externalErrors.value = errors;
|
|
3273
|
+
}
|
|
3294
3274
|
function $clearExternalErrors() {
|
|
3295
3275
|
if (externalErrors && !isEmpty(externalErrors.value)) externalErrors.value = {};
|
|
3296
3276
|
}
|
|
@@ -3404,6 +3384,7 @@ function createReactiveNestedStatus({ rulesDef, state, path = "", cachePath, roo
|
|
|
3404
3384
|
$validate,
|
|
3405
3385
|
$unwatch,
|
|
3406
3386
|
$watch,
|
|
3387
|
+
$setExternalErrors,
|
|
3407
3388
|
$clearExternalErrors,
|
|
3408
3389
|
$extractDirtyFields,
|
|
3409
3390
|
$abort,
|
|
@@ -3453,7 +3434,6 @@ function createReactiveChildrenStatus({ rulesDef, ...properties }) {
|
|
|
3453
3434
|
...properties
|
|
3454
3435
|
});
|
|
3455
3436
|
}
|
|
3456
|
-
|
|
3457
3437
|
/**
|
|
3458
3438
|
* @internal
|
|
3459
3439
|
* This is the internal function that creates the root storage for the Regle instance.
|
|
@@ -3475,19 +3455,21 @@ function useRootStorage({ initialState, originalState, options, scopeRules, stat
|
|
|
3475
3455
|
}
|
|
3476
3456
|
});
|
|
3477
3457
|
}
|
|
3478
|
-
function handleExternalErrorsChange() {
|
|
3458
|
+
function handleExternalErrorsChange(newErrors) {
|
|
3479
3459
|
$unwatchComputedExternalErrors?.();
|
|
3480
|
-
if (
|
|
3481
|
-
else computedExternalErrors.value =
|
|
3460
|
+
if (newErrors) if (isObject(newErrors) && Object.keys(newErrors).some((key) => key.includes("."))) computedExternalErrors.value = dotPathObjectToNested(newErrors);
|
|
3461
|
+
else if (Array.isArray(newErrors)) computedExternalErrors.value = newErrors;
|
|
3462
|
+
else computedExternalErrors.value = newErrors ?? {};
|
|
3482
3463
|
defineComputedExternalErrorsWatchSource();
|
|
3483
3464
|
}
|
|
3484
3465
|
function defineExternalErrorsWatchSource() {
|
|
3485
3466
|
$unwatchExternalErrors = watch(() => options.externalErrors?.value, handleExternalErrorsChange, { deep: true });
|
|
3486
3467
|
}
|
|
3487
3468
|
function defineComputedExternalErrorsWatchSource() {
|
|
3488
|
-
$unwatchComputedExternalErrors = watch(() => computedExternalErrors.value, () => {
|
|
3469
|
+
$unwatchComputedExternalErrors = watch(() => computedExternalErrors.value, (newErrors) => {
|
|
3489
3470
|
$unwatchExternalErrors?.();
|
|
3490
|
-
if (options.externalErrors?.value) options.externalErrors.value =
|
|
3471
|
+
if (options.externalErrors?.value) options.externalErrors.value = newErrors;
|
|
3472
|
+
handleExternalErrorsChange(newErrors);
|
|
3491
3473
|
defineExternalErrorsWatchSource();
|
|
3492
3474
|
}, { deep: true });
|
|
3493
3475
|
}
|
|
@@ -3532,7 +3514,7 @@ function useRootStorage({ initialState, originalState, options, scopeRules, stat
|
|
|
3532
3514
|
overrides
|
|
3533
3515
|
});
|
|
3534
3516
|
}
|
|
3535
|
-
handleExternalErrorsChange();
|
|
3517
|
+
handleExternalErrorsChange(options.externalErrors?.value);
|
|
3536
3518
|
createRegleInstance();
|
|
3537
3519
|
if (toValue(options.disabled)) nextTick().then(() => {
|
|
3538
3520
|
regle.value?.$unwatch();
|
|
@@ -3554,7 +3536,6 @@ function useRootStorage({ initialState, originalState, options, scopeRules, stat
|
|
|
3554
3536
|
registerDevtools();
|
|
3555
3537
|
return regle;
|
|
3556
3538
|
}
|
|
3557
|
-
|
|
3558
3539
|
function createRootRegleLogic({ state, rulesFactory, options, globalOptions, customRules, shortcuts, overrides }) {
|
|
3559
3540
|
const definedRules = isRef(rulesFactory) ? rulesFactory : typeof rulesFactory === "function" ? void 0 : computed(() => rulesFactory);
|
|
3560
3541
|
/**
|
|
@@ -3603,7 +3584,6 @@ function createRootRegleLogic({ state, rulesFactory, options, globalOptions, cus
|
|
|
3603
3584
|
overrides: mergedOverrides
|
|
3604
3585
|
});
|
|
3605
3586
|
}
|
|
3606
|
-
|
|
3607
3587
|
function createUseRegleComposable(options) {
|
|
3608
3588
|
const { rules: customRules, modifiers = {}, shortcuts, overrides } = options ?? {};
|
|
3609
3589
|
function useRegle(state, rulesFactory, options) {
|
|
@@ -3655,7 +3635,6 @@ function createUseRegleComposable(options) {
|
|
|
3655
3635
|
* @see {@link https://reglejs.dev/core-concepts/ Documentation}
|
|
3656
3636
|
*/
|
|
3657
3637
|
const useRegle = createUseRegleComposable();
|
|
3658
|
-
|
|
3659
3638
|
function createInferRuleHelper() {
|
|
3660
3639
|
function inferRules(state, rulesFactory) {
|
|
3661
3640
|
return rulesFactory;
|
|
@@ -3690,7 +3669,6 @@ function createInferRuleHelper() {
|
|
|
3690
3669
|
* @see {@link https://reglejs.dev/core-concepts/#dynamic-rules-object Documentation}
|
|
3691
3670
|
*/
|
|
3692
3671
|
const inferRules = createInferRuleHelper();
|
|
3693
|
-
|
|
3694
3672
|
/**
|
|
3695
3673
|
* Retrieves error messages for a specific field using a dot-notation path.
|
|
3696
3674
|
* Provides type-safe access to nested error arrays in a Regle instance.
|
|
@@ -3727,7 +3705,6 @@ const inferRules = createInferRuleHelper();
|
|
|
3727
3705
|
function getErrors(r$, path) {
|
|
3728
3706
|
return getDotPath(toValue(r$).$errors, String(path));
|
|
3729
3707
|
}
|
|
3730
|
-
|
|
3731
3708
|
/**
|
|
3732
3709
|
* Retrieves detailed validation issues for a specific field using a dot-notation path.
|
|
3733
3710
|
* Issues contain more information than errors, including the rule name, property, and metadata.
|
|
@@ -3768,7 +3745,6 @@ function getErrors(r$, path) {
|
|
|
3768
3745
|
function getIssues(r$, path) {
|
|
3769
3746
|
return getDotPath(toValue(r$).$issues, String(path));
|
|
3770
3747
|
}
|
|
3771
|
-
|
|
3772
3748
|
function createEmptyRuleState(rules) {
|
|
3773
3749
|
const result = {};
|
|
3774
3750
|
if (Object.entries(rules).some(([_, rule]) => isRuleDef(rule) || typeof rule === "function")) return null;
|
|
@@ -3829,7 +3805,6 @@ function createUseRulesComposable(options) {
|
|
|
3829
3805
|
* @see {@link https://reglejs.dev/common-usage/standard-schema#userules Documentation}
|
|
3830
3806
|
*/
|
|
3831
3807
|
const useRules = createUseRulesComposable();
|
|
3832
|
-
|
|
3833
3808
|
/**
|
|
3834
3809
|
* Marks a value as static and treats the constructor as a regular raw Field.
|
|
3835
3810
|
* @param value - The value to mark as static.
|
|
@@ -3858,7 +3833,6 @@ function applyMarkStatic(value) {
|
|
|
3858
3833
|
if (!hasOwn(value, REGLE_FLAGS.REGLE_STATIC) && Object.isExtensible(value)) def(value, REGLE_FLAGS.REGLE_STATIC, true);
|
|
3859
3834
|
return value;
|
|
3860
3835
|
}
|
|
3861
|
-
|
|
3862
3836
|
/**
|
|
3863
3837
|
* Define a global Regle configuration to customize the validation behavior across your application.
|
|
3864
3838
|
*
|
|
@@ -4003,7 +3977,6 @@ function extendRegleConfig(regle, { rules, modifiers, shortcuts, overrides }) {
|
|
|
4003
3977
|
function defineRegleOptions(options) {
|
|
4004
3978
|
return options;
|
|
4005
3979
|
}
|
|
4006
|
-
|
|
4007
3980
|
/**
|
|
4008
3981
|
* Merge multiple Regle instances into a single validation state.
|
|
4009
3982
|
* Useful for combining multiple forms or validation scopes.
|
|
@@ -4159,11 +4132,26 @@ function mergeRegles(regles, _scoped) {
|
|
|
4159
4132
|
function $extractDirtyFields(filterNullishValues = true) {
|
|
4160
4133
|
return Object.values(regles).map((regle) => regle.$extractDirtyFields(filterNullishValues));
|
|
4161
4134
|
}
|
|
4135
|
+
function $setExternalErrors(errors) {
|
|
4136
|
+
Object.values(regles).forEach((regle) => {
|
|
4137
|
+
regle.$setExternalErrors(errors);
|
|
4138
|
+
});
|
|
4139
|
+
}
|
|
4162
4140
|
function $clearExternalErrors() {
|
|
4163
4141
|
Object.values(regles).forEach((regle) => {
|
|
4164
4142
|
regle.$clearExternalErrors();
|
|
4165
4143
|
});
|
|
4166
4144
|
}
|
|
4145
|
+
function $validateSync(forceValues) {
|
|
4146
|
+
try {
|
|
4147
|
+
if (forceValues) $value.value = forceValues;
|
|
4148
|
+
return Object.values(regles).every((regle) => {
|
|
4149
|
+
return regle.$validateSync(forceValues);
|
|
4150
|
+
});
|
|
4151
|
+
} catch {
|
|
4152
|
+
return false;
|
|
4153
|
+
}
|
|
4154
|
+
}
|
|
4167
4155
|
async function $validate(forceValues) {
|
|
4168
4156
|
try {
|
|
4169
4157
|
if (forceValues) $value.value = forceValues;
|
|
@@ -4208,8 +4196,10 @@ function mergeRegles(regles, _scoped) {
|
|
|
4208
4196
|
$reset,
|
|
4209
4197
|
$touch,
|
|
4210
4198
|
$validate,
|
|
4199
|
+
$validateSync,
|
|
4211
4200
|
$extractDirtyFields,
|
|
4212
|
-
$clearExternalErrors
|
|
4201
|
+
$clearExternalErrors,
|
|
4202
|
+
$setExternalErrors
|
|
4213
4203
|
});
|
|
4214
4204
|
watchEffect(() => {
|
|
4215
4205
|
if (scoped) return;
|
|
@@ -4218,7 +4208,6 @@ function mergeRegles(regles, _scoped) {
|
|
|
4218
4208
|
});
|
|
4219
4209
|
return fullStatus;
|
|
4220
4210
|
}
|
|
4221
|
-
|
|
4222
4211
|
function createUseCollectScope(instances, options) {
|
|
4223
4212
|
function useCollectScope(namespace) {
|
|
4224
4213
|
const computedNamespace = computed(() => toValue(namespace));
|
|
@@ -4257,7 +4246,6 @@ function createUseCollectScope(instances, options) {
|
|
|
4257
4246
|
}
|
|
4258
4247
|
return { useCollectScope };
|
|
4259
4248
|
}
|
|
4260
|
-
|
|
4261
4249
|
function createUseScopedRegleComposable(instances, customUseRegle) {
|
|
4262
4250
|
const scopedUseRegle = customUseRegle ?? useRegle;
|
|
4263
4251
|
const useScopedRegle = ((state, rulesFactory, options) => {
|
|
@@ -4308,7 +4296,6 @@ function createUseScopedRegleComposable(instances, customUseRegle) {
|
|
|
4308
4296
|
});
|
|
4309
4297
|
return { useScopedRegle };
|
|
4310
4298
|
}
|
|
4311
|
-
|
|
4312
4299
|
/**
|
|
4313
4300
|
* Create a scoped validation system for collecting and validating multiple form instances.
|
|
4314
4301
|
* Useful for dynamic forms, multi-step wizards, or component-based form architectures.
|
|
@@ -4411,7 +4398,6 @@ const useCollectScope = _useCollectScope;
|
|
|
4411
4398
|
* @see {@link https://reglejs.dev/advanced-usage/scoped-validation Documentation}
|
|
4412
4399
|
*/
|
|
4413
4400
|
const useScopedRegle = _useScopedRegle;
|
|
4414
|
-
|
|
4415
4401
|
/**
|
|
4416
4402
|
* Create variant-based validation rules that depend on a discriminant field value.
|
|
4417
4403
|
* Useful for union types where different fields are required based on a type discriminant.
|
|
@@ -4504,7 +4490,6 @@ function variantToRef(root, discriminantKey, discriminantValue, _options) {
|
|
|
4504
4490
|
});
|
|
4505
4491
|
return returnedRef;
|
|
4506
4492
|
}
|
|
4507
|
-
|
|
4508
4493
|
/**
|
|
4509
4494
|
* Helper method to wrap a raw rules object with type inference.
|
|
4510
4495
|
* Provides autocomplete and type-checking without processing.
|
|
@@ -4561,7 +4546,6 @@ function defineRules(rules) {
|
|
|
4561
4546
|
function refineRules(rules, refinement) {
|
|
4562
4547
|
return (state) => merge({ ...rules }, refinement(state));
|
|
4563
4548
|
}
|
|
4564
|
-
|
|
4565
4549
|
/**
|
|
4566
4550
|
* Vue plugin to enable Regle devtools integration with Vue Devtools.
|
|
4567
4551
|
* Provides debugging capabilities for inspecting validation trees, states, and actions.
|
|
@@ -4589,5 +4573,4 @@ const RegleVuePlugin = { install(app, options) {
|
|
|
4589
4573
|
if (options) app.provide(regleConfigSymbol, options);
|
|
4590
4574
|
if (typeof window !== "undefined" && true) createDevtools(app);
|
|
4591
4575
|
} };
|
|
4592
|
-
|
|
4593
|
-
export { InternalRuleType, RegleVuePlugin, createRule, createScopedUseRegle, createVariant, defineRegleConfig, defineRegleOptions, defineRules, extendRegleConfig, flatErrors, getErrors, getIssues, inferRules, isRegleInstance, markStatic, mergeRegles, narrowVariant, refineRules, unwrapRuleParameters, useCollectScope, useRegle, useRootStorage, useRules, useScopedRegle, variantToRef };
|
|
4576
|
+
export { InternalRuleType, RegleVuePlugin, createRule, createScopedUseRegle, createVariant, defineRegleConfig, defineRegleOptions, defineRules, extendRegleConfig, flatErrors, getErrors, getIssues, inferRules, isRegleInstance, markStatic, mergeRegles, narrowVariant, refineRules, unwrapRuleParameters, useCollectScope, useRegle, useRootStorage, useRules, useScopedRegle, variantToRef };
|
package/dist/regle-core.min.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @regle/core v1.
|
|
2
|
+
* @regle/core v1.21.0-beta.2
|
|
3
3
|
* (c) 2026 Victor Garcia
|
|
4
4
|
* @license MIT
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import{computed as e,effectScope as t,getCurrentInstance as n,getCurrentScope as r,inject as i,isRef as a,markRaw as o,nextTick as s,onMounted as c,onScopeDispose as l,reactive as u,ref as d,shallowRef as f,toRef as p,toValue as m,triggerRef as h,unref as g,version as _,watch as v,watchEffect as y}from"vue";function b(e){return e?.constructor?.name==`File`}function x(e){return e&&(e instanceof Date||e.constructor.name==`File`||e.constructor.name==`FileList`)?!1:typeof e==`object`&&!!e&&!Array.isArray(e)}function S(e,t,n){if(!e)return n;var r,i;if(Array.isArray(t)&&(r=t.slice(0)),typeof t==`string`&&(r=t.split(`.`)),typeof t==`symbol`&&(r=[t]),!Array.isArray(r))throw Error(`props arg must be an array, a string or a symbol`);for(;r.length;)if(i=r.shift(),!e||!i||(e=e[i],e===void 0))return n;return e}function C(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 w(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 T(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function E(e,t,n,r=!1){Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})}function D(e){return typeof e==`function`&&!!e.prototype&&`constructor`in e.prototype&&e.prototype.constructor===e}function O(e,t=!0,n=!0){return e==null?!0:e instanceof Date?isNaN(e.getTime()):b(e)?e.size<=0:Array.isArray(e)?t?e.length===0:!1:x(e)?e==null?!0:n?Object.keys(e).length===0:!1:!String(e).length}const k=Symbol(`regle-rule`);function A(e){let t=[];return e.global&&t.push(`g`),e.ignoreCase&&t.push(`i`),e.multiline&&t.push(`m`),e.sticky&&t.push(`y`),e.unicode&&t.push(`u`),t.join(``)}function j(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=>j(e,t++)))),r==`Map`&&(n=new Map([...e].map(e=>[j(e[0]),j(e[1])]))),r==`Date`&&(n=new Date(e.getTime())),r==`RegExp`&&(n=RegExp(e.source,A(e))),r==`Array`||r==`Object`){n=Array.isArray(e)?[]:{};for(let r in e)n[r]=j(e[r],t++)}return n}function M(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 N(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 P(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(!P(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(x(e)&&x(t)&&s&&(r||!r&&n)&&!P(e[s],t[s],n,!1))return!1}return!0}return e!==e&&t!==t}var F=class extends Error{constructor(e=`Promise was aborted`){super(e),this.name=`AbortError`}};function I(e){let t=new AbortController,{signal:n}=t,r=new Promise((t,r)=>{function i(){r(new F)}n.addEventListener(`abort`,i),e.then(e=>{n.removeEventListener(`abort`,i),n.aborted?r(new F):t(e)}).catch(e=>{n.removeEventListener(`abort`,i),n.aborted?r(new F):r(e)})});function i(e){t.abort(e)}return{promise:r,abort:i,signal:n}}function L(e,t){if(!a(e))return u(e);let r=d(!1);return n()&&c(async()=>{await s(),typeof window<`u`&&window.requestAnimationFrame(()=>{r.value=!0})}),u(new Proxy({},{get(n,i,a){if(t.value&&i!==`$value`&&r.value)return Reflect.get(n,i,a);if(e.value!==void 0)return g(Reflect.get(e.value,i,a))},set(t,n,r){return a(e.value[n])&&!a(r)?e.value[n].value=r:e.value[n]=r,!0},deleteProperty(t,n){return Reflect.deleteProperty(e.value,n)},has(t,n){return e.value===void 0?!1:Reflect.has(e.value,n)},ownKeys(){return e.value===void 0?[]:Object.keys(e.value)},getOwnPropertyDescriptor(){return{enumerable:!0,configurable:!0}}}))}const R={Inline:`__inline`,Async:`__async`};function z(e){try{return e.map(e=>m(e))}catch{return[]}}function B(t){return t.map(t=>t instanceof Function?e(t):a(t)?t:p(()=>t))}function V(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 H(e,...t){let{validator:n,type:r,async:i}=e,a=i||r===R.Async||n.constructor.name===`AsyncFunction`;return o({validator(n,...r){return e.validator(n,...z(r.length?r:t))},message(n){return typeof e.message==`function`?e.message({...n,$params:z(n?.$params?.length?n.$params:t)}):e.message},active(n){return typeof e.active==`function`?e.active({...n,$params:z(n?.$params?.length?n.$params:t)}):e.active??!0},tooltip(n){return typeof e.tooltip==`function`?e.tooltip({...n,$params:z(n?.$params?.length?n.$params:t)}):e.tooltip??[]},exec(n){let r=e.validator(n,...z(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:a,_params:B(t),_brand:k})}function U(e){if(typeof e.validator==`function`){let t=[],n=e.async??e.validator.constructor.name===`AsyncFunction`,r=H({...e,async:n},...t);if(V(e.validator)>1){let t=function(...t){return H(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`)}const W=Symbol.for(`regle:instance`);function G(e){return typeof e==`object`&&!!e&&W in e}function K(e){return x(e.value)}function ee(e,n,r){let i=t(),a;return a=e instanceof Function?i.run(()=>e(n,r??0)):e,{scope:i,unwrapped:a}}const q={LessThan:-1,EqualTo:0,GreaterThan:1};function J(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 q.GreaterThan;if(i>t)return q.LessThan;if(!isNaN(t)&&isNaN(i))return q.GreaterThan;if(isNaN(t)&&!isNaN(i))return q.LessThan}return q.EqualTo}const Y=J(_,`3.5.0`)!==-1;function X(){return Math.floor(Math.random()*Date.now()).toString()}function te(){return typeof window>`u`?X():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function ne(e){return r()?(l(e),!0):!1}function re(e){let n=!1,r,i=t(!0);return((...t)=>(n||=(r=i.run(()=>e(...t)),!0),r))}function ie(e,t){return e.some(e=>t?e?.[t]:!1)}function ae(e,t){return t?e.reduce((e,n)=>{let r=n?.[t]||[];return e.concat(r)},[]):[]}const oe=Symbol(`regle`),Z=Symbol(`regle-config`),Q={REGLE_STATIC:`__regle_static`};function se(e,t){return!de(e.value)&&(K(e)||x(t.value)&&!O(t.value)&&!Object.entries(t.value).some(([e,t])=>$(t)||typeof t==`function`))}function ce(e,t){return!!e.value&&x(e.value)&&`$each`in e.value||Array.isArray(t.value)}function le(e){return!!e.value&&(x(e.value)||K(e.value))}function $(e){return(x(e)||typeof e==`function`)&&`_validator`in e}function ue(e){return typeof e.value==`function`?`_validator`in e.value:!0}function de(e){return x(e)&&T(e,Q.REGLE_STATIC)&&e[Q.REGLE_STATIC]===!0}function fe(e){return x(e)&&`$fields`in e}function pe(e){return!!e&&`$rules`in e}var me=`1.20.4`;function he(){let e=f(new Map),t=f(new Map),n=f(new Map),i=f(new Map),a=f(new Map),o=f(new Map),s=f(new Map);function c(e){let n=t.value.get(e);if(n)return n;{let n=d({});return t.value.set(e,n),n}}function u(e){let t=n.value.get(e);if(t)return t;{let t=d([]);return n.value.set(e,t),t}}function p(e,t){o.value.set(e,t)}function m(e){return o.value.get(e)}function h(e,t,n){s.value.set(`${e}-${t}`,n)}function g(e,t){return s.value.get(`${e}-${t}`)}function _(e,t){e&&t!=null&&s.value.delete(`${e}-${t}`)}function v(e,t){i.value.set(e,t)}function y(e){return i.value.get(e)??!1}function b(t,n){e.value.set(t,n)}function x(t,n){let r=e.value.get(t);if(r)return S(n,r)?{valid:!0}:{valid:!1}}function S(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];if(!i||!r||typeof r==`function`||typeof i==`function`||typeof r==`number`||typeof r==`boolean`||typeof r==`string`)return!1;if(`_params`in r){if(!r._params)return!0;if(Array.isArray(r._params))return r._params?.every((e,t)=>{if(typeof i==`number`||typeof i==`boolean`||typeof i==`string`)return!0;{let e=z(`_params`in i&&Array.isArray(i._params)?i._params:[]),n=z(r._params);return e?.[t]===n?.[t]}})}})}function C(e){let t=a.value.get(e);if(t)return t;{let t=d(!1),n=d(!0),r=d({}),i=d(!1);return a.value.set(e,{$pending:t,$valid:n,$metadata:r,$validating:i}),{$pending:t,$valid:n,$metadata:r,$validating:i}}}return r()&&l(()=>{e.value.clear(),t.value.clear(),n.value.clear(),i.value.clear(),a.value.clear(),s.value.clear()}),{addRuleDeclEntry:b,setDirtyEntry:v,checkRuleDeclEntry:x,getDirtyState:y,trySetRuleStatusRef:C,getFieldsEntry:c,getCollectionsEntry:u,getArrayStatus:g,addArrayStatus:h,deleteArrayStatus:_,arrayStatusStorage:s,addAdditionalRulesEntry:p,getAdditionalRulesEntry:m}}function ge({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&&Array.isArray(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 _e({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 ve(e){return x(e)&&`$each`in e}function ye(e,t){let{includePath:n=!1}=t??{};if(Array.isArray(e)&&e.every(e=>!x(e)))return e;if(ve(e)){let t=n?e.$self?.map(e=>({message:e,path:[]}))??[]:e.$self??[],r=e.$each?.map(e=>be(e,n))??[];return t?.concat(r.flat())}else return Object.entries(e).map(([e,t])=>be(t,n,[e])).flat()}function be(e,t=!1,n){let r=t&&!n?[]:n;if(Array.isArray(e)&&e.every(e=>!x(e)))return t?e.map(e=>({message:e,path:r??[]})):e;if(ve(e)){let n=r?.length?e.$self?.map(e=>({message:e,path:r??[]}))??[]:e.$self??[],i=e.$each?.map((e,n)=>be(e,t,r?.concat(n)))??[];return n?.concat(i.flat())}else return Object.entries(e).map(([e,n])=>be(n,t,r?.concat(e))).flat()}function xe({customMessages:n,rule:r,ruleKey:i,state:a,path:o,cachePath:s,storage:c,modifiers:l}){let f=t(),p={},m,h=e(()=>$(r.value)&&r.value._async),g=d(!1),{$pending:_,$valid:y,$metadata:b,$validating:x}=c.trySetRuleStatusRef(`${s}.${i}`);function S(){f=t(),p=f.run(()=>{let t=d(!1),s=d(!1),c=d(!0),l=d(!1),u=d(!1),f=e(()=>({$value:a.value,$error:s.value,$dirty:t.value,$pending:l.value,$correct:u.value,$invalid:c.value,$rule:{$valid:y.value,$invalid:!y.value,$pending:_.value},$params:S.value,...b.value})),p=e(()=>{try{return ue(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),ue(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 O(e)&&(e=`This field is not valid`),e}),g=e(()=>m(`tooltip`)),v=e(()=>ue(r)&&r.value.type?r.value.type:i),x=e(()=>ue(r)?r.value.validator:r.value),S=e(()=>typeof r.value==`function`?[]:z(r.value._params??[]));return{$active:p,$message:h,$type:v,$validator:x,$params:S,$path:e(()=>`${o}.${i}`),$tooltip:g,$fieldCorrect:u,$fieldError:s,$fieldDirty:t,$fieldPending:l,$fieldInvalid:c}}),m=v(p?.$params,()=>{(!l.$silent.value||l.$rewardEarly.value&&p.$fieldError.value)&&E()},{deep:Y?1:!0})}S();function C(){y.value=!0,p.$fieldDirty.value&&(_.value=!0)}async function w(){let e=!1;try{let t=p.$validator.value;if(typeof t!=`function`)return console.error(`${o}: Incorrect rule format, it needs to be either a function or created with "createRule".`),!1;let n=t(a.value,...p.$params.value),r=a.value;C();let i;if(i=n instanceof Promise?await n:n,a.value!==r)return!0;if(typeof i==`boolean`)e=i;else{let{$valid:t,...n}=i;e=t,b.value=n}}catch{e=!1}finally{_.value=!1}return e}function T(e,t=!0){if($(r.value)&&r.value._async)return!0;let n=e(a.value,...p.$params.value);if(n instanceof Promise)return!0;if(n!=null){if(typeof n==`boolean`)return n;{let{$valid:e,...t}=n;return b.value=t,e}}return!0}async function E(){try{x.value=!0;let e=!1;if(g.value=!0,$(r.value)&&r.value._async)e=await w();else{let t=p.$validator.value;e=T(t)}return y.value=e,e}catch{return!1}finally{x.value=!1,g.value=!1}}function D(){try{return x.value=!0,T(p.$validator.value)}catch{return!1}finally{x.value=!1}}function k(){y.value=!0,b.value={},_.value=!1,x.value=!1,S()}function A(){m(),f.stop(),f=t()}return u({...p,$pending:_,$valid:y,$metadata:b,$haveAsync:h,$maybePending:g,$validating:x,$parse:E,$parseSync:D,$unwatch:A,$watch:S,$reset:k})}function Se(e){return{"~standard":{version:1,vendor:`regle`,validate:async t=>{let{valid:n,data:r,errors:i}=await e(t,!0);return n?{value:r,issues:[]}:{issues:ye(i,{includePath:!0})}}}}}function Ce({state:n,rulesDef:r,customMessages:i,path:a,cachePath:o,fieldName:c,storage:l,options:f,externalErrors:h,schemaErrors:g,schemaMode:_,onUnwatch:b,$isArray:S,initialState:C,originalState:w,shortcuts:T,overrides:E,onValidate:D}){let k=t(),A,F=[],L,R,z,B,V=()=>{},H,U=()=>{},W=d(!1),G=d(l.getAdditionalRulesEntry(o)??{});function K(e){G.value=e??{},l.addAdditionalRulesEntry(o,e??{}),q(),V()}function ee(e){K(e)}function q(){let e={...r.value,...G.value},t=[];for(let r in e){if(r.startsWith(`$`)||r.startsWith(`~`))continue;let s=e[r];if(!s)continue;let c=p(()=>s);t.push([r,xe({modifiers:{$silent:A.$silent,$rewardEarly:A.$rewardEarly},customMessages:i,rule:c,ruleKey:r,state:n,path:a,cachePath:o,storage:l,$debounce:Q.value.$debounce})])}Z.value=Object.fromEntries(t),l.addRuleDeclEntry(o,e)}function J(){let e={...r.value,...G.value},t=l.checkRuleDeclEntry(o,e),n={};for(let t in e)t.startsWith(`$`)&&(n[t]=e[t]);return Q.value=n,t}function X(){let e=J();ie(),q(),A.processShortcuts(),te(),ne(),e?.valid!=null&&(A.$dirty.value=l.getDirtyState(o),(A.$dirty.value&&!A.$silent.value||A.$rewardEarly.value&&A.$error.value)&&V()),l.addRuleDeclEntry(o,r.value)}function te(){V=A.$debounce.value>0?N(oe,A.$debounce.value,{trackDebounceRef:W}):oe}function ne(){U=A.$debounce.value>0?N(()=>{A.$dirty.value=!0},A.$debounce.value):()=>{A.$dirty.value=!0}}function re(){if(Z.value)for(let e of Object.values(Z.value))e.$unwatch();R(),B?.(),A.$dirty.value&&l.setDirtyEntry(o,A.$dirty.value),L?.(),k.stop(),k=t();for(let e of F)e.stop();F=[],b?.(),z?.()}function ie(){if(Z.value)for(let e of Object.values(Z.value))e.$watch();A=k.run(()=>{let r=d(!1),i=d(!1),a=e(()=>r.value),o=e(()=>S||de(n.value)),s=e(()=>Q.value.$debounce==null?A.$haveAnyAsyncRule.value?200:0:Q.value.$debounce),l=e(()=>Q.value.$deepCompare==null?!1:Q.value.$deepCompare),p=e(()=>Q.value.$lazy==null?m(f.lazy)==null?!1:m(f.lazy)===!0:Q.value.$lazy),v=e(()=>Q.value.$immediateDirty==null?m(f.immediateDirty)==null?!1:m(f.immediateDirty)===!0:Q.value.$immediateDirty),b=e(()=>Q.value.$rewardEarly==null?m(f.rewardEarly)==null?!1:m(f.rewardEarly)===!0:!!Q.value.$rewardEarly),x=e(()=>Q.value.$clearExternalErrorsOnChange==null?m(f.clearExternalErrorsOnChange)==null?!D.value:m(f.clearExternalErrorsOnChange)===!0:!!Q.value.$clearExternalErrorsOnChange),w=e(()=>Q.value.$clearExternalErrorsOnValidate==null?m(f.clearExternalErrorsOnValidate)==null?!1:m(f.clearExternalErrorsOnValidate)===!0:!!Q.value.$clearExternalErrorsOnValidate),D=e(()=>b.value?!0:Q.value.$silent==null?m(f.silent)==null?!1:m(f.silent)===!0:Q.value.$silent),k=e(()=>Q.value.$autoDirty==null?m(f.autoDirty)==null?!0:m(f.autoDirty)===!0:Q.value.$autoDirty),j=e(()=>{if(Q.value.$isEdited!=null)return Q.value.$isEdited;if(E?.isEdited!=null)return E.isEdited}),N=e(()=>{for(let e of Object.values(Z.value))if(e.$validating)return!0;return!1}),I=e({get:()=>n.value,set(e){L(),n.value=e,ae()}}),R=e(()=>W.value?Y.value&&r.value:Y.value&&!J.value&&r.value),z=e(()=>ge({field:{$rules:Z.value,$error:R.value,$externalErrors:h?.value,$schemaErrors:g?.value,fieldName:X.value}})),B=e(()=>ge({field:{$rules:Z.value,$error:R.value,$externalErrors:h?.value,$schemaErrors:g?.value,fieldName:X.value},silent:!0})),V=e(()=>z.value.map(e=>e.$message)),H=e(()=>B.value.map(e=>e.$message)),U=d(!1);function G(e,t){return t instanceof Date&&e instanceof Date?M(t).getDate()!==M(e).getDate():t==null?!!e:Array.isArray(e)&&Array.isArray(t)?!P(e,t,Q.value.$deepCompare):t!==e}y(()=>{r.value?j.value?U.value=j.value(n.value,C.value,G):U.value=G(n.value,C.value):U.value=!1});let K=e(()=>U.value),ee=e(()=>_e({field:{$rules:Z.value}})),q=e(()=>!(Y.value||J.value)),J=e(()=>i.value||!b.value?Object.entries(Z.value).some(([e,t])=>t.$pending):!1),Y=e(()=>h?.value?.length||g?.value?.length?!0:te.value?!1:Object.values(Z.value).some(e=>!e.$valid||e.$maybePending)),X=e(()=>c??f.id??`root`),te=e(()=>!_&&!Object.keys(Z.value).some(e=>!e.startsWith(`$`))),ne=e(()=>{if(h?.value?.length||te.value||W.value)return!1;if(r.value&&!O(n.value)&&!N.value&&!J.value){if(_)return!g?.value?.length;{let e=Object.values(Z.value);for(let t of e)if(t.$active&&!t.$valid)return!1;return e.some(e=>e.$active)}}return!1}),re=e(()=>Object.values(Z.value).some(e=>e.$haveAsync)),ie=e(()=>({$debounce:s.value,$lazy:p.value,$rewardEarly:b.value,$autoDirty:k.value,$silent:D.value,$clearExternalErrorsOnChange:x.value,$clearExternalErrorsOnValidate:w.value,$immediateDirty:v.value,$isEdited:j.value,$disabled:m(f.disabled)??!1}));function oe(){T?.fields&&Object.entries(T.fields).forEach(([e,i])=>{let o=t();se[e]=o.run(()=>{let e=d();return y(()=>{e.value=i(u({$dirty:r,$externalErrors:h?.value??[],$value:n,$silentValue:I,$rules:Z,$error:R,$pending:J,$invalid:Y,$correct:ne,$errors:V,$ready:q,$silentErrors:H,$anyDirty:a,$tooltips:ee,$name:X,$inactive:te,$edited:U,$anyEdited:K}))}),e}),F.push(o)})}let se={};return{$error:R,$pending:J,$invalid:Y,$correct:ne,$debounce:s,$deepCompare:l,$lazy:p,$immediateDirty:v,$ready:q,$issues:z,$silentIssues:B,$errors:V,$silentErrors:H,$rewardEarly:b,$autoDirty:k,$silent:D,$clearExternalErrorsOnChange:x,$clearExternalErrorsOnValidate:w,$anyDirty:a,$edited:U,$anyEdited:K,$name:X,$haveAnyAsyncRule:re,$shortcuts:se,$validating:N,$tooltips:ee,$dirty:r,processShortcuts:oe,$silentValue:I,$inactive:te,$modifiers:ie,$isArrayOrRegleStatic:o}}),ae(),R=v(A.$dirty,e=>{l.setDirtyEntry(o,e),Object.values(Z.value).forEach(t=>{t.$fieldDirty=e})}),B=v([A.$error,A.$correct,A.$invalid,A.$pending],()=>{Object.values(Z.value).forEach(e=>{e.$fieldError=A.$error.value,e.$fieldInvalid=A.$invalid.value,e.$fieldPending=A.$pending.value,e.$fieldCorrect=A.$correct.value})}),z=v(A.$haveAnyAsyncRule,te)}function ae(){L=v(n,()=>{A.$autoDirty.value&&!A.$silent.value&&(A.$dirty.value||U()),r.value instanceof Function&&X(),(!A.$silent.value||A.$rewardEarly.value&&A.$error.value)&&V(),A.$clearExternalErrorsOnChange.value&&he()},{deep:A.$isArrayOrRegleStatic.value?!0:Y?1:!0})}async function oe(){try{let{promise:e}=le(Promise.allSettled(Object.values(Z.value).map(e=>e.$parse())));await e}catch{}}let Z=d({}),Q=d({});X();function se(e,t){if(ce(),he(),A.$dirty.value=!1,l.setDirtyEntry(o,!1),!t)if(e?.toOriginalState)n.value=j(w),C.value=j(w);else if(e?.toInitialState)n.value=j(C.value);else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,C.value=j(t),n.value=j(t)}else C.value=x(n.value)&&!de(n.value)?j(n.value):Array.isArray(n.value)?[...n.value]:n.value;if(e?.clearExternalErrors&&he(),!t&&!e?.keepValidationState)for(let e of Object.values(Z.value))e.$reset();if(!A.$lazy.value&&!A.$silent.value&&!t)for(let e of Object.values(Z.value))e.$parse()}function ce(){`cancel`in V&&V.cancel()}function le(e){return H&&H.abort(),H=I(e),H}function $(){ce(),H&&H.abort()}function ue(e=!0,t=!1){A.$dirty.value||U(),t&&e?(!A.$silent.value||A.$rewardEarly.value&&A.$error.value)&&(ce(),V()):e&&(ce(),V())}async function fe(e){try{if(e&&(n.value=e),_)return D?(ue(!1),D()):{valid:!1,data:n.value,errors:A.$errors.value,issues:A.$issues.value};let t=n.value;if(A.$dirty.value||(A.$dirty.value=!0),O(Z.value))return{valid:!0,data:t,errors:A.$errors.value,issues:A.$issues.value};$();let{promise:r}=le(Promise.allSettled(Object.values(Z.value).map(e=>e.$parse()))),i=await r;return await s(),{valid:i.every(e=>e.status===`fulfilled`&&e.value===!0),data:t,errors:A.$errors.value,issues:A.$issues.value}}catch{return{valid:!1,data:n.value,errors:A.$errors.value,issues:A.$issues.value}}}function pe(e){try{return e&&(n.value=e),A.$dirty.value||(A.$dirty.value=!0),_?!1:Object.values(Z.value).map(e=>e.$parseSync()).every(e=>!!e)}catch{return!1}}function me(e=!0){return A.$dirty.value?n.value:e?{_null:!0}:null}function he(){h?.value?.length&&(h.value=[])}!A.$lazy.value&&!A.$dirty.value&&!A.$silent.value&&oe(),A.$immediateDirty.value&&(A.$dirty.value=!0);let{$shortcuts:ve,$validating:ye,$autoDirty:be,$rewardEarly:Ce,$clearExternalErrorsOnChange:we,$clearExternalErrorsOnValidate:Te,$haveAnyAsyncRule:Ee,$debounce:De,$lazy:Oe,...ke}=A,Ae=u({...ke,$externalErrors:h,$value:n,$initialValue:C,$originalValue:w,$rules:Z,...ve,$path:a,$isDebouncing:W,$reset:se,$touch:ue,$validate:fe,$validateSync:pe,$unwatch:re,$watch:ie,$extractDirtyFields:me,$clearExternalErrors:he,$abort:$,$addRules:K,addRules:ee,$schemaMode:_,"~modifiers":A.$modifiers,...Se(fe)});return Object.defineProperty(Ae,Symbol.for(`regle:instance`),{value:!0}),Ae}function we({$id:t,path:n,cachePath:r,index:i,options:a,storage:o,stateValue:s,customMessages:c,rules:l,externalErrors:u,schemaErrors:d,initialState:f,originalState:m,shortcuts:h,fieldName:g,schemaMode:_,overrides:v}){let y=s.value?.$id??l.$key??te(),b=`${r}.${String(y)}`,S=`${n}.${i}`;typeof s.value==`object`&&s.value!=null&&(s.value.$id||Object.defineProperties(s.value,{$id:{value:y,enumerable:!1,configurable:!1,writable:!1}}));let C=p(u?.value??[],i),w=e(()=>d?.value?.[i]),T=De({index:i,state:s,rulesDef:p(()=>l),customMessages:c,path:S,cachePath:b,storage:o,options:a,externalErrors:C,schemaErrors:w,initialState:f,originalState:m,shortcuts:h,fieldName:g,schemaMode:_,overrides:v});return T&&(T.$id=s.value?.$id??String(y),o.addArrayStatus(t,T.$id,T)),s.value&&(!x(s.value)||de(s.value))&&_&&T?.$touch(),T}function Te({state:n,rulesDef:r,customMessages:i,path:a,cachePath:o,storage:s,options:c,externalErrors:l,schemaErrors:f,schemaMode:h,initialState:g,originalState:_,shortcuts:b,fieldName:x,overrides:S}){let C=t(),w,T=t(),E,D=[];if(!Array.isArray(n.value)&&!r.value.$each)return;let k=d(),A=d(n.value),M=d({}),N,P,F=d({}),I=s.getCollectionsEntry(a);E=T.run(()=>({isPrimitiveArray:e(()=>n.value?.length?Array.isArray(n.value)&&n.value.length?n.value.every(e=>typeof e!=`object`):r.value.$each&&!(r.value.$each instanceof Function)?Object.values(r.value.$each).every(e=>$(e)||typeof e==`function`):!1:!1)})),L(),V();function L(){M.value=Object.fromEntries(Object.entries(r.value).filter(([e])=>e.startsWith(`$`))),typeof n.value==`object`&&(n.value!=null&&!n.value?.$id&&n.value!==null?(k.value=te(),Object.defineProperties(n.value,{$id:{value:k.value,enumerable:!1,configurable:!1,writable:!1}})):n.value?.$id&&(k.value=n.value.$id)),A.value=F.value.$value,Array.isArray(n.value)&&(!E.isPrimitiveArray.value||h)?I.value=n.value.map((t,n)=>{let{scope:u,unwrapped:d}=ee(r.value.$each,p(()=>t),n);u&&D.push(u);let m=p(g.value??[],n),v=p(l?.value??{},`$each`),y=e(()=>f?.value?.$each);return we({$id:k.value,path:a,cachePath:o,customMessages:i,rules:d??{},stateValue:p(()=>t),index:n,options:c,storage:s,externalErrors:v,schemaErrors:y,initialState:m,originalState:_,shortcuts:b,fieldName:x,schemaMode:h,overrides:S})||null}).filter(e=>!!e):I.value=[],F.value=Ce({state:n,rulesDef:r,customMessages:i,path:a,cachePath:a,storage:s,options:c,externalErrors:p(l?.value??{},`$self`),schemaErrors:e(()=>f?.value?.$self),$isArray:!0,initialState:g,originalState:_,shortcuts:b,fieldName:x,schemaMode:h,overrides:S})}function R(){if(Array.isArray(n.value)&&(!E.isPrimitiveArray.value||h)){let t=j(I.value);I.value=n.value.map((t,n)=>{let o=p(()=>t);if(t.$id&&I.value.find(e=>e.$id===t.$id)){let e=s.getArrayStatus(k.value,t.$id);return e?(e.$value=o,e):null}else{let{scope:t,unwrapped:u}=ee(r.value.$each,o,n);t&&D.push(t);let d=p(l?.value??{},`$each`),m=e(()=>f?.value?.$each??[]);return we({$id:k.value,path:a,cachePath:a,customMessages:i,rules:u??{},stateValue:o,index:n,options:c,storage:s,externalErrors:d,schemaErrors:m,initialState:p(g.value??[],n),originalState:_,shortcuts:b,fieldName:x,schemaMode:h,overrides:S})||null}}).filter(e=>!!e),t.filter(e=>!n.value?.find(t=>e.$id===t.$id)).forEach((e,t)=>{s.deleteArrayStatus(k.value,t.toString())})}else I.value=[]}function z(){N=v(n,()=>{P?.(),n.value!=null&&!Object.hasOwn(n.value,`$id`)&&!k.value?L():R(),B()},{deep:Y?1:!0,flush:`pre`}),B()}function B(){P=v(n,()=>{w.$autoDirty.value&&!w.$silent.value&&F.value.$touch(!1,!0)},{flush:`post`})}function V(){z(),C=t(),w=C.run(()=>{let r=e({get:()=>n.value,set(e){N?.(),P?.(),n.value=e,z()}}),i=e(()=>F.value.$dirty&&(!I.value.length||I.value.every(e=>e.$dirty))),o=e(()=>F.value.$anyDirty||I.value.some(e=>e.$anyDirty)),s=e(()=>F.value.$invalid||I.value.some(e=>e.$invalid)),l=e(()=>(h?F.value.$correct:O(F.value.$rules)?!0:F.value.$correct)&&(!I.value.length||I.value.every(e=>e.$correct||e.$anyDirty&&!e.$invalid))),f=e(()=>F.value.$error||I.value.some(e=>e.$error)),p=e(()=>!(s.value||v.value)),v=e(()=>F.value.$pending||I.value.some(e=>e.$pending)),C=e(()=>!!I.value.length&&I.value.every(e=>e.$edited)),w=e(()=>F.value.$anyEdited||I.value.some(e=>e.$anyEdited)),T=e(()=>({$self:F.value.$issues,$each:I.value.map(e=>e.$issues)})),E=e(()=>({$self:F.value.$errors,$each:I.value.map(e=>e.$errors)})),k=e(()=>({$self:F.value.$silentErrors,$each:I.value.map(e=>e.$silentErrors)})),A=e(()=>M.value.$rewardEarly==null?m(c.rewardEarly)==null?!1:m(c.rewardEarly)===!0:M.value.$rewardEarly),j=e(()=>A.value?!0:M.value.$silent==null?m(c.silent)==null?!1:m(c.silent)===!0:M.value.$silent),L=e(()=>M.value.$autoDirty==null?m(c.autoDirty)==null?!0:m(c.autoDirty)===!0:M.value.$autoDirty),R=e(()=>M.value.$immediateDirty==null?m(c.immediateDirty)==null?!1:m(c.immediateDirty)===!0:M.value.$immediateDirty),B=e(()=>M.value.$clearExternalErrorsOnChange==null?m(c.clearExternalErrorsOnChange)==null?!0:m(c.clearExternalErrorsOnChange)===!0:M.value.$clearExternalErrorsOnChange),V=e(()=>M.value.$clearExternalErrorsOnValidate==null?m(c.clearExternalErrorsOnValidate)==null?!1:m(c.clearExternalErrorsOnValidate)===!0:M.value.$clearExternalErrorsOnValidate),H=e(()=>{if(M.value.$isEdited!=null)return M.value.$isEdited;if(S?.isEdited!=null)return S.isEdited}),U=e(()=>x??c.id??`root`),W=e(()=>({$deepCompare:M.value.$deepCompare??!1,$debounce:M.value.$debounce??0,$lazy:M.value.$lazy??!1,$rewardEarly:A.value,$autoDirty:L.value,$silent:j.value,$clearExternalErrorsOnChange:B.value,$clearExternalErrorsOnValidate:V.value,$immediateDirty:R.value,$isEdited:H.value,$disabled:m(c.disabled)??!1}));function G(){b?.collections&&Object.entries(b?.collections).forEach(([e,c])=>{let m=t();K[e]=m.run(()=>{let e=d();return y(()=>{e.value=c(u({$dirty:i,$error:f,$path:a,$silentValue:r,$pending:v,$invalid:s,$correct:l,$errors:E,$silentErrors:k,$initialValue:g,$originalValue:_,$ready:p,$anyDirty:o,$name:U,$each:I,$self:F,$value:n,$edited:C,$anyEdited:w,$issues:T}))}),e}),D.push(m)})}let K={};return G(),{$dirty:i,$anyDirty:o,$invalid:s,$correct:l,$error:f,$pending:v,$errors:E,$silentErrors:k,$ready:p,$name:U,$shortcuts:K,$silentValue:r,$edited:C,$anyEdited:w,$rewardEarly:A,$silent:j,$autoDirty:L,$issues:T,$modifiers:W}}),E.isPrimitiveArray.value&&r.value.$each&&console.warn(`${a} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`)}function H(){N?.(),F.value&&F.value.$unwatch(),I.value&&I.value.forEach(e=>{`$dirty`in e&&e.$unwatch()}),C.stop(),C=t(),T.stop(),T=t(!0),D.forEach(e=>e.stop()),D=[]}function U(e=!0,t=!1){F.value.$touch(e,t),I.value.forEach(n=>{n.$touch(e,t)})}function W(e,t){if(H(),!t)if(e?.toOriginalState)n.value=j(_),g.value=j(_);else if(e?.toInitialState)n.value=j(g.value);else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,g.value=j(t),n.value=j(t)}else g.value=j(n.value);e?.clearExternalErrors&&J(),e?.keepValidationState||(F.value.$reset(e,t),I.value.forEach(t=>{t.$reset(e,!0)})),t||L()}function G(){F.value.$abort(),I.value.forEach(e=>{e.$abort()})}async function K(e){e&&(n.value=e);let t=n.value;try{return G(),{valid:(await Promise.allSettled([F.value.$validate(e),...I.value.map(e=>e.$validate())])).every(e=>e.status===`fulfilled`?e.value.valid===!0:!1),data:t,errors:w.$errors.value,issues:w.$issues.value}}catch{return{valid:!1,data:t,errors:w.$errors.value,issues:w.$issues.value}}}function q(e){e&&(n.value=e);try{return[F.value.$validateSync(e),...I.value.map(e=>e.$validateSync())].every(e=>!!e)}catch{return!1}}function J(){F.value.$clearExternalErrors(),I.value.forEach(e=>{e.$clearExternalErrors()})}function X(e=!0){let t=I.value.map(t=>{if(fe(t))return t.$extractDirtyFields(e)});return e&&t.every(e=>O(e))&&(t=[]),t}let{$shortcuts:ne,...re}=w;return u({$self:F,...re,...ne,$path:a,$each:I,$value:n,$initialValue:g,$originalValue:_,$validate:K,$validateSync:q,$unwatch:H,$watch:V,$touch:U,$reset:W,$abort:G,$extractDirtyFields:X,$clearExternalErrors:J,"~modifiers":w.$modifiers,...Se(K)})}function Ee({rulesDef:n,state:r,path:i=``,cachePath:a,rootRules:o,externalErrors:s,schemaErrors:c,rootSchemaErrors:l,validationGroups:f,initialState:h,originalState:_,fieldName:b,...S}){let C=t(),w,T=[],E=null,D=null,k=null,A=null,M=d(void 0);async function N(t=!0){let o=Object.entries(n.value).filter(([e])=>e!==`$self`),l=Object.fromEntries(o.reduce((t,[n,o])=>{if(!o)return t;let l=p(r.value??{},n),u=p(()=>o),d=p(s?.value??{},n),f=e(()=>c?.value?.[n]),m=p(h?.value??{},n);return t.push([n,De({state:l,rulesDef:u,path:i?`${i}.${n}`:n,cachePath:a?`${a}.${n}`:n,externalErrors:d,schemaErrors:f,initialState:m,originalState:_?.[n],fieldName:n,...S})]),t},[])),u=Object.fromEntries(Object.entries(m(s)??{}).filter(([e,t])=>!(e in n.value)&&!!t).map(([t])=>{let n=p(r.value??{},t),o=p(s?.value??{},t),l=e(()=>c?.value?.[t]),u=p(h?.value??{},t),d=i?`${i}.${t}`:t,f=a?`${a}.${t}`:t;return[t,De({state:n,rulesDef:e(()=>({})),path:d,cachePath:f,externalErrors:o,schemaErrors:l,initialState:u,originalState:_?.[t],fieldName:t,...S})]})),d=Object.fromEntries(Object.entries(m(c)??{}).map(([t])=>{let n=i?`${i}.${t}`:t,o=a?`${a}.${t}`:t,l=p(r.value??{},t),u=p(s?.value??{},t),d=e(()=>c?.value?.[t]),f=p(h?.value??{},t);return[t,De({state:l,rulesDef:e(()=>({})),path:n,cachePath:o,externalErrors:u,schemaErrors:d,initialState:f,originalState:_?.[t],fieldName:t,...S})]})),f=Object.fromEntries(Object.entries(r.value??{}).filter(([e])=>!(e in n.value)&&!(e in(u??{}))&&!(e in(d??{}))).map(([t])=>{let n=p(r.value??{},t),o=p(s?.value??{},t),l=e(()=>c?.value?.[t]),u=p(h?.value??{},t);return[t,De({state:n,rulesDef:e(()=>({})),path:i?`${i}.${t}`:t,cachePath:a?`${a}.${t}`:t,externalErrors:o,schemaErrors:l,initialState:u,originalState:_?.[t],fieldName:t,...S})]}));F.value={...l,...u,...d,...f},t&&R()}function P(){n.value.$self&&(M.value=Ce({state:r,rulesDef:e(()=>n.value.$self??{}),path:i,cachePath:a,externalErrors:d(void 0),schemaErrors:d(void 0),initialState:p(h?.value??{},`$self`),originalState:_?.$self,fieldName:`$self`,...S}))}let F=S.storage.getFieldsEntry(a);N(),P();function I(){s&&(k=v(s,()=>{z(),N()},{deep:!0}))}function L(){A=v(r,()=>{z(),N(),w.$autoDirty.value&&!w.$silent.value&&H(!1,!0)},{flush:`post`})}function R(){o&&(E?.(),E=v(o,()=>{z(),N()},{deep:!0,flush:`pre`}),I()),l&&(D?.(),D=v(l,()=>{z(),N()},{deep:!0,flush:`post`})),L(),w=C.run(()=>{let a=e({get:()=>r.value,set(e){z(),r.value=e,N(),w.$autoDirty.value&&!w.$silent.value&&H(!1,!0)}}),o=e({get:()=>r.value,set(e){z(),r.value=e,N()}}),s=e(()=>{let e=F.value,t=Object.keys(e);if(!t.length)return!1;for(let n of t)if(!e[n]?.$dirty)return!1;return!0}),c=e(()=>{let e=F.value;for(let t in e)if(e[t]?.$anyDirty)return!0;return!1}),l=e(()=>{if(M.value?.$invalid)return!0;let e=F.value,t=Object.entries(e);if(!t.length)return!1;for(let[e,n]of t)if(n?.$invalid)return!0;return!1}),p=e(()=>{let e=Object.entries(F.value).reduce((e,[t,n])=>((!pe(n)||!n.$inactive)&&e.push([t,n]),e),[]),t=n.value.$self&&!O(n.value.$self);if(e.length||t){let t=M.value?.$correct??!0,n=!1;return n=S.schemaMode?e.every(([e,t])=>t.$correct):e.every(([e,t])=>pe(t)?`required`in t.$rules&&t.$rules.required.$active?t.$correct:!t.$invalid&&!t.$pending&&!t.$isDebouncing:t?.$correct),t&&n}return!1}),v=e(()=>{if(M.value?.$error)return!0;let e=F.value;if(!Object.keys(e).length)return!1;for(let t in e)if(e[t]?.$error)return!0;return!1}),x=e(()=>m(S.options.rewardEarly)==null?!1:m(S.options.rewardEarly)),C=e(()=>m(S.options.silent)==null?!!x.value:m(S.options.silent)===!0),E=e(()=>m(S.options.autoDirty)==null?!0:m(S.options.autoDirty)===!0),D=e(()=>m(S.options.immediateDirty)==null?!1:m(S.options.immediateDirty)===!0),k=e(()=>m(S.options.lazy)==null?!1:m(S.options.lazy)===!0),A=e(()=>m(S.options.clearExternalErrorsOnChange)==null?!1:m(S.options.clearExternalErrorsOnChange)===!0),j=e(()=>m(S.options.clearExternalErrorsOnValidate)==null?!1:m(S.options.clearExternalErrorsOnValidate)===!0),P=e(()=>!(l.value||L.value)),I=d(!1),L=e(()=>{if(M.value?.$pending||I.value)return!0;let e=F.value;for(let t in e)if(e[t]?.$pending)return!0;return!1}),R=e(()=>{let e={...M.value&&{$self:M.value?.$issues??[]}};for(let t in F.value)e[t]=F.value[t]?.$issues;return e}),B=e(()=>{let e={...M.value&&{$self:M.value?.$errors??[]}};for(let t in F.value)e[t]=F.value[t]?.$errors;return e}),V=e(()=>{let e={...M.value&&{$self:M.value?.$silentErrors??[]}};for(let t in F.value)e[t]=F.value[t]?.$silentErrors;return e}),U=e(()=>{if(M.value?.$edited)return!0;if(!Object.keys(F.value).length)return!1;for(let e in F.value)if(!F.value[e]?.$edited)return!1;return!0}),W=e(()=>{if(M.value?.$anyEdited)return!0;for(let e in F.value)if(F.value[e]?.$anyEdited)return!0;return!1}),G=e(()=>b??S.options.id??`root`),K=e(()=>({autoDirty:E.value,lazy:k.value,rewardEarly:x.value,silent:C.value,clearExternalErrorsOnChange:A.value,clearExternalErrorsOnValidate:j.value,immediateDirty:D.value,id:m(S.options.id),disabled:m(S.options.disabled)}));function ee(){S.shortcuts?.nested&&Object.entries(S.shortcuts.nested).forEach(([e,n])=>{let a=t();J[e]=a.run(()=>{let e=d();return y(()=>{e.value=n(u({$dirty:s,$path:i,$value:r,$silentValue:o,$error:v,$originalValue:_,$pending:L,$invalid:l,$correct:p,$ready:P,$anyDirty:c,$name:G,$silentErrors:V,$initialValue:h,$errors:B,$fields:F,$edited:U,$anyEdited:W,$issues:R,$self:M,"~modifiers":g(S.options)}))}),e}),T.push(a)})}let q=e({get:()=>f?Object.fromEntries(Object.entries(f?.(F.value)??{}).map(([e,t])=>t.length?[e,{...Object.fromEntries([`$invalid`,`$error`,`$pending`,`$dirty`,`$correct`].map(e=>[e,ie(t,e)])),...Object.fromEntries([`$errors`,`$silentErrors`].map(e=>[e,ae(t,e)]))}]:[])):{},set(){}}),J={};return ee(),{$dirty:s,$anyDirty:c,$invalid:l,$correct:p,$error:v,$pending:L,$issues:R,$errors:B,$silentErrors:V,$clearExternalErrorsOnValidate:j,$ready:P,$name:G,$shortcuts:J,$groups:q,$silentValue:o,$edited:U,$anyEdited:W,$localPending:I,$autoDirty:E,$silent:C,$value:a,$modifiers:K}})}function z(){if(E?.(),k?.(),A?.(),D?.(),T=[],w={},F.value)for(let e of Object.values(F.value))e?.$unwatch()}function B(){s&&!O(s.value)&&(s.value={})}function V(e,t){if(k?.(),z(),!t)if(e?.toOriginalState)r.value=j({..._}),h.value=j({..._});else if(e?.toInitialState)r.value=j({...h.value});else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,h.value=j(t),r.value=j(t)}else h.value=j(r.value);if(!e?.keepValidationState){for(let t of Object.values(F.value))t?.$reset(e,!0);M.value?.$reset(e,!0)}e?.clearExternalErrors===!1&&B(),I(),t||N()}function H(e=!0,t=!1){for(let n of Object.values(F.value))n?.$touch(e,t);M.value?.$touch(e,t)}function U(e){return e.filter(([e,t])=>x(t)&&!de(t)?!(t&&typeof t==`object`&&`_null`in t)&&!O(t):Array.isArray(t)?t.length:!0)}function W(e=!0){let t=Object.entries(F.value).map(([t,n])=>[t,n.$extractDirtyFields(e)]);return e&&(t=U(t)),Object.fromEntries(t)}function G(){for(let e of Object.values(F.value))e.$abort();M.value?.$abort()}async function K(e){try{if(e&&(r.value=e),S.schemaMode)return S.onValidate?(H(!1),w.$localPending.value=!0,S.onValidate()):{valid:!1,data:r.value,errors:w.$errors.value,issues:w.$issues.value};{let e=r.value;G(),w.$clearExternalErrorsOnValidate.value&&B();let t=[...Object.values(F.value).map(e=>e.$validate()),...M.value?[M.value?.$validate()]:[]];return{valid:(await Promise.allSettled(t)).every(e=>e.status===`fulfilled`&&e?.value?.valid===!0),data:e,errors:w.$errors.value,issues:w.$issues.value}}}catch{return{valid:!1,data:r.value,errors:w.$errors.value,issues:w.$issues.value}}finally{w.$localPending.value=!1}}function ee(e){try{return e&&(r.value=e),w.$clearExternalErrorsOnValidate.value&&B(),[...Object.values(F.value).map(e=>e.$validateSync()),...M.value?[M.value?.$validateSync()]:[]].every(e=>!!e)}catch{return!1}}let{$shortcuts:q,$localPending:J,...Y}=w,X=u({...Y,...q,$path:i,$initialValue:h,$originalValue:_,$self:M,$externalErrors:s,$fields:F,$reset:V,$touch:H,$validate:K,$unwatch:z,$watch:R,$clearExternalErrors:B,$extractDirtyFields:W,$abort:G,$validateSync:ee,...o?{"~modifiers":w.$modifiers}:{},...Se(K)});return Object.defineProperty(X,Symbol.for(`regle:instance`),{value:!0}),y(()=>{for(let e of Object.keys(X).filter(e=>!e.startsWith(`$`)&&!e.startsWith(`~`)))delete X[e];for(let e of Object.values(F.value))e?.$name&&Object.assign(X,{[e.$name]:e})}),X}function De({rulesDef:e,...n}){if(ce(e,n.state))return Te({rulesDef:e,...n});if(se(n.state,e)){if(K(n.state))return Ee({rulesDef:e,...n});{let r=t().run(()=>{let e=p(n.state.value?n.state:d({}));return v(()=>n.state.value,t=>{e.value=t},{deep:!0}),v(e,e=>{n.state.value=e},{deep:!0}),{fakeState:e}}),{state:i,...a}=n;return Ee({rulesDef:e,...a,state:r.fakeState})}}else if(le(e))return Ce({rulesDef:a(e.value)?e.value:e,...n})}function Oe({initialState:e,originalState:t,options:n,scopeRules:i,state:a,customRules:o,shortcuts:c,schemaErrors:u,schemaMode:f=!1,onValidate:p,overrides:h}){let g=he(),_=d(),y=d(),b,x,S;function C(){S=v(()=>m(n.disabled),async e=>{e?k():(O(),E())})}function T(){x?.(),n.externalErrors?.value&&Object.keys(n.externalErrors.value).some(e=>e.includes(`.`))?y.value=w(n.externalErrors.value):y.value=n.externalErrors?.value??{},D()}function E(){b=v(()=>n.externalErrors?.value,T,{deep:!0})}function D(){x=v(()=>y.value,()=>{b?.(),n.externalErrors?.value&&(n.externalErrors.value=y.value),E()},{deep:!0})}function O(){se(a,i)?_.value=Ee({rootRules:i,rulesDef:i,state:a,customMessages:o?.(),storage:g,options:n,externalErrors:y,validationGroups:n.validationGroups,initialState:e,originalState:t,shortcuts:c,fieldName:void 0,path:``,cachePath:``,schemaErrors:u,rootSchemaErrors:u,schemaMode:f,onValidate:p,overrides:h}):le(i)&&(_.value=Ce({rulesDef:i,state:a,customMessages:o?.(),storage:g,options:n,externalErrors:y,initialState:e,originalState:t,shortcuts:c,fieldName:void 0,path:``,cachePath:``,schemaMode:f,schemaErrors:u,onValidate:p,overrides:h}))}T(),O(),m(n.disabled)?s().then(()=>{_.value?.$unwatch()}):E(),C();function k(){_.value?.$unwatch(),x?.(),b?.()}return r()&&l(()=>{k(),S?.()}),_}function ke({state:t,rulesFactory:n,options:r,globalOptions:o,customRules:s,shortcuts:c,overrides:l}){let u=a(n)?n:typeof n==`function`?void 0:e(()=>n),p=i(Z,void 0)??{},m={...p.modifiers,...o},g=()=>({...p.rules?.(),...s?.()}),_={...p.shortcuts,...c},v={...p.overrides,...l},b={...m,...r},S,C=f(u??{});typeof n==`function`&&(S=y(()=>{C.value=n(t),h(C)}));let w=d(x(t.value)?{...j(t.value)}:j(t.value)),T=x(t.value)?{...j(t.value)}:j(t.value);return ne(()=>{S?.()}),Oe({scopeRules:C,state:t,options:b,initialState:w,originalState:T,customRules:g,shortcuts:_,overrides:v})}function Ae(t){let{rules:n,modifiers:r={},shortcuts:i,overrides:o}=t??{};function s(t,s,c){let l=a(t)?t:d(t),u=e(()=>m(c?.disabled)??!1);return{r$:L(ke({state:l,rulesFactory:s,options:c,globalOptions:r,customRules:n,shortcuts:i,overrides:o}),u)}}return s}const je=Ae();function Me(){function e(e,t){return t}return e}const Ne=Me();function Pe(e,t){return S(m(e).$errors,String(t))}function Fe(e,t){return S(m(e).$issues,String(t))}function Ie(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&&x(r)&&`$each`in r&&r.$each&&x(r.$each)?t[n]=[Ie(r.$each)]:x(r)&&!O(r)&&!Object.entries(r).some(([e,t])=>$(t)||typeof t==`function`)?t[n]=Ie(r):t[n]=null}return t}function Le(t){let{rules:n,modifiers:r={},shortcuts:i,overrides:o}=t??{};function s(t,s){let c=a(t)?t:typeof t==`function`?void 0:e(()=>t),l=d(Ie(c?.value)),u=e(()=>m(s?.disabled)??!1);return L(ke({state:l,rulesFactory:c,options:s,globalOptions:r,customRules:n,shortcuts:i,overrides:o}),u)}return s}const Re=Le();function ze(e){if(D(e)){let t=e,n=class extends t{constructor(...e){return super(...e),Be(this)}};return Object.defineProperty(n,`name`,{value:t.name}),Be(n)}return Be(e)}function Be(e){return!T(e,Q.REGLE_STATIC)&&Object.isExtensible(e)&&E(e,Q.REGLE_STATIC,!0),e}function Ve({rules:e,modifiers:t,shortcuts:n,overrides:r}){let i=Ae({rules:e,modifiers:t,shortcuts:n,overrides:r}),a=Le({rules:e,modifiers:t,shortcuts:n,overrides:r});return i.__config={rules:e,modifiers:t,shortcuts:n,overrides:r},a.__config={rules:e,modifiers:t,shortcuts:n,overrides:r},{useRegle:i,inferRules:Me(),useRules:a}}function He(e,{rules:t,modifiers:n,shortcuts:r,overrides:i}){let a=e.__config??{},o=()=>({...a.rules?.(),...t?.()}),s=a.modifiers&&n?C(a.modifiers,n):a.modifiers??n,c=a.shortcuts&&r?C(a.shortcuts,r):a.shortcuts??r,l=a.overrides&&i?C(a.overrides,i):a.overrides??i,u=Ae({rules:o,modifiers:s,shortcuts:c,overrides:l});return u.__config={rules:o,modifiers:s,shortcuts:c,overrides:l},{useRegle:u,inferRules:Me()}}function Ue(e){return e}function We(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)),l=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]))),v=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=u({...!r&&{$silentValue:a},$errors:g,$issues:m,$silentIssues:h,$silentErrors:_,$instances:x,$value:i,$dirty:o,$anyDirty:s,$invalid:c,$correct:l,$error:d,$pending:p,$ready:f,$edited:v,$anyEdited:b,$reset:S,$touch:C,$validate:E,$extractDirtyFields:w,$clearExternalErrors:T});return y(()=>{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 Ge(t,n){function r(r){let i=e(()=>m(r)),a=u({});c();let o=d(l(t.value)),s=u({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]={})}))}v(i,c),v(t,e=>{o.value=l(e)},{deep:!0});function l(e){return i.value?typeof i.value==`string`?We(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})})}),We(a,!n.asRecord)):We(e[`~~global`]??{},!n.asRecord)}return{r$:s.r$}}return{useCollectScope:r}}function Ke(t,r){let i=r??je;return{useScopedRegle:((r,a,o)=>{let{namespace:s,scopeKey:l,id:u,...f}=o??{};i.__config??={};let p=e(()=>u??l),h=e(()=>m(s)),g=d(`${Object.keys(t.value).length+1}-${te()}`),_=e(()=>p.value??`instance-${g.value}`),{r$:y}=i(r,a,{...f,id:p.value});x(),ne(b),v(h,(e,t)=>{b(t),x()}),n()&&c(()=>{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][_.value]:t.value[`~~global`][_.value]&&delete t.value[`~~global`][_.value]}function x(){h.value?(t.value[h.value]||(t.value[h.value]={}),t.value[h.value][_.value]=y):(t.value[`~~global`]||(t.value[`~~global`]={}),t.value[`~~global`][_.value]=y)}return{r$:y,dispose:b,register:x}})}}function qe(e){let t=(e?.customStore?()=>(e.customStore&&(e.customStore?.value[`~~global`]?e.customStore?.value&&(e.customStore.value={"~~global":{}}):e.customStore.value[`~~global`]={}),e.customStore):re(()=>d({"~~global":{}})))(),{useScopedRegle:n}=Ke(t,e?.customUseRegle),{useCollectScope:r}=Ge(t,{asRecord:e?.asRecord});return{useScopedRegle:n,useCollectScope:r}}const{useCollectScope:Je,useScopedRegle:Ye}=qe(),Xe=Je,Ze=Ye;function Qe(t,n,r){let i=e(()=>m(t)[n]);return e(()=>r.find(e=>{if(e[n]&&`literal`in e[n]){let t=e[n].literal;if($(t))return m(t._params?.[0])===i.value}})||r.find(e=>x(e[n])&&!Object.keys(e[n]).some(e=>e===`literal`))||{})}function $e(e,t,n){return!!e&&t in e&&x(e[t])&&`$value`in e[t]&&e[t]?.$value===n}function et(e,t,n,r){let i=a(e)?p(e.value,`$fields`):p(e,`$fields`),o=d();return v(i,async()=>{await s(),$e(i.value,t,n)?o.value=p(e).value:o.value=void 0},{immediate:!0,flush:`pre`}),o}function tt(e){return e}function nt(e,t){return n=>C({...e},t(n))}const rt={install(e,t){e.provide(oe,me),t&&e.provide(Z,t)}};export{R as InternalRuleType,rt as RegleVuePlugin,U as createRule,qe as createScopedUseRegle,Qe as createVariant,Ve as defineRegleConfig,Ue as defineRegleOptions,tt as defineRules,He as extendRegleConfig,ye as flatErrors,Pe as getErrors,Fe as getIssues,Ne as inferRules,G as isRegleInstance,ze as markStatic,We as mergeRegles,$e as narrowVariant,nt as refineRules,z as unwrapRuleParameters,Xe as useCollectScope,je as useRegle,Oe as useRootStorage,Re as useRules,Ze as useScopedRegle,et as variantToRef};
|
|
7
|
+
import{computed as e,effectScope as t,getCurrentInstance as n,getCurrentScope as r,inject as i,isRef as a,markRaw as o,nextTick as s,onMounted as c,onScopeDispose as l,reactive as u,ref as d,shallowRef as f,toRef as p,toValue as m,triggerRef as h,unref as g,version as _,watch as v,watchEffect as y}from"vue";function b(e){return e?.constructor?.name==`File`}function x(e){return e&&(e instanceof Date||e.constructor.name==`File`||e.constructor.name==`FileList`)?!1:typeof e==`object`&&!!e&&!Array.isArray(e)}function S(e,t,n){if(!e)return n;var r,i;if(Array.isArray(t)&&(r=t.slice(0)),typeof t==`string`&&(r=t.split(`.`)),typeof t==`symbol`&&(r=[t]),!Array.isArray(r))throw Error(`props arg must be an array, a string or a symbol`);for(;r.length;)if(i=r.shift(),!e||!i||(e=e[i],e===void 0))return n;return e}function C(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 w(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 T(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function E(e,t,n,r=!1){Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})}function D(e){return typeof e==`function`&&!!e.prototype&&`constructor`in e.prototype&&e.prototype.constructor===e}function O(e,t=!0,n=!0){return e==null?!0:e instanceof Date?isNaN(e.getTime()):b(e)?e.size<=0:Array.isArray(e)?t?e.length===0:!1:x(e)?e==null?!0:n?Object.keys(e).length===0:!1:!String(e).length}const k=Symbol(`regle-rule`);function A(e){let t=[];return e.global&&t.push(`g`),e.ignoreCase&&t.push(`i`),e.multiline&&t.push(`m`),e.sticky&&t.push(`y`),e.unicode&&t.push(`u`),t.join(``)}function j(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=>j(e,t++)))),r==`Map`&&(n=new Map([...e].map(e=>[j(e[0]),j(e[1])]))),r==`Date`&&(n=new Date(e.getTime())),r==`RegExp`&&(n=RegExp(e.source,A(e))),r==`Array`||r==`Object`){n=Array.isArray(e)?[]:{};for(let r in e)n[r]=j(e[r],t++)}return n}function M(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 N(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 P(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(!P(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(x(e)&&x(t)&&s&&(r||!r&&n)&&!P(e[s],t[s],n,!1))return!1}return!0}return e!==e&&t!==t}var F=class extends Error{constructor(e=`Promise was aborted`){super(e),this.name=`AbortError`}};function I(e){let t=new AbortController,{signal:n}=t,r=new Promise((t,r)=>{function i(){r(new F)}n.addEventListener(`abort`,i),e.then(e=>{n.removeEventListener(`abort`,i),n.aborted?r(new F):t(e)}).catch(e=>{n.removeEventListener(`abort`,i),n.aborted?r(new F):r(e)})});function i(e){t.abort(e)}return{promise:r,abort:i,signal:n}}function L(e,t){if(!a(e))return u(e);let r=d(!1);return n()&&c(async()=>{await s(),typeof window<`u`&&window.requestAnimationFrame(()=>{r.value=!0})}),u(new Proxy({},{get(n,i,a){if(t.value&&i!==`$value`&&r.value)return Reflect.get(n,i,a);if(e.value!==void 0)return g(Reflect.get(e.value,i,a))},set(t,n,r){return a(e.value[n])&&!a(r)?e.value[n].value=r:e.value[n]=r,!0},deleteProperty(t,n){return Reflect.deleteProperty(e.value,n)},has(t,n){return e.value===void 0?!1:Reflect.has(e.value,n)},ownKeys(){return e.value===void 0?[]:Object.keys(e.value)},getOwnPropertyDescriptor(){return{enumerable:!0,configurable:!0}}}))}const R={Inline:`__inline`,Async:`__async`};function z(e){try{return e.map(e=>m(e))}catch{return[]}}function B(t){return t.map(t=>t instanceof Function?e(t):a(t)?t:p(()=>t))}function V(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 H(e,...t){let{validator:n,type:r,async:i}=e,a=i||r===R.Async||n.constructor.name===`AsyncFunction`;return o({validator(n,...r){return e.validator(n,...z(r.length?r:t))},message(n){return typeof e.message==`function`?e.message({...n,$params:z(n?.$params?.length?n.$params:t)}):e.message},active(n){return typeof e.active==`function`?e.active({...n,$params:z(n?.$params?.length?n.$params:t)}):e.active??!0},tooltip(n){return typeof e.tooltip==`function`?e.tooltip({...n,$params:z(n?.$params?.length?n.$params:t)}):e.tooltip??[]},exec(n){let r=e.validator(n,...z(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:a,_params:B(t),_brand:k})}function U(e){if(typeof e.validator==`function`){let t=[],n=e.async??e.validator.constructor.name===`AsyncFunction`,r=H({...e,async:n},...t);if(V(e.validator)>1){let t=function(...t){return H(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`)}const W=Symbol.for(`regle:instance`);function G(e){return typeof e==`object`&&!!e&&W in e}function K(e){return x(e.value)}function ee(e,n,r){let i=t(),a;return a=e instanceof Function?i.run(()=>e(n,r??0)):e,{scope:i,unwrapped:a}}const q={LessThan:-1,EqualTo:0,GreaterThan:1};function J(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 q.GreaterThan;if(i>t)return q.LessThan;if(!isNaN(t)&&isNaN(i))return q.GreaterThan;if(isNaN(t)&&!isNaN(i))return q.LessThan}return q.EqualTo}const te=J(_,`3.5.0`)!==-1;function Y(){return Math.floor(Math.random()*Date.now()).toString()}function X(){return typeof window>`u`?Y():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function ne(e){return r()?(l(e),!0):!1}function re(e){let n=!1,r,i=t(!0);return((...t)=>(n||=(r=i.run(()=>e(...t)),!0),r))}function ie(e,t){return e.some(e=>t?e?.[t]:!1)}function ae(e,t){return t?e.reduce((e,n)=>{let r=n?.[t]||[];return e.concat(r)},[]):[]}const oe=Symbol(`regle`),Z=Symbol(`regle-config`),Q={REGLE_STATIC:`__regle_static`};function se(e,t){return!de(e.value)&&(K(e)||x(t.value)&&!O(t.value)&&!Object.entries(t.value).some(([e,t])=>$(t)||typeof t==`function`))}function ce(e,t){return!!e.value&&x(e.value)&&`$each`in e.value||Array.isArray(t.value)}function le(e){return!!e.value&&(x(e.value)||K(e.value))}function $(e){return(x(e)||typeof e==`function`)&&`_validator`in e}function ue(e){return typeof e.value==`function`?`_validator`in e.value:!0}function de(e){return x(e)&&T(e,Q.REGLE_STATIC)&&e[Q.REGLE_STATIC]===!0}function fe(e){return x(e)&&`$fields`in e}function pe(e){return!!e&&`$rules`in e}var me=`1.21.0-beta.2`;function he(){let e=f(new Map),t=f(new Map),n=f(new Map),i=f(new Map),a=f(new Map),o=f(new Map),s=f(new Map);function c(e){let n=t.value.get(e);if(n)return n;{let n=d({});return t.value.set(e,n),n}}function u(e){let t=n.value.get(e);if(t)return t;{let t=d([]);return n.value.set(e,t),t}}function p(e,t){o.value.set(e,t)}function m(e){return o.value.get(e)}function h(e,t,n){s.value.set(`${e}-${t}`,n)}function g(e,t){return s.value.get(`${e}-${t}`)}function _(e,t){e&&t!=null&&s.value.delete(`${e}-${t}`)}function v(e,t){i.value.set(e,t)}function y(e){return i.value.get(e)??!1}function b(t,n){e.value.set(t,n)}function x(t,n){let r=e.value.get(t);if(r)return S(n,r)?{valid:!0}:{valid:!1}}function S(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];if(!i||!r||typeof r==`function`||typeof i==`function`||typeof r==`number`||typeof r==`boolean`||typeof r==`string`)return!1;if(`_params`in r){if(!r._params)return!0;if(Array.isArray(r._params))return r._params?.every((e,t)=>{if(typeof i==`number`||typeof i==`boolean`||typeof i==`string`)return!0;{let e=z(`_params`in i&&Array.isArray(i._params)?i._params:[]),n=z(r._params);return e?.[t]===n?.[t]}})}})}function C(e){let t=a.value.get(e);if(t)return t;{let t=d(!1),n=d(!0),r=d({}),i=d(!1);return a.value.set(e,{$pending:t,$valid:n,$metadata:r,$validating:i}),{$pending:t,$valid:n,$metadata:r,$validating:i}}}return r()&&l(()=>{e.value.clear(),t.value.clear(),n.value.clear(),i.value.clear(),a.value.clear(),s.value.clear()}),{addRuleDeclEntry:b,setDirtyEntry:v,checkRuleDeclEntry:x,getDirtyState:y,trySetRuleStatusRef:C,getFieldsEntry:c,getCollectionsEntry:u,getArrayStatus:g,addArrayStatus:h,deleteArrayStatus:_,arrayStatusStorage:s,addAdditionalRulesEntry:p,getAdditionalRulesEntry:m}}function ge({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&&Array.isArray(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 _e({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 ve(e){return x(e)&&`$each`in e}function ye(e,t){let{includePath:n=!1}=t??{};if(Array.isArray(e)&&e.every(e=>!x(e)))return e;if(ve(e)){let t=n?e.$self?.map(e=>({message:e,path:[]}))??[]:e.$self??[],r=e.$each?.map(e=>be(e,n))??[];return t?.concat(r.flat())}else return Object.entries(e).map(([e,t])=>be(t,n,[e])).flat()}function be(e,t=!1,n){let r=t&&!n?[]:n;if(Array.isArray(e)&&e.every(e=>!x(e)))return t?e.map(e=>({message:e,path:r??[]})):e;if(ve(e)){let n=r?.length?e.$self?.map(e=>({message:e,path:r??[]}))??[]:e.$self??[],i=e.$each?.map((e,n)=>be(e,t,r?.concat(n)))??[];return n?.concat(i.flat())}else return Object.entries(e).map(([e,n])=>be(n,t,r?.concat(e))).flat()}function xe({customMessages:n,rule:r,ruleKey:i,state:a,path:o,cachePath:s,storage:c,modifiers:l}){let f=t(),p={},m,h=e(()=>$(r.value)&&r.value._async),g=d(!1),{$pending:_,$valid:y,$metadata:b,$validating:x}=c.trySetRuleStatusRef(`${s}.${i}`);function S(){f=t(),p=f.run(()=>{let t=d(!1),s=d(!1),c=d(!0),l=d(!1),u=d(!1),f=e(()=>({$value:a.value,$error:s.value,$dirty:t.value,$pending:l.value,$correct:u.value,$invalid:c.value,$rule:{$valid:y.value,$invalid:!y.value,$pending:_.value},$params:S.value,...b.value})),p=e(()=>{try{return ue(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),ue(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 O(e)&&(e=`This field is not valid`),e}),g=e(()=>m(`tooltip`)),v=e(()=>ue(r)&&r.value.type?r.value.type:i),x=e(()=>ue(r)?r.value.validator:r.value),S=e(()=>typeof r.value==`function`?[]:z(r.value._params??[]));return{$active:p,$message:h,$type:v,$validator:x,$params:S,$path:e(()=>`${o}.${i}`),$tooltip:g,$fieldCorrect:u,$fieldError:s,$fieldDirty:t,$fieldPending:l,$fieldInvalid:c}}),m=v(p?.$params,()=>{(!l.$silent.value||l.$rewardEarly.value&&p.$fieldError.value)&&E()},{deep:te?1:!0})}S();function C(){y.value=!0,p.$fieldDirty.value&&(_.value=!0)}async function w(){let e=!1;try{let t=p.$validator.value;if(typeof t!=`function`)return console.error(`${o}: Incorrect rule format, it needs to be either a function or created with "createRule".`),!1;let n=t(a.value,...p.$params.value),r=a.value;C();let i;if(i=n instanceof Promise?await n:n,a.value!==r)return!0;if(typeof i==`boolean`)e=i;else{let{$valid:t,...n}=i;e=t,b.value=n}}catch{e=!1}finally{_.value=!1}return e}function T(e,t=!0){if($(r.value)&&r.value._async)return!0;let n=e(a.value,...p.$params.value);if(n instanceof Promise)return!0;if(n!=null){if(typeof n==`boolean`)return n;{let{$valid:e,...t}=n;return b.value=t,e}}return!0}async function E(){try{x.value=!0;let e=!1;if(g.value=!0,$(r.value)&&r.value._async)e=await w();else{let t=p.$validator.value;e=T(t)}return y.value=e,e}catch{return!1}finally{x.value=!1,g.value=!1}}function D(){try{return x.value=!0,T(p.$validator.value)}catch{return!1}finally{x.value=!1}}function k(){y.value=!0,b.value={},_.value=!1,x.value=!1,S()}function A(){m(),f.stop(),f=t()}return u({...p,$pending:_,$valid:y,$metadata:b,$haveAsync:h,$maybePending:g,$validating:x,$parse:E,$parseSync:D,$unwatch:A,$watch:S,$reset:k})}function Se(e){return{"~standard":{version:1,vendor:`regle`,validate:async t=>{let{valid:n,data:r,errors:i}=await e(t,!0);return n?{value:r,issues:[]}:{issues:ye(i,{includePath:!0})}}}}}function Ce({state:n,rulesDef:r,customMessages:i,path:a,cachePath:o,fieldName:c,storage:l,options:f,externalErrors:h,schemaErrors:g,schemaMode:_,onUnwatch:b,$isArray:S,initialState:C,originalState:w,shortcuts:T,overrides:E,onValidate:D}){let k=t(),A,F=[],L,R,z,B,V=()=>{},H,U=()=>{},W=d(!1),G=d(l.getAdditionalRulesEntry(o)??{});function K(e){G.value=e??{},l.addAdditionalRulesEntry(o,e??{}),q(),V()}function ee(e){K(e)}function q(){let e={...r.value,...G.value},t=[];for(let r in e){if(r.startsWith(`$`)||r.startsWith(`~`))continue;let s=e[r];if(!s)continue;let c=p(()=>s);t.push([r,xe({modifiers:{$silent:A.$silent,$rewardEarly:A.$rewardEarly},customMessages:i,rule:c,ruleKey:r,state:n,path:a,cachePath:o,storage:l,$debounce:Q.value.$debounce})])}Z.value=Object.fromEntries(t),l.addRuleDeclEntry(o,e)}function J(){let e={...r.value,...G.value},t=l.checkRuleDeclEntry(o,e),n={};for(let t in e)t.startsWith(`$`)&&(n[t]=e[t]);return Q.value=n,t}function Y(){let e=J();ie(),q(),A.processShortcuts(),X(),ne(),e?.valid!=null&&(A.$dirty.value=l.getDirtyState(o),(A.$dirty.value&&!A.$silent.value||A.$rewardEarly.value&&A.$error.value)&&V()),l.addRuleDeclEntry(o,r.value)}function X(){V=A.$debounce.value>0?N(oe,A.$debounce.value,{trackDebounceRef:W}):oe}function ne(){U=A.$debounce.value>0?N(()=>{A.$dirty.value=!0},A.$debounce.value):()=>{A.$dirty.value=!0}}function re(){if(Z.value)for(let e of Object.values(Z.value))e.$unwatch();R(),B?.(),A.$dirty.value&&l.setDirtyEntry(o,A.$dirty.value),L?.(),k.stop(),k=t();for(let e of F)e.stop();F=[],b?.(),z?.()}function ie(){if(Z.value)for(let e of Object.values(Z.value))e.$watch();A=k.run(()=>{let r=d(!1),i=d(!1),a=e(()=>r.value),o=e(()=>S||de(n.value)),s=e(()=>Q.value.$debounce==null?A.$haveAnyAsyncRule.value?200:0:Q.value.$debounce),l=e(()=>Q.value.$deepCompare==null?!1:Q.value.$deepCompare),p=e(()=>Q.value.$lazy==null?m(f.lazy)==null?!1:m(f.lazy)===!0:Q.value.$lazy),v=e(()=>Q.value.$immediateDirty==null?m(f.immediateDirty)==null?!1:m(f.immediateDirty)===!0:Q.value.$immediateDirty),b=e(()=>Q.value.$rewardEarly==null?m(f.rewardEarly)==null?!1:m(f.rewardEarly)===!0:!!Q.value.$rewardEarly),x=e(()=>Q.value.$clearExternalErrorsOnChange==null?m(f.clearExternalErrorsOnChange)==null?!D.value:m(f.clearExternalErrorsOnChange)===!0:!!Q.value.$clearExternalErrorsOnChange),w=e(()=>Q.value.$clearExternalErrorsOnValidate==null?m(f.clearExternalErrorsOnValidate)==null?!1:m(f.clearExternalErrorsOnValidate)===!0:!!Q.value.$clearExternalErrorsOnValidate),D=e(()=>b.value?!0:Q.value.$silent==null?m(f.silent)==null?!1:m(f.silent)===!0:Q.value.$silent),k=e(()=>Q.value.$autoDirty==null?m(f.autoDirty)==null?!0:m(f.autoDirty)===!0:Q.value.$autoDirty),j=e(()=>{if(Q.value.$isEdited!=null)return Q.value.$isEdited;if(E?.isEdited!=null)return E.isEdited}),N=e(()=>{for(let e of Object.values(Z.value))if(e.$validating)return!0;return!1}),I=e({get:()=>n.value,set(e){L(),n.value=e,ae()}}),R=e(()=>W.value?te.value&&r.value:te.value&&!J.value&&r.value),z=e(()=>ge({field:{$rules:Z.value,$error:R.value,$externalErrors:h?.value,$schemaErrors:g?.value,fieldName:Y.value}})),B=e(()=>ge({field:{$rules:Z.value,$error:R.value,$externalErrors:h?.value,$schemaErrors:g?.value,fieldName:Y.value},silent:!0})),V=e(()=>z.value.map(e=>e.$message)),H=e(()=>B.value.map(e=>e.$message)),U=d(!1);function G(e,t){return t instanceof Date&&e instanceof Date?M(t).getDate()!==M(e).getDate():t==null?!!e:Array.isArray(e)&&Array.isArray(t)?!P(e,t,Q.value.$deepCompare):t!==e}y(()=>{r.value?j.value?U.value=j.value(n.value,C.value,G):U.value=G(n.value,C.value):U.value=!1});let K=e(()=>U.value),ee=e(()=>_e({field:{$rules:Z.value}})),q=e(()=>!(te.value||J.value)),J=e(()=>i.value||!b.value?Object.entries(Z.value).some(([e,t])=>t.$pending):!1),te=e(()=>h?.value?.length||g?.value?.length?!0:X.value?!1:Object.values(Z.value).some(e=>!e.$valid||e.$maybePending)),Y=e(()=>c??f.id??`root`),X=e(()=>!_&&!Object.keys(Z.value).some(e=>!e.startsWith(`$`))),ne=e(()=>{if(h?.value?.length||X.value||W.value)return!1;if(r.value&&!O(n.value)&&!N.value&&!J.value){if(_)return!g?.value?.length;{let e=Object.values(Z.value);for(let t of e)if(t.$active&&!t.$valid)return!1;return e.some(e=>e.$active)}}return!1}),re=e(()=>Object.values(Z.value).some(e=>e.$haveAsync)),ie=e(()=>({$debounce:s.value,$lazy:p.value,$rewardEarly:b.value,$autoDirty:k.value,$silent:D.value,$clearExternalErrorsOnChange:x.value,$clearExternalErrorsOnValidate:w.value,$immediateDirty:v.value,$isEdited:j.value,$disabled:m(f.disabled)??!1}));function oe(){T?.fields&&Object.entries(T.fields).forEach(([e,i])=>{let o=t();se[e]=o.run(()=>{let e=d();return y(()=>{e.value=i(u({$dirty:r,$externalErrors:h?.value??[],$value:n,$silentValue:I,$rules:Z,$error:R,$pending:J,$invalid:te,$correct:ne,$errors:V,$ready:q,$silentErrors:H,$anyDirty:a,$tooltips:ee,$name:Y,$inactive:X,$edited:U,$anyEdited:K}))}),e}),F.push(o)})}let se={};return{$error:R,$pending:J,$invalid:te,$correct:ne,$debounce:s,$deepCompare:l,$lazy:p,$immediateDirty:v,$ready:q,$issues:z,$silentIssues:B,$errors:V,$silentErrors:H,$rewardEarly:b,$autoDirty:k,$silent:D,$clearExternalErrorsOnChange:x,$clearExternalErrorsOnValidate:w,$anyDirty:a,$edited:U,$anyEdited:K,$name:Y,$haveAnyAsyncRule:re,$shortcuts:se,$validating:N,$tooltips:ee,$dirty:r,processShortcuts:oe,$silentValue:I,$inactive:X,$modifiers:ie,$isArrayOrRegleStatic:o}}),ae(),R=v(A.$dirty,e=>{l.setDirtyEntry(o,e),Object.values(Z.value).forEach(t=>{t.$fieldDirty=e})}),B=v([A.$error,A.$correct,A.$invalid,A.$pending],()=>{Object.values(Z.value).forEach(e=>{e.$fieldError=A.$error.value,e.$fieldInvalid=A.$invalid.value,e.$fieldPending=A.$pending.value,e.$fieldCorrect=A.$correct.value})}),z=v(A.$haveAnyAsyncRule,X)}function ae(){L=v(n,()=>{A.$autoDirty.value&&!A.$silent.value&&(A.$dirty.value||U()),r.value instanceof Function&&Y(),(!A.$silent.value||A.$rewardEarly.value&&A.$error.value)&&V(),A.$clearExternalErrorsOnChange.value&&ve()},{deep:A.$isArrayOrRegleStatic.value?!0:te?1:!0})}async function oe(){try{let{promise:e}=le(Promise.allSettled(Object.values(Z.value).map(e=>e.$parse())));await e}catch{}}let Z=d({}),Q=d({});Y();function se(e,t){if(ce(),ve(),A.$dirty.value=!1,l.setDirtyEntry(o,!1),!t)if(e?.toOriginalState)n.value=j(w),C.value=j(w);else if(e?.toInitialState)n.value=j(C.value);else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,C.value=j(t),n.value=j(t)}else C.value=x(n.value)&&!de(n.value)?j(n.value):Array.isArray(n.value)?[...n.value]:n.value;if(e?.clearExternalErrors&&ve(),!t&&!e?.keepValidationState)for(let e of Object.values(Z.value))e.$reset();if(!A.$lazy.value&&!A.$silent.value&&!t)for(let e of Object.values(Z.value))e.$parse()}function ce(){`cancel`in V&&V.cancel()}function le(e){return H&&H.abort(),H=I(e),H}function $(){ce(),H&&H.abort()}function ue(e=!0,t=!1){A.$dirty.value||U(),t&&e?(!A.$silent.value||A.$rewardEarly.value&&A.$error.value)&&(ce(),V()):e&&(ce(),V())}async function fe(e){try{if(e&&(n.value=e),_)return D?(ue(!1),D()):{valid:!1,data:n.value,errors:A.$errors.value,issues:A.$issues.value};let t=n.value;if(A.$dirty.value||(A.$dirty.value=!0),O(Z.value))return{valid:!0,data:t,errors:A.$errors.value,issues:A.$issues.value};$();let{promise:r}=le(Promise.allSettled(Object.values(Z.value).map(e=>e.$parse()))),i=await r;return await s(),{valid:i.every(e=>e.status===`fulfilled`&&e.value===!0),data:t,errors:A.$errors.value,issues:A.$issues.value}}catch{return{valid:!1,data:n.value,errors:A.$errors.value,issues:A.$issues.value}}}function pe(e){try{return e&&(n.value=e),A.$dirty.value||(A.$dirty.value=!0),_?!1:Object.values(Z.value).map(e=>e.$parseSync()).every(e=>!!e)}catch{return!1}}function me(e=!0){return A.$dirty.value?n.value:e?{_null:!0}:null}function he(e){h&&(h.value=e)}function ve(){h?.value?.length&&(h.value=[])}!A.$lazy.value&&!A.$dirty.value&&!A.$silent.value&&oe(),A.$immediateDirty.value&&(A.$dirty.value=!0);let{$shortcuts:ye,$validating:be,$autoDirty:Ce,$rewardEarly:we,$clearExternalErrorsOnChange:Te,$clearExternalErrorsOnValidate:Ee,$haveAnyAsyncRule:De,$debounce:Oe,$lazy:ke,...Ae}=A,je=u({...Ae,$externalErrors:h,$value:n,$initialValue:C,$originalValue:w,$rules:Z,...ye,$path:a,$isDebouncing:W,$reset:se,$touch:ue,$validate:fe,$validateSync:pe,$unwatch:re,$watch:ie,$extractDirtyFields:me,$clearExternalErrors:ve,$abort:$,$addRules:K,addRules:ee,$schemaMode:_,"~modifiers":A.$modifiers,$setExternalErrors:he,...Se(fe)});return Object.defineProperty(je,Symbol.for(`regle:instance`),{value:!0}),je}function we({$id:t,path:n,cachePath:r,index:i,options:a,storage:o,stateValue:s,customMessages:c,rules:l,externalErrors:u,schemaErrors:d,initialState:f,originalState:m,shortcuts:h,fieldName:g,schemaMode:_,overrides:v}){let y=s.value?.$id??l.$key??X(),b=`${r}.${String(y)}`,S=`${n}.${i}`;typeof s.value==`object`&&s.value!=null&&(s.value.$id||Object.defineProperties(s.value,{$id:{value:y,enumerable:!1,configurable:!1,writable:!1}}));let C=p(u?.value??[],i),w=e(()=>d?.value?.[i]),T=De({index:i,state:s,rulesDef:p(()=>l),customMessages:c,path:S,cachePath:b,storage:o,options:a,externalErrors:C,schemaErrors:w,initialState:f,originalState:m,shortcuts:h,fieldName:g,schemaMode:_,overrides:v});return T&&(T.$id=s.value?.$id??String(y),o.addArrayStatus(t,T.$id,T)),s.value&&(!x(s.value)||de(s.value))&&_&&T?.$touch(),T}function Te({state:n,rulesDef:r,customMessages:i,path:a,cachePath:o,storage:s,options:c,externalErrors:l,schemaErrors:f,schemaMode:h,initialState:g,originalState:_,shortcuts:b,fieldName:x,overrides:S}){let C=t(),w,T=t(),E,D=[];if(!Array.isArray(n.value)&&!r.value.$each)return;let k=d(),A=d(n.value),M=d({}),N,P,F=d({}),I=s.getCollectionsEntry(a);E=T.run(()=>({isPrimitiveArray:e(()=>n.value?.length?Array.isArray(n.value)&&n.value.length?n.value.every(e=>typeof e!=`object`):r.value.$each&&!(r.value.$each instanceof Function)?Object.values(r.value.$each).every(e=>$(e)||typeof e==`function`):!1:!1)})),L(),V();function L(){M.value=Object.fromEntries(Object.entries(r.value).filter(([e])=>e.startsWith(`$`))),typeof n.value==`object`&&(n.value!=null&&!n.value?.$id&&n.value!==null?(k.value=X(),Object.defineProperties(n.value,{$id:{value:k.value,enumerable:!1,configurable:!1,writable:!1}})):n.value?.$id&&(k.value=n.value.$id)),A.value=F.value.$value,Array.isArray(n.value)&&(!E.isPrimitiveArray.value||h)?I.value=n.value.map((t,n)=>{let{scope:u,unwrapped:d}=ee(r.value.$each,p(()=>t),n);u&&D.push(u);let m=p(g.value??[],n),v=p(l?.value??{},`$each`),y=e(()=>f?.value?.$each);return we({$id:k.value,path:a,cachePath:o,customMessages:i,rules:d??{},stateValue:p(()=>t),index:n,options:c,storage:s,externalErrors:v,schemaErrors:y,initialState:m,originalState:_,shortcuts:b,fieldName:x,schemaMode:h,overrides:S})||null}).filter(e=>!!e):I.value=[],F.value=Ce({state:n,rulesDef:r,customMessages:i,path:a,cachePath:a,storage:s,options:c,externalErrors:p(l?.value??{},`$self`),schemaErrors:e(()=>f?.value?.$self),$isArray:!0,initialState:g,originalState:_,shortcuts:b,fieldName:x,schemaMode:h,overrides:S})}function R(){if(Array.isArray(n.value)&&(!E.isPrimitiveArray.value||h)){let t=j(I.value);I.value=n.value.map((t,n)=>{let o=p(()=>t);if(t.$id&&I.value.find(e=>e.$id===t.$id)){let e=s.getArrayStatus(k.value,t.$id);return e?(e.$value=o,e):null}else{let{scope:t,unwrapped:u}=ee(r.value.$each,o,n);t&&D.push(t);let d=p(l?.value??{},`$each`),m=e(()=>f?.value?.$each??[]);return we({$id:k.value,path:a,cachePath:a,customMessages:i,rules:u??{},stateValue:o,index:n,options:c,storage:s,externalErrors:d,schemaErrors:m,initialState:p(g.value??[],n),originalState:_,shortcuts:b,fieldName:x,schemaMode:h,overrides:S})||null}}).filter(e=>!!e),t.filter(e=>!n.value?.find(t=>e.$id===t.$id)).forEach((e,t)=>{s.deleteArrayStatus(k.value,t.toString())})}else I.value=[]}function z(){N=v(n,()=>{P?.(),n.value!=null&&!Object.hasOwn(n.value,`$id`)&&!k.value?L():R(),B()},{deep:te?1:!0,flush:`pre`}),B()}function B(){P=v(n,()=>{w.$autoDirty.value&&!w.$silent.value&&F.value.$touch(!1,!0)},{flush:`post`})}function V(){z(),C=t(),w=C.run(()=>{let r=e({get:()=>n.value,set(e){N?.(),P?.(),n.value=e,z()}}),i=e(()=>F.value.$dirty&&(!I.value.length||I.value.every(e=>e.$dirty))),o=e(()=>F.value.$anyDirty||I.value.some(e=>e.$anyDirty)),s=e(()=>F.value.$invalid||I.value.some(e=>e.$invalid)),l=e(()=>(h?F.value.$correct:O(F.value.$rules)?!0:F.value.$correct)&&(!I.value.length||I.value.every(e=>e.$correct||e.$anyDirty&&!e.$invalid))),f=e(()=>F.value.$error||I.value.some(e=>e.$error)),p=e(()=>!(s.value||v.value)),v=e(()=>F.value.$pending||I.value.some(e=>e.$pending)),C=e(()=>!!I.value.length&&I.value.every(e=>e.$edited)),w=e(()=>F.value.$anyEdited||I.value.some(e=>e.$anyEdited)),T=e(()=>({$self:F.value.$issues,$each:I.value.map(e=>e.$issues)})),E=e(()=>({$self:F.value.$errors,$each:I.value.map(e=>e.$errors)})),k=e(()=>({$self:F.value.$silentErrors,$each:I.value.map(e=>e.$silentErrors)})),A=e(()=>M.value.$rewardEarly==null?m(c.rewardEarly)==null?!1:m(c.rewardEarly)===!0:M.value.$rewardEarly),j=e(()=>A.value?!0:M.value.$silent==null?m(c.silent)==null?!1:m(c.silent)===!0:M.value.$silent),L=e(()=>M.value.$autoDirty==null?m(c.autoDirty)==null?!0:m(c.autoDirty)===!0:M.value.$autoDirty),R=e(()=>M.value.$immediateDirty==null?m(c.immediateDirty)==null?!1:m(c.immediateDirty)===!0:M.value.$immediateDirty),B=e(()=>M.value.$clearExternalErrorsOnChange==null?m(c.clearExternalErrorsOnChange)==null?!0:m(c.clearExternalErrorsOnChange)===!0:M.value.$clearExternalErrorsOnChange),V=e(()=>M.value.$clearExternalErrorsOnValidate==null?m(c.clearExternalErrorsOnValidate)==null?!1:m(c.clearExternalErrorsOnValidate)===!0:M.value.$clearExternalErrorsOnValidate),H=e(()=>{if(M.value.$isEdited!=null)return M.value.$isEdited;if(S?.isEdited!=null)return S.isEdited}),U=e(()=>x??c.id??`root`),W=e(()=>({$deepCompare:M.value.$deepCompare??!1,$debounce:M.value.$debounce??0,$lazy:M.value.$lazy??!1,$rewardEarly:A.value,$autoDirty:L.value,$silent:j.value,$clearExternalErrorsOnChange:B.value,$clearExternalErrorsOnValidate:V.value,$immediateDirty:R.value,$isEdited:H.value,$disabled:m(c.disabled)??!1}));function G(){b?.collections&&Object.entries(b?.collections).forEach(([e,c])=>{let m=t();K[e]=m.run(()=>{let e=d();return y(()=>{e.value=c(u({$dirty:i,$error:f,$path:a,$silentValue:r,$pending:v,$invalid:s,$correct:l,$errors:E,$silentErrors:k,$initialValue:g,$originalValue:_,$ready:p,$anyDirty:o,$name:U,$each:I,$self:F,$value:n,$edited:C,$anyEdited:w,$issues:T}))}),e}),D.push(m)})}let K={};return G(),{$dirty:i,$anyDirty:o,$invalid:s,$correct:l,$error:f,$pending:v,$errors:E,$silentErrors:k,$ready:p,$name:U,$shortcuts:K,$silentValue:r,$edited:C,$anyEdited:w,$rewardEarly:A,$silent:j,$autoDirty:L,$issues:T,$modifiers:W}}),E.isPrimitiveArray.value&&r.value.$each&&console.warn(`${a} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`)}function H(){N?.(),F.value&&F.value.$unwatch(),I.value&&I.value.forEach(e=>{`$dirty`in e&&e.$unwatch()}),C.stop(),C=t(),T.stop(),T=t(!0),D.forEach(e=>e.stop()),D=[]}function U(e=!0,t=!1){F.value.$touch(e,t),I.value.forEach(n=>{n.$touch(e,t)})}function W(e,t){if(H(),!t)if(e?.toOriginalState)n.value=j(_),g.value=j(_);else if(e?.toInitialState)n.value=j(g.value);else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,g.value=j(t),n.value=j(t)}else g.value=j(n.value);e?.clearExternalErrors&&Y(),e?.keepValidationState||(F.value.$reset(e,t),I.value.forEach(t=>{t.$reset(e,!0)})),t||L()}function G(){F.value.$abort(),I.value.forEach(e=>{e.$abort()})}async function K(e){e&&(n.value=e);let t=n.value;try{return G(),{valid:(await Promise.allSettled([F.value.$validate(e),...I.value.map(e=>e.$validate())])).every(e=>e.status===`fulfilled`?e.value.valid===!0:!1),data:t,errors:w.$errors.value,issues:w.$issues.value}}catch{return{valid:!1,data:t,errors:w.$errors.value,issues:w.$issues.value}}}function q(e){e&&(n.value=e);try{return[F.value.$validateSync(e),...I.value.map(e=>e.$validateSync())].every(e=>!!e)}catch{return!1}}function J(e){l?.value&&(l.value=e)}function Y(){F.value.$clearExternalErrors(),I.value.forEach(e=>{e.$clearExternalErrors()})}function ne(e=!0){let t=I.value.map(t=>{if(fe(t))return t.$extractDirtyFields(e)});return e&&t.every(e=>O(e))&&(t=[]),t}let{$shortcuts:re,...ie}=w;return u({$self:F,...ie,...re,$path:a,$each:I,$value:n,$initialValue:g,$originalValue:_,$validate:K,$validateSync:q,$unwatch:H,$watch:V,$touch:U,$reset:W,$abort:G,$extractDirtyFields:ne,$clearExternalErrors:Y,$setExternalErrors:J,"~modifiers":w.$modifiers,...Se(K)})}function Ee({rulesDef:n,state:r,path:i=``,cachePath:a,rootRules:o,externalErrors:s,schemaErrors:c,rootSchemaErrors:l,validationGroups:f,initialState:h,originalState:_,fieldName:b,...S}){let C=t(),w,T=[],E=null,D=null,k=null,A=null,M=d(void 0);async function N(t=!0){let o=Object.entries(n.value).filter(([e])=>e!==`$self`),l=Object.fromEntries(o.reduce((t,[n,o])=>{if(!o)return t;let l=p(r.value??{},n),u=p(()=>o),d=p(s?.value??{},n),f=e(()=>c?.value?.[n]),m=p(h?.value??{},n);return t.push([n,De({state:l,rulesDef:u,path:i?`${i}.${n}`:n,cachePath:a?`${a}.${n}`:n,externalErrors:d,schemaErrors:f,initialState:m,originalState:_?.[n],fieldName:n,...S})]),t},[])),u=Object.fromEntries(Object.entries(m(s)??{}).filter(([e,t])=>!(e in n.value)&&!!t).map(([t])=>{let n=p(r.value??{},t),o=p(s?.value??{},t),l=e(()=>c?.value?.[t]),u=p(h?.value??{},t),d=i?`${i}.${t}`:t,f=a?`${a}.${t}`:t;return[t,De({state:n,rulesDef:e(()=>({})),path:d,cachePath:f,externalErrors:o,schemaErrors:l,initialState:u,originalState:_?.[t],fieldName:t,...S})]})),d=Object.fromEntries(Object.entries(m(c)??{}).map(([t])=>{let n=i?`${i}.${t}`:t,o=a?`${a}.${t}`:t,l=p(r.value??{},t),u=p(s?.value??{},t),d=e(()=>c?.value?.[t]),f=p(h?.value??{},t);return[t,De({state:l,rulesDef:e(()=>({})),path:n,cachePath:o,externalErrors:u,schemaErrors:d,initialState:f,originalState:_?.[t],fieldName:t,...S})]})),f=Object.fromEntries(Object.entries(r.value??{}).filter(([e])=>!(e in n.value)&&!(e in(u??{}))&&!(e in(d??{}))).map(([t])=>{let n=p(r.value??{},t),o=p(s?.value??{},t),l=e(()=>c?.value?.[t]),u=p(h?.value??{},t);return[t,De({state:n,rulesDef:e(()=>({})),path:i?`${i}.${t}`:t,cachePath:a?`${a}.${t}`:t,externalErrors:o,schemaErrors:l,initialState:u,originalState:_?.[t],fieldName:t,...S})]}));F.value={...l,...u,...d,...f},t&&R()}function P(){n.value.$self&&(M.value=Ce({state:r,rulesDef:e(()=>n.value.$self??{}),path:i,cachePath:a,externalErrors:d(void 0),schemaErrors:d(void 0),initialState:p(h?.value??{},`$self`),originalState:_?.$self,fieldName:`$self`,...S}))}let F=S.storage.getFieldsEntry(a);N(),P();function I(){s&&(k=v(s,()=>{z(),N()},{deep:!0}))}function L(){A=v(r,()=>{z(),N(),w.$autoDirty.value&&!w.$silent.value&&U(!1,!0)},{flush:`post`})}function R(){o&&(E?.(),E=v(o,()=>{z(),N()},{deep:!0,flush:`pre`}),I()),l&&(D?.(),D=v(l,()=>{z(),N()},{deep:!0,flush:`post`})),L(),w=C.run(()=>{let a=e({get:()=>r.value,set(e){z(),r.value=e,N(),w.$autoDirty.value&&!w.$silent.value&&U(!1,!0)}}),o=e({get:()=>r.value,set(e){z(),r.value=e,N()}}),s=e(()=>{let e=F.value,t=Object.keys(e);if(!t.length)return!1;for(let n of t)if(!e[n]?.$dirty)return!1;return!0}),c=e(()=>{let e=F.value;for(let t in e)if(e[t]?.$anyDirty)return!0;return!1}),l=e(()=>{if(M.value?.$invalid)return!0;let e=F.value,t=Object.entries(e);if(!t.length)return!1;for(let[e,n]of t)if(n?.$invalid)return!0;return!1}),p=e(()=>{let e=Object.entries(F.value).reduce((e,[t,n])=>((!pe(n)||!n.$inactive)&&e.push([t,n]),e),[]),t=n.value.$self&&!O(n.value.$self);if(e.length||t){let t=M.value?.$correct??!0,n=!1;return n=S.schemaMode?e.every(([e,t])=>t.$correct):e.every(([e,t])=>pe(t)?`required`in t.$rules&&t.$rules.required.$active?t.$correct:!t.$invalid&&!t.$pending&&!t.$isDebouncing:t?.$correct),t&&n}return!1}),v=e(()=>{if(M.value?.$error)return!0;let e=F.value;if(!Object.keys(e).length)return!1;for(let t in e)if(e[t]?.$error)return!0;return!1}),x=e(()=>m(S.options.rewardEarly)==null?!1:m(S.options.rewardEarly)),C=e(()=>m(S.options.silent)==null?!!x.value:m(S.options.silent)===!0),E=e(()=>m(S.options.autoDirty)==null?!0:m(S.options.autoDirty)===!0),D=e(()=>m(S.options.immediateDirty)==null?!1:m(S.options.immediateDirty)===!0),k=e(()=>m(S.options.lazy)==null?!1:m(S.options.lazy)===!0),A=e(()=>m(S.options.clearExternalErrorsOnChange)==null?!1:m(S.options.clearExternalErrorsOnChange)===!0),j=e(()=>m(S.options.clearExternalErrorsOnValidate)==null?!1:m(S.options.clearExternalErrorsOnValidate)===!0),P=e(()=>!(l.value||L.value)),I=d(!1),L=e(()=>{if(M.value?.$pending||I.value)return!0;let e=F.value;for(let t in e)if(e[t]?.$pending)return!0;return!1}),R=e(()=>{let e={...M.value&&{$self:M.value?.$issues??[]}};for(let t in F.value)e[t]=F.value[t]?.$issues;return e}),B=e(()=>{let e={...M.value&&{$self:M.value?.$errors??[]}};for(let t in F.value)e[t]=F.value[t]?.$errors;return e}),V=e(()=>{let e={...M.value&&{$self:M.value?.$silentErrors??[]}};for(let t in F.value)e[t]=F.value[t]?.$silentErrors;return e}),H=e(()=>{if(M.value?.$edited)return!0;if(!Object.keys(F.value).length)return!1;for(let e in F.value)if(!F.value[e]?.$edited)return!1;return!0}),W=e(()=>{if(M.value?.$anyEdited)return!0;for(let e in F.value)if(F.value[e]?.$anyEdited)return!0;return!1}),G=e(()=>b??S.options.id??`root`),K=e(()=>({autoDirty:E.value,lazy:k.value,rewardEarly:x.value,silent:C.value,clearExternalErrorsOnChange:A.value,clearExternalErrorsOnValidate:j.value,immediateDirty:D.value,id:m(S.options.id),disabled:m(S.options.disabled)}));function ee(){S.shortcuts?.nested&&Object.entries(S.shortcuts.nested).forEach(([e,n])=>{let a=t();J[e]=a.run(()=>{let e=d();return y(()=>{e.value=n(u({$dirty:s,$path:i,$value:r,$silentValue:o,$error:v,$originalValue:_,$pending:L,$invalid:l,$correct:p,$ready:P,$anyDirty:c,$name:G,$silentErrors:V,$initialValue:h,$errors:B,$fields:F,$edited:H,$anyEdited:W,$issues:R,$self:M,"~modifiers":g(S.options)}))}),e}),T.push(a)})}let q=e({get:()=>f?Object.fromEntries(Object.entries(f?.(F.value)??{}).map(([e,t])=>t.length?[e,{...Object.fromEntries([`$invalid`,`$error`,`$pending`,`$dirty`,`$correct`].map(e=>[e,ie(t,e)])),...Object.fromEntries([`$errors`,`$silentErrors`].map(e=>[e,ae(t,e)]))}]:[])):{},set(){}}),J={};return ee(),{$dirty:s,$anyDirty:c,$invalid:l,$correct:p,$error:v,$pending:L,$issues:R,$errors:B,$silentErrors:V,$clearExternalErrorsOnValidate:j,$ready:P,$name:G,$shortcuts:J,$groups:q,$silentValue:o,$edited:H,$anyEdited:W,$localPending:I,$autoDirty:E,$silent:C,$value:a,$modifiers:K}})}function z(){if(E?.(),k?.(),A?.(),D?.(),T=[],w={},F.value)for(let e of Object.values(F.value))e?.$unwatch()}function B(e){s&&(s.value=e)}function V(){s&&!O(s.value)&&(s.value={})}function H(e,t){if(k?.(),z(),!t)if(e?.toOriginalState)r.value=j({..._}),h.value=j({..._});else if(e?.toInitialState)r.value=j({...h.value});else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,h.value=j(t),r.value=j(t)}else h.value=j(r.value);if(!e?.keepValidationState){for(let t of Object.values(F.value))t?.$reset(e,!0);M.value?.$reset(e,!0)}e?.clearExternalErrors===!1&&V(),I(),t||N()}function U(e=!0,t=!1){for(let n of Object.values(F.value))n?.$touch(e,t);M.value?.$touch(e,t)}function W(e){return e.filter(([e,t])=>x(t)&&!de(t)?!(t&&typeof t==`object`&&`_null`in t)&&!O(t):Array.isArray(t)?t.length:!0)}function G(e=!0){let t=Object.entries(F.value).map(([t,n])=>[t,n.$extractDirtyFields(e)]);return e&&(t=W(t)),Object.fromEntries(t)}function K(){for(let e of Object.values(F.value))e.$abort();M.value?.$abort()}async function ee(e){try{if(e&&(r.value=e),S.schemaMode)return S.onValidate?(U(!1),w.$localPending.value=!0,S.onValidate()):{valid:!1,data:r.value,errors:w.$errors.value,issues:w.$issues.value};{let e=r.value;K(),w.$clearExternalErrorsOnValidate.value&&V();let t=[...Object.values(F.value).map(e=>e.$validate()),...M.value?[M.value?.$validate()]:[]];return{valid:(await Promise.allSettled(t)).every(e=>e.status===`fulfilled`&&e?.value?.valid===!0),data:e,errors:w.$errors.value,issues:w.$issues.value}}}catch{return{valid:!1,data:r.value,errors:w.$errors.value,issues:w.$issues.value}}finally{w.$localPending.value=!1}}function q(e){try{return e&&(r.value=e),w.$clearExternalErrorsOnValidate.value&&V(),[...Object.values(F.value).map(e=>e.$validateSync()),...M.value?[M.value?.$validateSync()]:[]].every(e=>!!e)}catch{return!1}}let{$shortcuts:J,$localPending:te,...Y}=w,X=u({...Y,...J,$path:i,$initialValue:h,$originalValue:_,$self:M,$externalErrors:s,$fields:F,$reset:H,$touch:U,$validate:ee,$unwatch:z,$watch:R,$setExternalErrors:B,$clearExternalErrors:V,$extractDirtyFields:G,$abort:K,$validateSync:q,...o?{"~modifiers":w.$modifiers}:{},...Se(ee)});return Object.defineProperty(X,Symbol.for(`regle:instance`),{value:!0}),y(()=>{for(let e of Object.keys(X).filter(e=>!e.startsWith(`$`)&&!e.startsWith(`~`)))delete X[e];for(let e of Object.values(F.value))e?.$name&&Object.assign(X,{[e.$name]:e})}),X}function De({rulesDef:e,...n}){if(ce(e,n.state))return Te({rulesDef:e,...n});if(se(n.state,e)){if(K(n.state))return Ee({rulesDef:e,...n});{let r=t().run(()=>{let e=p(n.state.value?n.state:d({}));return v(()=>n.state.value,t=>{e.value=t},{deep:!0}),v(e,e=>{n.state.value=e},{deep:!0}),{fakeState:e}}),{state:i,...a}=n;return Ee({rulesDef:e,...a,state:r.fakeState})}}else if(le(e))return Ce({rulesDef:a(e.value)?e.value:e,...n})}function Oe({initialState:e,originalState:t,options:n,scopeRules:i,state:a,customRules:o,shortcuts:c,schemaErrors:u,schemaMode:f=!1,onValidate:p,overrides:h}){let g=he(),_=d(),y=d(),b,S,C;function T(){C=v(()=>m(n.disabled),async e=>{e?A():(k(),D())})}function E(e){S?.(),e&&(x(e)&&Object.keys(e).some(e=>e.includes(`.`))?y.value=w(e):Array.isArray(e)?y.value=e:y.value=e??{}),O()}function D(){b=v(()=>n.externalErrors?.value,E,{deep:!0})}function O(){S=v(()=>y.value,e=>{b?.(),n.externalErrors?.value&&(n.externalErrors.value=e),E(e),D()},{deep:!0})}function k(){se(a,i)?_.value=Ee({rootRules:i,rulesDef:i,state:a,customMessages:o?.(),storage:g,options:n,externalErrors:y,validationGroups:n.validationGroups,initialState:e,originalState:t,shortcuts:c,fieldName:void 0,path:``,cachePath:``,schemaErrors:u,rootSchemaErrors:u,schemaMode:f,onValidate:p,overrides:h}):le(i)&&(_.value=Ce({rulesDef:i,state:a,customMessages:o?.(),storage:g,options:n,externalErrors:y,initialState:e,originalState:t,shortcuts:c,fieldName:void 0,path:``,cachePath:``,schemaMode:f,schemaErrors:u,onValidate:p,overrides:h}))}E(n.externalErrors?.value),k(),m(n.disabled)?s().then(()=>{_.value?.$unwatch()}):D(),T();function A(){_.value?.$unwatch(),S?.(),b?.()}return r()&&l(()=>{A(),C?.()}),_}function ke({state:t,rulesFactory:n,options:r,globalOptions:o,customRules:s,shortcuts:c,overrides:l}){let u=a(n)?n:typeof n==`function`?void 0:e(()=>n),p=i(Z,void 0)??{},m={...p.modifiers,...o},g=()=>({...p.rules?.(),...s?.()}),_={...p.shortcuts,...c},v={...p.overrides,...l},b={...m,...r},S,C=f(u??{});typeof n==`function`&&(S=y(()=>{C.value=n(t),h(C)}));let w=d(x(t.value)?{...j(t.value)}:j(t.value)),T=x(t.value)?{...j(t.value)}:j(t.value);return ne(()=>{S?.()}),Oe({scopeRules:C,state:t,options:b,initialState:w,originalState:T,customRules:g,shortcuts:_,overrides:v})}function Ae(t){let{rules:n,modifiers:r={},shortcuts:i,overrides:o}=t??{};function s(t,s,c){let l=a(t)?t:d(t),u=e(()=>m(c?.disabled)??!1);return{r$:L(ke({state:l,rulesFactory:s,options:c,globalOptions:r,customRules:n,shortcuts:i,overrides:o}),u)}}return s}const je=Ae();function Me(){function e(e,t){return t}return e}const Ne=Me();function Pe(e,t){return S(m(e).$errors,String(t))}function Fe(e,t){return S(m(e).$issues,String(t))}function Ie(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&&x(r)&&`$each`in r&&r.$each&&x(r.$each)?t[n]=[Ie(r.$each)]:x(r)&&!O(r)&&!Object.entries(r).some(([e,t])=>$(t)||typeof t==`function`)?t[n]=Ie(r):t[n]=null}return t}function Le(t){let{rules:n,modifiers:r={},shortcuts:i,overrides:o}=t??{};function s(t,s){let c=a(t)?t:typeof t==`function`?void 0:e(()=>t),l=d(Ie(c?.value)),u=e(()=>m(s?.disabled)??!1);return L(ke({state:l,rulesFactory:c,options:s,globalOptions:r,customRules:n,shortcuts:i,overrides:o}),u)}return s}const Re=Le();function ze(e){if(D(e)){let t=e,n=class extends t{constructor(...e){return super(...e),Be(this)}};return Object.defineProperty(n,`name`,{value:t.name}),Be(n)}return Be(e)}function Be(e){return!T(e,Q.REGLE_STATIC)&&Object.isExtensible(e)&&E(e,Q.REGLE_STATIC,!0),e}function Ve({rules:e,modifiers:t,shortcuts:n,overrides:r}){let i=Ae({rules:e,modifiers:t,shortcuts:n,overrides:r}),a=Le({rules:e,modifiers:t,shortcuts:n,overrides:r});return i.__config={rules:e,modifiers:t,shortcuts:n,overrides:r},a.__config={rules:e,modifiers:t,shortcuts:n,overrides:r},{useRegle:i,inferRules:Me(),useRules:a}}function He(e,{rules:t,modifiers:n,shortcuts:r,overrides:i}){let a=e.__config??{},o=()=>({...a.rules?.(),...t?.()}),s=a.modifiers&&n?C(a.modifiers,n):a.modifiers??n,c=a.shortcuts&&r?C(a.shortcuts,r):a.shortcuts??r,l=a.overrides&&i?C(a.overrides,i):a.overrides??i,u=Ae({rules:o,modifiers:s,shortcuts:c,overrides:l});return u.__config={rules:o,modifiers:s,shortcuts:c,overrides:l},{useRegle:u,inferRules:Me()}}function Ue(e){return e}function We(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)),l=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]))),v=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(e){Object.values(t).forEach(t=>{t.$setExternalErrors(e)})}function E(){Object.values(t).forEach(e=>{e.$clearExternalErrors()})}function D(e){try{return e&&(i.value=e),Object.values(t).every(t=>t.$validateSync(e))}catch{return!1}}async function O(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 k=u({...!r&&{$silentValue:a},$errors:g,$issues:m,$silentIssues:h,$silentErrors:_,$instances:x,$value:i,$dirty:o,$anyDirty:s,$invalid:c,$correct:l,$error:d,$pending:p,$ready:f,$edited:v,$anyEdited:b,$reset:S,$touch:C,$validate:O,$validateSync:D,$extractDirtyFields:w,$clearExternalErrors:E,$setExternalErrors:T});return y(()=>{if(!r){for(let e of Object.keys(k).filter(e=>!e.startsWith(`$`)&&!e.startsWith(`~`)))delete k[e];for(let[e,t]of Object.entries(x.value))Object.assign(k,{[e]:t})}}),k}function Ge(t,n){function r(r){let i=e(()=>m(r)),a=u({});c();let o=d(l(t.value)),s=u({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]={})}))}v(i,c),v(t,e=>{o.value=l(e)},{deep:!0});function l(e){return i.value?typeof i.value==`string`?We(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})})}),We(a,!n.asRecord)):We(e[`~~global`]??{},!n.asRecord)}return{r$:s.r$}}return{useCollectScope:r}}function Ke(t,r){let i=r??je;return{useScopedRegle:((r,a,o)=>{let{namespace:s,scopeKey:l,id:u,...f}=o??{};i.__config??={};let p=e(()=>u??l),h=e(()=>m(s)),g=d(`${Object.keys(t.value).length+1}-${X()}`),_=e(()=>p.value??`instance-${g.value}`),{r$:y}=i(r,a,{...f,id:p.value});x(),ne(b),v(h,(e,t)=>{b(t),x()}),n()&&c(()=>{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][_.value]:t.value[`~~global`][_.value]&&delete t.value[`~~global`][_.value]}function x(){h.value?(t.value[h.value]||(t.value[h.value]={}),t.value[h.value][_.value]=y):(t.value[`~~global`]||(t.value[`~~global`]={}),t.value[`~~global`][_.value]=y)}return{r$:y,dispose:b,register:x}})}}function qe(e){let t=(e?.customStore?()=>(e.customStore&&(e.customStore?.value[`~~global`]?e.customStore?.value&&(e.customStore.value={"~~global":{}}):e.customStore.value[`~~global`]={}),e.customStore):re(()=>d({"~~global":{}})))(),{useScopedRegle:n}=Ke(t,e?.customUseRegle),{useCollectScope:r}=Ge(t,{asRecord:e?.asRecord});return{useScopedRegle:n,useCollectScope:r}}const{useCollectScope:Je,useScopedRegle:Ye}=qe(),Xe=Je,Ze=Ye;function Qe(t,n,r){let i=e(()=>m(t)[n]);return e(()=>r.find(e=>{if(e[n]&&`literal`in e[n]){let t=e[n].literal;if($(t))return m(t._params?.[0])===i.value}})||r.find(e=>x(e[n])&&!Object.keys(e[n]).some(e=>e===`literal`))||{})}function $e(e,t,n){return!!e&&t in e&&x(e[t])&&`$value`in e[t]&&e[t]?.$value===n}function et(e,t,n,r){let i=a(e)?p(e.value,`$fields`):p(e,`$fields`),o=d();return v(i,async()=>{await s(),$e(i.value,t,n)?o.value=p(e).value:o.value=void 0},{immediate:!0,flush:`pre`}),o}function tt(e){return e}function nt(e,t){return n=>C({...e},t(n))}const rt={install(e,t){e.provide(oe,me),t&&e.provide(Z,t)}};export{R as InternalRuleType,rt as RegleVuePlugin,U as createRule,qe as createScopedUseRegle,Qe as createVariant,Ve as defineRegleConfig,Ue as defineRegleOptions,tt as defineRules,He as extendRegleConfig,ye as flatErrors,Pe as getErrors,Fe as getIssues,Ne as inferRules,G as isRegleInstance,ze as markStatic,We as mergeRegles,$e as narrowVariant,nt as refineRules,z as unwrapRuleParameters,Xe as useCollectScope,je as useRegle,Oe as useRootStorage,Re as useRules,Ze as useScopedRegle,et as variantToRef};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@regle/core",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.21.0-beta.2",
|
|
4
4
|
"description": "Headless form validation library for Vue",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"regle",
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
"dependencies": {
|
|
51
51
|
"@standard-schema/spec": "1.1.0",
|
|
52
52
|
"@vue/devtools-api": "7.7.9",
|
|
53
|
-
"type-fest": "5.
|
|
53
|
+
"type-fest": "5.5.0"
|
|
54
54
|
},
|
|
55
55
|
"devDependencies": {
|
|
56
56
|
"@total-typescript/ts-reset": "0.6.1",
|
|
@@ -58,11 +58,11 @@
|
|
|
58
58
|
"@typescript/native-preview": "7.0.0-dev.20260317.1",
|
|
59
59
|
"@vue/devtools-kit": "7.7.9",
|
|
60
60
|
"@vue/test-utils": "2.4.6",
|
|
61
|
-
"tsdown": "0.
|
|
61
|
+
"tsdown": "0.21.4",
|
|
62
62
|
"typescript": "5.9.3",
|
|
63
63
|
"vitest": "4.1.0",
|
|
64
64
|
"vue": "3.5.30",
|
|
65
|
-
"vue-tsc": "3.2.
|
|
65
|
+
"vue-tsc": "3.2.6"
|
|
66
66
|
},
|
|
67
67
|
"peerDependencies": {
|
|
68
68
|
"pinia": ">=2.2.5",
|