@regle/core 1.18.3 → 1.19.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 +171 -111
- package/dist/regle-core.js +109 -48
- package/dist/regle-core.min.js +2 -2
- package/package.json +1 -1
package/dist/regle-core.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @regle/core v1.
|
|
2
|
+
* @regle/core v1.19.0-beta.2
|
|
3
3
|
* (c) 2026 Victor Garcia
|
|
4
4
|
* @license MIT
|
|
5
5
|
*/
|
|
@@ -139,7 +139,7 @@ type RegleShortcutDefinition<TCustomRules extends Record<string, any> = {}> = {
|
|
|
139
139
|
/**
|
|
140
140
|
* Allow you to customize the properties for every parent of a nested object
|
|
141
141
|
*/
|
|
142
|
-
nested?: ShortcutCommonFn<RegleStatus<Record<string, any>, ReglePartialRuleTree<any, Partial<TCustomRules
|
|
142
|
+
nested?: ShortcutCommonFn<RegleStatus<Record<string, any>, ReglePartialRuleTree<any, Partial<TCustomRules>>>>;
|
|
143
143
|
/**
|
|
144
144
|
* Allow you to customize the properties for every parent of a collection
|
|
145
145
|
*/
|
|
@@ -172,7 +172,7 @@ type Regle<TState extends Record<string, any> = EmptyObject, TRules extends Regl
|
|
|
172
172
|
* @template TShortcuts - Custom shortcut definitions for common validation patterns
|
|
173
173
|
* @template TAdditionalReturnProperties - Additional properties to extend the return type
|
|
174
174
|
*/
|
|
175
|
-
type RegleSingleField<TState extends Maybe<PrimitiveTypes> = any, TRules extends RegleRuleDecl<NonNullable<TState
|
|
175
|
+
type RegleSingleField<TState extends Maybe<PrimitiveTypes> = any, TRules extends RegleRuleDecl<NonNullable<TState>, CustomRulesDeclarationTree> = EmptyObject, TShortcuts extends RegleShortcutDefinition = {}, TAdditionalReturnProperties extends Record<string, any> = {}> = {
|
|
176
176
|
/**
|
|
177
177
|
* r$ is a reactive object containing the values, errors, dirty state and all the necessary validations properties you'll need to display information.
|
|
178
178
|
*
|
|
@@ -290,8 +290,8 @@ type NarrowVariant<TRoot extends {
|
|
|
290
290
|
$value: unknown;
|
|
291
291
|
}, TKey extends keyof TRoot, TValue extends (LazyJoinDiscriminatedUnions<Exclude<TRoot[TKey], RegleCollectionStatus<any, any, any> | RegleStatus<any, any, any> | NarrowVariantExtracts[keyof NarrowVariantExtracts]>> extends {
|
|
292
292
|
$value: infer V;
|
|
293
|
-
} ? V : unknown)> = Extract<TRoot, { [K in TKey]: RegleFieldStatus<TValue, any, any> | RegleFieldStatus<MaybeInput<TValue>, any, any> | (IsEmptyObject<NarrowVariantFieldExtracts<TValue>> extends true ?
|
|
294
|
-
$fields: Extract<TRoot['$fields'], { [K in TKey]: RegleFieldStatus<TValue, any, any> | RegleFieldStatus<MaybeInput<TValue>, any, any> | (IsEmptyObject<NarrowVariantFieldExtracts<TValue>> extends true ?
|
|
293
|
+
} ? V : unknown)> = Extract<TRoot, { [K in TKey]: RegleFieldStatus<TValue, any, any> | RegleFieldStatus<MaybeInput<TValue>, any, any> | (IsEmptyObject<NarrowVariantFieldExtracts<TValue>> extends true ? 'foo' : NarrowVariantFieldExtracts<TValue>[keyof NarrowVariantFieldExtracts<TValue>]) }> & {
|
|
294
|
+
$fields: Extract<TRoot['$fields'], { [K in TKey]: RegleFieldStatus<TValue, any, any> | RegleFieldStatus<MaybeInput<TValue>, any, any> | (IsEmptyObject<NarrowVariantFieldExtracts<TValue>> extends true ? 'bar' : NarrowVariantFieldExtracts<TValue>[keyof NarrowVariantFieldExtracts<TValue>]) }> & { [K in TKey]: TRoot[K] & {
|
|
295
295
|
$value: TValue;
|
|
296
296
|
} };
|
|
297
297
|
} & {
|
|
@@ -299,9 +299,9 @@ type NarrowVariant<TRoot extends {
|
|
|
299
299
|
} & { [K in TKey]: TRoot[K] & {
|
|
300
300
|
$value: TValue;
|
|
301
301
|
} };
|
|
302
|
-
type MaybeVariantStatus<TState extends Record<string, any> | undefined = Record<string, any>, TRules extends ReglePartialRuleTree<NonNullable<TState>> = Record<string, any>, TShortcuts extends RegleShortcutDefinition = {}> = IsUnion<NonNullable<TState>> extends true ? IsUnion<TRules> extends true ? Omit<RegleStatus<TState
|
|
303
|
-
$fields: ProcessChildrenFields<TState
|
|
304
|
-
} & (HasNamedKeys<TState
|
|
302
|
+
type MaybeVariantStatus<TState extends Record<string, any> | undefined = Record<string, any>, TRules extends ReglePartialRuleTree<NonNullable<TState>> = Record<string, any>, TShortcuts extends RegleShortcutDefinition = {}> = IsUnion<NonNullable<TState>> extends true ? IsUnion<TRules> extends true ? Omit<RegleStatus<NonNullable<TState>, TRules, TShortcuts>, '$fields'> & {
|
|
303
|
+
$fields: ProcessChildrenFields<NonNullable<TState>, TRules, TShortcuts>[keyof ProcessChildrenFields<NonNullable<TState>, TRules, TShortcuts>];
|
|
304
|
+
} & (HasNamedKeys<NonNullable<TState>> extends true ? ProcessChildrenFields<NonNullable<TState>, TRules, TShortcuts>[keyof ProcessChildrenFields<NonNullable<TState>, TRules, TShortcuts>] : {}) : RegleStatus<JoinDiscriminatedUnions<NonNullable<TState>>, TRules extends ReglePartialRuleTree<NonNullable<JoinDiscriminatedUnions<NonNullable<TState>>>> ? TRules : EmptyObject, TShortcuts> : RegleStatus<TState, TRules, TShortcuts>;
|
|
305
305
|
/** Helper type to extract state tuple item at index */
|
|
306
306
|
type StateTupleItem<TState, TIndexInt extends number> = UnionToTuple<TState>[TIndexInt] extends Record<string, any> ? UnionToTuple<TState>[TIndexInt] : never;
|
|
307
307
|
/** Helper type to extract NonNullable state tuple item */
|
|
@@ -403,7 +403,87 @@ type ArrayElement<T> = T extends Array<infer U> ? U : never;
|
|
|
403
403
|
* Declares a tuple that must have at least one element
|
|
404
404
|
*/
|
|
405
405
|
type NonEmptyTuple<T> = [T, ...T[]] | T[];
|
|
406
|
-
interface
|
|
406
|
+
interface CommonComparisonOptions {
|
|
407
|
+
/**
|
|
408
|
+
* Change the behaviour of the rule to check only if the value is equal in addition to be strictly superior or inferior
|
|
409
|
+
* @default true
|
|
410
|
+
*/
|
|
411
|
+
allowEqual?: boolean;
|
|
412
|
+
}
|
|
413
|
+
interface CommonAlphaOptions {
|
|
414
|
+
/**
|
|
415
|
+
* Allow symbols in alphabetical-like rules (like "_")
|
|
416
|
+
* @default true
|
|
417
|
+
*/
|
|
418
|
+
allowSymbols?: boolean;
|
|
419
|
+
}
|
|
420
|
+
interface UrlOptions {
|
|
421
|
+
/**
|
|
422
|
+
* Optional regex for validating the URL protocol
|
|
423
|
+
*/
|
|
424
|
+
protocol?: RegExp;
|
|
425
|
+
}
|
|
426
|
+
type DefaultValidators = {
|
|
427
|
+
alpha: RegleRuleWithParamsDefinition<unknown, string, [options?: CommonAlphaOptions | undefined]>;
|
|
428
|
+
alphaNum: RegleRuleWithParamsDefinition<unknown, string | number, [options?: CommonAlphaOptions | undefined]>;
|
|
429
|
+
atLeastOne: RegleRuleWithParamsDefinition<unknown, Record<string, unknown> | object, [keys?: string[] | undefined], false, boolean, false, Record<string, unknown> | object>;
|
|
430
|
+
between: RegleRuleWithParamsDefinition<unknown, number, [min: number, max: number, options?: CommonComparisonOptions]>;
|
|
431
|
+
boolean: RegleRuleDefinition<unknown, unknown, [], false, boolean, any, unknown>;
|
|
432
|
+
checked: RegleRuleDefinition<unknown, boolean, [], false, boolean, boolean>;
|
|
433
|
+
contains: RegleRuleWithParamsDefinition<unknown, string, [part: MaybeInput<string>], false, boolean>;
|
|
434
|
+
date: RegleRuleDefinition<unknown, unknown, [], false, boolean, MaybeInput<Date>, unknown>;
|
|
435
|
+
dateAfter: RegleRuleWithParamsDefinition<unknown, string | Date, [after: MaybeInput<string | Date>, options?: CommonComparisonOptions], false, true | {
|
|
436
|
+
$valid: false;
|
|
437
|
+
error: 'date-not-after';
|
|
438
|
+
} | {
|
|
439
|
+
$valid: false;
|
|
440
|
+
error: 'value-or-parameter-not-a-date';
|
|
441
|
+
}>;
|
|
442
|
+
dateBefore: RegleRuleWithParamsDefinition<unknown, string | Date, [before: MaybeInput<string | Date>, options?: CommonComparisonOptions], false, true | {
|
|
443
|
+
$valid: false;
|
|
444
|
+
error: 'date-not-before';
|
|
445
|
+
} | {
|
|
446
|
+
$valid: false;
|
|
447
|
+
error: 'value-or-parameter-not-a-date';
|
|
448
|
+
}>;
|
|
449
|
+
dateBetween: RegleRuleWithParamsDefinition<unknown, string | Date, [before: MaybeInput<string | Date>, after: MaybeInput<string | Date>, options?: CommonComparisonOptions], false, boolean>;
|
|
450
|
+
decimal: RegleRuleDefinition<unknown, string | number, [], false, boolean, string | number>;
|
|
451
|
+
email: RegleRuleDefinition<unknown, string, [], false, boolean, string>;
|
|
452
|
+
endsWith: RegleRuleWithParamsDefinition<unknown, string, [part: MaybeInput<string>], false, boolean>;
|
|
453
|
+
exactLength: RegleRuleWithParamsDefinition<unknown, string | any[] | Record<PropertyKey, any>, [count: number], false, boolean>;
|
|
454
|
+
exactValue: RegleRuleWithParamsDefinition<unknown, number, [count: number], false, boolean>;
|
|
455
|
+
file: RegleRuleDefinition<unknown, unknown, [], false, boolean, MaybeInput<File>, unknown>;
|
|
456
|
+
fileType: RegleRuleWithParamsDefinition<unknown, File, [accept: readonly string[]], false, boolean>;
|
|
457
|
+
hexadecimal: RegleRuleDefinition<unknown, string, [], false, boolean, string>;
|
|
458
|
+
integer: RegleRuleDefinition<unknown, string | number, [], false, boolean, string | number>;
|
|
459
|
+
ipv4Address: RegleRuleDefinition<unknown, string, [], false, boolean, string>;
|
|
460
|
+
literal: RegleRuleDefinition<unknown, string | number, [literal: string | number], false, boolean, MaybeInput<string | number>, string | number, true>;
|
|
461
|
+
macAddress: RegleRuleWithParamsDefinition<unknown, string, [separator?: string | undefined], false, boolean>;
|
|
462
|
+
maxLength: RegleRuleWithParamsDefinition<unknown, string | any[] | Record<PropertyKey, any>, [max: number, options?: CommonComparisonOptions], false, boolean>;
|
|
463
|
+
maxFileSize: RegleRuleWithParamsDefinition<unknown, File, [maxSize: number], false, true | {
|
|
464
|
+
$valid: boolean;
|
|
465
|
+
fileSize: number;
|
|
466
|
+
}, MaybeInput<File>, File>;
|
|
467
|
+
maxValue: RegleRuleWithParamsDefinition<unknown, number | string, [max: number | string, options?: CommonComparisonOptions], false, boolean>;
|
|
468
|
+
minFileSize: RegleRuleWithParamsDefinition<unknown, File, [minSize: number], false, true | {
|
|
469
|
+
$valid: boolean;
|
|
470
|
+
fileSize: number;
|
|
471
|
+
}, MaybeInput<File>, File>;
|
|
472
|
+
minLength: RegleRuleWithParamsDefinition<unknown, string | any[] | Record<PropertyKey, any>, [min: number, options?: CommonComparisonOptions], false, boolean, string | any[] | Record<PropertyKey, any>>;
|
|
473
|
+
minValue: RegleRuleWithParamsDefinition<unknown, number | string, [min: number | string, options?: CommonComparisonOptions], false, boolean>;
|
|
474
|
+
nativeEnum: RegleRuleDefinition<unknown, string | number, [enumLike: EnumLike], false, boolean, string | number>;
|
|
475
|
+
number: RegleRuleDefinition<unknown, unknown, [], false, boolean, any, unknown>;
|
|
476
|
+
numeric: RegleRuleDefinition<unknown, string | number, [], false, boolean, string | number>;
|
|
477
|
+
oneOf: RegleRuleDefinition<unknown, string | number, [options: readonly [string | number, ...(string | number)[]]], false, boolean, MaybeInput<string | number>, string | number>;
|
|
478
|
+
regex: RegleRuleWithParamsDefinition<unknown, string | number, [regexp: RegExp | readonly RegExp[]], false, boolean>;
|
|
479
|
+
required: RegleRuleDefinition<unknown, unknown, [], false, boolean, unknown, unknown, true>;
|
|
480
|
+
sameAs: RegleRuleWithParamsDefinition<unknown, unknown, [target: any, otherName?: string], false, boolean>;
|
|
481
|
+
string: RegleRuleDefinition<unknown, unknown, [], false, boolean, any, unknown>;
|
|
482
|
+
type: RegleRuleDefinition<unknown, unknown, [], false, boolean, unknown, unknown>;
|
|
483
|
+
startsWith: RegleRuleWithParamsDefinition<unknown, string, [part: MaybeInput<string>], false, boolean>;
|
|
484
|
+
url: RegleRuleWithParamsDefinition<unknown, string, [options?: UrlOptions | undefined], false, boolean, unknown, string>;
|
|
485
|
+
};
|
|
486
|
+
interface inferRulesFn<TCustomRules extends Partial<ExtendedRulesDeclarationsOverrides>> {
|
|
407
487
|
<TState extends MaybeRef<Record<string, any> | MaybeInput<PrimitiveTypes>>, TRules extends ReglePartialRuleTree<Unwrap<TState extends Record<string, any> ? TState : {}>, Partial<DefaultValidatorsTree> & TCustomRules>, TDecl extends RegleRuleDecl<NonNullable<TState>, Partial<DefaultValidatorsTree> & TCustomRules>>(state: Maybe<TState> | DeepReactiveState<TState>, rulesFactory: Unwrap<TState> extends MaybeInput<PrimitiveTypes> ? TDecl : Unwrap<TState> extends Record<string, any> ? TRules : {}): NonNullable<Unwrap<TState>> extends PrimitiveTypes ? TDecl : TRules;
|
|
408
488
|
}
|
|
409
489
|
/**
|
|
@@ -433,8 +513,8 @@ interface inferRulesFn<TCustomRules extends Partial<ExtendedRulesDeclarations>>
|
|
|
433
513
|
*
|
|
434
514
|
* @see {@link https://reglejs.dev/core-concepts/#dynamic-rules-object Documentation}
|
|
435
515
|
*/
|
|
436
|
-
declare const inferRules: inferRulesFn<Partial<
|
|
437
|
-
interface GlobalConfigOptions<TCustomRules extends Partial<
|
|
516
|
+
declare const inferRules: inferRulesFn<Partial<ExtendedRulesDeclarationsOverrides>>;
|
|
517
|
+
interface GlobalConfigOptions<TCustomRules extends Partial<ExtendedRulesDeclarationsOverrides> = EmptyObject, TShortcuts extends RegleShortcutDefinition<any> = never> {
|
|
438
518
|
/**
|
|
439
519
|
* Declare custom rules to be used globally or override the default rules messages.
|
|
440
520
|
*
|
|
@@ -526,14 +606,14 @@ interface GlobalConfigOptions<TCustomRules extends Partial<ExtendedRulesDeclarat
|
|
|
526
606
|
*
|
|
527
607
|
* @see {@link https://reglejs.dev/advanced-usage/global-config Documentation}
|
|
528
608
|
*/
|
|
529
|
-
declare function defineRegleConfig<TShortcuts extends RegleShortcutDefinition<TCustomRules>, TCustomRules extends Partial<
|
|
609
|
+
declare function defineRegleConfig<TShortcuts extends RegleShortcutDefinition<TCustomRules>, TCustomRules extends Partial<ExtendedRulesDeclarationsOverrides>>({
|
|
530
610
|
rules,
|
|
531
611
|
modifiers,
|
|
532
612
|
shortcuts,
|
|
533
613
|
overrides
|
|
534
614
|
}: GlobalConfigOptions<TCustomRules, TShortcuts>): {
|
|
535
|
-
useRegle: useRegleFn<TCustomRules, TShortcuts>;
|
|
536
|
-
inferRules: inferRulesFn<TCustomRules
|
|
615
|
+
useRegle: useRegleFn<Omit<TCustomRules, keyof DefaultValidators>, TShortcuts>;
|
|
616
|
+
inferRules: inferRulesFn<Omit<TCustomRules, keyof DefaultValidators>>;
|
|
537
617
|
useRules: useRulesFn<TCustomRules, TShortcuts>;
|
|
538
618
|
};
|
|
539
619
|
/**
|
|
@@ -563,7 +643,7 @@ declare function defineRegleConfig<TShortcuts extends RegleShortcutDefinition<TC
|
|
|
563
643
|
*
|
|
564
644
|
* @see {@link https://reglejs.dev/advanced-usage/global-config Documentation}
|
|
565
645
|
*/
|
|
566
|
-
declare function extendRegleConfig<TRootCustomRules extends Partial<
|
|
646
|
+
declare function extendRegleConfig<TRootCustomRules extends Partial<ExtendedRulesDeclarationsOverrides>, TRootShortcuts extends RegleShortcutDefinition<{}>, TShortcuts extends RegleShortcutDefinition<Merge<TRootCustomRules, TCustomRules>>, TCustomRules extends Partial<ExtendedRulesDeclarationsOverrides>>(regle: useRegleFn<TRootCustomRules, TRootShortcuts>, {
|
|
567
647
|
rules,
|
|
568
648
|
modifiers,
|
|
569
649
|
shortcuts,
|
|
@@ -572,9 +652,31 @@ declare function extendRegleConfig<TRootCustomRules extends Partial<ExtendedRule
|
|
|
572
652
|
useRegle: useRegleFn<Merge<TRootCustomRules, TCustomRules>, TRootShortcuts & TShortcuts>;
|
|
573
653
|
inferRules: inferRulesFn<Merge<TRootCustomRules, TCustomRules>>;
|
|
574
654
|
};
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
655
|
+
/**
|
|
656
|
+
* Define a global Regle options to customize the validation behavior across your application.
|
|
657
|
+
* It's meant to be used with the Regle Vue plugin.
|
|
658
|
+
*
|
|
659
|
+
* @param options - Configuration options
|
|
660
|
+
* @returns The configuration options
|
|
661
|
+
*
|
|
662
|
+
* @example
|
|
663
|
+
* ```ts
|
|
664
|
+
* import { defineRegleOptions } from '@regle/core';
|
|
665
|
+
*
|
|
666
|
+
* const regleOptions = defineRegleOptions({
|
|
667
|
+
* modifiers: {
|
|
668
|
+
* lazy: true,
|
|
669
|
+
* rewardEarly: true
|
|
670
|
+
* }
|
|
671
|
+
* });
|
|
672
|
+
* ```
|
|
673
|
+
*
|
|
674
|
+
* @see {@link https://reglejs.dev/advanced-usage/global-config Documentation}
|
|
675
|
+
*/
|
|
676
|
+
declare function defineRegleOptions<T extends GlobalConfigOptions<Partial<ExtendedRulesDeclarationsOverrides>, RegleShortcutDefinition<any>>>(options: T): T;
|
|
677
|
+
type useRegleFnOptions<TState extends Record<string, any> | MaybeInput<PrimitiveTypes>, TRules extends ReglePartialRuleTree<NonNullable<JoinDiscriminatedUnions<TState>>, CustomRulesDeclarationTree>, TAdditionalOptions extends Record<string, any>, TValidationGroups extends Record<string, RegleValidationGroupEntry[]>> = TState extends Record<string, any> ? Partial<DeepMaybeRef<RegleBehaviourOptions>> & LocalRegleBehaviourOptions<JoinDiscriminatedUnions<TState>, TRules, TValidationGroups> & TAdditionalOptions : Partial<DeepMaybeRef<RegleBehaviourOptions>> & TAdditionalOptions;
|
|
678
|
+
interface useRegleFn<TCustomRules extends Partial<ExtendedRulesDeclarationsOverrides>, TShortcuts extends RegleShortcutDefinition<any> = never, TAdditionalReturnProperties extends Record<string, any> = {}, TAdditionalOptions extends Record<string, any> = {}> {
|
|
679
|
+
<TState extends MaybeRef<Record<string, any> | MaybeInput<PrimitiveTypes>>, TRules extends ReglePartialRuleTree<JoinDiscriminatedUnions<Unwrap<TState>>, Partial<ExtendedRulesDeclarations & Omit<TCustomRules, keyof DefaultValidatorsTree>>>, TDecl extends RegleRuleDecl<NonNullable<Unwrap<TState>>, Partial<ExtendedRulesDeclarations & TCustomRules>>, TValidationGroups extends Record<string, RegleValidationGroupEntry[]>>(...params: [state: Maybe<TState> | DeepReactiveState<TState>, rulesFactory: Unwrap<TState> extends MaybeInput<PrimitiveTypes> ? MaybeRefOrGetter<TDecl> : Unwrap<TState> extends Record<string, any> ? MaybeComputedOrGetter<TRules> : {}, ...(HaveAnyRequiredProps<useRegleFnOptions<Unwrap<TState>, TRules, TAdditionalOptions, TValidationGroups>> extends true ? [options: useRegleFnOptions<Unwrap<NoInferLegacy<TState>>, TRules, TAdditionalOptions, TValidationGroups>] : [options?: useRegleFnOptions<Unwrap<NoInferLegacy<TState>>, TRules, TAdditionalOptions, TValidationGroups>])]): NonNullable<Unwrap<TState>> extends PrimitiveTypes ? RegleSingleField<NonNullable<Unwrap<TState>>, TDecl, TShortcuts, TAdditionalReturnProperties> : Regle<Unwrap<TState> extends Record<string, any> ? Unwrap<TState> : {}, UnwrapSimple<TRules> extends Record<string, any> ? UnwrapSimple<TRules> : {}, TValidationGroups, TShortcuts, TAdditionalReturnProperties>;
|
|
578
680
|
__config?: GlobalConfigOptions<TCustomRules, TShortcuts>;
|
|
579
681
|
}
|
|
580
682
|
/**
|
|
@@ -610,7 +712,7 @@ interface useRegleFn<TCustomRules extends Partial<ExtendedRulesDeclarations>, TS
|
|
|
610
712
|
*
|
|
611
713
|
* @see {@link https://reglejs.dev/core-concepts/ Documentation}
|
|
612
714
|
*/
|
|
613
|
-
declare const useRegle: useRegleFn<Partial<
|
|
715
|
+
declare const useRegle: useRegleFn<Partial<ExtendedRulesDeclarationsOverrides>, RegleShortcutDefinition<any>, {}, {}>;
|
|
614
716
|
/**
|
|
615
717
|
* @internal
|
|
616
718
|
* This is the internal function that creates the root storage for the Regle instance.
|
|
@@ -757,7 +859,7 @@ declare function getErrors<TRegle extends SuperCompatibleRegleRoot | SuperCompat
|
|
|
757
859
|
*/
|
|
758
860
|
declare function getIssues<TRegle extends SuperCompatibleRegleRoot | SuperCompatibleRegleStatus, TPath extends Paths<TRegle['$issues']>>(r$: MaybeRef<TRegle>, path: TPath | (string & {})): IsStringLiteral<TPath> extends true ? Get<TRegle['$issues'], TPath & string> : RegleFieldIssue[] | undefined;
|
|
759
861
|
type useRulesFnOptions<TRules extends RegleUnknownRulesTree | RegleRuleDecl, TValidationGroups extends Record<string, RegleValidationGroupEntry[]>, TState = InferInput<TRules>> = Partial<DeepMaybeRef<RegleBehaviourOptions>> & LocalRegleBehaviourOptions<JoinDiscriminatedUnions<TState extends Record<string, any> ? Unwrap<TState> : {}>, TState extends Record<string, any> ? (TRules extends Record<string, any> ? TRules : {}) : {}, TValidationGroups>;
|
|
760
|
-
interface useRulesFn<TCustomRules extends Partial<
|
|
862
|
+
interface useRulesFn<TCustomRules extends Partial<ExtendedRulesDeclarationsOverrides>, TShortcuts extends RegleShortcutDefinition<any> = never> {
|
|
761
863
|
<TRules extends RegleUnknownRulesTree | RegleRuleDecl, TDecl extends RegleRuleDecl<NonNullable<TState>, Partial<ExtendedRulesDeclarations> & TCustomRules>, TValidationGroups extends Record<string, RegleValidationGroupEntry[]>, TState extends Record<string, any> = InferInput<TRules>>(rulesFactory: TState extends Record<string, any> ? MaybeRef<TRules> | ((...args: any[]) => TRules) : {}, options?: useRulesFnOptions<TRules, TValidationGroups, TState>): NonNullable<TState> extends PrimitiveTypes ? Raw<RegleFieldStatus<NonNullable<TState>, TDecl, TShortcuts>> & StandardSchemaV1<TState> : Raw<RegleRoot<TState extends Record<string, any> ? Unwrap<TState> : {}, TRules extends Record<string, any> ? TRules : {}, TValidationGroups, TShortcuts>> & StandardSchemaV1<TState>;
|
|
762
864
|
__config?: GlobalConfigOptions<TCustomRules, TShortcuts>;
|
|
763
865
|
}
|
|
@@ -791,7 +893,7 @@ interface useRulesFn<TCustomRules extends Partial<ExtendedRulesDeclarations>, TS
|
|
|
791
893
|
*
|
|
792
894
|
* @see {@link https://reglejs.dev/common-usage/standard-schema#userules Documentation}
|
|
793
895
|
*/
|
|
794
|
-
declare const useRules: useRulesFn<Partial<
|
|
896
|
+
declare const useRules: useRulesFn<Partial<ExtendedRulesDeclarationsOverrides>, RegleShortcutDefinition<any>>;
|
|
795
897
|
/**
|
|
796
898
|
* Marks a value as static and treats the constructor as a regular raw Field.
|
|
797
899
|
* @param value - The value to mark as static.
|
|
@@ -935,8 +1037,8 @@ type IsLiteral<T> = string extends T ? false : true;
|
|
|
935
1037
|
/**
|
|
936
1038
|
* Returned typed of rules created with `createRule`
|
|
937
1039
|
* */
|
|
938
|
-
interface RegleRuleDefinition<TType extends string | unknown = unknown, TValue extends unknown = unknown, TParams extends any[] = [], TAsync extends boolean = boolean, TMetaData extends RegleRuleMetadataDefinition = RegleRuleMetadataDefinition, _TInput = unknown, TFilteredValue extends any = (TValue extends Date & File & (infer M) ? M : TValue), TNonEmpty extends boolean = boolean> extends RegleInternalRuleDefs<TFilteredValue, TParams, TAsync, TMetaData> {
|
|
939
|
-
validator: RegleRuleDefinitionProcessor<TFilteredValue, TParams, TAsync extends false ? TMetaData : Promise<TMetaData>>;
|
|
1040
|
+
interface RegleRuleDefinition<TType extends string | unknown = unknown, TValue extends unknown = unknown, TParams extends any[] = [], TAsync extends boolean = boolean, TMetaData extends RegleRuleMetadataDefinition = RegleRuleMetadataDefinition, _TInput = unknown, TFilteredValue extends any = (TValue extends Date & File & (infer M) ? M : TValue), TNonEmpty extends boolean = boolean> extends RegleInternalRuleDefs<TFilteredValue, TParams, TAsync, TMetaData>, RegleRuleDefinitionLight<TParams, TAsync, TMetaData> {
|
|
1041
|
+
validator: RegleRuleDefinitionProcessor<TFilteredValue, [...TParams, ...unknown[]], TAsync extends false ? TMetaData : Promise<TMetaData>>;
|
|
940
1042
|
message: (metadata: PossibleRegleRuleMetadataConsumer<TFilteredValue>) => string | string[];
|
|
941
1043
|
active: (metadata: PossibleRegleRuleMetadataConsumer<TFilteredValue>) => boolean;
|
|
942
1044
|
tooltip: (metadata: PossibleRegleRuleMetadataConsumer<TFilteredValue>) => string | string[];
|
|
@@ -945,11 +1047,17 @@ interface RegleRuleDefinition<TType extends string | unknown = unknown, TValue e
|
|
|
945
1047
|
exec: (value: Maybe<TFilteredValue>) => TAsync extends false ? TMetaData : Promise<TMetaData>;
|
|
946
1048
|
required: TNonEmpty;
|
|
947
1049
|
}
|
|
1050
|
+
type RegleRuleDefinitionLight<TParams extends [...unknown[]] = [], TAsync extends boolean = boolean, TMetaData extends RegleRuleMetadataDefinition = RegleRuleMetadataDefinition> = {
|
|
1051
|
+
value: unknown;
|
|
1052
|
+
params: [...TParams];
|
|
1053
|
+
async: TAsync;
|
|
1054
|
+
metadata: TMetaData;
|
|
1055
|
+
};
|
|
948
1056
|
/**
|
|
949
1057
|
* Rules with params created with `createRules` are callable while being customizable
|
|
950
1058
|
*/
|
|
951
|
-
type RegleRuleWithParamsDefinition<TType extends string | unknown = unknown, TValue extends unknown = unknown, TParams extends any[] = never, TAsync extends boolean = false, TMetadata extends RegleRuleMetadataDefinition = boolean, TInput = unknown, TFilteredValue extends any = (TValue extends Date & File & (infer M) ? M : TValue)> = RegleRuleCore<TType, TFilteredValue, TParams, TAsync, TMetadata> & RegleInternalRuleDefs<TFilteredValue, TParams, TAsync, TMetadata> & {
|
|
952
|
-
(...params: RegleUniversalParams<TParams>): RegleRuleDefinition<TType, TFilteredValue, TParams, TAsync, TMetadata, TInput>;
|
|
1059
|
+
type RegleRuleWithParamsDefinition<TType extends string | unknown = unknown, TValue extends unknown = unknown, TParams extends any[] = never, TAsync extends boolean = false, TMetadata extends RegleRuleMetadataDefinition = boolean, TInput = unknown, TFilteredValue extends any = (TValue extends Date & File & (infer M) ? M : TValue), TNonEmpty extends boolean = false> = RegleRuleCore<TType, TFilteredValue, TParams, TAsync, TMetadata, TNonEmpty> & RegleInternalRuleDefs<TFilteredValue, TParams, TAsync, TMetadata> & RegleRuleDefinitionLight<TParams, TAsync, TMetadata> & {
|
|
1060
|
+
(...params: RegleUniversalParams<TParams>): RegleRuleDefinition<TType, TFilteredValue, TParams, TAsync, TMetadata, TInput, TFilteredValue, TNonEmpty>;
|
|
953
1061
|
} & (TParams extends [param?: any, ...any[]] ? {
|
|
954
1062
|
exec: (value: Maybe<TFilteredValue>) => TAsync extends false ? TMetadata : Promise<TMetadata>;
|
|
955
1063
|
} : {});
|
|
@@ -1002,7 +1110,7 @@ type RegleRuleRawInput<TValue extends any = any, TParams extends [...any[]] = [.
|
|
|
1002
1110
|
* For a rule with params it will return a function
|
|
1003
1111
|
* Otherwise it will return the rule definition
|
|
1004
1112
|
*/
|
|
1005
|
-
type InferRegleRule<TType extends string | unknown, TValue extends any = any, TParams extends any[] = [], TAsync extends boolean = false, TMetaData extends RegleRuleMetadataDefinition = boolean, TNonEmpty extends boolean = false> = [TParams] extends [[]] ? RegleRuleDefinition<TType, TValue, TParams, TAsync, TMetaData, TValue, TValue, TNonEmpty> : RegleRuleWithParamsDefinition<TType, TValue, TParams, TAsync, TMetaData, TNonEmpty>;
|
|
1113
|
+
type InferRegleRule<TType extends string | unknown, TValue extends any = any, TParams extends any[] = [], TAsync extends boolean = false, TMetaData extends RegleRuleMetadataDefinition = boolean, TNonEmpty extends boolean = false> = [TParams] extends [[]] ? RegleRuleDefinition<TType, TValue, TParams, TAsync, TMetaData, TValue, TValue, TNonEmpty> : RegleRuleWithParamsDefinition<TType, TValue, TParams, TAsync, TMetaData, TValue, TValue, TNonEmpty>;
|
|
1006
1114
|
type RegleRuleDefinitionProcessor<TValue extends any = any, TParams extends any[] = [], TReturn = any> = (value: Maybe<TValue>, ...params: TParams) => TReturn;
|
|
1007
1115
|
type RegleRuleDefinitionWithMetadataProcessor<TValue extends any, TMetadata extends RegleRuleMetadataConsumer<TValue, any[]>, TReturn = any> = ((metadata: TMetadata) => TReturn) | TReturn;
|
|
1008
1116
|
type RegleCollectionRuleDefinition<TValue = any[], TCustomRules extends Partial<ExtendedRulesDeclarations> = Partial<ExtendedRulesDeclarations>> = (RegleRuleDecl<NonNullable<TValue>, TCustomRules, CollectionRegleBehaviourOptions> & {
|
|
@@ -1028,93 +1136,44 @@ interface RegleRuleInit<TType extends string | unknown = unknown, TValue extends
|
|
|
1028
1136
|
* @argument
|
|
1029
1137
|
* Rule core
|
|
1030
1138
|
*/
|
|
1031
|
-
interface RegleRuleCore<TType extends string | unknown, TValue extends any, TParams extends any[] = [], TAsync extends boolean = false, TMetadata extends RegleRuleMetadataDefinition = boolean> {
|
|
1139
|
+
interface RegleRuleCore<TType extends string | unknown, TValue extends any, TParams extends any[] = [], TAsync extends boolean = false, TMetadata extends RegleRuleMetadataDefinition = boolean, TNonEmpty extends boolean = false> {
|
|
1032
1140
|
validator: (value: Maybe<TValue>, ...args: TParams) => TAsync extends false ? TMetadata : Promise<TMetadata>;
|
|
1033
1141
|
message: RegleInitPropertyGetter<TValue, string | string[], TParams, TMetadata>;
|
|
1034
|
-
active?: RegleInitPropertyGetter<TValue,
|
|
1142
|
+
active?: RegleInitPropertyGetter<TValue, boolean, TParams, TMetadata>;
|
|
1035
1143
|
tooltip?: RegleInitPropertyGetter<TValue, string | string[], TParams, TMetadata>;
|
|
1036
1144
|
type?: TType;
|
|
1037
1145
|
async?: boolean;
|
|
1146
|
+
required?: TNonEmpty;
|
|
1038
1147
|
}
|
|
1039
1148
|
type RegleRuleTypeReturn<TValue, TParams extends [...any[]]> = {
|
|
1040
1149
|
value: TValue;
|
|
1041
1150
|
params: [...TParams];
|
|
1042
1151
|
};
|
|
1043
|
-
interface CommonComparisonOptions {
|
|
1044
|
-
/**
|
|
1045
|
-
* Change the behaviour of the rule to check only if the value is equal in addition to be strictly superior or inferior
|
|
1046
|
-
* @default true
|
|
1047
|
-
*/
|
|
1048
|
-
allowEqual?: boolean;
|
|
1049
|
-
}
|
|
1050
|
-
interface CommonAlphaOptions {
|
|
1051
|
-
/**
|
|
1052
|
-
* Allow symbols in alphabetical-like rules (like "_")
|
|
1053
|
-
* @default true
|
|
1054
|
-
*/
|
|
1055
|
-
allowSymbols?: boolean;
|
|
1056
|
-
}
|
|
1057
|
-
type DefaultValidators = {
|
|
1058
|
-
alpha: RegleRuleWithParamsDefinition<unknown, string, [options?: CommonAlphaOptions | undefined]>;
|
|
1059
|
-
alphaNum: RegleRuleWithParamsDefinition<unknown, string | number, [options?: CommonAlphaOptions | undefined]>;
|
|
1060
|
-
atLeastOne: RegleRuleWithParamsDefinition<unknown, Record<string, unknown> | object, [keys?: string[] | undefined], false, boolean, false, Record<string, unknown> | object>;
|
|
1061
|
-
between: RegleRuleWithParamsDefinition<unknown, number, [min: Maybe<number>, max: Maybe<number>]>;
|
|
1062
|
-
boolean: RegleRuleDefinition<unknown, unknown, [], false, boolean, any, unknown>;
|
|
1063
|
-
checked: RegleRuleDefinition<unknown, boolean, [], false, boolean, boolean>;
|
|
1064
|
-
contains: RegleRuleWithParamsDefinition<unknown, string, [part: Maybe<string>], false, boolean>;
|
|
1065
|
-
date: RegleRuleDefinition<unknown, unknown, [], false, boolean, MaybeInput<Date>, unknown>;
|
|
1066
|
-
dateAfter: RegleRuleWithParamsDefinition<unknown, string | Date, [after: Maybe<string | Date>, options?: CommonComparisonOptions], false, true | {
|
|
1067
|
-
$valid: false;
|
|
1068
|
-
error: 'date-not-after';
|
|
1069
|
-
} | {
|
|
1070
|
-
$valid: false;
|
|
1071
|
-
error: 'value-or-parameter-not-a-date';
|
|
1072
|
-
}>;
|
|
1073
|
-
dateBefore: RegleRuleWithParamsDefinition<unknown, string | Date, [before: Maybe<string | Date>, options?: CommonComparisonOptions], false, true | {
|
|
1074
|
-
$valid: false;
|
|
1075
|
-
error: 'date-not-before';
|
|
1076
|
-
} | {
|
|
1077
|
-
$valid: false;
|
|
1078
|
-
error: 'value-or-parameter-not-a-date';
|
|
1079
|
-
}>;
|
|
1080
|
-
dateBetween: RegleRuleWithParamsDefinition<unknown, string | Date, [before: Maybe<string | Date>, after: Maybe<string | Date>, options?: CommonComparisonOptions], false, boolean>;
|
|
1081
|
-
decimal: RegleRuleDefinition<unknown, string | number, [], false, boolean, string | number>;
|
|
1082
|
-
email: RegleRuleDefinition<unknown, string, [], false, boolean, string>;
|
|
1083
|
-
endsWith: RegleRuleWithParamsDefinition<unknown, string, [part: Maybe<string>], false, boolean>;
|
|
1084
|
-
exactLength: RegleRuleWithParamsDefinition<unknown, string | any[] | Record<PropertyKey, any>, [count: number], false, boolean>;
|
|
1085
|
-
exactValue: RegleRuleWithParamsDefinition<unknown, number, [count: number], false, boolean>;
|
|
1086
|
-
file: RegleRuleDefinition<unknown, unknown, [], false, boolean, MaybeInput<File>, unknown>;
|
|
1087
|
-
fileType: RegleRuleWithParamsDefinition<unknown, unknown, [accept: string[]], false, boolean>;
|
|
1088
|
-
hexadecimal: RegleRuleDefinition<unknown, string, [], false, boolean, string>;
|
|
1089
|
-
integer: RegleRuleDefinition<unknown, string | number, [], false, boolean, string | number>;
|
|
1090
|
-
ipv4Address: RegleRuleDefinition<unknown, string, [], false, boolean, string>;
|
|
1091
|
-
literal: RegleRuleDefinition<unknown, string | number, [literal: string | number], false, boolean, string | number, string | number, true>;
|
|
1092
|
-
macAddress: RegleRuleWithParamsDefinition<unknown, string, [separator?: string | undefined], false, boolean>;
|
|
1093
|
-
maxLength: RegleRuleWithParamsDefinition<unknown, string | any[] | Record<PropertyKey, any>, [count: number, options?: CommonComparisonOptions], false, boolean>;
|
|
1094
|
-
maxFileSize: RegleRuleWithParamsDefinition<unknown, unknown, [maxSize: number], false, boolean, MaybeInput<File>, unknown>;
|
|
1095
|
-
maxValue: RegleRuleWithParamsDefinition<unknown, number, [count: number, options?: CommonComparisonOptions], false, boolean>;
|
|
1096
|
-
minFileSize: RegleRuleWithParamsDefinition<unknown, unknown, [minSize: number], false, boolean, MaybeInput<File>, unknown>;
|
|
1097
|
-
minLength: RegleRuleWithParamsDefinition<unknown, string | any[] | Record<PropertyKey, any>, [count: number, options?: CommonComparisonOptions], false, boolean>;
|
|
1098
|
-
minValue: RegleRuleWithParamsDefinition<unknown, number, [count: number, options?: CommonComparisonOptions], false, boolean>;
|
|
1099
|
-
nativeEnum: RegleRuleDefinition<unknown, string | number, [enumLike: EnumLike], false, boolean, string | number>;
|
|
1100
|
-
number: RegleRuleDefinition<unknown, unknown, [], false, boolean, any, unknown>;
|
|
1101
|
-
numeric: RegleRuleDefinition<unknown, string | number, [], false, boolean, string | number>;
|
|
1102
|
-
oneOf: RegleRuleDefinition<unknown, string | number, [options: (string | number)[]], false, boolean, string | number>;
|
|
1103
|
-
regex: RegleRuleWithParamsDefinition<unknown, string, [regexp: RegExp], false, boolean>;
|
|
1104
|
-
required: RegleRuleDefinition<unknown, unknown, [], false, boolean, unknown, unknown, true>;
|
|
1105
|
-
sameAs: RegleRuleWithParamsDefinition<unknown, unknown, [target: unknown, otherName?: string], false, boolean>;
|
|
1106
|
-
string: RegleRuleDefinition<unknown, unknown, [], false, boolean, any, unknown>;
|
|
1107
|
-
type: RegleRuleDefinition<unknown, unknown, [], false, boolean, unknown, unknown>;
|
|
1108
|
-
startsWith: RegleRuleWithParamsDefinition<unknown, string, [part: Maybe<string>], false, boolean>;
|
|
1109
|
-
url: RegleRuleDefinition<unknown, string, [], false, boolean, string>;
|
|
1110
|
-
};
|
|
1111
1152
|
type CustomRulesDeclarationTree = {
|
|
1112
1153
|
[x: string]: RegleRuleRawInput<any, any[], boolean, any> | undefined;
|
|
1113
1154
|
};
|
|
1114
|
-
type DefaultValidatorsTree = { [K in keyof DefaultValidators]:
|
|
1115
|
-
type
|
|
1155
|
+
type DefaultValidatorsTree = { [K in keyof DefaultValidators]: DefaultValidators[K] extends ((...args: any[]) => infer U) ? U : DefaultValidators[K] };
|
|
1156
|
+
type DefaultValidatorsTreeOverrides = { [K in keyof DefaultValidators]: DefaultValidators[K] | ((...args: any[]) => DefaultValidators[K]) };
|
|
1157
|
+
/**
|
|
1158
|
+
* Extend this interface to declare your custom rules
|
|
1159
|
+
*/
|
|
1160
|
+
interface CustomRules {}
|
|
1161
|
+
type ExtendedRulesDeclarations = CustomRulesDeclarationTree & DefaultValidatorsTree & CustomRules;
|
|
1162
|
+
type ExtendedRulesDeclarationsOverrides = CustomRulesDeclarationTree & DefaultValidatorsTreeOverrides & CustomRules;
|
|
1116
1163
|
/** @deprecated Use {@link ExtendedRulesDeclarations} instead */
|
|
1117
1164
|
type AllRulesDeclarations = ExtendedRulesDeclarations;
|
|
1165
|
+
/**
|
|
1166
|
+
* Extend this interface to declare your custom field properties
|
|
1167
|
+
*/
|
|
1168
|
+
interface CustomFieldProperties {}
|
|
1169
|
+
/**
|
|
1170
|
+
* Extend this interface to declare your custom nested properties
|
|
1171
|
+
*/
|
|
1172
|
+
interface CustomNestedProperties {}
|
|
1173
|
+
/**
|
|
1174
|
+
* Extend this interface to declare your custom collection properties
|
|
1175
|
+
*/
|
|
1176
|
+
interface CustomCollectionProperties {}
|
|
1118
1177
|
/**
|
|
1119
1178
|
* @public
|
|
1120
1179
|
*/
|
|
@@ -1128,7 +1187,7 @@ type ProcessNestedFields<TState extends Record<string, any> | undefined, TRules
|
|
|
1128
1187
|
/**
|
|
1129
1188
|
* @public
|
|
1130
1189
|
*/
|
|
1131
|
-
type RegleStatus<TState extends object | Record<string, any> | undefined = Record<string, any>, TRules extends ReglePartialRuleTree<NonNullable<TState>> = Record<string, any>, TShortcuts extends RegleShortcutDefinition = {}> = RegleCommonStatus<TState, TRules> & {
|
|
1190
|
+
type RegleStatus<TState extends object | Record<string, any> | undefined = Record<string, any>, TRules extends ReglePartialRuleTree<NonNullable<TState>, Partial<ExtendedRulesDeclarations>> = Record<string, any>, TShortcuts extends RegleShortcutDefinition = {}> = RegleCommonStatus<TState, TRules> & {
|
|
1132
1191
|
/** Represents all the children of your object. You can access any nested child at any depth to get the relevant data you need for your form. */readonly $fields: ProcessNestedFields<TState, TRules, TShortcuts, true>;
|
|
1133
1192
|
/**
|
|
1134
1193
|
* Collection of all the issues, collected for all children properties and nested forms.
|
|
@@ -1145,7 +1204,7 @@ type RegleStatus<TState extends object | Record<string, any> | undefined = Recor
|
|
|
1145
1204
|
readonly $silentErrors: RegleErrorTree<TState>; /** 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). */
|
|
1146
1205
|
$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). */
|
|
1147
1206
|
$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>>;
|
|
1148
|
-
} & ProcessNestedFields<TState, TRules, TShortcuts> & ([TShortcuts['nested']] extends [never] ? {} : { [K in keyof TShortcuts['nested']]: ReturnType<NonNullable<TShortcuts['nested']>[K]> }) & (TRules['$self'] extends RegleRuleDecl ? {
|
|
1207
|
+
} & ProcessNestedFields<TState, TRules, TShortcuts> & CustomNestedProperties & ([TShortcuts['nested']] extends [never] ? {} : { [K in keyof TShortcuts['nested']]: ReturnType<NonNullable<TShortcuts['nested']>[K]> }) & (TRules['$self'] extends RegleRuleDecl ? {
|
|
1149
1208
|
/** Represents the status of the parent object. Status only concern the object itself and not its children */readonly $self: RegleFieldStatus<NonNullable<TRules['$self']>, NonNullable<TRules['$self']>, TShortcuts>;
|
|
1150
1209
|
} : {});
|
|
1151
1210
|
/**
|
|
@@ -1153,6 +1212,7 @@ type RegleStatus<TState extends object | Record<string, any> | undefined = Recor
|
|
|
1153
1212
|
* @reference {@link RegleStatus}
|
|
1154
1213
|
*/
|
|
1155
1214
|
interface $InternalRegleStatus extends $InternalRegleCommonStatus {
|
|
1215
|
+
readonly $externalErrors?: $InternalRegleErrorTree;
|
|
1156
1216
|
$fields: {
|
|
1157
1217
|
[x: string]: $InternalRegleStatusType;
|
|
1158
1218
|
};
|
|
@@ -1208,7 +1268,7 @@ type RegleFieldStatus<TState extends any = any, TRules extends RegleFormProperty
|
|
|
1208
1268
|
$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). */
|
|
1209
1269
|
$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 */
|
|
1210
1270
|
readonly $rules: ComputeFieldRules<TState, TRules>;
|
|
1211
|
-
} & ([TShortcuts['fields']] extends [never] ? {} : { [K in keyof TShortcuts['fields']]: ReturnType<NonNullable<TShortcuts['fields']>[K]> });
|
|
1271
|
+
} & CustomFieldProperties & ([TShortcuts['fields']] extends [never] ? {} : { [K in keyof TShortcuts['fields']]: ReturnType<NonNullable<TShortcuts['fields']>[K]> });
|
|
1212
1272
|
/**
|
|
1213
1273
|
* @internal
|
|
1214
1274
|
* @reference {@link RegleFieldStatus}
|
|
@@ -1430,12 +1490,12 @@ type RegleCollectionStatus<TState extends any[] = any[], TRules extends ReglePar
|
|
|
1430
1490
|
readonly $silentErrors: RegleCollectionErrors<TState>; /** 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). */
|
|
1431
1491
|
$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). */
|
|
1432
1492
|
$validate: (value?: JoinDiscriminatedUnions<TState>) => Promise<RegleCollectionResult<TState, JoinDiscriminatedUnions<TRules>>>;
|
|
1433
|
-
} & ([TShortcuts['collections']] extends [never] ? {} : { [K in keyof TShortcuts['collections']]: ReturnType<NonNullable<TShortcuts['collections']>[K]> });
|
|
1493
|
+
} & CustomCollectionProperties & ([TShortcuts['collections']] extends [never] ? {} : { [K in keyof TShortcuts['collections']]: ReturnType<NonNullable<TShortcuts['collections']>[K]> });
|
|
1434
1494
|
/**
|
|
1435
1495
|
* @internal
|
|
1436
1496
|
* @reference {@link RegleCollectionStatus}
|
|
1437
1497
|
*/
|
|
1438
|
-
interface $InternalRegleCollectionStatus extends Omit<$InternalRegleStatus, '$fields' | '$issues' | '$errors' | '$silentErrors' | '~modifiers'> {
|
|
1498
|
+
interface $InternalRegleCollectionStatus extends Omit<$InternalRegleStatus, '$fields' | '$issues' | '$errors' | '$silentErrors' | '~modifiers' | '$externalErrors'> {
|
|
1439
1499
|
readonly $self: $InternalRegleFieldStatus;
|
|
1440
1500
|
readonly $each: Array<$InternalRegleStatusType>;
|
|
1441
1501
|
readonly $issues: $InternalRegleCollectionIssues;
|
|
@@ -1490,7 +1550,7 @@ type $InternalFormPropertyTypes = MaybeRefOrComputedRef<$InternalRegleRuleDecl>
|
|
|
1490
1550
|
* @public
|
|
1491
1551
|
* Rule tree for a form property
|
|
1492
1552
|
*/
|
|
1493
|
-
type RegleRuleDecl<TValue extends any = any, TCustomRules extends Partial<ExtendedRulesDeclarations> = Partial<DefaultValidatorsTree>, TOptions extends Record<string, unknown> = FieldRegleBehaviourOptions<TValue>> = TOptions & { [TKey in keyof RemoveIndexSignature<TCustomRules>]?:
|
|
1553
|
+
type RegleRuleDecl<TValue extends any = any, TCustomRules extends Partial<ExtendedRulesDeclarations> = Partial<DefaultValidatorsTree>, TOptions extends Record<string, unknown> = FieldRegleBehaviourOptions<TValue>> = TOptions & { [TKey in keyof RemoveIndexSignature<TCustomRules>]?: NonNullable<TCustomRules[TKey]> extends RegleRuleDefinitionLight<infer TParams, boolean, infer TMetadata> ? RegleRuleDefinitionLight<[...TParams, ...unknown[]], boolean, TMetadata> | InlineRuleDeclaration<TValue, [...TParams, ...unknown[]], any> : TCustomRules[TKey] } & {
|
|
1494
1554
|
[x: string]: FormRuleDeclaration<TValue, any[]> | boolean | number | undefined;
|
|
1495
1555
|
};
|
|
1496
1556
|
/**
|
|
@@ -1713,7 +1773,7 @@ type SuperCompatibleRegleCollectionIssues = $InternalRegleCollectionIssues;
|
|
|
1713
1773
|
*
|
|
1714
1774
|
* @see {@link https://reglejs.dev/core-concepts/rules/reusable-rules Documentation}
|
|
1715
1775
|
*/
|
|
1716
|
-
declare function createRule<const TType extends string | unknown, TValue extends any, TParams extends any[], TReturn extends RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition>, TMetadata extends RegleRuleMetadataDefinition = (TReturn extends Promise<infer M> ? M : TReturn), TAsync extends boolean = (TReturn extends Promise<any> ? true : false), TNonEmpty extends boolean = false>(definition: RegleRuleInit<TType, TValue, TParams, TReturn, TMetadata, TAsync, TNonEmpty>): InferRegleRule<TType, TValue, TParams, TAsync, TMetadata, TNonEmpty>;
|
|
1776
|
+
declare function createRule<const TType extends string | unknown, TValue extends any, TParams extends any[], TReturn extends RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition>, TMetadata extends RegleRuleMetadataDefinition = (TReturn extends Promise<infer M> ? M : TReturn), TAsync extends boolean = (TReturn extends Promise<any> ? true : false), TNonEmpty extends boolean = false>(definition: RegleRuleInit<TType, TValue, TParams, TReturn, TMetadata, TAsync, TNonEmpty>): InferRegleRule<TType, TValue, TParams, TAsync, TMetadata, TNonEmpty extends true ? true : false>;
|
|
1717
1777
|
/**
|
|
1718
1778
|
* Returns a clean list of parameters
|
|
1719
1779
|
* Removing Ref and executing function to return the unwrapped value
|
|
@@ -1862,10 +1922,10 @@ type CreateScopedUseRegleOptions<TCustomRegle extends useRegleFn<any, any>, TAsR
|
|
|
1862
1922
|
*
|
|
1863
1923
|
* @see {@link https://reglejs.dev/advanced-usage/scoped-validation Documentation}
|
|
1864
1924
|
*/
|
|
1865
|
-
declare function createScopedUseRegle<TCustomRegle extends useRegleFn<any, any> = useRegleFn<Partial<
|
|
1925
|
+
declare function createScopedUseRegle<TCustomRegle extends useRegleFn<any, any> = useRegleFn<Partial<ExtendedRulesDeclarationsOverrides>>, TAsRecord extends boolean = false, TReturnedRegle extends useRegleFn<any, any, any, any> = (TCustomRegle extends useRegleFn<infer A, infer B> ? useRegleFn<A, B, {
|
|
1866
1926
|
dispose: () => void;
|
|
1867
1927
|
register: () => void;
|
|
1868
|
-
}, UseScopedRegleOptions<TAsRecord>> : useRegleFn<Partial<
|
|
1928
|
+
}, UseScopedRegleOptions<TAsRecord>> : useRegleFn<Partial<ExtendedRulesDeclarationsOverrides>, any, {
|
|
1869
1929
|
dispose: () => void;
|
|
1870
1930
|
register: () => void;
|
|
1871
1931
|
}, UseScopedRegleOptions<TAsRecord>>)>(options?: CreateScopedUseRegleOptions<TCustomRegle, TAsRecord>): {
|
|
@@ -1928,7 +1988,7 @@ declare const useCollectScope: <TValue extends Record<string, unknown>[] = Recor
|
|
|
1928
1988
|
*
|
|
1929
1989
|
* @see {@link https://reglejs.dev/advanced-usage/scoped-validation Documentation}
|
|
1930
1990
|
*/
|
|
1931
|
-
declare const useScopedRegle: useRegleFn<Partial<
|
|
1991
|
+
declare const useScopedRegle: useRegleFn<Partial<ExtendedRulesDeclarationsOverrides>, never, {
|
|
1932
1992
|
dispose: () => void;
|
|
1933
1993
|
register: () => void;
|
|
1934
1994
|
}, {
|
|
@@ -2000,9 +2060,9 @@ declare function narrowVariant<TRoot extends {
|
|
|
2000
2060
|
[x: string]: unknown;
|
|
2001
2061
|
};
|
|
2002
2062
|
$value: unknown;
|
|
2003
|
-
}, const TKey extends keyof TRoot
|
|
2063
|
+
}, const TKey extends keyof Omit<NonNullable<TRoot>, `$${string}` | `~${string}`>, const TValue extends (LazyJoinDiscriminatedUnions<Exclude<NonNullable<TRoot>[TKey], RegleCollectionStatus<any, any, any> | RegleStatus<any, any, any> | NarrowVariantExtracts[keyof NarrowVariantExtracts]>> extends {
|
|
2004
2064
|
$value: infer V;
|
|
2005
|
-
} ? V : unknown)>(root: TRoot | undefined, discriminantKey: TKey, discriminantValue: TValue): root is NarrowVariant<TRoot
|
|
2065
|
+
} ? V : unknown)>(root: TRoot | undefined, discriminantKey: TKey, discriminantValue: TValue): root is NarrowVariant<NonNullable<TRoot>, TKey, TValue>;
|
|
2006
2066
|
/**
|
|
2007
2067
|
* Create a reactive reference to a narrowed variant.
|
|
2008
2068
|
* Useful in templates or when you need a stable ref to the narrowed type.
|
|
@@ -2113,4 +2173,4 @@ declare function refineRules<TRules extends RegleUnknownRulesTree, TRefinement e
|
|
|
2113
2173
|
* @see {@link https://reglejs.dev/introduction/devtools Documentation}
|
|
2114
2174
|
*/
|
|
2115
2175
|
declare const RegleVuePlugin: Plugin;
|
|
2116
|
-
export { type $InternalRegleStatus, type AllRulesDeclarations, type ArrayElement, type CommonAlphaOptions, type CommonComparisonOptions, type CreateScopedUseRegleOptions, type DeepMaybeRef, type DeepPartial, type DeepReactiveState, type DefaultValidatorsTree, type DumbJoinDiscriminatedUnions, type ExtendedRulesDeclarations, type FormRuleDeclaration, type GlobalConfigOverrides, type HasNamedKeys, type HaveAnyRequiredProps, type InferInput, type InferOutput, type InferRegleRoot, type InferRegleRule, type InferRegleRules, type InferRegleSettings, type InferRegleShortcuts, type InferRegleStatusType, type InferRegleValidationResult, type InferSafeOutput, type InferValidOutput, type InlineRuleDeclaration, InternalRuleType, type IsRegleStatic, type JoinDiscriminatedUnions, type LazyJoinDiscriminatedUnions, type LocalRegleBehaviourOptions, type Maybe, type MaybeInput, type MaybeOutput, type MaybeReadonly, type MaybeVariantStatus, type MergedRegles, type MergedScopedRegles, type NarrowVariant, type NarrowVariantExtracts, type NarrowVariantFieldExtracts, type NoInferLegacy, type NonEmptyTuple, type Prettify, type PrimitiveTypes, type Regle, type RegleBehaviourOptions, type RegleCollectionErrors, type RegleCollectionRuleDecl, type RegleCollectionRuleDefinition, type RegleCollectionStatus, type RegleCommonStatus, type RegleComputedRules, type RegleCustomFieldStatus, type RegleEnforceCustomRequiredRules, type RegleEnforceRequiredRules, type RegleErrorTree, type RegleExternalCollectionErrors, type RegleExternalErrorTree, type RegleExternalSchemaErrorTree, type RegleFieldIssue, type RegleFieldStatus, type RegleFormPropertyType, type RegleInternalRuleDefs, type RegleIssuesTree, type RegleLike, type ReglePartialRuleTree, type RegleResult, type RegleRoot, type RegleRuleCore, type RegleRuleDecl, type RegleRuleDefinition, type RegleRuleDefinitionProcessor, type RegleRuleDefinitionWithMetadataProcessor, type RegleRuleInit, type RegleRuleMetadataConsumer, type RegleRuleMetadataDefinition, type RegleRuleMetadataExtended, type RegleRuleRaw, type RegleRuleStatus, type RegleRuleTypeReturn, type RegleRuleWithParamsDefinition, type RegleRuleWithParamsDefinitionInput, type RegleShortcutDefinition, type RegleSingleField, type RegleStatic, type RegleStaticImpl, type RegleStatus, type RegleUniversalParams, type RegleUnknownRulesTree, type RegleValidationErrors, type RegleValidationGroupEntry, type RegleValidationGroupOutput, type RegleRuleTree as RegleValidationTree, RegleVuePlugin, type ResolvedRegleBehaviourOptions, type ScopedInstancesRecord, type ScopedInstancesRecordLike, type SuperCompatibleRegle, type SuperCompatibleRegleCollectionErrors, type SuperCompatibleRegleCollectionStatus, type SuperCompatibleRegleFieldStatus, type SuperCompatibleRegleResult, type SuperCompatibleRegleRoot, type SuperCompatibleRegleRuleStatus, type SuperCompatibleRegleStatus, type TupleToPlainObj, type Unwrap, type UnwrapRegleUniversalParams, type UnwrapRuleWithParams, type UnwrapStatic, type UseScopedRegleOptions, createRule, createScopedUseRegle, createVariant, defineRegleConfig, defineRules, extendRegleConfig, flatErrors, getErrors, getIssues, inferRules, type inferRulesFn, type isEditedHandlerFn, markStatic, mergeRegles, narrowVariant, refineRules, unwrapRuleParameters, useCollectScope, type useCollectScopeFn, useRegle, type useRegleFn, useRootStorage, useRules, type useRulesFn, useScopedRegle, variantToRef };
|
|
2176
|
+
export { type $InternalRegleStatus, type AllRulesDeclarations, type ArrayElement, type CommonAlphaOptions, type CommonComparisonOptions, type CreateScopedUseRegleOptions, type CustomCollectionProperties, type CustomFieldProperties, type CustomNestedProperties, type CustomRules, type DeepMaybeRef, type DeepPartial, type DeepReactiveState, type DefaultValidatorsTree, type DumbJoinDiscriminatedUnions, type ExtendedRulesDeclarations, type FormRuleDeclaration, type GlobalConfigOverrides, type HasNamedKeys, type HaveAnyRequiredProps, type InferInput, type InferOutput, type InferRegleRoot, type InferRegleRule, type InferRegleRules, type InferRegleSettings, type InferRegleShortcuts, type InferRegleStatusType, type InferRegleValidationResult, type InferSafeOutput, type InferValidOutput, type InlineRuleDeclaration, InternalRuleType, type IsRegleStatic, type JoinDiscriminatedUnions, type LazyJoinDiscriminatedUnions, type LocalRegleBehaviourOptions, type Maybe, type MaybeInput, type MaybeOutput, type MaybeReadonly, type MaybeVariantStatus, type MergedRegles, type MergedScopedRegles, type NarrowVariant, type NarrowVariantExtracts, type NarrowVariantFieldExtracts, type NoInferLegacy, type NonEmptyTuple, type Prettify, type PrimitiveTypes, type Regle, type RegleBehaviourOptions, type RegleCollectionErrors, type RegleCollectionRuleDecl, type RegleCollectionRuleDefinition, type RegleCollectionStatus, type RegleCommonStatus, type RegleComputedRules, type RegleCustomFieldStatus, type RegleEnforceCustomRequiredRules, type RegleEnforceRequiredRules, type RegleErrorTree, type RegleExternalCollectionErrors, type RegleExternalErrorTree, type RegleExternalSchemaErrorTree, type RegleFieldIssue, type RegleFieldStatus, type RegleFormPropertyType, type RegleInternalRuleDefs, type RegleIssuesTree, type RegleLike, type ReglePartialRuleTree, type RegleResult, type RegleRoot, type RegleRuleCore, type RegleRuleDecl, type RegleRuleDefinition, type RegleRuleDefinitionProcessor, type RegleRuleDefinitionWithMetadataProcessor, type RegleRuleInit, type RegleRuleMetadataConsumer, type RegleRuleMetadataDefinition, type RegleRuleMetadataExtended, type RegleRuleRaw, type RegleRuleStatus, type RegleRuleTypeReturn, type RegleRuleWithParamsDefinition, type RegleRuleWithParamsDefinitionInput, type RegleShortcutDefinition, type RegleSingleField, type RegleStatic, type RegleStaticImpl, type RegleStatus, type RegleUniversalParams, type RegleUnknownRulesTree, type RegleValidationErrors, type RegleValidationGroupEntry, type RegleValidationGroupOutput, type RegleRuleTree as RegleValidationTree, RegleVuePlugin, type ResolvedRegleBehaviourOptions, type ScopedInstancesRecord, type ScopedInstancesRecordLike, type SuperCompatibleRegle, type SuperCompatibleRegleCollectionErrors, type SuperCompatibleRegleCollectionStatus, type SuperCompatibleRegleFieldStatus, type SuperCompatibleRegleResult, type SuperCompatibleRegleRoot, type SuperCompatibleRegleRuleStatus, type SuperCompatibleRegleStatus, type TupleToPlainObj, type Unwrap, type UnwrapRegleUniversalParams, type UnwrapRuleWithParams, type UnwrapStatic, type UrlOptions, type UseScopedRegleOptions, createRule, createScopedUseRegle, createVariant, defineRegleConfig, defineRegleOptions, defineRules, extendRegleConfig, flatErrors, getErrors, getIssues, inferRules, type inferRulesFn, type isEditedHandlerFn, markStatic, mergeRegles, narrowVariant, refineRules, unwrapRuleParameters, useCollectScope, type useCollectScopeFn, useRegle, type useRegleFn, useRootStorage, useRules, type useRulesFn, useScopedRegle, variantToRef };
|
package/dist/regle-core.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @regle/core v1.
|
|
2
|
+
* @regle/core v1.19.0-beta.2
|
|
3
3
|
* (c) 2026 Victor Garcia
|
|
4
4
|
* @license MIT
|
|
5
5
|
*/
|
|
@@ -736,6 +736,7 @@ function useStorage() {
|
|
|
736
736
|
}
|
|
737
737
|
|
|
738
738
|
const regleSymbol = Symbol("regle");
|
|
739
|
+
const regleConfigSymbol = Symbol("regle-config");
|
|
739
740
|
const REGLE_FLAGS = { REGLE_STATIC: "__regle_static" };
|
|
740
741
|
|
|
741
742
|
function isNestedRulesDef(state, rules) {
|
|
@@ -1170,36 +1171,40 @@ function createReactiveFieldStatus({ state, rulesDef, customMessages, path, cach
|
|
|
1170
1171
|
});
|
|
1171
1172
|
const $lazy = computed(() => {
|
|
1172
1173
|
if ($localOptions.value.$lazy != null) return $localOptions.value.$lazy;
|
|
1173
|
-
else if (unref(options.lazy) != null) return unref(options.lazy);
|
|
1174
|
+
else if (unref(options.lazy) != null) return unref(options.lazy) === true;
|
|
1174
1175
|
return false;
|
|
1175
1176
|
});
|
|
1176
1177
|
const $immediateDirty = computed(() => {
|
|
1177
1178
|
if ($localOptions.value.$immediateDirty != null) return $localOptions.value.$immediateDirty;
|
|
1178
|
-
else if (unref(options.immediateDirty) != null) return unref(options.immediateDirty);
|
|
1179
|
+
else if (unref(options.immediateDirty) != null) return unref(options.immediateDirty) === true;
|
|
1179
1180
|
return false;
|
|
1180
1181
|
});
|
|
1181
1182
|
const $rewardEarly = computed(() => {
|
|
1182
|
-
if ($localOptions.value.$rewardEarly != null) return
|
|
1183
|
-
else if (unref(options.rewardEarly) != null) return unref(options.rewardEarly);
|
|
1183
|
+
if ($localOptions.value.$rewardEarly != null) return !!$localOptions.value.$rewardEarly;
|
|
1184
|
+
else if (unref(options.rewardEarly) != null) return unref(options.rewardEarly) === true;
|
|
1184
1185
|
return false;
|
|
1185
1186
|
});
|
|
1186
1187
|
const $clearExternalErrorsOnChange = computed(() => {
|
|
1187
|
-
if ($localOptions.value.$clearExternalErrorsOnChange != null) return
|
|
1188
|
-
else if (unref(options.clearExternalErrorsOnChange) != null) return unref(options.clearExternalErrorsOnChange);
|
|
1188
|
+
if ($localOptions.value.$clearExternalErrorsOnChange != null) return !!$localOptions.value.$clearExternalErrorsOnChange;
|
|
1189
|
+
else if (unref(options.clearExternalErrorsOnChange) != null) return unref(options.clearExternalErrorsOnChange) === true;
|
|
1189
1190
|
else if ($silent.value) return false;
|
|
1190
1191
|
return true;
|
|
1191
1192
|
});
|
|
1192
1193
|
const $silent = computed(() => {
|
|
1193
1194
|
if ($rewardEarly.value) return true;
|
|
1194
1195
|
else if ($localOptions.value.$silent != null) return $localOptions.value.$silent;
|
|
1195
|
-
else if (unref(options.silent) != null) return unref(options.silent);
|
|
1196
|
+
else if (unref(options.silent) != null) return unref(options.silent) === true;
|
|
1196
1197
|
else return false;
|
|
1197
1198
|
});
|
|
1198
1199
|
const $autoDirty = computed(() => {
|
|
1199
1200
|
if ($localOptions.value.$autoDirty != null) return $localOptions.value.$autoDirty;
|
|
1200
|
-
else if (unref(options.autoDirty) != null) return unref(options.autoDirty);
|
|
1201
|
+
else if (unref(options.autoDirty) != null) return unref(options.autoDirty) === true;
|
|
1201
1202
|
return true;
|
|
1202
1203
|
});
|
|
1204
|
+
const $isEdited = computed(() => {
|
|
1205
|
+
if ($localOptions.value.$isEdited != null) return $localOptions.value.$isEdited;
|
|
1206
|
+
else if (overrides?.isEdited != null) return overrides.isEdited;
|
|
1207
|
+
});
|
|
1203
1208
|
const $validating = computed(() => {
|
|
1204
1209
|
for (const ruleResult of Object.values($rules.value)) if (ruleResult.$validating) return true;
|
|
1205
1210
|
return false;
|
|
@@ -1251,8 +1256,7 @@ function createReactiveFieldStatus({ state, rulesDef, customMessages, path, cach
|
|
|
1251
1256
|
return initialValue !== currentValue;
|
|
1252
1257
|
}
|
|
1253
1258
|
watchEffect(() => {
|
|
1254
|
-
if ($dirty.value) if ($
|
|
1255
|
-
else if (overrides?.isEdited) $edited.value = overrides.isEdited(state.value, initialState.value, isEditedHandler);
|
|
1259
|
+
if ($dirty.value) if ($isEdited.value) $edited.value = $isEdited.value(state.value, initialState.value, isEditedHandler);
|
|
1256
1260
|
else $edited.value = isEditedHandler(state.value, initialState.value);
|
|
1257
1261
|
else $edited.value = false;
|
|
1258
1262
|
});
|
|
@@ -1302,7 +1306,9 @@ function createReactiveFieldStatus({ state, rulesDef, customMessages, path, cach
|
|
|
1302
1306
|
$rewardEarly: $rewardEarly.value,
|
|
1303
1307
|
$autoDirty: $autoDirty.value,
|
|
1304
1308
|
$silent: $silent.value,
|
|
1305
|
-
$clearExternalErrorsOnChange: $clearExternalErrorsOnChange.value
|
|
1309
|
+
$clearExternalErrorsOnChange: $clearExternalErrorsOnChange.value,
|
|
1310
|
+
$immediateDirty: $immediateDirty.value,
|
|
1311
|
+
$isEdited: $isEdited.value
|
|
1306
1312
|
};
|
|
1307
1313
|
});
|
|
1308
1314
|
function processShortcuts() {
|
|
@@ -1822,29 +1828,41 @@ function createReactiveCollectionStatus({ state, rulesDef, customMessages, path,
|
|
|
1822
1828
|
});
|
|
1823
1829
|
const $rewardEarly = computed(() => {
|
|
1824
1830
|
if ($localOptions.value.$rewardEarly != null) return $localOptions.value.$rewardEarly;
|
|
1825
|
-
else if (unref(options.rewardEarly) != null) return unref(options.rewardEarly);
|
|
1831
|
+
else if (unref(options.rewardEarly) != null) return unref(options.rewardEarly) === true;
|
|
1826
1832
|
return false;
|
|
1827
1833
|
});
|
|
1828
1834
|
const $silent = computed(() => {
|
|
1829
1835
|
if ($rewardEarly.value) return true;
|
|
1830
1836
|
else if ($localOptions.value.$silent != null) return $localOptions.value.$silent;
|
|
1831
|
-
else if (unref(options.silent) != null) return unref(options.silent);
|
|
1837
|
+
else if (unref(options.silent) != null) return unref(options.silent) === true;
|
|
1832
1838
|
else return false;
|
|
1833
1839
|
});
|
|
1834
1840
|
const $autoDirty = computed(() => {
|
|
1835
1841
|
if ($localOptions.value.$autoDirty != null) return $localOptions.value.$autoDirty;
|
|
1836
|
-
else if (unref(options.autoDirty) != null) return unref(options.autoDirty);
|
|
1842
|
+
else if (unref(options.autoDirty) != null) return unref(options.autoDirty) === true;
|
|
1837
1843
|
return true;
|
|
1838
1844
|
});
|
|
1845
|
+
const $immediateDirty = computed(() => {
|
|
1846
|
+
if ($localOptions.value.$immediateDirty != null) return $localOptions.value.$immediateDirty;
|
|
1847
|
+
else if (unref(options.immediateDirty) != null) return unref(options.immediateDirty) === true;
|
|
1848
|
+
return false;
|
|
1849
|
+
});
|
|
1850
|
+
const $isEdited = computed(() => {
|
|
1851
|
+
if ($localOptions.value.$isEdited != null) return $localOptions.value.$isEdited;
|
|
1852
|
+
else if (overrides?.isEdited != null) return overrides.isEdited;
|
|
1853
|
+
});
|
|
1839
1854
|
const $name = computed(() => fieldName ?? options.id ?? "root");
|
|
1840
1855
|
const $modifiers = computed(() => {
|
|
1841
1856
|
return {
|
|
1842
1857
|
$deepCompare: $localOptions.value.$deepCompare ?? false,
|
|
1858
|
+
$debounce: $localOptions.value.$debounce ?? 0,
|
|
1843
1859
|
$lazy: $localOptions.value.$lazy ?? false,
|
|
1844
1860
|
$rewardEarly: $rewardEarly.value,
|
|
1845
1861
|
$autoDirty: $autoDirty.value,
|
|
1846
1862
|
$silent: $silent.value,
|
|
1847
|
-
$clearExternalErrorsOnChange: $localOptions.value.$clearExternalErrorsOnChange ?? false
|
|
1863
|
+
$clearExternalErrorsOnChange: $localOptions.value.$clearExternalErrorsOnChange ?? false,
|
|
1864
|
+
$immediateDirty: $immediateDirty.value,
|
|
1865
|
+
$isEdited: $isEdited.value
|
|
1848
1866
|
};
|
|
1849
1867
|
});
|
|
1850
1868
|
function processShortcuts() {
|
|
@@ -2256,14 +2274,26 @@ function createReactiveNestedStatus({ rulesDef, state, path = "", cachePath, roo
|
|
|
2256
2274
|
return false;
|
|
2257
2275
|
});
|
|
2258
2276
|
const $silent = computed(() => {
|
|
2259
|
-
if (unref(commonArgs.options.silent) != null) return unref(commonArgs.options.silent);
|
|
2277
|
+
if (unref(commonArgs.options.silent) != null) return unref(commonArgs.options.silent) === true;
|
|
2260
2278
|
else if ($rewardEarly.value) return true;
|
|
2261
2279
|
return false;
|
|
2262
2280
|
});
|
|
2263
2281
|
const $autoDirty = computed(() => {
|
|
2264
|
-
if (unref(commonArgs.options.autoDirty) != null) return unref(commonArgs.options.autoDirty);
|
|
2282
|
+
if (unref(commonArgs.options.autoDirty) != null) return unref(commonArgs.options.autoDirty) === true;
|
|
2265
2283
|
return true;
|
|
2266
2284
|
});
|
|
2285
|
+
const $immediateDirty = computed(() => {
|
|
2286
|
+
if (unref(commonArgs.options.immediateDirty) != null) return unref(commonArgs.options.immediateDirty) === true;
|
|
2287
|
+
return false;
|
|
2288
|
+
});
|
|
2289
|
+
const $lazy = computed(() => {
|
|
2290
|
+
if (unref(commonArgs.options.lazy) != null) return unref(commonArgs.options.lazy) === true;
|
|
2291
|
+
return false;
|
|
2292
|
+
});
|
|
2293
|
+
const $clearExternalErrorsOnChange = computed(() => {
|
|
2294
|
+
if (unref(commonArgs.options.clearExternalErrorsOnChange) != null) return unref(commonArgs.options.clearExternalErrorsOnChange) === true;
|
|
2295
|
+
return false;
|
|
2296
|
+
});
|
|
2267
2297
|
const $ready = computed(() => {
|
|
2268
2298
|
return !($invalid.value || $pending.value);
|
|
2269
2299
|
});
|
|
@@ -2305,10 +2335,11 @@ function createReactiveNestedStatus({ rulesDef, state, path = "", cachePath, roo
|
|
|
2305
2335
|
const $modifiers = computed(() => {
|
|
2306
2336
|
return {
|
|
2307
2337
|
autoDirty: $autoDirty.value,
|
|
2308
|
-
lazy:
|
|
2338
|
+
lazy: $lazy.value,
|
|
2309
2339
|
rewardEarly: $rewardEarly.value,
|
|
2310
2340
|
silent: $silent.value,
|
|
2311
|
-
clearExternalErrorsOnChange:
|
|
2341
|
+
clearExternalErrorsOnChange: $clearExternalErrorsOnChange.value,
|
|
2342
|
+
immediateDirty: $immediateDirty.value,
|
|
2312
2343
|
id: unref(commonArgs.options.id)
|
|
2313
2344
|
};
|
|
2314
2345
|
});
|
|
@@ -2509,6 +2540,7 @@ function createReactiveNestedStatus({ rulesDef, state, path = "", cachePath, roo
|
|
|
2509
2540
|
$initialValue: initialState,
|
|
2510
2541
|
$originalValue: originalState,
|
|
2511
2542
|
$self: $selfStatus,
|
|
2543
|
+
$externalErrors: externalErrors,
|
|
2512
2544
|
$fields,
|
|
2513
2545
|
$reset,
|
|
2514
2546
|
$touch,
|
|
@@ -3207,7 +3239,7 @@ function filterInspectorTree(nodes, filter) {
|
|
|
3207
3239
|
return filtered;
|
|
3208
3240
|
}
|
|
3209
3241
|
|
|
3210
|
-
var version$1 = "1.
|
|
3242
|
+
var version$1 = "1.19.0-beta.2";
|
|
3211
3243
|
|
|
3212
3244
|
function createDevtools(app) {
|
|
3213
3245
|
setupDevtoolsPlugin({
|
|
@@ -3371,8 +3403,28 @@ function useRootStorage({ initialState, originalState, options, scopeRules, stat
|
|
|
3371
3403
|
|
|
3372
3404
|
function createRootRegleLogic({ state, rulesFactory, options, globalOptions, customRules, shortcuts, overrides }) {
|
|
3373
3405
|
const definedRules = isRef(rulesFactory) ? rulesFactory : typeof rulesFactory === "function" ? void 0 : computed(() => rulesFactory);
|
|
3406
|
+
/**
|
|
3407
|
+
* Options injected by the plugin
|
|
3408
|
+
*/
|
|
3409
|
+
const pluginOptions = inject(regleConfigSymbol, void 0) ?? {};
|
|
3410
|
+
const mergedGlobalOptions = {
|
|
3411
|
+
...pluginOptions.modifiers,
|
|
3412
|
+
...globalOptions
|
|
3413
|
+
};
|
|
3414
|
+
const mergedCustomRules = () => ({
|
|
3415
|
+
...pluginOptions.rules?.(),
|
|
3416
|
+
...customRules?.()
|
|
3417
|
+
});
|
|
3418
|
+
const mergedShortcuts = {
|
|
3419
|
+
...pluginOptions.shortcuts,
|
|
3420
|
+
...shortcuts
|
|
3421
|
+
};
|
|
3422
|
+
const mergedOverrides = {
|
|
3423
|
+
...pluginOptions.overrides,
|
|
3424
|
+
...overrides
|
|
3425
|
+
};
|
|
3374
3426
|
const resolvedOptions = {
|
|
3375
|
-
...
|
|
3427
|
+
...mergedGlobalOptions,
|
|
3376
3428
|
...options
|
|
3377
3429
|
};
|
|
3378
3430
|
let unwatchRules;
|
|
@@ -3392,28 +3444,20 @@ function createRootRegleLogic({ state, rulesFactory, options, globalOptions, cus
|
|
|
3392
3444
|
options: resolvedOptions,
|
|
3393
3445
|
initialState,
|
|
3394
3446
|
originalState,
|
|
3395
|
-
customRules,
|
|
3396
|
-
shortcuts,
|
|
3397
|
-
overrides
|
|
3447
|
+
customRules: mergedCustomRules,
|
|
3448
|
+
shortcuts: mergedShortcuts,
|
|
3449
|
+
overrides: mergedOverrides
|
|
3398
3450
|
});
|
|
3399
3451
|
}
|
|
3400
3452
|
|
|
3401
3453
|
function createUseRegleComposable(options) {
|
|
3402
|
-
const { rules: customRules, modifiers, shortcuts, overrides } = options ?? {};
|
|
3403
|
-
const globalOptions = {
|
|
3404
|
-
autoDirty: modifiers?.autoDirty,
|
|
3405
|
-
lazy: modifiers?.lazy,
|
|
3406
|
-
rewardEarly: modifiers?.rewardEarly,
|
|
3407
|
-
silent: modifiers?.silent,
|
|
3408
|
-
clearExternalErrorsOnChange: modifiers?.clearExternalErrorsOnChange,
|
|
3409
|
-
immediateDirty: modifiers?.immediateDirty
|
|
3410
|
-
};
|
|
3454
|
+
const { rules: customRules, modifiers = {}, shortcuts, overrides } = options ?? {};
|
|
3411
3455
|
function useRegle(state, rulesFactory, options) {
|
|
3412
3456
|
return { r$: createRootRegleLogic({
|
|
3413
3457
|
state: isRef(state) ? state : ref(state),
|
|
3414
3458
|
rulesFactory,
|
|
3415
3459
|
options,
|
|
3416
|
-
globalOptions,
|
|
3460
|
+
globalOptions: modifiers,
|
|
3417
3461
|
customRules,
|
|
3418
3462
|
shortcuts,
|
|
3419
3463
|
overrides
|
|
@@ -3581,22 +3625,14 @@ function createEmptyRuleState(rules) {
|
|
|
3581
3625
|
return result;
|
|
3582
3626
|
}
|
|
3583
3627
|
function createUseRulesComposable(options) {
|
|
3584
|
-
const { rules: customRules, modifiers, shortcuts, overrides } = options ?? {};
|
|
3585
|
-
const globalOptions = {
|
|
3586
|
-
autoDirty: modifiers?.autoDirty,
|
|
3587
|
-
lazy: modifiers?.lazy,
|
|
3588
|
-
rewardEarly: modifiers?.rewardEarly,
|
|
3589
|
-
silent: modifiers?.silent,
|
|
3590
|
-
clearExternalErrorsOnChange: modifiers?.clearExternalErrorsOnChange,
|
|
3591
|
-
immediateDirty: modifiers?.immediateDirty
|
|
3592
|
-
};
|
|
3628
|
+
const { rules: customRules, modifiers = {}, shortcuts, overrides } = options ?? {};
|
|
3593
3629
|
function useRules(rulesFactory, options) {
|
|
3594
3630
|
const definedRules = isRef(rulesFactory) ? rulesFactory : typeof rulesFactory === "function" ? void 0 : computed(() => rulesFactory);
|
|
3595
3631
|
return createRootRegleLogic({
|
|
3596
3632
|
state: ref(createEmptyRuleState(definedRules?.value)),
|
|
3597
3633
|
rulesFactory: definedRules,
|
|
3598
3634
|
options,
|
|
3599
|
-
globalOptions,
|
|
3635
|
+
globalOptions: modifiers,
|
|
3600
3636
|
customRules,
|
|
3601
3637
|
shortcuts,
|
|
3602
3638
|
overrides
|
|
@@ -3785,6 +3821,30 @@ function extendRegleConfig(regle, { rules, modifiers, shortcuts, overrides }) {
|
|
|
3785
3821
|
inferRules: createInferRuleHelper()
|
|
3786
3822
|
};
|
|
3787
3823
|
}
|
|
3824
|
+
/**
|
|
3825
|
+
* Define a global Regle options to customize the validation behavior across your application.
|
|
3826
|
+
* It's meant to be used with the Regle Vue plugin.
|
|
3827
|
+
*
|
|
3828
|
+
* @param options - Configuration options
|
|
3829
|
+
* @returns The configuration options
|
|
3830
|
+
*
|
|
3831
|
+
* @example
|
|
3832
|
+
* ```ts
|
|
3833
|
+
* import { defineRegleOptions } from '@regle/core';
|
|
3834
|
+
*
|
|
3835
|
+
* const regleOptions = defineRegleOptions({
|
|
3836
|
+
* modifiers: {
|
|
3837
|
+
* lazy: true,
|
|
3838
|
+
* rewardEarly: true
|
|
3839
|
+
* }
|
|
3840
|
+
* });
|
|
3841
|
+
* ```
|
|
3842
|
+
*
|
|
3843
|
+
* @see {@link https://reglejs.dev/advanced-usage/global-config Documentation}
|
|
3844
|
+
*/
|
|
3845
|
+
function defineRegleOptions(options) {
|
|
3846
|
+
return options;
|
|
3847
|
+
}
|
|
3788
3848
|
|
|
3789
3849
|
/**
|
|
3790
3850
|
* Merge multiple Regle instances into a single validation state.
|
|
@@ -4271,7 +4331,7 @@ function createVariant(root, discriminantKey, variants) {
|
|
|
4271
4331
|
* @see {@link https://reglejs.dev/advanced-usage/variants Documentation}
|
|
4272
4332
|
*/
|
|
4273
4333
|
function narrowVariant(root, discriminantKey, discriminantValue) {
|
|
4274
|
-
return !!root && isObject(root[discriminantKey]) && "$value" in root[discriminantKey] && root[discriminantKey]?.$value === discriminantValue;
|
|
4334
|
+
return !!root && discriminantKey in root && isObject(root[discriminantKey]) && "$value" in root[discriminantKey] && root[discriminantKey]?.$value === discriminantValue;
|
|
4275
4335
|
}
|
|
4276
4336
|
function variantToRef(root, discriminantKey, discriminantValue, _options) {
|
|
4277
4337
|
const fromRoot = isRef(root) ? toRef(root.value, "$fields") : toRef(root, "$fields");
|
|
@@ -4366,9 +4426,10 @@ function refineRules(rules, refinement) {
|
|
|
4366
4426
|
*
|
|
4367
4427
|
* @see {@link https://reglejs.dev/introduction/devtools Documentation}
|
|
4368
4428
|
*/
|
|
4369
|
-
const RegleVuePlugin = { install(app) {
|
|
4429
|
+
const RegleVuePlugin = { install(app, options) {
|
|
4370
4430
|
app.provide(regleSymbol, version$1);
|
|
4431
|
+
if (options) app.provide(regleConfigSymbol, options);
|
|
4371
4432
|
if (typeof window !== "undefined" && true) createDevtools(app);
|
|
4372
4433
|
} };
|
|
4373
4434
|
|
|
4374
|
-
export { InternalRuleType, RegleVuePlugin, createRule, createScopedUseRegle, createVariant, defineRegleConfig, defineRules, extendRegleConfig, flatErrors, getErrors, getIssues, inferRules, markStatic, mergeRegles, narrowVariant, refineRules, unwrapRuleParameters, useCollectScope, useRegle, useRootStorage, useRules, useScopedRegle, variantToRef };
|
|
4435
|
+
export { InternalRuleType, RegleVuePlugin, createRule, createScopedUseRegle, createVariant, defineRegleConfig, defineRegleOptions, defineRules, extendRegleConfig, flatErrors, getErrors, getIssues, inferRules, markStatic, mergeRegles, narrowVariant, refineRules, unwrapRuleParameters, useCollectScope, useRegle, useRootStorage, useRules, useScopedRegle, variantToRef };
|
package/dist/regle-core.min.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @regle/core v1.
|
|
2
|
+
* @regle/core v1.19.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,isRef as i,markRaw as a,nextTick as o,onMounted as s,onScopeDispose as c,reactive as l,ref as u,shallowRef as d,toRef as f,toValue as p,triggerRef as m,unref as h,version as g,watch as _,watchEffect as v}from"vue";function y(e){return e?.constructor?.name==`File`}function b(e){return e&&(e instanceof Date||e.constructor.name==`File`||e.constructor.name==`FileList`)?!1:typeof e==`object`&&!!e&&!Array.isArray(e)}function x(e,t,n){if(!e)return n;var r,i;if(Array.isArray(t)&&(r=t.slice(0)),typeof t==`string`&&(r=t.split(`.`)),typeof t==`symbol`&&(r=[t]),!Array.isArray(r))throw Error(`props arg must be an array, a string or a symbol`);for(;r.length;)if(i=r.shift(),!e||!i||(e=e[i],e===void 0))return n;return e}function S(e,...t){for(var n=[].slice.call(arguments),r,i=n.length;r=n[i-1],i--;)if(!r||typeof r!=`object`&&typeof r!=`function`)throw Error(`expected object, got `+r);for(var a=n[0],o=n.slice(1),s=o.length,i=0;i<s;i++){var c=o[i];for(var l in c)a[l]=c[l]}return a}function C(e){let t={};for(let n in e){if(!Object.prototype.hasOwnProperty.call(e,n))continue;let r=e[n],i=n.split(`.`),a=t;for(let e=0;e<i.length;e++){let t=i[e],n=e===i.length-1,o=t.match(/^\d+$/)?Number(t):null;if(o!==null){if(Array.isArray(a))if(n)a[o]=r;else{if(typeof a[o]!=`object`||a[o]===null){let t=i[e+1];a[o]=t&&t.match(/^\d+$/)?{$each:[],$self:[]}:{}}a=`$each`in a[o]?a[o].$each:a[o]}}else if(n)if(Array.isArray(a[t])){let e=a[t].slice();a[t]={},a[t].$self=e}else typeof a[t]==`object`&&a[t]!==null&&`$each`in a[t]?a[t].$self=r:a[t]=r;else{let n=i[e+1];if(Array.isArray(a[t])){let e=a[t].slice();a[t]={$each:[]},a[t].$self=e}(typeof a[t]!=`object`||a[t]===null||Array.isArray(a[t])&&!n.match(/^\d+$/))&&(n&&n.match(/^\d+$/)?a[t]={$each:[],$self:[]}:a[t]={}),a=`$each`in a[t]?a[t].$each:a[t]}}}return t}function w(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function T(e,t,n,r=!1){Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})}function E(e){return typeof e==`function`&&!!e.prototype&&`constructor`in e.prototype&&e.prototype.constructor===e}function D(e,t=!0,n=!0){return e==null?!0:e instanceof Date?isNaN(e.getTime()):y(e)?e.size<=0:Array.isArray(e)?t?e.length===0:!1:b(e)?e==null?!0:n?Object.keys(e).length===0:!1:!String(e).length}const O=Symbol(`regle-rule`);function k(e){let t=[];return e.global&&t.push(`g`),e.ignoreCase&&t.push(`i`),e.multiline&&t.push(`m`),e.sticky&&t.push(`y`),e.unicode&&t.push(`u`),t.join(``)}function A(e,t=0){if(t>20)return e;let n=e,r={}.toString.call(e).slice(8,-1);if(r==`Set`&&(n=new Set([...e].map(e=>A(e,t++)))),r==`Map`&&(n=new Map([...e].map(e=>[A(e[0]),A(e[1])]))),r==`Date`&&(n=new Date(e.getTime())),r==`RegExp`&&(n=RegExp(e.source,k(e))),r==`Array`||r==`Object`)for(let r in n=Array.isArray(e)?[]:{},e)n[r]=A(e[r],t++);return n}function j(e){let t=Object.prototype.toString.call(e);return e==null?new Date(NaN):e instanceof Date||typeof e==`object`&&t===`[object Date]`?new Date(e.getTime()):typeof e==`number`||t===`[object Number]`||typeof e==`string`||t===`[object String]`?new Date(e):new Date(NaN)}function M(e,t,{immediate:n=!1,trackDebounceRef:r}={}){let i,a=(...a)=>{r&&(r.value=!0);function o(){r&&(r.value=!1)}return new Promise((r,s)=>{function c(e){r(e),o()}if(clearTimeout(i),i=setTimeout(()=>{if(o(),i=void 0,!n)try{Promise.resolve(e.apply(this,[...a])).then(c).catch(e=>s(e)).finally(o)}catch(e){s(e)}},t),n){o();try{Promise.resolve(e.apply(this,[...a])).then(c).catch(e=>s(e)).finally(o)}catch(e){s(e)}}})};return a.cancel=()=>{clearTimeout(i),i=void 0,r&&(r.value=!1)},a}function N(e,t,n=!1,r=!0){if(e===t)return!0;if(e&&t&&typeof e==`object`&&typeof t==`object`){if(e.constructor!==t.constructor)return!1;var i,a,o;if(Array.isArray(e)&&Array.isArray(t)){if(i=e.length,i!=t.length)return!1;if(r||!r&&n){for(a=i;a--!==0;)if(!N(e[a],t[a],n,!1))return!1}return!0}if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===t.toString();if(o=Object.keys(e),i=o.length,i!==Object.keys(t).length)return!1;for(a=i;a--!==0;)if(!Object.prototype.hasOwnProperty.call(t,o[a]))return!1;for(a=i;a--!==0;){var s=o[a];if(b(e)&&b(t)&&s&&(r||!r&&n)&&!N(e[s],t[s],n,!1))return!1}return!0}return e!==e&&t!==t}var P=class extends Error{constructor(e=`Promise was aborted`){super(e),this.name=`AbortError`}};function F(e){let t=new AbortController,{signal:n}=t,r=new Promise((t,r)=>{function i(){r(new P)}n.addEventListener(`abort`,i),e.then(e=>{n.removeEventListener(`abort`,i),n.aborted?r(new P):t(e)}).catch(e=>{n.removeEventListener(`abort`,i),n.aborted?r(new P):r(e)})});function i(e){t.abort(e)}return{promise:r,abort:i,signal:n}}const I={Inline:`__inline`,Async:`__async`};function L(e){try{return e.map(e=>p(e))}catch{return[]}}function R(t){return t.map(t=>t instanceof Function?e(t):i(t)?t:f(()=>t))}function z(e){let t=e.toString().replace(/\/\/.*$/gm,``).replace(/\/\*[\s\S]*?\*\//g,``).match(/^(?:async\s*)?(?:function\b.*?\(|\((.*?)\)|(\w+))\s*=>|\((.*?)\)\s*=>|function.*?\((.*?)\)|\((.*?)\)/);return t?(t[0]||t[1]||t[2]||t[3]||t[4]||``).split(`,`).map(e=>e.trim()).filter(e=>e.length>0).length:0}function B(e,...t){let{validator:n,type:r,async:i}=e,o=i||r===I.Async||n.constructor.name===`AsyncFunction`;return a({validator(n,...r){return e.validator(n,...L(r.length?r:t))},message(n){return typeof e.message==`function`?e.message({...n,$params:L(n?.$params?.length?n.$params:t)}):e.message},active(n){return typeof e.active==`function`?e.active({...n,$params:L(n?.$params?.length?n.$params:t)}):e.active??!0},tooltip(n){return typeof e.tooltip==`function`?e.tooltip({...n,$params:L(n?.$params?.length?n.$params:t)}):e.tooltip??[]},exec(n){let r=e.validator(n,...L(t)),i;return r instanceof Promise?r.then(e=>(i=e,typeof i==`object`&&`$valid`in i?i.$valid:typeof i==`boolean`?i:!1)):(i=r,typeof i==`object`&&`$valid`in i?i.$valid:typeof i==`boolean`?i:!1)},type:r,_validator:e.validator,_message:e.message,_active:e.active,_tooltip:e.tooltip,_type:e.type,_message_patched:!1,_tooltip_patched:!1,_async:o,_params:R(t),_brand:O})}function V(e){if(typeof e.validator==`function`){let t=[],n=e.async??e.validator.constructor.name===`AsyncFunction`,r=B({...e,async:n},...t);if(z(e.validator)>1){let t=function(...t){return B(e,...t)};return t.validator=r.validator,t.message=r.message,t.active=r.active,t.tooltip=r.tooltip,t.type=r.type,t.exec=r.exec,t._validator=r.validator,t._message=r.message,t._active=r.active,t._tooltip=r.tooltip,t._type=e.type,t._message_pacthed=!1,t._tooltip_pacthed=!1,t._async=n,t}else return r}throw Error(`[createRule] validator must be a function`)}function H(e){return b(e.value)}function U(e,n,r){let i=t(),a;return a=e instanceof Function?i.run(()=>e(n,r??0)):e,{scope:i,unwrapped:a}}const W={LessThan:-1,EqualTo:0,GreaterThan:1};function G(e,t){let n=String(e).split(`.`),r=String(t).split(`.`);for(let e=0;e<Math.min(n.length,r.length);e++){let t=Number(n[e]),i=Number(r[e]);if(t>i)return W.GreaterThan;if(i>t)return W.LessThan;if(!isNaN(t)&&isNaN(i))return W.GreaterThan;if(isNaN(t)&&!isNaN(i))return W.LessThan}return W.EqualTo}const ee=G(g,`3.5.0`)!==-1;function te(){return Math.floor(Math.random()*Date.now()).toString()}function K(){return typeof window>`u`?te():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function q(e){return r()?(c(e),!0):!1}function J(e){let n=!1,r,i=t(!0);return((...t)=>(n||=(r=i.run(()=>e(...t)),!0),r))}function Y(e,t){return e.some(e=>t?e?.[t]:!1)}function X(e,t){return t?e.reduce((e,n)=>{let r=n?.[t]||[];return e.concat(r)},[]):[]}function Z(){let e=d(new Map),t=d(new Map),n=d(new Map),i=d(new Map),a=d(new Map),o=d(new Map);function s(e){let n=t.value.get(e);if(n)return n;{let n=u({});return t.value.set(e,n),n}}function l(e){let t=n.value.get(e);if(t)return t;{let t=u([]);return n.value.set(e,t),t}}function f(e,t,n){o.value.set(`${e}-${t}`,n)}function p(e,t){return o.value.get(`${e}-${t}`)}function m(e,t){e&&t!=null&&o.value.delete(`${e}-${t}`)}function h(e,t){i.value.set(e,t)}function g(e){return i.value.get(e)??!1}function _(t,n){e.value.set(t,n)}function v(t,n){let r=e.value.get(t);if(r)return y(n,r)?{valid:!0}:{valid:!1}}function y(e,t){let n=Object.keys(t),r=Object.keys(e);return r.length!==n.length||!r.every(e=>n.includes(e))?!1:r.every(n=>{let r=e[n],i=t[n];return!i||!r||typeof r==`function`||typeof i==`function`||typeof r==`number`||typeof r==`boolean`||typeof r==`string`?!1:r._params?r._params?.every((e,t)=>{if(typeof i==`number`||typeof i==`boolean`||typeof i==`string`)return!0;{let e=L(i._params),n=L(r._params);return e?.[t]===n?.[t]}}):!0})}function b(e){let t=a.value.get(e);if(t)return t;{let t=u(!1),n=u(!0),r=u({}),i=u(!1);return a.value.set(e,{$pending:t,$valid:n,$metadata:r,$validating:i}),{$pending:t,$valid:n,$metadata:r,$validating:i}}}return r()&&c(()=>{e.value.clear(),t.value.clear(),n.value.clear(),i.value.clear(),a.value.clear(),o.value.clear()}),{addRuleDeclEntry:_,setDirtyEntry:h,checkRuleDeclEntry:v,getDirtyState:g,trySetRuleStatusRef:b,getFieldsEntry:s,getCollectionsEntry:l,getArrayStatus:p,addArrayStatus:f,deleteArrayStatus:m,arrayStatusStorage:o}}const ne=Symbol(`regle`),Q={REGLE_STATIC:`__regle_static`};function re(e,t){return!se(e.value)&&(H(e)||b(t.value)&&!D(t.value)&&!Object.entries(t.value).some(([e,t])=>$(t)||typeof t==`function`))}function ie(e,t){return!!e.value&&b(e.value)&&`$each`in e.value||Array.isArray(t.value)}function ae(e){return!!e.value&&(b(e.value)||H(e.value))}function $(e){return(b(e)||typeof e==`function`)&&`_validator`in e}function oe(e){return typeof e.value==`function`?`_validator`in e.value:!0}function se(e){return b(e)&&w(e,Q.REGLE_STATIC)&&e[Q.REGLE_STATIC]===!0}function ce(e){return b(e)&&`$fields`in e}function le(e){return!!e&&`$rules`in e}function ue({field:e,silent:t=!1}){let n=Object.entries(e.$rules??{}).map(([n,r])=>{let i=``;if(t&&!r.$valid)i=r.$message;else if(!r.$valid&&e.$error&&!r.$validating)i=r.$message;else return null;return{$message:i,$property:e.fieldName,$rule:n,$type:r.$type,...typeof r.$metadata==`object`?r.$metadata:{}}}).filter(e=>!!e).reduce((e,t)=>(typeof t.$message==`string`?e.push(t):e.push(...t.$message.map(e=>({...t,$message:e}))),e),[]),r=e.$error&&e.$externalErrors?e.$externalErrors.map(t=>({$message:t,$property:e.fieldName,$rule:`external`,$type:void 0})):[],i=[];return e.$schemaErrors&&e.$error&&(i=!Array.isArray(e.$schemaErrors)&&`$self`in e.$schemaErrors?e.$schemaErrors.$self??[]:e.$schemaErrors??[]),[...n,...r,...i]}function de({field:e}){let t=[];for(let n of Object.values(e.$rules??{})){let e=n.$tooltip;e&&(typeof e==`string`?t.push(e):t.push(...e))}return t}function fe(e){return b(e)&&`$each`in e}function pe(e,t){let{includePath:n=!1}=t??{};if(Array.isArray(e)&&e.every(e=>!b(e)))return e;if(fe(e)){let t=n?e.$self?.map(e=>({message:e,path:[]}))??[]:e.$self??[],r=e.$each?.map(e=>me(e,n))??[];return t?.concat(r.flat())}else return Object.entries(e).map(([e,t])=>me(t,n,[e])).flat()}function me(e,t=!1,n){let r=t&&!n?[]:n;if(Array.isArray(e)&&e.every(e=>!b(e)))return t?e.map(e=>({message:e,path:r??[]})):e;if(fe(e)){let n=r?.length?e.$self?.map(e=>({message:e,path:r??[]}))??[]:e.$self??[],i=e.$each?.map((e,n)=>me(e,t,r?.concat(n)))??[];return n?.concat(i.flat())}else return Object.entries(e).map(([e,n])=>me(n,t,r?.concat(e))).flat()}function he({customMessages:n,rule:r,ruleKey:i,state:a,path:o,cachePath:s,storage:c,modifiers:d}){let f=t(),p={},m,h=e(()=>$(r.value)&&r.value._async),g=u(!1),{$pending:v,$valid:y,$metadata:b,$validating:x}=c.trySetRuleStatusRef(`${s}.${i}`);function S(){f=t(),p=f.run(()=>{let t=u(!1),s=u(!1),c=u(!0),l=u(!1),d=u(!1),f=e(()=>({$value:a.value,$error:s.value,$dirty:t.value,$pending:l.value,$correct:d.value,$invalid:c.value,$rule:{$valid:y.value,$invalid:!y.value,$pending:v.value},$params:S.value,...b.value})),p=e(()=>{try{return oe(r)?typeof r.value.active==`function`?r.value.active(f.value):!!r.value.active:!0}catch(e){return console.error(`Error in "active" function for "${o}.${i}" rule`,{cause:e}),!0}});function m(e){try{let t=``,a=n?n[i]?.[e]:void 0;if(a&&(t=typeof a==`function`?a(f.value):a),oe(r)){let n=`_${e}_patched`;a&&!r.value[n]||(t=typeof r.value[e]==`function`?r.value[e](f.value):r.value[e]??``)}return t}catch(t){return console.error(`Error in "${e}" function for "${o}.${i}" rule`,{cause:t}),``}}let h=e(()=>{let e=m(`message`);return D(e)&&(e=`This field is not valid`),e}),g=e(()=>m(`tooltip`)),_=e(()=>oe(r)&&r.value.type?r.value.type:i),x=e(()=>oe(r)?r.value.validator:r.value),S=e(()=>typeof r.value==`function`?[]:L(r.value._params??[]));return{$active:p,$message:h,$type:_,$validator:x,$params:S,$path:e(()=>`${o}.${i}`),$tooltip:g,$fieldCorrect:d,$fieldError:s,$fieldDirty:t,$fieldPending:l,$fieldInvalid:c}}),m=_(p?.$params,()=>{(!d.$silent.value||d.$rewardEarly.value&&p.$fieldError.value)&&E()},{deep:ee?1:!0})}S();function C(){y.value=!0,p.$fieldDirty.value&&(v.value=!0)}async function w(){let e=!1;try{let t=p.$validator.value;if(typeof t!=`function`)return console.error(`${o}: Incorrect rule format, it needs to be either a function or created with "createRule".`),!1;let n=t(a.value,...p.$params.value),r=a.value;C();let i;if(i=n instanceof Promise?await n:n,a.value!==r)return!0;if(typeof i==`boolean`)e=i;else{let{$valid:t,...n}=i;e=t,b.value=n}}catch{e=!1}finally{v.value=!1}return e}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 O(){try{return x.value=!0,T(p.$validator.value)}catch{return!1}finally{x.value=!1}}function k(){y.value=!0,b.value={},v.value=!1,x.value=!1,S()}function A(){m(),f.stop(),f=t()}return l({...p,$pending:v,$valid:y,$metadata:b,$haveAsync:h,$maybePending:g,$validating:x,$parse:E,$parseSync:O,$unwatch:A,$watch:S,$reset:k})}function ge(e){return{"~standard":{version:1,vendor:`regle`,validate:async t=>{let{valid:n,data:r,errors:i}=await e(t);return n?{value:r,issues:[]}:{issues:pe(i,{includePath:!0})}}}}}function _e({state:n,rulesDef:r,customMessages:i,path:a,cachePath:o,fieldName:s,storage:c,options:d,externalErrors:p,schemaErrors:m,schemaMode:g,onUnwatch:y,$isArray:x,initialState:S,originalState:C,shortcuts:w,overrides:T,onValidate:E}){let O=t(),k,P=[],I,L,R,z,B=()=>{},V,H=()=>{},U=u(!1);function W(){let e=r.value,t=c.checkRuleDeclEntry(o,e),s={};for(let t in e)t.startsWith(`$`)&&(s[t]=e[t]);Z.value=s,q();let l=r.value,u=[];for(let e in l){if(e.startsWith(`$`)||e.startsWith(`~`))continue;let t=l[e];if(!t)continue;let r=f(()=>t);u.push([e,he({modifiers:{$silent:k.$silent,$rewardEarly:k.$rewardEarly},customMessages:i,rule:r,ruleKey:e,state:n,path:a,cachePath:o,storage:c,$debounce:Z.value.$debounce})])}X.value=Object.fromEntries(u),k.processShortcuts(),G(),te(),t?.valid!=null&&(k.$dirty.value=c.getDirtyState(o),(k.$dirty.value&&!k.$silent.value||k.$rewardEarly.value&&k.$error.value)&&B()),c.addRuleDeclEntry(o,e)}function G(){B=k.$debounce.value>0?M(Y,k.$debounce.value,{trackDebounceRef:U}):Y}function te(){H=k.$debounce.value>0?M(()=>{k.$dirty.value=!0},k.$debounce.value):()=>{k.$dirty.value=!0}}function K(){if(X.value)for(let e of Object.values(X.value))e.$unwatch();L(),z?.(),k.$dirty.value&&c.setDirtyEntry(o,k.$dirty.value),I?.(),O.stop(),O=t();for(let e of P)e.stop();P=[],y?.(),R?.()}function q(){if(X.value)for(let e of Object.values(X.value))e.$watch();k=O.run(()=>{let i=u(!1),a=u(!1),o=e(()=>i.value),c=e(()=>x||se(n.value)),f=e(()=>Z.value.$debounce==null?k.$haveAnyAsyncRule.value?200:0:Z.value.$debounce),_=e(()=>Z.value.$deepCompare==null?!1:Z.value.$deepCompare),y=e(()=>Z.value.$lazy==null?h(d.lazy)==null?!1:h(d.lazy):Z.value.$lazy),b=e(()=>Z.value.$immediateDirty==null?h(d.immediateDirty)==null?!1:h(d.immediateDirty):Z.value.$immediateDirty),C=e(()=>Z.value.$rewardEarly==null?h(d.rewardEarly)==null?!1:h(d.rewardEarly):Z.value.$rewardEarly),E=e(()=>Z.value.$clearExternalErrorsOnChange==null?h(d.clearExternalErrorsOnChange)==null?!O.value:h(d.clearExternalErrorsOnChange):Z.value.$clearExternalErrorsOnChange),O=e(()=>C.value?!0:Z.value.$silent==null?h(d.silent)==null?!1:h(d.silent):Z.value.$silent),A=e(()=>Z.value.$autoDirty==null?h(d.autoDirty)==null?!0:h(d.autoDirty):Z.value.$autoDirty),M=e(()=>{for(let e of Object.values(X.value))if(e.$validating)return!0;return!1}),F=e({get:()=>n.value,set(e){I(),n.value=e,J()}}),L=e(()=>U.value?q.value&&i.value:q.value&&!K.value&&i.value),R=e(()=>ue({field:{$rules:X.value,$error:L.value,$externalErrors:p?.value,$schemaErrors:m?.value,fieldName:Y.value}})),z=e(()=>ue({field:{$rules:X.value,$error:L.value,$externalErrors:p?.value,$schemaErrors:m?.value,fieldName:Y.value},silent:!0})),B=e(()=>R.value.map(e=>e.$message)),V=e(()=>z.value.map(e=>e.$message)),H=u(!1);function W(e,t){return t instanceof Date&&e instanceof Date?j(t).getDate()!==j(e).getDate():t==null?!!e:Array.isArray(e)&&Array.isArray(t)?!N(e,t,Z.value.$deepCompare):t!==e}v(()=>{i.value?Z.value.$isEdited?H.value=Z.value.$isEdited(n.value,S.value,W):T?.isEdited?H.value=T.isEdited(n.value,S.value,W):H.value=W(n.value,S.value):H.value=!1});let G=e(()=>H.value),ee=e(()=>de({field:{$rules:X.value}})),te=e(()=>!(q.value||K.value)),K=e(()=>a.value||!C.value?Object.entries(X.value).some(([e,t])=>t.$pending):!1),q=e(()=>p?.value?.length||m?.value?.length?!0:ne.value?!1:Object.values(X.value).some(e=>!e.$valid||e.$maybePending)),Y=e(()=>s??d.id??`root`),ne=e(()=>!g&&!Object.keys(r.value).some(e=>!e.startsWith(`$`))),Q=e(()=>{if(p?.value?.length||ne.value||U.value)return!1;if(i.value&&!D(n.value)&&!M.value&&!K.value){if(g)return!m?.value?.length;{let e=Object.values(X.value);for(let t of e)if(t.$active&&!t.$valid)return!1;return e.some(e=>e.$active)}}return!1}),re=e(()=>Object.values(X.value).some(e=>e.$haveAsync)),ie=e(()=>({$debounce:f.value,$lazy:y.value,$rewardEarly:C.value,$autoDirty:A.value,$silent:O.value,$clearExternalErrorsOnChange:E.value}));function ae(){w?.fields&&Object.entries(w.fields).forEach(([e,r])=>{let a=t();$[e]=a.run(()=>{let e=u();return v(()=>{e.value=r(l({$dirty:i,$externalErrors:p?.value??[],$value:n,$silentValue:F,$rules:X,$error:L,$pending:K,$invalid:q,$correct:Q,$errors:B,$ready:te,$silentErrors:V,$anyDirty:o,$tooltips:ee,$name:Y,$inactive:ne,$edited:H,$anyEdited:G}))}),e}),P.push(a)})}let $={};return{$error:L,$pending:K,$invalid:q,$correct:Q,$debounce:f,$deepCompare:_,$lazy:y,$immediateDirty:b,$ready:te,$issues:R,$silentIssues:z,$errors:B,$silentErrors:V,$rewardEarly:C,$autoDirty:A,$silent:O,$clearExternalErrorsOnChange:E,$anyDirty:o,$edited:H,$anyEdited:G,$name:Y,$haveAnyAsyncRule:re,$shortcuts:$,$validating:M,$tooltips:ee,$dirty:i,processShortcuts:ae,$silentValue:F,$inactive:ne,$modifiers:ie,$isArrayOrRegleStatic:c}}),J(),L=_(k.$dirty,e=>{c.setDirtyEntry(o,e),Object.values(X.value).forEach(t=>{t.$fieldDirty=e})}),z=_([k.$error,k.$correct,k.$invalid,k.$pending],()=>{Object.values(X.value).forEach(e=>{e.$fieldError=k.$error.value,e.$fieldInvalid=k.$invalid.value,e.$fieldPending=k.$pending.value,e.$fieldCorrect=k.$correct.value})}),R=_(k.$haveAnyAsyncRule,G)}function J(){I=_(n,()=>{k.$autoDirty.value&&!k.$silent.value&&(k.$dirty.value||H()),r.value instanceof Function&&W(),(!k.$silent.value||k.$rewardEarly.value&&k.$error.value)&&B(),k.$clearExternalErrorsOnChange.value&&le()},{deep:k.$isArrayOrRegleStatic.value?!0:ee?1:!0})}async function Y(){try{let{promise:e}=re(Promise.allSettled(Object.values(X.value).map(e=>e.$parse())));await e}catch{}}let X=u({}),Z=u({});W();function ne(e,t){if(Q(),le(),k.$dirty.value=!1,c.setDirtyEntry(o,!1),!t)if(e?.toOriginalState)n.value=A(C),S.value=A(C);else if(e?.toInitialState)n.value=A(S.value);else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,S.value=A(t),n.value=A(t)}else S.value=b(n.value)&&!se(n.value)?A(n.value):Array.isArray(n.value)?[...n.value]:n.value;if(e?.clearExternalErrors&&le(),!t&&!e?.keepValidationState)for(let e of Object.values(X.value))e.$reset();if(!k.$lazy.value&&!k.$silent.value&&!t)for(let e of Object.values(X.value))e.$parse()}function Q(){`cancel`in B&&B.cancel()}function re(e){return V&&V.abort(),V=F(e),V}function ie(){Q(),V&&V.abort()}function ae(e=!0,t=!1){k.$dirty.value||H(),t&&e?(!k.$silent.value||k.$rewardEarly.value&&k.$error.value)&&(Q(),B()):e&&(Q(),B())}async function $(e){try{if(e&&(n.value=e),g)return E?(ae(!1),E()):{valid:!1,data:n.value,errors:k.$errors.value,issues:k.$issues.value};let t=n.value;if(!k.$dirty.value)k.$dirty.value=!0;else if(!k.$silent.value&&k.$dirty.value&&!k.$pending.value&&!U.value&&!k.$haveAnyAsyncRule.value)return{valid:!k.$error.value,data:t,errors:k.$errors.value,issues:k.$issues.value};if(g)return{valid:!m?.value?.length,data:t,errors:k.$errors.value,issues:k.$issues.value};if(D(X.value))return{valid:!0,data:t,errors:k.$errors.value,issues:k.$issues.value};ie();let{promise:r}=re(Promise.allSettled(Object.values(X.value).map(e=>e.$parse())));return{valid:(await r).every(e=>e.status===`fulfilled`&&e.value===!0),data:t,errors:k.$errors.value,issues:k.$issues.value}}catch{return{valid:!1,data:n.value,errors:k.$errors.value,issues:k.$issues.value}}}function oe(e){try{return e&&(n.value=e),k.$dirty.value||(k.$dirty.value=!0),g?!1:Object.values(X.value).map(e=>e.$parseSync()).every(e=>!!e)}catch{return!1}}function ce(e=!0){return k.$dirty.value?n.value:e?{_null:!0}:null}function le(){p?.value?.length&&(p.value=[])}!k.$lazy.value&&!k.$dirty.value&&!k.$silent.value&&Y(),k.$immediateDirty.value&&(k.$dirty.value=!0);let{$shortcuts:fe,$validating:pe,$autoDirty:me,$rewardEarly:_e,$clearExternalErrorsOnChange:ve,$haveAnyAsyncRule:ye,$debounce:be,$lazy:xe,...Se}=k;return l({...Se,$externalErrors:p,$value:n,$initialValue:S,$originalValue:C,$rules:X,...fe,$path:a,$isDebouncing:U,$reset:ne,$touch:ae,$validate:$,$validateSync:oe,$unwatch:K,$watch:q,$extractDirtyFields:ce,$clearExternalErrors:le,$abort:ie,$schemaMode:g,"~modifiers":k.$modifiers,...ge($)})}function ve({$id:t,path:n,cachePath:r,index:i,options:a,storage:o,stateValue:s,customMessages:c,rules:l,externalErrors:u,schemaErrors:d,initialState:p,originalState:m,shortcuts:h,fieldName:g,schemaMode:_,overrides:v}){let y=s.value?.$id??l.$key??K(),x=`${r}.${String(y)}`,S=`${n}.${i}`;typeof s.value==`object`&&s.value!=null&&(s.value.$id||Object.defineProperties(s.value,{$id:{value:y,enumerable:!1,configurable:!1,writable:!1}}));let C=f(u?.value??[],i),w=e(()=>d?.value?.[i]),T=xe({index:i,state:s,rulesDef:f(()=>l),customMessages:c,path:S,cachePath:x,storage:o,options:a,externalErrors:C,schemaErrors:w,initialState:p,originalState:m,shortcuts:h,fieldName:g,schemaMode:_,overrides:v});return T&&(T.$id=s.value?.$id??String(y),o.addArrayStatus(t,T.$id,T)),s.value&&(!b(s.value)||se(s.value))&&_&&T?.$touch(),T}function ye({state:n,rulesDef:r,customMessages:i,path:a,cachePath:o,storage:s,options:c,externalErrors:d,schemaErrors:p,schemaMode:m,initialState:g,originalState:y,shortcuts:b,fieldName:x,overrides:S}){let C=t(),w,T=t(),E,O=[];if(!Array.isArray(n.value)&&!r.value.$each)return;let k=u(),j=u(n.value),M=u({}),N,P,F=u({}),I=s.getCollectionsEntry(a);E=T.run(()=>({isPrimitiveArray:e(()=>n.value?.length?Array.isArray(n.value)&&n.value.length?n.value.every(e=>typeof e!=`object`):r.value.$each&&!(r.value.$each instanceof Function)?Object.values(r.value.$each).every(e=>$(e)||typeof e==`function`):!1:!1)})),L(),V();function L(){M.value=Object.fromEntries(Object.entries(r.value).filter(([e])=>e.startsWith(`$`))),typeof n.value==`object`&&(n.value!=null&&!n.value?.$id&&n.value!==null?(k.value=K(),Object.defineProperties(n.value,{$id:{value:k.value,enumerable:!1,configurable:!1,writable:!1}})):n.value?.$id&&(k.value=n.value.$id)),j.value=F.value.$value,Array.isArray(n.value)&&(!E.isPrimitiveArray.value||m)?I.value=n.value.map((t,n)=>{let{scope:l,unwrapped:u}=U(r.value.$each,f(()=>t),n);l&&O.push(l);let h=f(g.value??[],n),_=f(d?.value??{},`$each`),v=e(()=>p?.value?.$each);return ve({$id:k.value,path:a,cachePath:o,customMessages:i,rules:u??{},stateValue:f(()=>t),index:n,options:c,storage:s,externalErrors:_,schemaErrors:v,initialState:h,originalState:y,shortcuts:b,fieldName:x,schemaMode:m,overrides:S})||null}).filter(e=>!!e):I.value=[],F.value=_e({state:n,rulesDef:r,customMessages:i,path:a,cachePath:a,storage:s,options:c,externalErrors:f(d?.value??{},`$self`),schemaErrors:e(()=>p?.value?.$self),$isArray:!0,initialState:g,originalState:y,shortcuts:b,fieldName:x,schemaMode:m,overrides:S})}function R(){if(Array.isArray(n.value)&&(!E.isPrimitiveArray.value||m)){let t=A(I.value);I.value=n.value.map((t,n)=>{let o=f(()=>t);if(t.$id&&I.value.find(e=>e.$id===t.$id)){let e=s.getArrayStatus(k.value,t.$id);return e?(e.$value=o,e):null}else{let{scope:t,unwrapped:l}=U(r.value.$each,o,n);t&&O.push(t);let u=f(d?.value??{},`$each`),h=e(()=>p?.value?.$each??[]);return ve({$id:k.value,path:a,cachePath:a,customMessages:i,rules:l??{},stateValue:o,index:n,options:c,storage:s,externalErrors:u,schemaErrors:h,initialState:f(g.value??[],n),originalState:y,shortcuts:b,fieldName:x,schemaMode:m,overrides:S})||null}}).filter(e=>!!e),t.filter(e=>!n.value?.find(t=>e.$id===t.$id)).forEach((e,t)=>{s.deleteArrayStatus(k.value,t.toString())})}else I.value=[]}function z(){N=_(n,()=>{P?.(),n.value!=null&&!Object.hasOwn(n.value,`$id`)&&!k.value?L():R(),B()},{deep:ee?1:!0,flush:`pre`}),B()}function B(){P=_(n,()=>{w.$autoDirty.value&&!w.$silent.value&&F.value.$touch(!1,!0)},{flush:`post`})}function V(){z(),C=t(),w=C.run(()=>{let r=e({get:()=>n.value,set(e){N?.(),P?.(),n.value=e,z()}}),i=e(()=>F.value.$dirty&&(!I.value.length||I.value.every(e=>e.$dirty))),o=e(()=>F.value.$anyDirty||I.value.some(e=>e.$anyDirty)),s=e(()=>F.value.$invalid||I.value.some(e=>e.$invalid)),d=e(()=>(m?F.value.$correct:D(F.value.$rules)?!0:F.value.$correct)&&(!I.value.length||I.value.every(e=>e.$correct||e.$anyDirty&&!e.$invalid))),f=e(()=>F.value.$error||I.value.some(e=>e.$error)),p=e(()=>!(s.value||_.value)),_=e(()=>F.value.$pending||I.value.some(e=>e.$pending)),S=e(()=>!!I.value.length&&I.value.every(e=>e.$edited)),C=e(()=>F.value.$anyEdited||I.value.some(e=>e.$anyEdited)),w=e(()=>({$self:F.value.$issues,$each:I.value.map(e=>e.$issues)})),T=e(()=>({$self:F.value.$errors,$each:I.value.map(e=>e.$errors)})),E=e(()=>({$self:F.value.$silentErrors,$each:I.value.map(e=>e.$silentErrors)})),k=e(()=>M.value.$rewardEarly==null?h(c.rewardEarly)==null?!1:h(c.rewardEarly):M.value.$rewardEarly),A=e(()=>k.value?!0:M.value.$silent==null?h(c.silent)==null?!1:h(c.silent):M.value.$silent),j=e(()=>M.value.$autoDirty==null?h(c.autoDirty)==null?!0:h(c.autoDirty):M.value.$autoDirty),L=e(()=>x??c.id??`root`),R=e(()=>({$deepCompare:M.value.$deepCompare??!1,$lazy:M.value.$lazy??!1,$rewardEarly:k.value,$autoDirty:j.value,$silent:A.value,$clearExternalErrorsOnChange:M.value.$clearExternalErrorsOnChange??!1}));function B(){b?.collections&&Object.entries(b?.collections).forEach(([e,c])=>{let m=t();V[e]=m.run(()=>{let e=u();return v(()=>{e.value=c(l({$dirty:i,$error:f,$path:a,$silentValue:r,$pending:_,$invalid:s,$correct:d,$errors:T,$silentErrors:E,$initialValue:g,$originalValue:y,$ready:p,$anyDirty:o,$name:L,$each:I,$self:F,$value:n,$edited:S,$anyEdited:C,$issues:w}))}),e}),O.push(m)})}let V={};return B(),{$dirty:i,$anyDirty:o,$invalid:s,$correct:d,$error:f,$pending:_,$errors:T,$silentErrors:E,$ready:p,$name:L,$shortcuts:V,$silentValue:r,$edited:S,$anyEdited:C,$rewardEarly:k,$silent:A,$autoDirty:j,$issues:w,$modifiers:R}}),E.isPrimitiveArray.value&&r.value.$each&&console.warn(`${a} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`)}function H(){N?.(),F.value&&F.value.$unwatch(),I.value&&I.value.forEach(e=>{`$dirty`in e&&e.$unwatch()}),C.stop(),C=t(),T.stop(),T=t(!0),O.forEach(e=>e.stop()),O=[]}function W(e=!0,t=!1){F.value.$touch(e,t),I.value.forEach(n=>{n.$touch(e,t)})}function G(e,t){if(H(),!t)if(e?.toOriginalState)n.value=A(y),g.value=A(y);else if(e?.toInitialState)n.value=A(g.value);else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,g.value=A(t),n.value=A(t)}else g.value=A(n.value);e?.clearExternalErrors&&Y(),e?.keepValidationState||(F.value.$reset(e,t),I.value.forEach(t=>{t.$reset(e,!0)})),t||L()}function te(){F.value.$abort(),I.value.forEach(e=>{e.$abort()})}async function q(e){e&&(n.value=e);let t=n.value;try{return te(),{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 J(e){e&&(n.value=e);try{return[F.value.$validateSync(e),...I.value.map(e=>e.$validateSync())].every(e=>!!e)}catch{return!1}}function Y(){F.value.$clearExternalErrors(),I.value.forEach(e=>{e.$clearExternalErrors()})}function X(e=!0){let t=I.value.map(t=>{if(ce(t))return t.$extractDirtyFields(e)});return e&&t.every(e=>D(e))&&(t=[]),t}let{$shortcuts:Z,...ne}=w;return l({$self:F,...ne,...Z,$path:a,$each:I,$value:n,$initialValue:g,$originalValue:y,$validate:q,$validateSync:J,$unwatch:H,$watch:V,$touch:W,$reset:G,$abort:te,$extractDirtyFields:X,$clearExternalErrors:Y,"~modifiers":w.$modifiers,...ge(q)})}function be({rulesDef:n,state:r,path:i=``,cachePath:a,rootRules:o,externalErrors:s,schemaErrors:c,rootSchemaErrors:d,validationGroups:p,initialState:m,originalState:g,fieldName:y,...x}){let S=t(),C,w=[],T=null,E=null,O=null,k=null,j=u(void 0);async function M(t=!0){let o=Object.entries(n.value).filter(([e])=>e!==`$self`),l=Object.fromEntries(o.reduce((t,[n,o])=>{if(!o)return t;let l=f(r.value??{},n),u=f(()=>o),d=f(s?.value??{},n),p=e(()=>c?.value?.[n]),h=f(m?.value??{},n);return t.push([n,xe({state:l,rulesDef:u,path:i?`${i}.${n}`:n,cachePath:a?`${a}.${n}`:n,externalErrors:d,schemaErrors:p,initialState:h,originalState:g?.[n],fieldName:n,...x})]),t},[])),u=Object.fromEntries(Object.entries(h(s)??{}).filter(([e,t])=>!(e in n.value)&&!!t).map(([t])=>{let n=f(r.value??{},t),o=f(s?.value??{},t),l=e(()=>c?.value?.[t]),u=f(m?.value??{},t),d=i?`${i}.${t}`:t,p=a?`${a}.${t}`:t;return[t,xe({state:n,rulesDef:e(()=>({})),path:d,cachePath:p,externalErrors:o,schemaErrors:l,initialState:u,originalState:g?.[t],fieldName:t,...x})]})),d=Object.fromEntries(Object.entries(h(c)??{}).map(([t])=>{let n=i?`${i}.${t}`:t,o=a?`${a}.${t}`:t,l=f(r.value??{},t),u=f(s?.value??{},t),d=e(()=>c?.value?.[t]),p=f(m?.value??{},t);return[t,xe({state:l,rulesDef:e(()=>({})),path:n,cachePath:o,externalErrors:u,schemaErrors:d,initialState:p,originalState:g?.[t],fieldName:t,...x})]})),p=Object.fromEntries(Object.entries(r.value??{}).filter(([e])=>!(e in n.value)&&!(e in(u??{}))&&!(e in(d??{}))).map(([t])=>{let n=f(r.value??{},t),o=f(s?.value??{},t),l=e(()=>c?.value?.[t]),u=f(m?.value??{},t);return[t,xe({state:n,rulesDef:e(()=>({})),path:i?`${i}.${t}`:t,cachePath:a?`${a}.${t}`:t,externalErrors:o,schemaErrors:l,initialState:u,originalState:g?.[t],fieldName:t,...x})]}));P.value={...l,...u,...d,...p},t&&L()}function N(){n.value.$self&&(j.value=_e({state:r,rulesDef:e(()=>n.value.$self??{}),path:i,cachePath:a,externalErrors:u(void 0),schemaErrors:u(void 0),initialState:f(m?.value??{},`$self`),originalState:g?.$self,fieldName:`$self`,...x}))}let P=x.storage.getFieldsEntry(a);M(),N();function F(){s&&(O=_(s,()=>{R(),M()},{deep:!0}))}function I(){k=_(r,()=>{R(),M(),C.$autoDirty.value&&!C.$silent.value&&V(!1,!0)},{flush:`post`})}function L(){o&&(T?.(),T=_(o,()=>{R(),M()},{deep:!0,flush:`pre`}),F()),d&&(E?.(),E=_(d,()=>{R(),M()},{deep:!0,flush:`post`})),I(),C=S.run(()=>{let a=e({get:()=>r.value,set(e){R(),r.value=e,M(),C.$autoDirty.value&&!C.$silent.value&&V(!1,!0)}}),o=e({get:()=>r.value,set(e){R(),r.value=e,M()}}),s=e(()=>{let e=P.value,t=Object.keys(e);if(!t.length)return!1;for(let n of t)if(!e[n]?.$dirty)return!1;return!0}),c=e(()=>{let e=P.value;for(let t in e)if(e[t]?.$anyDirty)return!0;return!1}),d=e(()=>{if(j.value?.$invalid)return!0;let e=P.value,t=Object.entries(e);if(!t.length)return!1;for(let[e,n]of t)if(n?.$invalid)return!0;return!1}),f=e(()=>{let e=Object.entries(P.value).reduce((e,[t,n])=>((!le(n)||!n.$inactive)&&e.push([t,n]),e),[]),t=n.value.$self&&!D(n.value.$self);if(e.length||t){let t=j.value?.$correct??!0,n=!1;return n=x.schemaMode?e.every(([e,t])=>t.$correct):e.every(([e,t])=>le(t)?`required`in t.$rules&&t.$rules.required.$active?t.$correct:!t.$invalid&&!t.$pending&&!t.$isDebouncing:t?.$correct),t&&n}return!1}),_=e(()=>{if(j.value?.$error)return!0;let e=P.value;if(!Object.keys(e).length)return!1;for(let t in e)if(e[t]?.$error)return!0;return!1}),b=e(()=>h(x.options.rewardEarly)==null?!1:h(x.options.rewardEarly)),S=e(()=>h(x.options.silent)==null?!!b.value:h(x.options.silent)),T=e(()=>h(x.options.autoDirty)==null?!0:h(x.options.autoDirty)),E=e(()=>!(d.value||k.value)),O=u(!1),k=e(()=>{if(j.value?.$pending||O.value)return!0;let e=P.value;for(let t in e)if(e[t]?.$pending)return!0;return!1}),A=e(()=>{let e={...j.value&&{$self:j.value?.$issues??[]}};for(let t in P.value)e[t]=P.value[t]?.$issues;return e}),N=e(()=>{let e={...j.value&&{$self:j.value?.$errors??[]}};for(let t in P.value)e[t]=P.value[t]?.$errors;return e}),F=e(()=>{let e={...j.value&&{$self:j.value?.$silentErrors??[]}};for(let t in P.value)e[t]=P.value[t]?.$silentErrors;return e}),I=e(()=>{if(j.value?.$edited)return!0;if(!Object.keys(P.value).length)return!1;for(let e in P.value)if(!P.value[e]?.$edited)return!1;return!0}),L=e(()=>{if(j.value?.$anyEdited)return!0;for(let e in P.value)if(P.value[e]?.$anyEdited)return!0;return!1}),z=e(()=>y??x.options.id??`root`),B=e(()=>({autoDirty:T.value,lazy:h(x.options.lazy)??!1,rewardEarly:b.value,silent:S.value,clearExternalErrorsOnChange:h(x.options.clearExternalErrorsOnChange)??!1,id:h(x.options.id)}));function H(){x.shortcuts?.nested&&Object.entries(x.shortcuts.nested).forEach(([e,n])=>{let a=t();W[e]=a.run(()=>{let e=u();return v(()=>{e.value=n(l({$dirty:s,$path:i,$value:r,$silentValue:o,$error:_,$originalValue:g,$pending:k,$invalid:d,$correct:f,$ready:E,$anyDirty:c,$name:z,$silentErrors:F,$initialValue:m,$errors:N,$fields:P,$edited:I,$anyEdited:L,$issues:A,$self:j,"~modifiers":h(x.options)}))}),e}),w.push(a)})}let U=e({get:()=>p?Object.fromEntries(Object.entries(p?.(P.value)??{}).map(([e,t])=>t.length?[e,{...Object.fromEntries([`$invalid`,`$error`,`$pending`,`$dirty`,`$correct`].map(e=>[e,Y(t,e)])),...Object.fromEntries([`$errors`,`$silentErrors`].map(e=>[e,X(t,e)]))}]:[])):{},set(){}}),W={};return H(),{$dirty:s,$anyDirty:c,$invalid:d,$correct:f,$error:_,$pending:k,$issues:A,$errors:N,$silentErrors:F,$ready:E,$name:z,$shortcuts:W,$groups:U,$silentValue:o,$edited:I,$anyEdited:L,$localPending:O,$autoDirty:T,$silent:S,$value:a,$modifiers:B}})}function R(){if(T?.(),O?.(),k?.(),E?.(),w=[],C={},P.value)for(let e of Object.values(P.value))e?.$unwatch()}function z(){let e=P.value;for(let t of Object.values(e))t.$clearExternalErrors();j.value?.$clearExternalErrors()}function B(e,t){if(O?.(),R(),!t)if(e?.toOriginalState)r.value=A({...g}),m.value=A({...g});else if(e?.toInitialState)r.value=A({...m.value});else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,m.value=A(t),r.value=A(t)}else m.value=A(r.value);if(!e?.keepValidationState){for(let t of Object.values(P.value))t?.$reset(e,!0);j.value?.$reset(e,!0)}e?.clearExternalErrors&&z(),F(),t||M()}function V(e=!0,t=!1){for(let n of Object.values(P.value))n?.$touch(e,t);j.value?.$touch(e,t)}function H(e){return e.filter(([e,t])=>b(t)&&!se(t)?!(t&&typeof t==`object`&&`_null`in t)&&!D(t):Array.isArray(t)?t.length:!0)}function U(e=!0){let t=Object.entries(P.value).map(([t,n])=>[t,n.$extractDirtyFields(e)]);return e&&(t=H(t)),Object.fromEntries(t)}function W(){for(let e of Object.values(P.value))e.$abort();j.value?.$abort()}async function G(e){try{if(e&&(r.value=e),x.schemaMode)return x.onValidate?(V(!1),C.$localPending.value=!0,x.onValidate()):{valid:!1,data:r.value,errors:C.$errors.value,issues:C.$issues.value};{let e=r.value;W();let t=[...Object.values(P.value).map(e=>e.$validate()),...j.value?[j.value?.$validate()]:[]];return{valid:(await Promise.allSettled(t)).every(e=>e.status===`fulfilled`&&e?.value?.valid===!0),data:e,errors:C.$errors.value,issues:C.$issues.value}}}catch{return{valid:!1,data:r.value,errors:C.$errors.value,issues:C.$issues.value}}finally{C.$localPending.value=!1}}function ee(e){try{return e&&(r.value=e),[...Object.values(P.value).map(e=>e.$validateSync()),...j.value?[j.value?.$validateSync()]:[]].every(e=>!!e)}catch{return!1}}let{$shortcuts:te,$localPending:K,...q}=C,J=l({...q,...te,$path:i,$initialValue:m,$originalValue:g,$self:j,$fields:P,$reset:B,$touch:V,$validate:G,$unwatch:R,$watch:L,$clearExternalErrors:z,$extractDirtyFields:U,$abort:W,$validateSync:ee,...o?{"~modifiers":C.$modifiers}:{},...ge(G)});return v(()=>{for(let e of Object.keys(J).filter(e=>!e.startsWith(`$`)&&!e.startsWith(`~`)))delete J[e];for(let e of Object.values(P.value))e?.$name&&Object.assign(J,{[e.$name]:e})}),J}function xe({rulesDef:e,...n}){if(ie(e,n.state))return ye({rulesDef:e,...n});if(re(n.state,e)){if(H(n.state))return be({rulesDef:e,...n});{let r=t().run(()=>{let e=f(n.state.value?n.state:u({}));return _(()=>n.state.value,t=>{e.value=t},{deep:!0}),_(e,e=>{n.state.value=e},{deep:!0}),{fakeState:e}}),{state:i,...a}=n;return be({rulesDef:e,...a,state:r.fakeState})}}else if(ae(e))return _e({rulesDef:i(e.value)?e.value:e,...n})}var Se=`1.18.3`;function Ce({initialState:e,originalState:t,options:n,scopeRules:i,state:a,customRules:o,shortcuts:s,schemaErrors:d,schemaMode:f=!1,onValidate:p,overrides:m}){let h=Z(),g=u(),v=u(),y,b;function x(){y=_(()=>n.externalErrors?.value,()=>{b?.(),n.externalErrors?.value&&Object.keys(n.externalErrors.value).some(e=>e.includes(`.`))?v.value=C(n.externalErrors.value):v.value=n.externalErrors?.value,S()},{immediate:!0,deep:!0})}function S(){b=_(()=>v.value,()=>{y?.(),n.externalErrors?.value&&(n.externalErrors.value=v.value),x()},{deep:!0})}return x(),re(a,i)?g.value=be({rootRules:i,rulesDef:i,state:a,customMessages:o?.(),storage:h,options:n,externalErrors:v,validationGroups:n.validationGroups,initialState:e,originalState:t,shortcuts:s,fieldName:void 0,path:``,cachePath:``,schemaErrors:d,rootSchemaErrors:d,schemaMode:f,onValidate:p,overrides:m}):ae(i)&&(g.value=_e({rulesDef:i,state:a,customMessages:o?.(),storage:h,options:n,externalErrors:v,initialState:e,originalState:t,shortcuts:s,fieldName:void 0,path:``,cachePath:``,schemaMode:f,schemaErrors:d,onValidate:p,overrides:m})),r()&&c(()=>{g.value?.$unwatch(),b?.(),y?.()}),l({regle:g})}function we({state:t,rulesFactory:n,options:r,globalOptions:a,customRules:o,shortcuts:s,overrides:c}){let l=i(n)?n:typeof n==`function`?void 0:e(()=>n),f={...a,...r},p,h=d(l??{});typeof n==`function`&&(p=v(()=>{h.value=n(t),m(h)}));let g=u(b(t.value)?{...A(t.value)}:A(t.value)),_=b(t.value)?{...A(t.value)}:A(t.value);return q(()=>{p?.()}),Ce({scopeRules:h,state:t,options:f,initialState:g,originalState:_,customRules:o,shortcuts:s,overrides:c})}function Te(e){let{rules:t,modifiers:n,shortcuts:r,overrides:a}=e??{},o={autoDirty:n?.autoDirty,lazy:n?.lazy,rewardEarly:n?.rewardEarly,silent:n?.silent,clearExternalErrorsOnChange:n?.clearExternalErrorsOnChange,immediateDirty:n?.immediateDirty};function s(e,n,s){return{r$:we({state:i(e)?e:u(e),rulesFactory:n,options:s,globalOptions:o,customRules:t,shortcuts:r,overrides:a}).regle}}return s}const Ee=Te();function De(){function e(e,t){return t}return e}const Oe=De();function ke(e,t){return x(h(e).$errors,String(t))}function Ae(e,t){return x(h(e).$issues,String(t))}function je(e){let t={};if(Object.entries(e).some(([e,t])=>$(t)||typeof t==`function`))return null;for(let n in e){let r=e[n];r&&b(r)&&`$each`in r&&r.$each&&b(r.$each)?t[n]=[je(r.$each)]:b(r)&&!D(r)&&!Object.entries(r).some(([e,t])=>$(t)||typeof t==`function`)?t[n]=je(r):t[n]=null}return t}function Me(t){let{rules:n,modifiers:r,shortcuts:a,overrides:o}=t??{},s={autoDirty:r?.autoDirty,lazy:r?.lazy,rewardEarly:r?.rewardEarly,silent:r?.silent,clearExternalErrorsOnChange:r?.clearExternalErrorsOnChange,immediateDirty:r?.immediateDirty};function c(t,r){let c=i(t)?t:typeof t==`function`?void 0:e(()=>t);return we({state:u(je(c?.value)),rulesFactory:c,options:r,globalOptions:s,customRules:n,shortcuts:a,overrides:o}).regle}return c}const Ne=Me();function Pe(e){if(E(e)){let t=e,n=class extends t{constructor(...e){return super(...e),Fe(this)}};return Object.defineProperty(n,`name`,{value:t.name}),Fe(n)}return Fe(e)}function Fe(e){return!w(e,Q.REGLE_STATIC)&&Object.isExtensible(e)&&T(e,Q.REGLE_STATIC,!0),e}function Ie({rules:e,modifiers:t,shortcuts:n,overrides:r}){let i=Te({rules:e,modifiers:t,shortcuts:n,overrides:r}),a=Me({rules:e,modifiers:t,shortcuts:n,overrides:r});return i.__config={rules:e,modifiers:t,shortcuts:n,overrides:r},a.__config={rules:e,modifiers:t,shortcuts:n,overrides:r},{useRegle:i,inferRules:De(),useRules:a}}function Le(e,{rules:t,modifiers:n,shortcuts:r,overrides:i}){let a=e.__config??{},o=()=>({...a.rules?.(),...t?.()}),s=a.modifiers&&n?S(a.modifiers,n):a.modifiers??n,c=a.shortcuts&&r?S(a.shortcuts,r):a.shortcuts??r,l=a.overrides&&i?S(a.overrides,i):a.overrides??i,u=Te({rules:o,modifiers:s,shortcuts:c,overrides:l});return u.__config={rules:o,modifiers:s,shortcuts:c,overrides:l},{useRegle:u,inferRules:De()}}function Re(t,n){let r=n??!1,i=e({get:()=>r?Object.values(t).map(e=>e.$value):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$value])),set:e=>{r||typeof e==`object`&&Object.entries(e).forEach(([e,n])=>t[e].$value=n)}}),a=e({get:()=>Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$silentValue])),set:e=>{typeof e==`object`&&Object.entries(e).forEach(([e,n])=>t[e].$silentValue=n)}}),o=e(()=>{let e=Object.entries(t);return!!e.length&&e.every(([e,t])=>t?.$dirty)}),s=e(()=>Object.entries(t).some(([e,t])=>t?.$anyDirty)),c=e(()=>Object.entries(t).some(([e,t])=>t?.$invalid)),u=e(()=>{let e=Object.entries(t);return!!e.length&&e.every(([e,t])=>t?.$correct||t.$anyDirty&&!t.$invalid)}),d=e(()=>Object.entries(t).some(([e,t])=>t?.$error)),f=e(()=>{let e=Object.entries(t);return!!e.length&&e.every(([e,t])=>t?.$ready)}),p=e(()=>Object.entries(t).some(([e,t])=>t?.$pending)),m=e(()=>r?Object.entries(t).map(([e,t])=>t.$issues):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$issues]))),h=e(()=>r?Object.entries(t).map(([e,t])=>t.$silentIssues):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$silentIssues]))),g=e(()=>r?Object.entries(t).map(([e,t])=>t.$errors):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$errors]))),_=e(()=>r?Object.entries(t).map(([e,t])=>t.$silentErrors):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$silentErrors]))),y=e(()=>{let e=Object.entries(t);return!!e.length&&e.every(([e,t])=>t?.$edited)}),b=e(()=>Object.entries(t).some(([e,t])=>t?.$anyEdited)),x=e(()=>r?Object.values(t):t);function S(e){Object.values(t).forEach(t=>{t.$reset(e)})}function C(){Object.values(t).forEach(e=>{e.$touch()})}function w(e=!0){return Object.values(t).map(t=>t.$extractDirtyFields(e))}function T(){Object.values(t).forEach(e=>{e.$clearExternalErrors()})}async function E(e){try{e&&(i.value=e);let n=i.value;return{valid:(await Promise.allSettled(Object.values(t).map(e=>e.$validate()))).every(e=>e.status===`fulfilled`?e.value.valid===!0:!1),data:n,errors:g.value,issues:m.value}}catch{return{valid:!1,data:i.value,errors:g.value,issues:m.value}}}let D=l({...!r&&{$silentValue:a},$errors:g,$issues:m,$silentIssues:h,$silentErrors:_,$instances:x,$value:i,$dirty:o,$anyDirty:s,$invalid:c,$correct:u,$error:d,$pending:p,$ready:f,$edited:y,$anyEdited:b,$reset:S,$touch:C,$validate:E,$extractDirtyFields:w,$clearExternalErrors:T});return v(()=>{if(!r){for(let e of Object.keys(D).filter(e=>!e.startsWith(`$`)&&!e.startsWith(`~`)))delete D[e];for(let[e,t]of Object.entries(x.value))Object.assign(D,{[e]:t})}}),D}function ze(t,n){function r(r){let i=e(()=>p(r)),a=l({});c();let o=u(d(t.value)),s=l({r$:o});function c(){i.value&&(typeof i.value==`string`&&!t.value[i.value]?t.value[i.value]={}:Array.isArray(i.value)&&i.value.forEach(e=>{t.value[e]||(t.value[e]={})}))}_(i,c),_(t,e=>{o.value=d(e)},{deep:!0});function d(e){return i.value?typeof i.value==`string`?Re(e[i.value]??{},!n.asRecord):(Object.keys(a).forEach(e=>{delete a[e]}),i.value.forEach(t=>{Object.entries(e[t]).forEach(([e,t])=>{Object.assign(a,{[e]:t})})}),Re(a,!n.asRecord)):Re(e[`~~global`]??{},!n.asRecord)}return{r$:s.r$}}return{useCollectScope:r}}function Be(t,r){let i=r??Ee;return{useScopedRegle:((r,a,o)=>{let{namespace:c,scopeKey:l,id:d,...f}=o??{};i.__config??={};let m=e(()=>d??l),h=e(()=>p(c)),g=u(`${Object.keys(t.value).length+1}-${K()}`),v=e(()=>m.value??`instance-${g.value}`),{r$:y}=i(r,a,{...f,id:m.value});x(),q(b),_(h,(e,t)=>{b(t),x()}),n()&&s(()=>{let e=n();typeof window<`u`&&e?.proxy?.$el?.parentElement&&document.documentElement&&!document.documentElement.contains(e?.proxy?.$el?.parentElement)&&b()});function b(e){let n=e??h.value;n?t.value[n]&&delete t.value[n][v.value]:t.value[`~~global`][v.value]&&delete t.value[`~~global`][v.value]}function x(){h.value?(t.value[h.value]||(t.value[h.value]={}),t.value[h.value][v.value]=y):(t.value[`~~global`]||(t.value[`~~global`]={}),t.value[`~~global`][v.value]=y)}return{r$:y,dispose:b,register:x}})}}function Ve(e){let t=(e?.customStore?()=>(e.customStore&&(e.customStore?.value[`~~global`]?e.customStore?.value&&(e.customStore.value={"~~global":{}}):e.customStore.value[`~~global`]={}),e.customStore):J(()=>u({"~~global":{}})))(),{useScopedRegle:n}=Be(t,e?.customUseRegle),{useCollectScope:r}=ze(t,{asRecord:e?.asRecord});return{useScopedRegle:n,useCollectScope:r}}const{useCollectScope:He,useScopedRegle:Ue}=Ve(),We=He,Ge=Ue;function Ke(t,n,r){let i=e(()=>p(t)[n]);return e(()=>r.find(e=>{if(e[n]&&`literal`in e[n]){let t=e[n].literal;if($(t))return h(t._params?.[0])===i.value}})||r.find(e=>b(e[n])&&!Object.keys(e[n]).some(e=>e===`literal`))||{})}function qe(e,t,n){return!!e&&b(e[t])&&`$value`in e[t]&&e[t]?.$value===n}function Je(e,t,n,r){let a=i(e)?f(e.value,`$fields`):f(e,`$fields`),s=u();return _(a,async()=>{await o(),qe(a.value,t,n)?s.value=f(e).value:s.value=void 0},{immediate:!0,flush:`pre`}),s}function Ye(e){return e}function Xe(e,t){return n=>S({...e},t(n))}const Ze={install(e){e.provide(ne,Se)}};export{I as InternalRuleType,Ze as RegleVuePlugin,V as createRule,Ve as createScopedUseRegle,Ke as createVariant,Ie as defineRegleConfig,Ye as defineRules,Le as extendRegleConfig,pe as flatErrors,ke as getErrors,Ae as getIssues,Oe as inferRules,Pe as markStatic,Re as mergeRegles,qe as narrowVariant,Xe as refineRules,L as unwrapRuleParameters,We as useCollectScope,Ee as useRegle,Ce as useRootStorage,Ne as useRules,Ge as useScopedRegle,Je as variantToRef};
|
|
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`)for(let r in n=Array.isArray(e)?[]:{},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}}const L={Inline:`__inline`,Async:`__async`};function R(e){try{return e.map(e=>m(e))}catch{return[]}}function z(t){return t.map(t=>t instanceof Function?e(t):a(t)?t:p(()=>t))}function B(e){let t=e.toString().replace(/\/\/.*$/gm,``).replace(/\/\*[\s\S]*?\*\//g,``).match(/^(?:async\s*)?(?:function\b.*?\(|\((.*?)\)|(\w+))\s*=>|\((.*?)\)\s*=>|function.*?\((.*?)\)|\((.*?)\)/);return t?(t[0]||t[1]||t[2]||t[3]||t[4]||``).split(`,`).map(e=>e.trim()).filter(e=>e.length>0).length:0}function V(e,...t){let{validator:n,type:r,async:i}=e,a=i||r===L.Async||n.constructor.name===`AsyncFunction`;return o({validator(n,...r){return e.validator(n,...R(r.length?r:t))},message(n){return typeof e.message==`function`?e.message({...n,$params:R(n?.$params?.length?n.$params:t)}):e.message},active(n){return typeof e.active==`function`?e.active({...n,$params:R(n?.$params?.length?n.$params:t)}):e.active??!0},tooltip(n){return typeof e.tooltip==`function`?e.tooltip({...n,$params:R(n?.$params?.length?n.$params:t)}):e.tooltip??[]},exec(n){let r=e.validator(n,...R(t)),i;return r instanceof Promise?r.then(e=>(i=e,typeof i==`object`&&`$valid`in i?i.$valid:typeof i==`boolean`?i:!1)):(i=r,typeof i==`object`&&`$valid`in i?i.$valid:typeof i==`boolean`?i:!1)},type:r,_validator:e.validator,_message:e.message,_active:e.active,_tooltip:e.tooltip,_type:e.type,_message_patched:!1,_tooltip_patched:!1,_async:a,_params:z(t),_brand:k})}function H(e){if(typeof e.validator==`function`){let t=[],n=e.async??e.validator.constructor.name===`AsyncFunction`,r=V({...e,async:n},...t);if(B(e.validator)>1){let t=function(...t){return V(e,...t)};return t.validator=r.validator,t.message=r.message,t.active=r.active,t.tooltip=r.tooltip,t.type=r.type,t.exec=r.exec,t._validator=r.validator,t._message=r.message,t._active=r.active,t._tooltip=r.tooltip,t._type=e.type,t._message_pacthed=!1,t._tooltip_pacthed=!1,t._async=n,t}else return r}throw Error(`[createRule] validator must be a function`)}function U(e){return x(e.value)}function W(e,n,r){let i=t(),a;return a=e instanceof Function?i.run(()=>e(n,r??0)):e,{scope:i,unwrapped:a}}const G={LessThan:-1,EqualTo:0,GreaterThan:1};function K(e,t){let n=String(e).split(`.`),r=String(t).split(`.`);for(let e=0;e<Math.min(n.length,r.length);e++){let t=Number(n[e]),i=Number(r[e]);if(t>i)return G.GreaterThan;if(i>t)return G.LessThan;if(!isNaN(t)&&isNaN(i))return G.GreaterThan;if(isNaN(t)&&!isNaN(i))return G.LessThan}return G.EqualTo}const ee=K(_,`3.5.0`)!==-1;function te(){return Math.floor(Math.random()*Date.now()).toString()}function q(){return typeof window>`u`?te():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function J(e){return r()?(l(e),!0):!1}function Y(e){let n=!1,r,i=t(!0);return((...t)=>(n||=(r=i.run(()=>e(...t)),!0),r))}function X(e,t){return e.some(e=>t?e?.[t]:!1)}function Z(e,t){return t?e.reduce((e,n)=>{let r=n?.[t]||[];return e.concat(r)},[]):[]}function ne(){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);function s(e){let n=t.value.get(e);if(n)return n;{let n=d({});return t.value.set(e,n),n}}function c(e){let t=n.value.get(e);if(t)return t;{let t=d([]);return n.value.set(e,t),t}}function u(e,t,n){o.value.set(`${e}-${t}`,n)}function p(e,t){return o.value.get(`${e}-${t}`)}function m(e,t){e&&t!=null&&o.value.delete(`${e}-${t}`)}function h(e,t){i.value.set(e,t)}function g(e){return i.value.get(e)??!1}function _(t,n){e.value.set(t,n)}function v(t,n){let r=e.value.get(t);if(r)return y(n,r)?{valid:!0}:{valid:!1}}function y(e,t){let n=Object.keys(t),r=Object.keys(e);return r.length!==n.length||!r.every(e=>n.includes(e))?!1:r.every(n=>{let r=e[n],i=t[n];return!i||!r||typeof r==`function`||typeof i==`function`||typeof r==`number`||typeof r==`boolean`||typeof r==`string`?!1:r._params?r._params?.every((e,t)=>{if(typeof i==`number`||typeof i==`boolean`||typeof i==`string`)return!0;{let e=R(i._params),n=R(r._params);return e?.[t]===n?.[t]}}):!0})}function b(e){let t=a.value.get(e);if(t)return t;{let t=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(),o.value.clear()}),{addRuleDeclEntry:_,setDirtyEntry:h,checkRuleDeclEntry:v,getDirtyState:g,trySetRuleStatusRef:b,getFieldsEntry:s,getCollectionsEntry:c,getArrayStatus:p,addArrayStatus:u,deleteArrayStatus:m,arrayStatusStorage:o}}const Q=Symbol(`regle`),re=Symbol(`regle-config`),ie={REGLE_STATIC:`__regle_static`};function ae(e,t){return!le(e.value)&&(U(e)||x(t.value)&&!O(t.value)&&!Object.entries(t.value).some(([e,t])=>$(t)||typeof t==`function`))}function oe(e,t){return!!e.value&&x(e.value)&&`$each`in e.value||Array.isArray(t.value)}function se(e){return!!e.value&&(x(e.value)||U(e.value))}function $(e){return(x(e)||typeof e==`function`)&&`_validator`in e}function ce(e){return typeof e.value==`function`?`_validator`in e.value:!0}function le(e){return x(e)&&T(e,ie.REGLE_STATIC)&&e[ie.REGLE_STATIC]===!0}function ue(e){return x(e)&&`$fields`in e}function de(e){return!!e&&`$rules`in e}function fe({field:e,silent:t=!1}){let n=Object.entries(e.$rules??{}).map(([n,r])=>{let i=``;if(t&&!r.$valid)i=r.$message;else if(!r.$valid&&e.$error&&!r.$validating)i=r.$message;else return null;return{$message:i,$property:e.fieldName,$rule:n,$type:r.$type,...typeof r.$metadata==`object`?r.$metadata:{}}}).filter(e=>!!e).reduce((e,t)=>(typeof t.$message==`string`?e.push(t):e.push(...t.$message.map(e=>({...t,$message:e}))),e),[]),r=e.$error&&e.$externalErrors?e.$externalErrors.map(t=>({$message:t,$property:e.fieldName,$rule:`external`,$type:void 0})):[],i=[];return e.$schemaErrors&&e.$error&&(i=!Array.isArray(e.$schemaErrors)&&`$self`in e.$schemaErrors?e.$schemaErrors.$self??[]:e.$schemaErrors??[]),[...n,...r,...i]}function pe({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 me(e){return x(e)&&`$each`in e}function he(e,t){let{includePath:n=!1}=t??{};if(Array.isArray(e)&&e.every(e=>!x(e)))return e;if(me(e)){let t=n?e.$self?.map(e=>({message:e,path:[]}))??[]:e.$self??[],r=e.$each?.map(e=>ge(e,n))??[];return t?.concat(r.flat())}else return Object.entries(e).map(([e,t])=>ge(t,n,[e])).flat()}function ge(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(me(e)){let n=r?.length?e.$self?.map(e=>({message:e,path:r??[]}))??[]:e.$self??[],i=e.$each?.map((e,n)=>ge(e,t,r?.concat(n)))??[];return n?.concat(i.flat())}else return Object.entries(e).map(([e,n])=>ge(n,t,r?.concat(e))).flat()}function _e({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 ce(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),ce(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(()=>ce(r)&&r.value.type?r.value.type:i),x=e(()=>ce(r)?r.value.validator:r.value),S=e(()=>typeof r.value==`function`?[]:R(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:ee?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 ve(e){return{"~standard":{version:1,vendor:`regle`,validate:async t=>{let{valid:n,data:r,errors:i}=await e(t);return n?{value:r,issues:[]}:{issues:he(i,{includePath:!0})}}}}}function ye({state:n,rulesDef:r,customMessages:i,path:a,cachePath:o,fieldName:s,storage:c,options:l,externalErrors:f,schemaErrors:m,schemaMode:h,onUnwatch:_,$isArray:b,initialState:S,originalState:C,shortcuts:w,overrides:T,onValidate:E}){let D=t(),k,A=[],F,L,R,z,B=()=>{},V,H=()=>{},U=d(!1);function W(){let e=r.value,t=c.checkRuleDeclEntry(o,e),s={};for(let t in e)t.startsWith(`$`)&&(s[t]=e[t]);Z.value=s,q();let l=r.value,u=[];for(let e in l){if(e.startsWith(`$`)||e.startsWith(`~`))continue;let t=l[e];if(!t)continue;let r=p(()=>t);u.push([e,_e({modifiers:{$silent:k.$silent,$rewardEarly:k.$rewardEarly},customMessages:i,rule:r,ruleKey:e,state:n,path:a,cachePath:o,storage:c,$debounce:Z.value.$debounce})])}X.value=Object.fromEntries(u),k.processShortcuts(),G(),K(),t?.valid!=null&&(k.$dirty.value=c.getDirtyState(o),(k.$dirty.value&&!k.$silent.value||k.$rewardEarly.value&&k.$error.value)&&B()),c.addRuleDeclEntry(o,e)}function G(){B=k.$debounce.value>0?N(Y,k.$debounce.value,{trackDebounceRef:U}):Y}function K(){H=k.$debounce.value>0?N(()=>{k.$dirty.value=!0},k.$debounce.value):()=>{k.$dirty.value=!0}}function te(){if(X.value)for(let e of Object.values(X.value))e.$unwatch();L(),z?.(),k.$dirty.value&&c.setDirtyEntry(o,k.$dirty.value),F?.(),D.stop(),D=t();for(let e of A)e.stop();A=[],_?.(),R?.()}function q(){if(X.value)for(let e of Object.values(X.value))e.$watch();k=D.run(()=>{let i=d(!1),a=d(!1),o=e(()=>i.value),c=e(()=>b||le(n.value)),p=e(()=>Z.value.$debounce==null?k.$haveAnyAsyncRule.value?200:0:Z.value.$debounce),_=e(()=>Z.value.$deepCompare==null?!1:Z.value.$deepCompare),v=e(()=>Z.value.$lazy==null?g(l.lazy)==null?!1:g(l.lazy)===!0:Z.value.$lazy),x=e(()=>Z.value.$immediateDirty==null?g(l.immediateDirty)==null?!1:g(l.immediateDirty)===!0:Z.value.$immediateDirty),C=e(()=>Z.value.$rewardEarly==null?g(l.rewardEarly)==null?!1:g(l.rewardEarly)===!0:!!Z.value.$rewardEarly),E=e(()=>Z.value.$clearExternalErrorsOnChange==null?g(l.clearExternalErrorsOnChange)==null?!D.value:g(l.clearExternalErrorsOnChange)===!0:!!Z.value.$clearExternalErrorsOnChange),D=e(()=>C.value?!0:Z.value.$silent==null?g(l.silent)==null?!1:g(l.silent)===!0:Z.value.$silent),j=e(()=>Z.value.$autoDirty==null?g(l.autoDirty)==null?!0:g(l.autoDirty)===!0:Z.value.$autoDirty),N=e(()=>{if(Z.value.$isEdited!=null)return Z.value.$isEdited;if(T?.isEdited!=null)return T.isEdited}),I=e(()=>{for(let e of Object.values(X.value))if(e.$validating)return!0;return!1}),L=e({get:()=>n.value,set(e){F(),n.value=e,J()}}),R=e(()=>U.value?Y.value&&i.value:Y.value&&!q.value&&i.value),z=e(()=>fe({field:{$rules:X.value,$error:R.value,$externalErrors:f?.value,$schemaErrors:m?.value,fieldName:ne.value}})),B=e(()=>fe({field:{$rules:X.value,$error:R.value,$externalErrors:f?.value,$schemaErrors:m?.value,fieldName:ne.value},silent:!0})),V=e(()=>z.value.map(e=>e.$message)),H=e(()=>B.value.map(e=>e.$message)),W=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,Z.value.$deepCompare):t!==e}y(()=>{i.value?N.value?W.value=N.value(n.value,S.value,G):W.value=G(n.value,S.value):W.value=!1});let K=e(()=>W.value),ee=e(()=>pe({field:{$rules:X.value}})),te=e(()=>!(Y.value||q.value)),q=e(()=>a.value||!C.value?Object.entries(X.value).some(([e,t])=>t.$pending):!1),Y=e(()=>f?.value?.length||m?.value?.length?!0:Q.value?!1:Object.values(X.value).some(e=>!e.$valid||e.$maybePending)),ne=e(()=>s??l.id??`root`),Q=e(()=>!h&&!Object.keys(r.value).some(e=>!e.startsWith(`$`))),re=e(()=>{if(f?.value?.length||Q.value||U.value)return!1;if(i.value&&!O(n.value)&&!I.value&&!q.value){if(h)return!m?.value?.length;{let e=Object.values(X.value);for(let t of e)if(t.$active&&!t.$valid)return!1;return e.some(e=>e.$active)}}return!1}),ie=e(()=>Object.values(X.value).some(e=>e.$haveAsync)),ae=e(()=>({$debounce:p.value,$lazy:v.value,$rewardEarly:C.value,$autoDirty:j.value,$silent:D.value,$clearExternalErrorsOnChange:E.value,$immediateDirty:x.value,$isEdited:N.value}));function oe(){w?.fields&&Object.entries(w.fields).forEach(([e,r])=>{let a=t();se[e]=a.run(()=>{let e=d();return y(()=>{e.value=r(u({$dirty:i,$externalErrors:f?.value??[],$value:n,$silentValue:L,$rules:X,$error:R,$pending:q,$invalid:Y,$correct:re,$errors:V,$ready:te,$silentErrors:H,$anyDirty:o,$tooltips:ee,$name:ne,$inactive:Q,$edited:W,$anyEdited:K}))}),e}),A.push(a)})}let se={};return{$error:R,$pending:q,$invalid:Y,$correct:re,$debounce:p,$deepCompare:_,$lazy:v,$immediateDirty:x,$ready:te,$issues:z,$silentIssues:B,$errors:V,$silentErrors:H,$rewardEarly:C,$autoDirty:j,$silent:D,$clearExternalErrorsOnChange:E,$anyDirty:o,$edited:W,$anyEdited:K,$name:ne,$haveAnyAsyncRule:ie,$shortcuts:se,$validating:I,$tooltips:ee,$dirty:i,processShortcuts:oe,$silentValue:L,$inactive:Q,$modifiers:ae,$isArrayOrRegleStatic:c}}),J(),L=v(k.$dirty,e=>{c.setDirtyEntry(o,e),Object.values(X.value).forEach(t=>{t.$fieldDirty=e})}),z=v([k.$error,k.$correct,k.$invalid,k.$pending],()=>{Object.values(X.value).forEach(e=>{e.$fieldError=k.$error.value,e.$fieldInvalid=k.$invalid.value,e.$fieldPending=k.$pending.value,e.$fieldCorrect=k.$correct.value})}),R=v(k.$haveAnyAsyncRule,G)}function J(){F=v(n,()=>{k.$autoDirty.value&&!k.$silent.value&&(k.$dirty.value||H()),r.value instanceof Function&&W(),(!k.$silent.value||k.$rewardEarly.value&&k.$error.value)&&B(),k.$clearExternalErrorsOnChange.value&&ce()},{deep:k.$isArrayOrRegleStatic.value?!0:ee?1:!0})}async function Y(){try{let{promise:e}=re(Promise.allSettled(Object.values(X.value).map(e=>e.$parse())));await e}catch{}}let X=d({}),Z=d({});W();function ne(e,t){if(Q(),ce(),k.$dirty.value=!1,c.setDirtyEntry(o,!1),!t)if(e?.toOriginalState)n.value=j(C),S.value=j(C);else if(e?.toInitialState)n.value=j(S.value);else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,S.value=j(t),n.value=j(t)}else S.value=x(n.value)&&!le(n.value)?j(n.value):Array.isArray(n.value)?[...n.value]:n.value;if(e?.clearExternalErrors&&ce(),!t&&!e?.keepValidationState)for(let e of Object.values(X.value))e.$reset();if(!k.$lazy.value&&!k.$silent.value&&!t)for(let e of Object.values(X.value))e.$parse()}function Q(){`cancel`in B&&B.cancel()}function re(e){return V&&V.abort(),V=I(e),V}function ie(){Q(),V&&V.abort()}function ae(e=!0,t=!1){k.$dirty.value||H(),t&&e?(!k.$silent.value||k.$rewardEarly.value&&k.$error.value)&&(Q(),B()):e&&(Q(),B())}async function oe(e){try{if(e&&(n.value=e),h)return E?(ae(!1),E()):{valid:!1,data:n.value,errors:k.$errors.value,issues:k.$issues.value};let t=n.value;if(!k.$dirty.value)k.$dirty.value=!0;else if(!k.$silent.value&&k.$dirty.value&&!k.$pending.value&&!U.value&&!k.$haveAnyAsyncRule.value)return{valid:!k.$error.value,data:t,errors:k.$errors.value,issues:k.$issues.value};if(h)return{valid:!m?.value?.length,data:t,errors:k.$errors.value,issues:k.$issues.value};if(O(X.value))return{valid:!0,data:t,errors:k.$errors.value,issues:k.$issues.value};ie();let{promise:r}=re(Promise.allSettled(Object.values(X.value).map(e=>e.$parse())));return{valid:(await r).every(e=>e.status===`fulfilled`&&e.value===!0),data:t,errors:k.$errors.value,issues:k.$issues.value}}catch{return{valid:!1,data:n.value,errors:k.$errors.value,issues:k.$issues.value}}}function se(e){try{return e&&(n.value=e),k.$dirty.value||(k.$dirty.value=!0),h?!1:Object.values(X.value).map(e=>e.$parseSync()).every(e=>!!e)}catch{return!1}}function $(e=!0){return k.$dirty.value?n.value:e?{_null:!0}:null}function ce(){f?.value?.length&&(f.value=[])}!k.$lazy.value&&!k.$dirty.value&&!k.$silent.value&&Y(),k.$immediateDirty.value&&(k.$dirty.value=!0);let{$shortcuts:ue,$validating:de,$autoDirty:me,$rewardEarly:he,$clearExternalErrorsOnChange:ge,$haveAnyAsyncRule:ye,$debounce:be,$lazy:xe,...Se}=k;return u({...Se,$externalErrors:f,$value:n,$initialValue:S,$originalValue:C,$rules:X,...ue,$path:a,$isDebouncing:U,$reset:ne,$touch:ae,$validate:oe,$validateSync:se,$unwatch:te,$watch:q,$extractDirtyFields:$,$clearExternalErrors:ce,$abort:ie,$schemaMode:h,"~modifiers":k.$modifiers,...ve(oe)})}function be({$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??q(),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=Ce({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)||le(s.value))&&_&&T?.$touch(),T}function xe({state:n,rulesDef:r,customMessages:i,path:a,cachePath:o,storage:s,options:c,externalErrors:l,schemaErrors:f,schemaMode:m,initialState:h,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=q(),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||m)?I.value=n.value.map((t,n)=>{let{scope:u,unwrapped:d}=W(r.value.$each,p(()=>t),n);u&&D.push(u);let g=p(h.value??[],n),v=p(l?.value??{},`$each`),y=e(()=>f?.value?.$each);return be({$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:g,originalState:_,shortcuts:b,fieldName:x,schemaMode:m,overrides:S})||null}).filter(e=>!!e):I.value=[],F.value=ye({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:h,originalState:_,shortcuts:b,fieldName:x,schemaMode:m,overrides:S})}function R(){if(Array.isArray(n.value)&&(!E.isPrimitiveArray.value||m)){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}=W(r.value.$each,o,n);t&&D.push(t);let d=p(l?.value??{},`$each`),g=e(()=>f?.value?.$each??[]);return be({$id:k.value,path:a,cachePath:a,customMessages:i,rules:u??{},stateValue:o,index:n,options:c,storage:s,externalErrors:d,schemaErrors:g,initialState:p(h.value??[],n),originalState:_,shortcuts:b,fieldName:x,schemaMode:m,overrides:S})||null}}).filter(e=>!!e),t.filter(e=>!n.value?.find(t=>e.$id===t.$id)).forEach((e,t)=>{s.deleteArrayStatus(k.value,t.toString())})}else I.value=[]}function z(){N=v(n,()=>{P?.(),n.value!=null&&!Object.hasOwn(n.value,`$id`)&&!k.value?L():R(),B()},{deep:ee?1:!0,flush:`pre`}),B()}function B(){P=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(()=>(m?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?g(c.rewardEarly)==null?!1:g(c.rewardEarly)===!0:M.value.$rewardEarly),j=e(()=>A.value?!0:M.value.$silent==null?g(c.silent)==null?!1:g(c.silent)===!0:M.value.$silent),L=e(()=>M.value.$autoDirty==null?g(c.autoDirty)==null?!0:g(c.autoDirty)===!0:M.value.$autoDirty),R=e(()=>M.value.$immediateDirty==null?g(c.immediateDirty)==null?!1:g(c.immediateDirty)===!0:M.value.$immediateDirty),B=e(()=>{if(M.value.$isEdited!=null)return M.value.$isEdited;if(S?.isEdited!=null)return S.isEdited}),V=e(()=>x??c.id??`root`),H=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:M.value.$clearExternalErrorsOnChange??!1,$immediateDirty:R.value,$isEdited:B.value}));function U(){b?.collections&&Object.entries(b?.collections).forEach(([e,c])=>{let m=t();W[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:h,$originalValue:_,$ready:p,$anyDirty:o,$name:V,$each:I,$self:F,$value:n,$edited:C,$anyEdited:w,$issues:T}))}),e}),D.push(m)})}let W={};return U(),{$dirty:i,$anyDirty:o,$invalid:s,$correct:l,$error:f,$pending:v,$errors:E,$silentErrors:k,$ready:p,$name:V,$shortcuts:W,$silentValue:r,$edited:C,$anyEdited:w,$rewardEarly:A,$silent:j,$autoDirty:L,$issues:T,$modifiers:H}}),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 G(e,t){if(H(),!t)if(e?.toOriginalState)n.value=j(_),h.value=j(_);else if(e?.toInitialState)n.value=j(h.value);else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,h.value=j(t),n.value=j(t)}else h.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 K(){F.value.$abort(),I.value.forEach(e=>{e.$abort()})}async function te(e){e&&(n.value=e);let t=n.value;try{return K(),{valid:(await Promise.allSettled([F.value.$validate(e),...I.value.map(e=>e.$validate())])).every(e=>e.status===`fulfilled`?e.value.valid===!0:!1),data:t,errors:w.$errors.value,issues:w.$issues.value}}catch{return{valid:!1,data:t,errors:w.$errors.value,issues:w.$issues.value}}}function J(e){e&&(n.value=e);try{return[F.value.$validateSync(e),...I.value.map(e=>e.$validateSync())].every(e=>!!e)}catch{return!1}}function Y(){F.value.$clearExternalErrors(),I.value.forEach(e=>{e.$clearExternalErrors()})}function X(e=!0){let t=I.value.map(t=>{if(ue(t))return t.$extractDirtyFields(e)});return e&&t.every(e=>O(e))&&(t=[]),t}let{$shortcuts:Z,...ne}=w;return u({$self:F,...ne,...Z,$path:a,$each:I,$value:n,$initialValue:h,$originalValue:_,$validate:te,$validateSync:J,$unwatch:H,$watch:V,$touch:U,$reset:G,$abort:K,$extractDirtyFields:X,$clearExternalErrors:Y,"~modifiers":w.$modifiers,...ve(te)})}function Se({rulesDef:n,state:r,path:i=``,cachePath:a,rootRules:o,externalErrors:s,schemaErrors:c,rootSchemaErrors:l,validationGroups:f,initialState:m,originalState:h,fieldName:_,...b}){let S=t(),C,w=[],T=null,E=null,D=null,k=null,A=d(void 0);async function M(t=!0){let o=Object.entries(n.value).filter(([e])=>e!==`$self`),l=Object.fromEntries(o.reduce((t,[n,o])=>{if(!o)return t;let l=p(r.value??{},n),u=p(()=>o),d=p(s?.value??{},n),f=e(()=>c?.value?.[n]),g=p(m?.value??{},n);return t.push([n,Ce({state:l,rulesDef:u,path:i?`${i}.${n}`:n,cachePath:a?`${a}.${n}`:n,externalErrors:d,schemaErrors:f,initialState:g,originalState:h?.[n],fieldName:n,...b})]),t},[])),u=Object.fromEntries(Object.entries(g(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(m?.value??{},t),d=i?`${i}.${t}`:t,f=a?`${a}.${t}`:t;return[t,Ce({state:n,rulesDef:e(()=>({})),path:d,cachePath:f,externalErrors:o,schemaErrors:l,initialState:u,originalState:h?.[t],fieldName:t,...b})]})),d=Object.fromEntries(Object.entries(g(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(m?.value??{},t);return[t,Ce({state:l,rulesDef:e(()=>({})),path:n,cachePath:o,externalErrors:u,schemaErrors:d,initialState:f,originalState:h?.[t],fieldName:t,...b})]})),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(m?.value??{},t);return[t,Ce({state:n,rulesDef:e(()=>({})),path:i?`${i}.${t}`:t,cachePath:a?`${a}.${t}`:t,externalErrors:o,schemaErrors:l,initialState:u,originalState:h?.[t],fieldName:t,...b})]}));P.value={...l,...u,...d,...f},t&&L()}function N(){n.value.$self&&(A.value=ye({state:r,rulesDef:e(()=>n.value.$self??{}),path:i,cachePath:a,externalErrors:d(void 0),schemaErrors:d(void 0),initialState:p(m?.value??{},`$self`),originalState:h?.$self,fieldName:`$self`,...b}))}let P=b.storage.getFieldsEntry(a);M(),N();function F(){s&&(D=v(s,()=>{R(),M()},{deep:!0}))}function I(){k=v(r,()=>{R(),M(),C.$autoDirty.value&&!C.$silent.value&&V(!1,!0)},{flush:`post`})}function L(){o&&(T?.(),T=v(o,()=>{R(),M()},{deep:!0,flush:`pre`}),F()),l&&(E?.(),E=v(l,()=>{R(),M()},{deep:!0,flush:`post`})),I(),C=S.run(()=>{let a=e({get:()=>r.value,set(e){R(),r.value=e,M(),C.$autoDirty.value&&!C.$silent.value&&V(!1,!0)}}),o=e({get:()=>r.value,set(e){R(),r.value=e,M()}}),s=e(()=>{let e=P.value,t=Object.keys(e);if(!t.length)return!1;for(let n of t)if(!e[n]?.$dirty)return!1;return!0}),c=e(()=>{let e=P.value;for(let t in e)if(e[t]?.$anyDirty)return!0;return!1}),l=e(()=>{if(A.value?.$invalid)return!0;let e=P.value,t=Object.entries(e);if(!t.length)return!1;for(let[e,n]of t)if(n?.$invalid)return!0;return!1}),p=e(()=>{let e=Object.entries(P.value).reduce((e,[t,n])=>((!de(n)||!n.$inactive)&&e.push([t,n]),e),[]),t=n.value.$self&&!O(n.value.$self);if(e.length||t){let t=A.value?.$correct??!0,n=!1;return n=b.schemaMode?e.every(([e,t])=>t.$correct):e.every(([e,t])=>de(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(A.value?.$error)return!0;let e=P.value;if(!Object.keys(e).length)return!1;for(let t in e)if(e[t]?.$error)return!0;return!1}),x=e(()=>g(b.options.rewardEarly)==null?!1:g(b.options.rewardEarly)),S=e(()=>g(b.options.silent)==null?!!x.value:g(b.options.silent)===!0),T=e(()=>g(b.options.autoDirty)==null?!0:g(b.options.autoDirty)===!0),E=e(()=>g(b.options.immediateDirty)==null?!1:g(b.options.immediateDirty)===!0),D=e(()=>g(b.options.lazy)==null?!1:g(b.options.lazy)===!0),k=e(()=>g(b.options.clearExternalErrorsOnChange)==null?!1:g(b.options.clearExternalErrorsOnChange)===!0),j=e(()=>!(l.value||F.value)),N=d(!1),F=e(()=>{if(A.value?.$pending||N.value)return!0;let e=P.value;for(let t in e)if(e[t]?.$pending)return!0;return!1}),I=e(()=>{let e={...A.value&&{$self:A.value?.$issues??[]}};for(let t in P.value)e[t]=P.value[t]?.$issues;return e}),L=e(()=>{let e={...A.value&&{$self:A.value?.$errors??[]}};for(let t in P.value)e[t]=P.value[t]?.$errors;return e}),z=e(()=>{let e={...A.value&&{$self:A.value?.$silentErrors??[]}};for(let t in P.value)e[t]=P.value[t]?.$silentErrors;return e}),B=e(()=>{if(A.value?.$edited)return!0;if(!Object.keys(P.value).length)return!1;for(let e in P.value)if(!P.value[e]?.$edited)return!1;return!0}),H=e(()=>{if(A.value?.$anyEdited)return!0;for(let e in P.value)if(P.value[e]?.$anyEdited)return!0;return!1}),U=e(()=>_??b.options.id??`root`),W=e(()=>({autoDirty:T.value,lazy:D.value,rewardEarly:x.value,silent:S.value,clearExternalErrorsOnChange:k.value,immediateDirty:E.value,id:g(b.options.id)}));function G(){b.shortcuts?.nested&&Object.entries(b.shortcuts.nested).forEach(([e,n])=>{let a=t();ee[e]=a.run(()=>{let e=d();return y(()=>{e.value=n(u({$dirty:s,$path:i,$value:r,$silentValue:o,$error:v,$originalValue:h,$pending:F,$invalid:l,$correct:p,$ready:j,$anyDirty:c,$name:U,$silentErrors:z,$initialValue:m,$errors:L,$fields:P,$edited:B,$anyEdited:H,$issues:I,$self:A,"~modifiers":g(b.options)}))}),e}),w.push(a)})}let K=e({get:()=>f?Object.fromEntries(Object.entries(f?.(P.value)??{}).map(([e,t])=>t.length?[e,{...Object.fromEntries([`$invalid`,`$error`,`$pending`,`$dirty`,`$correct`].map(e=>[e,X(t,e)])),...Object.fromEntries([`$errors`,`$silentErrors`].map(e=>[e,Z(t,e)]))}]:[])):{},set(){}}),ee={};return G(),{$dirty:s,$anyDirty:c,$invalid:l,$correct:p,$error:v,$pending:F,$issues:I,$errors:L,$silentErrors:z,$ready:j,$name:U,$shortcuts:ee,$groups:K,$silentValue:o,$edited:B,$anyEdited:H,$localPending:N,$autoDirty:T,$silent:S,$value:a,$modifiers:W}})}function R(){if(T?.(),D?.(),k?.(),E?.(),w=[],C={},P.value)for(let e of Object.values(P.value))e?.$unwatch()}function z(){let e=P.value;for(let t of Object.values(e))t.$clearExternalErrors();A.value?.$clearExternalErrors()}function B(e,t){if(D?.(),R(),!t)if(e?.toOriginalState)r.value=j({...h}),m.value=j({...h});else if(e?.toInitialState)r.value=j({...m.value});else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,m.value=j(t),r.value=j(t)}else m.value=j(r.value);if(!e?.keepValidationState){for(let t of Object.values(P.value))t?.$reset(e,!0);A.value?.$reset(e,!0)}e?.clearExternalErrors&&z(),F(),t||M()}function V(e=!0,t=!1){for(let n of Object.values(P.value))n?.$touch(e,t);A.value?.$touch(e,t)}function H(e){return e.filter(([e,t])=>x(t)&&!le(t)?!(t&&typeof t==`object`&&`_null`in t)&&!O(t):Array.isArray(t)?t.length:!0)}function U(e=!0){let t=Object.entries(P.value).map(([t,n])=>[t,n.$extractDirtyFields(e)]);return e&&(t=H(t)),Object.fromEntries(t)}function W(){for(let e of Object.values(P.value))e.$abort();A.value?.$abort()}async function G(e){try{if(e&&(r.value=e),b.schemaMode)return b.onValidate?(V(!1),C.$localPending.value=!0,b.onValidate()):{valid:!1,data:r.value,errors:C.$errors.value,issues:C.$issues.value};{let e=r.value;W();let t=[...Object.values(P.value).map(e=>e.$validate()),...A.value?[A.value?.$validate()]:[]];return{valid:(await Promise.allSettled(t)).every(e=>e.status===`fulfilled`&&e?.value?.valid===!0),data:e,errors:C.$errors.value,issues:C.$issues.value}}}catch{return{valid:!1,data:r.value,errors:C.$errors.value,issues:C.$issues.value}}finally{C.$localPending.value=!1}}function K(e){try{return e&&(r.value=e),[...Object.values(P.value).map(e=>e.$validateSync()),...A.value?[A.value?.$validateSync()]:[]].every(e=>!!e)}catch{return!1}}let{$shortcuts:ee,$localPending:te,...q}=C,J=u({...q,...ee,$path:i,$initialValue:m,$originalValue:h,$self:A,$externalErrors:s,$fields:P,$reset:B,$touch:V,$validate:G,$unwatch:R,$watch:L,$clearExternalErrors:z,$extractDirtyFields:U,$abort:W,$validateSync:K,...o?{"~modifiers":C.$modifiers}:{},...ve(G)});return y(()=>{for(let e of Object.keys(J).filter(e=>!e.startsWith(`$`)&&!e.startsWith(`~`)))delete J[e];for(let e of Object.values(P.value))e?.$name&&Object.assign(J,{[e.$name]:e})}),J}function Ce({rulesDef:e,...n}){if(oe(e,n.state))return xe({rulesDef:e,...n});if(ae(n.state,e)){if(U(n.state))return Se({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 Se({rulesDef:e,...a,state:r.fakeState})}}else if(se(e))return ye({rulesDef:a(e.value)?e.value:e,...n})}var we=`1.19.0-beta.2`;function Te({initialState:e,originalState:t,options:n,scopeRules:i,state:a,customRules:o,shortcuts:s,schemaErrors:c,schemaMode:f=!1,onValidate:p,overrides:m}){let h=ne(),g=d(),_=d(),y,b;function x(){y=v(()=>n.externalErrors?.value,()=>{b?.(),n.externalErrors?.value&&Object.keys(n.externalErrors.value).some(e=>e.includes(`.`))?_.value=w(n.externalErrors.value):_.value=n.externalErrors?.value,S()},{immediate:!0,deep:!0})}function S(){b=v(()=>_.value,()=>{y?.(),n.externalErrors?.value&&(n.externalErrors.value=_.value),x()},{deep:!0})}return x(),ae(a,i)?g.value=Se({rootRules:i,rulesDef:i,state:a,customMessages:o?.(),storage:h,options:n,externalErrors:_,validationGroups:n.validationGroups,initialState:e,originalState:t,shortcuts:s,fieldName:void 0,path:``,cachePath:``,schemaErrors:c,rootSchemaErrors:c,schemaMode:f,onValidate:p,overrides:m}):se(i)&&(g.value=ye({rulesDef:i,state:a,customMessages:o?.(),storage:h,options:n,externalErrors:_,initialState:e,originalState:t,shortcuts:s,fieldName:void 0,path:``,cachePath:``,schemaMode:f,schemaErrors:c,onValidate:p,overrides:m})),r()&&l(()=>{g.value?.$unwatch(),b?.(),y?.()}),u({regle:g})}function Ee({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(re,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 J(()=>{S?.()}),Te({scopeRules:C,state:t,options:b,initialState:w,originalState:T,customRules:g,shortcuts:_,overrides:v})}function De(e){let{rules:t,modifiers:n={},shortcuts:r,overrides:i}=e??{};function o(e,o,s){return{r$:Ee({state:a(e)?e:d(e),rulesFactory:o,options:s,globalOptions:n,customRules:t,shortcuts:r,overrides:i}).regle}}return o}const Oe=De();function ke(){function e(e,t){return t}return e}const Ae=ke();function je(e,t){return S(g(e).$errors,String(t))}function Me(e,t){return S(g(e).$issues,String(t))}function Ne(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]=[Ne(r.$each)]:x(r)&&!O(r)&&!Object.entries(r).some(([e,t])=>$(t)||typeof t==`function`)?t[n]=Ne(r):t[n]=null}return t}function Pe(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);return Ee({state:d(Ne(c?.value)),rulesFactory:c,options:s,globalOptions:r,customRules:n,shortcuts:i,overrides:o}).regle}return s}const Fe=Pe();function Ie(e){if(D(e)){let t=e,n=class extends t{constructor(...e){return super(...e),Le(this)}};return Object.defineProperty(n,`name`,{value:t.name}),Le(n)}return Le(e)}function Le(e){return!T(e,ie.REGLE_STATIC)&&Object.isExtensible(e)&&E(e,ie.REGLE_STATIC,!0),e}function Re({rules:e,modifiers:t,shortcuts:n,overrides:r}){let i=De({rules:e,modifiers:t,shortcuts:n,overrides:r}),a=Pe({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:ke(),useRules:a}}function ze(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=De({rules:o,modifiers:s,shortcuts:c,overrides:l});return u.__config={rules:o,modifiers:s,shortcuts:c,overrides:l},{useRegle:u,inferRules:ke()}}function Be(e){return e}function Ve(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 He(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`?Ve(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})})}),Ve(a,!n.asRecord)):Ve(e[`~~global`]??{},!n.asRecord)}return{r$:s.r$}}return{useCollectScope:r}}function Ue(t,r){let i=r??Oe;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}-${q()}`),_=e(()=>p.value??`instance-${g.value}`),{r$:y}=i(r,a,{...f,id:p.value});x(),J(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 We(e){let t=(e?.customStore?()=>(e.customStore&&(e.customStore?.value[`~~global`]?e.customStore?.value&&(e.customStore.value={"~~global":{}}):e.customStore.value[`~~global`]={}),e.customStore):Y(()=>d({"~~global":{}})))(),{useScopedRegle:n}=Ue(t,e?.customUseRegle),{useCollectScope:r}=He(t,{asRecord:e?.asRecord});return{useScopedRegle:n,useCollectScope:r}}const{useCollectScope:Ge,useScopedRegle:Ke}=We(),qe=Ge,Je=Ke;function Ye(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 g(t._params?.[0])===i.value}})||r.find(e=>x(e[n])&&!Object.keys(e[n]).some(e=>e===`literal`))||{})}function Xe(e,t,n){return!!e&&t in e&&x(e[t])&&`$value`in e[t]&&e[t]?.$value===n}function Ze(e,t,n,r){let i=a(e)?p(e.value,`$fields`):p(e,`$fields`),o=d();return v(i,async()=>{await s(),Xe(i.value,t,n)?o.value=p(e).value:o.value=void 0},{immediate:!0,flush:`pre`}),o}function Qe(e){return e}function $e(e,t){return n=>C({...e},t(n))}const et={install(e,t){e.provide(Q,we),t&&e.provide(re,t)}};export{L as InternalRuleType,et as RegleVuePlugin,H as createRule,We as createScopedUseRegle,Ye as createVariant,Re as defineRegleConfig,Be as defineRegleOptions,Qe as defineRules,ze as extendRegleConfig,he as flatErrors,je as getErrors,Me as getIssues,Ae as inferRules,Ie as markStatic,Ve as mergeRegles,Xe as narrowVariant,$e as refineRules,R as unwrapRuleParameters,qe as useCollectScope,Oe as useRegle,Te as useRootStorage,Fe as useRules,Je as useScopedRegle,Ze as variantToRef};
|