@regle/core 1.3.2 → 1.4.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- import * as vue1 from "vue";
1
+ import * as vue0 from "vue";
2
2
  import { MaybeRef, MaybeRefOrGetter, Raw, Ref, UnwrapNestedRefs, UnwrapRef } from "vue";
3
3
 
4
4
  //#region src/types/utils/misc.types.d.ts
@@ -7,7 +7,6 @@ type Maybe<T = any> = T | null | undefined;
7
7
  type MaybeInput<T = any> = T | null | undefined;
8
8
  type MaybeOutput<T = any> = T | undefined;
9
9
  type MaybeReadonly<T> = T | Readonly<T>;
10
- type NonUndefined<T> = Exclude<T, undefined>;
11
10
  type PromiseReturn<T> = T extends Promise<infer U> ? U : T;
12
11
  type MaybeGetter<T, V = any, TAdd extends Record<string, any> = {}> = T | ((value: Ref<V>, index: number) => T & TAdd);
13
12
  type Unwrap<T extends MaybeRef<Record<string, any>>> = T extends Ref ? UnwrapRef<T> : UnwrapNestedRefs<T>;
@@ -1840,7 +1839,7 @@ type InferRegleRoot<T extends (...args: any[]) => SuperCompatibleRegle> = T exte
1840
1839
  /**
1841
1840
  * Infer custom rules declared in a global configuration
1842
1841
  */
1843
- type InferRegleRules<T extends useRegleFn<any, any>> = T extends useRegleFn<infer U, any> ? UnwrapRuleTree<Partial<U> & Partial<DefaultValidators>> : {};
1842
+ type InferRegleRules<T extends useRegleFn<any, any>> = T extends useRegleFn<infer U, any> ? UnwrapRuleTree<Partial<DefaultValidators>> & UnwrapRuleTree<Partial<U>> : {};
1844
1843
  /**
1845
1844
  * Infer custom shortcuts declared in a global configuration
1846
1845
  */
@@ -1853,19 +1852,11 @@ type RegleEnforceRequiredRules<TRules extends keyof DefaultValidators> = Omit<Pa
1853
1852
  * Extract a set of custom rules from a global configuration and setting them as required
1854
1853
 
1855
1854
  */
1856
- type RegleEnforceCustomRequiredRules<T extends Partial<AllRulesDeclarations> | useRegleFn<any, any>, TRules extends (T extends useRegleFn<any, any> ? keyof InferRegleRules<T> : keyof T)> = Omit<Partial<DefaultValidatorsTree>, TRules> & { [K in TRules]-?: T extends useRegleFn<any, any> ? K extends keyof InferRegleRules<T> ? NonNullable<UnwrapRuleWithParams<InferRegleRules<T>[K]>> : never : K extends keyof T ? NonNullable<T[K]> : never };
1855
+ type RegleEnforceCustomRequiredRules<T extends useRegleFn<any, any>, TRules extends keyof InferRegleRules<T>> = Omit<Partial<DefaultValidatorsTree>, TRules> & { [K in TRules]-?: T extends useRegleFn<any, any> ? K extends keyof InferRegleRules<T> ? NonNullable<UnwrapRuleWithParams<InferRegleRules<T>[K]>> : never : K extends keyof T ? NonNullable<T[K]> : never };
1857
1856
  /**
1858
1857
  * Extract custom rules and custom shortcuts and apply them to a RegleFieldStatus type
1859
1858
  */
1860
- type RegleCustomFieldStatus<T extends useRegleFn<any, any>, TState extends unknown = any, TRules extends RegleFormPropertyType<any, Partial<AllRulesDeclarations>> = InferRegleRules<T>> = RegleFieldStatus<TState, TRules, InferRegleShortcuts<T>>;
1861
- /**
1862
- * Extract custom rules and custom shortcuts and apply them to a RegleFieldStatus type
1863
- */
1864
- type RegleCustomStatus<T extends useRegleFn<any, any>, TState extends Record<string, any> | undefined = Record<string, any>, TRules extends ReglePartialRuleTree<NonNullable<TState>> = InferRegleRules<T>> = RegleStatus<TState, TRules, InferRegleShortcuts<T>>;
1865
- /**
1866
- * Extract custom rules and custom shortcuts and apply them to a RegleFieldStatus type
1867
- */
1868
- type RegleCustomCollectionStatus<T extends useRegleFn<any, any>, TState extends any[] = any[], TRules extends ReglePartialRuleTree<ArrayElement<TState>> = InferRegleRules<T>> = RegleCollectionStatus<TState, TRules, InferRegleShortcuts<T>>;
1859
+ type RegleCustomFieldStatus<T extends useRegleFn<any, any>, TState extends unknown = any, TRules extends keyof InferRegleRules<T> = never> = RegleFieldStatus<TState, [TRules] extends [never] ? Partial<InferRegleRules<T>> : RegleEnforceCustomRequiredRules<T, TRules>, InferRegleShortcuts<T>>;
1869
1860
  //#endregion
1870
1861
  //#region src/types/utils/object.types.d.ts
1871
1862
  type RemoveCommonKey<T extends readonly any[], K extends PropertyKey> = T extends [infer F, ...infer R] ? [Prettify<Omit<F, K>>, ...RemoveCommonKey<R, K>] : [];
@@ -1885,7 +1876,7 @@ type GetMaybeObjectValue<O extends Record<string, any>, K extends string> = K ex
1885
1876
  /**
1886
1877
  * Combine all union values to be able to get even the normally "never" values, act as an intersection type
1887
1878
  */
1888
- type RetrieveUnionUnknownValues<T extends readonly any[], TKeys extends string> = T extends [infer F extends Record<string, any>, ...infer R] ? [{ [K in TKeys as GetMaybeObjectValue<F, K> extends NonUndefined<GetMaybeObjectValue<F, K>> ? never : K]?: GetMaybeObjectValue<F, K> } & { [K in TKeys as GetMaybeObjectValue<F, K> extends NonUndefined<GetMaybeObjectValue<F, K>> ? K : never]: GetMaybeObjectValue<F, K> }, ...RetrieveUnionUnknownValues<R, TKeys>] : [];
1879
+ type RetrieveUnionUnknownValues<T extends readonly any[], TKeys extends string> = T extends [infer F extends Record<string, any>, ...infer R] ? [{ [K in TKeys as GetMaybeObjectValue<F, K> extends NonNullable<GetMaybeObjectValue<F, K>> ? never : K]?: GetMaybeObjectValue<F, K> } & { [K in TKeys as GetMaybeObjectValue<F, K> extends NonNullable<GetMaybeObjectValue<F, K>> ? K : never]: GetMaybeObjectValue<F, K> }, ...RetrieveUnionUnknownValues<R, TKeys>] : [];
1889
1880
  /**
1890
1881
  * Get all possible keys from a union, even the ones present only on one union
1891
1882
  */
@@ -2135,7 +2126,7 @@ type DefaultValidators = {
2135
2126
  numeric: RegleRuleDefinition<string | number, [], false, boolean, string | number>;
2136
2127
  oneOf: RegleRuleDefinition<string | number, [options: (string | number)[]], false, boolean, string | number>;
2137
2128
  regex: RegleRuleWithParamsDefinition<string, [regexp: RegExp], false, boolean>;
2138
- required: RegleRuleDefinition<unknown, []>;
2129
+ required: RegleRuleDefinition<unknown, [], false, boolean, unknown>;
2139
2130
  sameAs: RegleRuleWithParamsDefinition<unknown, [target: unknown, otherName?: string], false, boolean>;
2140
2131
  string: RegleRuleDefinition<unknown, [], false, boolean, any, unknown>;
2141
2132
  type: RegleRuleDefinition<unknown, [], false, boolean, unknown, unknown>;
@@ -2232,31 +2223,6 @@ type InlineRuleDeclaration<TValue extends any = any, TParams extends any[] = any
2232
2223
  * */
2233
2224
  type FormRuleDeclaration<TValue extends any = unknown, TParams extends any[] = any[], TReturn extends RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition> = RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition>, TMetadata extends RegleRuleMetadataDefinition = (TReturn extends Promise<infer M> ? M : TReturn), TAsync extends boolean = boolean> = InlineRuleDeclaration<TValue, TParams, TReturn> | RegleRuleDefinition<TValue, TParams, TAsync, TMetadata> | RegleRuleWithParamsDefinitionInput<TValue, [param?: any], TAsync, TMetadata> | RegleRuleWithParamsDefinitionInput<TValue, [param?: any, ...any[]], TAsync, TMetadata>;
2234
2225
  //#endregion
2235
- //#region src/types/rules/rule.errors.types.d.ts
2236
- type RegleErrorTree<TState = MaybeRef<Record<string, any> | any[]>> = { readonly [K in keyof JoinDiscriminatedUnions<UnwrapMaybeRef<TState>>]: RegleValidationErrors<JoinDiscriminatedUnions<UnwrapMaybeRef<TState>>[K], false> };
2237
- type RegleExternalErrorTree<TState = MaybeRef<Record<string, any> | any[]>> = { readonly [K in keyof JoinDiscriminatedUnions<UnwrapMaybeRef<TState>>]?: RegleValidationErrors<JoinDiscriminatedUnions<UnwrapMaybeRef<TState>>[K], true> };
2238
- type RegleValidationErrors<TState extends Record<string, any> | any[] | unknown = never, TExternal extends boolean = false> = NonNullable<TState> extends Array<infer U extends Record<string, any>> ? ExtendOnlyRealRecord<U> extends true ? TExternal extends false ? RegleCollectionErrors<U> : RegleExternalCollectionErrors<U> : string[] : NonNullable<TState> extends Date | File ? string[] : NonNullable<TState> extends Record<string, any> ? TExternal extends false ? RegleErrorTree<TState> : RegleExternalErrorTree<TState> : string[];
2239
- type RegleCollectionErrors<TState extends Record<string, any>> = {
2240
- readonly $self: string[];
2241
- readonly $each: RegleValidationErrors<TState, false>[];
2242
- };
2243
- type RegleExternalCollectionErrors<TState extends Record<string, any>> = {
2244
- readonly $self?: string[];
2245
- readonly $each?: RegleValidationErrors<TState, true>[];
2246
- };
2247
- /** @internal */
2248
- type $InternalRegleCollectionErrors = {
2249
- readonly $self?: string[];
2250
- readonly $each?: $InternalRegleErrors[];
2251
- };
2252
- type $InternalRegleErrorTree = {
2253
- [x: string]: $InternalRegleErrors;
2254
- };
2255
- /**
2256
- * @internal
2257
- */
2258
- type $InternalRegleErrors = $InternalRegleCollectionErrors | string[] | $InternalRegleErrorTree;
2259
- //#endregion
2260
2226
  //#region src/types/rules/rule.status.types.d.ts
2261
2227
  /**
2262
2228
  * @public
@@ -2307,6 +2273,13 @@ type InferRegleStatusType<TRule extends RegleCollectionRuleDecl | RegleRuleDecl
2307
2273
  * @reference {@link InferRegleStatusType}
2308
2274
  */
2309
2275
  type $InternalRegleStatusType = $InternalRegleCollectionStatus | $InternalRegleStatus | $InternalRegleFieldStatus;
2276
+ interface RegleFieldIssue {
2277
+ $property: string;
2278
+ $rule: string;
2279
+ $type?: string;
2280
+ $message: string;
2281
+ [x: string]: unknown;
2282
+ }
2310
2283
  /**
2311
2284
  * @public
2312
2285
  */
@@ -2321,6 +2294,14 @@ type RegleFieldStatus<TState extends any = any, TRules extends RegleFormProperty
2321
2294
  readonly $errors: string[];
2322
2295
  /** Collection of all the error messages, collected for all children properties and nested forms. */
2323
2296
  readonly $silentErrors: string[];
2297
+ /**
2298
+ * Collect all metadata of validators, Only contains errors from properties where $dirty equals true.
2299
+ */
2300
+ readonly $issues: RegleFieldIssue[];
2301
+ /**
2302
+ * Collect all metadata of validators, including the error message.
2303
+ */
2304
+ readonly $silentIssues: RegleFieldIssue[];
2324
2305
  /** Stores external errors of the current field */
2325
2306
  readonly $externalErrors: string[];
2326
2307
  /** Stores active tooltips messages of the current field */
@@ -2334,7 +2315,7 @@ type RegleFieldStatus<TState extends any = any, TRules extends RegleFormProperty
2334
2315
  /** This is reactive tree containing all the declared rules of your field. To know more about the rule properties check the rules properties section */
2335
2316
  readonly $rules: IsEmptyObject<TRules> extends true ? {
2336
2317
  readonly [x: string]: RegleRuleStatus<TState, any[], any>;
2337
- } : { readonly [TRuleKey in keyof Omit<TRules, '$each' | keyof FieldRegleBehaviourOptions>]: RegleRuleStatus<TState, TRules[TRuleKey] extends RegleRuleDefinition<any, infer TParams, any> ? TParams : [], TRules[TRuleKey] extends RegleRuleDefinition<any, any, any, infer TMetadata> ? TMetadata : TRules[TRuleKey] extends InlineRuleDeclaration<any, any[], infer TMetadata> ? TMetadata extends Promise<infer P> ? P : TMetadata : any> };
2318
+ } : { readonly [TRuleKey in keyof Omit<TRules, '$each' | keyof FieldRegleBehaviourOptions>]: RegleRuleStatus<TState, TRules[TRuleKey] extends RegleRuleDefinition<any, infer TParams, any> ? TParams : [], TRules[TRuleKey] extends RegleRuleDefinition<any, any, any, infer TMetadata> ? TMetadata : TRules[TRuleKey] extends InlineRuleDeclaration<any, any[], infer TMetadata> ? TMetadata extends Promise<infer P> ? P : TMetadata : boolean> };
2338
2319
  } & ([TShortcuts['fields']] extends [never] ? {} : { [K in keyof TShortcuts['fields']]: ReturnType<NonNullable<TShortcuts['fields']>[K]> });
2339
2320
  /**
2340
2321
  * @internal
@@ -2349,6 +2330,7 @@ interface $InternalRegleFieldStatus extends $InternalRegleCommonStatus {
2349
2330
  readonly $tooltips: string[];
2350
2331
  readonly $inactive: boolean;
2351
2332
  readonly $silentErrors: string[];
2333
+ readonly $issues: RegleFieldIssue[];
2352
2334
  $extractDirtyFields: (filterNullishValues?: boolean) => any;
2353
2335
  $validate: () => Promise<$InternalRegleResult>;
2354
2336
  }
@@ -2446,7 +2428,7 @@ type RegleRuleStatus<TValue = any, TParams extends any[] = any[], TMetadata exte
2446
2428
  * @reference {@link RegleRuleStatus}
2447
2429
  */
2448
2430
  interface $InternalRegleRuleStatus {
2449
- $type: string;
2431
+ $type?: string;
2450
2432
  $message: string | string[];
2451
2433
  $tooltip: string | string[];
2452
2434
  $active: boolean;
@@ -2507,6 +2489,29 @@ interface $InternalRegleCollectionStatus extends Omit<$InternalRegleStatus, '$fi
2507
2489
  $validate: () => Promise<$InternalRegleResult>;
2508
2490
  }
2509
2491
  //#endregion
2492
+ //#region src/types/rules/rule.errors.types.d.ts
2493
+ type RegleErrorTree<TState = MaybeRef<Record<string, any> | any[]>> = { readonly [K in keyof JoinDiscriminatedUnions<UnwrapMaybeRef<TState>>]: RegleValidationErrors<JoinDiscriminatedUnions<UnwrapMaybeRef<TState>>[K], false> };
2494
+ type RegleExternalErrorTree<TState = MaybeRef<Record<string, any> | any[]>> = { readonly [K in keyof JoinDiscriminatedUnions<UnwrapMaybeRef<TState>>]?: RegleValidationErrors<JoinDiscriminatedUnions<UnwrapMaybeRef<TState>>[K], true> };
2495
+ type RegleExternalSchemaErrorTree<TState = MaybeRef<Record<string, any> | any[]>> = { readonly [K in keyof JoinDiscriminatedUnions<UnwrapMaybeRef<TState>>]?: RegleValidationErrors<JoinDiscriminatedUnions<UnwrapMaybeRef<TState>>[K], true, true> };
2496
+ type RegleValidationErrors<TState extends Record<string, any> | any[] | unknown = never, TExternal extends boolean = false, TIssue extends boolean = false> = NonNullable<TState> extends Array<infer U extends Record<string, any>> ? ExtendOnlyRealRecord<U> extends true ? TExternal extends false ? RegleCollectionErrors<U> : RegleExternalCollectionErrors<U> : TIssue extends true ? RegleFieldIssue[] : string[] : NonNullable<TState> extends Date | File ? TIssue extends true ? RegleFieldIssue[] : string[] : NonNullable<TState> extends Record<string, any> ? TExternal extends false ? RegleErrorTree<TState> : RegleExternalErrorTree<TState> : TIssue extends true ? RegleFieldIssue[] : string[];
2497
+ type RegleCollectionErrors<TState extends Record<string, any>, TIssue extends boolean = false> = {
2498
+ readonly $self: string[];
2499
+ readonly $each: RegleValidationErrors<TState, false, TIssue>[];
2500
+ };
2501
+ type RegleExternalCollectionErrors<TState extends Record<string, any>, TIssue extends boolean = false> = {
2502
+ readonly $self?: string[];
2503
+ readonly $each?: RegleValidationErrors<TState, true, TIssue>[];
2504
+ };
2505
+ /** @internal */
2506
+ type $InternalRegleCollectionErrors = {
2507
+ readonly $self?: string[];
2508
+ readonly $each?: $InternalRegleErrors[];
2509
+ };
2510
+ type $InternalRegleErrorTree = {
2511
+ [x: string]: $InternalRegleErrors;
2512
+ };
2513
+ type $InternalRegleErrors = $InternalRegleCollectionErrors | string[] | $InternalRegleErrorTree;
2514
+ //#endregion
2510
2515
  //#region src/types/rules/compatibility.rules.d.ts
2511
2516
  interface SuperCompatibleRegle {
2512
2517
  r$: SuperCompatibleRegleRoot;
@@ -2732,13 +2737,13 @@ declare function createScopedUseRegle<TCustomRegle extends useRegleFn<any, any>
2732
2737
  useScopedRegle: TReturnedRegle;
2733
2738
  useCollectScope: useCollectScopeFn<TAsRecord>;
2734
2739
  };
2735
- declare const useCollectScope: <TValue extends Record<string, unknown>[] = Record<string, unknown>[]>(namespace?: vue1.MaybeRefOrGetter<string>) => {
2740
+ declare const useCollectScope: <TValue extends Record<string, unknown>[] = Record<string, unknown>[]>(namespace?: vue0.MaybeRefOrGetter<string>) => {
2736
2741
  r$: MergedScopedRegles<TValue>;
2737
2742
  }, useScopedRegle: useRegleFn<Partial<AllRulesDeclarations>, never, {
2738
2743
  dispose: () => void;
2739
2744
  register: () => void;
2740
2745
  }, {
2741
- namespace?: vue1.MaybeRefOrGetter<string>;
2746
+ namespace?: vue0.MaybeRefOrGetter<string>;
2742
2747
  }>;
2743
2748
  //#endregion
2744
2749
  //#region src/core/createVariant.d.ts
@@ -2818,4 +2823,4 @@ declare function defineRules<TRules extends RegleUnknownRulesTree>(rules: TRules
2818
2823
  */
2819
2824
  declare function refineRules<TRules extends RegleUnknownRulesTree, TRefinement extends ReglePartialRuleTree<InferInput<TRules>> & RegleUnknownRulesTree>(rules: TRules, refinement: (state: Ref<InferInput<TRules>>) => TRefinement): (state: Ref<InferInput<TRules>>) => Merge<TRules, TRefinement>;
2820
2825
  //#endregion
2821
- export { $InternalRegleStatus, AllRulesDeclarations, CommonAlphaOptions, CommonComparisonOptions, CreateScopedUseRegleOptions, DeepMaybeRef, DeepReactiveState, DefaultValidatorsTree, FormRuleDeclaration, HaveAnyRequiredProps, InferInput, InferRegleRoot, InferRegleRule, InferRegleRules, InferRegleShortcuts, InferRegleStatusType, InferSafeOutput, InlineRuleDeclaration, InternalRuleType, JoinDiscriminatedUnions, LocalRegleBehaviourOptions, Maybe, MaybeInput, MaybeOutput, MaybeReadonly, MaybeVariantStatus, MergedRegles, MergedScopedRegles, NarrowVariant, NoInferLegacy, PrimitiveTypes, Regle, RegleBehaviourOptions, RegleCollectionErrors, RegleCollectionRuleDecl, RegleCollectionRuleDefinition, RegleCollectionStatus, RegleCommonStatus, RegleComputedRules, RegleCustomCollectionStatus, RegleCustomFieldStatus, RegleCustomStatus, RegleEnforceCustomRequiredRules, RegleEnforceRequiredRules, RegleErrorTree, RegleExternalCollectionErrors, RegleExternalErrorTree, RegleFieldStatus, RegleFormPropertyType, RegleInternalRuleDefs, ReglePartialRuleTree, RegleResult, RegleRoot, RegleRuleCore, RegleRuleDecl, RegleRuleDefinition, RegleRuleDefinitionProcessor, RegleRuleDefinitionWithMetadataProcessor, RegleRuleInit, RegleRuleMetadataConsumer, RegleRuleMetadataDefinition, RegleRuleMetadataExtended, RegleRuleRaw, RegleRuleStatus, RegleRuleTypeReturn, RegleRuleWithParamsDefinition, RegleShortcutDefinition, RegleSingleField, RegleStatus, RegleUniversalParams, RegleUnknownRulesTree, RegleValidationErrors, RegleValidationGroupEntry, RegleValidationGroupOutput, RegleRuleTree as RegleValidationTree, ResolvedRegleBehaviourOptions, ScopedInstancesRecord, ScopedInstancesRecordLike, SuperCompatibleRegle, SuperCompatibleRegleCollectionErrors, SuperCompatibleRegleCollectionStatus, SuperCompatibleRegleFieldStatus, SuperCompatibleRegleResult, SuperCompatibleRegleRoot, SuperCompatibleRegleRuleStatus, SuperCompatibleRegleStatus, Unwrap, UnwrapRegleUniversalParams, UnwrapRuleWithParams, UseScopedRegleOptions, createRule, createScopedUseRegle, createVariant, defineRegleConfig, defineRules, extendRegleConfig, flatErrors, inferRules, inferRulesFn, mergeRegles, narrowVariant, refineRules, unwrapRuleParameters, useCollectScope, useCollectScopeFn, useRegle, useRegleFn, useRootStorage, useScopedRegle, variantToRef };
2826
+ export { $InternalRegleStatus, AllRulesDeclarations, CommonAlphaOptions, CommonComparisonOptions, CreateScopedUseRegleOptions, DeepMaybeRef, DeepReactiveState, DefaultValidatorsTree, FormRuleDeclaration, HaveAnyRequiredProps, InferInput, InferRegleRoot, InferRegleRule, InferRegleRules, InferRegleShortcuts, InferRegleStatusType, InferSafeOutput, InlineRuleDeclaration, InternalRuleType, JoinDiscriminatedUnions, LocalRegleBehaviourOptions, Maybe, MaybeInput, MaybeOutput, MaybeReadonly, MaybeVariantStatus, MergedRegles, MergedScopedRegles, NarrowVariant, NoInferLegacy, PrimitiveTypes, Regle, RegleBehaviourOptions, RegleCollectionErrors, RegleCollectionRuleDecl, RegleCollectionRuleDefinition, RegleCollectionStatus, RegleCommonStatus, RegleComputedRules, RegleCustomFieldStatus, RegleEnforceCustomRequiredRules, RegleEnforceRequiredRules, RegleErrorTree, RegleExternalCollectionErrors, RegleExternalErrorTree, RegleExternalSchemaErrorTree, RegleFieldIssue, RegleFieldStatus, RegleFormPropertyType, RegleInternalRuleDefs, ReglePartialRuleTree, RegleResult, RegleRoot, RegleRuleCore, RegleRuleDecl, RegleRuleDefinition, RegleRuleDefinitionProcessor, RegleRuleDefinitionWithMetadataProcessor, RegleRuleInit, RegleRuleMetadataConsumer, RegleRuleMetadataDefinition, RegleRuleMetadataExtended, RegleRuleRaw, RegleRuleStatus, RegleRuleTypeReturn, RegleRuleWithParamsDefinition, RegleShortcutDefinition, RegleSingleField, RegleStatus, RegleUniversalParams, RegleUnknownRulesTree, RegleValidationErrors, RegleValidationGroupEntry, RegleValidationGroupOutput, RegleRuleTree as RegleValidationTree, ResolvedRegleBehaviourOptions, ScopedInstancesRecord, ScopedInstancesRecordLike, SuperCompatibleRegle, SuperCompatibleRegleCollectionErrors, SuperCompatibleRegleCollectionStatus, SuperCompatibleRegleFieldStatus, SuperCompatibleRegleResult, SuperCompatibleRegleRoot, SuperCompatibleRegleRuleStatus, SuperCompatibleRegleStatus, Unwrap, UnwrapRegleUniversalParams, UnwrapRuleWithParams, UseScopedRegleOptions, createRule, createScopedUseRegle, createVariant, defineRegleConfig, defineRules, extendRegleConfig, flatErrors, inferRules, inferRulesFn, mergeRegles, narrowVariant, refineRules, unwrapRuleParameters, useCollectScope, useCollectScopeFn, useRegle, useRegleFn, useRootStorage, useScopedRegle, variantToRef };
@@ -567,15 +567,32 @@ function isFieldStatus(rule) {
567
567
 
568
568
  //#endregion
569
569
  //#region src/core/useRegle/useErrors.ts
570
- function extractRulesErrors({ field, silent = false }) {
571
- return Object.entries(field.$rules ?? {}).map(([_, rule]) => {
572
- if (silent && !rule.$valid) return rule.$message;
573
- else if (!rule.$valid && field.$error && !rule.$validating) return rule.$message;
574
- return null;
575
- }).filter((msg) => !!msg).reduce((acc, value) => {
576
- if (typeof value === "string") return acc?.concat([value]);
577
- else return acc?.concat(value);
578
- }, []).concat(field.$error ? field.$externalErrors ?? [] : []).concat(field.$error ? field.$schemaErrors ?? [] : []);
570
+ function extractRulesIssues({ field, silent = false }) {
571
+ const issues = Object.entries(field.$rules ?? {}).map(([key, rule]) => {
572
+ let message = "";
573
+ if (silent && !rule.$valid) message = rule.$message;
574
+ else if (!rule.$valid && field.$error && !rule.$validating) message = rule.$message;
575
+ else return null;
576
+ const issue = {
577
+ $message: message,
578
+ $property: field.fieldName,
579
+ $rule: key,
580
+ $type: rule.$type
581
+ };
582
+ return issue;
583
+ });
584
+ return issues.filter((msg) => !!msg).reduce((acc, issue) => {
585
+ if (typeof issue.$message === "string") return acc?.concat([issue]);
586
+ else return acc?.concat(issue.$message.map((msg) => ({
587
+ ...issue,
588
+ $message: msg
589
+ })));
590
+ }, []).concat(field.$error ? field.$externalErrors?.map((error) => ({
591
+ $message: error,
592
+ $property: field.fieldName,
593
+ $rule: "external",
594
+ $type: void 0
595
+ })) ?? [] : []).concat(field.$error ? field.$schemaErrors ?? [] : []);
579
596
  }
580
597
  function extractRulesTooltips({ field }) {
581
598
  return Object.entries(field.$rules ?? {}).map(([_, rule]) => rule.$tooltip).filter((tooltip) => !!tooltip).reduce((acc, value) => {
@@ -912,25 +929,33 @@ function createReactiveFieldStatus({ state, rulesDef, customMessages, path, fiel
912
929
  const $error = computed(() => {
913
930
  return $invalid.value && !$pending.value && $dirty.value;
914
931
  });
915
- const $errors = computed(() => {
916
- return extractRulesErrors({ field: {
932
+ const $issues = computed(() => {
933
+ return extractRulesIssues({ field: {
917
934
  $rules: $rules.value,
918
935
  $error: $error.value,
919
936
  $externalErrors: externalErrors?.value,
920
- $schemaErrors: schemaErrors?.value
937
+ $schemaErrors: schemaErrors?.value,
938
+ fieldName
921
939
  } });
922
940
  });
923
- const $silentErrors = computed(() => {
924
- return extractRulesErrors({
941
+ const $silentIssues = computed(() => {
942
+ return extractRulesIssues({
925
943
  field: {
926
944
  $rules: $rules.value,
927
945
  $error: $error.value,
928
946
  $externalErrors: externalErrors?.value,
929
- $schemaErrors: schemaErrors?.value
947
+ $schemaErrors: schemaErrors?.value,
948
+ fieldName
930
949
  },
931
950
  silent: true
932
951
  });
933
952
  });
953
+ const $errors = computed(() => {
954
+ return $issues.value.map((issue) => issue.$message);
955
+ });
956
+ const $silentErrors = computed(() => {
957
+ return $silentIssues.value.map((issue) => issue.$message);
958
+ });
934
959
  const $edited = computed(() => {
935
960
  if ($dirty.value) {
936
961
  if (initialState.value instanceof Date && state.value instanceof Date) return toDate(initialState.value).getDate() !== toDate(state.value).getDate();
@@ -1027,8 +1052,10 @@ function createReactiveFieldStatus({ state, rulesDef, customMessages, path, fiel
1027
1052
  $debounce: $debounce$1,
1028
1053
  $deepCompare,
1029
1054
  $lazy: $lazy$1,
1030
- $errors,
1031
1055
  $ready,
1056
+ $issues,
1057
+ $silentIssues,
1058
+ $errors,
1032
1059
  $silentErrors,
1033
1060
  $rewardEarly: $rewardEarly$1,
1034
1061
  $autoDirty: $autoDirty$1,
@@ -1 +1 @@
1
- import{computed as e,effectScope as t,getCurrentInstance as n,getCurrentScope as r,isRef as i,markRaw as a,nextTick as o,onMounted as s,onScopeDispose as c,reactive as l,ref as u,shallowRef as d,toRef as f,toValue as p,triggerRef as m,unref as h,version as g,watch as _,watchEffect as v}from"vue";function y(e){return e?.constructor.name==`File`||e?.constructor.name==`FileList`}function b(e,t=!0){return e==null?!0:e instanceof Date?isNaN(e.getTime()):y(e)?e.size<=0:Array.isArray(e)?t?e.length===0:!1:typeof e==`object`&&e?Object.keys(e).length===0:!String(e).length}const x=Symbol(`regle-rule`);function S(e){if(typeof e.source.flags==`string`)return e.source.flags;{let t=[];return e.global&&t.push(`g`),e.ignoreCase&&t.push(`i`),e.multiline&&t.push(`m`),e.sticky&&t.push(`y`),e.unicode&&t.push(`u`),t.join(``)}}function C(e){let t=e,n={}.toString.call(e).slice(8,-1);if(n==`Set`&&(t=new Set([...e].map(e=>C(e)))),n==`Map`&&(t=new Map([...e].map(e=>[C(e[0]),C(e[1])]))),n==`Date`&&(t=new Date(e.getTime())),n==`RegExp`&&(t=RegExp(e.source,S(e))),n==`Array`||n==`Object`)for(let n in t=Array.isArray(e)?[]:{},e)t[n]=C(e[n]);return t}function w(e){return e&&(e instanceof Date||e.constructor.name==`File`||e.constructor.name==`FileList`)?!1:typeof e==`object`&&!!e&&!Array.isArray(e)}function T(e,...t){for(var n=[].slice.call(arguments),r,i=n.length;r=n[i-1],i--;)if(!r||typeof r!=`object`&&typeof r!=`function`)throw Error(`expected object, got `+r);for(var a=n[0],o=n.slice(1),s=o.length,i=0;i<s;i++){var c=o[i];for(var l in c)a[l]=c[l]}return a}function E(e){let t=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 D(e,t,n){let r,i=(...i)=>new Promise(a=>{clearTimeout(r),r=setTimeout(()=>{r=void 0,n||Promise.resolve(e.apply(this,[...i])).then(a)},t),n&&!r&&Promise.resolve(e.apply(this,[...i])).then(a)});return i.cancel=()=>{clearTimeout(r),r=void 0},i}function O(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(!O(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];return!(w(e)&&w(t)&&(r||!r&&n)&&!O(e[s],t[s],n,!1))}return!0}return e!==e&&t!==t}const k={Inline:`__inline`,Async:`__async`};function A(e,t){return e.some(e=>e[t])}function j(e,t){return e.reduce((e,n)=>{let r=n[t]||[];return e.concat(r)},[])}function M(e){try{return e.map(e=>p(e))}catch{return[]}}function N(t){return t.map(t=>t instanceof Function?e(t):i(t)?t:f(()=>t))}function P(e){let t=e.toString(),n=t.replace(/\/\/.*$/gm,``).replace(/\/\*[\s\S]*?\*\//g,``),r=n.match(/^(?:async\s*)?(?:function\b.*?\(|\((.*?)\)|(\w+))\s*=>|\((.*?)\)\s*=>|function.*?\((.*?)\)|\((.*?)\)/);if(!r)return 0;let i=r[0]||r[1]||r[2]||r[3]||r[4]||``,a=i.split(`,`).map(e=>e.trim()).filter(e=>e.length>0);return a.length}function F(e,...t){let{validator:n,type:r}=e,i=r===k.Async||n.constructor.name===`AsyncFunction`,o={validator(n,...r){return e.validator(n,...M(r.length?r:t))},message(n){return typeof e.message==`function`?e.message({...n,$params:M(n?.$params?.length?n.$params:t)}):e.message},active(n){return typeof e.active==`function`?e.active({...n,$params:M(n?.$params?.length?n.$params:t)}):e.active??!0},tooltip(n){return typeof e.tooltip==`function`?e.tooltip({...n,$params:M(n?.$params?.length?n.$params:t)}):e.tooltip??[]},exec(n){let r=e.validator(n,...M(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)}},s=a({...o,_validator:e.validator,_message:e.message,_active:e.active,_tooltip:e.tooltip,_type:e.type,_message_patched:!1,_tooltip_patched:!1,_async:i,_params:N(t),_brand:x});return s}function I(e){if(typeof e.validator==`function`){let t=[],n=F(e,...t),r=e.async??e.validator.constructor.name===`AsyncFunction`;if(P(e.validator)>1){let t=function(...t){return F(e,...t)};return t.validator=n.validator,t.message=n.message,t.active=n.active,t.tooltip=n.tooltip,t.type=n.type,t.exec=n.exec,t._validator=n.validator,t._message=n.message,t._active=n.active,t._tooltip=n.tooltip,t._type=e.type,t._message_pacthed=!1,t._tooltip_pacthed=!1,t._async=r,t}else return n}throw Error(`[createRule] validator must be a function`)}function L(){let e=d(new Map),t=d(new Map),n=d(new Map),i=d(new Map),a=d(new Map),o=d(new Map);function s(e){let n=t.value.get(e);if(n)return n;{let n=u({});return t.value.set(e,n),n}}function l(e){let t=n.value.get(e);if(t)return t;{let t=u([]);return n.value.set(e,t),t}}function f(e,t,n){o.value.set(`${e}-${t}`,n)}function p(e,t){return o.value.get(`${e}-${t}`)}function m(e,t){e&&t!=null&&o.value.delete(`${e}-${t}`)}function h(e,t){i.value.set(e,t)}function g(e){return i.value.get(e)??!1}function _(t,n){e.value.set(t,n)}function v(t,n){let r=e.value.get(t);if(!r)return;let i=r,a=y(n,i);return a?{valid:!0}:{valid:!1}}function y(e,t){let n=Object.keys(t),r=Object.keys(e);if(r.length!==n.length)return!1;let i=r.every(e=>n.includes(e));return i?r.every(n=>{let r=e[n],i=t[n];return!i||!r||typeof r==`function`||typeof i==`function`||typeof r==`number`||typeof r==`boolean`?!1:r._params?r._params?.every((e,t)=>{if(typeof i==`number`||typeof i==`boolean`)return!0;{let e=M(i._params),n=M(r._params);return e?.[t]===n?.[t]}}):!0}):!1}function b(e){let t=a.value.get(e);if(t)return t;{let t=u(!1),n=u(!0),r=u({}),i=u(!1);return a.value.set(e,{$pending:t,$valid:n,$metadata:r,$validating:i}),{$pending:t,$valid:n,$metadata:r,$validating:i}}}return r()&&c(()=>{e.value.clear(),t.value.clear(),n.value.clear(),i.value.clear(),a.value.clear(),o.value.clear()}),{addRuleDeclEntry:_,setDirtyEntry:h,checkRuleDeclEntry:v,getDirtyState:g,trySetRuleStatusRef:b,getFieldsEntry:s,getCollectionsEntry:l,getArrayStatus:p,addArrayStatus:f,deleteArrayStatus:m,arrayStatusStorage:o}}function R(e){return w(e.value)}function z(e,n,r){let i=t(),a;return a=e instanceof Function?i.run(()=>e(n,r??0)):e,{scope:i,unwrapped:a}}const B={LessThan:-1,EqualTo:0,GreaterThan:1};function V(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 B.GreaterThan;if(i>t)return B.LessThan;if(!isNaN(t)&&isNaN(i))return B.GreaterThan;if(isNaN(t)&&!isNaN(i))return B.LessThan}return B.EqualTo}const H=V(g,`3.5.0`)!==-1;function U(){return Math.floor(Math.random()*Date.now()).toString()}function W(){if(typeof window>`u`)return U();{let e=window.crypto.getRandomValues(new Uint32Array(1))[0];return e.toString(10)}}function G(e){return r()?(c(e),!0):!1}function K(e){let n=!1,r,i=t(!0);return(...t)=>(n||(r=i.run(()=>e(...t)),n=!0),r)}function q(e,t){return R(e)||w(t.value)&&!b(t.value)&&!Object.entries(t.value).some(([e,t])=>X(t)||typeof t==`function`)}function J(e,t,n=!1){return!!e.value&&w(e.value)&&`$each`in e.value||n&&Array.isArray(t.value)&&t.value.some(w)||Array.isArray(t.value)&&t.value.some(w)}function Y(e){return!!e.value&&w(e.value)}function X(e){return w(e)&&`_validator`in e}function Z(e){return typeof e.value==`function`?`_validator`in e.value:!0}function ee(e){return w(e)&&`$fields`in e}function te(e){return!!e&&`$rules`in e}function ne({field:e,silent:t=!1}){return Object.entries(e.$rules??{}).map(([n,r])=>t&&!r.$valid||!r.$valid&&e.$error&&!r.$validating?r.$message:null).filter(e=>!!e).reduce((e,t)=>typeof t==`string`?e?.concat([t]):e?.concat(t),[]).concat(e.$error?e.$externalErrors??[]:[]).concat(e.$error?e.$schemaErrors??[]:[])}function re({field:e}){return Object.entries(e.$rules??{}).map(([e,t])=>t.$tooltip).filter(e=>!!e).reduce((e,t)=>typeof t==`string`?e?.concat([t]):e?.concat(t),[])}function ie(e){return w(e)&&`$each`in e}function ae(e,t){let{includePath:n=!1}=t??{};if(Array.isArray(e)&&e.every(e=>!w(e)))return e;if(ie(e)){let t=n?e.$self?.map(e=>({error:e,path:``}))??[]:e.$self??[],r=e.$each?.map(e=>oe(e,n))??[];return t?.concat(r.flat())}else return Object.entries(e).map(([e,t])=>oe(t,n,[e])).flat()}function oe(e,t=!1,n){let r=t&&!n?[]:n;if(Array.isArray(e)&&e.every(e=>!w(e)))return t?e.map(e=>({error:e,path:r?.join(`.`)??``})):e;if(ie(e)){let n=r?.length?e.$self?.map(e=>({error:e,path:r.join(`.`)}))??[]:e.$self??[],i=e.$each?.map((e,n)=>oe(e,t,r?.concat(n.toString())))??[];return n?.concat(i.flat())}else return Object.entries(e).map(([e,n])=>oe(n,t,r?.concat(e))).flat()}function se({customMessages:n,rule:r,ruleKey:i,state:a,path:o,storage:s,$debounce:c,modifiers:d}){let f=t(),p={},m,h=u(!1),g=u(!1),{$pending:v,$valid:y,$metadata:x,$validating:S}=s.trySetRuleStatusRef(`${o}.${i}`);function C(){f=t(),p=f.run(()=>{let t=u(!1),s=u(!1),c=u(!0),l=u(!1),d=u(!1),f=e(()=>({$value:a.value,$error:s.value,$dirty:t.value,$pending:l.value,$correct:d.value,$invalid:c.value,$rule:{$valid:y.value,$invalid:!y.value,$pending:v.value},$params:C.value,...x.value})),p=e(()=>Z(r)?typeof r.value.active==`function`?r.value.active(f.value):!!r.value.active:!0);function m(e){let t=``,a=n?n[i]?.[e]:void 0;if(a&&(t=typeof a==`function`?a(f.value):a),Z(r)){let n=`_${e}_patched`;a&&!r.value[n]||(t=typeof r.value[e]==`function`?r.value[e](f.value):r.value[e]??``)}return t}let h=e(()=>{let e=m(`message`);return b(e)&&(e=`This field is not valid`),e}),g=e(()=>m(`tooltip`)),_=e(()=>Z(r)&&r.value.type?r.value.type:i),S=e(()=>Z(r)?r.value.validator:r.value),C=e(()=>typeof r.value==`function`?[]:M(r.value._params??[])),w=e(()=>`${o}.${_.value}`);return{$active:p,$message:h,$type:_,$validator:S,$params:C,$path:w,$tooltip:g,$fieldCorrect:d,$fieldError:s,$fieldDirty:t,$fieldPending:l,$fieldInvalid:c}}),m=_(p?.$params,()=>{(!d.$silent.value||d.$rewardEarly.value&&p.$fieldError.value)&&O()})}C();function w(){y.value=!0,p.$fieldDirty.value&&(v.value=!0)}async function T(){let e=!1;try{let t=p.$validator.value;if(typeof t!=`function`)return console.error(`${o}: Incorrect rule format, it needs to be either a function or created with "createRule".`),!1;let n=t(a.value,...p.$params.value),r=a.value;w();let i;if(i=n instanceof Promise?await n:n,a.value!==r)return!0;if(typeof i==`boolean`)e=i;else{let{$valid:t,...n}=i;e=t,x.value=n}}catch{e=!1}finally{v.value=!1}return e}let E=D(T,c??200);async function O(){try{S.value=!0;let e=!1;if(g.value=!0,X(r.value)&&r.value._async)e=await E();else{let t=p.$validator.value,n=t(a.value,...p.$params.value);if(n instanceof Promise)console.warn(`You used a async validator function on a non-async rule, please use "async await" or the "withAsync" helper`);else if(n!=null)if(typeof n==`boolean`)e=n;else{let{$valid:t,...r}=n;e=t,x.value=r}}return y.value=e,e}catch{return!1}finally{S.value=!1,g.value=!1}}function k(){y.value=!0,x.value={},v.value=!1,S.value=!1,C()}function A(){m(),f.stop(),f=t()}return l({...p,$pending:v,$valid:y,$metadata:x,$haveAsync:h,$maybePending:g,$validating:S,$parse:O,$unwatch:A,$watch:C,$reset:k})}function ce({state:n,rulesDef:r,customMessages:i,path:a,fieldName:o,storage:s,options:c,externalErrors:d,schemaErrors:p,schemaMode:m,onUnwatch:g,$isArray:y,initialState:x,shortcuts:S,onValidate:T}){let k=t(),A,j=[],M,N,P,F,I,L=()=>{};function R(){let e=r.value,t=s.checkRuleDeclEntry(a,e);K.value=Object.fromEntries(Object.entries(e).filter(([e])=>e.startsWith(`$`))),V(),G.value=Object.fromEntries(Object.entries(r.value).filter(([e])=>!e.startsWith(`$`)).map(([e,t])=>{if(t){let r=f(()=>t);return[e,se({modifiers:{$silent:A.$silent,$rewardEarly:A.$rewardEarly},customMessages:i,rule:r,ruleKey:e,state:n,path:a,storage:s,$debounce:K.value.$debounce})]}return[]}).filter(e=>!!e.length)),A.processShortcuts(),z(),t?.valid!=null&&(A.$dirty.value=s.getDirtyState(a),(A.$dirty.value&&!A.$silent.value||A.$rewardEarly.value&&A.$error.value)&&L()),s.addRuleDeclEntry(a,e)}function z(){L=A.$debounce.value?D(W,A.$debounce.value??A.$haveAnyAsyncRule?100:0):W}function B(){G.value&&Object.entries(G.value).forEach(([e,t])=>{t.$unwatch()}),P(),I?.(),A.$dirty.value&&s.setDirtyEntry(a,A.$dirty.value),M?.(),k.stop(),k=t(),j.forEach(e=>e.stop()),j=[],g?.(),F?.()}function V(){G.value&&Object.entries(G.value).forEach(([e,t])=>{t.$watch()}),A=k.run(()=>{let i=u(!1),a=u(!1),s=e(()=>i.value),f=e(()=>K.value.$debounce),g=e(()=>K.value.$deepCompare==null?!1:K.value.$deepCompare),_=e(()=>K.value.$lazy==null?h(c.lazy)==null?!1:h(c.lazy):K.value.$lazy),y=e(()=>K.value.$rewardEarly==null?h(c.rewardEarly)==null?!1:h(c.rewardEarly):K.value.$rewardEarly),C=e(()=>K.value.$clearExternalErrorsOnChange==null?h(c.clearExternalErrorsOnChange)==null?!w.value:h(c.clearExternalErrorsOnChange):K.value.$clearExternalErrorsOnChange),w=e(()=>y.value?!0:K.value.$silent==null?h(c.silent)==null?!1:h(c.silent):K.value.$silent),T=e(()=>K.value.$autoDirty==null?h(c.autoDirty)==null?!0:h(c.autoDirty):K.value.$autoDirty),D=e(()=>Object.entries(G.value).some(([e,t])=>t.$validating)),k=e({get:()=>n.value,set(e){M(),n.value=e,U()}}),A=e(()=>B.value&&!z.value&&i.value),N=e(()=>ne({field:{$rules:G.value,$error:A.value,$externalErrors:d?.value,$schemaErrors:p?.value}})),P=e(()=>ne({field:{$rules:G.value,$error:A.value,$externalErrors:d?.value,$schemaErrors:p?.value},silent:!0})),F=e(()=>i.value?x.value instanceof Date&&n.value instanceof Date?E(x.value).getDate()!==E(n.value).getDate():x.value==null?!!n.value:Array.isArray(n.value)&&Array.isArray(x.value)?!O(n.value,x.value,K.value.$deepCompare):x.value!==n.value:!1),I=e(()=>F.value),L=e(()=>re({field:{$rules:G.value}})),R=e(()=>(w.value||s.value)&&!(B.value||z.value)),z=e(()=>a.value||!y.value?Object.entries(G.value).some(([e,t])=>t.$pending):!1),B=e(()=>{if(d?.value?.length||p?.value?.length)return!0;if(H.value)return!1;if(!y.value||y.value){let e=Object.entries(G.value).some(([e,t])=>!(t.$valid&&!t.$maybePending));return e}return!1}),V=e(()=>o),H=e(()=>Object.keys(r.value).filter(([e])=>!e.startsWith(`$`)).length===0&&!m),W=e(()=>{if(d?.value?.length||H.value)return!1;if(i.value&&!b(n.value)&&!D.value&&!z.value){if(m)return!p?.value?.length;{let e=Object.values(G.value).some(e=>e.$active);return e?Object.values(G.value).filter(e=>e.$active).every(e=>e.$valid):!1}}return!1}),q=e(()=>Object.entries(G.value).some(([e,t])=>t.$haveAsync));function J(){S?.fields&&Object.entries(S.fields).forEach(([e,r])=>{let a=t();Y[e]=a.run(()=>{let e=u();return v(()=>{e.value=r(l({$dirty:i,$externalErrors:d?.value??[],$value:n,$silentValue:k,$rules:G,$error:A,$pending:z,$invalid:B,$correct:W,$errors:N,$ready:R,$silentErrors:P,$anyDirty:s,$tooltips:L,$name:V,$inactive:H,$edited:F,$anyEdited:I}))}),e}),j.push(a)})}let Y={};return{$error:A,$pending:z,$invalid:B,$correct:W,$debounce:f,$deepCompare:g,$lazy:_,$errors:N,$ready:R,$silentErrors:P,$rewardEarly:y,$autoDirty:T,$silent:w,$clearExternalErrorsOnChange:C,$anyDirty:s,$edited:F,$anyEdited:I,$name:V,$haveAnyAsyncRule:q,$shortcuts:Y,$validating:D,$tooltips:L,$dirty:i,processShortcuts:J,$silentValue:k,$inactive:H}}),U(),P=_(A.$dirty,e=>{s.setDirtyEntry(a,e),Object.values(G.value).forEach(t=>{t.$fieldDirty=e})}),I=_([A.$error,A.$correct,A.$invalid,A.$pending],()=>{Object.values(G.value).forEach(e=>{e.$fieldError=A.$error.value,e.$fieldInvalid=A.$invalid.value,e.$fieldPending=A.$pending.value,e.$fieldCorrect=A.$correct.value})}),F=_(A.$haveAnyAsyncRule,z)}function U(){M=_(n,()=>{A.$autoDirty.value&&!A.$silent.value&&(A.$dirty.value||(A.$dirty.value=!0)),r.value instanceof Function&&R(),(!A.$silent.value||A.$rewardEarly.value&&A.$error.value)&&L(),A.$clearExternalErrorsOnChange.value&&Z()},{deep:y?!0:H?1:!0})}function W(){Object.values(G.value).forEach(e=>{e.$parse()})}let G=u({}),K=u({});R();function q(e,t){if(Z(),A.$dirty.value=!1,s.setDirtyEntry(a,!1),!t)if(e?.toInitialState)n.value=C(x.value);else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,x.value=C(t),n.value=C(t)}else x.value=w(n.value)?C(n.value):Array.isArray(n.value)?[...n.value]:n.value;e?.clearExternalErrors&&Z(),t||Object.entries(G.value).forEach(([e,t])=>{t.$reset()}),!A.$lazy.value&&!A.$silent.value&&!t&&Object.values(G.value).forEach(e=>e.$parse())}function J(e=!0,t=!1){A.$dirty.value||(A.$dirty.value=!0),t&&e?(!A.$silent.value||A.$rewardEarly.value&&A.$error.value)&&L():e&&L()}async function Y(){try{if(m)return T?(J(!1),T()):{valid:!1,data:n.value};let e=n.value;if(!A.$dirty.value)A.$dirty.value=!0;else if(!A.$silent.value&&A.$dirty.value&&!A.$pending.value)return{valid:!A.$error.value,data:e};if(m)return{valid:!p?.value?.length,data:e};if(b(G.value))return{valid:!0,data:e};let t=await Promise.allSettled(Object.entries(G.value).map(([e,t])=>t.$parse())),r=t.every(e=>e.status===`fulfilled`?e.value===!0:!1);return{valid:r,data:e}}catch{return{valid:!1,data:n.value}}}function X(e=!0){return A.$dirty.value?n.value:e?{_null:!0}:null}function Z(){d?.value?.length&&(d.value=[])}!A.$lazy.value&&!A.$dirty.value&&!A.$silent.value&&L();let{$shortcuts:ee,$validating:te,$autoDirty:ie,$rewardEarly:ae,$clearExternalErrorsOnChange:oe,$haveAnyAsyncRule:ce,$debounce:le,$lazy:ue,...Q}=A;return l({...Q,$externalErrors:d,$value:n,$rules:G,...ee,$reset:q,$touch:J,$validate:Y,$unwatch:B,$watch:V,$extractDirtyFields:X,$clearExternalErrors:Z})}function le({$id:t,path:n,index:r,options:i,storage:a,stateValue:o,customMessages:s,rules:c,externalErrors:l,schemaErrors:u,initialState:d,shortcuts:p,fieldName:m,schemaMode:h}){let g=c.$key?c.$key:W(),_=`${n}.${String(g)}`;typeof o.value==`object`&&o.value!=null&&(o.value.$id?_=`${n}.${o.value.$id}`:Object.defineProperties(o.value,{$id:{value:g,enumerable:!1,configurable:!1,writable:!1}}));let v=f(l?.value??[],r),y=e(()=>u?.value?.[r]),b=$({state:o,rulesDef:f(()=>c),customMessages:s,path:_,storage:a,options:i,externalErrors:v,schemaErrors:y,initialState:d,shortcuts:p,fieldName:m,schemaMode:h});if(b){let e=o.value?.$id;b.$id=e??String(g),a.addArrayStatus(t,b.$id,b)}return b}function ue({state:n,rulesDef:r,customMessages:i,path:a,storage:o,options:s,externalErrors:c,schemaErrors:d,schemaMode:p,initialState:m,shortcuts:g,fieldName:y}){let x=t(),S,w=t(),T,E=[];if(!Array.isArray(n.value)&&!r.value.$each)return;let D=u(),O=u(n.value),k=u({}),A,j,M=u({}),N=o.getCollectionsEntry(a);T=w.run(()=>{let t=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=>X(e)||typeof e==`function`):!1:!1);return{isPrimitiveArray:t}}),P(),L();function P(){k.value=Object.fromEntries(Object.entries(r.value).filter(([e])=>e.startsWith(`$`))),typeof n.value==`object`&&(n.value!=null&&!n.value?.$id&&n.value!==null?(D.value=W(),Object.defineProperties(n.value,{$id:{value:D.value,enumerable:!1,configurable:!1,writable:!1}})):n.value?.$id&&(D.value=n.value.$id)),O.value=M.value.$value,Array.isArray(n.value)&&!T.isPrimitiveArray.value?N.value=n.value.filter(e=>typeof e==`object`).map((t,n)=>{let{scope:l,unwrapped:u}=z(r.value.$each,f(()=>t),n);l&&E.push(l);let h=f(m.value??[],n),_=f(c?.value??{},`$each`),v=e(()=>d?.value?.$each),b=le({$id:D.value,path:a,customMessages:i,rules:u??{},stateValue:f(()=>t),index:n,options:s,storage:o,externalErrors:_,schemaErrors:v,initialState:h,shortcuts:g,fieldName:y,schemaMode:p});return b||null}).filter(e=>!!e):N.value=[],M.value=ce({state:n,rulesDef:r,customMessages:i,path:a,storage:o,options:s,externalErrors:f(c?.value??{},`$self`),schemaErrors:e(()=>d?.value?.$self),$isArray:!0,initialState:m,shortcuts:g,fieldName:y,schemaMode:p})}function F(){if(Array.isArray(n.value)&&!T.isPrimitiveArray.value){let t=C(N.value);N.value=n.value.filter(e=>typeof e==`object`).map((t,n)=>{let l=f(()=>t);if(t.$id&&N.value.find(e=>e.$id===t.$id)){let e=o.getArrayStatus(D.value,t.$id);return e?(e.$value=l,e):null}else{let{scope:t,unwrapped:u}=z(r.value.$each,l,n);t&&E.push(t);let h=f(c?.value??{},`$each`),_=e(()=>d?.value?.$each??[]),v=le({$id:D.value,path:a,customMessages:i,rules:u??{},stateValue:l,index:n,options:s,storage:o,externalErrors:h,schemaErrors:_,initialState:f(m.value??[],n),shortcuts:g,fieldName:y,schemaMode:p});return v||null}}).filter(e=>!!e),t.filter(e=>!n.value?.find(t=>e.$id===t.$id)).forEach((e,t)=>{o.deleteArrayStatus(D.value,t.toString())})}else N.value=[]}function I(){A=_(n,()=>{n.value!=null&&!Object.hasOwn(n.value,`$id`)?P():F()},{deep:H?1:!0,flush:`pre`}),j=_(n,()=>{S.$autoDirty.value&&!S.$silent.value&&B(!1,!0)},{flush:`pre`})}function L(){I(),x=t(),S=x.run(()=>{let r=e({get:()=>n.value,set(e){A?.(),j?.(),n.value=e,I()}}),i=e(()=>M.value.$dirty&&(!N.value.length||N.value.every(e=>e.$dirty))),a=e(()=>M.value.$anyDirty||N.value.some(e=>e.$anyDirty)),o=e(()=>M.value.$invalid||N.value.some(e=>e.$invalid)),c=e(()=>(b(M.value.$rules)?!0:M.value.$correct)&&(!N.value.length||N.value.every(e=>e.$correct||e.$anyDirty&&!e.$invalid))),d=e(()=>M.value.$error||N.value.some(e=>e.$error)),f=e(()=>!(o.value||p.value)),p=e(()=>M.value.$pending||N.value.some(e=>e.$pending)),m=e(()=>!!N.value.length&&N.value.every(e=>e.$edited)),_=e(()=>M.value.$anyEdited||N.value.some(e=>e.$anyEdited)),x=e(()=>({$self:M.value.$errors,$each:N.value.map(e=>e.$errors)})),S=e(()=>({$self:M.value.$silentErrors,$each:N.value.map(e=>e.$silentErrors)})),C=e(()=>k.value.$rewardEarly==null?h(s.rewardEarly)==null?!1:h(s.rewardEarly):k.value.$rewardEarly),w=e(()=>C.value?!0:k.value.$silent==null?h(s.silent)==null?!1:h(s.silent):k.value.$silent),T=e(()=>k.value.$autoDirty==null?h(s.autoDirty)==null?!0:h(s.autoDirty):k.value.$autoDirty),D=e(()=>y);function O(){g?.collections&&Object.entries(g?.collections).forEach(([e,s])=>{let h=t();P[e]=h.run(()=>{let e=u();return v(()=>{e.value=s(l({$dirty:i,$error:d,$silentValue:r,$pending:p,$invalid:o,$correct:c,$errors:x,$ready:f,$silentErrors:S,$anyDirty:a,$name:D,$each:N,$self:M,$value:n,$edited:m,$anyEdited:_}))}),e}),E.push(h)})}let P={};return O(),{$dirty:i,$anyDirty:a,$invalid:o,$correct:c,$error:d,$pending:p,$errors:x,$silentErrors:S,$ready:f,$name:D,$shortcuts:P,$silentValue:r,$edited:m,$anyEdited:_,$rewardEarly:C,$silent:w,$autoDirty:T}}),T.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 R(){A?.(),M.value&&M.value.$unwatch(),N.value&&N.value.forEach(e=>{`$dirty`in e&&e.$unwatch()}),x.stop(),x=t(),w.stop(),w=t(!0),E.forEach(e=>e.stop()),E=[]}function B(e=!0,t=!1){M.value.$touch(e,t),N.value.forEach(n=>{n.$touch(e,t)})}function V(e,t){if(R(),!t)if(e?.toInitialState)n.value=C(m.value);else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,m.value=C(t),n.value=C(t)}else m.value=C(n.value);e?.clearExternalErrors&&G(),M.value.$reset(e,t),N.value.forEach(t=>{t.$reset(e,!0)}),t||P()}async function U(){let e=n.value;try{let t=await Promise.allSettled([M.value.$validate(),...N.value.map(e=>e.$validate())]),n=t.every(e=>e.status===`fulfilled`?e.value.valid===!0:!1);return{valid:n,data:e}}catch{return{valid:!1,data:e}}}function G(){M.value.$clearExternalErrors(),N.value.forEach(e=>{e.$clearExternalErrors()})}function K(e=!0){let t=N.value.map(t=>{if(ee(t))return t.$extractDirtyFields(e)});return e&&t.every(e=>b(e))&&(t=[]),t}let{$shortcuts:q,...J}=S;return l({$self:M,...J,...q,$each:N,$value:n,$validate:U,$unwatch:R,$watch:L,$touch:B,$reset:V,$extractDirtyFields:K,$clearExternalErrors:G})}function Q({rulesDef:n,state:r,path:i=``,rootRules:a,externalErrors:o,schemaErrors:s,rootSchemaErrors:c,validationGroups:d,initialState:p,fieldName:m,...g}){let y=t(),x,S=[],T=null,E=null,D=null,O=null,k=null;async function M(t=!0){let a=Object.entries(n.value),c=Object.fromEntries(a.filter(([e,t])=>!!t).map(([t,n])=>{if(n){let a=f(r.value??{},t),c=f(()=>n),l=f(o?.value??{},t),u=e(()=>s?.value?.[t]),d=f(p?.value??{},t);return[t,$({state:a,rulesDef:c,path:i?`${i}.${t}`:t,externalErrors:l,schemaErrors:u,initialState:d,fieldName:t,...g})]}return[]})),l=Object.fromEntries(Object.entries(h(o)??{}).filter(([e,t])=>!(e in n.value)&&!!t).map(([t])=>{let n=f(r.value??{},t),a=f(o?.value??{},t),c=e(()=>s?.value?.[t]),l=f(p?.value??{},t);return[t,$({state:n,rulesDef:e(()=>({})),path:i?`${i}.${t}`:t,externalErrors:a,schemaErrors:c,initialState:l,fieldName:t,...g})]})),u=Object.fromEntries(Object.entries(h(s)??{}).map(([t])=>{let n=f(r.value??{},t),a=f(o?.value??{},t),c=e(()=>s?.value?.[t]),l=f(p?.value??{},t);return[t,$({state:n,rulesDef:e(()=>({})),path:i?`${i}.${t}`:t,externalErrors:a,schemaErrors:c,initialState:l,fieldName:t,...g})]})),d=Object.fromEntries(Object.entries(r.value??{}).filter(([e])=>!(e in n.value)&&!(e in(l??{}))&&!(e in(u??{}))).map(([t])=>{let n=f(r.value??{},t),a=f(o?.value??{},t),c=e(()=>s?.value?.[t]),l=f(p?.value??{},t);return[t,$({state:n,rulesDef:e(()=>({})),path:i?`${i}.${t}`:t,externalErrors:a,schemaErrors:c,initialState:l,fieldName:t,...g})]}));N.value={...c,...l,...u,...d},t&&I()}let N=g.storage.getFieldsEntry(i);M();function P(){o&&(D=_(o,()=>{L(),M()},{deep:!0}))}function F(){O=_(r,()=>{L(),M(),x.$autoDirty.value&&!x.$silent.value&&B(!1,!0)})}function I(){a&&(T?.(),T=_(a,()=>{L(),M()},{deep:!0,flush:`pre`}),P()),c&&(E?.(),E=_(c,()=>{L(),M()},{deep:!0,flush:`post`})),F(),x=y.run(()=>{let n=e({get:()=>r.value,set(e){L(),r.value=e,M(),x.$autoDirty.value&&!x.$silent.value&&B(!1,!0)}}),i=e({get:()=>r.value,set(e){L(),r.value=e,M()}}),a=e(()=>!!Object.entries(N.value).length&&Object.entries(N.value).every(([e,t])=>t?.$dirty)),o=e(()=>Object.entries(N.value).some(([e,t])=>t?.$anyDirty)),s=e(()=>!!Object.entries(N.value).length&&Object.entries(N.value).some(([e,t])=>t?.$invalid)),c=e(()=>{let e=Object.entries(N.value).filter(([e,t])=>te(t)?!t.$inactive:!0);return e.length?e.every(([e,t])=>g.schemaMode?t.$correct:te(t)?`required`in t.$rules&&t.$rules.required.$active?t?.$correct:!t.$invalid&&!t.$pending:t?.$correct):!1}),f=e(()=>!!Object.entries(N.value).length&&Object.entries(N.value).some(([e,t])=>t?.$error)),p=e(()=>h(g.options.rewardEarly)==null?!1:h(g.options.rewardEarly)),_=e(()=>h(g.options.silent)==null?!!p.value:h(g.options.silent)),y=e(()=>h(g.options.autoDirty)==null?!0:h(g.options.autoDirty)),b=e(()=>(_.value||o.value)&&!(s.value||w.value)),C=u(!1),w=e(()=>C.value||Object.entries(N.value).some(([e,t])=>t?.$pending)),T=e(()=>Object.fromEntries(Object.entries(N.value).map(([e,t])=>[e,t?.$errors]))),E=e(()=>Object.fromEntries(Object.entries(N.value).map(([e,t])=>[e,t?.$silentErrors]))),D=e(()=>!!Object.entries(N.value).length&&Object.entries(N.value).every(([e,t])=>t?.$edited)),O=e(()=>Object.entries(N.value).some(([e,t])=>t?.$anyEdited)),k=e(()=>m);function P(){g.shortcuts?.nested&&Object.entries(g.shortcuts.nested).forEach(([e,n])=>{let d=t();I[e]=d.run(()=>{let e=u();return v(()=>{e.value=n(l({$dirty:a,$value:r,$silentValue:i,$error:f,$pending:w,$invalid:s,$correct:c,$ready:b,$anyDirty:o,$name:k,$silentErrors:E,$errors:T,$fields:N,$edited:D,$anyEdited:O}))}),e}),S.push(d)})}let F=e({get:()=>d?Object.fromEntries(Object.entries(d?.(N.value)??{}).map(([e,t])=>t.length?[e,{...Object.fromEntries([`$invalid`,`$error`,`$pending`,`$dirty`,`$correct`].map(e=>[e,A(t,e)])),...Object.fromEntries([`$errors`,`$silentErrors`].map(e=>[e,j(t,e)]))}]:[])):{},set(){}}),I={};return P(),{$dirty:a,$anyDirty:o,$invalid:s,$correct:c,$error:f,$pending:w,$errors:T,$silentErrors:E,$ready:b,$name:k,$shortcuts:I,$groups:F,$silentValue:i,$edited:D,$anyEdited:O,$localPending:C,$autoDirty:y,$silent:_,$value:n}})}function L(){T?.(),D?.(),O?.(),k?.(),E?.(),S=[],x={},N.value&&Object.entries(N.value).forEach(([e,t])=>{t.$unwatch()})}function R(){Object.entries(N.value).forEach(([e,t])=>{t.$clearExternalErrors()})}function z(e,t){if(D?.(),L(),!t)if(e?.toInitialState)r.value=C({...p.value??{}});else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,p.value=C(t),r.value=C(t)}else p.value=C(r.value);Object.values(N.value).forEach(t=>{t.$reset(e,!0)}),e?.clearExternalErrors&&R(),P(),t||M()}function B(e=!0,t=!1){Object.values(N.value).forEach(n=>{n.$touch(e,t)})}function V(e){return e.filter(([e,t])=>w(t)?!(t&&typeof t==`object`&&`_null`in t)&&!b(t):Array.isArray(t)?t.length:!0)}function H(e=!0){let t=Object.entries(N.value).map(([t,n])=>[t,n.$extractDirtyFields(e)]);return e&&(t=V(t)),Object.fromEntries(t)}async function U(){try{if(g.schemaMode)return g.onValidate?(B(!1),x.$localPending.value=!0,g.onValidate()):{valid:!1,data:r.value};{let e=r.value,t=await Promise.allSettled(Object.values(N.value).map(e=>e.$validate())),n=t.every(e=>e.status===`fulfilled`?e.value.valid===!0:!1);return{valid:n,data:e}}}catch{return{valid:!1,data:r.value}}finally{x.$localPending.value=!1}}let{$shortcuts:W,$localPending:G,...K}=x;return l({...K,...W,$fields:N,$reset:z,$touch:B,$validate:U,$unwatch:L,$watch:I,$clearExternalErrors:R,$extractDirtyFields:H})}function $({rulesDef:e,...n}){if(J(e,n.state,n.schemaMode))return ue({rulesDef:e,...n});if(q(n.state,e)){if(R(n.state))return Q({rulesDef:e,...n});{let r=t(),i=r.run(()=>{let e=f(n.state.value?n.state:u({}));return _(()=>n.state.value,t=>{e.value=t},{deep:!0}),_(e,e=>{n.state.value=e},{deep:!0}),{fakeState:e}}),{state:a,...o}=n;return Q({rulesDef:e,...o,state:i.fakeState})}}else if(Y(e))return ce({rulesDef:e,...n})}function de({initialState:e,options:t,scopeRules:n,state:i,customRules:a,shortcuts:o,schemaErrors:s,schemaMode:d=!1,onValidate:f}){let p=L(),m=u();return q(i,n)?m.value=Q({rootRules:n,rulesDef:n,state:i,customMessages:a?.(),storage:p,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:o,fieldName:`root`,path:``,schemaErrors:s,rootSchemaErrors:s,schemaMode:d,onValidate:f}):Y(n)&&(m.value=ce({rulesDef:n,state:i,customMessages:a?.(),storage:p,options:t,externalErrors:t.externalErrors,initialState:e,shortcuts:o,fieldName:`root`,path:``,schemaMode:d,schemaErrors:s,onValidate:f})),r()&&c(()=>{m.value?.$unwatch()}),l({regle:m})}function fe(t,n,r){let a={autoDirty:n?.autoDirty,lazy:n?.lazy,rewardEarly:n?.rewardEarly,silent:n?.silent,clearExternalErrorsOnChange:n?.clearExternalErrorsOnChange};function o(n,o,s){let c=i(o)?o:typeof o==`function`?void 0:e(()=>o),l={...a,...s},f=i(n)?n:u(n),p=d(c??{});typeof o==`function`&&v(()=>{p.value=o(f),m(p)});let h=u(w(f.value)?{...C(f.value)}:C(f.value)),g=de({scopeRules:p,state:f,options:l,initialState:h,customRules:t,shortcuts:r});return{r$:g.regle}}return o}const pe=fe();function me(){function e(e,t){return t}return e}const he=me();function ge({rules:e,modifiers:t,shortcuts:n}){let r=fe(e,t,n);r.__config={rules:e,modifiers:t,shortcuts:n};let i=me();return{useRegle:r,inferRules:i}}function _e(e,{rules:t,modifiers:n,shortcuts:r}){let i=e.__config??{},a=()=>({...i.rules?.(),...t?.()}),o=i.modifiers&&n?T(i.modifiers,n):n,s=i.shortcuts&&r?T(i.shortcuts,r):r,c=fe(a,o,s);c.__config={rules:a,modifiers:o,shortcuts:s};let l=me();return{useRegle:c,inferRules:l}}function ve(t,n){let r=n??!1,i=e({get:()=>r?Object.values(t).map(e=>e.$value):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$value])),set:e=>{r||typeof e==`object`&&Object.entries(e).forEach(([e,n])=>t[e].$value=n)}}),a=e({get:()=>Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$silentValue])),set:e=>{typeof e==`object`&&Object.entries(e).forEach(([e,n])=>t[e].$silentValue=n)}}),o=e(()=>{let e=Object.entries(t);return!!e.length&&e.every(([e,t])=>t?.$dirty)}),s=e(()=>Object.entries(t).some(([e,t])=>t?.$anyDirty)),c=e(()=>Object.entries(t).some(([e,t])=>t?.$invalid)),u=e(()=>{let e=Object.entries(t);return!!e.length&&e.every(([e,t])=>t?.$correct||t.$anyDirty&&!t.$invalid)}),d=e(()=>Object.entries(t).some(([e,t])=>t?.$error)),f=e(()=>{let e=Object.entries(t);return!!e.length&&e.every(([e,t])=>t?.$ready)}),p=e(()=>Object.entries(t).some(([e,t])=>t?.$pending)),m=e(()=>r?Object.entries(t).map(([e,t])=>t.$errors):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$errors]))),h=e(()=>r?Object.entries(t).map(([e,t])=>t.$silentErrors):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$silentErrors]))),g=e(()=>{let e=Object.entries(t);return!!e.length&&e.every(([e,t])=>t?.$edited)}),_=e(()=>Object.entries(t).some(([e,t])=>t?.$anyEdited)),v=e(()=>r?Object.values(t):t);function y(e){Object.values(t).forEach(t=>{t.$reset(e)})}function b(){Object.values(t).forEach(e=>{e.$touch()})}function x(e=!0){return Object.values(t).map(t=>t.$extractDirtyFields(e))}function S(){Object.values(t).forEach(e=>{e.$clearExternalErrors()})}async function C(){try{let e=i.value,n=await Promise.allSettled(Object.values(t).map(e=>e.$validate())),r=n.every(e=>e.status===`fulfilled`?e.value.valid===!0:!1);return{valid:r,data:e}}catch{return{valid:!1,data:i.value}}}return l({...!r&&{$silentValue:a},$errors:m,$silentErrors:h,$instances:v,$value:i,$dirty:o,$anyDirty:s,$invalid:c,$correct:u,$error:d,$pending:p,$ready:f,$edited:g,$anyEdited:_,$reset:y,$touch:b,$validate:C,$extractDirtyFields:x,$clearExternalErrors:S})}function ye(t,n){function r(r){let i=e(()=>p(r));s();let a=u(c(t.value)),o=l({r$:a});function s(){i.value&&!t.value[i.value]&&(t.value[i.value]={})}_(i,s),_(t,e=>{a.value=c(e)},{deep:!0});function c(e){if(i.value){let t=e[i.value]??{};return ve(t,!n.asRecord)}else return ve(e[`~~global`]??{},!n.asRecord)}return{r$:o.r$}}return{useCollectScope:r}}function be(t,r){let i=r??pe,a=(r,a,o)=>{let{namespace:c,scopeKey:l,...d}=o??{};i.__config??={};let f=e(()=>p(c)),m=u(`${Object.keys(t.value).length+1}-${W()}`),h=e(()=>o?.scopeKey??`instance-${m.value}`),{r$:g}=i(r,a,d);y(),G(v),_(f,(e,t)=>{v(t),y()}),n()&&s(()=>{let e=n();typeof window<`u`&&e?.proxy?.$el?.parentElement&&document.documentElement&&!document.documentElement.contains(e?.proxy?.$el?.parentElement)&&v()});function v(e){let n=e??f.value;n?t.value[n]&&delete t.value[n][h.value]:t.value[`~~global`][h.value]&&delete t.value[`~~global`][h.value]}function y(){f.value?(t.value[f.value]||(t.value[f.value]={}),t.value[f.value][h.value]=g):(t.value[`~~global`]||(t.value[`~~global`]={}),t.value[`~~global`][h.value]=g)}return{r$:g,dispose:v,register:y}};return{useScopedRegle:a}}function xe(e){let t=e?.customStore?()=>(e.customStore&&(e.customStore?.value[`~~global`]?e.customStore?.value&&(e.customStore.value={"~~global":{}}):e.customStore.value[`~~global`]={}),e.customStore):K(()=>{let e=u({"~~global":{}});return e}),n=t(),{useScopedRegle:r}=be(n,e?.customUseRegle),{useCollectScope:i}=ye(n,{asRecord:e?.asRecord});return{useScopedRegle:r,useCollectScope:i}}const{useCollectScope:Se,useScopedRegle:Ce}=xe();function we(t,n,r){let i=e(()=>p(t)[n]),a=e(()=>{let e=r.find(e=>{if(e[n]&&`literal`in e[n]){let t=e[n].literal;if(X(t))return h(t._params?.[0])===i.value}});if(e)return e;{let e=r.find(e=>w(e[n])&&!Object.keys(e[n]).some(e=>e===`literal`));return e||{}}});return a}function Te(e,t,n){return w(e[t])&&`$value`in e[t]&&e[t]?.$value===n}function Ee(e,t,n){let r=i(e)?f(e.value,`$fields`):f(e,`$fields`),a=u();return _(r,async()=>{await o(),Te(r.value,t,n)?a.value=r.value:a.value=void 0},{immediate:!0,flush:`pre`}),a}function De(e){return e}function Oe(e,t){return n=>T({...e},t(n))}export{k as InternalRuleType,I as createRule,xe as createScopedUseRegle,we as createVariant,ge as defineRegleConfig,De as defineRules,_e as extendRegleConfig,ae as flatErrors,he as inferRules,ve as mergeRegles,Te as narrowVariant,Oe as refineRules,M as unwrapRuleParameters,Se as useCollectScope,pe as useRegle,de as useRootStorage,Ce as useScopedRegle,Ee as variantToRef};
1
+ import{computed as e,effectScope as t,getCurrentInstance as n,getCurrentScope as r,isRef as i,markRaw as a,nextTick as o,onMounted as s,onScopeDispose as c,reactive as l,ref as u,shallowRef as d,toRef as f,toValue as p,triggerRef as m,unref as h,version as g,watch as _,watchEffect as v}from"vue";function y(e){return e?.constructor.name==`File`||e?.constructor.name==`FileList`}function b(e,t=!0){return e==null?!0:e instanceof Date?isNaN(e.getTime()):y(e)?e.size<=0:Array.isArray(e)?t?e.length===0:!1:typeof e==`object`&&e?Object.keys(e).length===0:!String(e).length}const x=Symbol(`regle-rule`);function S(e){if(typeof e.source.flags==`string`)return e.source.flags;{let t=[];return e.global&&t.push(`g`),e.ignoreCase&&t.push(`i`),e.multiline&&t.push(`m`),e.sticky&&t.push(`y`),e.unicode&&t.push(`u`),t.join(``)}}function C(e){let t=e,n={}.toString.call(e).slice(8,-1);if(n==`Set`&&(t=new Set([...e].map(e=>C(e)))),n==`Map`&&(t=new Map([...e].map(e=>[C(e[0]),C(e[1])]))),n==`Date`&&(t=new Date(e.getTime())),n==`RegExp`&&(t=RegExp(e.source,S(e))),n==`Array`||n==`Object`)for(let n in t=Array.isArray(e)?[]:{},e)t[n]=C(e[n]);return t}function w(e){return e&&(e instanceof Date||e.constructor.name==`File`||e.constructor.name==`FileList`)?!1:typeof e==`object`&&!!e&&!Array.isArray(e)}function T(e,...t){for(var n=[].slice.call(arguments),r,i=n.length;r=n[i-1],i--;)if(!r||typeof r!=`object`&&typeof r!=`function`)throw Error(`expected object, got `+r);for(var a=n[0],o=n.slice(1),s=o.length,i=0;i<s;i++){var c=o[i];for(var l in c)a[l]=c[l]}return a}function E(e){let t=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 D(e,t,n){let r,i=(...i)=>new Promise(a=>{clearTimeout(r),r=setTimeout(()=>{r=void 0,n||Promise.resolve(e.apply(this,[...i])).then(a)},t),n&&!r&&Promise.resolve(e.apply(this,[...i])).then(a)});return i.cancel=()=>{clearTimeout(r),r=void 0},i}function O(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(!O(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];return!(w(e)&&w(t)&&(r||!r&&n)&&!O(e[s],t[s],n,!1))}return!0}return e!==e&&t!==t}const k={Inline:`__inline`,Async:`__async`};function A(e,t){return e.some(e=>e[t])}function j(e,t){return e.reduce((e,n)=>{let r=n[t]||[];return e.concat(r)},[])}function M(e){try{return e.map(e=>p(e))}catch{return[]}}function N(t){return t.map(t=>t instanceof Function?e(t):i(t)?t:f(()=>t))}function P(e){let t=e.toString(),n=t.replace(/\/\/.*$/gm,``).replace(/\/\*[\s\S]*?\*\//g,``),r=n.match(/^(?:async\s*)?(?:function\b.*?\(|\((.*?)\)|(\w+))\s*=>|\((.*?)\)\s*=>|function.*?\((.*?)\)|\((.*?)\)/);if(!r)return 0;let i=r[0]||r[1]||r[2]||r[3]||r[4]||``,a=i.split(`,`).map(e=>e.trim()).filter(e=>e.length>0);return a.length}function F(e,...t){let{validator:n,type:r}=e,i=r===k.Async||n.constructor.name===`AsyncFunction`,o={validator(n,...r){return e.validator(n,...M(r.length?r:t))},message(n){return typeof e.message==`function`?e.message({...n,$params:M(n?.$params?.length?n.$params:t)}):e.message},active(n){return typeof e.active==`function`?e.active({...n,$params:M(n?.$params?.length?n.$params:t)}):e.active??!0},tooltip(n){return typeof e.tooltip==`function`?e.tooltip({...n,$params:M(n?.$params?.length?n.$params:t)}):e.tooltip??[]},exec(n){let r=e.validator(n,...M(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)}},s=a({...o,_validator:e.validator,_message:e.message,_active:e.active,_tooltip:e.tooltip,_type:e.type,_message_patched:!1,_tooltip_patched:!1,_async:i,_params:N(t),_brand:x});return s}function I(e){if(typeof e.validator==`function`){let t=[],n=F(e,...t),r=e.async??e.validator.constructor.name===`AsyncFunction`;if(P(e.validator)>1){let t=function(...t){return F(e,...t)};return t.validator=n.validator,t.message=n.message,t.active=n.active,t.tooltip=n.tooltip,t.type=n.type,t.exec=n.exec,t._validator=n.validator,t._message=n.message,t._active=n.active,t._tooltip=n.tooltip,t._type=e.type,t._message_pacthed=!1,t._tooltip_pacthed=!1,t._async=r,t}else return n}throw Error(`[createRule] validator must be a function`)}function L(){let e=d(new Map),t=d(new Map),n=d(new Map),i=d(new Map),a=d(new Map),o=d(new Map);function s(e){let n=t.value.get(e);if(n)return n;{let n=u({});return t.value.set(e,n),n}}function l(e){let t=n.value.get(e);if(t)return t;{let t=u([]);return n.value.set(e,t),t}}function f(e,t,n){o.value.set(`${e}-${t}`,n)}function p(e,t){return o.value.get(`${e}-${t}`)}function m(e,t){e&&t!=null&&o.value.delete(`${e}-${t}`)}function h(e,t){i.value.set(e,t)}function g(e){return i.value.get(e)??!1}function _(t,n){e.value.set(t,n)}function v(t,n){let r=e.value.get(t);if(!r)return;let i=r,a=y(n,i);return a?{valid:!0}:{valid:!1}}function y(e,t){let n=Object.keys(t),r=Object.keys(e);if(r.length!==n.length)return!1;let i=r.every(e=>n.includes(e));return i?r.every(n=>{let r=e[n],i=t[n];return!i||!r||typeof r==`function`||typeof i==`function`||typeof r==`number`||typeof r==`boolean`?!1:r._params?r._params?.every((e,t)=>{if(typeof i==`number`||typeof i==`boolean`)return!0;{let e=M(i._params),n=M(r._params);return e?.[t]===n?.[t]}}):!0}):!1}function b(e){let t=a.value.get(e);if(t)return t;{let t=u(!1),n=u(!0),r=u({}),i=u(!1);return a.value.set(e,{$pending:t,$valid:n,$metadata:r,$validating:i}),{$pending:t,$valid:n,$metadata:r,$validating:i}}}return r()&&c(()=>{e.value.clear(),t.value.clear(),n.value.clear(),i.value.clear(),a.value.clear(),o.value.clear()}),{addRuleDeclEntry:_,setDirtyEntry:h,checkRuleDeclEntry:v,getDirtyState:g,trySetRuleStatusRef:b,getFieldsEntry:s,getCollectionsEntry:l,getArrayStatus:p,addArrayStatus:f,deleteArrayStatus:m,arrayStatusStorage:o}}function R(e){return w(e.value)}function z(e,n,r){let i=t(),a;return a=e instanceof Function?i.run(()=>e(n,r??0)):e,{scope:i,unwrapped:a}}const B={LessThan:-1,EqualTo:0,GreaterThan:1};function V(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 B.GreaterThan;if(i>t)return B.LessThan;if(!isNaN(t)&&isNaN(i))return B.GreaterThan;if(isNaN(t)&&!isNaN(i))return B.LessThan}return B.EqualTo}const H=V(g,`3.5.0`)!==-1;function U(){return Math.floor(Math.random()*Date.now()).toString()}function W(){if(typeof window>`u`)return U();{let e=window.crypto.getRandomValues(new Uint32Array(1))[0];return e.toString(10)}}function G(e){return r()?(c(e),!0):!1}function K(e){let n=!1,r,i=t(!0);return(...t)=>(n||(r=i.run(()=>e(...t)),n=!0),r)}function q(e,t){return R(e)||w(t.value)&&!b(t.value)&&!Object.entries(t.value).some(([e,t])=>X(t)||typeof t==`function`)}function J(e,t,n=!1){return!!e.value&&w(e.value)&&`$each`in e.value||n&&Array.isArray(t.value)&&t.value.some(w)||Array.isArray(t.value)&&t.value.some(w)}function Y(e){return!!e.value&&w(e.value)}function X(e){return w(e)&&`_validator`in e}function Z(e){return typeof e.value==`function`?`_validator`in e.value:!0}function ee(e){return w(e)&&`$fields`in e}function te(e){return!!e&&`$rules`in e}function ne({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;let a={$message:i,$property:e.fieldName,$rule:n,$type:r.$type};return a});return n.filter(e=>!!e).reduce((e,t)=>typeof t.$message==`string`?e?.concat([t]):e?.concat(t.$message.map(e=>({...t,$message:e}))),[]).concat(e.$error?e.$externalErrors?.map(t=>({$message:t,$property:e.fieldName,$rule:`external`,$type:void 0}))??[]:[]).concat(e.$error?e.$schemaErrors??[]:[])}function re({field:e}){return Object.entries(e.$rules??{}).map(([e,t])=>t.$tooltip).filter(e=>!!e).reduce((e,t)=>typeof t==`string`?e?.concat([t]):e?.concat(t),[])}function ie(e){return w(e)&&`$each`in e}function ae(e,t){let{includePath:n=!1}=t??{};if(Array.isArray(e)&&e.every(e=>!w(e)))return e;if(ie(e)){let t=n?e.$self?.map(e=>({error:e,path:``}))??[]:e.$self??[],r=e.$each?.map(e=>Q(e,n))??[];return t?.concat(r.flat())}else return Object.entries(e).map(([e,t])=>Q(t,n,[e])).flat()}function Q(e,t=!1,n){let r=t&&!n?[]:n;if(Array.isArray(e)&&e.every(e=>!w(e)))return t?e.map(e=>({error:e,path:r?.join(`.`)??``})):e;if(ie(e)){let n=r?.length?e.$self?.map(e=>({error:e,path:r.join(`.`)}))??[]:e.$self??[],i=e.$each?.map((e,n)=>Q(e,t,r?.concat(n.toString())))??[];return n?.concat(i.flat())}else return Object.entries(e).map(([e,n])=>Q(n,t,r?.concat(e))).flat()}function oe({customMessages:n,rule:r,ruleKey:i,state:a,path:o,storage:s,$debounce:c,modifiers:d}){let f=t(),p={},m,h=u(!1),g=u(!1),{$pending:v,$valid:y,$metadata:x,$validating:S}=s.trySetRuleStatusRef(`${o}.${i}`);function C(){f=t(),p=f.run(()=>{let t=u(!1),s=u(!1),c=u(!0),l=u(!1),d=u(!1),f=e(()=>({$value:a.value,$error:s.value,$dirty:t.value,$pending:l.value,$correct:d.value,$invalid:c.value,$rule:{$valid:y.value,$invalid:!y.value,$pending:v.value},$params:C.value,...x.value})),p=e(()=>Z(r)?typeof r.value.active==`function`?r.value.active(f.value):!!r.value.active:!0);function m(e){let t=``,a=n?n[i]?.[e]:void 0;if(a&&(t=typeof a==`function`?a(f.value):a),Z(r)){let n=`_${e}_patched`;a&&!r.value[n]||(t=typeof r.value[e]==`function`?r.value[e](f.value):r.value[e]??``)}return t}let h=e(()=>{let e=m(`message`);return b(e)&&(e=`This field is not valid`),e}),g=e(()=>m(`tooltip`)),_=e(()=>Z(r)&&r.value.type?r.value.type:i),S=e(()=>Z(r)?r.value.validator:r.value),C=e(()=>typeof r.value==`function`?[]:M(r.value._params??[])),w=e(()=>`${o}.${_.value}`);return{$active:p,$message:h,$type:_,$validator:S,$params:C,$path:w,$tooltip:g,$fieldCorrect:d,$fieldError:s,$fieldDirty:t,$fieldPending:l,$fieldInvalid:c}}),m=_(p?.$params,()=>{(!d.$silent.value||d.$rewardEarly.value&&p.$fieldError.value)&&O()})}C();function w(){y.value=!0,p.$fieldDirty.value&&(v.value=!0)}async function T(){let e=!1;try{let t=p.$validator.value;if(typeof t!=`function`)return console.error(`${o}: Incorrect rule format, it needs to be either a function or created with "createRule".`),!1;let n=t(a.value,...p.$params.value),r=a.value;w();let i;if(i=n instanceof Promise?await n:n,a.value!==r)return!0;if(typeof i==`boolean`)e=i;else{let{$valid:t,...n}=i;e=t,x.value=n}}catch{e=!1}finally{v.value=!1}return e}let E=D(T,c??200);async function O(){try{S.value=!0;let e=!1;if(g.value=!0,X(r.value)&&r.value._async)e=await E();else{let t=p.$validator.value,n=t(a.value,...p.$params.value);if(n instanceof Promise)console.warn(`You used a async validator function on a non-async rule, please use "async await" or the "withAsync" helper`);else if(n!=null)if(typeof n==`boolean`)e=n;else{let{$valid:t,...r}=n;e=t,x.value=r}}return y.value=e,e}catch{return!1}finally{S.value=!1,g.value=!1}}function k(){y.value=!0,x.value={},v.value=!1,S.value=!1,C()}function A(){m(),f.stop(),f=t()}return l({...p,$pending:v,$valid:y,$metadata:x,$haveAsync:h,$maybePending:g,$validating:S,$parse:O,$unwatch:A,$watch:C,$reset:k})}function se({state:n,rulesDef:r,customMessages:i,path:a,fieldName:o,storage:s,options:c,externalErrors:d,schemaErrors:p,schemaMode:m,onUnwatch:g,$isArray:y,initialState:x,shortcuts:S,onValidate:T}){let k=t(),A,j=[],M,N,P,F,I,L=()=>{};function R(){let e=r.value,t=s.checkRuleDeclEntry(a,e);K.value=Object.fromEntries(Object.entries(e).filter(([e])=>e.startsWith(`$`))),V(),G.value=Object.fromEntries(Object.entries(r.value).filter(([e])=>!e.startsWith(`$`)).map(([e,t])=>{if(t){let r=f(()=>t);return[e,oe({modifiers:{$silent:A.$silent,$rewardEarly:A.$rewardEarly},customMessages:i,rule:r,ruleKey:e,state:n,path:a,storage:s,$debounce:K.value.$debounce})]}return[]}).filter(e=>!!e.length)),A.processShortcuts(),z(),t?.valid!=null&&(A.$dirty.value=s.getDirtyState(a),(A.$dirty.value&&!A.$silent.value||A.$rewardEarly.value&&A.$error.value)&&L()),s.addRuleDeclEntry(a,e)}function z(){L=A.$debounce.value?D(W,A.$debounce.value??A.$haveAnyAsyncRule?100:0):W}function B(){G.value&&Object.entries(G.value).forEach(([e,t])=>{t.$unwatch()}),P(),I?.(),A.$dirty.value&&s.setDirtyEntry(a,A.$dirty.value),M?.(),k.stop(),k=t(),j.forEach(e=>e.stop()),j=[],g?.(),F?.()}function V(){G.value&&Object.entries(G.value).forEach(([e,t])=>{t.$watch()}),A=k.run(()=>{let i=u(!1),a=u(!1),s=e(()=>i.value),f=e(()=>K.value.$debounce),g=e(()=>K.value.$deepCompare==null?!1:K.value.$deepCompare),_=e(()=>K.value.$lazy==null?h(c.lazy)==null?!1:h(c.lazy):K.value.$lazy),y=e(()=>K.value.$rewardEarly==null?h(c.rewardEarly)==null?!1:h(c.rewardEarly):K.value.$rewardEarly),C=e(()=>K.value.$clearExternalErrorsOnChange==null?h(c.clearExternalErrorsOnChange)==null?!w.value:h(c.clearExternalErrorsOnChange):K.value.$clearExternalErrorsOnChange),w=e(()=>y.value?!0:K.value.$silent==null?h(c.silent)==null?!1:h(c.silent):K.value.$silent),T=e(()=>K.value.$autoDirty==null?h(c.autoDirty)==null?!0:h(c.autoDirty):K.value.$autoDirty),D=e(()=>Object.entries(G.value).some(([e,t])=>t.$validating)),k=e({get:()=>n.value,set(e){M(),n.value=e,U()}}),A=e(()=>H.value&&!V.value&&i.value),N=e(()=>ne({field:{$rules:G.value,$error:A.value,$externalErrors:d?.value,$schemaErrors:p?.value,fieldName:o}})),P=e(()=>ne({field:{$rules:G.value,$error:A.value,$externalErrors:d?.value,$schemaErrors:p?.value,fieldName:o},silent:!0})),F=e(()=>N.value.map(e=>e.$message)),I=e(()=>P.value.map(e=>e.$message)),L=e(()=>i.value?x.value instanceof Date&&n.value instanceof Date?E(x.value).getDate()!==E(n.value).getDate():x.value==null?!!n.value:Array.isArray(n.value)&&Array.isArray(x.value)?!O(n.value,x.value,K.value.$deepCompare):x.value!==n.value:!1),R=e(()=>L.value),z=e(()=>re({field:{$rules:G.value}})),B=e(()=>(w.value||s.value)&&!(H.value||V.value)),V=e(()=>a.value||!y.value?Object.entries(G.value).some(([e,t])=>t.$pending):!1),H=e(()=>{if(d?.value?.length||p?.value?.length)return!0;if(q.value)return!1;if(!y.value||y.value){let e=Object.entries(G.value).some(([e,t])=>!(t.$valid&&!t.$maybePending));return e}return!1}),W=e(()=>o),q=e(()=>Object.keys(r.value).filter(([e])=>!e.startsWith(`$`)).length===0&&!m),J=e(()=>{if(d?.value?.length||q.value)return!1;if(i.value&&!b(n.value)&&!D.value&&!V.value){if(m)return!p?.value?.length;{let e=Object.values(G.value).some(e=>e.$active);return e?Object.values(G.value).filter(e=>e.$active).every(e=>e.$valid):!1}}return!1}),Y=e(()=>Object.entries(G.value).some(([e,t])=>t.$haveAsync));function X(){S?.fields&&Object.entries(S.fields).forEach(([e,r])=>{let a=t();Z[e]=a.run(()=>{let e=u();return v(()=>{e.value=r(l({$dirty:i,$externalErrors:d?.value??[],$value:n,$silentValue:k,$rules:G,$error:A,$pending:V,$invalid:H,$correct:J,$errors:F,$ready:B,$silentErrors:I,$anyDirty:s,$tooltips:z,$name:W,$inactive:q,$edited:L,$anyEdited:R}))}),e}),j.push(a)})}let Z={};return{$error:A,$pending:V,$invalid:H,$correct:J,$debounce:f,$deepCompare:g,$lazy:_,$ready:B,$issues:N,$silentIssues:P,$errors:F,$silentErrors:I,$rewardEarly:y,$autoDirty:T,$silent:w,$clearExternalErrorsOnChange:C,$anyDirty:s,$edited:L,$anyEdited:R,$name:W,$haveAnyAsyncRule:Y,$shortcuts:Z,$validating:D,$tooltips:z,$dirty:i,processShortcuts:X,$silentValue:k,$inactive:q}}),U(),P=_(A.$dirty,e=>{s.setDirtyEntry(a,e),Object.values(G.value).forEach(t=>{t.$fieldDirty=e})}),I=_([A.$error,A.$correct,A.$invalid,A.$pending],()=>{Object.values(G.value).forEach(e=>{e.$fieldError=A.$error.value,e.$fieldInvalid=A.$invalid.value,e.$fieldPending=A.$pending.value,e.$fieldCorrect=A.$correct.value})}),F=_(A.$haveAnyAsyncRule,z)}function U(){M=_(n,()=>{A.$autoDirty.value&&!A.$silent.value&&(A.$dirty.value||(A.$dirty.value=!0)),r.value instanceof Function&&R(),(!A.$silent.value||A.$rewardEarly.value&&A.$error.value)&&L(),A.$clearExternalErrorsOnChange.value&&Z()},{deep:y?!0:H?1:!0})}function W(){Object.values(G.value).forEach(e=>{e.$parse()})}let G=u({}),K=u({});R();function q(e,t){if(Z(),A.$dirty.value=!1,s.setDirtyEntry(a,!1),!t)if(e?.toInitialState)n.value=C(x.value);else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,x.value=C(t),n.value=C(t)}else x.value=w(n.value)?C(n.value):Array.isArray(n.value)?[...n.value]:n.value;e?.clearExternalErrors&&Z(),t||Object.entries(G.value).forEach(([e,t])=>{t.$reset()}),!A.$lazy.value&&!A.$silent.value&&!t&&Object.values(G.value).forEach(e=>e.$parse())}function J(e=!0,t=!1){A.$dirty.value||(A.$dirty.value=!0),t&&e?(!A.$silent.value||A.$rewardEarly.value&&A.$error.value)&&L():e&&L()}async function Y(){try{if(m)return T?(J(!1),T()):{valid:!1,data:n.value};let e=n.value;if(!A.$dirty.value)A.$dirty.value=!0;else if(!A.$silent.value&&A.$dirty.value&&!A.$pending.value)return{valid:!A.$error.value,data:e};if(m)return{valid:!p?.value?.length,data:e};if(b(G.value))return{valid:!0,data:e};let t=await Promise.allSettled(Object.entries(G.value).map(([e,t])=>t.$parse())),r=t.every(e=>e.status===`fulfilled`?e.value===!0:!1);return{valid:r,data:e}}catch{return{valid:!1,data:n.value}}}function X(e=!0){return A.$dirty.value?n.value:e?{_null:!0}:null}function Z(){d?.value?.length&&(d.value=[])}!A.$lazy.value&&!A.$dirty.value&&!A.$silent.value&&L();let{$shortcuts:ee,$validating:te,$autoDirty:ie,$rewardEarly:ae,$clearExternalErrorsOnChange:Q,$haveAnyAsyncRule:se,$debounce:ce,$lazy:le,...ue}=A;return l({...ue,$externalErrors:d,$value:n,$rules:G,...ee,$reset:q,$touch:J,$validate:Y,$unwatch:B,$watch:V,$extractDirtyFields:X,$clearExternalErrors:Z})}function ce({$id:t,path:n,index:r,options:i,storage:a,stateValue:o,customMessages:s,rules:c,externalErrors:l,schemaErrors:u,initialState:d,shortcuts:p,fieldName:m,schemaMode:h}){let g=c.$key?c.$key:W(),_=`${n}.${String(g)}`;typeof o.value==`object`&&o.value!=null&&(o.value.$id?_=`${n}.${o.value.$id}`:Object.defineProperties(o.value,{$id:{value:g,enumerable:!1,configurable:!1,writable:!1}}));let v=f(l?.value??[],r),y=e(()=>u?.value?.[r]),b=$({state:o,rulesDef:f(()=>c),customMessages:s,path:_,storage:a,options:i,externalErrors:v,schemaErrors:y,initialState:d,shortcuts:p,fieldName:m,schemaMode:h});if(b){let e=o.value?.$id;b.$id=e??String(g),a.addArrayStatus(t,b.$id,b)}return b}function le({state:n,rulesDef:r,customMessages:i,path:a,storage:o,options:s,externalErrors:c,schemaErrors:d,schemaMode:p,initialState:m,shortcuts:g,fieldName:y}){let x=t(),S,w=t(),T,E=[];if(!Array.isArray(n.value)&&!r.value.$each)return;let D=u(),O=u(n.value),k=u({}),A,j,M=u({}),N=o.getCollectionsEntry(a);T=w.run(()=>{let t=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=>X(e)||typeof e==`function`):!1:!1);return{isPrimitiveArray:t}}),P(),L();function P(){k.value=Object.fromEntries(Object.entries(r.value).filter(([e])=>e.startsWith(`$`))),typeof n.value==`object`&&(n.value!=null&&!n.value?.$id&&n.value!==null?(D.value=W(),Object.defineProperties(n.value,{$id:{value:D.value,enumerable:!1,configurable:!1,writable:!1}})):n.value?.$id&&(D.value=n.value.$id)),O.value=M.value.$value,Array.isArray(n.value)&&!T.isPrimitiveArray.value?N.value=n.value.filter(e=>typeof e==`object`).map((t,n)=>{let{scope:l,unwrapped:u}=z(r.value.$each,f(()=>t),n);l&&E.push(l);let h=f(m.value??[],n),_=f(c?.value??{},`$each`),v=e(()=>d?.value?.$each),b=ce({$id:D.value,path:a,customMessages:i,rules:u??{},stateValue:f(()=>t),index:n,options:s,storage:o,externalErrors:_,schemaErrors:v,initialState:h,shortcuts:g,fieldName:y,schemaMode:p});return b||null}).filter(e=>!!e):N.value=[],M.value=se({state:n,rulesDef:r,customMessages:i,path:a,storage:o,options:s,externalErrors:f(c?.value??{},`$self`),schemaErrors:e(()=>d?.value?.$self),$isArray:!0,initialState:m,shortcuts:g,fieldName:y,schemaMode:p})}function F(){if(Array.isArray(n.value)&&!T.isPrimitiveArray.value){let t=C(N.value);N.value=n.value.filter(e=>typeof e==`object`).map((t,n)=>{let l=f(()=>t);if(t.$id&&N.value.find(e=>e.$id===t.$id)){let e=o.getArrayStatus(D.value,t.$id);return e?(e.$value=l,e):null}else{let{scope:t,unwrapped:u}=z(r.value.$each,l,n);t&&E.push(t);let h=f(c?.value??{},`$each`),_=e(()=>d?.value?.$each??[]),v=ce({$id:D.value,path:a,customMessages:i,rules:u??{},stateValue:l,index:n,options:s,storage:o,externalErrors:h,schemaErrors:_,initialState:f(m.value??[],n),shortcuts:g,fieldName:y,schemaMode:p});return v||null}}).filter(e=>!!e),t.filter(e=>!n.value?.find(t=>e.$id===t.$id)).forEach((e,t)=>{o.deleteArrayStatus(D.value,t.toString())})}else N.value=[]}function I(){A=_(n,()=>{n.value!=null&&!Object.hasOwn(n.value,`$id`)?P():F()},{deep:H?1:!0,flush:`pre`}),j=_(n,()=>{S.$autoDirty.value&&!S.$silent.value&&B(!1,!0)},{flush:`pre`})}function L(){I(),x=t(),S=x.run(()=>{let r=e({get:()=>n.value,set(e){A?.(),j?.(),n.value=e,I()}}),i=e(()=>M.value.$dirty&&(!N.value.length||N.value.every(e=>e.$dirty))),a=e(()=>M.value.$anyDirty||N.value.some(e=>e.$anyDirty)),o=e(()=>M.value.$invalid||N.value.some(e=>e.$invalid)),c=e(()=>(b(M.value.$rules)?!0:M.value.$correct)&&(!N.value.length||N.value.every(e=>e.$correct||e.$anyDirty&&!e.$invalid))),d=e(()=>M.value.$error||N.value.some(e=>e.$error)),f=e(()=>!(o.value||p.value)),p=e(()=>M.value.$pending||N.value.some(e=>e.$pending)),m=e(()=>!!N.value.length&&N.value.every(e=>e.$edited)),_=e(()=>M.value.$anyEdited||N.value.some(e=>e.$anyEdited)),x=e(()=>({$self:M.value.$errors,$each:N.value.map(e=>e.$errors)})),S=e(()=>({$self:M.value.$silentErrors,$each:N.value.map(e=>e.$silentErrors)})),C=e(()=>k.value.$rewardEarly==null?h(s.rewardEarly)==null?!1:h(s.rewardEarly):k.value.$rewardEarly),w=e(()=>C.value?!0:k.value.$silent==null?h(s.silent)==null?!1:h(s.silent):k.value.$silent),T=e(()=>k.value.$autoDirty==null?h(s.autoDirty)==null?!0:h(s.autoDirty):k.value.$autoDirty),D=e(()=>y);function O(){g?.collections&&Object.entries(g?.collections).forEach(([e,s])=>{let h=t();P[e]=h.run(()=>{let e=u();return v(()=>{e.value=s(l({$dirty:i,$error:d,$silentValue:r,$pending:p,$invalid:o,$correct:c,$errors:x,$ready:f,$silentErrors:S,$anyDirty:a,$name:D,$each:N,$self:M,$value:n,$edited:m,$anyEdited:_}))}),e}),E.push(h)})}let P={};return O(),{$dirty:i,$anyDirty:a,$invalid:o,$correct:c,$error:d,$pending:p,$errors:x,$silentErrors:S,$ready:f,$name:D,$shortcuts:P,$silentValue:r,$edited:m,$anyEdited:_,$rewardEarly:C,$silent:w,$autoDirty:T}}),T.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 R(){A?.(),M.value&&M.value.$unwatch(),N.value&&N.value.forEach(e=>{`$dirty`in e&&e.$unwatch()}),x.stop(),x=t(),w.stop(),w=t(!0),E.forEach(e=>e.stop()),E=[]}function B(e=!0,t=!1){M.value.$touch(e,t),N.value.forEach(n=>{n.$touch(e,t)})}function V(e,t){if(R(),!t)if(e?.toInitialState)n.value=C(m.value);else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,m.value=C(t),n.value=C(t)}else m.value=C(n.value);e?.clearExternalErrors&&G(),M.value.$reset(e,t),N.value.forEach(t=>{t.$reset(e,!0)}),t||P()}async function U(){let e=n.value;try{let t=await Promise.allSettled([M.value.$validate(),...N.value.map(e=>e.$validate())]),n=t.every(e=>e.status===`fulfilled`?e.value.valid===!0:!1);return{valid:n,data:e}}catch{return{valid:!1,data:e}}}function G(){M.value.$clearExternalErrors(),N.value.forEach(e=>{e.$clearExternalErrors()})}function K(e=!0){let t=N.value.map(t=>{if(ee(t))return t.$extractDirtyFields(e)});return e&&t.every(e=>b(e))&&(t=[]),t}let{$shortcuts:q,...J}=S;return l({$self:M,...J,...q,$each:N,$value:n,$validate:U,$unwatch:R,$watch:L,$touch:B,$reset:V,$extractDirtyFields:K,$clearExternalErrors:G})}function ue({rulesDef:n,state:r,path:i=``,rootRules:a,externalErrors:o,schemaErrors:s,rootSchemaErrors:c,validationGroups:d,initialState:p,fieldName:m,...g}){let y=t(),x,S=[],T=null,E=null,D=null,O=null,k=null;async function M(t=!0){let a=Object.entries(n.value),c=Object.fromEntries(a.filter(([e,t])=>!!t).map(([t,n])=>{if(n){let a=f(r.value??{},t),c=f(()=>n),l=f(o?.value??{},t),u=e(()=>s?.value?.[t]),d=f(p?.value??{},t);return[t,$({state:a,rulesDef:c,path:i?`${i}.${t}`:t,externalErrors:l,schemaErrors:u,initialState:d,fieldName:t,...g})]}return[]})),l=Object.fromEntries(Object.entries(h(o)??{}).filter(([e,t])=>!(e in n.value)&&!!t).map(([t])=>{let n=f(r.value??{},t),a=f(o?.value??{},t),c=e(()=>s?.value?.[t]),l=f(p?.value??{},t);return[t,$({state:n,rulesDef:e(()=>({})),path:i?`${i}.${t}`:t,externalErrors:a,schemaErrors:c,initialState:l,fieldName:t,...g})]})),u=Object.fromEntries(Object.entries(h(s)??{}).map(([t])=>{let n=f(r.value??{},t),a=f(o?.value??{},t),c=e(()=>s?.value?.[t]),l=f(p?.value??{},t);return[t,$({state:n,rulesDef:e(()=>({})),path:i?`${i}.${t}`:t,externalErrors:a,schemaErrors:c,initialState:l,fieldName:t,...g})]})),d=Object.fromEntries(Object.entries(r.value??{}).filter(([e])=>!(e in n.value)&&!(e in(l??{}))&&!(e in(u??{}))).map(([t])=>{let n=f(r.value??{},t),a=f(o?.value??{},t),c=e(()=>s?.value?.[t]),l=f(p?.value??{},t);return[t,$({state:n,rulesDef:e(()=>({})),path:i?`${i}.${t}`:t,externalErrors:a,schemaErrors:c,initialState:l,fieldName:t,...g})]}));N.value={...c,...l,...u,...d},t&&I()}let N=g.storage.getFieldsEntry(i);M();function P(){o&&(D=_(o,()=>{L(),M()},{deep:!0}))}function F(){O=_(r,()=>{L(),M(),x.$autoDirty.value&&!x.$silent.value&&B(!1,!0)})}function I(){a&&(T?.(),T=_(a,()=>{L(),M()},{deep:!0,flush:`pre`}),P()),c&&(E?.(),E=_(c,()=>{L(),M()},{deep:!0,flush:`post`})),F(),x=y.run(()=>{let n=e({get:()=>r.value,set(e){L(),r.value=e,M(),x.$autoDirty.value&&!x.$silent.value&&B(!1,!0)}}),i=e({get:()=>r.value,set(e){L(),r.value=e,M()}}),a=e(()=>!!Object.entries(N.value).length&&Object.entries(N.value).every(([e,t])=>t?.$dirty)),o=e(()=>Object.entries(N.value).some(([e,t])=>t?.$anyDirty)),s=e(()=>!!Object.entries(N.value).length&&Object.entries(N.value).some(([e,t])=>t?.$invalid)),c=e(()=>{let e=Object.entries(N.value).filter(([e,t])=>te(t)?!t.$inactive:!0);return e.length?e.every(([e,t])=>g.schemaMode?t.$correct:te(t)?`required`in t.$rules&&t.$rules.required.$active?t?.$correct:!t.$invalid&&!t.$pending:t?.$correct):!1}),f=e(()=>!!Object.entries(N.value).length&&Object.entries(N.value).some(([e,t])=>t?.$error)),p=e(()=>h(g.options.rewardEarly)==null?!1:h(g.options.rewardEarly)),_=e(()=>h(g.options.silent)==null?!!p.value:h(g.options.silent)),y=e(()=>h(g.options.autoDirty)==null?!0:h(g.options.autoDirty)),b=e(()=>(_.value||o.value)&&!(s.value||w.value)),C=u(!1),w=e(()=>C.value||Object.entries(N.value).some(([e,t])=>t?.$pending)),T=e(()=>Object.fromEntries(Object.entries(N.value).map(([e,t])=>[e,t?.$errors]))),E=e(()=>Object.fromEntries(Object.entries(N.value).map(([e,t])=>[e,t?.$silentErrors]))),D=e(()=>!!Object.entries(N.value).length&&Object.entries(N.value).every(([e,t])=>t?.$edited)),O=e(()=>Object.entries(N.value).some(([e,t])=>t?.$anyEdited)),k=e(()=>m);function P(){g.shortcuts?.nested&&Object.entries(g.shortcuts.nested).forEach(([e,n])=>{let d=t();I[e]=d.run(()=>{let e=u();return v(()=>{e.value=n(l({$dirty:a,$value:r,$silentValue:i,$error:f,$pending:w,$invalid:s,$correct:c,$ready:b,$anyDirty:o,$name:k,$silentErrors:E,$errors:T,$fields:N,$edited:D,$anyEdited:O}))}),e}),S.push(d)})}let F=e({get:()=>d?Object.fromEntries(Object.entries(d?.(N.value)??{}).map(([e,t])=>t.length?[e,{...Object.fromEntries([`$invalid`,`$error`,`$pending`,`$dirty`,`$correct`].map(e=>[e,A(t,e)])),...Object.fromEntries([`$errors`,`$silentErrors`].map(e=>[e,j(t,e)]))}]:[])):{},set(){}}),I={};return P(),{$dirty:a,$anyDirty:o,$invalid:s,$correct:c,$error:f,$pending:w,$errors:T,$silentErrors:E,$ready:b,$name:k,$shortcuts:I,$groups:F,$silentValue:i,$edited:D,$anyEdited:O,$localPending:C,$autoDirty:y,$silent:_,$value:n}})}function L(){T?.(),D?.(),O?.(),k?.(),E?.(),S=[],x={},N.value&&Object.entries(N.value).forEach(([e,t])=>{t.$unwatch()})}function R(){Object.entries(N.value).forEach(([e,t])=>{t.$clearExternalErrors()})}function z(e,t){if(D?.(),L(),!t)if(e?.toInitialState)r.value=C({...p.value??{}});else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,p.value=C(t),r.value=C(t)}else p.value=C(r.value);Object.values(N.value).forEach(t=>{t.$reset(e,!0)}),e?.clearExternalErrors&&R(),P(),t||M()}function B(e=!0,t=!1){Object.values(N.value).forEach(n=>{n.$touch(e,t)})}function V(e){return e.filter(([e,t])=>w(t)?!(t&&typeof t==`object`&&`_null`in t)&&!b(t):Array.isArray(t)?t.length:!0)}function H(e=!0){let t=Object.entries(N.value).map(([t,n])=>[t,n.$extractDirtyFields(e)]);return e&&(t=V(t)),Object.fromEntries(t)}async function U(){try{if(g.schemaMode)return g.onValidate?(B(!1),x.$localPending.value=!0,g.onValidate()):{valid:!1,data:r.value};{let e=r.value,t=await Promise.allSettled(Object.values(N.value).map(e=>e.$validate())),n=t.every(e=>e.status===`fulfilled`?e.value.valid===!0:!1);return{valid:n,data:e}}}catch{return{valid:!1,data:r.value}}finally{x.$localPending.value=!1}}let{$shortcuts:W,$localPending:G,...K}=x;return l({...K,...W,$fields:N,$reset:z,$touch:B,$validate:U,$unwatch:L,$watch:I,$clearExternalErrors:R,$extractDirtyFields:H})}function $({rulesDef:e,...n}){if(J(e,n.state,n.schemaMode))return le({rulesDef:e,...n});if(q(n.state,e)){if(R(n.state))return ue({rulesDef:e,...n});{let r=t(),i=r.run(()=>{let e=f(n.state.value?n.state:u({}));return _(()=>n.state.value,t=>{e.value=t},{deep:!0}),_(e,e=>{n.state.value=e},{deep:!0}),{fakeState:e}}),{state:a,...o}=n;return ue({rulesDef:e,...o,state:i.fakeState})}}else if(Y(e))return se({rulesDef:e,...n})}function de({initialState:e,options:t,scopeRules:n,state:i,customRules:a,shortcuts:o,schemaErrors:s,schemaMode:d=!1,onValidate:f}){let p=L(),m=u();return q(i,n)?m.value=ue({rootRules:n,rulesDef:n,state:i,customMessages:a?.(),storage:p,options:t,externalErrors:t.externalErrors,validationGroups:t.validationGroups,initialState:e,shortcuts:o,fieldName:`root`,path:``,schemaErrors:s,rootSchemaErrors:s,schemaMode:d,onValidate:f}):Y(n)&&(m.value=se({rulesDef:n,state:i,customMessages:a?.(),storage:p,options:t,externalErrors:t.externalErrors,initialState:e,shortcuts:o,fieldName:`root`,path:``,schemaMode:d,schemaErrors:s,onValidate:f})),r()&&c(()=>{m.value?.$unwatch()}),l({regle:m})}function fe(t,n,r){let a={autoDirty:n?.autoDirty,lazy:n?.lazy,rewardEarly:n?.rewardEarly,silent:n?.silent,clearExternalErrorsOnChange:n?.clearExternalErrorsOnChange};function o(n,o,s){let c=i(o)?o:typeof o==`function`?void 0:e(()=>o),l={...a,...s},f=i(n)?n:u(n),p=d(c??{});typeof o==`function`&&v(()=>{p.value=o(f),m(p)});let h=u(w(f.value)?{...C(f.value)}:C(f.value)),g=de({scopeRules:p,state:f,options:l,initialState:h,customRules:t,shortcuts:r});return{r$:g.regle}}return o}const pe=fe();function me(){function e(e,t){return t}return e}const he=me();function ge({rules:e,modifiers:t,shortcuts:n}){let r=fe(e,t,n);r.__config={rules:e,modifiers:t,shortcuts:n};let i=me();return{useRegle:r,inferRules:i}}function _e(e,{rules:t,modifiers:n,shortcuts:r}){let i=e.__config??{},a=()=>({...i.rules?.(),...t?.()}),o=i.modifiers&&n?T(i.modifiers,n):n,s=i.shortcuts&&r?T(i.shortcuts,r):r,c=fe(a,o,s);c.__config={rules:a,modifiers:o,shortcuts:s};let l=me();return{useRegle:c,inferRules:l}}function ve(t,n){let r=n??!1,i=e({get:()=>r?Object.values(t).map(e=>e.$value):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$value])),set:e=>{r||typeof e==`object`&&Object.entries(e).forEach(([e,n])=>t[e].$value=n)}}),a=e({get:()=>Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$silentValue])),set:e=>{typeof e==`object`&&Object.entries(e).forEach(([e,n])=>t[e].$silentValue=n)}}),o=e(()=>{let e=Object.entries(t);return!!e.length&&e.every(([e,t])=>t?.$dirty)}),s=e(()=>Object.entries(t).some(([e,t])=>t?.$anyDirty)),c=e(()=>Object.entries(t).some(([e,t])=>t?.$invalid)),u=e(()=>{let e=Object.entries(t);return!!e.length&&e.every(([e,t])=>t?.$correct||t.$anyDirty&&!t.$invalid)}),d=e(()=>Object.entries(t).some(([e,t])=>t?.$error)),f=e(()=>{let e=Object.entries(t);return!!e.length&&e.every(([e,t])=>t?.$ready)}),p=e(()=>Object.entries(t).some(([e,t])=>t?.$pending)),m=e(()=>r?Object.entries(t).map(([e,t])=>t.$errors):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$errors]))),h=e(()=>r?Object.entries(t).map(([e,t])=>t.$silentErrors):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$silentErrors]))),g=e(()=>{let e=Object.entries(t);return!!e.length&&e.every(([e,t])=>t?.$edited)}),_=e(()=>Object.entries(t).some(([e,t])=>t?.$anyEdited)),v=e(()=>r?Object.values(t):t);function y(e){Object.values(t).forEach(t=>{t.$reset(e)})}function b(){Object.values(t).forEach(e=>{e.$touch()})}function x(e=!0){return Object.values(t).map(t=>t.$extractDirtyFields(e))}function S(){Object.values(t).forEach(e=>{e.$clearExternalErrors()})}async function C(){try{let e=i.value,n=await Promise.allSettled(Object.values(t).map(e=>e.$validate())),r=n.every(e=>e.status===`fulfilled`?e.value.valid===!0:!1);return{valid:r,data:e}}catch{return{valid:!1,data:i.value}}}return l({...!r&&{$silentValue:a},$errors:m,$silentErrors:h,$instances:v,$value:i,$dirty:o,$anyDirty:s,$invalid:c,$correct:u,$error:d,$pending:p,$ready:f,$edited:g,$anyEdited:_,$reset:y,$touch:b,$validate:C,$extractDirtyFields:x,$clearExternalErrors:S})}function ye(t,n){function r(r){let i=e(()=>p(r));s();let a=u(c(t.value)),o=l({r$:a});function s(){i.value&&!t.value[i.value]&&(t.value[i.value]={})}_(i,s),_(t,e=>{a.value=c(e)},{deep:!0});function c(e){if(i.value){let t=e[i.value]??{};return ve(t,!n.asRecord)}else return ve(e[`~~global`]??{},!n.asRecord)}return{r$:o.r$}}return{useCollectScope:r}}function be(t,r){let i=r??pe,a=(r,a,o)=>{let{namespace:c,scopeKey:l,...d}=o??{};i.__config??={};let f=e(()=>p(c)),m=u(`${Object.keys(t.value).length+1}-${W()}`),h=e(()=>o?.scopeKey??`instance-${m.value}`),{r$:g}=i(r,a,d);y(),G(v),_(f,(e,t)=>{v(t),y()}),n()&&s(()=>{let e=n();typeof window<`u`&&e?.proxy?.$el?.parentElement&&document.documentElement&&!document.documentElement.contains(e?.proxy?.$el?.parentElement)&&v()});function v(e){let n=e??f.value;n?t.value[n]&&delete t.value[n][h.value]:t.value[`~~global`][h.value]&&delete t.value[`~~global`][h.value]}function y(){f.value?(t.value[f.value]||(t.value[f.value]={}),t.value[f.value][h.value]=g):(t.value[`~~global`]||(t.value[`~~global`]={}),t.value[`~~global`][h.value]=g)}return{r$:g,dispose:v,register:y}};return{useScopedRegle:a}}function xe(e){let t=e?.customStore?()=>(e.customStore&&(e.customStore?.value[`~~global`]?e.customStore?.value&&(e.customStore.value={"~~global":{}}):e.customStore.value[`~~global`]={}),e.customStore):K(()=>{let e=u({"~~global":{}});return e}),n=t(),{useScopedRegle:r}=be(n,e?.customUseRegle),{useCollectScope:i}=ye(n,{asRecord:e?.asRecord});return{useScopedRegle:r,useCollectScope:i}}const{useCollectScope:Se,useScopedRegle:Ce}=xe();function we(t,n,r){let i=e(()=>p(t)[n]),a=e(()=>{let e=r.find(e=>{if(e[n]&&`literal`in e[n]){let t=e[n].literal;if(X(t))return h(t._params?.[0])===i.value}});if(e)return e;{let e=r.find(e=>w(e[n])&&!Object.keys(e[n]).some(e=>e===`literal`));return e||{}}});return a}function Te(e,t,n){return w(e[t])&&`$value`in e[t]&&e[t]?.$value===n}function Ee(e,t,n){let r=i(e)?f(e.value,`$fields`):f(e,`$fields`),a=u();return _(r,async()=>{await o(),Te(r.value,t,n)?a.value=r.value:a.value=void 0},{immediate:!0,flush:`pre`}),a}function De(e){return e}function Oe(e,t){return n=>T({...e},t(n))}export{k as InternalRuleType,I as createRule,xe as createScopedUseRegle,we as createVariant,ge as defineRegleConfig,De as defineRules,_e as extendRegleConfig,ae as flatErrors,he as inferRules,ve as mergeRegles,Te as narrowVariant,Oe as refineRules,M as unwrapRuleParameters,Se as useCollectScope,pe as useRegle,de as useRootStorage,Ce as useScopedRegle,Ee as variantToRef};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@regle/core",
3
- "version": "1.3.2",
3
+ "version": "1.4.0-beta.2",
4
4
  "description": "Headless form validation library for Vue 3",
5
5
  "peerDependencies": {
6
6
  "pinia": ">=2.2.5",