@regle/core 1.27.2 → 1.28.0
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 +61 -34
- package/dist/regle-core.js +187 -85
- package/dist/regle-core.min.js +2 -2
- package/package.json +7 -7
package/dist/regle-core.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @regle/core v1.
|
|
2
|
+
* @regle/core v1.28.0
|
|
3
3
|
* (c) 2026 Victor Garcia
|
|
4
4
|
* @license MIT
|
|
5
5
|
*/
|
|
@@ -195,7 +195,7 @@ type DefaultValidators = {
|
|
|
195
195
|
url: RegleRuleWithParamsDefinition<unknown, string, [options?: UrlOptions | undefined], false, boolean, unknown, string>;
|
|
196
196
|
};
|
|
197
197
|
interface inferRulesFn<TCustomRules extends Partial<ExtendedRulesDeclarationsOverrides>> {
|
|
198
|
-
<TState extends MaybeRef<Record<string, any> | MaybeInput<PrimitiveTypes>>, TRules extends
|
|
198
|
+
<TState extends MaybeRef<Record<string, any> | MaybeInput<PrimitiveTypes>>, TRules extends ReglePartialRuleTreeInput<Unwrap<TState extends Record<string, any> ? TState : {}>, Partial<ExtendedRulesDeclarations> & TCustomRules>, TDecl extends RegleRuleDeclInput<NonNullable<TState>, Partial<ExtendedRulesDeclarations> & 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;
|
|
199
199
|
}
|
|
200
200
|
/**
|
|
201
201
|
* Type helper to provide autocomplete and type-checking for your form rules.
|
|
@@ -387,7 +387,7 @@ declare function extendRegleConfig<TRootCustomRules extends Partial<ExtendedRule
|
|
|
387
387
|
declare function defineRegleOptions<T extends GlobalConfigOptions<Partial<ExtendedRulesDeclarationsOverrides>, RegleShortcutDefinition<any>>>(options: T): T;
|
|
388
388
|
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 & FieldOnlyRegleBehaviourOptions>> & TAdditionalOptions;
|
|
389
389
|
interface useRegleFn<TCustomRules extends Partial<ExtendedRulesDeclarationsOverrides>, TShortcuts extends RegleShortcutDefinition<any> = never, TAdditionalReturnProperties extends Record<string, any> = {}, TAdditionalOptions extends Record<string, any> = {}> {
|
|
390
|
-
<TState extends MaybeRef<Record<string, any> | MaybeInput<PrimitiveTypes>>, TRules extends
|
|
390
|
+
<TState extends MaybeRef<Record<string, any> | MaybeInput<PrimitiveTypes>>, TRules extends ReglePartialRuleTreeInput<JoinDiscriminatedUnions<Unwrap<TState>>, Partial<ExtendedRulesDeclarations & Omit<TCustomRules, keyof DefaultValidatorsTree>>>, TDecl extends RegleRuleDeclInput<WidenPrimitiveLiterals<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<WidenPrimitiveLiterals<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>;
|
|
391
391
|
__config?: GlobalConfigOptions<TCustomRules, TShortcuts>;
|
|
392
392
|
}
|
|
393
393
|
/**
|
|
@@ -573,7 +573,7 @@ declare function getErrors<TRegle extends SuperCompatibleRegleRoot | SuperCompat
|
|
|
573
573
|
declare function getIssues<TRegle extends SuperCompatibleRegleRoot | SuperCompatibleRegleStatus, TPath extends Paths<TRegle['$issues']>>(r$: MaybeRefOrGetter<TRegle>, path: TPath | (string & {})): IsStringLiteral<TPath> extends true ? Get<TRegle['$issues'], TPath & string> : RegleFieldIssue[] | undefined;
|
|
574
574
|
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>;
|
|
575
575
|
interface useRulesFn<TCustomRules extends Partial<ExtendedRulesDeclarationsOverrides>, TShortcuts extends RegleShortcutDefinition<any> = never> {
|
|
576
|
-
<TRules extends RegleUnknownRulesTree | RegleRuleDecl, TDecl extends
|
|
576
|
+
<TRules extends RegleUnknownRulesTree | RegleRuleDecl, TDecl extends RegleRuleDeclInput<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>;
|
|
577
577
|
__config?: GlobalConfigOptions<TCustomRules, TShortcuts>;
|
|
578
578
|
}
|
|
579
579
|
/**
|
|
@@ -695,7 +695,7 @@ interface RegleBehaviourOptions {
|
|
|
695
695
|
* Set the dirty state when the form is initialized.
|
|
696
696
|
*
|
|
697
697
|
* - `true` or `'eager'`: mark every field dirty.
|
|
698
|
-
* - `'non-empty'`: mark every field dirty when any
|
|
698
|
+
* - `'non-empty'`: mark every field dirty when any active field (a field with rules) has a non-empty initial value. Inactive fields are ignored.
|
|
699
699
|
* - `'lazy-non-empty'`: mark only fields with non-empty initial values dirty.
|
|
700
700
|
*
|
|
701
701
|
* @default false
|
|
@@ -706,6 +706,16 @@ interface RegleBehaviourOptions {
|
|
|
706
706
|
* @default false
|
|
707
707
|
*/
|
|
708
708
|
disabled?: boolean | undefined;
|
|
709
|
+
/**
|
|
710
|
+
* Number of milliseconds every async field should wait before executing its rules.
|
|
711
|
+
*
|
|
712
|
+
* Applies to every async field in the form. A per-field `$debounce` always takes priority over this global value.
|
|
713
|
+
*
|
|
714
|
+
* Set to `0` to disable the default debounce on async rules.
|
|
715
|
+
*
|
|
716
|
+
* @default 200 (for fields with async rules)
|
|
717
|
+
*/
|
|
718
|
+
debounce?: number | undefined;
|
|
709
719
|
}
|
|
710
720
|
interface LocalRegleBehaviourOptions<TState extends Record<string, any>, TRules extends ReglePartialRuleTree<TState>, TValidationGroups extends Record<string, RegleValidationGroupEntry[]> = {}> {
|
|
711
721
|
/**
|
|
@@ -778,10 +788,6 @@ interface RegleValidationGroupOutput {
|
|
|
778
788
|
$silentErrors: string[];
|
|
779
789
|
}
|
|
780
790
|
type FieldRegleBehaviourOptions<TValue extends unknown = unknown> = AddDollarToOptions<RegleBehaviourOptions> & {
|
|
781
|
-
/**
|
|
782
|
-
* Let you declare the number of milliseconds the rule needs to wait before executing. Useful for async or heavy computations.
|
|
783
|
-
*/
|
|
784
|
-
$debounce?: number;
|
|
785
791
|
/**
|
|
786
792
|
* Override the default `$edited` handler.
|
|
787
793
|
*/
|
|
@@ -1290,13 +1296,14 @@ type RegleRoot<TState extends object | Record<string, unknown> = {}, TRules exte
|
|
|
1290
1296
|
$groups: { readonly [TKey in keyof TValidationGroups]: RegleValidationGroupOutput };
|
|
1291
1297
|
});
|
|
1292
1298
|
type ComputeNestedFieldStatus<TState extends Record<string, any>, TRules extends Record<string, any>, TKey extends keyof TState, TShortcuts extends RegleShortcutDefinition> = TKey extends string ? IsUnion<NonNullable<TRules[TKey]>> extends true ? ExtendOnlyRealRecord<TState[TKey]> extends true ? MaybeVariantStatus<NonNullable<TState>[TKey], NonNullable<TRules[TKey]>, TShortcuts> : InferRegleStatusType<NonNullable<TRules[TKey]>, NonNullable<TState>, TKey, TShortcuts> : InferRegleStatusType<NonNullable<TRules[TKey]>, NonNullable<TState>, TKey, TShortcuts> : never;
|
|
1293
|
-
type
|
|
1299
|
+
type $IsFieldLevelRule<TRule> = NonNullable<TRule> extends MaybeRef<RegleRuleDecl> ? true : false;
|
|
1300
|
+
type ProcessNestedFields<TState extends Record<string, any> | undefined, TRules extends ReglePartialRuleTree<NonNullable<TState>>, TShortcuts extends RegleShortcutDefinition = {}, TIsFields extends boolean = false> = Or<HasNamedKeys<TState>, TIsFields> extends true ? { readonly [TKey in keyof TState as TRules[TKey] extends NonNullable<TRules[TKey]> ? $IsFieldLevelRule<TRules[TKey]> extends true ? IsEmptyObject<TRules[TKey]> extends true ? TKey : never : never : TKey]: ComputeNestedFieldStatus<NonNullable<TState>, TRules, TKey, TShortcuts> } & (IsEmptyObject<TRules> extends true ? { readonly [TKey in keyof TState as TRules[TKey] extends NonNullable<TRules[TKey]> ? $IsFieldLevelRule<TRules[TKey]> extends true ? IsEmptyObject<TRules[TKey]> extends true ? never : TKey : TKey : never]: ComputeNestedFieldStatus<NonNullable<TState>, TRules, TKey, TShortcuts> | (isUndefinedOrNull<TState[TKey]> extends true ? undefined : never) } : { readonly [TKey in keyof TState as TRules[TKey] extends NonNullable<TRules[TKey]> ? $IsFieldLevelRule<TRules[TKey]> extends true ? IsEmptyObject<TRules[TKey]> extends true ? never : TKey : TKey : never]-?: ComputeNestedFieldStatus<NonNullable<TState>, TRules, TKey, TShortcuts> }) : {
|
|
1294
1301
|
[x: string]: RegleCommonStatus<unknown, unknown>;
|
|
1295
1302
|
};
|
|
1296
1303
|
/**
|
|
1297
1304
|
* @public
|
|
1298
1305
|
*/
|
|
1299
|
-
type RegleStatus<TState extends object | Record<string, any> | undefined = Record<string, any>, TRules extends ReglePartialRuleTree<NonNullable<TState
|
|
1306
|
+
type RegleStatus<TState extends object | Record<string, any> | undefined = Record<string, any>, TRules extends ReglePartialRuleTree<NonNullable<TState>> = Record<string, any>, TShortcuts extends RegleShortcutDefinition = {}, _TFields = ProcessNestedFields<TState, TRules, TShortcuts, true>> = Omit<RegleCommonStatus<TState, TState, TRules>, '$issues' | '$errors'> & {
|
|
1300
1307
|
/** 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: _TFields;
|
|
1301
1308
|
/**
|
|
1302
1309
|
* Collection of all the issues, collected for all children properties and nested forms.
|
|
@@ -1315,8 +1322,8 @@ type RegleStatus<TState extends object | Record<string, any> | undefined = Recor
|
|
|
1315
1322
|
$setExternalIssues(issues: RegleExternalIssueTree<TState>): void; /** Will return a copy of your state with only the fields that are dirty. By default it will filter out nullish values or objects, but you can override it with the first parameter $extractDirtyFields(false). */
|
|
1316
1323
|
$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). */
|
|
1317
1324
|
$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>>;
|
|
1318
|
-
} & (HasNamedKeys<TState> extends true ? _TFields : {}) & CustomNestedProperties & ([TShortcuts['nested']] extends [never] ? {} : { [K in keyof TShortcuts['nested']]: ReturnType<NonNullable<TShortcuts['nested']>[K]> }) & (TRules['$self'] extends
|
|
1319
|
-
/** Represents the status of the parent object. Status only concern the object itself and not its children */readonly $self: RegleFieldStatus<
|
|
1325
|
+
} & (HasNamedKeys<TState> extends true ? _TFields : {}) & CustomNestedProperties & ([TShortcuts['nested']] extends [never] ? {} : { [K in keyof TShortcuts['nested']]: ReturnType<NonNullable<TShortcuts['nested']>[K]> }) & (TRules['$self'] extends RegleRuleDeclInput<any, Partial<ExtendedRulesDeclarations>> ? {
|
|
1326
|
+
/** Represents the status of the parent object. Status only concern the object itself and not its children */readonly $self: RegleFieldStatus<TState, NonNullable<TRules['$self']>, TShortcuts>;
|
|
1320
1327
|
} : {});
|
|
1321
1328
|
/**
|
|
1322
1329
|
* @internal
|
|
@@ -1350,7 +1357,7 @@ type $InternalRegleStatusType = $InternalRegleCollectionStatus | $InternalRegleS
|
|
|
1350
1357
|
/**
|
|
1351
1358
|
* @public
|
|
1352
1359
|
*/
|
|
1353
|
-
type RegleFieldStatus<TState extends any = any, TRules extends RegleFormPropertyType<any
|
|
1360
|
+
type RegleFieldStatus<TState extends any = any, TRules extends RegleFormPropertyType<any> = Record<string, any>, TShortcuts extends RegleShortcutDefinition = never> = Omit<RegleCommonStatus<TState, TState, TRules>, '$value' | '$silentValue' | '$initialValue' | '$originalValue' | '$issues' | '$errors'> & {
|
|
1354
1361
|
/** A reference to the original validated model. It can be used to bind your form with v-model.*/$value: MaybeOutput<UnwrapNestedRefs<TState>>; /** $value variant that will not "touch" the field and update the value silently, running only the rules, so you can easily swap values without impacting user interaction. */
|
|
1355
1362
|
$silentValue: MaybeOutput<UnwrapNestedRefs<TState>>;
|
|
1356
1363
|
/**
|
|
@@ -1379,12 +1386,12 @@ type RegleFieldStatus<TState extends any = any, TRules extends RegleFormProperty
|
|
|
1379
1386
|
readonly $externalIssues: RegleFieldIssue[]; /** Stores active tooltips messages of the current field */
|
|
1380
1387
|
readonly $tooltips: string[]; /** Represents the inactive status. Is true when this state have empty rules */
|
|
1381
1388
|
readonly $inactive: boolean; /** Adds runtime rules to the field. */
|
|
1382
|
-
$addRules: (rules:
|
|
1389
|
+
$addRules: (rules: RegleRuleDeclInput<TState>) => void;
|
|
1383
1390
|
/**
|
|
1384
1391
|
* Adds runtime rules to the field.
|
|
1385
1392
|
* @deprecated Use `$addRules` instead. This alias will be removed in a future version.
|
|
1386
1393
|
*/
|
|
1387
|
-
addRules: (rules:
|
|
1394
|
+
addRules: (rules: RegleRuleDeclInput<TState>) => void; /** Sets the external errors for the field. */
|
|
1388
1395
|
$setExternalErrors(errors: string[]): void; /** Sets the external issues for the field. */
|
|
1389
1396
|
$setExternalIssues(issues: RegleFieldIssue[]): void; /** Will return a copy of your state with only the fields that are dirty. By default it will filter out nullish values or objects, but you can override it with the first parameter $extractDirtyFields(false). */
|
|
1390
1397
|
$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). */
|
|
@@ -1409,9 +1416,9 @@ interface $InternalRegleFieldStatus extends $InternalRegleCommonStatus {
|
|
|
1409
1416
|
readonly $isDebouncing: boolean;
|
|
1410
1417
|
readonly $schemaMode?: boolean;
|
|
1411
1418
|
readonly '~modifiers'?: FieldRegleBehaviourOptions;
|
|
1412
|
-
$addRules: (rules:
|
|
1419
|
+
$addRules: (rules: RegleRuleDeclInput) => void;
|
|
1413
1420
|
/** @deprecated Use `$addRules` instead. */
|
|
1414
|
-
addRules: (rules:
|
|
1421
|
+
addRules: (rules: RegleRuleDeclInput) => void;
|
|
1415
1422
|
$extractDirtyFields: (filterNullishValues?: boolean) => any;
|
|
1416
1423
|
$validate: (forceValues?: unknown) => Promise<$InternalRegleResult>;
|
|
1417
1424
|
/**
|
|
@@ -1652,8 +1659,15 @@ interface $InternalRegleCollectionStatus extends Omit<$InternalRegleStatus, '$fi
|
|
|
1652
1659
|
/**
|
|
1653
1660
|
* @public
|
|
1654
1661
|
*/
|
|
1655
|
-
type ReglePartialRuleTree<TForm extends Record<string, any> = Record<string, any>, TCustomRules extends Partial<ExtendedRulesDeclarations> =
|
|
1656
|
-
|
|
1662
|
+
type ReglePartialRuleTree<TForm extends Record<string, any> = Record<string, any>, TCustomRules extends Partial<ExtendedRulesDeclarations> = {}> = { [TKey in keyof TForm]?: RegleFormPropertyType<TForm[TKey], TCustomRules> } & SelfObjectValidationDecl<TForm, TCustomRules>;
|
|
1663
|
+
/**
|
|
1664
|
+
* Rule tree type for rule *input* sites (useRegle, inferRules, satisfies RegleComputedRules).
|
|
1665
|
+
* Uses the full validator catalog for autocomplete and strict checking.
|
|
1666
|
+
*
|
|
1667
|
+
* @public
|
|
1668
|
+
*/
|
|
1669
|
+
type ReglePartialRuleTreeInput<TForm extends Record<string, any> = Record<string, any>, TCustomRules extends Partial<ExtendedRulesDeclarations> = Partial<ExtendedRulesDeclarations>> = ReglePartialRuleTree<TForm, TCustomRules>;
|
|
1670
|
+
type SelfObjectValidationDecl<TForm extends Record<string, any> = Record<string, any>, TCustomRules extends Partial<ExtendedRulesDeclarations> = {}> = {
|
|
1657
1671
|
$self?: MaybeRefOrComputedRef<RegleRuleDecl<TForm, TCustomRules>>;
|
|
1658
1672
|
};
|
|
1659
1673
|
/**
|
|
@@ -1682,7 +1696,13 @@ type $InternalReglePartialRuleTree = {
|
|
|
1682
1696
|
/**
|
|
1683
1697
|
* @public
|
|
1684
1698
|
*/
|
|
1685
|
-
type RegleFormPropertyType<TValue = any, TCustomRules extends Partial<ExtendedRulesDeclarations> =
|
|
1699
|
+
type RegleFormPropertyType<TValue = any, TCustomRules extends Partial<ExtendedRulesDeclarations> = {}> = [NonNullable<TValue>] extends [never] ? MaybeRefOrComputedRef<RegleRuleDecl<TValue, TCustomRules>> : NonNullable<TValue> extends PrimitiveTypes ? MaybeRefOrComputedRef<RegleRuleDecl<NonNullable<TValue>, TCustomRules>> : NonNullable<TValue> extends Array<any> ? RegleCollectionRuleDecl<TValue, TCustomRules> : NonNullable<TValue> extends Ref<infer V> ? RegleFormPropertyType<V, TCustomRules> : NonNullable<TValue> extends Record<string, any> ? NonNullable<TValue> extends RegleStatic<infer U> ? MaybeRefOrComputedRef<RegleRuleDecl<Raw<U>, TCustomRules>> : ReglePartialRuleTree<NonNullable<TValue>, TCustomRules> : MaybeRefOrComputedRef<RegleRuleDecl<NonNullable<TValue>, TCustomRules>>;
|
|
1700
|
+
/**
|
|
1701
|
+
* Form property rules for rule *input* sites.
|
|
1702
|
+
*
|
|
1703
|
+
* @public
|
|
1704
|
+
*/
|
|
1705
|
+
type RegleFormPropertyTypeInput<TValue = any, TCustomRules extends Partial<ExtendedRulesDeclarations> = Partial<ExtendedRulesDeclarations>> = RegleFormPropertyType<TValue, TCustomRules>;
|
|
1686
1706
|
/**
|
|
1687
1707
|
* @internal
|
|
1688
1708
|
* @reference {@link RegleFormPropertyType}
|
|
@@ -1692,9 +1712,16 @@ type $InternalFormPropertyTypes = MaybeRefOrComputedRef<$InternalRegleRuleDecl>
|
|
|
1692
1712
|
* @public
|
|
1693
1713
|
* Rule tree for a form property
|
|
1694
1714
|
*/
|
|
1695
|
-
type RegleRuleDecl<TValue extends any = any, TCustomRules extends Partial<ExtendedRulesDeclarations> =
|
|
1715
|
+
type RegleRuleDecl<TValue extends any = any, TCustomRules extends Partial<ExtendedRulesDeclarations> = {}, TOptions extends Record<string, unknown> = FieldRegleBehaviourOptions<TValue>> = TOptions & { [TKey in keyof RemoveIndexSignature<TCustomRules>]?: NonNullable<TCustomRules[TKey]> extends RegleRuleDefinitionLight<infer TParams, boolean, infer TMetadata> ? RegleRuleDefinitionLight<ParamsToLooseParams<TParams>, boolean, TMetadata> | InlineRuleDeclaration<TValue, ParamsToLooseParams<TParams>, any> : TCustomRules[TKey] } & {
|
|
1696
1716
|
[x: string]: FormRuleDeclaration<TValue, any[]> | boolean | number | undefined | RegleImmediateDirtyMode;
|
|
1697
1717
|
};
|
|
1718
|
+
/**
|
|
1719
|
+
* Rule declaration type for rule *input* sites (useRegle, inferRules, $addRules).
|
|
1720
|
+
* Uses the full validator catalog for autocomplete and strict checking.
|
|
1721
|
+
*
|
|
1722
|
+
* @public
|
|
1723
|
+
*/
|
|
1724
|
+
type RegleRuleDeclInput<TValue extends any = any, TCustomRules extends Partial<ExtendedRulesDeclarations> = Partial<ExtendedRulesDeclarations>, TOptions extends Record<string, unknown> = FieldRegleBehaviourOptions<TValue>> = RegleRuleDecl<TValue, TCustomRules, TOptions>;
|
|
1698
1725
|
/**
|
|
1699
1726
|
* @internal
|
|
1700
1727
|
* @reference {@link RegleRuleDecl}
|
|
@@ -1706,7 +1733,7 @@ type $InternalRegleRuleDecl = FieldRegleBehaviourOptions & CollectionRegleBehavi
|
|
|
1706
1733
|
type RegleCollectionRuleDeclKeyProperty = {
|
|
1707
1734
|
$key?: PropertyKey;
|
|
1708
1735
|
};
|
|
1709
|
-
type CollectionEachRuleDecl<TValue = any[], TCustomRules extends Partial<ExtendedRulesDeclarations> =
|
|
1736
|
+
type CollectionEachRuleDecl<TValue = any[], TCustomRules extends Partial<ExtendedRulesDeclarations> = {}> = IsAny<TValue> extends true ? {
|
|
1710
1737
|
$each?: RegleCollectionEachRules<TValue, TCustomRules>;
|
|
1711
1738
|
} : MaybeNullable<TValue> extends true ? {
|
|
1712
1739
|
/**
|
|
@@ -1726,9 +1753,9 @@ type CollectionEachRuleDecl<TValue = any[], TCustomRules extends Partial<Extende
|
|
|
1726
1753
|
/**
|
|
1727
1754
|
* @public
|
|
1728
1755
|
*/
|
|
1729
|
-
type RegleCollectionRuleDecl<TValue = any[], TCustomRules extends Partial<ExtendedRulesDeclarations> =
|
|
1756
|
+
type RegleCollectionRuleDecl<TValue = any[], TCustomRules extends Partial<ExtendedRulesDeclarations> = {}> = (CollectionEachRuleDecl<TValue, TCustomRules> & RegleRuleDecl<NonNullable<TValue>, TCustomRules, CollectionRegleBehaviourOptions>) | (CollectionEachRuleDecl<TValue, TCustomRules> & CollectionRegleBehaviourOptions);
|
|
1730
1757
|
/** @public */
|
|
1731
|
-
type RegleCollectionEachRules<TValue = any[], TCustomRules extends Partial<ExtendedRulesDeclarations> =
|
|
1758
|
+
type RegleCollectionEachRules<TValue = any[], TCustomRules extends Partial<ExtendedRulesDeclarations> = {}> = MaybeGetter<RegleFormPropertyType<ArrayElement<NonNullable<TValue>>, TCustomRules>, ArrayElement<TValue>, RegleCollectionRuleDeclKeyProperty, RegleFormPropertyType<ArrayElement<NonNullable<TValue>>, TCustomRules>>;
|
|
1732
1759
|
/**
|
|
1733
1760
|
* @internal
|
|
1734
1761
|
* @reference {@link RegleCollectionRuleDecl}
|
|
@@ -1753,19 +1780,19 @@ type RegleErrorTree<TState = MaybeRef<Record<string, any> | any[]>, TIssue exten
|
|
|
1753
1780
|
type RegleIssuesTree<TState = MaybeRef<Record<string, any> | any[]>, TSchema extends boolean = false, TRules extends ReglePartialRuleTree<NonNullable<TState>> = Record<string, any>> = IsAny<TState> extends true ? any : IsUnknown<TState> extends true ? any : { readonly [K in keyof JoinDiscriminatedUnions<UnwrapMaybeRef<TState>>]: RegleValidationErrors<JoinDiscriminatedUnions<UnwrapMaybeRef<TState>>[K], false, true, TSchema, K extends keyof TRules ? TRules[K] extends RegleFormPropertyType<Record<string, any>> ? TRules[K] : EmptyObject : EmptyObject> } & {
|
|
1754
1781
|
readonly $self?: RegleFieldIssue[];
|
|
1755
1782
|
};
|
|
1756
|
-
type RegleExternalErrorTree<TState = MaybeRef<Record<string, any> | any[]>, TSchema extends boolean = false> = IsAny<TState> extends true ? any : IsUnknown<TState> extends true ? any : ({
|
|
1757
|
-
|
|
1783
|
+
type RegleExternalErrorTree<TState = MaybeRef<Record<string, any> | any[]>, TSchema extends boolean = false> = IsAny<TState> extends true ? any : IsUnknown<TState> extends true ? any : ({ [K in keyof JoinDiscriminatedUnions<UnwrapMaybeRef<TState>>]?: RegleValidationErrors<JoinDiscriminatedUnions<UnwrapMaybeRef<TState>>[K], true, TSchema> } & {
|
|
1784
|
+
$self?: RegleFieldIssue[];
|
|
1758
1785
|
}) | Record<Paths<TState> | (string & {}), string[]>;
|
|
1759
|
-
type RegleExternalIssueTree<TState = MaybeRef<Record<string, any> | any[]>, TSchema extends boolean = false> = IsAny<TState> extends true ? any : IsUnknown<TState> extends true ? any : ({
|
|
1760
|
-
|
|
1786
|
+
type RegleExternalIssueTree<TState = MaybeRef<Record<string, any> | any[]>, TSchema extends boolean = false> = IsAny<TState> extends true ? any : IsUnknown<TState> extends true ? any : ({ [K in keyof JoinDiscriminatedUnions<UnwrapMaybeRef<TState>>]?: RegleValidationErrors<JoinDiscriminatedUnions<UnwrapMaybeRef<TState>>[K], true, true, TSchema> } & {
|
|
1787
|
+
$self?: RegleExternalFieldIssue[];
|
|
1761
1788
|
}) | Partial<Record<Paths<TState> | (string & {}), RegleExternalFieldIssue[]>>;
|
|
1762
|
-
type RegleExternalSchemaErrorTree<TState = MaybeRef<Record<string, any> | any[]>, TSchema extends boolean = false> = IsAny<TState> extends true ? any : IsUnknown<TState> extends true ? any : {
|
|
1763
|
-
type RegleExternalSchemaIssueTree<TState = MaybeRef<Record<string, any> | any[]>, TSchema extends boolean = false> = IsAny<TState> extends true ? any : IsUnknown<TState> extends true ? any : {
|
|
1789
|
+
type RegleExternalSchemaErrorTree<TState = MaybeRef<Record<string, any> | any[]>, TSchema extends boolean = false> = IsAny<TState> extends true ? any : IsUnknown<TState> extends true ? any : { [K in keyof JoinDiscriminatedUnions<UnwrapMaybeRef<TState>>]?: RegleValidationErrors<JoinDiscriminatedUnions<UnwrapMaybeRef<TState>>[K], true, true, TSchema> };
|
|
1790
|
+
type RegleExternalSchemaIssueTree<TState = MaybeRef<Record<string, any> | any[]>, TSchema extends boolean = false> = IsAny<TState> extends true ? any : IsUnknown<TState> extends true ? any : { [K in keyof JoinDiscriminatedUnions<UnwrapMaybeRef<TState>>]?: RegleValidationErrors<JoinDiscriminatedUnions<UnwrapMaybeRef<TState>>[K], true, true, TSchema> };
|
|
1764
1791
|
type ErrorMessageOrIssue<TIssue extends boolean, TRules extends RegleFormPropertyType<Record<string, any>> = EmptyObject> = TIssue extends true ? RegleFieldIssue<TRules>[] : string[];
|
|
1765
1792
|
type ExternalErrorMessageOrIssue<TIssue extends boolean> = TIssue extends true ? RegleExternalFieldIssue[] : string[];
|
|
1766
1793
|
type RegleValidationErrors<TState extends Record<string, any> | any[] | unknown = never, TExternal extends boolean = false, TIssue extends boolean = false, TSchema extends boolean = false, TRules extends RegleFormPropertyType<Record<string, any>> = EmptyObject> = IsAny<TState> extends true ? any : IsUnknown<TState> extends true ? any : HasNamedKeys<TState> extends true ? NonNullable<TState> extends Array<infer U> ? TSchema extends false ? TExternal extends false ? RegleCollectionErrors<U, TIssue, TSchema> : RegleExternalCollectionErrors<U, TIssue, TSchema> : RegleCollectionErrors<U, TIssue, TSchema> : NonNullable<TState> extends Date | File ? TExternal extends true ? ExternalErrorMessageOrIssue<TIssue> : ErrorMessageOrIssue<TIssue, TRules> : NonNullable<TState> extends Record<string, any> ? IsRegleStatic<NonNullable<TState>> extends true ? TExternal extends true ? ExternalErrorMessageOrIssue<TIssue> : ErrorMessageOrIssue<TIssue, TRules> : TExternal extends false ? RegleErrorTree<TState, TIssue, TSchema> : TIssue extends true ? RegleExternalIssueTree<TState, TSchema> : RegleExternalErrorTree<TState, TSchema> : TExternal extends true ? ExternalErrorMessageOrIssue<TIssue> : ErrorMessageOrIssue<TIssue, TRules> : any;
|
|
1767
1794
|
interface RegleIssueCustomMetadata {}
|
|
1768
|
-
type RegleFieldIssue<TRules extends RegleFormPropertyType<unknown
|
|
1795
|
+
type RegleFieldIssue<TRules extends RegleFormPropertyType<unknown> = EmptyObject> = {
|
|
1769
1796
|
readonly $property: string;
|
|
1770
1797
|
readonly $type?: string;
|
|
1771
1798
|
readonly $message: string;
|
|
@@ -1784,7 +1811,7 @@ type RegleFieldIssue<TRules extends RegleFormPropertyType<unknown, Partial<Exten
|
|
|
1784
1811
|
readonly $rule: string;
|
|
1785
1812
|
} }[keyof ComputeFieldRules<any, TRules>]);
|
|
1786
1813
|
type RegleExternalFieldIssue = Pick<RegleFieldIssue, '$message'> & Partial<Omit<RegleFieldIssue, '$message'>> & Record<string, unknown>;
|
|
1787
|
-
type ComputeFieldRules<TState extends any, TRules extends MaybeRef<RegleFormPropertyType<unknown
|
|
1814
|
+
type ComputeFieldRules<TState extends any, TRules extends MaybeRef<RegleFormPropertyType<unknown>>> = IsEmptyObject<UnwrapRef<TRules>> extends true ? {
|
|
1788
1815
|
readonly [x: string]: RegleRuleStatus<TState, any[], any>;
|
|
1789
1816
|
} : { readonly [TRuleKey in keyof UnwrapRef<TRules> as TRuleKey extends '$each' | keyof FieldRegleBehaviourOptions ? never : TRuleKey]: RegleRuleStatus<TState, UnwrapRef<TRules>[TRuleKey] extends RegleRuleDefinitionLight<infer TParams, any> ? TParams : [], UnwrapRef<TRules>[TRuleKey] extends RegleRuleDefinitionLight<any, any, infer TMetadata> ? TMetadata : UnwrapRef<TRules>[TRuleKey] extends InlineRuleDeclaration<any, any[], infer TReturn> ? TReturn extends Promise<infer P> ? P : TReturn : RegleRuleMetadataDefinition> };
|
|
1790
1817
|
type RegleCollectionErrors<TState extends any, TIssue extends boolean = false, TSchema extends boolean = false> = {
|
|
@@ -2325,4 +2352,4 @@ declare function isRegleInstance(value: unknown): boolean;
|
|
|
2325
2352
|
* @see {@link https://reglejs.dev/introduction/devtools Documentation}
|
|
2326
2353
|
*/
|
|
2327
2354
|
declare const RegleVuePlugin: Plugin;
|
|
2328
|
-
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 ExtendedRulesDeclarationsOverrides, 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 MeasurableValue, type MergedRegles, type MergedScopedRegles, type NarrowVariant, type NarrowVariantExtracts, type NarrowVariantFieldExtracts, type NoInferLegacy, type NonEmptyTuple, type ParamsToLooseParams, 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 RegleExternalFieldIssue, type RegleExternalIssueTree, type RegleExternalSchemaErrorTree, type RegleExternalSchemaIssueTree, type RegleFieldIssue, type RegleFieldStatus, type RegleFormPropertyType, type RegleInternalRuleDefs, type RegleIssueCustomMetadata, type RegleIssuesTree, type RegleLike, type ReglePartialRuleTree, type RegleResult, type RegleRoot, type RegleRuleCore, type RegleRuleDecl, type RegleRuleDefinition, type RegleRuleDefinitionLight, 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, isRegleInstance, markStatic, mergeRegles, narrowVariant, refineRules, unwrapRuleParameters, useCollectScope, type useCollectScopeFn, useRegle, type useRegleFn, useRootStorage, useRules, type useRulesFn, useScopedRegle, type useScopedRegleFn, variantToRef };
|
|
2355
|
+
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 ExtendedRulesDeclarationsOverrides, 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 MeasurableValue, type MergedRegles, type MergedScopedRegles, type NarrowVariant, type NarrowVariantExtracts, type NarrowVariantFieldExtracts, type NoInferLegacy, type NonEmptyTuple, type ParamsToLooseParams, 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 RegleExternalFieldIssue, type RegleExternalIssueTree, type RegleExternalSchemaErrorTree, type RegleExternalSchemaIssueTree, type RegleFieldIssue, type RegleFieldStatus, type RegleFormPropertyType, type RegleFormPropertyTypeInput, type RegleInternalRuleDefs, type RegleIssueCustomMetadata, type RegleIssuesTree, type RegleLike, type ReglePartialRuleTree, type ReglePartialRuleTreeInput, type RegleResult, type RegleRoot, type RegleRuleCore, type RegleRuleDecl, type RegleRuleDeclInput, type RegleRuleDefinition, type RegleRuleDefinitionLight, 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, isRegleInstance, markStatic, mergeRegles, narrowVariant, refineRules, unwrapRuleParameters, useCollectScope, type useCollectScopeFn, useRegle, type useRegleFn, useRootStorage, useRules, type useRulesFn, useScopedRegle, type useScopedRegleFn, variantToRef };
|
package/dist/regle-core.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @regle/core v1.
|
|
2
|
+
* @regle/core v1.28.0
|
|
3
3
|
* (c) 2026 Victor Garcia
|
|
4
4
|
* @license MIT
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import { computed, effectScope, getCurrentInstance, getCurrentScope, inject, isRef, markRaw, nextTick, onMounted, onScopeDispose, reactive, readonly, ref, shallowRef, toRef, toValue, triggerRef, unref, version, watch, watchEffect } from "vue";
|
|
8
|
-
import { setupDevtoolsPlugin } from "@vue/devtools-api";
|
|
8
|
+
import { onDevToolsClientConnected, setupDevtoolsPlugin } from "@vue/devtools-api";
|
|
9
|
+
import { DevToolsMessagingHookKeys, DevToolsV6PluginAPIHookKeys, devtoolsContext, devtoolsState, getInspector } from "@vue/devtools-kit";
|
|
9
10
|
/**
|
|
10
11
|
* Server side friendly way of checking for a File
|
|
11
12
|
*/
|
|
@@ -661,6 +662,12 @@ function mergeArrayGroupProperties(entries, property) {
|
|
|
661
662
|
return all.concat(fetchedProperty);
|
|
662
663
|
}, []);
|
|
663
664
|
}
|
|
665
|
+
const regleSymbol = Symbol("regle");
|
|
666
|
+
const regleConfigSymbol = Symbol("regle-config");
|
|
667
|
+
const REGLE_FLAGS = { REGLE_STATIC: "__regle_static" };
|
|
668
|
+
function isRegleDevtoolsTestEnv() {
|
|
669
|
+
return Boolean(typeof globalThis !== "undefined" && ("__vitest_worker__" in globalThis || "__JEST_GLOBAL__" in globalThis || typeof window !== "undefined" && "Cypress" in window || typeof process !== "undefined" && process.env && (process.env.VITEST || process.env.JEST_WORKER_ID || process.env.NODE_ENV === "test" || process.env.PLAYWRIGHT_TEST)));
|
|
670
|
+
}
|
|
664
671
|
const COLORS = {
|
|
665
672
|
ERROR: {
|
|
666
673
|
text: 16777215,
|
|
@@ -732,6 +739,7 @@ const TOOLTIP_LABELS_RULES = {
|
|
|
732
739
|
};
|
|
733
740
|
const PRIORITY_KEYS = {
|
|
734
741
|
ROOT: [
|
|
742
|
+
"$value",
|
|
735
743
|
"$invalid",
|
|
736
744
|
"$dirty",
|
|
737
745
|
"$error",
|
|
@@ -753,30 +761,78 @@ const INSPECTOR_IDS = {
|
|
|
753
761
|
COMPONENTS: "components",
|
|
754
762
|
TIMELINE: "regle-timeline"
|
|
755
763
|
};
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
function
|
|
760
|
-
|
|
764
|
+
/**
|
|
765
|
+
* Bypasses Vue Devtools high-performance mode, where `api.sendInspectorTree()` is a no-op.
|
|
766
|
+
*/
|
|
767
|
+
async function syncInspectorToClient(inspectorId, app) {
|
|
768
|
+
const inspector = getInspector(inspectorId, app);
|
|
769
|
+
const treePayload = {
|
|
770
|
+
app,
|
|
771
|
+
inspectorId,
|
|
772
|
+
filter: inspector?.treeFilter ?? "",
|
|
773
|
+
rootNodes: []
|
|
774
|
+
};
|
|
775
|
+
await devtoolsContext.hooks.callHookWith(async (callbacks) => {
|
|
776
|
+
await Promise.all(callbacks.map((cb) => cb(treePayload)));
|
|
777
|
+
}, DevToolsV6PluginAPIHookKeys.GET_INSPECTOR_TREE, treePayload);
|
|
778
|
+
await devtoolsContext.hooks.callHookWith(async (callbacks) => {
|
|
779
|
+
await Promise.all(callbacks.map((cb) => cb({
|
|
780
|
+
inspectorId,
|
|
781
|
+
rootNodes: treePayload.rootNodes
|
|
782
|
+
})));
|
|
783
|
+
}, DevToolsMessagingHookKeys.SEND_INSPECTOR_TREE_TO_CLIENT, {
|
|
784
|
+
inspectorId,
|
|
785
|
+
rootNodes: treePayload.rootNodes
|
|
786
|
+
});
|
|
787
|
+
const nodeId = inspector?.selectedNodeId ?? "";
|
|
788
|
+
const statePayload = {
|
|
789
|
+
app,
|
|
790
|
+
inspectorId,
|
|
791
|
+
nodeId,
|
|
792
|
+
state: {}
|
|
793
|
+
};
|
|
794
|
+
const stateCtx = { currentTab: `custom-inspector:${inspectorId}` };
|
|
795
|
+
if (nodeId) await devtoolsContext.hooks.callHookWith(async (callbacks) => {
|
|
796
|
+
await Promise.all(callbacks.map((cb) => cb(statePayload, stateCtx)));
|
|
797
|
+
}, DevToolsV6PluginAPIHookKeys.GET_INSPECTOR_STATE, statePayload);
|
|
798
|
+
await devtoolsContext.hooks.callHookWith(async (callbacks) => {
|
|
799
|
+
await Promise.all(callbacks.map((cb) => cb({
|
|
800
|
+
inspectorId,
|
|
801
|
+
nodeId,
|
|
802
|
+
state: statePayload.state
|
|
803
|
+
})));
|
|
804
|
+
}, DevToolsMessagingHookKeys.SEND_INSPECTOR_STATE_TO_CLIENT, {
|
|
805
|
+
inspectorId,
|
|
806
|
+
nodeId,
|
|
807
|
+
state: statePayload.state
|
|
808
|
+
});
|
|
809
|
+
}
|
|
810
|
+
async function emitInspectorState(api, app) {
|
|
811
|
+
const inspectorId = INSPECTOR_IDS.INSPECTOR;
|
|
812
|
+
if (app && (devtoolsState.clientConnected || devtoolsState.connected)) {
|
|
813
|
+
await syncInspectorToClient(inspectorId, app);
|
|
814
|
+
return;
|
|
815
|
+
}
|
|
816
|
+
api.sendInspectorTree(inspectorId);
|
|
817
|
+
api.sendInspectorState(inspectorId);
|
|
761
818
|
}
|
|
762
|
-
|
|
819
|
+
const REGLE_DEVTOOLS_GLOBAL_KEY = "__REGLE_DEVTOOLS_REGISTRY__";
|
|
820
|
+
function createRegleDevtoolsRegistry() {
|
|
763
821
|
const loggedWarning = ref(false);
|
|
764
822
|
const devtoolsApi = shallowRef();
|
|
823
|
+
const devtoolsApp = shallowRef();
|
|
765
824
|
const instances = shallowRef(/* @__PURE__ */ new Map());
|
|
766
825
|
const watchers = shallowRef(/* @__PURE__ */ new Map());
|
|
767
|
-
const
|
|
768
|
-
const looseIdCounter = ref(0);
|
|
826
|
+
const instanceIndexCounter = ref(0);
|
|
769
827
|
let pendingNotifyFrame;
|
|
770
|
-
function setApi(api) {
|
|
828
|
+
function setApi(api, app) {
|
|
771
829
|
devtoolsApi.value = api;
|
|
830
|
+
if (app) devtoolsApp.value = app;
|
|
772
831
|
}
|
|
773
832
|
function register(r$, options) {
|
|
774
|
-
const
|
|
775
|
-
const
|
|
776
|
-
const
|
|
777
|
-
idCounters.value.set(idPath, perComponentCounter);
|
|
778
|
-
const id = `${options?.uid?.toString() ?? "regle"}#${++looseIdCounter.value}`;
|
|
779
|
-
const name = `r\$ #${options?.name ?? perComponentCounter}`;
|
|
833
|
+
const instanceIndex = ++instanceIndexCounter.value;
|
|
834
|
+
const id = `${options?.uid?.toString() ?? "regle"}#${instanceIndex}`;
|
|
835
|
+
const name = `r\$ #${options?.name ?? instanceIndex}`;
|
|
780
836
|
instances.value.set(id, {
|
|
781
837
|
id,
|
|
782
838
|
name,
|
|
@@ -802,7 +858,7 @@ function useRegleDevtoolsRegistry() {
|
|
|
802
858
|
return id;
|
|
803
859
|
}
|
|
804
860
|
function notifyDevtools() {
|
|
805
|
-
if (devtoolsApi.value) emitInspectorState(devtoolsApi.value);
|
|
861
|
+
if (devtoolsApi.value) emitInspectorState(devtoolsApi.value, devtoolsApp.value);
|
|
806
862
|
}
|
|
807
863
|
function scheduleNotifyDevtools() {
|
|
808
864
|
if (pendingNotifyFrame != null) return;
|
|
@@ -834,6 +890,7 @@ function useRegleDevtoolsRegistry() {
|
|
|
834
890
|
}
|
|
835
891
|
return {
|
|
836
892
|
devtoolsApi,
|
|
893
|
+
devtoolsApp,
|
|
837
894
|
register,
|
|
838
895
|
unregister,
|
|
839
896
|
getAll,
|
|
@@ -844,7 +901,13 @@ function useRegleDevtoolsRegistry() {
|
|
|
844
901
|
loggedWarning
|
|
845
902
|
};
|
|
846
903
|
}
|
|
847
|
-
|
|
904
|
+
function getRegleDevtoolsRegistry() {
|
|
905
|
+
if (typeof globalThis === "undefined") return createRegleDevtoolsRegistry();
|
|
906
|
+
const globalRegistry = globalThis;
|
|
907
|
+
globalRegistry[REGLE_DEVTOOLS_GLOBAL_KEY] ??= createRegleDevtoolsRegistry();
|
|
908
|
+
return globalRegistry[REGLE_DEVTOOLS_GLOBAL_KEY];
|
|
909
|
+
}
|
|
910
|
+
const regleDevtoolsRegistry = getRegleDevtoolsRegistry();
|
|
848
911
|
/**
|
|
849
912
|
* To be used by `useRegle` like composables.
|
|
850
913
|
*/
|
|
@@ -950,6 +1013,14 @@ function parseRuleNodeId(nodeId) {
|
|
|
950
1013
|
function createRuleNodeId(instanceId, fieldName, ruleName) {
|
|
951
1014
|
return `${createFieldNodeId(instanceId, fieldName)}:rule:${ruleName}`;
|
|
952
1015
|
}
|
|
1016
|
+
const modifiersKeys = [
|
|
1017
|
+
"$autoDirty",
|
|
1018
|
+
"$rewardEarly",
|
|
1019
|
+
"$clearExternalErrorsOnChange",
|
|
1020
|
+
"$clearExternalErrorsOnValidate",
|
|
1021
|
+
"$immediateDirty",
|
|
1022
|
+
"$silent"
|
|
1023
|
+
];
|
|
953
1024
|
/**
|
|
954
1025
|
* Build state for a field node
|
|
955
1026
|
*/
|
|
@@ -959,15 +1030,13 @@ function buildFieldState(fieldStatus) {
|
|
|
959
1030
|
if (priorityProperties.length > 0) state["State"] = priorityProperties;
|
|
960
1031
|
const remainingProperties = getRemainingProperties(fieldStatus, [
|
|
961
1032
|
...PRIORITY_KEYS.FIELD,
|
|
1033
|
+
...modifiersKeys,
|
|
962
1034
|
"$rules",
|
|
963
1035
|
"$fields",
|
|
964
1036
|
"$modifiers",
|
|
965
1037
|
"$deepCompare",
|
|
966
|
-
"$clearExternalErrorsOnValidate",
|
|
967
|
-
"$silent",
|
|
968
1038
|
"$isArrayOrRegleStatic",
|
|
969
|
-
"$schemaMode"
|
|
970
|
-
"$immediateDirty"
|
|
1039
|
+
"$schemaMode"
|
|
971
1040
|
]);
|
|
972
1041
|
if (remainingProperties.length > 0) state["Other Properties"] = remainingProperties;
|
|
973
1042
|
if (fieldStatus["~modifiers"]) state["Modifiers"] = Object.entries(fieldStatus["~modifiers"]).map(([key, value]) => ({
|
|
@@ -1028,8 +1097,7 @@ function buildRootState(r$) {
|
|
|
1028
1097
|
"$fields",
|
|
1029
1098
|
"$modifiers",
|
|
1030
1099
|
"$path",
|
|
1031
|
-
|
|
1032
|
-
"$silent"
|
|
1100
|
+
...modifiersKeys
|
|
1033
1101
|
]);
|
|
1034
1102
|
if (remainingProperties.length > 0) state["Other Properties"] = remainingProperties;
|
|
1035
1103
|
if (r$["~modifiers"]) state["Modifiers"] = Object.entries(r$["~modifiers"]).map(([key, value]) => ({
|
|
@@ -1142,10 +1210,6 @@ function handleEditInspectorState(payload) {
|
|
|
1142
1210
|
}
|
|
1143
1211
|
}
|
|
1144
1212
|
}
|
|
1145
|
-
async function emitInspectorState(api) {
|
|
1146
|
-
api.sendInspectorTree(INSPECTOR_IDS.INSPECTOR);
|
|
1147
|
-
api.sendInspectorState(INSPECTOR_IDS.INSPECTOR);
|
|
1148
|
-
}
|
|
1149
1213
|
function buildNodeTags(fieldOrR$, componentName) {
|
|
1150
1214
|
const tags = [];
|
|
1151
1215
|
let isDisabled = false;
|
|
@@ -1153,6 +1217,7 @@ function buildNodeTags(fieldOrR$, componentName) {
|
|
|
1153
1217
|
else if (isNestedRulesStatus(fieldOrR$)) isDisabled = fieldOrR$["~modifiers"]?.disabled ?? false;
|
|
1154
1218
|
else if (isCollectionRulesStatus(fieldOrR$)) isDisabled = fieldOrR$["~modifiers"]?.$disabled ?? false;
|
|
1155
1219
|
const isOptional = isFieldStatus(fieldOrR$) ? ("required" in fieldOrR$.$rules && !fieldOrR$.$rules.required.$active || isEmpty(fieldOrR$.$rules)) && !fieldOrR$.$schemaMode : false;
|
|
1220
|
+
const isInactive = isFieldStatus(fieldOrR$) ? fieldOrR$.$inactive : false;
|
|
1156
1221
|
const isNestedOrCollection = isNestedRulesStatus(fieldOrR$) || isCollectionRulesStatus(fieldOrR$);
|
|
1157
1222
|
if (fieldOrR$.$error) tags.push({
|
|
1158
1223
|
label: "error",
|
|
@@ -1178,20 +1243,24 @@ function buildNodeTags(fieldOrR$, componentName) {
|
|
|
1178
1243
|
backgroundColor: COLORS.DISABLED.bg,
|
|
1179
1244
|
tooltip: TOOLTIP_LABELS_FIELDS.DISABLED
|
|
1180
1245
|
});
|
|
1181
|
-
if (
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
1246
|
+
if (isInactive) tags.push({
|
|
1247
|
+
label: "inactive",
|
|
1248
|
+
textColor: COLORS.INACTIVE.text,
|
|
1249
|
+
backgroundColor: COLORS.INACTIVE.bg,
|
|
1250
|
+
tooltip: TOOLTIP_LABELS_FIELDS.INACTIVE
|
|
1251
|
+
});
|
|
1252
|
+
else if (isOptional) tags.push({
|
|
1253
|
+
label: "optional",
|
|
1254
|
+
textColor: COLORS.OPTIONAL.text,
|
|
1255
|
+
backgroundColor: COLORS.OPTIONAL.bg,
|
|
1256
|
+
tooltip: TOOLTIP_LABELS_FIELDS.OPTIONAL
|
|
1257
|
+
});
|
|
1258
|
+
if (!fieldOrR$.$invalid && fieldOrR$.$dirty) tags.push({
|
|
1259
|
+
label: "valid",
|
|
1260
|
+
textColor: COLORS.VALID.text,
|
|
1261
|
+
backgroundColor: COLORS.VALID.bg,
|
|
1262
|
+
tooltip: TOOLTIP_LABELS_FIELDS.VALID
|
|
1263
|
+
});
|
|
1195
1264
|
if (fieldOrR$.$dirty) tags.push({
|
|
1196
1265
|
label: "dirty",
|
|
1197
1266
|
textColor: COLORS.DIRTY.text,
|
|
@@ -1369,7 +1438,7 @@ function filterInspectorTree(nodes, filter) {
|
|
|
1369
1438
|
}
|
|
1370
1439
|
return filtered;
|
|
1371
1440
|
}
|
|
1372
|
-
var version$1 = "1.
|
|
1441
|
+
var version$1 = "1.28.0";
|
|
1373
1442
|
function createDevtools(app) {
|
|
1374
1443
|
setupDevtoolsPlugin({
|
|
1375
1444
|
id: "regle-devtools",
|
|
@@ -1380,7 +1449,29 @@ function createDevtools(app) {
|
|
|
1380
1449
|
componentStateTypes: ["Regles"],
|
|
1381
1450
|
app
|
|
1382
1451
|
}, (api) => {
|
|
1383
|
-
regleDevtoolsRegistry.setApi(api);
|
|
1452
|
+
regleDevtoolsRegistry.setApi(api, app);
|
|
1453
|
+
api.on.getInspectorTree(async (payload) => {
|
|
1454
|
+
if (payload.inspectorId === INSPECTOR_IDS.INSPECTOR) {
|
|
1455
|
+
const nodes = buildInspectorTree(regleDevtoolsRegistry.getAll(), payload.filter);
|
|
1456
|
+
if (nodes.length > 0) payload.rootNodes = nodes;
|
|
1457
|
+
else payload.rootNodes = [{
|
|
1458
|
+
id: "empty-regles",
|
|
1459
|
+
label: "No Regles instances found",
|
|
1460
|
+
children: []
|
|
1461
|
+
}];
|
|
1462
|
+
}
|
|
1463
|
+
});
|
|
1464
|
+
api.on.getInspectorState((payload) => {
|
|
1465
|
+
if (payload.inspectorId === INSPECTOR_IDS.INSPECTOR) {
|
|
1466
|
+
const state = buildInspectorState(payload.nodeId, (id) => regleDevtoolsRegistry.get(id));
|
|
1467
|
+
if (!state) api.sendInspectorTree(INSPECTOR_IDS.INSPECTOR);
|
|
1468
|
+
if (state) payload.state = state;
|
|
1469
|
+
else payload.state = {};
|
|
1470
|
+
}
|
|
1471
|
+
});
|
|
1472
|
+
api.on.editInspectorState((payload) => {
|
|
1473
|
+
if (payload.inspectorId === INSPECTOR_IDS.INSPECTOR) handleEditInspectorState(payload);
|
|
1474
|
+
});
|
|
1384
1475
|
api.addInspector({
|
|
1385
1476
|
id: INSPECTOR_IDS.INSPECTOR,
|
|
1386
1477
|
label: "Regle",
|
|
@@ -1426,29 +1517,10 @@ function createDevtools(app) {
|
|
|
1426
1517
|
}
|
|
1427
1518
|
]
|
|
1428
1519
|
});
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
if (payload.inspectorId === INSPECTOR_IDS.INSPECTOR) {
|
|
1432
|
-
const nodes = buildInspectorTree(regleDevtoolsRegistry.getAll(), payload.filter);
|
|
1433
|
-
if (nodes.length > 0) payload.rootNodes = nodes;
|
|
1434
|
-
else payload.rootNodes = [{
|
|
1435
|
-
id: "empty-regles",
|
|
1436
|
-
label: "No Regles instances found",
|
|
1437
|
-
children: []
|
|
1438
|
-
}];
|
|
1439
|
-
}
|
|
1440
|
-
});
|
|
1441
|
-
api.on.getInspectorState((payload) => {
|
|
1442
|
-
if (payload.inspectorId === INSPECTOR_IDS.INSPECTOR) {
|
|
1443
|
-
const state = buildInspectorState(payload.nodeId, (id) => regleDevtoolsRegistry.get(id));
|
|
1444
|
-
if (!state) api.sendInspectorTree(INSPECTOR_IDS.INSPECTOR);
|
|
1445
|
-
if (state) payload.state = state;
|
|
1446
|
-
else payload.state = {};
|
|
1447
|
-
}
|
|
1448
|
-
});
|
|
1449
|
-
api.on.editInspectorState((payload) => {
|
|
1450
|
-
if (payload.inspectorId === INSPECTOR_IDS.INSPECTOR) handleEditInspectorState(payload);
|
|
1520
|
+
onDevToolsClientConnected(() => {
|
|
1521
|
+
regleDevtoolsRegistry.notifyDevtools();
|
|
1451
1522
|
});
|
|
1523
|
+
regleDevtoolsRegistry.notifyDevtools();
|
|
1452
1524
|
});
|
|
1453
1525
|
}
|
|
1454
1526
|
/**
|
|
@@ -1910,16 +1982,40 @@ function hasNonEmptyInitialValue(value) {
|
|
|
1910
1982
|
if (Array.isArray(value)) return value.some((item) => hasNonEmptyInitialValue(item));
|
|
1911
1983
|
return !isEmpty(value);
|
|
1912
1984
|
}
|
|
1913
|
-
|
|
1914
|
-
|
|
1915
|
-
|
|
1916
|
-
|
|
1985
|
+
/**
|
|
1986
|
+
* Walks a validation status and its initial value, returning `true` as soon as an
|
|
1987
|
+
* active (rule-bearing) field holds a non-empty initial value. Inactive fields and
|
|
1988
|
+
* their values are ignored, so a prefilled field without rules won't trigger a touch.
|
|
1989
|
+
*/
|
|
1990
|
+
function statusHasActiveNonEmptyValue(status, initialValue) {
|
|
1991
|
+
if (isFieldStatus(status)) return !status.$inactive && hasNonEmptyInitialValue(initialValue);
|
|
1992
|
+
if (isNestedRulesStatus(status)) return childrenHaveActiveNonEmptyValue(status.$self, status.$fields, initialValue);
|
|
1993
|
+
if (isCollectionRulesStatus(status) && Array.isArray(initialValue)) {
|
|
1994
|
+
if (status.$self && statusHasActiveNonEmptyValue(status.$self, initialValue)) return true;
|
|
1995
|
+
return status.$each.some((item, index) => statusHasActiveNonEmptyValue(item, initialValue[index]));
|
|
1996
|
+
}
|
|
1917
1997
|
return false;
|
|
1918
1998
|
}
|
|
1919
|
-
|
|
1999
|
+
/**
|
|
2000
|
+
* Same check as {@link statusHasActiveNonEmptyValue} for a nested node whose `$self`
|
|
2001
|
+
* status and `$fields` are held separately (e.g. the root status).
|
|
2002
|
+
*/
|
|
2003
|
+
function childrenHaveActiveNonEmptyValue(selfStatus, fields, initialValue) {
|
|
2004
|
+
if (selfStatus && statusHasActiveNonEmptyValue(selfStatus, initialValue)) return true;
|
|
2005
|
+
if (!isObject(initialValue) || isStatic(initialValue)) return false;
|
|
2006
|
+
const state = initialValue;
|
|
2007
|
+
return Object.entries(fields).some(([key, child]) => statusHasActiveNonEmptyValue(child, state[key]));
|
|
2008
|
+
}
|
|
2009
|
+
/**
|
|
2010
|
+
* Determines whether a field should be marked as dirty based on its immediate dirty mode and value.
|
|
2011
|
+
*/
|
|
2012
|
+
function shouldApplyFieldImmediateDirty(mode, value, rootValue, isRootField = false, isInactive = false) {
|
|
1920
2013
|
if (mode === "eager") return true;
|
|
1921
|
-
if (mode === "non-empty")
|
|
1922
|
-
|
|
2014
|
+
if (mode === "non-empty") {
|
|
2015
|
+
if (!isRootField || isInactive) return false;
|
|
2016
|
+
return hasNonEmptyInitialValue(rootValue);
|
|
2017
|
+
}
|
|
2018
|
+
if (mode === "lazy-non-empty") return hasNonEmptyInitialValue(value);
|
|
1923
2019
|
return false;
|
|
1924
2020
|
}
|
|
1925
2021
|
const DEFAULT_DEBOUNCE_TIME = 200;
|
|
@@ -2037,6 +2133,7 @@ function createReactiveFieldStatus({ state, rulesDef, customMessages, path, cach
|
|
|
2037
2133
|
});
|
|
2038
2134
|
const $debounce = computed(() => {
|
|
2039
2135
|
if ($localOptions.value.$debounce != null) return $localOptions.value.$debounce;
|
|
2136
|
+
if (toValue(options.debounce) != null) return toValue(options.debounce);
|
|
2040
2137
|
if (scopeState.$haveAnyAsyncRule.value) return DEFAULT_DEBOUNCE_TIME;
|
|
2041
2138
|
return 0;
|
|
2042
2139
|
});
|
|
@@ -2133,8 +2230,13 @@ function createReactiveFieldStatus({ state, rulesDef, customMessages, path, cach
|
|
|
2133
2230
|
const $edited = ref(false);
|
|
2134
2231
|
function isEditedHandler(currentValue, initialValue) {
|
|
2135
2232
|
if (initialValue instanceof Date && currentValue instanceof Date) return toDate(initialValue).getTime() !== toDate(currentValue).getTime();
|
|
2136
|
-
else if (initialValue == null)
|
|
2137
|
-
|
|
2233
|
+
else if (initialValue == null) {
|
|
2234
|
+
if (typeof currentValue === "boolean") {
|
|
2235
|
+
if (initialValue === void 0) return currentValue === true;
|
|
2236
|
+
return currentValue != null;
|
|
2237
|
+
}
|
|
2238
|
+
return currentValue != null && currentValue !== "";
|
|
2239
|
+
} else if (Array.isArray(currentValue) && Array.isArray(initialValue)) return !isEqual(currentValue, initialValue, $localOptions.value.$deepCompare);
|
|
2138
2240
|
return initialValue !== currentValue;
|
|
2139
2241
|
}
|
|
2140
2242
|
watchEffect(() => {
|
|
@@ -2309,12 +2411,10 @@ function createReactiveFieldStatus({ state, rulesDef, customMessages, path, cach
|
|
|
2309
2411
|
const $localOptions = ref({});
|
|
2310
2412
|
createReactiveRulesResult();
|
|
2311
2413
|
function applyImmediateDirty() {
|
|
2312
|
-
if (shouldApplyFieldImmediateDirty(scopeState.$immediateDirty.value, initialState.value, rootInitialState?.value ?? initialState.value, path === "")) scopeState.$dirty.value = true;
|
|
2414
|
+
if (shouldApplyFieldImmediateDirty(scopeState.$immediateDirty.value, initialState.value, rootInitialState?.value ?? initialState.value, path === "", scopeState.$inactive.value)) scopeState.$dirty.value = true;
|
|
2313
2415
|
}
|
|
2314
2416
|
function $reset(options, fromParent) {
|
|
2315
2417
|
abortCommit();
|
|
2316
|
-
$clearExternalErrors();
|
|
2317
|
-
$clearExternalIssues();
|
|
2318
2418
|
scopeState.$dirty.value = false;
|
|
2319
2419
|
storage.setDirtyEntry(cachePath, false);
|
|
2320
2420
|
if (!fromParent) if (options?.toOriginalState) {
|
|
@@ -2328,7 +2428,7 @@ function createReactiveFieldStatus({ state, rulesDef, customMessages, path, cach
|
|
|
2328
2428
|
initialState.value = cloneDeep(newInitialState);
|
|
2329
2429
|
state.value = cloneDeep(newInitialState);
|
|
2330
2430
|
} else initialState.value = isObject(state.value) && !isStatic(state.value) ? cloneDeep(state.value) : Array.isArray(state.value) ? [...state.value] : state.value;
|
|
2331
|
-
if (options?.clearExternalErrors) {
|
|
2431
|
+
if (options?.clearExternalErrors !== false) {
|
|
2332
2432
|
$clearExternalErrors();
|
|
2333
2433
|
$clearExternalIssues();
|
|
2334
2434
|
}
|
|
@@ -2816,7 +2916,7 @@ function createReactiveCollectionStatus({ state, rulesDef, customMessages, path,
|
|
|
2816
2916
|
const $modifiers = computed(() => {
|
|
2817
2917
|
return {
|
|
2818
2918
|
$deepCompare: $localOptions.value.$deepCompare ?? false,
|
|
2819
|
-
$debounce: $localOptions.value.$debounce ?? 0,
|
|
2919
|
+
$debounce: $localOptions.value.$debounce ?? toValue(options.debounce) ?? 0,
|
|
2820
2920
|
$lazy: $localOptions.value.$lazy ?? false,
|
|
2821
2921
|
$rewardEarly: $rewardEarly.value,
|
|
2822
2922
|
$autoDirty: $autoDirty.value,
|
|
@@ -2921,7 +3021,7 @@ function createReactiveCollectionStatus({ state, rulesDef, customMessages, path,
|
|
|
2921
3021
|
initialState.value = cloneDeep(newInitialState);
|
|
2922
3022
|
state.value = cloneDeep(newInitialState);
|
|
2923
3023
|
} else initialState.value = cloneDeep(state.value);
|
|
2924
|
-
if (options?.clearExternalErrors) {
|
|
3024
|
+
if (options?.clearExternalErrors !== false) {
|
|
2925
3025
|
$clearExternalErrors();
|
|
2926
3026
|
$clearExternalIssues();
|
|
2927
3027
|
}
|
|
@@ -3043,7 +3143,7 @@ function createReactiveCollectionStatus({ state, rulesDef, customMessages, path,
|
|
|
3043
3143
|
...createStandardSchema($validate)
|
|
3044
3144
|
});
|
|
3045
3145
|
}
|
|
3046
|
-
function createReactiveNestedStatus({ rulesDef, state, path = "", cachePath, rootRules, externalErrors, externalIssues, schemaErrors, rootInitialState, rootSchemaErrors, validationGroups, initialState, originalState, fieldName, nestedReactiveRules, ...commonArgs }) {
|
|
3146
|
+
function createReactiveNestedStatus({ rulesDef, state, path = "", cachePath, rootRules, externalErrors, externalIssues, schemaErrors, rootInitialState: _rootInitialState, rootSchemaErrors, validationGroups, initialState, originalState, fieldName, nestedReactiveRules, ...commonArgs }) {
|
|
3047
3147
|
let scope = effectScope();
|
|
3048
3148
|
let scopeState;
|
|
3049
3149
|
let nestedScopes = [];
|
|
@@ -3473,7 +3573,9 @@ function createReactiveNestedStatus({ rulesDef, state, path = "", cachePath, roo
|
|
|
3473
3573
|
}
|
|
3474
3574
|
function applyImmediateDirty() {
|
|
3475
3575
|
if (!scopeState) return;
|
|
3476
|
-
|
|
3576
|
+
const mode = scopeState.$immediateDirty.value;
|
|
3577
|
+
if (mode === "eager") $touch(true, false);
|
|
3578
|
+
else if (mode === "non-empty" && childrenHaveActiveNonEmptyValue($selfStatus.value, $fields.value, initialState.value)) $touch(true, false);
|
|
3477
3579
|
}
|
|
3478
3580
|
function $reset(options, fromParent) {
|
|
3479
3581
|
$unwatchExternalErrors?.();
|
|
@@ -3493,7 +3595,7 @@ function createReactiveNestedStatus({ rulesDef, state, path = "", cachePath, roo
|
|
|
3493
3595
|
for (const field of Object.values($fields.value)) field?.$reset(options, true);
|
|
3494
3596
|
$selfStatus.value?.$reset(options, true);
|
|
3495
3597
|
}
|
|
3496
|
-
if (options?.clearExternalErrors
|
|
3598
|
+
if (options?.clearExternalErrors !== false) {
|
|
3497
3599
|
$clearExternalErrors();
|
|
3498
3600
|
$clearExternalIssues();
|
|
3499
3601
|
}
|
package/dist/regle-core.min.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @regle/core v1.
|
|
2
|
+
* @regle/core v1.28.0
|
|
3
3
|
* (c) 2026 Victor Garcia
|
|
4
4
|
* @license MIT
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import{computed as e,effectScope as t,getCurrentInstance as n,getCurrentScope as r,inject as i,isRef as a,markRaw as o,nextTick as s,onMounted as c,onScopeDispose as l,reactive as u,readonly as d,ref as f,shallowRef as p,toRef as m,toValue as h,triggerRef as g,unref as _,version as v,watch as y,watchEffect as b}from"vue";import{setupDevtoolsPlugin as x}from"@vue/devtools-api";function S(e){return e?.constructor?.name==`File`}function C(e){return e&&(e instanceof Date||e.constructor.name==`File`||e.constructor.name==`FileList`)?!1:typeof e==`object`&&!!e&&!Array.isArray(e)}function w(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 T(e,...t){for(var n=[].slice.call(arguments),r,i=n.length;r=n[i-1],i--;)if(!r||typeof r!=`object`&&typeof r!=`function`)throw Error(`expected object, got `+r);for(var a=n[0],o=n.slice(1),s=o.length,i=0;i<s;i++){var c=o[i];for(var l in c)a[l]=c[l]}return a}function E(e){let t={};for(let n in e){if(!Object.prototype.hasOwnProperty.call(e,n))continue;let r=e[n],i=n.split(`.`),a=t;for(let e=0;e<i.length;e++){let t=i[e],n=e===i.length-1,o=t.match(/^\d+$/)?Number(t):null;if(o!==null){if(Array.isArray(a))if(n)a[o]=r;else{if(typeof a[o]!=`object`||a[o]===null){let t=i[e+1];a[o]=t&&t.match(/^\d+$/)?{$each:[],$self:[]}:{}}a=`$each`in a[o]?a[o].$each:a[o]}}else if(n)if(Array.isArray(a[t])){let e=a[t].slice();a[t]={},a[t].$self=e}else typeof a[t]==`object`&&a[t]!==null&&`$each`in a[t]?a[t].$self=r:a[t]=r;else{let n=i[e+1];if(Array.isArray(a[t])){let e=a[t].slice();a[t]={$each:[]},a[t].$self=e}(typeof a[t]!=`object`||a[t]===null||Array.isArray(a[t])&&!n.match(/^\d+$/))&&(n&&n.match(/^\d+$/)?a[t]={$each:[],$self:[]}:a[t]={}),a=`$each`in a[t]?a[t].$each:a[t]}}}return t}function D(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function O(e,t,n,r=!1){Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})}function k(e){return typeof e==`function`&&!!e.prototype&&`constructor`in e.prototype&&e.prototype.constructor===e}function A(e,t=!0,n=!0){return e==null?!0:e instanceof Date?isNaN(e.getTime()):S(e)?e.size<=0:Array.isArray(e)?t?e.length===0:!1:C(e)?e==null?!0:n?Object.keys(e).length===0:!1:!String(e).length}const j=Symbol(`regle-rule`);function M(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 N(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=>N(e,t+1)))),r==`Map`&&(n=new Map([...e].map(e=>[N(e[0],t+1),N(e[1],t+1)]))),r==`Date`&&(n=new Date(e.getTime())),r==`RegExp`&&(n=RegExp(e.source,M(e))),r==`Array`||r==`Object`){n=Array.isArray(e)?[]:{};for(let r in e)n[r]=N(e[r],t+1)}return n}function ee(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 P(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 F(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(!F(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(C(e)&&C(t)&&s&&(r||!r&&n)&&!F(e[s],t[s],n,!1))return!1}return!0}return e!==e&&t!==t}var I=class extends Error{constructor(e=`Promise was aborted`){super(e),this.name=`AbortError`}};function L(e){let t=new AbortController,{signal:n}=t,r=new Promise((t,r)=>{function i(){r(new I)}n.addEventListener(`abort`,i),e.then(e=>{n.removeEventListener(`abort`,i),n.aborted?r(new I):t(e)}).catch(e=>{n.removeEventListener(`abort`,i),n.aborted?r(new I):r(e)})});function i(e){t.abort(e)}return{promise:r,abort:i,signal:n}}function R(e,t,r){if(!a(e))return r?.(),u(e);let i=f(!1);return n()&&c(async()=>{await s(),typeof window<`u`&&window.requestAnimationFrame(()=>{i.value=!0})}),u(new Proxy({},{get(n,a,o){if(r?.(),t.value&&a!==`$value`&&i.value)return Reflect.get(n,a,o);if(e.value!==void 0)return _(Reflect.get(e.value,a,o))},set(t,n,i){return r?.(),a(e.value[n])&&!a(i)?e.value[n].value=i:e.value[n]=i,!0},deleteProperty(t,n){return r?.(),Reflect.deleteProperty(e.value,n)},has(t,n){return r?.(),e.value===void 0?!1:Reflect.has(e.value,n)},ownKeys(){return r?.(),e.value===void 0?[]:Object.keys(e.value)},getOwnPropertyDescriptor(){return r?.(),{enumerable:!0,configurable:!0}}}))}const te={Inline:`__inline`,Async:`__async`};function z(e){try{return e.map(e=>h(e))}catch{return[]}}function B(t){return t.map(t=>t instanceof Function?e(t):a(t)?t:m(()=>t))}function V(e){let t=e.toString().replace(/\/\/.*$/gm,``).replace(/\/\*[\s\S]*?\*\//g,``).match(/^(?:async\s*)?(?:function\b.*?\(|\((.*?)\)|(\w+))\s*=>|\((.*?)\)\s*=>|function.*?\((.*?)\)|\((.*?)\)/);return t?(t[0]||t[1]||t[2]||t[3]||t[4]||``).split(`,`).map(e=>e.trim()).filter(e=>e.length>0).length:0}function H(e,...t){let{validator:n,type:r,async:i}=e,a=i||r===te.Async||n.constructor.name===`AsyncFunction`;return o({validator(n,...r){return e.validator(n,...z(r.length?r:t))},message(n){return typeof e.message==`function`?e.message({...n,$params:z(n?.$params?.length?n.$params:t)}):e.message},active(n){return typeof e.active==`function`?e.active({...n,$params:z(n?.$params?.length?n.$params:t)}):e.active??!0},tooltip(n){return typeof e.tooltip==`function`?e.tooltip({...n,$params:z(n?.$params?.length?n.$params:t)}):e.tooltip??[]},exec(n){let r=e.validator(n,...z(t)),i;return r instanceof Promise?r.then(e=>(i=e,typeof i==`object`&&`$valid`in i?i.$valid:typeof i==`boolean`?i:!1)):(i=r,typeof i==`object`&&`$valid`in i?i.$valid:typeof i==`boolean`?i:!1)},type:r,_validator:e.validator,_message:e.message,_active:e.active,_tooltip:e.tooltip,_type:e.type,_message_patched:!1,_tooltip_patched:!1,_async:a,_params:B(t),_brand:j})}function U(e){if(typeof e.validator==`function`){let t=[],n=e.async??e.validator.constructor.name===`AsyncFunction`,r=H({...e,async:n},...t);if(V(e.validator)>1){let t=function(...t){return H(e,...t)};return t.validator=r.validator,t.message=r.message,t.active=r.active,t.tooltip=r.tooltip,t.type=r.type,t.exec=r.exec,t._validator=r.validator,t._message=r.message,t._active=r.active,t._tooltip=r.tooltip,t._type=e.type,t._message_pacthed=!1,t._tooltip_pacthed=!1,t._async=n,t}else return r}throw Error(`[createRule] validator must be a function`)}const W=Symbol.for(`regle:instance`);function ne(e){return typeof e==`object`&&!!e&&W in e}function G(e){return C(e.value)}function re(n,r,i){let a=t(),o;return o=n instanceof Function?a.run(()=>({computedEach:e(()=>n(r,i??0))})).computedEach:n,{scope:a,unwrapped:o}}const K={LessThan:-1,EqualTo:0,GreaterThan:1};function ie(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 K.GreaterThan;if(i>t)return K.LessThan;if(!isNaN(t)&&isNaN(i))return K.GreaterThan;if(isNaN(t)&&!isNaN(i))return K.LessThan}return K.EqualTo}const ae=ie(v,`3.5.0`)!==-1;function q(){return Math.floor(Math.random()*Date.now()).toString()}function oe(){return typeof window>`u`?q():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function se(e){return r()?(l(e),!0):!1}function ce(e){let n=!1,r,i=t(!0);return((...t)=>(n||=(r=i.run(()=>e(...t)),!0),r))}function le(e,t){return e.some(e=>t?e?.[t]:!1)}function ue(e,t){return t?e.reduce((e,n)=>{let r=n?.[t]||[];return e.concat(r)},[]):[]}const de=Symbol(`regle`),J=Symbol(`regle-config`),Y={REGLE_STATIC:`__regle_static`};function fe(){return!!(typeof globalThis<`u`&&(`__vitest_worker__`in globalThis||`__JEST_GLOBAL__`in globalThis||typeof window<`u`&&`Cypress`in window||typeof process<`u`&&process.env&&(process.env.VITEST||process.env.JEST_WORKER_ID||process.env.NODE_ENV===`test`||process.env.PLAYWRIGHT_TEST)))}const X={ERROR:{text:16777215,bg:15680580},INVALID:{text:16777215,bg:16747520},CORRECT:{text:16777215,bg:1096065},VALID:{text:16777215,bg:292951},PENDING:{text:16777215,bg:16096779},DIRTY:{text:2042167,bg:16708551},COMPONENT:{text:16777215,bg:6514417},PRISTINE:{text:1120295,bg:16777215},INACTIVE:{text:0,bg:11581118},OPTIONAL:{text:0,bg:11581118},DISABLED:{text:15680580,bg:15067115}},Z={PRISTINE:`Field is not touched yet`,DIRTY:`Field have been touched`,ERROR:`Field has errors`,CORRECT:`Field is dirty and all actives rules are valid`,VALID:`Field rules are all valid`,PENDING:`Field is pending`,INACTIVE:`Field is inactive`,OPTIONAL:`Field is not required`,DISABLED:`Validation reactivity is paused by the disabled modifier`},pe={DIRTY:`All nested fields have been touched`,ERROR:`Some nested fields have errors`,CORRECT:`All nested fields are correct`,PENDING:`Some nested fields are pending`},me={INACTIVE:`The rule is not active`,INVALID:`Rule is invalid`,VALID:`Rule is valid`,PENDING:`Rule validator is pending`},he={ROOT:[`$invalid`,`$dirty`,`$error`,`$pending`,`$valid`,`$ready`],FIELD:[`$value`,`$invalid`,`$dirty`,`$error`,`$pending`,`$errors`]},ge={INSPECTOR:`regle-inspector`,COMPONENTS:`components`,TIMELINE:`regle-timeline`};function _e(e,t){return!Se(e.value)&&(G(e)||C(t.value)&&!A(t.value)&&!Object.entries(t.value).some(([e,t])=>be(t)||typeof t==`function`))}function ve(e,t){return!!e.value&&C(e.value)&&`$each`in e.value||Array.isArray(t.value)}function ye(e){return!!e.value&&(C(e.value)||G(e.value))}function be(e){return(C(e)||typeof e==`function`)&&`_validator`in e}function xe(e){return typeof e.value==`function`?`_validator`in e.value:!0}function Se(e){return C(e)&&D(e,Y.REGLE_STATIC)&&e[Y.REGLE_STATIC]===!0}function Ce(e){return C(e)&&`$fields`in e}function Q(e){return!!e&&`$each`in e}function we(e){return!!e&&`$rules`in e}function Te(e){return typeof e==`function`}function Ee(e,t){return t.filter(t=>t in e&&!Te(e[t])).map(t=>{let n=!1;return t===`$value`&&(n=!0),{key:t,value:e[t],editable:n}})}function De(e,t){return Object.entries(e).filter(([n])=>!t.includes(n)&&n.startsWith(`$`)&&!Te(e[n])).map(([e,t])=>({key:e,value:t,editable:!1})).sort((e,t)=>e.key.localeCompare(t.key))}function Oe(e){if(!e.includes(`:field:`))return null;let[t,,n]=e.split(`:`);return{instanceId:t,fieldName:n}}function ke(e,t){return`${e}:field:${t}`}function Ae(e){if(!e.includes(`:rule:`))return null;let t=e.split(`:rule:`);if(t.length!==2)return null;let n=t[0],r=t[1],i=Oe(n);return i?{...i,ruleName:r}:null}function je(e,t,n){return`${ke(e,t)}:rule:${n}`}function Me(e){let t={},n=Ee(e,he.FIELD);n.length>0&&(t.State=n);let r=De(e,[...he.FIELD,`$rules`,`$fields`,`$modifiers`,`$deepCompare`,`$clearExternalErrorsOnValidate`,`$silent`,`$isArrayOrRegleStatic`,`$schemaMode`,`$immediateDirty`]);return r.length>0&&(t[`Other Properties`]=r),e[`~modifiers`]&&(t.Modifiers=Object.entries(e[`~modifiers`]).map(([e,t])=>({key:e,value:t,editable:!1}))),t}function Ne(e){let t={},n=[`$type`,`$valid`,`$active`,`$pending`,`$message`,`$tooltip`],r=Ee(e,n);r.length>0&&(t[`Rule State`]=r),e.$params&&Array.isArray(e.$params)&&e.$params.length>0&&(t.Parameters=[{key:`$params`,value:e.$params,editable:!1}]),e.$metadata!==void 0&&e.$metadata!==!0&&e.$metadata!==!1&&(t.Metadata=[{key:`$metadata`,value:e.$metadata,objectType:`reactive`,editable:!1}]);let i=De(e,[...n,`$params`,`$metadata`,`$haveAsync`,`$validating`,`$fieldDirty`,`$fieldInvalid`,`$fieldPending`,`$fieldCorrect`,`$fieldError`,`$maybePending`]);return i.length>0&&(t[`Other Properties`]=i),t}function Pe(e){let t={},n=Ee(e,he.ROOT);n.length>0&&(t.State=n);let r=De(e,[...he.ROOT,`$fields`,`$modifiers`,`$path`,`$clearExternalErrorsOnValidate`,`$silent`]);return r.length>0&&(t[`Other Properties`]=r),e[`~modifiers`]&&(t.Modifiers=Object.entries(e[`~modifiers`]).map(([e,t])=>({key:e,value:t,editable:!1}))),t}function Fe(e,t){if(!e||!t)return null;let n=t.match(/[^.[\]]+/g);if(!n)return null;let r=e;for(let e of n){if(!r)return null;let t=parseInt(e);if(!isNaN(t))if(Q(r)&&Array.isArray(r.$each))r=r.$each[t];else return null;else if(Q(r)&&r.$self&&r.$self)r=r.$self;else if(Ce(r)&&r.$fields&&r.$fields[e])r=r.$fields[e];else if(r[e])r=r[e];else return null}return r}function Ie(e,t){let n=Ae(e);if(n){let{instanceId:e,fieldName:r,ruleName:i}=n,a=t(e);if(!a||!a.r$.$fields)return null;let o=Fe(a.r$.$fields,r);if(!o||!(`$rules`in o))return null;let s=o.$rules[i];return s?Ne(s):null}let r=Oe(e);if(r){let{instanceId:e,fieldName:n}=r,i=t(e);if(!i||!i.r$.$fields)return null;let a=Fe(i.r$.$fields,n);return a?Me(a):null}let i=t(e);return i?Pe(i.r$):null}function Le(e){if(e.includes(`:rule:`))return;let t=Oe(e);if(t){let{instanceId:e,fieldName:n}=t,r=$.get(e);if(r&&r.r$.$fields){let e=Fe(r.r$.$fields,n);e&&typeof e.$validate==`function`&&e.$validate()}}else{let t=$.get(e);t&&typeof t.r$.$validate==`function`&&t.r$.$validate()}$.notifyDevtools()}function Re(e,t=!1){let n=Oe(e);if(n){let{instanceId:e,fieldName:r}=n,i=$.get(e);if(i&&i.r$.$fields){let e=Fe(i.r$.$fields,r);e&&typeof e.$reset==`function`&&e.$reset({toOriginalState:t})}}else{let n=$.get(e);n&&typeof n.r$.$reset==`function`&&n.r$.$reset({toOriginalState:t})}$.notifyDevtools()}function ze(e){if(e.includes(`:rule:`))return;let t=Oe(e);if(t){let{instanceId:e,fieldName:n}=t,r=$.get(e);if(r&&r.r$.$fields){let e=Fe(r.r$.$fields,n);e&&typeof e.$touch==`function`&&e.$touch()}}else{let t=$.get(e);t&&typeof t.r$.$touch==`function`&&t.r$.$touch()}$.notifyDevtools()}function Be(e){let{nodeId:t,path:n,state:r}=e;if(!n.includes(`$value`)||!Oe(t))return;let[i,a,o]=t?.split(`:`)??[],s=$.get(i);if(s&&s.r$.$fields){let e=Fe(s.r$.$fields,o);e&&`$value`in e&&(e.$value=r.value,$.notifyDevtools())}}async function Ve(e){e.sendInspectorTree(ge.INSPECTOR),e.sendInspectorState(ge.INSPECTOR)}function He(){let e=f(!1),t=p(),n=p(new Map),r=p(new Map),i=p(new Map),a=f(0),o;function s(e){t.value=e}function c(e,t){let o=t?.filePath??`loose`,s=i.value.get(o),c=s?s+1:1;i.value.set(o,c);let d=`${t?.uid?.toString()??`regle`}#${++a.value}`,f=`r\$ #${t?.name??c}`;n.value.set(d,{id:d,name:f,r$:e,componentName:t?.componentName,filePath:t?.filePath});let p=y([()=>e.$value,()=>e.$externalErrors,()=>e.$externalIssues,()=>e.$error,()=>e.$invalid,()=>e.$pending],()=>u(),{deep:!0,flush:`post`});return r.value.set(d,p),window.requestAnimationFrame(()=>{l()}),d}function l(){t.value&&Ve(t.value)}function u(){o??=window.requestAnimationFrame(()=>{o=void 0,l()})}function d(e){let t=r.value.get(e);t&&(t(),r.value.delete(e)),n.value.delete(e),l()}function m(){return Array.from(n.value.values())}function h(e){return n.value.get(e)}function g(){r.value.forEach(e=>e()),r.value.clear(),n.value.clear(),l()}return{devtoolsApi:t,register:c,unregister:d,getAll:m,get:h,clear:g,setApi:s,notifyDevtools:l,loggedWarning:e}}const $=He();function Ue(e,t){if(typeof window>`u`||!(typeof __VUE_PROD_DEVTOOLS__<`u`&&__VUE_PROD_DEVTOOLS__)||fe())return()=>{};if(!i(de,void 0)&&!$.loggedWarning.value&&$.devtoolsApi)return $.loggedWarning.value=!0,console.warn(`📏 Regle Devtools are not available. Install Regle plugin in your app to enable them. https://reglejs.dev/introduction/devtools`),()=>{};let r=n(),a=r?.type?.name||r?.type?.__name,o;r&&r.type&&typeof r.type==`object`&&`__file`in r.type&&(o=r.type.__file);let s=$.register(e,{name:t?.name,componentName:a,uid:r?.uid,filePath:o});function c(){$.unregister(s)}return se(c),c}function We(){let e=p(new Map),t=p(new Map),n=p(new Map),i=p(new Map),a=p(new Map),o=p(new Map),s=p(new Map);function c(e){let n=t.value.get(e);if(n)return n;{let n=f({});return t.value.set(e,n),n}}function u(e){let t=n.value.get(e);if(t)return t;{let t=f([]);return n.value.set(e,t),t}}function d(e,t){o.value.set(e,t)}function m(e){return o.value.get(e)}function h(e,t,n){s.value.set(`${e}-${t}`,n)}function g(e,t){return s.value.get(`${e}-${t}`)}function _(e,t){e&&t!=null&&s.value.delete(`${e}-${t}`)}function v(e,t){i.value.set(e,t)}function y(e){return i.value.get(e)??!1}function b(t,n){e.value.set(t,n)}function x(t,n){let r=e.value.get(t);if(r)return S(n,r)?{valid:!0}:{valid:!1}}function S(e,t){let n=Object.keys(t),r=Object.keys(e);return r.length!==n.length||!r.every(e=>n.includes(e))?!1:r.every(n=>{let r=e[n],i=t[n];if(!i||!r||typeof r==`function`||typeof i==`function`||typeof r==`number`||typeof r==`boolean`||typeof r==`string`)return!1;if(`_params`in r){if(!r._params)return!0;if(Array.isArray(r._params))return r._params?.every((e,t)=>{if(typeof i==`number`||typeof i==`boolean`||typeof i==`string`)return!0;{let e=z(`_params`in i&&Array.isArray(i._params)?i._params:[]),n=z(r._params);return e?.[t]===n?.[t]}})}})}function C(e){let t=a.value.get(e);if(t)return t;{let t=f(!1),n=f(!0),r=f({}),i=f(!1);return a.value.set(e,{$pending:t,$valid:n,$metadata:r,$validating:i}),{$pending:t,$valid:n,$metadata:r,$validating:i}}}function w(){e.value.clear(),t.value.clear(),n.value.clear(),i.value.clear(),a.value.clear(),o.value.clear(),s.value.clear()}return r()&&l(w),{clearAll:w,addRuleDeclEntry:b,setDirtyEntry:v,checkRuleDeclEntry:x,getDirtyState:y,trySetRuleStatusRef:C,getFieldsEntry:c,getCollectionsEntry:u,getArrayStatus:g,addArrayStatus:h,deleteArrayStatus:_,arrayStatusStorage:s,addAdditionalRulesEntry:d,getAdditionalRulesEntry:m}}function Ge({field:e,silent:t=!1}){let n=Object.entries(e.$rules??{}).map(([n,r])=>{let i=``;if(t&&!r.$valid)i=r.$message;else if(!r.$valid&&e.$error&&!r.$validating)i=r.$message;else return null;return{$message:i,$property:e.fieldName,$rule:n,$type:r.$type,...typeof r.$metadata==`object`?r.$metadata:{}}}).filter(e=>!!e).reduce((e,t)=>(typeof t.$message==`string`?e.push(t):e.push(...t.$message.map(e=>({...t,$message:e}))),e),[]),r=e.$error&&e.$externalErrors&&Array.isArray(e.$externalErrors)&&!e.$externalIssues?.length?e.$externalErrors.map(t=>({$message:t,$property:e.fieldName,$rule:`external`,$type:void 0})):[],i=e.$error&&e.$externalIssues&&Array.isArray(e.$externalIssues)?e.$externalIssues.map(t=>({...t,$property:t.$property??e.fieldName,$rule:t.$rule??`external`})):[],a=[];return e.$schemaErrors&&e.$error&&(a=!Array.isArray(e.$schemaErrors)&&`$self`in e.$schemaErrors?e.$schemaErrors.$self??[]:e.$schemaErrors??[]),[...n,...r,...i,...a]}function Ke({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 qe(e){return C(e)&&`$each`in e}function Je(e,t){let{includePath:n=!1}=t??{};if(Array.isArray(e)&&e.every(e=>!C(e)))return e;if(qe(e)){let t=n?e.$self?.map(e=>({message:e,path:[]}))??[]:e.$self??[],r=e.$each?.map(e=>Ye(e,n))??[];return t?.concat(r.flat())}else return Object.entries(e).map(([e,t])=>Ye(t,n,[e])).flat()}function Ye(e,t=!1,n){let r=t&&!n?[]:n;if(Array.isArray(e)&&e.every(e=>!C(e)))return t?e.map(e=>({message:e,path:r??[]})):e;if(qe(e)){let n=r?.length?e.$self?.map(e=>({message:e,path:r??[]}))??[]:e.$self??[],i=e.$each?.map((e,n)=>Ye(e,t,r?.concat(n)))??[];return n?.concat(i.flat())}else return Object.entries(e).map(([e,n])=>Ye(n,t,r?.concat(e))).flat()}function Xe({customMessages:n,rule:r,ruleKey:i,state:a,path:o,cachePath:s,storage:c,modifiers:l}){let d=t(),p={},m,h=e(()=>be(r.value)&&r.value._async),g=f(!1),_=0,{$pending:v,$valid:b,$metadata:x,$validating:S}=c.trySetRuleStatusRef(`${s}.${i}`);function C(){d=t(),p=d.run(()=>{let t=f(!1),s=f(!1),c=f(!0),l=f(!1),u=f(!1),d=e(()=>({$value:a.value,$error:s.value,$dirty:t.value,$pending:l.value,$correct:u.value,$invalid:c.value,$rule:{$valid:b.value,$invalid:!b.value,$pending:v.value},$params:S.value,...x.value})),p=e(()=>{try{return xe(r)?typeof r.value.active==`function`?r.value.active(d.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(d.value):a),xe(r)){let n=`_${e}_patched`;a&&!r.value[n]||(t=typeof r.value[e]==`function`?r.value[e](d.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 A(e)&&(e=`This field is not valid`),e}),g=e(()=>m(`tooltip`)),_=e(()=>xe(r)&&r.value.type?r.value.type:i),y=e(()=>xe(r)?r.value.validator:r.value),S=e(()=>typeof r.value==`function`?[]:z(r.value._params??[]));return{$active:p,$message:h,$type:_,$validator:y,$params:S,$path:e(()=>`${o}.${i}`),$tooltip:g,$fieldCorrect:u,$fieldError:s,$fieldDirty:t,$fieldPending:l,$fieldInvalid:c}}),m=y(p?.$params,()=>{(!l.$silent.value||l.$rewardEarly.value&&p.$fieldError.value)&&D()},{deep:ae?1:!0})}C();function w(){b.value=!0,p.$fieldDirty.value&&(v.value=!0)}async function T(e){let t=!1;try{let n=p.$validator.value;if(typeof n!=`function`)return console.error(`${o}: Incorrect rule format, it needs to be either a function or created with "createRule".`),!1;let r=n(a.value,...p.$params.value),i=a.value;w();let s;if(s=r instanceof Promise?await r:r,e!==_||a.value!==i)return b.value;if(typeof s==`boolean`)t=s;else{let{$valid:e,...n}=s;t=e,x.value=n}}catch{t=!1}finally{e===_&&(v.value=!1)}return t}function E(e,t=!0){if(be(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 x.value=t,e}}return!0}async function D(){let e=++_;try{S.value=!0;let t=!1;if(g.value=!0,be(r.value)&&r.value._async)t=await T(e);else{let e=p.$validator.value;t=E(e)}return e===_?(b.value=t,t):b.value}catch{return!1}finally{e===_&&(S.value=!1,g.value=!1)}}function O(){try{return S.value=!0,E(p.$validator.value)}catch{return!1}finally{S.value=!1}}function k(){_++,b.value=!0,x.value={},v.value=!1,S.value=!1,C()}function j(){m(),d.stop(),d=t()}return u({...p,$pending:v,$valid:b,$metadata:x,$haveAsync:h,$maybePending:g,$validating:S,$parse:D,$parseSync:O,$unwatch:j,$watch:C,$reset:k})}function Ze(e){return{"~standard":{version:1,vendor:`regle`,validate:async t=>{let{valid:n,data:r,errors:i}=await e(t,!0);return n?{value:r,issues:[]}:{issues:Je(i,{includePath:!0})}}}}}function Qe(e){return e===!0?`eager`:e===!1||e==null?!1:e}function $e(e){return C(e)&&!Se(e)?Object.values(e).some(e=>$e(e)):Array.isArray(e)?e.some(e=>$e(e)):!A(e)}function et(e,t,n){return e===`eager`?!0:e===`non-empty`?$e(n):e===`lazy-non-empty`?$e(t):!1}function tt(e,t,n,r=!1){return e===`eager`?!0:e===`non-empty`?r&&!A(n):e===`lazy-non-empty`?!A(t):!1}function nt({state:n,rulesDef:r,customMessages:i,path:a,cachePath:o,fieldName:c,storage:l,options:d,externalErrors:p,externalIssues:g,schemaErrors:_,schemaMode:v,onUnwatch:x,$isArray:S,initialState:w,rootInitialState:T,originalState:E,shortcuts:D,overrides:O,onValidate:k}){let j=t(),M,I=[],R,te,z,B,V=()=>{},H,U=()=>{},W=f(!1),ne=f(l.getAdditionalRulesEntry(o)??{});function G(e){ne.value=e??{},l.addAdditionalRulesEntry(o,e??{}),K(),V()}function re(e){G(e)}function K(){let e={...r.value,...ne.value},t=[];for(let r in e){if(r.startsWith(`$`)||r.startsWith(`~`))continue;let s=e[r];if(!s)continue;let c=m(()=>s);t.push([r,Xe({modifiers:{$silent:M.$silent,$rewardEarly:M.$rewardEarly},customMessages:i,rule:c,ruleKey:r,state:n,path:a,cachePath:o,storage:l,$debounce:Y.value.$debounce})])}J.value=Object.fromEntries(t),l.addRuleDeclEntry(o,e)}function ie(){let e={...r.value,...ne.value},t=l.checkRuleDeclEntry(o,e),n={};for(let t in e)t.startsWith(`$`)&&(n[t]=e[t]);return Y.value=n,t}function q(){let e=ie();le(),K(),M.processShortcuts(),oe(),se(),e?.valid!=null&&(M.$dirty.value=l.getDirtyState(o),(M.$dirty.value&&!M.$silent.value||M.$rewardEarly.value&&M.$error.value)&&V()),l.addRuleDeclEntry(o,r.value)}function oe(){V=M.$debounce.value>0?P(de,M.$debounce.value,{trackDebounceRef:W}):de}function se(){U=M.$debounce.value>0?P(()=>{M.$dirty.value=!0},M.$debounce.value):()=>{M.$dirty.value=!0}}function ce(){if(J.value)for(let e of Object.values(J.value))e.$unwatch();te(),B?.(),M.$dirty.value&&l.setDirtyEntry(o,M.$dirty.value),R?.(),j.stop(),j=t();for(let e of I)e.stop();I=[],x?.(),z?.()}function le(){if(J.value)for(let e of Object.values(J.value))e.$watch();M=j.run(()=>{let r=f(!1),i=f(!1),a=e(()=>r.value),o=e(()=>S||Se(n.value)),s=e(()=>Y.value.$debounce==null?M.$haveAnyAsyncRule.value?200:0:Y.value.$debounce),l=e(()=>Y.value.$deepCompare==null?!1:Y.value.$deepCompare),m=e(()=>Y.value.$lazy==null?h(d.lazy)==null?!1:h(d.lazy)===!0:Y.value.$lazy),y=e(()=>Y.value.$immediateDirty==null?h(d.immediateDirty)==null?!1:Qe(h(d.immediateDirty)):Qe(Y.value.$immediateDirty)),x=e(()=>Y.value.$rewardEarly==null?h(d.rewardEarly)==null?!1:h(d.rewardEarly)===!0:!!Y.value.$rewardEarly),C=e(()=>Y.value.$clearExternalErrorsOnChange==null?h(d.clearExternalErrorsOnChange)==null?!E.value:h(d.clearExternalErrorsOnChange)===!0:!!Y.value.$clearExternalErrorsOnChange),T=e(()=>Y.value.$clearExternalErrorsOnValidate==null?h(d.clearExternalErrorsOnValidate)==null?!1:h(d.clearExternalErrorsOnValidate)===!0:!!Y.value.$clearExternalErrorsOnValidate),E=e(()=>x.value?!0:Y.value.$silent==null?h(d.silent)==null?!1:h(d.silent)===!0:Y.value.$silent),k=e(()=>Y.value.$autoDirty==null?h(d.autoDirty)==null?!0:h(d.autoDirty)===!0:Y.value.$autoDirty),j=e(()=>{if(Y.value.$isEdited!=null)return Y.value.$isEdited;if(O?.isEdited!=null)return O.isEdited}),N=e(()=>{for(let e of Object.values(J.value))if(e.$validating)return!0;return!1}),P=e({get:()=>n.value,set(e){R(),n.value=e,ue()}}),L=e(()=>W.value?ie.value&&r.value:ie.value&&!K.value&&r.value),te=e(()=>Ge({field:{$rules:J.value,$error:L.value,$externalErrors:p?.value,$externalIssues:g?.value,$schemaErrors:_?.value,fieldName:ae.value}})),z=e(()=>Ge({field:{$rules:J.value,$error:L.value,$externalErrors:p?.value,$externalIssues:g?.value,$schemaErrors:_?.value,fieldName:ae.value},silent:!0})),B=e(()=>te.value.map(e=>e.$message)),V=e(()=>z.value.map(e=>e.$message)),H=f(!1);function U(e,t){return t instanceof Date&&e instanceof Date?ee(t).getTime()!==ee(e).getTime():t==null?e!=null&&e!==``:Array.isArray(e)&&Array.isArray(t)?!F(e,t,Y.value.$deepCompare):t!==e}b(()=>{r.value?j.value?H.value=j.value(n.value,w.value,U):H.value=U(n.value,w.value):H.value=!1});let ne=e(()=>H.value),G=e(()=>Ke({field:{$rules:J.value}})),re=e(()=>!(ie.value||K.value)),K=e(()=>i.value||!x.value?Object.entries(J.value).some(([e,t])=>t.$pending):!1),ie=e(()=>p?.value?.length||g?.value?.length||_?.value?.length?!0:q.value?!1:Object.values(J.value).some(e=>!e.$valid||e.$maybePending)),ae=e(()=>c??d.id??`root`),q=e(()=>!v&&!Object.keys(J.value).some(e=>!e.startsWith(`$`))),oe=e(()=>{if(p?.value?.length||g?.value?.length||q.value||W.value)return!1;if(r.value&&!A(n.value)&&!N.value&&!K.value){if(v)return!_?.value?.length;{let e=Object.values(J.value);for(let t of e)if(t.$active&&!t.$valid)return!1;return e.some(e=>e.$active)}}return!1}),se=e(()=>Object.values(J.value).some(e=>e.$haveAsync)),ce=e(()=>({$debounce:s.value,$lazy:m.value,$rewardEarly:x.value,$autoDirty:k.value,$silent:E.value,$clearExternalErrorsOnChange:C.value,$clearExternalErrorsOnValidate:T.value,$immediateDirty:y.value,$isEdited:j.value,$disabled:h(d.disabled)??!1}));function le(){D?.fields&&Object.entries(D.fields).forEach(([e,i])=>{let o=t();de[e]=o.run(()=>{let e=f();return b(()=>{e.value=i(u({$dirty:r,$externalErrors:p?.value??[],$externalIssues:g?.value??[],$value:n,$silentValue:P,$rules:J,$error:L,$pending:K,$invalid:ie,$correct:oe,$errors:B,$ready:re,$silentErrors:V,$anyDirty:a,$tooltips:G,$name:ae,$inactive:q,$edited:H,$anyEdited:ne}))}),e}),I.push(o)})}let de={};return{$error:L,$pending:K,$invalid:ie,$correct:oe,$debounce:s,$deepCompare:l,$lazy:m,$immediateDirty:y,$ready:re,$issues:te,$silentIssues:z,$errors:B,$silentErrors:V,$rewardEarly:x,$autoDirty:k,$silent:E,$clearExternalErrorsOnChange:C,$clearExternalErrorsOnValidate:T,$anyDirty:a,$edited:H,$anyEdited:ne,$name:ae,$haveAnyAsyncRule:se,$shortcuts:de,$validating:N,$tooltips:G,$dirty:r,processShortcuts:le,$silentValue:P,$inactive:q,$modifiers:ce,$isArrayOrRegleStatic:o}}),ue(),te=y(M.$dirty,e=>{l.setDirtyEntry(o,e),Object.values(J.value).forEach(t=>{t.$fieldDirty=e})}),B=y([M.$error,M.$correct,M.$invalid,M.$pending],()=>{Object.values(J.value).forEach(e=>{e.$fieldError=M.$error.value,e.$fieldInvalid=M.$invalid.value,e.$fieldPending=M.$pending.value,e.$fieldCorrect=M.$correct.value})}),z=y(M.$haveAnyAsyncRule,oe)}function ue(){R=y(n,()=>{M.$autoDirty.value&&!M.$silent.value&&(M.$dirty.value||U()),r.value instanceof Function&&q(),(!M.$silent.value||M.$rewardEarly.value&&M.$error.value)&&V(),M.$clearExternalErrorsOnChange.value&&(xe(),Q())},{deep:M.$isArrayOrRegleStatic.value?!0:ae?1:!0})}async function de(){try{let{promise:e}=pe(Promise.allSettled(Object.values(J.value).map(e=>e.$parse())));await e}catch{}}let J=f({}),Y=f({});q();function fe(){tt(M.$immediateDirty.value,w.value,T?.value??w.value,a===``)&&(M.$dirty.value=!0)}function X(e,t){if(Z(),xe(),Q(),M.$dirty.value=!1,l.setDirtyEntry(o,!1),!t)if(e?.toOriginalState)n.value=N(E),w.value=N(E);else if(e?.toInitialState)n.value=N(w.value);else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,w.value=N(t),n.value=N(t)}else w.value=C(n.value)&&!Se(n.value)?N(n.value):Array.isArray(n.value)?[...n.value]:n.value;if(e?.clearExternalErrors&&(xe(),Q()),!t&&!e?.keepValidationState)for(let e of Object.values(J.value))e.$reset();if(!M.$lazy.value&&!M.$silent.value&&!t)for(let e of Object.values(J.value))e.$parse();fe()}function Z(){`cancel`in V&&V.cancel()}function pe(e){return H&&H.abort(),H=L(e),H}function me(){Z(),H&&H.abort()}function he(e=!0,t=!1){M.$dirty.value||U(),t&&e?(!M.$silent.value||M.$rewardEarly.value&&M.$error.value)&&(Z(),V()):e&&(Z(),V())}async function ge(e){return e&&(n.value=e),await s(),_e()}async function _e(e){try{if(e&&(n.value=e),v)return k?(he(!1),k()):{valid:!1,data:n.value,errors:M.$errors.value,issues:M.$issues.value};let t=n.value;if(M.$clearExternalErrorsOnValidate.value&&(xe(),Q()),M.$autoDirty.value&&!M.$silent.value&&M.$dirty.value&&!M.$validating.value&&!M.$pending.value&&!W.value&&!A(J.value))return{valid:!M.$invalid.value,data:t,errors:M.$errors.value,issues:M.$issues.value};if(M.$dirty.value||(M.$dirty.value=!0),A(J.value))return{valid:!0,data:t,errors:M.$errors.value,issues:M.$issues.value};me();let{promise:r}=pe(Promise.allSettled(Object.values(J.value).map(e=>e.$parse()))),i=await r;return await s(),{valid:i.every(e=>e.status===`fulfilled`&&e.value===!0),data:t,errors:M.$errors.value,issues:M.$issues.value}}catch{return{valid:!1,data:n.value,errors:M.$errors.value,issues:M.$issues.value}}}function ve(e){try{return e&&(n.value=e),M.$dirty.value||(M.$dirty.value=!0),v?!1:(M.$clearExternalErrorsOnValidate.value&&(xe(),Q()),Object.values(J.value).map(e=>e.$parseSync()).every(e=>!!e))}catch{return!1}}function ye(e=!0){return M.$dirty.value?n.value:e?{_null:!0}:null}function be(e){p&&(p.value=e),Q()}function xe(){p?.value?.length&&(p.value=[])}function Ce(e){g&&(g.value=e),xe()}function Q(){g?.value?.length&&(g.value=[])}!M.$lazy.value&&!M.$dirty.value&&!M.$silent.value&&de(),fe();let{$shortcuts:we,$validating:Te,$autoDirty:Ee,$rewardEarly:De,$clearExternalErrorsOnChange:Oe,$clearExternalErrorsOnValidate:ke,$haveAnyAsyncRule:Ae,$debounce:je,$lazy:Me,...Ne}=M,Pe=u({...Ne,$externalErrors:p,$externalIssues:g,$value:n,$output:n,$initialValue:w,$originalValue:E,$rules:J,...we,$path:a,$isDebouncing:W,$reset:X,$touch:he,$validate:ge,$validateSync:ve,$validateWithoutRaceconditions:_e,$unwatch:ce,$watch:le,$extractDirtyFields:ye,$clearExternalErrors:xe,$clearExternalIssues:Q,$abort:me,$addRules:G,addRules:re,$schemaMode:v,"~modifiers":M.$modifiers,$setExternalErrors:be,$setExternalIssues:Ce,...Ze(ge)});return Object.defineProperty(Pe,Symbol.for(`regle:instance`),{value:!0}),Pe}function rt({$id:t,path:n,cachePath:r,index:i,options:a,storage:o,stateValue:s,customMessages:c,rules:l,externalErrors:u,externalIssues:d,schemaErrors:p,initialState:g,originalState:_,shortcuts:v,fieldName:y,schemaMode:b,overrides:x,currentIndexes:S}){let w=e(()=>h(l)),T=s.value?.$id??w.value.$key??oe(),E=`${r}.${String(T)}`,D=f(i),O=`${n}.${i}`;typeof s.value==`object`&&s.value!=null&&(s.value.$id||Object.defineProperties(s.value,{$id:{value:T,enumerable:!1,configurable:!1,writable:!1}}));let k=ot({index:i,state:s,rulesDef:w,nestedReactiveRules:!0,customMessages:c,path:O,cachePath:E,storage:o,options:a,externalErrors:m(u?.value??[],i),externalIssues:m(d?.value??[],i),schemaErrors:e(()=>p?.value?.[D.value]),initialState:g,originalState:_,shortcuts:v,fieldName:y,schemaMode:b,overrides:x});return k&&(k.$id=s.value?.$id??String(T),S?.set(k.$id,D),o.addArrayStatus(t,k.$id,k)),s.value&&(!C(s.value)||Se(s.value))&&b&&k?.$touch(),k}function it({state:n,rulesDef:r,customMessages:i,path:a,cachePath:o,storage:s,options:c,externalErrors:l,externalIssues:d,schemaErrors:p,schemaMode:g,initialState:_,originalState:v,shortcuts:x,fieldName:S,overrides:C}){let w=t(),T,E=t(),D,O=[];if(!Array.isArray(n.value)&&!r.value.$each)return;let k=f(),j=f(n.value),M=f({}),ee,P,F=f({}),I=s.getCollectionsEntry(a),L=new Map;D=E.run(()=>({isPrimitiveArray:e(()=>n.value?.length?Array.isArray(n.value)&&n.value.length?n.value.every(e=>typeof e!=`object`):r.value.$each&&!(r.value.$each instanceof Function)?Object.values(r.value.$each).every(e=>be(e)||typeof e==`function`):!1:!1)})),R(),V();function R(){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=oe(),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)&&(!D.isPrimitiveArray.value||g)?I.value=n.value.map((t,n)=>{let{scope:u,unwrapped:f}=re(r.value.$each,m(()=>t),n);u&&O.push(u);let h=m(_.value??[],n),y=m(l?.value??{},`$each`),b=m(d?.value??{},`$each`),w=e(()=>p?.value?.$each);return rt({$id:k.value,path:a,cachePath:o,customMessages:i,rules:f??{},stateValue:m(()=>t),index:n,options:c,storage:s,externalErrors:y,externalIssues:b,schemaErrors:w,initialState:h,originalState:v,shortcuts:x,fieldName:S,schemaMode:g,overrides:C,currentIndexes:L})||null}).filter(e=>!!e):(I.value=[],L.clear()),F.value=nt({state:n,rulesDef:r,customMessages:i,path:a,cachePath:a,storage:s,options:c,externalErrors:m(l?.value??{},`$self`),externalIssues:m(d?.value??{},`$self`),schemaErrors:e(()=>p?.value?.$self),$isArray:!0,initialState:_,originalState:v,shortcuts:x,fieldName:S,schemaMode:g,overrides:C})}function te(){if(Array.isArray(n.value)&&(!D.isPrimitiveArray.value||g)){let t=[...I.value],o=new Set;I.value=n.value.map((t,n)=>{let u=m(()=>t);if(t.$id&&I.value.find(e=>e.$id===t.$id)){let e=s.getArrayStatus(k.value,t.$id);if(e){let r=L.get(t.$id);return r&&(r.value=n),o.add(t.$id),e.$value=u,e}return null}else{let{scope:t,unwrapped:f}=re(r.value.$each,u,n);t&&O.push(t);let h=m(l?.value??{},`$each`),y=m(d?.value??{},`$each`),b=e(()=>p?.value?.$each??[]),w=rt({$id:k.value,path:a,cachePath:a,customMessages:i,rules:f??{},stateValue:u,index:n,options:c,storage:s,externalErrors:h,externalIssues:y,schemaErrors:b,initialState:m(_.value??[],n),originalState:v,shortcuts:x,fieldName:S,schemaMode:g,overrides:C,currentIndexes:L});return w?(w.$id&&o.add(w.$id),w):null}}).filter(e=>!!e),t.filter(e=>!n.value?.find(t=>e.$id===t.$id)).forEach((e,t)=>{s.deleteArrayStatus(k.value,t.toString())});for(let e of L.keys())o.has(e)||L.delete(e)}else I.value=[],L.clear()}function z(){ee=y(n,()=>{P?.(),n.value!=null&&!Object.hasOwn(n.value,`$id`)&&!k.value?R():te(),B()},{deep:ae?1:!0,flush:`pre`}),B()}function B(){P=y(n,()=>{T.$autoDirty.value&&!T.$silent.value&&F.value.$touch(!1,!0)},{flush:`post`})}function V(){z(),w=t(),T=w.run(()=>{let r=e({get:()=>n.value,set(e){ee?.(),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(()=>(g?F.value.$correct:A(F.value.$rules)?!0:F.value.$correct)&&(!I.value.length||I.value.every(e=>e.$correct||e.$anyDirty&&!e.$invalid))),d=e(()=>F.value.$error||I.value.some(e=>e.$error)),p=e(()=>!(s.value||m.value)),m=e(()=>F.value.$pending||I.value.some(e=>e.$pending)),y=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)})),D=e(()=>({$self:F.value.$silentErrors,$each:I.value.map(e=>e.$silentErrors)})),k=e(()=>M.value.$rewardEarly==null?h(c.rewardEarly)==null?!1:h(c.rewardEarly)===!0:M.value.$rewardEarly),j=e(()=>k.value?!0:M.value.$silent==null?h(c.silent)==null?!1:h(c.silent)===!0:M.value.$silent),N=e(()=>M.value.$autoDirty==null?h(c.autoDirty)==null?!0:h(c.autoDirty)===!0:M.value.$autoDirty),L=e(()=>M.value.$immediateDirty==null?h(c.immediateDirty)==null?!1:Qe(h(c.immediateDirty)):Qe(M.value.$immediateDirty)),R=e(()=>M.value.$clearExternalErrorsOnChange==null?h(c.clearExternalErrorsOnChange)==null?!0:h(c.clearExternalErrorsOnChange)===!0:M.value.$clearExternalErrorsOnChange),te=e(()=>M.value.$clearExternalErrorsOnValidate==null?h(c.clearExternalErrorsOnValidate)==null?!1:h(c.clearExternalErrorsOnValidate)===!0:M.value.$clearExternalErrorsOnValidate),B=e(()=>{if(M.value.$isEdited!=null)return M.value.$isEdited;if(C?.isEdited!=null)return C.isEdited}),V=e(()=>S??c.id??`root`),H=e(()=>({$deepCompare:M.value.$deepCompare??!1,$debounce:M.value.$debounce??0,$lazy:M.value.$lazy??!1,$rewardEarly:k.value,$autoDirty:N.value,$silent:j.value,$clearExternalErrorsOnChange:R.value,$clearExternalErrorsOnValidate:te.value,$immediateDirty:L.value,$isEdited:B.value,$disabled:h(c.disabled)??!1}));function U(){x?.collections&&Object.entries(x?.collections).forEach(([e,c])=>{let h=t();W[e]=h.run(()=>{let e=f();return b(()=>{e.value=c(u({$dirty:i,$error:d,$path:a,$silentValue:r,$pending:m,$invalid:s,$correct:l,$errors:E,$silentErrors:D,$initialValue:_,$originalValue:v,$ready:p,$anyDirty:o,$name:V,$each:I,$self:F,$value:n,$output:n,$edited:y,$anyEdited:w,$issues:T}))}),e}),O.push(h)})}let W={};return U(),{$dirty:i,$anyDirty:o,$invalid:s,$correct:l,$error:d,$pending:m,$errors:E,$silentErrors:D,$ready:p,$name:V,$shortcuts:W,$silentValue:r,$edited:y,$anyEdited:w,$rewardEarly:k,$silent:j,$autoDirty:N,$issues:T,$modifiers:H}}),D.isPrimitiveArray.value&&r.value.$each&&console.warn(`${a} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`)}function H(){ee?.(),F.value&&F.value.$unwatch(),I.value&&I.value.forEach(e=>{`$dirty`in e&&e.$unwatch()}),w.stop(),w=t(),E.stop(),E=t(!0),O.forEach(e=>e.stop()),O=[]}function U(e=!0,t=!1){F.value.$touch(e,t),I.value.forEach(n=>{n.$touch(e,t)})}function W(e,t){if(H(),!t)if(e?.toOriginalState)n.value=N(v),_.value=N(v);else if(e?.toInitialState)n.value=N(_.value);else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,_.value=N(t),n.value=N(t)}else _.value=N(n.value);e?.clearExternalErrors&&(se(),le()),e?.keepValidationState||(F.value.$reset(e,t),I.value.forEach(t=>{t.$reset(e,!0)})),t||R()}function ne(){F.value.$abort(),I.value.forEach(e=>{e.$abort()})}async function G(e){return e&&(n.value=e),K()}async function K(e){e&&(n.value=e);let t=n.value;try{return ne(),{valid:(await Promise.allSettled([F.value.$validateWithoutRaceconditions(e),...I.value.map(e=>e.$validateWithoutRaceconditions())])).every(e=>e.status===`fulfilled`?e.value.valid===!0:!1),data:t,errors:T.$errors.value,issues:T.$issues.value}}catch{return{valid:!1,data:t,errors:T.$errors.value,issues:T.$issues.value}}}function ie(e){e&&(n.value=e);try{return[F.value.$validateSync(e),...I.value.map(e=>e.$validateSync())].every(e=>!!e)}catch{return!1}}function q(e){l&&(l.value=e),le()}function se(){F.value.$clearExternalErrors(),I.value.forEach(e=>{e.$clearExternalErrors()})}function ce(e){d&&(d.value=e),se()}function le(){F.value.$clearExternalIssues(),I.value.forEach(e=>{e.$clearExternalIssues()})}function ue(e=!0){let t=I.value.map(t=>{if(Ce(t))return t.$extractDirtyFields(e)});return e&&t.every(e=>A(e))&&(t=[]),t}let{$shortcuts:de,...J}=T;return u({$self:F,...J,...de,$path:a,$each:I,$value:n,$output:n,$initialValue:_,$originalValue:v,$validate:G,$validateSync:ie,$validateWithoutRaceconditions:K,$unwatch:H,$watch:V,$touch:U,$reset:W,$abort:ne,$extractDirtyFields:ue,$clearExternalErrors:se,$clearExternalIssues:le,$setExternalErrors:q,$setExternalIssues:ce,"~modifiers":T.$modifiers,...Ze(G)})}function at({rulesDef:n,state:r,path:i=``,cachePath:a,rootRules:o,externalErrors:c,externalIssues:l,schemaErrors:p,rootInitialState:g,rootSchemaErrors:v,validationGroups:x,initialState:S,originalState:w,fieldName:T,nestedReactiveRules:E,...D}){let O=t(),k,j=[],M=null,ee=null,P=null,F=null,I=null,L=f(void 0);async function R(t=!0){let o=Object.entries(n.value).filter(([e])=>e!==`$self`),s=Object.fromEntries(o.reduce((t,[n,o])=>{if(!o)return t;let s=m(r.value??{},n),u=m(()=>o),d=m(c?.value??{},n),f=m(l?.value??{},n),h=e(()=>p?.value?.[n]),g=m(S?.value??{},n);return t.push([n,ot({state:s,rulesDef:u,path:i?`${i}.${n}`:n,cachePath:a?`${a}.${n}`:n,externalErrors:d,externalIssues:f,schemaErrors:h,initialState:g,originalState:w?.[n],fieldName:n,...D})]),t},[])),u=Object.fromEntries(Array.from(new Set([...Object.keys(h(c)??{}),...Object.keys(h(l)??{})])).filter(e=>!(e in n.value)).map(t=>{let n=m(r.value??{},t),o=m(c?.value??{},t),s=m(l?.value??{},t),u=e(()=>p?.value?.[t]),d=m(S?.value??{},t),f=i?`${i}.${t}`:t,h=a?`${a}.${t}`:t;return[t,ot({state:n,rulesDef:e(()=>({})),path:f,cachePath:h,externalErrors:o,externalIssues:s,schemaErrors:u,initialState:d,originalState:w?.[t],fieldName:t,...D})]})),d=Object.fromEntries(Object.entries(h(p)??{}).map(([t])=>{let n=i?`${i}.${t}`:t,o=a?`${a}.${t}`:t,s=m(r.value??{},t),u=m(c?.value??{},t),d=m(l?.value??{},t),f=e(()=>p?.value?.[t]),h=m(S?.value??{},t);return[t,ot({state:s,rulesDef:e(()=>({})),path:n,cachePath:o,externalErrors:u,externalIssues:d,schemaErrors:f,initialState:h,originalState:w?.[t],fieldName:t,...D})]})),f=Object.fromEntries(Object.entries(r.value??{}).filter(([e])=>!(e in n.value)&&!(e in(u??{}))&&!(e in(d??{}))).map(([t])=>{let n=m(r.value??{},t),o=m(c?.value??{},t),s=m(l?.value??{},t),u=e(()=>p?.value?.[t]),d=m(S?.value??{},t);return[t,ot({state:n,rulesDef:e(()=>({})),path:i?`${i}.${t}`:t,cachePath:a?`${a}.${t}`:t,externalErrors:o,externalIssues:s,schemaErrors:u,initialState:d,originalState:w?.[t],fieldName:t,...D})]}));z.value={...s,...u,...d,...f},t&&U()}function te(){n.value.$self&&(L.value=nt({state:r,rulesDef:e(()=>n.value.$self??{}),path:i,cachePath:a,externalErrors:f(void 0),externalIssues:f(void 0),schemaErrors:f(void 0),initialState:S??f(void 0),originalState:w,fieldName:`$self`,...D}))}let z=D.storage.getFieldsEntry(a);R(),te();function B(){c&&(P=y(c,()=>{W(),R()},{deep:!0}))}function V(){l&&(F=y(l,()=>{W(),R()},{deep:!0}))}function H(){I=y(r,()=>{W(),R(),k.$autoDirty.value&&!k.$silent.value&&q(!1,!0),k.$clearExternalErrorsOnChange.value&&(G(),K())},{flush:`post`})}function U(){(o||E)&&(M?.(),M=y(n,()=>{W(),R()},{deep:!0,flush:`pre`}),B(),V()),v&&(ee?.(),ee=y(()=>v.value?Object.keys(v.value).sort().join(`\0`):``,()=>{W(),R()},{flush:`post`})),H(),k=O.run(()=>{let a=e({get:()=>r.value,set(e){W(),r.value=e,R(),k.$autoDirty.value&&!k.$silent.value&&q(!1,!0),k.$clearExternalErrorsOnChange.value&&(G(),K())}}),o=d(a),s=e({get:()=>r.value,set(e){W(),r.value=e,R()}}),c=e(()=>{let e=z.value,t=Object.keys(e);if(!t.length)return!1;for(let n of t)if(!e[n]?.$dirty)return!1;return!0}),l=e(()=>{let e=z.value;for(let t in e)if(e[t]?.$anyDirty)return!0;return!1}),p=e(()=>{if(L.value?.$invalid)return!0;let e=z.value,t=Object.entries(e);if(!t.length)return!1;for(let[e,n]of t)if(n?.$invalid)return!0;return!1}),m=e(()=>{let e=Object.entries(z.value).reduce((e,[t,n])=>((!we(n)||!n.$inactive)&&e.push([t,n]),e),[]),t=n.value.$self&&!A(n.value.$self);if(e.length||t){let t=L.value?.$correct??!0,n=!1;return n=D.schemaMode?e.every(([e,t])=>t.$correct):e.every(([e,t])=>we(t)?`required`in t.$rules&&t.$rules.required.$active?t.$correct:!t.$invalid&&!t.$pending&&!t.$isDebouncing:t?.$correct),t&&n}return!1}),g=e(()=>{if(L.value?.$error)return!0;let e=z.value;if(!Object.keys(e).length)return!1;for(let t in e)if(e[t]?.$error)return!0;return!1}),v=e(()=>h(D.options.rewardEarly)==null?!1:h(D.options.rewardEarly)),y=e(()=>h(D.options.silent)==null?!!v.value:h(D.options.silent)===!0),C=e(()=>h(D.options.autoDirty)==null?!0:h(D.options.autoDirty)===!0),E=e(()=>h(D.options.immediateDirty)==null?!1:Qe(h(D.options.immediateDirty))),O=e(()=>h(D.options.lazy)==null?!1:h(D.options.lazy)===!0),M=e(()=>h(D.options.clearExternalErrorsOnChange)==null?!0:h(D.options.clearExternalErrorsOnChange)===!0),N=e(()=>h(D.options.clearExternalErrorsOnValidate)==null?!1:h(D.options.clearExternalErrorsOnValidate)===!0),ee=e(()=>!(p.value||F.value)),P=f(!1),F=e(()=>{if(L.value?.$pending||P.value)return!0;let e=z.value;for(let t in e)if(e[t]?.$pending)return!0;return!1}),I=e(()=>{let e={...L.value&&{$self:L.value?.$issues??[]}};for(let t in z.value)e[t]=z.value[t]?.$issues;return e}),te=e(()=>{let e={...L.value&&{$self:L.value?.$errors??[]}};for(let t in z.value)e[t]=z.value[t]?.$errors;return e}),B=e(()=>{let e={...L.value&&{$self:L.value?.$silentErrors??[]}};for(let t in z.value)e[t]=z.value[t]?.$silentErrors;return e}),V=e(()=>{if(L.value?.$edited)return!0;if(!Object.keys(z.value).length)return!1;for(let e in z.value)if(!z.value[e]?.$edited)return!1;return!0}),H=e(()=>{if(L.value?.$anyEdited)return!0;for(let e in z.value)if(z.value[e]?.$anyEdited)return!0;return!1}),U=e(()=>T??D.options.id??`root`),ne=e(()=>({autoDirty:C.value,lazy:O.value,rewardEarly:v.value,silent:y.value,clearExternalErrorsOnChange:M.value,clearExternalErrorsOnValidate:N.value,immediateDirty:E.value,id:h(D.options.id),disabled:h(D.options.disabled)}));function re(){D.shortcuts?.nested&&Object.entries(D.shortcuts.nested).forEach(([e,n])=>{let a=t();ae[e]=a.run(()=>{let e=f();return b(()=>{e.value=n(u({$dirty:c,$path:i,$value:r,$output:r,$silentValue:s,$error:g,$originalValue:w,$pending:F,$invalid:p,$correct:m,$ready:ee,$anyDirty:l,$name:U,$silentErrors:B,$initialValue:S,$errors:te,$fields:z,$edited:V,$anyEdited:H,$issues:I,$self:L,"~modifiers":_(D.options)}))}),e}),j.push(a)})}let ie=e({get:()=>x?Object.fromEntries(Object.entries(x?.(z.value)??{}).map(([e,t])=>t.length?[e,{...Object.fromEntries([`$invalid`,`$error`,`$pending`,`$dirty`,`$correct`].map(e=>[e,le(t,e)])),...Object.fromEntries([`$errors`,`$silentErrors`].map(e=>[e,ue(t,e)]))}]:[])):{},set(){}}),ae={};return re(),{$dirty:c,$anyDirty:l,$invalid:p,$correct:m,$error:g,$pending:F,$issues:I,$errors:te,$silentErrors:B,$clearExternalErrorsOnValidate:N,$clearExternalErrorsOnChange:M,$ready:ee,$name:U,$shortcuts:ae,$groups:ie,$silentValue:s,$immediateDirty:E,$edited:V,$anyEdited:H,$localPending:P,$autoDirty:C,$silent:y,$value:a,$output:o,$modifiers:ne}})}function W(){if(M?.(),P?.(),F?.(),I?.(),ee?.(),j.forEach(e=>e.stop()),j=[],k={},z.value)for(let e of Object.values(z.value))e?.$unwatch()}function ne(e){c&&(c.value=e),K()}function G(){c&&!A(c.value)&&(c.value={})}function re(e){l&&(l.value=e),G()}function K(){l&&!A(l.value)&&(l.value={})}function ie(){k&&k.$immediateDirty.value!==`lazy-non-empty`&&et(k.$immediateDirty.value,S.value,g?.value??S.value)&&q(!0,!1)}function ae(e,t){if(P?.(),W(),!t)if(e?.toOriginalState)r.value=N({...w}),S.value=N({...w});else if(e?.toInitialState)r.value=N({...S.value});else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,S.value=N(t),r.value=N(t)}else S.value=N(r.value);if(!e?.keepValidationState){for(let t of Object.values(z.value))t?.$reset(e,!0);L.value?.$reset(e,!0)}e?.clearExternalErrors===!1&&(G(),K()),B(),V(),t||(R(),ie())}function q(e=!0,t=!1){for(let n of Object.values(z.value))n?.$touch(e,t);L.value?.$touch(e,t)}function oe(e){return e.filter(([e,t])=>C(t)&&!Se(t)?!(t&&typeof t==`object`&&`_null`in t)&&!A(t):Array.isArray(t)?t.length:!0)}function se(e=!0){let t=Object.entries(z.value).map(([t,n])=>[t,n.$extractDirtyFields(e)]);return e&&(t=oe(t)),Object.fromEntries(t)}function ce(){for(let e of Object.values(z.value))e.$abort();L.value?.$abort()}async function de(e){return e&&(r.value=e),await s(),J()}async function J(e){try{if(e&&(r.value=e),D.schemaMode)return D.onValidate?(q(!1),k.$localPending.value=!0,D.onValidate()):{valid:!1,data:r.value,errors:k.$errors.value,issues:k.$issues.value};{let e=r.value;ce(),k.$clearExternalErrorsOnValidate.value&&(G(),K());let t=[...Object.values(z.value).map(e=>e.$validateWithoutRaceconditions()),...L.value?[L.value?.$validateWithoutRaceconditions()]:[]];return{valid:(await Promise.allSettled(t)).every(e=>e.status===`fulfilled`&&e?.value?.valid===!0),data:e,errors:k.$errors.value,issues:k.$issues.value}}}catch{return{valid:!1,data:r.value,errors:k.$errors.value,issues:k.$issues.value}}finally{k.$localPending.value=!1}}function Y(e){try{return e&&(r.value=e),k.$clearExternalErrorsOnValidate.value&&(G(),K()),[...Object.values(z.value).map(e=>e.$validateSync()),...L.value?[L.value?.$validateSync()]:[]].every(e=>!!e)}catch{return!1}}ie();let{$shortcuts:fe,$localPending:X,...Z}=k,pe=u({...Z,...fe,$path:i,$initialValue:S,$originalValue:w,$self:L,$externalErrors:c,$externalIssues:l,$fields:z,$reset:ae,$touch:q,$validate:de,$unwatch:W,$watch:U,$setExternalErrors:ne,$setExternalIssues:re,$clearExternalErrors:G,$clearExternalIssues:K,$extractDirtyFields:se,$abort:ce,$validateSync:Y,$validateWithoutRaceconditions:J,...o?{"~modifiers":k.$modifiers}:{},...Ze(de)});return Object.defineProperty(pe,Symbol.for(`regle:instance`),{value:!0}),b(()=>{for(let e of Object.keys(pe).filter(e=>!e.startsWith(`$`)&&!e.startsWith(`~`)))delete pe[e];for(let e of Object.values(z.value))e?.$name&&Object.assign(pe,{[e.$name]:e})}),pe}function ot({rulesDef:e,...n}){if(ve(e,n.state))return it({rulesDef:e,...n});if(_e(n.state,e)){if(G(n.state))return at({rulesDef:e,...n});{let r=t().run(()=>{let e=m(n.state.value?n.state:f({}));return y(()=>n.state.value,t=>{e.value=t},{deep:!0}),y(e,e=>{n.state.value=e},{deep:!0}),{fakeState:e}}),{state:i,...a}=n;return at({rulesDef:e,...a,state:r.fakeState})}}else if(ye(e))return nt({rulesDef:a(e.value)?e.value:e,...n})}function st(e){return e&&C(e)&&Object.keys(e).some(e=>e.includes(`.`))?E(e):e}function ct(e){return Array.isArray(e)?e.length>0:C(e)&&Object.keys(e).length>0}function lt(e){return Array.isArray(e)?[]:{}}function ut(e){let t=f(),n=f(),r,i,a,o,s=!1;function c(){let t=lt(n.value??e.externalIssues?.value);n.value=t,e.externalIssues&&(e.externalIssues.value=t)}function l(){let n=lt(t.value??e.externalErrors?.value);t.value=n,e.externalErrors&&(e.externalErrors.value=n)}function u(n,r=!1){if(s)return;s=!0;let i=st(n);t.value=i,r&&e.externalErrors&&(e.externalErrors.value=i),ct(i)&&c(),s=!1}function d(t,r=!1){if(s)return;s=!0;let i=st(t);n.value=i,r&&e.externalIssues&&(e.externalIssues.value=i),ct(i)&&l(),s=!1}function p(){r?.(),a?.(),r=y(()=>e.externalErrors?.value,e=>u(e),{deep:!0}),a=y(()=>e.externalIssues?.value,e=>d(e),{deep:!0})}function m(){i?.(),o?.(),i=y(()=>t.value,e=>u(e,!0),{deep:!0}),o=y(()=>n.value,e=>d(e,!0),{deep:!0})}function h(){g(),u(e.externalErrors?.value),d(e.externalIssues?.value),m()}function g(){i?.(),r?.(),o?.(),a?.(),i=void 0,r=void 0,o=void 0,a=void 0}return{externalErrors:t,externalIssues:n,start:h,watchOptionRefs:p,stop:g}}function dt({initialState:e,originalState:n,options:i,scopeRules:a,state:o,customRules:c,shortcuts:u,schemaErrors:d,schemaMode:p=!1,onValidate:m,overrides:g}){let _=We(),v=f(!1),b=new Set,x,S=f(),C=ut(i),w;function T(){w=y(()=>h(i.disabled),async e=>{e?O():(E(),C.start(),C.watchOptionRefs())})}function E(){_e(o,a)?S.value=at({rootRules:a,rulesDef:a,state:o,customMessages:c?.(),storage:_,options:i,rootInitialState:e,externalErrors:C.externalErrors,externalIssues:C.externalIssues,validationGroups:i.validationGroups,initialState:e,originalState:n,shortcuts:u,fieldName:void 0,path:``,cachePath:``,schemaErrors:d,rootSchemaErrors:d,schemaMode:p,onValidate:m,overrides:g}):ye(a)&&(S.value=nt({rulesDef:a,state:o,customMessages:c?.(),storage:_,options:i,rootInitialState:e,externalErrors:C.externalErrors,externalIssues:C.externalIssues,initialState:e,originalState:n,shortcuts:u,fieldName:void 0,path:``,cachePath:``,schemaMode:p,schemaErrors:d,onValidate:m,overrides:g}))}function D(){w=void 0}function O(){S.value?.$unwatch(),C.stop()}function k(){v.value||(v.value=!0,x=t(!0),x.run(()=>{C.start(),E(),h(i.disabled)?s().then(()=>{S.value?.$unwatch()}):C.watchOptionRefs(),T()}))}function A(){v.value&&(v.value=!1,O(),w?.(),D(),x?.stop(),x=void 0,S.value=void 0,_.clearAll())}function j(){let e=r();!e||b.has(e)||(v.value||k(),b.add(e),l(()=>{b.delete(e),b.size||A()}))}k(),j();function M(){typeof window<`u`&&typeof __VUE_PROD_DEVTOOLS__<`u`&&__VUE_PROD_DEVTOOLS__&&!fe()&&S.value&&Ue(S.value,{name:h(i.id)})}return M(),{regle:S,bindToCurrentScope:j}}function ft({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),d=i(J,void 0)??{},m={...d.modifiers,...o},h=()=>({...d.rules?.(),...s?.()}),_={...d.shortcuts,...c},v={...d.overrides,...l},y={...m,...r},x,S=p(u??{});typeof n==`function`&&(x=b(()=>{S.value=n(t),g(S)}));let w=f(C(t.value)?{...N(t.value)}:N(t.value)),T=C(t.value)?{...N(t.value)}:N(t.value);se(()=>{x?.()});let{regle:E,bindToCurrentScope:D}=dt({scopeRules:S,state:t,options:y,initialState:w,originalState:T,customRules:h,shortcuts:_,overrides:v});return{regle:E,bindToCurrentScope:D}}function pt(t){let{rules:n,modifiers:r={},shortcuts:i,overrides:o}=t??{};function s(t,s,c){let l=a(t)?t:f(t),u=e(()=>h(c?.disabled)??!1),{regle:d,bindToCurrentScope:p}=ft({state:l,rulesFactory:s,options:c,globalOptions:r,customRules:n,shortcuts:i,overrides:o});return{r$:R(d,u,()=>{d.value||p()})}}return s}const mt=pt();function ht(){function e(e,t){return t}return e}const gt=ht();function _t(e,t){return w(h(e).$errors,String(t))}function vt(e,t){return w(h(e).$issues,String(t))}function yt(e){let t={};if(Object.entries(e).some(([e,t])=>be(t)||typeof t==`function`))return null;for(let n in e){let r=e[n];r&&C(r)&&`$each`in r&&r.$each&&C(r.$each)?t[n]=[yt(r.$each)]:C(r)&&!A(r)&&!Object.entries(r).some(([e,t])=>be(t)||typeof t==`function`)?t[n]=yt(r):t[n]=null}return t}function bt(t){let{rules:n,modifiers:r={},shortcuts:i,overrides:o}=t??{};function s(t,s){let c=a(t)?t:typeof t==`function`?void 0:e(()=>t),l=f(yt(c?.value)),u=e(()=>h(s?.disabled)??!1),{regle:d,bindToCurrentScope:p}=ft({state:l,rulesFactory:c,options:s,globalOptions:r,customRules:n,shortcuts:i,overrides:o});return R(d,u,()=>{d.value||p()})}return s}const xt=bt();function St(e){if(k(e)){let t=e,n=class extends t{constructor(...e){return super(...e),Ct(this)}};return Object.defineProperty(n,"name",{value:t.name}),Ct(n)}return Ct(e)}function Ct(e){return!D(e,Y.REGLE_STATIC)&&Object.isExtensible(e)&&O(e,Y.REGLE_STATIC,!0),e}function wt({rules:e,modifiers:t,shortcuts:n,overrides:r}){let i=pt({rules:e,modifiers:t,shortcuts:n,overrides:r}),a=bt({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:ht(),useRules:a}}function Tt(e,{rules:t,modifiers:n,shortcuts:r,overrides:i}){let a=e.__config??{},o=()=>({...a.rules?.(),...t?.()}),s=a.modifiers&&n?T(a.modifiers,n):a.modifiers??n,c=a.shortcuts&&r?T(a.shortcuts,r):a.shortcuts??r,l=a.overrides&&i?T(a.overrides,i):a.overrides??i,u=pt({rules:o,modifiers:s,shortcuts:c,overrides:l});return u.__config={rules:o,modifiers:s,shortcuts:c,overrides:l},{useRegle:u,inferRules:ht()}}function Et(e){return e}function Dt(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)}),y=e(()=>Object.entries(t).some(([e,t])=>t?.$anyEdited)),x=e(()=>r?Object.values(t):t);function S(e){Object.values(t).forEach(t=>{t.$reset(e)})}function C(){Object.values(t).forEach(e=>{e.$touch()})}function w(e=!0){return Object.values(t).map(t=>t.$extractDirtyFields(e))}function T(e){Object.values(t).forEach(t=>{t.$setExternalErrors(e)})}function E(e){Object.values(t).forEach(t=>{t.$setExternalIssues(e)})}function D(){Object.values(t).forEach(e=>{e.$clearExternalErrors()})}function O(){Object.values(t).forEach(e=>{e.$clearExternalIssues()})}function k(e){try{return e&&(i.value=e),Object.values(t).every(t=>t.$validateSync(e))}catch{return!1}}async function A(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 j=u({...!r&&{$silentValue:a},$errors:g,$issues:m,$silentIssues:h,$silentErrors:_,$instances:x,$value:i,$output:i,$dirty:o,$anyDirty:s,$invalid:c,$correct:l,$error:d,$pending:p,$ready:f,$edited:v,$anyEdited:y,$reset:S,$touch:C,$validate:A,$validateSync:k,$extractDirtyFields:w,$clearExternalErrors:D,$clearExternalIssues:O,$setExternalErrors:T,$setExternalIssues:E});return b(()=>{if(!r){for(let e of Object.keys(j).filter(e=>!e.startsWith(`$`)&&!e.startsWith(`~`)))delete j[e];for(let[e,t]of Object.entries(x.value))Object.assign(j,{[e]:t})}}),j}function Ot(t,n){function r(r){let i=e(()=>h(r)),a=u({});c();let o=f(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]={})}))}y(i,c),y(t,e=>{o.value=l(e)},{deep:!0});function l(e){return i.value?typeof i.value==`string`?Dt(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})})}),Dt(a,!n.asRecord)):Dt(e[`~~global`]??{},!n.asRecord)}return{r$:s.r$}}return{useCollectScope:r}}function kt(t,r){let i=r??mt;return{useScopedRegle:((r,a,o)=>{let{namespace:s,scopeKey:l,id:u,...d}=o??{};i.__config??={};let p=e(()=>u??l),m=e(()=>h(s)),g=f(`${Object.keys(t.value).length+1}-${oe()}`),_=e(()=>p.value??`instance-${g.value}`),{r$:v}=i(r,a,{...d,id:p.value});x(),se(b),y(m,(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??m.value;n?t.value[n]&&delete t.value[n][_.value]:t.value[`~~global`][_.value]&&delete t.value[`~~global`][_.value]}function x(){m.value?(t.value[m.value]||(t.value[m.value]={}),t.value[m.value][_.value]=v):(t.value[`~~global`]||(t.value[`~~global`]={}),t.value[`~~global`][_.value]=v)}return{r$:v,dispose:b,register:x}})}}function At(e){let t=(e?.customStore?()=>(e.customStore&&(e.customStore?.value[`~~global`]?e.customStore?.value&&(e.customStore.value={"~~global":{}}):e.customStore.value[`~~global`]={}),e.customStore):ce(()=>f({"~~global":{}})))(),{useScopedRegle:n}=kt(t,e?.customUseRegle),{useCollectScope:r}=Ot(t,{asRecord:e?.asRecord});return{useScopedRegle:n,useCollectScope:r}}const{useCollectScope:jt,useScopedRegle:Mt}=At(),Nt=jt,Pt=Mt;function Ft(t,n,r){let i=e(()=>h(t)[n]);return e(()=>r.find(e=>{if(e[n]&&`literal`in e[n]){let t=e[n].literal;if(be(t))return h(t._params?.[0])===i.value}})||r.find(e=>C(e[n])&&!Object.keys(e[n]).some(e=>e===`literal`))||{})}function It(e,t,n){return!!e&&t in e&&C(e[t])&&`$value`in e[t]&&e[t]?.$value===n}function Lt(e,t,n,r){let i=a(e)?m(e.value,`$fields`):m(e,`$fields`),o=f();return y(i,async()=>{await s(),It(i.value,t,n)?o.value=m(e).value:o.value=void 0},{immediate:!0,flush:`pre`}),o}function Rt(e){return e}function zt(e,t){return n=>T({...e},t(n))}var Bt=`1.27.2`;function Vt(e,t){let n=[],r=!1;we(e)?r=e[`~modifiers`]?.$disabled??!1:Ce(e)?r=e[`~modifiers`]?.disabled??!1:Q(e)&&(r=e[`~modifiers`]?.$disabled??!1);let i=we(e)?(`required`in e.$rules&&!e.$rules.required.$active||A(e.$rules))&&!e.$schemaMode:!1,a=Ce(e)||Q(e);return e.$error?n.push({label:`error`,textColor:X.ERROR.text,backgroundColor:X.ERROR.bg,tooltip:a?pe.ERROR:Z.ERROR}):e.$correct&&n.push({label:`correct`,textColor:X.CORRECT.text,backgroundColor:X.CORRECT.bg,tooltip:a?pe.CORRECT:Z.CORRECT}),e.$pending&&n.push({label:`pending`,textColor:X.PENDING.text,backgroundColor:X.PENDING.bg,tooltip:a?pe.PENDING:Z.PENDING}),r&&n.push({label:`disabled`,textColor:X.DISABLED.text,backgroundColor:X.DISABLED.bg,tooltip:Z.DISABLED}),i&&(n.push({label:`optional`,textColor:X.OPTIONAL.text,backgroundColor:X.OPTIONAL.bg,tooltip:Z.OPTIONAL}),!e.$invalid&&e.$dirty&&n.push({label:`valid`,textColor:X.VALID.text,backgroundColor:X.VALID.bg,tooltip:Z.VALID})),e.$dirty?n.push({label:`dirty`,textColor:X.DIRTY.text,backgroundColor:X.DIRTY.bg,tooltip:a?pe.DIRTY:Z.DIRTY}):i||n.push({label:`pristine`,textColor:X.PRISTINE.text,backgroundColor:X.PRISTINE.bg,tooltip:Z.PRISTINE}),t&&n.push({label:`<${t}.vue>`,textColor:X.COMPONENT.text,backgroundColor:X.COMPONENT.bg}),n}function Ht(e){let t=[];return e.$active?e.$valid?e.$valid&&t.push({label:`valid`,textColor:X.VALID.text,backgroundColor:X.VALID.bg,tooltip:me.VALID}):t.push({label:`invalid`,textColor:X.INVALID.text,backgroundColor:X.INVALID.bg,tooltip:me.INVALID}):t.push({label:`inactive`,textColor:X.INACTIVE.text,backgroundColor:X.INACTIVE.bg,tooltip:me.INACTIVE}),e.$pending&&t.push({label:`pending`,textColor:X.PENDING.text,backgroundColor:X.PENDING.bg,tooltip:me.PENDING}),t}function Ut(e,t,n){let r=[];return!e.$rules||typeof e.$rules!=`object`||Object.entries(e.$rules).forEach(([e,i])=>{if(i&&typeof i==`object`){let a=Ht(i);r.push({id:je(t,n,e),label:`⚙️ ${e}`,tags:a,children:[]})}}),r}function Wt(e,t,n){let r=[];if(!e.$each||!Array.isArray(e.$each))return r;if(e.$each.forEach((e,i)=>{if(e&&typeof e==`object`){let a=Vt(e),o=`${n}[${i}]`,s=[];Ce(e)?s=Gt(e.$fields,t,o):we(e)&&(s=Ut(e,t,o)),r.push({id:ke(t,o),label:`[${i}]`,tags:a,children:s})}}),e.$self&&typeof e.$self==`object`){let i=Vt(e.$self),a=`${n}[$self]`;r.unshift({id:ke(t,a),label:`$self`,tags:i,children:Ut(e.$self,t,a)})}return r}function Gt(e,t,n){let r=[];return Object.entries(e).forEach(([e,i])=>{if(i&&typeof i==`object`){let a=n?`${n}.${e}`:e,o=Vt(i),s=!1,c=!1,l=[];Q(i)?(l=Wt(i,t,a),s=!0,l.length===0&&(c=!0)):Ce(i)?l=Gt({...i.$fields,...i.$self&&{$self:i.$self}},t,a):we(i)&&(l=Ut(i,t,a));let u=l.filter(e=>e.label!==`$self`);r.push({id:ke(t,a),label:`${s?`${e}[${u.length}]`:e}${c?` (empty)`:``}`,tags:o,children:l})}}),r}function Kt(e,t){let n=[];return we(e)?Ut(e,t,`root`):(!(`$fields`in e)||typeof e.$fields!=`object`||Object.entries(e.$fields).forEach(([e,r])=>{if(r&&typeof r==`object`){let i=Vt(r),a=[],o=!1;Q(r)?(a=Wt(r,t,e),o=!0):Ce(r)?a=Gt({...r.$fields,...r.$self&&{$self:r.$self}},t,e):we(r)&&(a=Ut(r,t,e));let s=a.filter(e=>e.label!==`$self`);n.push({id:ke(t,e),label:`${o?`${e}[${s.length}]`:e}`,tags:i,children:a})}}),n)}function qt(e,t){let n=e.map(e=>{let{r$:t,id:n,name:r,componentName:i}=e;return{id:n,label:r,tags:Vt(t,i),children:Kt(t,n)}});return!t||t.trim()===``?n:Jt(n,t)}function Jt(e,t){let n=t.toLowerCase(),r=[];for(let i of e){let e=i.label.toLowerCase().includes(n),a=i.tags?.some(e=>e.label.toLowerCase().includes(n))??!1,o=i.children?Jt(i.children,t):[];(e||a||o.length>0)&&r.push({...i,children:o.length>0?o:i.children})}return r}function Yt(e){x({id:`regle-devtools`,label:`Regle`,logo:`https://reglejs.dev/logo_main.png`,packageName:`@regle/core`,homepage:`https://reglejs.dev`,componentStateTypes:[`Regles`],app:e},e=>{$.setApi(e),e.addInspector({id:ge.INSPECTOR,label:`Regle`,noSelectionText:`No instance selected`,icon:`rule`,treeFilterPlaceholder:`Filter state`,stateFilterPlaceholder:`Filter validation status`,actions:[{icon:`confirmation_number`,tooltip:`Log Regle version`,action:()=>{console.info(`Regle version`,Bt)}}],nodeActions:[{icon:`check`,tooltip:`Validate`,action:e=>{Le(e)}},{icon:`touch_app`,action:e=>{ze(e)},tooltip:`Touch the instance with $touch`},{icon:`refresh`,tooltip:`Reset validation state`,action:e=>{Re(e)}},{icon:`restore`,tooltip:`Restore to original state`,action:e=>{Re(e,!0)}}]}),$.notifyDevtools(),e.on.getInspectorTree(async e=>{if(e.inspectorId===ge.INSPECTOR){let t=qt($.getAll(),e.filter);t.length>0?e.rootNodes=t:e.rootNodes=[{id:`empty-regles`,label:`No Regles instances found`,children:[]}]}}),e.on.getInspectorState(t=>{if(t.inspectorId===ge.INSPECTOR){let n=Ie(t.nodeId,e=>$.get(e));n||e.sendInspectorTree(ge.INSPECTOR),n?t.state=n:t.state={}}}),e.on.editInspectorState(e=>{e.inspectorId===ge.INSPECTOR&&Be(e)})})}const Xt={install(e,t){e.provide(de,Bt),t&&e.provide(J,t),typeof window<`u`&&typeof __VUE_PROD_DEVTOOLS__<`u`&&__VUE_PROD_DEVTOOLS__&&!fe()&&Yt(e)}};export{te as InternalRuleType,Xt as RegleVuePlugin,U as createRule,At as createScopedUseRegle,Ft as createVariant,wt as defineRegleConfig,Et as defineRegleOptions,Rt as defineRules,Tt as extendRegleConfig,Je as flatErrors,_t as getErrors,vt as getIssues,gt as inferRules,ne as isRegleInstance,St as markStatic,Dt as mergeRegles,It as narrowVariant,zt as refineRules,z as unwrapRuleParameters,Nt as useCollectScope,mt as useRegle,dt as useRootStorage,xt as useRules,Pt as useScopedRegle,Lt 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,readonly as d,ref as f,shallowRef as p,toRef as m,toValue as h,triggerRef as g,unref as _,version as v,watch as y,watchEffect as b}from"vue";import{DevToolsMessagingHookKeys as x,DevToolsV6PluginAPIHookKeys as S,devtoolsContext as C,devtoolsState as w,getInspector as T}from"@vue/devtools-kit";import{onDevToolsClientConnected as E,setupDevtoolsPlugin as D}from"@vue/devtools-api";function O(e){return e?.constructor?.name==`File`}function k(e){return e&&(e instanceof Date||e.constructor.name==`File`||e.constructor.name==`FileList`)?!1:typeof e==`object`&&!!e&&!Array.isArray(e)}function A(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 j(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 M(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 N(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function P(e,t,n,r=!1){Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})}function F(e){return typeof e==`function`&&!!e.prototype&&`constructor`in e.prototype&&e.prototype.constructor===e}function I(e,t=!0,n=!0){return e==null?!0:e instanceof Date?isNaN(e.getTime()):O(e)?e.size<=0:Array.isArray(e)?t?e.length===0:!1:k(e)?e==null?!0:n?Object.keys(e).length===0:!1:!String(e).length}const L=Symbol(`regle-rule`);function R(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 z(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=>z(e,t+1)))),r==`Map`&&(n=new Map([...e].map(e=>[z(e[0],t+1),z(e[1],t+1)]))),r==`Date`&&(n=new Date(e.getTime())),r==`RegExp`&&(n=RegExp(e.source,R(e))),r==`Array`||r==`Object`){n=Array.isArray(e)?[]:{};for(let r in e)n[r]=z(e[r],t+1)}return n}function ee(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 B(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 te(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(!te(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(k(e)&&k(t)&&s&&(r||!r&&n)&&!te(e[s],t[s],n,!1))return!1}return!0}return e!==e&&t!==t}var V=class extends Error{constructor(e=`Promise was aborted`){super(e),this.name=`AbortError`}};function H(e){let t=new AbortController,{signal:n}=t,r=new Promise((t,r)=>{function i(){r(new V)}n.addEventListener(`abort`,i),e.then(e=>{n.removeEventListener(`abort`,i),n.aborted?r(new V):t(e)}).catch(e=>{n.removeEventListener(`abort`,i),n.aborted?r(new V):r(e)})});function i(e){t.abort(e)}return{promise:r,abort:i,signal:n}}function U(e,t,r){if(!a(e))return r?.(),u(e);let i=f(!1);return n()&&c(async()=>{await s(),typeof window<`u`&&window.requestAnimationFrame(()=>{i.value=!0})}),u(new Proxy({},{get(n,a,o){if(r?.(),t.value&&a!==`$value`&&i.value)return Reflect.get(n,a,o);if(e.value!==void 0)return _(Reflect.get(e.value,a,o))},set(t,n,i){return r?.(),a(e.value[n])&&!a(i)?e.value[n].value=i:e.value[n]=i,!0},deleteProperty(t,n){return r?.(),Reflect.deleteProperty(e.value,n)},has(t,n){return r?.(),e.value===void 0?!1:Reflect.has(e.value,n)},ownKeys(){return r?.(),e.value===void 0?[]:Object.keys(e.value)},getOwnPropertyDescriptor(){return r?.(),{enumerable:!0,configurable:!0}}}))}const W={Inline:`__inline`,Async:`__async`};function G(e){try{return e.map(e=>h(e))}catch{return[]}}function K(t){return t.map(t=>t instanceof Function?e(t):a(t)?t:m(()=>t))}function ne(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 q(e,...t){let{validator:n,type:r,async:i}=e,a=i||r===W.Async||n.constructor.name===`AsyncFunction`;return o({validator(n,...r){return e.validator(n,...G(r.length?r:t))},message(n){return typeof e.message==`function`?e.message({...n,$params:G(n?.$params?.length?n.$params:t)}):e.message},active(n){return typeof e.active==`function`?e.active({...n,$params:G(n?.$params?.length?n.$params:t)}):e.active??!0},tooltip(n){return typeof e.tooltip==`function`?e.tooltip({...n,$params:G(n?.$params?.length?n.$params:t)}):e.tooltip??[]},exec(n){let r=e.validator(n,...G(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:K(t),_brand:L})}function re(e){if(typeof e.validator==`function`){let t=[],n=e.async??e.validator.constructor.name===`AsyncFunction`,r=q({...e,async:n},...t);if(ne(e.validator)>1){let t=function(...t){return q(e,...t)};return t.validator=r.validator,t.message=r.message,t.active=r.active,t.tooltip=r.tooltip,t.type=r.type,t.exec=r.exec,t._validator=r.validator,t._message=r.message,t._active=r.active,t._tooltip=r.tooltip,t._type=e.type,t._message_pacthed=!1,t._tooltip_pacthed=!1,t._async=n,t}else return r}throw Error(`[createRule] validator must be a function`)}const J=Symbol.for(`regle:instance`);function Y(e){return typeof e==`object`&&!!e&&J in e}function ie(e){return k(e.value)}function ae(n,r,i){let a=t(),o;return o=n instanceof Function?a.run(()=>({computedEach:e(()=>n(r,i??0))})).computedEach:n,{scope:a,unwrapped:o}}const oe={LessThan:-1,EqualTo:0,GreaterThan:1};function se(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 oe.GreaterThan;if(i>t)return oe.LessThan;if(!isNaN(t)&&isNaN(i))return oe.GreaterThan;if(isNaN(t)&&!isNaN(i))return oe.LessThan}return oe.EqualTo}const ce=se(v,`3.5.0`)!==-1;function le(){return Math.floor(Math.random()*Date.now()).toString()}function X(){return typeof window>`u`?le():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function Z(e){return r()?(l(e),!0):!1}function ue(e){let n=!1,r,i=t(!0);return((...t)=>(n||=(r=i.run(()=>e(...t)),!0),r))}function de(e,t){return e.some(e=>t?e?.[t]:!1)}function fe(e,t){return t?e.reduce((e,n)=>{let r=n?.[t]||[];return e.concat(r)},[]):[]}const pe=Symbol(`regle`),me=Symbol(`regle-config`),he={REGLE_STATIC:`__regle_static`};function ge(){return!!(typeof globalThis<`u`&&(`__vitest_worker__`in globalThis||`__JEST_GLOBAL__`in globalThis||typeof window<`u`&&`Cypress`in window||typeof process<`u`&&process.env&&(process.env.VITEST||process.env.JEST_WORKER_ID||process.env.NODE_ENV===`test`||process.env.PLAYWRIGHT_TEST)))}const Q={ERROR:{text:16777215,bg:15680580},INVALID:{text:16777215,bg:16747520},CORRECT:{text:16777215,bg:1096065},VALID:{text:16777215,bg:292951},PENDING:{text:16777215,bg:16096779},DIRTY:{text:2042167,bg:16708551},COMPONENT:{text:16777215,bg:6514417},PRISTINE:{text:1120295,bg:16777215},INACTIVE:{text:0,bg:11581118},OPTIONAL:{text:0,bg:11581118},DISABLED:{text:15680580,bg:15067115}},_e={PRISTINE:`Field is not touched yet`,DIRTY:`Field have been touched`,ERROR:`Field has errors`,CORRECT:`Field is dirty and all actives rules are valid`,VALID:`Field rules are all valid`,PENDING:`Field is pending`,INACTIVE:`Field is inactive`,OPTIONAL:`Field is not required`,DISABLED:`Validation reactivity is paused by the disabled modifier`},ve={DIRTY:`All nested fields have been touched`,ERROR:`Some nested fields have errors`,CORRECT:`All nested fields are correct`,PENDING:`Some nested fields are pending`},ye={INACTIVE:`The rule is not active`,INVALID:`Rule is invalid`,VALID:`Rule is valid`,PENDING:`Rule validator is pending`},be={ROOT:[`$value`,`$invalid`,`$dirty`,`$error`,`$pending`,`$valid`,`$ready`],FIELD:[`$value`,`$invalid`,`$dirty`,`$error`,`$pending`,`$errors`]},xe={INSPECTOR:`regle-inspector`,COMPONENTS:`components`,TIMELINE:`regle-timeline`};async function Se(e,t){let n=T(e,t),r={app:t,inspectorId:e,filter:n?.treeFilter??``,rootNodes:[]};await C.hooks.callHookWith(async e=>{await Promise.all(e.map(e=>e(r)))},S.GET_INSPECTOR_TREE,r),await C.hooks.callHookWith(async t=>{await Promise.all(t.map(t=>t({inspectorId:e,rootNodes:r.rootNodes})))},x.SEND_INSPECTOR_TREE_TO_CLIENT,{inspectorId:e,rootNodes:r.rootNodes});let i=n?.selectedNodeId??``,a={app:t,inspectorId:e,nodeId:i,state:{}},o={currentTab:`custom-inspector:${e}`};i&&await C.hooks.callHookWith(async e=>{await Promise.all(e.map(e=>e(a,o)))},S.GET_INSPECTOR_STATE,a),await C.hooks.callHookWith(async t=>{await Promise.all(t.map(t=>t({inspectorId:e,nodeId:i,state:a.state})))},x.SEND_INSPECTOR_STATE_TO_CLIENT,{inspectorId:e,nodeId:i,state:a.state})}async function Ce(e,t){let n=xe.INSPECTOR;if(t&&(w.clientConnected||w.connected)){await Se(n,t);return}e.sendInspectorTree(n),e.sendInspectorState(n)}const we=`__REGLE_DEVTOOLS_REGISTRY__`;function Te(){let e=f(!1),t=p(),n=p(),r=p(new Map),i=p(new Map),a=f(0),o;function s(e,r){t.value=e,r&&(n.value=r)}function c(e,t){let n=++a.value,o=`${t?.uid?.toString()??`regle`}#${n}`,s=`r\$ #${t?.name??n}`;r.value.set(o,{id:o,name:s,r$:e,componentName:t?.componentName,filePath:t?.filePath});let c=y([()=>e.$value,()=>e.$externalErrors,()=>e.$externalIssues,()=>e.$error,()=>e.$invalid,()=>e.$pending],()=>u(),{deep:!0,flush:`post`});return i.value.set(o,c),window.requestAnimationFrame(()=>{l()}),o}function l(){t.value&&Ce(t.value,n.value)}function u(){o??=window.requestAnimationFrame(()=>{o=void 0,l()})}function d(e){let t=i.value.get(e);t&&(t(),i.value.delete(e)),r.value.delete(e),l()}function m(){return Array.from(r.value.values())}function h(e){return r.value.get(e)}function g(){i.value.forEach(e=>e()),i.value.clear(),r.value.clear(),l()}return{devtoolsApi:t,devtoolsApp:n,register:c,unregister:d,getAll:m,get:h,clear:g,setApi:s,notifyDevtools:l,loggedWarning:e}}function Ee(){if(typeof globalThis>`u`)return Te();let e=globalThis;return e[we]??=Te(),e[we]}const $=Ee();function De(e,t){if(typeof window>`u`||!(typeof __VUE_PROD_DEVTOOLS__<`u`&&__VUE_PROD_DEVTOOLS__)||ge())return()=>{};if(!i(pe,void 0)&&!$.loggedWarning.value&&$.devtoolsApi)return $.loggedWarning.value=!0,console.warn(`📏 Regle Devtools are not available. Install Regle plugin in your app to enable them. https://reglejs.dev/introduction/devtools`),()=>{};let r=n(),a=r?.type?.name||r?.type?.__name,o;r&&r.type&&typeof r.type==`object`&&`__file`in r.type&&(o=r.type.__file);let s=$.register(e,{name:t?.name,componentName:a,uid:r?.uid,filePath:o});function c(){$.unregister(s)}return Z(c),c}function Oe(){let e=p(new Map),t=p(new Map),n=p(new Map),i=p(new Map),a=p(new Map),o=p(new Map),s=p(new Map);function c(e){let n=t.value.get(e);if(n)return n;{let n=f({});return t.value.set(e,n),n}}function u(e){let t=n.value.get(e);if(t)return t;{let t=f([]);return n.value.set(e,t),t}}function d(e,t){o.value.set(e,t)}function m(e){return o.value.get(e)}function h(e,t,n){s.value.set(`${e}-${t}`,n)}function g(e,t){return s.value.get(`${e}-${t}`)}function _(e,t){e&&t!=null&&s.value.delete(`${e}-${t}`)}function v(e,t){i.value.set(e,t)}function y(e){return i.value.get(e)??!1}function b(t,n){e.value.set(t,n)}function x(t,n){let r=e.value.get(t);if(r)return S(n,r)?{valid:!0}:{valid:!1}}function S(e,t){let n=Object.keys(t),r=Object.keys(e);return r.length!==n.length||!r.every(e=>n.includes(e))?!1:r.every(n=>{let r=e[n],i=t[n];if(!i||!r||typeof r==`function`||typeof i==`function`||typeof r==`number`||typeof r==`boolean`||typeof r==`string`)return!1;if(`_params`in r){if(!r._params)return!0;if(Array.isArray(r._params))return r._params?.every((e,t)=>{if(typeof i==`number`||typeof i==`boolean`||typeof i==`string`)return!0;{let e=G(`_params`in i&&Array.isArray(i._params)?i._params:[]),n=G(r._params);return e?.[t]===n?.[t]}})}})}function C(e){let t=a.value.get(e);if(t)return t;{let t=f(!1),n=f(!0),r=f({}),i=f(!1);return a.value.set(e,{$pending:t,$valid:n,$metadata:r,$validating:i}),{$pending:t,$valid:n,$metadata:r,$validating:i}}}function w(){e.value.clear(),t.value.clear(),n.value.clear(),i.value.clear(),a.value.clear(),o.value.clear(),s.value.clear()}return r()&&l(w),{clearAll:w,addRuleDeclEntry:b,setDirtyEntry:v,checkRuleDeclEntry:x,getDirtyState:y,trySetRuleStatusRef:C,getFieldsEntry:c,getCollectionsEntry:u,getArrayStatus:g,addArrayStatus:h,deleteArrayStatus:_,arrayStatusStorage:s,addAdditionalRulesEntry:d,getAdditionalRulesEntry:m}}function ke(e,t){return!Pe(e.value)&&(ie(e)||k(t.value)&&!I(t.value)&&!Object.entries(t.value).some(([e,t])=>Me(t)||typeof t==`function`))}function Ae(e,t){return!!e.value&&k(e.value)&&`$each`in e.value||Array.isArray(t.value)}function je(e){return!!e.value&&(k(e.value)||ie(e.value))}function Me(e){return(k(e)||typeof e==`function`)&&`_validator`in e}function Ne(e){return typeof e.value==`function`?`_validator`in e.value:!0}function Pe(e){return k(e)&&N(e,he.REGLE_STATIC)&&e[he.REGLE_STATIC]===!0}function Fe(e){return k(e)&&`$fields`in e}function Ie(e){return!!e&&`$each`in e}function Le(e){return!!e&&`$rules`in e}function Re({field:e,silent:t=!1}){let n=Object.entries(e.$rules??{}).map(([n,r])=>{let i=``;if(t&&!r.$valid)i=r.$message;else if(!r.$valid&&e.$error&&!r.$validating)i=r.$message;else return null;return{$message:i,$property:e.fieldName,$rule:n,$type:r.$type,...typeof r.$metadata==`object`?r.$metadata:{}}}).filter(e=>!!e).reduce((e,t)=>(typeof t.$message==`string`?e.push(t):e.push(...t.$message.map(e=>({...t,$message:e}))),e),[]),r=e.$error&&e.$externalErrors&&Array.isArray(e.$externalErrors)&&!e.$externalIssues?.length?e.$externalErrors.map(t=>({$message:t,$property:e.fieldName,$rule:`external`,$type:void 0})):[],i=e.$error&&e.$externalIssues&&Array.isArray(e.$externalIssues)?e.$externalIssues.map(t=>({...t,$property:t.$property??e.fieldName,$rule:t.$rule??`external`})):[],a=[];return e.$schemaErrors&&e.$error&&(a=!Array.isArray(e.$schemaErrors)&&`$self`in e.$schemaErrors?e.$schemaErrors.$self??[]:e.$schemaErrors??[]),[...n,...r,...i,...a]}function ze({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 Be(e){return k(e)&&`$each`in e}function Ve(e,t){let{includePath:n=!1}=t??{};if(Array.isArray(e)&&e.every(e=>!k(e)))return e;if(Be(e)){let t=n?e.$self?.map(e=>({message:e,path:[]}))??[]:e.$self??[],r=e.$each?.map(e=>He(e,n))??[];return t?.concat(r.flat())}else return Object.entries(e).map(([e,t])=>He(t,n,[e])).flat()}function He(e,t=!1,n){let r=t&&!n?[]:n;if(Array.isArray(e)&&e.every(e=>!k(e)))return t?e.map(e=>({message:e,path:r??[]})):e;if(Be(e)){let n=r?.length?e.$self?.map(e=>({message:e,path:r??[]}))??[]:e.$self??[],i=e.$each?.map((e,n)=>He(e,t,r?.concat(n)))??[];return n?.concat(i.flat())}else return Object.entries(e).map(([e,n])=>He(n,t,r?.concat(e))).flat()}function Ue({customMessages:n,rule:r,ruleKey:i,state:a,path:o,cachePath:s,storage:c,modifiers:l}){let d=t(),p={},m,h=e(()=>Me(r.value)&&r.value._async),g=f(!1),_=0,{$pending:v,$valid:b,$metadata:x,$validating:S}=c.trySetRuleStatusRef(`${s}.${i}`);function C(){d=t(),p=d.run(()=>{let t=f(!1),s=f(!1),c=f(!0),l=f(!1),u=f(!1),d=e(()=>({$value:a.value,$error:s.value,$dirty:t.value,$pending:l.value,$correct:u.value,$invalid:c.value,$rule:{$valid:b.value,$invalid:!b.value,$pending:v.value},$params:S.value,...x.value})),p=e(()=>{try{return Ne(r)?typeof r.value.active==`function`?r.value.active(d.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(d.value):a),Ne(r)){let n=`_${e}_patched`;a&&!r.value[n]||(t=typeof r.value[e]==`function`?r.value[e](d.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 I(e)&&(e=`This field is not valid`),e}),g=e(()=>m(`tooltip`)),_=e(()=>Ne(r)&&r.value.type?r.value.type:i),y=e(()=>Ne(r)?r.value.validator:r.value),S=e(()=>typeof r.value==`function`?[]:G(r.value._params??[]));return{$active:p,$message:h,$type:_,$validator:y,$params:S,$path:e(()=>`${o}.${i}`),$tooltip:g,$fieldCorrect:u,$fieldError:s,$fieldDirty:t,$fieldPending:l,$fieldInvalid:c}}),m=y(p?.$params,()=>{(!l.$silent.value||l.$rewardEarly.value&&p.$fieldError.value)&&D()},{deep:ce?1:!0})}C();function w(){b.value=!0,p.$fieldDirty.value&&(v.value=!0)}async function T(e){let t=!1;try{let n=p.$validator.value;if(typeof n!=`function`)return console.error(`${o}: Incorrect rule format, it needs to be either a function or created with "createRule".`),!1;let r=n(a.value,...p.$params.value),i=a.value;w();let s;if(s=r instanceof Promise?await r:r,e!==_||a.value!==i)return b.value;if(typeof s==`boolean`)t=s;else{let{$valid:e,...n}=s;t=e,x.value=n}}catch{t=!1}finally{e===_&&(v.value=!1)}return t}function E(e,t=!0){if(Me(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 x.value=t,e}}return!0}async function D(){let e=++_;try{S.value=!0;let t=!1;if(g.value=!0,Me(r.value)&&r.value._async)t=await T(e);else{let e=p.$validator.value;t=E(e)}return e===_?(b.value=t,t):b.value}catch{return!1}finally{e===_&&(S.value=!1,g.value=!1)}}function O(){try{return S.value=!0,E(p.$validator.value)}catch{return!1}finally{S.value=!1}}function k(){_++,b.value=!0,x.value={},v.value=!1,S.value=!1,C()}function A(){m(),d.stop(),d=t()}return u({...p,$pending:v,$valid:b,$metadata:x,$haveAsync:h,$maybePending:g,$validating:S,$parse:D,$parseSync:O,$unwatch:A,$watch:C,$reset:k})}function We(e){return{"~standard":{version:1,vendor:`regle`,validate:async t=>{let{valid:n,data:r,errors:i}=await e(t,!0);return n?{value:r,issues:[]}:{issues:Ve(i,{includePath:!0})}}}}}function Ge(e){return e===!0?`eager`:e===!1||e==null?!1:e}function Ke(e){return k(e)&&!Pe(e)?Object.values(e).some(e=>Ke(e)):Array.isArray(e)?e.some(e=>Ke(e)):!I(e)}function qe(e,t){return Le(e)?!e.$inactive&&Ke(t):Fe(e)?Je(e.$self,e.$fields,t):Ie(e)&&Array.isArray(t)?e.$self&&qe(e.$self,t)?!0:e.$each.some((e,n)=>qe(e,t[n])):!1}function Je(e,t,n){if(e&&qe(e,n))return!0;if(!k(n)||Pe(n))return!1;let r=n;return Object.entries(t).some(([e,t])=>qe(t,r[e]))}function Ye(e,t,n,r=!1,i=!1){return e===`eager`?!0:e===`non-empty`?!r||i?!1:Ke(n):e===`lazy-non-empty`?Ke(t):!1}function Xe({state:n,rulesDef:r,customMessages:i,path:a,cachePath:o,fieldName:c,storage:l,options:d,externalErrors:p,externalIssues:g,schemaErrors:_,schemaMode:v,onUnwatch:x,$isArray:S,initialState:C,rootInitialState:w,originalState:T,shortcuts:E,overrides:D,onValidate:O}){let A=t(),j,M=[],N,P,F,L,R=()=>{},V,U=()=>{},W=f(!1),G=f(l.getAdditionalRulesEntry(o)??{});function K(e){G.value=e??{},l.addAdditionalRulesEntry(o,e??{}),q(),R()}function ne(e){K(e)}function q(){let e={...r.value,...G.value},t=[];for(let r in e){if(r.startsWith(`$`)||r.startsWith(`~`))continue;let s=e[r];if(!s)continue;let c=m(()=>s);t.push([r,Ue({modifiers:{$silent:j.$silent,$rewardEarly:j.$rewardEarly},customMessages:i,rule:c,ruleKey:r,state:n,path:a,cachePath:o,storage:l,$debounce:Z.value.$debounce})])}X.value=Object.fromEntries(t),l.addRuleDeclEntry(o,e)}function re(){let e={...r.value,...G.value},t=l.checkRuleDeclEntry(o,e),n={};for(let t in e)t.startsWith(`$`)&&(n[t]=e[t]);return Z.value=n,t}function J(){let e=re();oe(),q(),j.processShortcuts(),Y(),ie(),e?.valid!=null&&(j.$dirty.value=l.getDirtyState(o),(j.$dirty.value&&!j.$silent.value||j.$rewardEarly.value&&j.$error.value)&&R()),l.addRuleDeclEntry(o,r.value)}function Y(){R=j.$debounce.value>0?B(le,j.$debounce.value,{trackDebounceRef:W}):le}function ie(){U=j.$debounce.value>0?B(()=>{j.$dirty.value=!0},j.$debounce.value):()=>{j.$dirty.value=!0}}function ae(){if(X.value)for(let e of Object.values(X.value))e.$unwatch();P(),L?.(),j.$dirty.value&&l.setDirtyEntry(o,j.$dirty.value),N?.(),A.stop(),A=t();for(let e of M)e.stop();M=[],x?.(),F?.()}function oe(){if(X.value)for(let e of Object.values(X.value))e.$watch();j=A.run(()=>{let r=f(!1),i=f(!1),a=e(()=>r.value),o=e(()=>S||Pe(n.value)),s=e(()=>Z.value.$debounce==null?h(d.debounce)==null?j.$haveAnyAsyncRule.value?200:0:h(d.debounce):Z.value.$debounce),l=e(()=>Z.value.$deepCompare==null?!1:Z.value.$deepCompare),m=e(()=>Z.value.$lazy==null?h(d.lazy)==null?!1:h(d.lazy)===!0:Z.value.$lazy),y=e(()=>Z.value.$immediateDirty==null?h(d.immediateDirty)==null?!1:Ge(h(d.immediateDirty)):Ge(Z.value.$immediateDirty)),x=e(()=>Z.value.$rewardEarly==null?h(d.rewardEarly)==null?!1:h(d.rewardEarly)===!0:!!Z.value.$rewardEarly),w=e(()=>Z.value.$clearExternalErrorsOnChange==null?h(d.clearExternalErrorsOnChange)==null?!O.value:h(d.clearExternalErrorsOnChange)===!0:!!Z.value.$clearExternalErrorsOnChange),T=e(()=>Z.value.$clearExternalErrorsOnValidate==null?h(d.clearExternalErrorsOnValidate)==null?!1:h(d.clearExternalErrorsOnValidate)===!0:!!Z.value.$clearExternalErrorsOnValidate),O=e(()=>x.value?!0:Z.value.$silent==null?h(d.silent)==null?!1:h(d.silent)===!0:Z.value.$silent),k=e(()=>Z.value.$autoDirty==null?h(d.autoDirty)==null?!0:h(d.autoDirty)===!0:Z.value.$autoDirty),A=e(()=>{if(Z.value.$isEdited!=null)return Z.value.$isEdited;if(D?.isEdited!=null)return D.isEdited}),P=e(()=>{for(let e of Object.values(X.value))if(e.$validating)return!0;return!1}),F=e({get:()=>n.value,set(e){N(),n.value=e,se()}}),L=e(()=>W.value?re.value&&r.value:re.value&&!q.value&&r.value),R=e(()=>Re({field:{$rules:X.value,$error:L.value,$externalErrors:p?.value,$externalIssues:g?.value,$schemaErrors:_?.value,fieldName:J.value}})),z=e(()=>Re({field:{$rules:X.value,$error:L.value,$externalErrors:p?.value,$externalIssues:g?.value,$schemaErrors:_?.value,fieldName:J.value},silent:!0})),B=e(()=>R.value.map(e=>e.$message)),V=e(()=>z.value.map(e=>e.$message)),H=f(!1);function U(e,t){return t instanceof Date&&e instanceof Date?ee(t).getTime()!==ee(e).getTime():t==null?typeof e==`boolean`?t===void 0?e===!0:e!=null:e!=null&&e!==``:Array.isArray(e)&&Array.isArray(t)?!te(e,t,Z.value.$deepCompare):t!==e}b(()=>{r.value?A.value?H.value=A.value(n.value,C.value,U):H.value=U(n.value,C.value):H.value=!1});let G=e(()=>H.value),K=e(()=>ze({field:{$rules:X.value}})),ne=e(()=>!(re.value||q.value)),q=e(()=>i.value||!x.value?Object.entries(X.value).some(([e,t])=>t.$pending):!1),re=e(()=>p?.value?.length||g?.value?.length||_?.value?.length?!0:Y.value?!1:Object.values(X.value).some(e=>!e.$valid||e.$maybePending)),J=e(()=>c??d.id??`root`),Y=e(()=>!v&&!Object.keys(X.value).some(e=>!e.startsWith(`$`))),ie=e(()=>{if(p?.value?.length||g?.value?.length||Y.value||W.value)return!1;if(r.value&&!I(n.value)&&!P.value&&!q.value){if(v)return!_?.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}),ae=e(()=>Object.values(X.value).some(e=>e.$haveAsync)),oe=e(()=>({$debounce:s.value,$lazy:m.value,$rewardEarly:x.value,$autoDirty:k.value,$silent:O.value,$clearExternalErrorsOnChange:w.value,$clearExternalErrorsOnValidate:T.value,$immediateDirty:y.value,$isEdited:A.value,$disabled:h(d.disabled)??!1}));function ce(){E?.fields&&Object.entries(E.fields).forEach(([e,i])=>{let o=t();le[e]=o.run(()=>{let e=f();return b(()=>{e.value=i(u({$dirty:r,$externalErrors:p?.value??[],$externalIssues:g?.value??[],$value:n,$silentValue:F,$rules:X,$error:L,$pending:q,$invalid:re,$correct:ie,$errors:B,$ready:ne,$silentErrors:V,$anyDirty:a,$tooltips:K,$name:J,$inactive:Y,$edited:H,$anyEdited:G}))}),e}),M.push(o)})}let le={};return{$error:L,$pending:q,$invalid:re,$correct:ie,$debounce:s,$deepCompare:l,$lazy:m,$immediateDirty:y,$ready:ne,$issues:R,$silentIssues:z,$errors:B,$silentErrors:V,$rewardEarly:x,$autoDirty:k,$silent:O,$clearExternalErrorsOnChange:w,$clearExternalErrorsOnValidate:T,$anyDirty:a,$edited:H,$anyEdited:G,$name:J,$haveAnyAsyncRule:ae,$shortcuts:le,$validating:P,$tooltips:K,$dirty:r,processShortcuts:ce,$silentValue:F,$inactive:Y,$modifiers:oe,$isArrayOrRegleStatic:o}}),se(),P=y(j.$dirty,e=>{l.setDirtyEntry(o,e),Object.values(X.value).forEach(t=>{t.$fieldDirty=e})}),L=y([j.$error,j.$correct,j.$invalid,j.$pending],()=>{Object.values(X.value).forEach(e=>{e.$fieldError=j.$error.value,e.$fieldInvalid=j.$invalid.value,e.$fieldPending=j.$pending.value,e.$fieldCorrect=j.$correct.value})}),F=y(j.$haveAnyAsyncRule,Y)}function se(){N=y(n,()=>{j.$autoDirty.value&&!j.$silent.value&&(j.$dirty.value||U()),r.value instanceof Function&&J(),(!j.$silent.value||j.$rewardEarly.value&&j.$error.value)&&R(),j.$clearExternalErrorsOnChange.value&&(be(),Se())},{deep:j.$isArrayOrRegleStatic.value?!0:ce?1:!0})}async function le(){try{let{promise:e}=pe(Promise.allSettled(Object.values(X.value).map(e=>e.$parse())));await e}catch{}}let X=f({}),Z=f({});J();function ue(){Ye(j.$immediateDirty.value,C.value,w?.value??C.value,a===``,j.$inactive.value)&&(j.$dirty.value=!0)}function de(e,t){if(fe(),j.$dirty.value=!1,l.setDirtyEntry(o,!1),!t)if(e?.toOriginalState)n.value=z(T),C.value=z(T);else if(e?.toInitialState)n.value=z(C.value);else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,C.value=z(t),n.value=z(t)}else C.value=k(n.value)&&!Pe(n.value)?z(n.value):Array.isArray(n.value)?[...n.value]:n.value;if(e?.clearExternalErrors!==!1&&(be(),Se()),!t&&!e?.keepValidationState)for(let e of Object.values(X.value))e.$reset();if(!j.$lazy.value&&!j.$silent.value&&!t)for(let e of Object.values(X.value))e.$parse();ue()}function fe(){`cancel`in R&&R.cancel()}function pe(e){return V&&V.abort(),V=H(e),V}function me(){fe(),V&&V.abort()}function he(e=!0,t=!1){j.$dirty.value||U(),t&&e?(!j.$silent.value||j.$rewardEarly.value&&j.$error.value)&&(fe(),R()):e&&(fe(),R())}async function ge(e){return e&&(n.value=e),await s(),Q()}async function Q(e){try{if(e&&(n.value=e),v)return O?(he(!1),O()):{valid:!1,data:n.value,errors:j.$errors.value,issues:j.$issues.value};let t=n.value;if(j.$clearExternalErrorsOnValidate.value&&(be(),Se()),j.$autoDirty.value&&!j.$silent.value&&j.$dirty.value&&!j.$validating.value&&!j.$pending.value&&!W.value&&!I(X.value))return{valid:!j.$invalid.value,data:t,errors:j.$errors.value,issues:j.$issues.value};if(j.$dirty.value||(j.$dirty.value=!0),I(X.value))return{valid:!0,data:t,errors:j.$errors.value,issues:j.$issues.value};me();let{promise:r}=pe(Promise.allSettled(Object.values(X.value).map(e=>e.$parse()))),i=await r;return await s(),{valid:i.every(e=>e.status===`fulfilled`&&e.value===!0),data:t,errors:j.$errors.value,issues:j.$issues.value}}catch{return{valid:!1,data:n.value,errors:j.$errors.value,issues:j.$issues.value}}}function _e(e){try{return e&&(n.value=e),j.$dirty.value||(j.$dirty.value=!0),v?!1:(j.$clearExternalErrorsOnValidate.value&&(be(),Se()),Object.values(X.value).map(e=>e.$parseSync()).every(e=>!!e))}catch{return!1}}function ve(e=!0){return j.$dirty.value?n.value:e?{_null:!0}:null}function ye(e){p&&(p.value=e),Se()}function be(){p?.value?.length&&(p.value=[])}function xe(e){g&&(g.value=e),be()}function Se(){g?.value?.length&&(g.value=[])}!j.$lazy.value&&!j.$dirty.value&&!j.$silent.value&&le(),ue();let{$shortcuts:Ce,$validating:we,$autoDirty:Te,$rewardEarly:Ee,$clearExternalErrorsOnChange:$,$clearExternalErrorsOnValidate:De,$haveAnyAsyncRule:Oe,$debounce:ke,$lazy:Ae,...je}=j,Me=u({...je,$externalErrors:p,$externalIssues:g,$value:n,$output:n,$initialValue:C,$originalValue:T,$rules:X,...Ce,$path:a,$isDebouncing:W,$reset:de,$touch:he,$validate:ge,$validateSync:_e,$validateWithoutRaceconditions:Q,$unwatch:ae,$watch:oe,$extractDirtyFields:ve,$clearExternalErrors:be,$clearExternalIssues:Se,$abort:me,$addRules:K,addRules:ne,$schemaMode:v,"~modifiers":j.$modifiers,$setExternalErrors:ye,$setExternalIssues:xe,...We(ge)});return Object.defineProperty(Me,Symbol.for(`regle:instance`),{value:!0}),Me}function Ze({$id:t,path:n,cachePath:r,index:i,options:a,storage:o,stateValue:s,customMessages:c,rules:l,externalErrors:u,externalIssues:d,schemaErrors:p,initialState:g,originalState:_,shortcuts:v,fieldName:y,schemaMode:b,overrides:x,currentIndexes:S}){let C=e(()=>h(l)),w=s.value?.$id??C.value.$key??X(),T=`${r}.${String(w)}`,E=f(i),D=`${n}.${i}`;typeof s.value==`object`&&s.value!=null&&(s.value.$id||Object.defineProperties(s.value,{$id:{value:w,enumerable:!1,configurable:!1,writable:!1}}));let O=et({index:i,state:s,rulesDef:C,nestedReactiveRules:!0,customMessages:c,path:D,cachePath:T,storage:o,options:a,externalErrors:m(u?.value??[],i),externalIssues:m(d?.value??[],i),schemaErrors:e(()=>p?.value?.[E.value]),initialState:g,originalState:_,shortcuts:v,fieldName:y,schemaMode:b,overrides:x});return O&&(O.$id=s.value?.$id??String(w),S?.set(O.$id,E),o.addArrayStatus(t,O.$id,O)),s.value&&(!k(s.value)||Pe(s.value))&&b&&O?.$touch(),O}function Qe({state:n,rulesDef:r,customMessages:i,path:a,cachePath:o,storage:s,options:c,externalErrors:l,externalIssues:d,schemaErrors:p,schemaMode:g,initialState:_,originalState:v,shortcuts:x,fieldName:S,overrides:C}){let w=t(),T,E=t(),D,O=[];if(!Array.isArray(n.value)&&!r.value.$each)return;let k=f(),A=f(n.value),j=f({}),M,N,P=f({}),F=s.getCollectionsEntry(a),L=new Map;D=E.run(()=>({isPrimitiveArray:e(()=>n.value?.length?Array.isArray(n.value)&&n.value.length?n.value.every(e=>typeof e!=`object`):r.value.$each&&!(r.value.$each instanceof Function)?Object.values(r.value.$each).every(e=>Me(e)||typeof e==`function`):!1:!1)})),R(),V();function R(){j.value=Object.fromEntries(Object.entries(r.value).filter(([e])=>e.startsWith(`$`))),typeof n.value==`object`&&(n.value!=null&&!n.value?.$id&&n.value!==null?(k.value=X(),Object.defineProperties(n.value,{$id:{value:k.value,enumerable:!1,configurable:!1,writable:!1}})):n.value?.$id&&(k.value=n.value.$id)),A.value=P.value.$value,Array.isArray(n.value)&&(!D.isPrimitiveArray.value||g)?F.value=n.value.map((t,n)=>{let{scope:u,unwrapped:f}=ae(r.value.$each,m(()=>t),n);u&&O.push(u);let h=m(_.value??[],n),y=m(l?.value??{},`$each`),b=m(d?.value??{},`$each`),w=e(()=>p?.value?.$each);return Ze({$id:k.value,path:a,cachePath:o,customMessages:i,rules:f??{},stateValue:m(()=>t),index:n,options:c,storage:s,externalErrors:y,externalIssues:b,schemaErrors:w,initialState:h,originalState:v,shortcuts:x,fieldName:S,schemaMode:g,overrides:C,currentIndexes:L})||null}).filter(e=>!!e):(F.value=[],L.clear()),P.value=Xe({state:n,rulesDef:r,customMessages:i,path:a,cachePath:a,storage:s,options:c,externalErrors:m(l?.value??{},`$self`),externalIssues:m(d?.value??{},`$self`),schemaErrors:e(()=>p?.value?.$self),$isArray:!0,initialState:_,originalState:v,shortcuts:x,fieldName:S,schemaMode:g,overrides:C})}function ee(){if(Array.isArray(n.value)&&(!D.isPrimitiveArray.value||g)){let t=[...F.value],o=new Set;F.value=n.value.map((t,n)=>{let u=m(()=>t);if(t.$id&&F.value.find(e=>e.$id===t.$id)){let e=s.getArrayStatus(k.value,t.$id);if(e){let r=L.get(t.$id);return r&&(r.value=n),o.add(t.$id),e.$value=u,e}return null}else{let{scope:t,unwrapped:f}=ae(r.value.$each,u,n);t&&O.push(t);let h=m(l?.value??{},`$each`),y=m(d?.value??{},`$each`),b=e(()=>p?.value?.$each??[]),w=Ze({$id:k.value,path:a,cachePath:a,customMessages:i,rules:f??{},stateValue:u,index:n,options:c,storage:s,externalErrors:h,externalIssues:y,schemaErrors:b,initialState:m(_.value??[],n),originalState:v,shortcuts:x,fieldName:S,schemaMode:g,overrides:C,currentIndexes:L});return w?(w.$id&&o.add(w.$id),w):null}}).filter(e=>!!e),t.filter(e=>!n.value?.find(t=>e.$id===t.$id)).forEach((e,t)=>{s.deleteArrayStatus(k.value,t.toString())});for(let e of L.keys())o.has(e)||L.delete(e)}else F.value=[],L.clear()}function B(){M=y(n,()=>{N?.(),n.value!=null&&!Object.hasOwn(n.value,`$id`)&&!k.value?R():ee(),te()},{deep:ce?1:!0,flush:`pre`}),te()}function te(){N=y(n,()=>{T.$autoDirty.value&&!T.$silent.value&&P.value.$touch(!1,!0)},{flush:`post`})}function V(){B(),w=t(),T=w.run(()=>{let r=e({get:()=>n.value,set(e){M?.(),N?.(),n.value=e,B()}}),i=e(()=>P.value.$dirty&&(!F.value.length||F.value.every(e=>e.$dirty))),o=e(()=>P.value.$anyDirty||F.value.some(e=>e.$anyDirty)),s=e(()=>P.value.$invalid||F.value.some(e=>e.$invalid)),l=e(()=>(g?P.value.$correct:I(P.value.$rules)?!0:P.value.$correct)&&(!F.value.length||F.value.every(e=>e.$correct||e.$anyDirty&&!e.$invalid))),d=e(()=>P.value.$error||F.value.some(e=>e.$error)),p=e(()=>!(s.value||m.value)),m=e(()=>P.value.$pending||F.value.some(e=>e.$pending)),y=e(()=>!!F.value.length&&F.value.every(e=>e.$edited)),w=e(()=>P.value.$anyEdited||F.value.some(e=>e.$anyEdited)),T=e(()=>({$self:P.value.$issues,$each:F.value.map(e=>e.$issues)})),E=e(()=>({$self:P.value.$errors,$each:F.value.map(e=>e.$errors)})),D=e(()=>({$self:P.value.$silentErrors,$each:F.value.map(e=>e.$silentErrors)})),k=e(()=>j.value.$rewardEarly==null?h(c.rewardEarly)==null?!1:h(c.rewardEarly)===!0:j.value.$rewardEarly),A=e(()=>k.value?!0:j.value.$silent==null?h(c.silent)==null?!1:h(c.silent)===!0:j.value.$silent),L=e(()=>j.value.$autoDirty==null?h(c.autoDirty)==null?!0:h(c.autoDirty)===!0:j.value.$autoDirty),R=e(()=>j.value.$immediateDirty==null?h(c.immediateDirty)==null?!1:Ge(h(c.immediateDirty)):Ge(j.value.$immediateDirty)),z=e(()=>j.value.$clearExternalErrorsOnChange==null?h(c.clearExternalErrorsOnChange)==null?!0:h(c.clearExternalErrorsOnChange)===!0:j.value.$clearExternalErrorsOnChange),ee=e(()=>j.value.$clearExternalErrorsOnValidate==null?h(c.clearExternalErrorsOnValidate)==null?!1:h(c.clearExternalErrorsOnValidate)===!0:j.value.$clearExternalErrorsOnValidate),te=e(()=>{if(j.value.$isEdited!=null)return j.value.$isEdited;if(C?.isEdited!=null)return C.isEdited}),V=e(()=>S??c.id??`root`),H=e(()=>({$deepCompare:j.value.$deepCompare??!1,$debounce:j.value.$debounce??h(c.debounce)??0,$lazy:j.value.$lazy??!1,$rewardEarly:k.value,$autoDirty:L.value,$silent:A.value,$clearExternalErrorsOnChange:z.value,$clearExternalErrorsOnValidate:ee.value,$immediateDirty:R.value,$isEdited:te.value,$disabled:h(c.disabled)??!1}));function U(){x?.collections&&Object.entries(x?.collections).forEach(([e,c])=>{let h=t();W[e]=h.run(()=>{let e=f();return b(()=>{e.value=c(u({$dirty:i,$error:d,$path:a,$silentValue:r,$pending:m,$invalid:s,$correct:l,$errors:E,$silentErrors:D,$initialValue:_,$originalValue:v,$ready:p,$anyDirty:o,$name:V,$each:F,$self:P,$value:n,$output:n,$edited:y,$anyEdited:w,$issues:T}))}),e}),O.push(h)})}let W={};return U(),{$dirty:i,$anyDirty:o,$invalid:s,$correct:l,$error:d,$pending:m,$errors:E,$silentErrors:D,$ready:p,$name:V,$shortcuts:W,$silentValue:r,$edited:y,$anyEdited:w,$rewardEarly:k,$silent:A,$autoDirty:L,$issues:T,$modifiers:H}}),D.isPrimitiveArray.value&&r.value.$each&&console.warn(`${a} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`)}function H(){M?.(),P.value&&P.value.$unwatch(),F.value&&F.value.forEach(e=>{`$dirty`in e&&e.$unwatch()}),w.stop(),w=t(),E.stop(),E=t(!0),O.forEach(e=>e.stop()),O=[]}function U(e=!0,t=!1){P.value.$touch(e,t),F.value.forEach(n=>{n.$touch(e,t)})}function W(e,t){if(H(),!t)if(e?.toOriginalState)n.value=z(v),_.value=z(v);else if(e?.toInitialState)n.value=z(_.value);else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,_.value=z(t),n.value=z(t)}else _.value=z(n.value);e?.clearExternalErrors!==!1&&(J(),ie()),e?.keepValidationState||(P.value.$reset(e,t),F.value.forEach(t=>{t.$reset(e,!0)})),t||R()}function G(){P.value.$abort(),F.value.forEach(e=>{e.$abort()})}async function K(e){return e&&(n.value=e),ne()}async function ne(e){e&&(n.value=e);let t=n.value;try{return G(),{valid:(await Promise.allSettled([P.value.$validateWithoutRaceconditions(e),...F.value.map(e=>e.$validateWithoutRaceconditions())])).every(e=>e.status===`fulfilled`?e.value.valid===!0:!1),data:t,errors:T.$errors.value,issues:T.$issues.value}}catch{return{valid:!1,data:t,errors:T.$errors.value,issues:T.$issues.value}}}function q(e){e&&(n.value=e);try{return[P.value.$validateSync(e),...F.value.map(e=>e.$validateSync())].every(e=>!!e)}catch{return!1}}function re(e){l&&(l.value=e),ie()}function J(){P.value.$clearExternalErrors(),F.value.forEach(e=>{e.$clearExternalErrors()})}function Y(e){d&&(d.value=e),J()}function ie(){P.value.$clearExternalIssues(),F.value.forEach(e=>{e.$clearExternalIssues()})}function oe(e=!0){let t=F.value.map(t=>{if(Fe(t))return t.$extractDirtyFields(e)});return e&&t.every(e=>I(e))&&(t=[]),t}let{$shortcuts:se,...le}=T;return u({$self:P,...le,...se,$path:a,$each:F,$value:n,$output:n,$initialValue:_,$originalValue:v,$validate:K,$validateSync:q,$validateWithoutRaceconditions:ne,$unwatch:H,$watch:V,$touch:U,$reset:W,$abort:G,$extractDirtyFields:oe,$clearExternalErrors:J,$clearExternalIssues:ie,$setExternalErrors:re,$setExternalIssues:Y,"~modifiers":T.$modifiers,...We(K)})}function $e({rulesDef:n,state:r,path:i=``,cachePath:a,rootRules:o,externalErrors:c,externalIssues:l,schemaErrors:p,rootInitialState:g,rootSchemaErrors:v,validationGroups:x,initialState:S,originalState:C,fieldName:w,nestedReactiveRules:T,...E}){let D=t(),O,A=[],j=null,M=null,N=null,P=null,F=null,L=f(void 0);async function R(t=!0){let o=Object.entries(n.value).filter(([e])=>e!==`$self`),s=Object.fromEntries(o.reduce((t,[n,o])=>{if(!o)return t;let s=m(r.value??{},n),u=m(()=>o),d=m(c?.value??{},n),f=m(l?.value??{},n),h=e(()=>p?.value?.[n]),g=m(S?.value??{},n);return t.push([n,et({state:s,rulesDef:u,path:i?`${i}.${n}`:n,cachePath:a?`${a}.${n}`:n,externalErrors:d,externalIssues:f,schemaErrors:h,initialState:g,originalState:C?.[n],fieldName:n,...E})]),t},[])),u=Object.fromEntries(Array.from(new Set([...Object.keys(h(c)??{}),...Object.keys(h(l)??{})])).filter(e=>!(e in n.value)).map(t=>{let n=m(r.value??{},t),o=m(c?.value??{},t),s=m(l?.value??{},t),u=e(()=>p?.value?.[t]),d=m(S?.value??{},t),f=i?`${i}.${t}`:t,h=a?`${a}.${t}`:t;return[t,et({state:n,rulesDef:e(()=>({})),path:f,cachePath:h,externalErrors:o,externalIssues:s,schemaErrors:u,initialState:d,originalState:C?.[t],fieldName:t,...E})]})),d=Object.fromEntries(Object.entries(h(p)??{}).map(([t])=>{let n=i?`${i}.${t}`:t,o=a?`${a}.${t}`:t,s=m(r.value??{},t),u=m(c?.value??{},t),d=m(l?.value??{},t),f=e(()=>p?.value?.[t]),h=m(S?.value??{},t);return[t,et({state:s,rulesDef:e(()=>({})),path:n,cachePath:o,externalErrors:u,externalIssues:d,schemaErrors:f,initialState:h,originalState:C?.[t],fieldName:t,...E})]})),f=Object.fromEntries(Object.entries(r.value??{}).filter(([e])=>!(e in n.value)&&!(e in(u??{}))&&!(e in(d??{}))).map(([t])=>{let n=m(r.value??{},t),o=m(c?.value??{},t),s=m(l?.value??{},t),u=e(()=>p?.value?.[t]),d=m(S?.value??{},t);return[t,et({state:n,rulesDef:e(()=>({})),path:i?`${i}.${t}`:t,cachePath:a?`${a}.${t}`:t,externalErrors:o,externalIssues:s,schemaErrors:u,initialState:d,originalState:C?.[t],fieldName:t,...E})]}));B.value={...s,...u,...d,...f},t&&U()}function ee(){n.value.$self&&(L.value=Xe({state:r,rulesDef:e(()=>n.value.$self??{}),path:i,cachePath:a,externalErrors:f(void 0),externalIssues:f(void 0),schemaErrors:f(void 0),initialState:S??f(void 0),originalState:C,fieldName:`$self`,...E}))}let B=E.storage.getFieldsEntry(a);R(),ee();function te(){c&&(N=y(c,()=>{W(),R()},{deep:!0}))}function V(){l&&(P=y(l,()=>{W(),R()},{deep:!0}))}function H(){F=y(r,()=>{W(),R(),O.$autoDirty.value&&!O.$silent.value&&Y(!1,!0),O.$clearExternalErrorsOnChange.value&&(K(),q())},{flush:`post`})}function U(){(o||T)&&(j?.(),j=y(n,()=>{W(),R()},{deep:!0,flush:`pre`}),te(),V()),v&&(M?.(),M=y(()=>v.value?Object.keys(v.value).sort().join(`\0`):``,()=>{W(),R()},{flush:`post`})),H(),O=D.run(()=>{let a=e({get:()=>r.value,set(e){W(),r.value=e,R(),O.$autoDirty.value&&!O.$silent.value&&Y(!1,!0),O.$clearExternalErrorsOnChange.value&&(K(),q())}}),o=d(a),s=e({get:()=>r.value,set(e){W(),r.value=e,R()}}),c=e(()=>{let e=B.value,t=Object.keys(e);if(!t.length)return!1;for(let n of t)if(!e[n]?.$dirty)return!1;return!0}),l=e(()=>{let e=B.value;for(let t in e)if(e[t]?.$anyDirty)return!0;return!1}),p=e(()=>{if(L.value?.$invalid)return!0;let e=B.value,t=Object.entries(e);if(!t.length)return!1;for(let[e,n]of t)if(n?.$invalid)return!0;return!1}),m=e(()=>{let e=Object.entries(B.value).reduce((e,[t,n])=>((!Le(n)||!n.$inactive)&&e.push([t,n]),e),[]),t=n.value.$self&&!I(n.value.$self);if(e.length||t){let t=L.value?.$correct??!0,n=!1;return n=E.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}),g=e(()=>{if(L.value?.$error)return!0;let e=B.value;if(!Object.keys(e).length)return!1;for(let t in e)if(e[t]?.$error)return!0;return!1}),v=e(()=>h(E.options.rewardEarly)==null?!1:h(E.options.rewardEarly)),y=e(()=>h(E.options.silent)==null?!!v.value:h(E.options.silent)===!0),T=e(()=>h(E.options.autoDirty)==null?!0:h(E.options.autoDirty)===!0),D=e(()=>h(E.options.immediateDirty)==null?!1:Ge(h(E.options.immediateDirty))),k=e(()=>h(E.options.lazy)==null?!1:h(E.options.lazy)===!0),j=e(()=>h(E.options.clearExternalErrorsOnChange)==null?!0:h(E.options.clearExternalErrorsOnChange)===!0),M=e(()=>h(E.options.clearExternalErrorsOnValidate)==null?!1:h(E.options.clearExternalErrorsOnValidate)===!0),N=e(()=>!(p.value||F.value)),P=f(!1),F=e(()=>{if(L.value?.$pending||P.value)return!0;let e=B.value;for(let t in e)if(e[t]?.$pending)return!0;return!1}),z=e(()=>{let e={...L.value&&{$self:L.value?.$issues??[]}};for(let t in B.value)e[t]=B.value[t]?.$issues;return e}),ee=e(()=>{let e={...L.value&&{$self:L.value?.$errors??[]}};for(let t in B.value)e[t]=B.value[t]?.$errors;return e}),te=e(()=>{let e={...L.value&&{$self:L.value?.$silentErrors??[]}};for(let t in B.value)e[t]=B.value[t]?.$silentErrors;return e}),V=e(()=>{if(L.value?.$edited)return!0;if(!Object.keys(B.value).length)return!1;for(let e in B.value)if(!B.value[e]?.$edited)return!1;return!0}),H=e(()=>{if(L.value?.$anyEdited)return!0;for(let e in B.value)if(B.value[e]?.$anyEdited)return!0;return!1}),U=e(()=>w??E.options.id??`root`),G=e(()=>({autoDirty:T.value,lazy:k.value,rewardEarly:v.value,silent:y.value,clearExternalErrorsOnChange:j.value,clearExternalErrorsOnValidate:M.value,immediateDirty:D.value,id:h(E.options.id),disabled:h(E.options.disabled)}));function ne(){E.shortcuts?.nested&&Object.entries(E.shortcuts.nested).forEach(([e,n])=>{let a=t();J[e]=a.run(()=>{let e=f();return b(()=>{e.value=n(u({$dirty:c,$path:i,$value:r,$output:r,$silentValue:s,$error:g,$originalValue:C,$pending:F,$invalid:p,$correct:m,$ready:N,$anyDirty:l,$name:U,$silentErrors:te,$initialValue:S,$errors:ee,$fields:B,$edited:V,$anyEdited:H,$issues:z,$self:L,"~modifiers":_(E.options)}))}),e}),A.push(a)})}let re=e({get:()=>x?Object.fromEntries(Object.entries(x?.(B.value)??{}).map(([e,t])=>t.length?[e,{...Object.fromEntries([`$invalid`,`$error`,`$pending`,`$dirty`,`$correct`].map(e=>[e,de(t,e)])),...Object.fromEntries([`$errors`,`$silentErrors`].map(e=>[e,fe(t,e)]))}]:[])):{},set(){}}),J={};return ne(),{$dirty:c,$anyDirty:l,$invalid:p,$correct:m,$error:g,$pending:F,$issues:z,$errors:ee,$silentErrors:te,$clearExternalErrorsOnValidate:M,$clearExternalErrorsOnChange:j,$ready:N,$name:U,$shortcuts:J,$groups:re,$silentValue:s,$immediateDirty:D,$edited:V,$anyEdited:H,$localPending:P,$autoDirty:T,$silent:y,$value:a,$output:o,$modifiers:G}})}function W(){if(j?.(),N?.(),P?.(),F?.(),M?.(),A.forEach(e=>e.stop()),A=[],O={},B.value)for(let e of Object.values(B.value))e?.$unwatch()}function G(e){c&&(c.value=e),q()}function K(){c&&!I(c.value)&&(c.value={})}function ne(e){l&&(l.value=e),K()}function q(){l&&!I(l.value)&&(l.value={})}function re(){if(!O)return;let e=O.$immediateDirty.value;(e===`eager`||e===`non-empty`&&Je(L.value,B.value,S.value))&&Y(!0,!1)}function J(e,t){if(N?.(),W(),!t)if(e?.toOriginalState)r.value=z({...C}),S.value=z({...C});else if(e?.toInitialState)r.value=z({...S.value});else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,S.value=z(t),r.value=z(t)}else S.value=z(r.value);if(!e?.keepValidationState){for(let t of Object.values(B.value))t?.$reset(e,!0);L.value?.$reset(e,!0)}e?.clearExternalErrors!==!1&&(K(),q()),te(),V(),t||(R(),re())}function Y(e=!0,t=!1){for(let n of Object.values(B.value))n?.$touch(e,t);L.value?.$touch(e,t)}function ie(e){return e.filter(([e,t])=>k(t)&&!Pe(t)?!(t&&typeof t==`object`&&`_null`in t)&&!I(t):Array.isArray(t)?t.length:!0)}function ae(e=!0){let t=Object.entries(B.value).map(([t,n])=>[t,n.$extractDirtyFields(e)]);return e&&(t=ie(t)),Object.fromEntries(t)}function oe(){for(let e of Object.values(B.value))e.$abort();L.value?.$abort()}async function se(e){return e&&(r.value=e),await s(),ce()}async function ce(e){try{if(e&&(r.value=e),E.schemaMode)return E.onValidate?(Y(!1),O.$localPending.value=!0,E.onValidate()):{valid:!1,data:r.value,errors:O.$errors.value,issues:O.$issues.value};{let e=r.value;oe(),O.$clearExternalErrorsOnValidate.value&&(K(),q());let t=[...Object.values(B.value).map(e=>e.$validateWithoutRaceconditions()),...L.value?[L.value?.$validateWithoutRaceconditions()]:[]];return{valid:(await Promise.allSettled(t)).every(e=>e.status===`fulfilled`&&e?.value?.valid===!0),data:e,errors:O.$errors.value,issues:O.$issues.value}}}catch{return{valid:!1,data:r.value,errors:O.$errors.value,issues:O.$issues.value}}finally{O.$localPending.value=!1}}function le(e){try{return e&&(r.value=e),O.$clearExternalErrorsOnValidate.value&&(K(),q()),[...Object.values(B.value).map(e=>e.$validateSync()),...L.value?[L.value?.$validateSync()]:[]].every(e=>!!e)}catch{return!1}}re();let{$shortcuts:X,$localPending:Z,...ue}=O,pe=u({...ue,...X,$path:i,$initialValue:S,$originalValue:C,$self:L,$externalErrors:c,$externalIssues:l,$fields:B,$reset:J,$touch:Y,$validate:se,$unwatch:W,$watch:U,$setExternalErrors:G,$setExternalIssues:ne,$clearExternalErrors:K,$clearExternalIssues:q,$extractDirtyFields:ae,$abort:oe,$validateSync:le,$validateWithoutRaceconditions:ce,...o?{"~modifiers":O.$modifiers}:{},...We(se)});return Object.defineProperty(pe,Symbol.for(`regle:instance`),{value:!0}),b(()=>{for(let e of Object.keys(pe).filter(e=>!e.startsWith(`$`)&&!e.startsWith(`~`)))delete pe[e];for(let e of Object.values(B.value))e?.$name&&Object.assign(pe,{[e.$name]:e})}),pe}function et({rulesDef:e,...n}){if(Ae(e,n.state))return Qe({rulesDef:e,...n});if(ke(n.state,e)){if(ie(n.state))return $e({rulesDef:e,...n});{let r=t().run(()=>{let e=m(n.state.value?n.state:f({}));return y(()=>n.state.value,t=>{e.value=t},{deep:!0}),y(e,e=>{n.state.value=e},{deep:!0}),{fakeState:e}}),{state:i,...a}=n;return $e({rulesDef:e,...a,state:r.fakeState})}}else if(je(e))return Xe({rulesDef:a(e.value)?e.value:e,...n})}function tt(e){return e&&k(e)&&Object.keys(e).some(e=>e.includes(`.`))?M(e):e}function nt(e){return Array.isArray(e)?e.length>0:k(e)&&Object.keys(e).length>0}function rt(e){return Array.isArray(e)?[]:{}}function it(e){let t=f(),n=f(),r,i,a,o,s=!1;function c(){let t=rt(n.value??e.externalIssues?.value);n.value=t,e.externalIssues&&(e.externalIssues.value=t)}function l(){let n=rt(t.value??e.externalErrors?.value);t.value=n,e.externalErrors&&(e.externalErrors.value=n)}function u(n,r=!1){if(s)return;s=!0;let i=tt(n);t.value=i,r&&e.externalErrors&&(e.externalErrors.value=i),nt(i)&&c(),s=!1}function d(t,r=!1){if(s)return;s=!0;let i=tt(t);n.value=i,r&&e.externalIssues&&(e.externalIssues.value=i),nt(i)&&l(),s=!1}function p(){r?.(),a?.(),r=y(()=>e.externalErrors?.value,e=>u(e),{deep:!0}),a=y(()=>e.externalIssues?.value,e=>d(e),{deep:!0})}function m(){i?.(),o?.(),i=y(()=>t.value,e=>u(e,!0),{deep:!0}),o=y(()=>n.value,e=>d(e,!0),{deep:!0})}function h(){g(),u(e.externalErrors?.value),d(e.externalIssues?.value),m()}function g(){i?.(),r?.(),o?.(),a?.(),i=void 0,r=void 0,o=void 0,a=void 0}return{externalErrors:t,externalIssues:n,start:h,watchOptionRefs:p,stop:g}}function at({initialState:e,originalState:n,options:i,scopeRules:a,state:o,customRules:c,shortcuts:u,schemaErrors:d,schemaMode:p=!1,onValidate:m,overrides:g}){let _=Oe(),v=f(!1),b=new Set,x,S=f(),C=it(i),w;function T(){w=y(()=>h(i.disabled),async e=>{e?O():(E(),C.start(),C.watchOptionRefs())})}function E(){ke(o,a)?S.value=$e({rootRules:a,rulesDef:a,state:o,customMessages:c?.(),storage:_,options:i,rootInitialState:e,externalErrors:C.externalErrors,externalIssues:C.externalIssues,validationGroups:i.validationGroups,initialState:e,originalState:n,shortcuts:u,fieldName:void 0,path:``,cachePath:``,schemaErrors:d,rootSchemaErrors:d,schemaMode:p,onValidate:m,overrides:g}):je(a)&&(S.value=Xe({rulesDef:a,state:o,customMessages:c?.(),storage:_,options:i,rootInitialState:e,externalErrors:C.externalErrors,externalIssues:C.externalIssues,initialState:e,originalState:n,shortcuts:u,fieldName:void 0,path:``,cachePath:``,schemaMode:p,schemaErrors:d,onValidate:m,overrides:g}))}function D(){w=void 0}function O(){S.value?.$unwatch(),C.stop()}function k(){v.value||(v.value=!0,x=t(!0),x.run(()=>{C.start(),E(),h(i.disabled)?s().then(()=>{S.value?.$unwatch()}):C.watchOptionRefs(),T()}))}function A(){v.value&&(v.value=!1,O(),w?.(),D(),x?.stop(),x=void 0,S.value=void 0,_.clearAll())}function j(){let e=r();!e||b.has(e)||(v.value||k(),b.add(e),l(()=>{b.delete(e),b.size||A()}))}k(),j();function M(){typeof window<`u`&&typeof __VUE_PROD_DEVTOOLS__<`u`&&__VUE_PROD_DEVTOOLS__&&!ge()&&S.value&&De(S.value,{name:h(i.id)})}return M(),{regle:S,bindToCurrentScope:j}}function ot({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),d=i(me,void 0)??{},m={...d.modifiers,...o},h=()=>({...d.rules?.(),...s?.()}),_={...d.shortcuts,...c},v={...d.overrides,...l},y={...m,...r},x,S=p(u??{});typeof n==`function`&&(x=b(()=>{S.value=n(t),g(S)}));let C=f(k(t.value)?{...z(t.value)}:z(t.value)),w=k(t.value)?{...z(t.value)}:z(t.value);Z(()=>{x?.()});let{regle:T,bindToCurrentScope:E}=at({scopeRules:S,state:t,options:y,initialState:C,originalState:w,customRules:h,shortcuts:_,overrides:v});return{regle:T,bindToCurrentScope:E}}function st(t){let{rules:n,modifiers:r={},shortcuts:i,overrides:o}=t??{};function s(t,s,c){let l=a(t)?t:f(t),u=e(()=>h(c?.disabled)??!1),{regle:d,bindToCurrentScope:p}=ot({state:l,rulesFactory:s,options:c,globalOptions:r,customRules:n,shortcuts:i,overrides:o});return{r$:U(d,u,()=>{d.value||p()})}}return s}const ct=st();function lt(){function e(e,t){return t}return e}const ut=lt();function dt(e,t){return A(h(e).$errors,String(t))}function ft(e,t){return A(h(e).$issues,String(t))}function pt(e){let t={};if(Object.entries(e).some(([e,t])=>Me(t)||typeof t==`function`))return null;for(let n in e){let r=e[n];r&&k(r)&&`$each`in r&&r.$each&&k(r.$each)?t[n]=[pt(r.$each)]:k(r)&&!I(r)&&!Object.entries(r).some(([e,t])=>Me(t)||typeof t==`function`)?t[n]=pt(r):t[n]=null}return t}function mt(t){let{rules:n,modifiers:r={},shortcuts:i,overrides:o}=t??{};function s(t,s){let c=a(t)?t:typeof t==`function`?void 0:e(()=>t),l=f(pt(c?.value)),u=e(()=>h(s?.disabled)??!1),{regle:d,bindToCurrentScope:p}=ot({state:l,rulesFactory:c,options:s,globalOptions:r,customRules:n,shortcuts:i,overrides:o});return U(d,u,()=>{d.value||p()})}return s}const ht=mt();function gt(e){if(F(e)){let t=e,n=class extends t{constructor(...e){return super(...e),_t(this)}};return Object.defineProperty(n,"name",{value:t.name}),_t(n)}return _t(e)}function _t(e){return!N(e,he.REGLE_STATIC)&&Object.isExtensible(e)&&P(e,he.REGLE_STATIC,!0),e}function vt({rules:e,modifiers:t,shortcuts:n,overrides:r}){let i=st({rules:e,modifiers:t,shortcuts:n,overrides:r}),a=mt({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:lt(),useRules:a}}function yt(e,{rules:t,modifiers:n,shortcuts:r,overrides:i}){let a=e.__config??{},o=()=>({...a.rules?.(),...t?.()}),s=a.modifiers&&n?j(a.modifiers,n):a.modifiers??n,c=a.shortcuts&&r?j(a.shortcuts,r):a.shortcuts??r,l=a.overrides&&i?j(a.overrides,i):a.overrides??i,u=st({rules:o,modifiers:s,shortcuts:c,overrides:l});return u.__config={rules:o,modifiers:s,shortcuts:c,overrides:l},{useRegle:u,inferRules:lt()}}function bt(e){return e}function xt(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)}),y=e(()=>Object.entries(t).some(([e,t])=>t?.$anyEdited)),x=e(()=>r?Object.values(t):t);function S(e){Object.values(t).forEach(t=>{t.$reset(e)})}function C(){Object.values(t).forEach(e=>{e.$touch()})}function w(e=!0){return Object.values(t).map(t=>t.$extractDirtyFields(e))}function T(e){Object.values(t).forEach(t=>{t.$setExternalErrors(e)})}function E(e){Object.values(t).forEach(t=>{t.$setExternalIssues(e)})}function D(){Object.values(t).forEach(e=>{e.$clearExternalErrors()})}function O(){Object.values(t).forEach(e=>{e.$clearExternalIssues()})}function k(e){try{return e&&(i.value=e),Object.values(t).every(t=>t.$validateSync(e))}catch{return!1}}async function A(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 j=u({...!r&&{$silentValue:a},$errors:g,$issues:m,$silentIssues:h,$silentErrors:_,$instances:x,$value:i,$output:i,$dirty:o,$anyDirty:s,$invalid:c,$correct:l,$error:d,$pending:p,$ready:f,$edited:v,$anyEdited:y,$reset:S,$touch:C,$validate:A,$validateSync:k,$extractDirtyFields:w,$clearExternalErrors:D,$clearExternalIssues:O,$setExternalErrors:T,$setExternalIssues:E});return b(()=>{if(!r){for(let e of Object.keys(j).filter(e=>!e.startsWith(`$`)&&!e.startsWith(`~`)))delete j[e];for(let[e,t]of Object.entries(x.value))Object.assign(j,{[e]:t})}}),j}function St(t,n){function r(r){let i=e(()=>h(r)),a=u({});c();let o=f(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]={})}))}y(i,c),y(t,e=>{o.value=l(e)},{deep:!0});function l(e){return i.value?typeof i.value==`string`?xt(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})})}),xt(a,!n.asRecord)):xt(e[`~~global`]??{},!n.asRecord)}return{r$:s.r$}}return{useCollectScope:r}}function Ct(t,r){let i=r??ct;return{useScopedRegle:((r,a,o)=>{let{namespace:s,scopeKey:l,id:u,...d}=o??{};i.__config??={};let p=e(()=>u??l),m=e(()=>h(s)),g=f(`${Object.keys(t.value).length+1}-${X()}`),_=e(()=>p.value??`instance-${g.value}`),{r$:v}=i(r,a,{...d,id:p.value});x(),Z(b),y(m,(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??m.value;n?t.value[n]&&delete t.value[n][_.value]:t.value[`~~global`][_.value]&&delete t.value[`~~global`][_.value]}function x(){m.value?(t.value[m.value]||(t.value[m.value]={}),t.value[m.value][_.value]=v):(t.value[`~~global`]||(t.value[`~~global`]={}),t.value[`~~global`][_.value]=v)}return{r$:v,dispose:b,register:x}})}}function wt(e){let t=(e?.customStore?()=>(e.customStore&&(e.customStore?.value[`~~global`]?e.customStore?.value&&(e.customStore.value={"~~global":{}}):e.customStore.value[`~~global`]={}),e.customStore):ue(()=>f({"~~global":{}})))(),{useScopedRegle:n}=Ct(t,e?.customUseRegle),{useCollectScope:r}=St(t,{asRecord:e?.asRecord});return{useScopedRegle:n,useCollectScope:r}}const{useCollectScope:Tt,useScopedRegle:Et}=wt(),Dt=Tt,Ot=Et;function kt(t,n,r){let i=e(()=>h(t)[n]);return e(()=>r.find(e=>{if(e[n]&&`literal`in e[n]){let t=e[n].literal;if(Me(t))return h(t._params?.[0])===i.value}})||r.find(e=>k(e[n])&&!Object.keys(e[n]).some(e=>e===`literal`))||{})}function At(e,t,n){return!!e&&t in e&&k(e[t])&&`$value`in e[t]&&e[t]?.$value===n}function jt(e,t,n,r){let i=a(e)?m(e.value,`$fields`):m(e,`$fields`),o=f();return y(i,async()=>{await s(),At(i.value,t,n)?o.value=m(e).value:o.value=void 0},{immediate:!0,flush:`pre`}),o}function Mt(e){return e}function Nt(e,t){return n=>j({...e},t(n))}var Pt=`1.28.0`;function Ft(e){return typeof e==`function`}function It(e,t){return t.filter(t=>t in e&&!Ft(e[t])).map(t=>{let n=!1;return t===`$value`&&(n=!0),{key:t,value:e[t],editable:n}})}function Lt(e,t){return Object.entries(e).filter(([n])=>!t.includes(n)&&n.startsWith(`$`)&&!Ft(e[n])).map(([e,t])=>({key:e,value:t,editable:!1})).sort((e,t)=>e.key.localeCompare(t.key))}function Rt(e){if(!e.includes(`:field:`))return null;let[t,,n]=e.split(`:`);return{instanceId:t,fieldName:n}}function zt(e,t){return`${e}:field:${t}`}function Bt(e){if(!e.includes(`:rule:`))return null;let t=e.split(`:rule:`);if(t.length!==2)return null;let n=t[0],r=t[1],i=Rt(n);return i?{...i,ruleName:r}:null}function Vt(e,t,n){return`${zt(e,t)}:rule:${n}`}const Ht=[`$autoDirty`,`$rewardEarly`,`$clearExternalErrorsOnChange`,`$clearExternalErrorsOnValidate`,`$immediateDirty`,`$silent`];function Ut(e){let t={},n=It(e,be.FIELD);n.length>0&&(t.State=n);let r=Lt(e,[...be.FIELD,...Ht,`$rules`,`$fields`,`$modifiers`,`$deepCompare`,`$isArrayOrRegleStatic`,`$schemaMode`]);return r.length>0&&(t[`Other Properties`]=r),e[`~modifiers`]&&(t.Modifiers=Object.entries(e[`~modifiers`]).map(([e,t])=>({key:e,value:t,editable:!1}))),t}function Wt(e){let t={},n=[`$type`,`$valid`,`$active`,`$pending`,`$message`,`$tooltip`],r=It(e,n);r.length>0&&(t[`Rule State`]=r),e.$params&&Array.isArray(e.$params)&&e.$params.length>0&&(t.Parameters=[{key:`$params`,value:e.$params,editable:!1}]),e.$metadata!==void 0&&e.$metadata!==!0&&e.$metadata!==!1&&(t.Metadata=[{key:`$metadata`,value:e.$metadata,objectType:`reactive`,editable:!1}]);let i=Lt(e,[...n,`$params`,`$metadata`,`$haveAsync`,`$validating`,`$fieldDirty`,`$fieldInvalid`,`$fieldPending`,`$fieldCorrect`,`$fieldError`,`$maybePending`]);return i.length>0&&(t[`Other Properties`]=i),t}function Gt(e){let t={},n=It(e,be.ROOT);n.length>0&&(t.State=n);let r=Lt(e,[...be.ROOT,`$fields`,`$modifiers`,`$path`,...Ht]);return r.length>0&&(t[`Other Properties`]=r),e[`~modifiers`]&&(t.Modifiers=Object.entries(e[`~modifiers`]).map(([e,t])=>({key:e,value:t,editable:!1}))),t}function Kt(e,t){if(!e||!t)return null;let n=t.match(/[^.[\]]+/g);if(!n)return null;let r=e;for(let e of n){if(!r)return null;let t=parseInt(e);if(!isNaN(t))if(Ie(r)&&Array.isArray(r.$each))r=r.$each[t];else return null;else if(Ie(r)&&r.$self&&r.$self)r=r.$self;else if(Fe(r)&&r.$fields&&r.$fields[e])r=r.$fields[e];else if(r[e])r=r[e];else return null}return r}function qt(e,t){let n=Bt(e);if(n){let{instanceId:e,fieldName:r,ruleName:i}=n,a=t(e);if(!a||!a.r$.$fields)return null;let o=Kt(a.r$.$fields,r);if(!o||!(`$rules`in o))return null;let s=o.$rules[i];return s?Wt(s):null}let r=Rt(e);if(r){let{instanceId:e,fieldName:n}=r,i=t(e);if(!i||!i.r$.$fields)return null;let a=Kt(i.r$.$fields,n);return a?Ut(a):null}let i=t(e);return i?Gt(i.r$):null}function Jt(e){if(e.includes(`:rule:`))return;let t=Rt(e);if(t){let{instanceId:e,fieldName:n}=t,r=$.get(e);if(r&&r.r$.$fields){let e=Kt(r.r$.$fields,n);e&&typeof e.$validate==`function`&&e.$validate()}}else{let t=$.get(e);t&&typeof t.r$.$validate==`function`&&t.r$.$validate()}$.notifyDevtools()}function Yt(e,t=!1){let n=Rt(e);if(n){let{instanceId:e,fieldName:r}=n,i=$.get(e);if(i&&i.r$.$fields){let e=Kt(i.r$.$fields,r);e&&typeof e.$reset==`function`&&e.$reset({toOriginalState:t})}}else{let n=$.get(e);n&&typeof n.r$.$reset==`function`&&n.r$.$reset({toOriginalState:t})}$.notifyDevtools()}function Xt(e){if(e.includes(`:rule:`))return;let t=Rt(e);if(t){let{instanceId:e,fieldName:n}=t,r=$.get(e);if(r&&r.r$.$fields){let e=Kt(r.r$.$fields,n);e&&typeof e.$touch==`function`&&e.$touch()}}else{let t=$.get(e);t&&typeof t.r$.$touch==`function`&&t.r$.$touch()}$.notifyDevtools()}function Zt(e){let{nodeId:t,path:n,state:r}=e;if(!n.includes(`$value`)||!Rt(t))return;let[i,a,o]=t?.split(`:`)??[],s=$.get(i);if(s&&s.r$.$fields){let e=Kt(s.r$.$fields,o);e&&`$value`in e&&(e.$value=r.value,$.notifyDevtools())}}function Qt(e,t){let n=[],r=!1;Le(e)?r=e[`~modifiers`]?.$disabled??!1:Fe(e)?r=e[`~modifiers`]?.disabled??!1:Ie(e)&&(r=e[`~modifiers`]?.$disabled??!1);let i=Le(e)?(`required`in e.$rules&&!e.$rules.required.$active||I(e.$rules))&&!e.$schemaMode:!1,a=Le(e)?e.$inactive:!1,o=Fe(e)||Ie(e);return e.$error?n.push({label:`error`,textColor:Q.ERROR.text,backgroundColor:Q.ERROR.bg,tooltip:o?ve.ERROR:_e.ERROR}):e.$correct&&n.push({label:`correct`,textColor:Q.CORRECT.text,backgroundColor:Q.CORRECT.bg,tooltip:o?ve.CORRECT:_e.CORRECT}),e.$pending&&n.push({label:`pending`,textColor:Q.PENDING.text,backgroundColor:Q.PENDING.bg,tooltip:o?ve.PENDING:_e.PENDING}),r&&n.push({label:`disabled`,textColor:Q.DISABLED.text,backgroundColor:Q.DISABLED.bg,tooltip:_e.DISABLED}),a?n.push({label:`inactive`,textColor:Q.INACTIVE.text,backgroundColor:Q.INACTIVE.bg,tooltip:_e.INACTIVE}):i&&n.push({label:`optional`,textColor:Q.OPTIONAL.text,backgroundColor:Q.OPTIONAL.bg,tooltip:_e.OPTIONAL}),!e.$invalid&&e.$dirty&&n.push({label:`valid`,textColor:Q.VALID.text,backgroundColor:Q.VALID.bg,tooltip:_e.VALID}),e.$dirty?n.push({label:`dirty`,textColor:Q.DIRTY.text,backgroundColor:Q.DIRTY.bg,tooltip:o?ve.DIRTY:_e.DIRTY}):i||n.push({label:`pristine`,textColor:Q.PRISTINE.text,backgroundColor:Q.PRISTINE.bg,tooltip:_e.PRISTINE}),t&&n.push({label:`<${t}.vue>`,textColor:Q.COMPONENT.text,backgroundColor:Q.COMPONENT.bg}),n}function $t(e){let t=[];return e.$active?e.$valid?e.$valid&&t.push({label:`valid`,textColor:Q.VALID.text,backgroundColor:Q.VALID.bg,tooltip:ye.VALID}):t.push({label:`invalid`,textColor:Q.INVALID.text,backgroundColor:Q.INVALID.bg,tooltip:ye.INVALID}):t.push({label:`inactive`,textColor:Q.INACTIVE.text,backgroundColor:Q.INACTIVE.bg,tooltip:ye.INACTIVE}),e.$pending&&t.push({label:`pending`,textColor:Q.PENDING.text,backgroundColor:Q.PENDING.bg,tooltip:ye.PENDING}),t}function en(e,t,n){let r=[];return!e.$rules||typeof e.$rules!=`object`||Object.entries(e.$rules).forEach(([e,i])=>{if(i&&typeof i==`object`){let a=$t(i);r.push({id:Vt(t,n,e),label:`⚙️ ${e}`,tags:a,children:[]})}}),r}function tn(e,t,n){let r=[];if(!e.$each||!Array.isArray(e.$each))return r;if(e.$each.forEach((e,i)=>{if(e&&typeof e==`object`){let a=Qt(e),o=`${n}[${i}]`,s=[];Fe(e)?s=nn(e.$fields,t,o):Le(e)&&(s=en(e,t,o)),r.push({id:zt(t,o),label:`[${i}]`,tags:a,children:s})}}),e.$self&&typeof e.$self==`object`){let i=Qt(e.$self),a=`${n}[$self]`;r.unshift({id:zt(t,a),label:`$self`,tags:i,children:en(e.$self,t,a)})}return r}function nn(e,t,n){let r=[];return Object.entries(e).forEach(([e,i])=>{if(i&&typeof i==`object`){let a=n?`${n}.${e}`:e,o=Qt(i),s=!1,c=!1,l=[];Ie(i)?(l=tn(i,t,a),s=!0,l.length===0&&(c=!0)):Fe(i)?l=nn({...i.$fields,...i.$self&&{$self:i.$self}},t,a):Le(i)&&(l=en(i,t,a));let u=l.filter(e=>e.label!==`$self`);r.push({id:zt(t,a),label:`${s?`${e}[${u.length}]`:e}${c?` (empty)`:``}`,tags:o,children:l})}}),r}function rn(e,t){let n=[];return Le(e)?en(e,t,`root`):(!(`$fields`in e)||typeof e.$fields!=`object`||Object.entries(e.$fields).forEach(([e,r])=>{if(r&&typeof r==`object`){let i=Qt(r),a=[],o=!1;Ie(r)?(a=tn(r,t,e),o=!0):Fe(r)?a=nn({...r.$fields,...r.$self&&{$self:r.$self}},t,e):Le(r)&&(a=en(r,t,e));let s=a.filter(e=>e.label!==`$self`);n.push({id:zt(t,e),label:`${o?`${e}[${s.length}]`:e}`,tags:i,children:a})}}),n)}function an(e,t){let n=e.map(e=>{let{r$:t,id:n,name:r,componentName:i}=e;return{id:n,label:r,tags:Qt(t,i),children:rn(t,n)}});return!t||t.trim()===``?n:on(n,t)}function on(e,t){let n=t.toLowerCase(),r=[];for(let i of e){let e=i.label.toLowerCase().includes(n),a=i.tags?.some(e=>e.label.toLowerCase().includes(n))??!1,o=i.children?on(i.children,t):[];(e||a||o.length>0)&&r.push({...i,children:o.length>0?o:i.children})}return r}function sn(e){D({id:`regle-devtools`,label:`Regle`,logo:`https://reglejs.dev/logo_main.png`,packageName:`@regle/core`,homepage:`https://reglejs.dev`,componentStateTypes:[`Regles`],app:e},t=>{$.setApi(t,e),t.on.getInspectorTree(async e=>{if(e.inspectorId===xe.INSPECTOR){let t=an($.getAll(),e.filter);t.length>0?e.rootNodes=t:e.rootNodes=[{id:`empty-regles`,label:`No Regles instances found`,children:[]}]}}),t.on.getInspectorState(e=>{if(e.inspectorId===xe.INSPECTOR){let n=qt(e.nodeId,e=>$.get(e));n||t.sendInspectorTree(xe.INSPECTOR),n?e.state=n:e.state={}}}),t.on.editInspectorState(e=>{e.inspectorId===xe.INSPECTOR&&Zt(e)}),t.addInspector({id:xe.INSPECTOR,label:`Regle`,noSelectionText:`No instance selected`,icon:`rule`,treeFilterPlaceholder:`Filter state`,stateFilterPlaceholder:`Filter validation status`,actions:[{icon:`confirmation_number`,tooltip:`Log Regle version`,action:()=>{console.info(`Regle version`,Pt)}}],nodeActions:[{icon:`check`,tooltip:`Validate`,action:e=>{Jt(e)}},{icon:`touch_app`,action:e=>{Xt(e)},tooltip:`Touch the instance with $touch`},{icon:`refresh`,tooltip:`Reset validation state`,action:e=>{Yt(e)}},{icon:`restore`,tooltip:`Restore to original state`,action:e=>{Yt(e,!0)}}]}),E(()=>{$.notifyDevtools()}),$.notifyDevtools()})}const cn={install(e,t){e.provide(pe,Pt),t&&e.provide(me,t),typeof window<`u`&&typeof __VUE_PROD_DEVTOOLS__<`u`&&__VUE_PROD_DEVTOOLS__&&!ge()&&sn(e)}};export{W as InternalRuleType,cn as RegleVuePlugin,re as createRule,wt as createScopedUseRegle,kt as createVariant,vt as defineRegleConfig,bt as defineRegleOptions,Mt as defineRules,yt as extendRegleConfig,Ve as flatErrors,dt as getErrors,ft as getIssues,ut as inferRules,Y as isRegleInstance,gt as markStatic,xt as mergeRegles,At as narrowVariant,Nt as refineRules,G as unwrapRuleParameters,Dt as useCollectScope,ct as useRegle,at as useRootStorage,ht as useRules,Ot as useScopedRegle,jt as variantToRef};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@regle/core",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.28.0",
|
|
4
4
|
"description": "Headless form validation library for Vue",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"regle",
|
|
@@ -50,19 +50,19 @@
|
|
|
50
50
|
"dependencies": {
|
|
51
51
|
"@standard-schema/spec": "1.1.0",
|
|
52
52
|
"@vue/devtools-api": "7.7.9",
|
|
53
|
+
"@vue/devtools-kit": "7.7.9",
|
|
53
54
|
"type-fest": "5.7.0"
|
|
54
55
|
},
|
|
55
56
|
"devDependencies": {
|
|
56
57
|
"@total-typescript/ts-reset": "0.6.1",
|
|
57
|
-
"@types/node": "24.
|
|
58
|
-
"@typescript/native-preview": "7.0.0-dev.
|
|
59
|
-
"@vue/
|
|
60
|
-
"
|
|
61
|
-
"tsdown": "0.22.1",
|
|
58
|
+
"@types/node": "24.13.2",
|
|
59
|
+
"@typescript/native-preview": "7.0.0-dev.20260616.1",
|
|
60
|
+
"@vue/test-utils": "2.4.11",
|
|
61
|
+
"tsdown": "0.22.2",
|
|
62
62
|
"typescript": "6.0.3",
|
|
63
63
|
"vitest": "4.1.8",
|
|
64
64
|
"vue": "3.5.35",
|
|
65
|
-
"vue-tsc": "3.3.
|
|
65
|
+
"vue-tsc": "3.3.5"
|
|
66
66
|
},
|
|
67
67
|
"peerDependencies": {
|
|
68
68
|
"pinia": ">=2.2.5",
|